changeset 246:5a0950c45a27

Merge
author xdono
date Tue, 13 May 2008 11:33:06 -0700
parents d70a63c92b49 (current diff) 2249879c6f22 (diff)
children 8767ccc53b42
files
diffstat 119 files changed, 17210 insertions(+), 660 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Wed Apr 30 17:34:41 2008 -0700
+++ b/.hgtags	Tue May 13 11:33:06 2008 -0700
@@ -1,2 +1,3 @@
 37a05a11f281b4d238e2f9e7ebb67c63f64d0e77 jdk7-b24
 75fca0b0ab83ab1392e615910cea020f66535390 jdk7-b25
+fb57027902e04ecafceae31a605e69b436c23d57 jdk7-b26
--- a/make/com/sun/Makefile	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/com/sun/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -41,7 +41,7 @@
 # Omit mirror since it's built with the apt tool.
 SUBDIRS = $(SCRIPT_SUBDIR) image security crypto/provider jndi jmx \
     java inputmethods org xml rowset net/httpserver net/ssl demo \
-    tools jarsigner
+    tools jarsigner tracing
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/com/sun/tracing/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,26 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building tracing classes
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.tracing
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dtrace 
+all build:
+	$(SUBDIRS-loop)
+clean clobber::
+	$(SUBDIRS-loop)
+
+AUTO_FILES_JAVA_DIRS = com/sun/tracing
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/com/sun/tracing/dtrace/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,19 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building dtrace extension
+#
+BUILDDIR = ../../../..
+PACKAGE = com.sun.tracing.dtrace
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = com/sun/tracing/dtrace
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- a/make/docs/Makefile	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/docs/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -273,6 +273,28 @@
 # SMARTCARDIO_PKGS is located in NON_CORE_PKGS.gmk
 
 #
+# Variables used by TRACING target
+#
+
+TRACING_SOURCEPATH  = $(TOPDIR)/src/share/classes
+TRACING_DOCDIR	 = $(DOCSDIR)/jre/api/tracing
+
+TRACING_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS)			    \
+		   -encoding ascii			            \
+                   -nodeprecatedlist                                \
+                   -d $(TRACING_DOCDIR)				    \
+                   -sourcepath $(TRACING_SOURCEPATH)                \
+                   -windowtitle $(TRACING_WINDOWTITLE)              \
+                   -doctitle $(TRACING_DOCTITLE)                    \
+                   -header $(TRACING_JAVADOCHEADER)                 \
+                   -linkoffline ../../../../../api $(DOCSDIR)/api/
+
+TRACING_WINDOWTITLE = "Tracing"
+TRACING_DOCTITLE    = "Java$(TRADEMARK) Platform Tracing"
+TRACING_JAVADOCHEADER      = "Platform Tracing"
+# TRACING_PKGS is located in NON_CORE_PKGS.gmk
+
+#
 # Variables used by HTTPSERVER target
 #
 
@@ -420,6 +442,7 @@
     jaasdocs \
     jgssdocs \
     smartcardiodocs \
+    tracingdocs \
     httpserverdocs  \
     mgmtdocs \
     attachdocs \
@@ -585,6 +608,14 @@
 	$(JAVADOC_CMD) $(SMARTCARDIO_JAVADOCFLAGS)                     \
 		   $(SMARTCARDIO_PKGS)
 
+.PHONY: tracingdocs
+tracingdocs:
+	@# ######## api-tracing ############################
+	$(RM) -r $(TRACING_DOCDIR)
+	$(MKDIR) -p $(TRACING_DOCDIR)
+	$(JAVADOC) $(TRACING_JAVADOCFLAGS)                     \
+		   $(TRACING_PKGS)
+
 .PHONY: httpserverdocs
 httpserverdocs:
 	@# ######## api-httpserver #######################
--- a/make/docs/NON_CORE_PKGS.gmk	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/docs/NON_CORE_PKGS.gmk	Tue May 13 11:33:06 2008 -0700
@@ -84,6 +84,9 @@
 
 SMARTCARDIO_PKGS = javax.smartcardio
 
+TRACING_PKGS     = com.sun.tracing         \
+                   com.sun.tracing.dtrace
+
 # non-core packages in rt.jar
 NON_CORE_PKGS    = $(DOMAPI_PKGS) \
                    $(MGMT_PKGS) \
@@ -91,4 +94,5 @@
                    $(JGSS_PKGS) \
                    $(OLD_JSSE_PKGS) \
                    $(HTTPSERVER_PKGS) \
-                   $(SMARTCARDIO_PKGS)
+                   $(SMARTCARDIO_PKGS) \
+                   $(TRACING_PKGS)
--- a/make/java/sun_nio/FILES_java.gmk	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/java/sun_nio/FILES_java.gmk	Tue May 13 11:33:06 2008 -0700
@@ -33,6 +33,7 @@
     sun/nio/cs/AbstractCharsetProvider.java \
     sun/nio/cs/HistoricallyNamedCharset.java \
     sun/nio/cs/Surrogate.java \
+    sun/nio/cs/CharsetMapping.java \
     sun/nio/cs/SingleByteEncoder.java \
     sun/nio/cs/SingleByteDecoder.java \
     sun/nio/cs/UnicodeEncoder.java \
--- a/make/sun/Makefile	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/sun/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -63,7 +63,7 @@
           $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
 	  font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
 	  jawt text nio launcher management $(ORG_SUBDIR) \
-          native2ascii serialver tools jconsole
+          native2ascii serialver tools jconsole tracing
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- a/make/sun/nio/Makefile	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/sun/nio/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -73,11 +73,21 @@
 SERVICE_DESCRIPTION = java.nio.charset.spi.CharsetProvider
 SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION)
 
+GENCSDATASRC = $(BUILDDIR)/tools/CharsetMapping
+FILES_MAP = $(GENCSDATASRC)/sjis0213.map
+FILES_DAT = $(CLASSDESTDIR)/sun/nio/cs/ext/sjis0213.dat
+CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar
+
+$(FILES_DAT): $(FILES_MAP)
+	@$(prep-target)
+	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) \
+		$(FILES_MAP) $(FILES_DAT)
+
 $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
   $(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH)
 	$(install-file)
 
-$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH)
+$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH) $(FILES_DAT)
 	$(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
 	      -C $(CLASSDESTDIR) sun \
 	      -C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH)  \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,26 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building tracing package implementation classes
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tracing
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dtrace 
+all build:
+	$(SUBDIRS-loop)
+clean clobber::
+	$(SUBDIRS-loop)
+
+AUTO_FILES_JAVA_DIRS = sun/tracing
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/dtrace/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,59 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building dtrace extension
+#
+BUILDDIR = ../../..
+PACKAGE = sun.tracing.dtrace
+LIBRARY = jsdt
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+NATIVE_DTRACE_DIR=native/sun/tracing/dtrace
+
+SRCDIR=$(SHARE_SRC)/$(NATIVE_DTRACE_DIR)
+PSRCDIR=$(PLATFORM_SRC)/$(NATIVE_DTRACE_DIR)
+
+FILES_c = JVM.c jvm_symbols_md.c
+
+FILES_java = \
+    sun/tracing/dtrace/Activation.java \
+    sun/tracing/dtrace/DTraceProvider.java \
+    sun/tracing/dtrace/DTraceProbe.java \
+    sun/tracing/dtrace/DTraceProviderFactory.java \
+    sun/tracing/dtrace/JVM.java 
+
+FILES_export = $(FILES_java)
+
+ifeq ($(PLATFORM), linux)
+OTHER_LDLIBS += -ldl
+endif
+
+#
+# Use JNI for generating header files
+#
+JAVAHFLAGS += -jni
+
+#
+# Don't need to link against -ljava
+#
+JAVALIB= 
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SRCDIR):$(PSRCDIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/dtrace/mapfile-vers	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,19 @@
+#
+#ident "@(#)mapfile-vers	1.1 07/08/14"
+# 
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+    global:
+        Java_sun_tracing_dtrace_JVM_isSupported0;
+        Java_sun_tracing_dtrace_JVM_activate0;
+        Java_sun_tracing_dtrace_JVM_dispose0;
+        Java_sun_tracing_dtrace_JVM_isEnabled0;
+        Java_sun_tracing_dtrace_JVM_defineClass0;
+    local:
+        *;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,43 @@
+#
+# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the charsetmapping tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.charsetmapping
+PRODUCT = tools
+PROGRAM = charsetmapping
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN        = $(PKGDIR)/GenerateMapping.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/sjis0213.map	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,11471 @@
+## Shift_JIS-2004 (JIS X 0213:2004 Appendix 1) vs Unicode mapping table
+## 
+## Date: 13 May 2006
+## License:
+## 	Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
+## 	Copyright (C) 2001 I'O, All Rights Reserved.
+## 	Copyright (C) 2006 Project X0213, All Rights Reserved.
+## 	You can use, modify, distribute this table freely.
+## Note:
+## 	[1983]	JIS codepoint defined by JIS X 0208-1983
+## 	[1990]	JIS codepoint defined by JIS X 0208-1990
+## 	[2000]	JIS codepoint defined by JIS X 0213:2000
+## 	[2004]	JIS codepoint defined by JIS X 0213:2004
+## 	[Unicode3.1]	UCS codepoint defined by Unicode 3.1
+## 	[Unicode3.2]	UCS codepoint defined by Unicode 3.2
+## 	Fullwidth	UCS fullwidth form (U+Fxxx)
+## 	Windows 	Windows (CP932) mapping
+## 	Some 0213 character can't represent by one UCS character.
+## 	In this table, such characters are described as 'U+xxxx+xxxx'.
+##
+##
+##	(1)Added JIS0213 entries
+##	(2)Updated 2 entries
+##	   0x81b0 -> u+ff5e
+## 	   0x815f -> u+ff3c
+##
+## JIS	Unicode	Name	Note
+##
+## Note: Block f09f--f0fc has been moved to the correct(sorted) position
+##
+## <RegEx Pattern="0x(\p{XDigit}++)\s++U\+(\p{XDigit}++)(?:\+(\p{XDigit}++))?\s++#.*"> GDB=1 GC=2 GCC=3>
+##
+#
+#  sjis0201
+#
+0x20	U+0020	# SPACE
+0x21	U+0021	# EXCLAMATION MARK
+0x22	U+0022	# QUOTATION MARK
+0x23	U+0023	# NUMBER SIGN
+0x24	U+0024	# DOLLAR SIGN
+0x25	U+0025	# PERCENT SIGN
+0x26	U+0026	# AMPERSAND
+0x27	U+0027	# APOSTROPHE
+0x28	U+0028	# LEFT PARENTHESIS
+0x29	U+0029	# RIGHT PARENTHESIS
+0x2A	U+002A	# ASTERISK
+0x2B	U+002B	# PLUS SIGN
+0x2C	U+002C	# COMMA
+0x2D	U+002D	# HYPHEN-MINUS
+0x2E	U+002E	# FULL STOP
+0x2F	U+002F	# SOLIDUS
+0x30	U+0030	# DIGIT ZERO
+0x31	U+0031	# DIGIT ONE
+0x32	U+0032	# DIGIT TWO
+0x33	U+0033	# DIGIT THREE
+0x34	U+0034	# DIGIT FOUR
+0x35	U+0035	# DIGIT FIVE
+0x36	U+0036	# DIGIT SIX
+0x37	U+0037	# DIGIT SEVEN
+0x38	U+0038	# DIGIT EIGHT
+0x39	U+0039	# DIGIT NINE
+0x3A	U+003A	# COLON
+0x3B	U+003B	# SEMICOLON
+0x3C	U+003C	# LESS-THAN SIGN
+0x3D	U+003D	# EQUALS SIGN
+0x3E	U+003E	# GREATER-THAN SIGN
+0x3F	U+003F	# QUESTION MARK
+0x40	U+0040	# COMMERCIAL AT
+0x41	U+0041	# LATIN CAPITAL LETTER A
+0x42	U+0042	# LATIN CAPITAL LETTER B
+0x43	U+0043	# LATIN CAPITAL LETTER C
+0x44	U+0044	# LATIN CAPITAL LETTER D
+0x45	U+0045	# LATIN CAPITAL LETTER E
+0x46	U+0046	# LATIN CAPITAL LETTER F
+0x47	U+0047	# LATIN CAPITAL LETTER G
+0x48	U+0048	# LATIN CAPITAL LETTER H
+0x49	U+0049	# LATIN CAPITAL LETTER I
+0x4A	U+004A	# LATIN CAPITAL LETTER J
+0x4B	U+004B	# LATIN CAPITAL LETTER K
+0x4C	U+004C	# LATIN CAPITAL LETTER L
+0x4D	U+004D	# LATIN CAPITAL LETTER M
+0x4E	U+004E	# LATIN CAPITAL LETTER N
+0x4F	U+004F	# LATIN CAPITAL LETTER O
+0x50	U+0050	# LATIN CAPITAL LETTER P
+0x51	U+0051	# LATIN CAPITAL LETTER Q
+0x52	U+0052	# LATIN CAPITAL LETTER R
+0x53	U+0053	# LATIN CAPITAL LETTER S
+0x54	U+0054	# LATIN CAPITAL LETTER T
+0x55	U+0055	# LATIN CAPITAL LETTER U
+0x56	U+0056	# LATIN CAPITAL LETTER V
+0x57	U+0057	# LATIN CAPITAL LETTER W
+0x58	U+0058	# LATIN CAPITAL LETTER X
+0x59	U+0059	# LATIN CAPITAL LETTER Y
+0x5A	U+005A	# LATIN CAPITAL LETTER Z
+0x5B	U+005B	# LEFT SQUARE BRACKET
+0x5C	U+005C	# YEN SIGN
+0x5D	U+005D	# RIGHT SQUARE BRACKET
+0x5E	U+005E	# CIRCUMFLEX ACCENT
+0x5F	U+005F	# LOW LINE
+0x60	U+0060	# GRAVE ACCENT
+0x61	U+0061	# LATIN SMALL LETTER A
+0x62	U+0062	# LATIN SMALL LETTER B
+0x63	U+0063	# LATIN SMALL LETTER C
+0x64	U+0064	# LATIN SMALL LETTER D
+0x65	U+0065	# LATIN SMALL LETTER E
+0x66	U+0066	# LATIN SMALL LETTER F
+0x67	U+0067	# LATIN SMALL LETTER G
+0x68	U+0068	# LATIN SMALL LETTER H
+0x69	U+0069	# LATIN SMALL LETTER I
+0x6A	U+006A	# LATIN SMALL LETTER J
+0x6B	U+006B	# LATIN SMALL LETTER K
+0x6C	U+006C	# LATIN SMALL LETTER L
+0x6D	U+006D	# LATIN SMALL LETTER M
+0x6E	U+006E	# LATIN SMALL LETTER N
+0x6F	U+006F	# LATIN SMALL LETTER O
+0x70	U+0070	# LATIN SMALL LETTER P
+0x71	U+0071	# LATIN SMALL LETTER Q
+0x72	U+0072	# LATIN SMALL LETTER R
+0x73	U+0073	# LATIN SMALL LETTER S
+0x74	U+0074	# LATIN SMALL LETTER T
+0x75	U+0075	# LATIN SMALL LETTER U
+0x76	U+0076	# LATIN SMALL LETTER V
+0x77	U+0077	# LATIN SMALL LETTER W
+0x78	U+0078	# LATIN SMALL LETTER X
+0x79	U+0079	# LATIN SMALL LETTER Y
+0x7A	U+007A	# LATIN SMALL LETTER Z
+0x7B	U+007B	# LEFT CURLY BRACKET
+0x7C	U+007C	# VERTICAL LINE
+0x7D	U+007D	# RIGHT CURLY BRACKET
+0x7E	U+007E	# OVERLINE
+0x7F	U+007F	# DELETE
+0xA1	U+FF61	# HALFWIDTH IDEOGRAPHIC FULL STOP
+0xA2	U+FF62	# HALFWIDTH LEFT CORNER BRACKET
+0xA3	U+FF63	# HALFWIDTH RIGHT CORNER BRACKET
+0xA4	U+FF64	# HALFWIDTH IDEOGRAPHIC COMMA
+0xA5	U+FF65	# HALFWIDTH KATAKANA MIDDLE DOT
+0xA6	U+FF66	# HALFWIDTH KATAKANA LETTER WO
+0xA7	U+FF67	# HALFWIDTH KATAKANA LETTER SMALL A
+0xA8	U+FF68	# HALFWIDTH KATAKANA LETTER SMALL I
+0xA9	U+FF69	# HALFWIDTH KATAKANA LETTER SMALL U
+0xAA	U+FF6A	# HALFWIDTH KATAKANA LETTER SMALL E
+0xAB	U+FF6B	# HALFWIDTH KATAKANA LETTER SMALL O
+0xAC	U+FF6C	# HALFWIDTH KATAKANA LETTER SMALL YA
+0xAD	U+FF6D	# HALFWIDTH KATAKANA LETTER SMALL YU
+0xAE	U+FF6E	# HALFWIDTH KATAKANA LETTER SMALL YO
+0xAF	U+FF6F	# HALFWIDTH KATAKANA LETTER SMALL TU
+0xB0	U+FF70	# HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0xB1	U+FF71	# HALFWIDTH KATAKANA LETTER A
+0xB2	U+FF72	# HALFWIDTH KATAKANA LETTER I
+0xB3	U+FF73	# HALFWIDTH KATAKANA LETTER U
+0xB4	U+FF74	# HALFWIDTH KATAKANA LETTER E
+0xB5	U+FF75	# HALFWIDTH KATAKANA LETTER O
+0xB6	U+FF76	# HALFWIDTH KATAKANA LETTER KA
+0xB7	U+FF77	# HALFWIDTH KATAKANA LETTER KI
+0xB8	U+FF78	# HALFWIDTH KATAKANA LETTER KU
+0xB9	U+FF79	# HALFWIDTH KATAKANA LETTER KE
+0xBA	U+FF7A	# HALFWIDTH KATAKANA LETTER KO
+0xBB	U+FF7B	# HALFWIDTH KATAKANA LETTER SA
+0xBC	U+FF7C	# HALFWIDTH KATAKANA LETTER SI
+0xBD	U+FF7D	# HALFWIDTH KATAKANA LETTER SU
+0xBE	U+FF7E	# HALFWIDTH KATAKANA LETTER SE
+0xBF	U+FF7F	# HALFWIDTH KATAKANA LETTER SO
+0xC0	U+FF80	# HALFWIDTH KATAKANA LETTER TA
+0xC1	U+FF81	# HALFWIDTH KATAKANA LETTER TI
+0xC2	U+FF82	# HALFWIDTH KATAKANA LETTER TU
+0xC3	U+FF83	# HALFWIDTH KATAKANA LETTER TE
+0xC4	U+FF84	# HALFWIDTH KATAKANA LETTER TO
+0xC5	U+FF85	# HALFWIDTH KATAKANA LETTER NA
+0xC6	U+FF86	# HALFWIDTH KATAKANA LETTER NI
+0xC7	U+FF87	# HALFWIDTH KATAKANA LETTER NU
+0xC8	U+FF88	# HALFWIDTH KATAKANA LETTER NE
+0xC9	U+FF89	# HALFWIDTH KATAKANA LETTER NO
+0xCA	U+FF8A	# HALFWIDTH KATAKANA LETTER HA
+0xCB	U+FF8B	# HALFWIDTH KATAKANA LETTER HI
+0xCC	U+FF8C	# HALFWIDTH KATAKANA LETTER HU
+0xCD	U+FF8D	# HALFWIDTH KATAKANA LETTER HE
+0xCE	U+FF8E	# HALFWIDTH KATAKANA LETTER HO
+0xCF	U+FF8F	# HALFWIDTH KATAKANA LETTER MA
+0xD0	U+FF90	# HALFWIDTH KATAKANA LETTER MI
+0xD1	U+FF91	# HALFWIDTH KATAKANA LETTER MU
+0xD2	U+FF92	# HALFWIDTH KATAKANA LETTER ME
+0xD3	U+FF93	# HALFWIDTH KATAKANA LETTER MO
+0xD4	U+FF94	# HALFWIDTH KATAKANA LETTER YA
+0xD5	U+FF95	# HALFWIDTH KATAKANA LETTER YU
+0xD6	U+FF96	# HALFWIDTH KATAKANA LETTER YO
+0xD7	U+FF97	# HALFWIDTH KATAKANA LETTER RA
+0xD8	U+FF98	# HALFWIDTH KATAKANA LETTER RI
+0xD9	U+FF99	# HALFWIDTH KATAKANA LETTER RU
+0xDA	U+FF9A	# HALFWIDTH KATAKANA LETTER RE
+0xDB	U+FF9B	# HALFWIDTH KATAKANA LETTER RO
+0xDC	U+FF9C	# HALFWIDTH KATAKANA LETTER WA
+0xDD	U+FF9D	# HALFWIDTH KATAKANA LETTER N
+0xDE	U+FF9E	# HALFWIDTH KATAKANA VOICED SOUND MARK
+0xDF	U+FF9F	# HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+#
+#  sjis0213    
+#
+0x8140	U+3000	# IDEOGRAPHIC SPACE
+0x8141	U+3001	# IDEOGRAPHIC COMMA
+0x8142	U+3002	# IDEOGRAPHIC FULL STOP
+0x8143	U+FF0C	# FULLWIDTH COMMA
+0x8144	U+FF0E	# FULLWIDTH FULL STOP
+0x8145	U+30FB	# KATAKANA MIDDLE DOT
+0x8146	U+FF1A	# FULLWIDTH COLON
+0x8147	U+FF1B	# FULLWIDTH SEMICOLON
+0x8148	U+FF1F	# FULLWIDTH QUESTION MARK
+0x8149	U+FF01	# FULLWIDTH EXCLAMATION MARK
+0x814A	U+309B	# KATAKANA-HIRAGANA VOICED SOUND MARK
+0x814B	U+309C	# KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+0x814C	U+00B4	# ACUTE ACCENT
+0x814D	U+FF40	# FULLWIDTH GRAVE ACCENT
+0x814E	U+00A8	# DIAERESIS
+0x814F	U+FF3E	# FULLWIDTH CIRCUMFLEX ACCENT
+0x8150	U+FFE3	# FULLWIDTH MACRON 
+0x8151	U+FF3F	# FULLWIDTH LOW LINE
+0x8152	U+30FD	# KATAKANA ITERATION MARK
+0x8153	U+30FE	# KATAKANA VOICED ITERATION MARK
+0x8154	U+309D	# HIRAGANA ITERATION MARK
+0x8155	U+309E	# HIRAGANA VOICED ITERATION MARK
+0x8156	U+3003	# DITTO MARK
+0x8157	U+4EDD	# <cjk>
+0x8158	U+3005	# IDEOGRAPHIC ITERATION MARK
+0x8159	U+3006	# IDEOGRAPHIC CLOSING MARK
+0x815A	U+3007	# IDEOGRAPHIC NUMBER ZERO
+0x815B	U+30FC	# KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0x815C	U+2014	# EM DASH	Windows: U+2015
+0x815D	U+2010	# HYPHEN
+0x815E	U+FF0F	# FULLWIDTH SOLIDUS
+#0x815F	U+005C	# REVERSE SOLIDUS	Fullwidth: U+FF3C
+0x815F	U+FF3C	# REVERSE SOLIDUS	Fullwidth: U+FF3C
+0x8160	U+301C	# WAVE DASH	Windows: U+FF5E
+0x8161	U+2016	# DOUBLE VERTICAL LINE	Windows: U+2225
+0x8162	U+FF5C	# FULLWIDTH VERTICAL LINE
+0x8163	U+2026	# HORIZONTAL ELLIPSIS
+0x8164	U+2025	# TWO DOT LEADER
+0x8165	U+2018	# LEFT SINGLE QUOTATION MARK
+0x8166	U+2019	# RIGHT SINGLE QUOTATION MARK
+0x8167	U+201C	# LEFT DOUBLE QUOTATION MARK
+0x8168	U+201D	# RIGHT DOUBLE QUOTATION MARK
+0x8169	U+FF08	# FULLWIDTH LEFT PARENTHESIS
+0x816A	U+FF09	# FULLWIDTH RIGHT PARENTHESIS
+0x816B	U+3014	# LEFT TORTOISE SHELL BRACKET
+0x816C	U+3015	# RIGHT TORTOISE SHELL BRACKET
+0x816D	U+FF3B	# FULLWIDTH LEFT SQUARE BRACKET
+0x816E	U+FF3D	# FULLWIDTH RIGHT SQUARE BRACKET
+0x816F	U+FF5B	# FULLWIDTH LEFT CURLY BRACKET
+0x8170	U+FF5D	# FULLWIDTH RIGHT CURLY BRACKET
+0x8171	U+3008	# LEFT ANGLE BRACKET
+0x8172	U+3009	# RIGHT ANGLE BRACKET
+0x8173	U+300A	# LEFT DOUBLE ANGLE BRACKET
+0x8174	U+300B	# RIGHT DOUBLE ANGLE BRACKET
+0x8175	U+300C	# LEFT CORNER BRACKET
+0x8176	U+300D	# RIGHT CORNER BRACKET
+0x8177	U+300E	# LEFT WHITE CORNER BRACKET
+0x8178	U+300F	# RIGHT WHITE CORNER BRACKET
+0x8179	U+3010	# LEFT BLACK LENTICULAR BRACKET
+0x817A	U+3011	# RIGHT BLACK LENTICULAR BRACKET
+0x817B	U+FF0B	# FULLWIDTH PLUS SIGN
+0x817C	U+2212	# MINUS SIGN	Windows: U+FF0D
+0x817D	U+00B1	# PLUS-MINUS SIGN
+0x817E	U+00D7	# MULTIPLICATION SIGN
+0x8180	U+00F7	# DIVISION SIGN
+0x8181	U+FF1D	# FULLWIDTH EQUALS SIGN
+0x8182	U+2260	# NOT EQUAL TO
+0x8183	U+FF1C	# FULLWIDTH LESS-THAN SIGN
+0x8184	U+FF1E	# FULLWIDTH GREATER-THAN SIGN
+0x8185	U+2266	# LESS-THAN OVER EQUAL TO
+0x8186	U+2267	# GREATER-THAN OVER EQUAL TO
+0x8187	U+221E	# INFINITY
+0x8188	U+2234	# THEREFORE
+0x8189	U+2642	# MALE SIGN
+0x818A	U+2640	# FEMALE SIGN
+0x818B	U+00B0	# DEGREE SIGN
+0x818C	U+2032	# PRIME
+0x818D	U+2033	# DOUBLE PRIME
+0x818E	U+2103	# DEGREE CELSIUS
+0x818F	U+FFE5	# FULLWIDTH YEN SIGN
+0x8190	U+FF04	# FULLWIDTH DOLLAR SIGN
+0x8191	U+00A2	# CENT SIGN	Windows: U+FFE0
+0x8192	U+00A3	# POUND SIGN	Windows: U+FFE1
+0x8193	U+FF05	# FULLWIDTH PERCENT SIGN
+0x8194	U+FF03	# FULLWIDTH NUMBER SIGN
+0x8195	U+FF06	# FULLWIDTH AMPERSAND
+0x8196	U+FF0A	# FULLWIDTH ASTERISK
+0x8197	U+FF20	# FULLWIDTH COMMERCIAL AT
+0x8198	U+00A7	# SECTION SIGN
+0x8199	U+2606	# WHITE STAR
+0x819A	U+2605	# BLACK STAR
+0x819B	U+25CB	# WHITE CIRCLE
+0x819C	U+25CF	# BLACK CIRCLE
+0x819D	U+25CE	# BULLSEYE
+0x819E	U+25C7	# WHITE DIAMOND
+0x819F	U+25C6	# BLACK DIAMOND
+0x81A0	U+25A1	# WHITE SQUARE
+0x81A1	U+25A0	# BLACK SQUARE
+0x81A2	U+25B3	# WHITE UP-POINTING TRIANGLE
+0x81A3	U+25B2	# BLACK UP-POINTING TRIANGLE
+0x81A4	U+25BD	# WHITE DOWN-POINTING TRIANGLE
+0x81A5	U+25BC	# BLACK DOWN-POINTING TRIANGLE
+0x81A6	U+203B	# REFERENCE MARK
+0x81A7	U+3012	# POSTAL MARK
+0x81A8	U+2192	# RIGHTWARDS ARROW
+0x81A9	U+2190	# LEFTWARDS ARROW
+0x81AA	U+2191	# UPWARDS ARROW
+0x81AB	U+2193	# DOWNWARDS ARROW
+0x81AC	U+3013	# GETA MARK
+0x81AD	U+FF07	# FULLWIDTH APOSTROPHE
+0x81AE	U+FF02	# FULLWIDTH QUOTATION MARK	[2000]
+0x81AF	U+FF0D	# FULLWIDTH HYPHEN-MINUS	[2000]
+#0x81B0	U+007E	# TILDE	[2000]	Fullwidth: U+FF5E
+0x81B0	U+FF5E	# TILDE	[2000]	Fullwidth: U+FF5E
+0x81B1	U+3033	# VERTICAL KANA REPEAT MARK UPPER HALF	[2000]
+0x81B2	U+3034	# VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF	[2000]
+0x81B3	U+3035	# VERTICAL KANA REPEAT MARK LOWER HALF	[2000]
+0x81B4	U+303B	# VERTICAL IDEOGRAPHIC ITERATION MARK	[2000]	[Unicode3.2]
+0x81B5	U+303C	# MASU MARK	[2000]	[Unicode3.2]
+0x81B6	U+30FF	# KATAKANA DIGRAPH KOTO	[2000]	[Unicode3.2]
+0x81B7	U+309F	# HIRAGANA DIGRAPH YORI	[2000]	[Unicode3.2]
+0x81B8	U+2208	# ELEMENT OF	[1983]
+0x81B9	U+220B	# CONTAINS AS MEMBER	[1983]
+0x81BA	U+2286	# SUBSET OF OR EQUAL TO	[1983]
+0x81BB	U+2287	# SUPERSET OF OR EQUAL TO	[1983]
+0x81BC	U+2282	# SUBSET OF	[1983]
+0x81BD	U+2283	# SUPERSET OF	[1983]
+0x81BE	U+222A	# UNION	[1983]
+0x81BF	U+2229	# INTERSECTION	[1983]
+0x81C0	U+2284	# NOT A SUBSET OF	[2000]
+0x81C1	U+2285	# NOT A SUPERSET OF	[2000]
+0x81C2	U+228A	# SUBSET OF WITH NOT EQUAL TO	[2000]
+0x81C3	U+228B	# SUPERSET OF WITH NOT EQUAL TO	[2000]
+0x81C4	U+2209	# NOT AN ELEMENT OF	[2000]
+0x81C5	U+2205	# EMPTY SET	[2000]
+0x81C6	U+2305	# PROJECTIVE	[2000]
+0x81C7	U+2306	# PERSPECTIVE	[2000]
+0x81C8	U+2227	# LOGICAL AND	[1983]
+0x81C9	U+2228	# LOGICAL OR	[1983]
+0x81CA	U+00AC	# NOT SIGN	[1983]	Windows: U+FFE2
+0x81CB	U+21D2	# RIGHTWARDS DOUBLE ARROW	[1983]
+0x81CC	U+21D4	# LEFT RIGHT DOUBLE ARROW	[1983]
+0x81CD	U+2200	# FOR ALL	[1983]
+0x81CE	U+2203	# THERE EXISTS	[1983]
+0x81CF	U+2295	# CIRCLED PLUS	[2000]
+0x81D0	U+2296	# CIRCLED MINUS	[2000]
+0x81D1	U+2297	# CIRCLED TIMES	[2000]
+0x81D2	U+2225	# PARALLEL TO	[2000]
+0x81D3	U+2226	# NOT PARALLEL TO	[2000]
+0x81D4	U+FF5F	# FULLWIDTH LEFT WHITE PARENTHESIS	[2000]	[Unicode3.2]
+0x81D5	U+FF60	# FULLWIDTH RIGHT WHITE PARENTHESIS	[2000]	[Unicode3.2]
+0x81D6	U+3018	# LEFT WHITE TORTOISE SHELL BRACKET	[2000]
+0x81D7	U+3019	# RIGHT WHITE TORTOISE SHELL BRACKET	[2000]
+0x81D8	U+3016	# LEFT WHITE LENTICULAR BRACKET	[2000]
+0x81D9	U+3017	# RIGHT WHITE LENTICULAR BRACKET	[2000]
+0x81DA	U+2220	# ANGLE	[1983]
+0x81DB	U+22A5	# UP TACK	[1983]
+0x81DC	U+2312	# ARC	[1983]
+0x81DD	U+2202	# PARTIAL DIFFERENTIAL	[1983]
+0x81DE	U+2207	# NABLA	[1983]
+0x81DF	U+2261	# IDENTICAL TO	[1983]
+0x81E0	U+2252	# APPROXIMATELY EQUAL TO OR THE IMAGE OF	[1983]
+0x81E1	U+226A	# MUCH LESS-THAN	[1983]
+0x81E2	U+226B	# MUCH GREATER-THAN	[1983]
+0x81E3	U+221A	# SQUARE ROOT	[1983]
+0x81E4	U+223D	# REVERSED TILDE 	[1983]
+0x81E5	U+221D	# PROPORTIONAL TO	[1983]
+0x81E6	U+2235	# BECAUSE	[1983]
+0x81E7	U+222B	# INTEGRAL	[1983]
+0x81E8	U+222C	# DOUBLE INTEGRAL	[1983]
+0x81E9	U+2262	# NOT IDENTICAL TO	[2000]
+0x81EA	U+2243	# ASYMPTOTICALLY EQUAL TO	[2000]
+0x81EB	U+2245	# APPROXIMATELY EQUAL TO	[2000]
+0x81EC	U+2248	# ALMOST EQUAL TO	[2000]
+0x81ED	U+2276	# LESS-THAN OR GREATER-THAN	[2000]
+0x81EE	U+2277	# GREATER-THAN OR LESS-THAN	[2000]
+0x81EF	U+2194	# LEFT RIGHT ARROW	[2000]
+0x81F0	U+212B	# ANGSTROM SIGN	[1983]
+0x81F1	U+2030	# PER MILLE SIGN	[1983]
+0x81F2	U+266F	# MUSIC SHARP SIGN	[1983]
+0x81F3	U+266D	# MUSIC FLAT SIGN	[1983]
+0x81F4	U+266A	# EIGHTH NOTE	[1983]
+0x81F5	U+2020	# DAGGER	[1983]
+0x81F6	U+2021	# DOUBLE DAGGER	[1983]
+0x81F7	U+00B6	# PILCROW SIGN	[1983]
+0x81F8	U+266E	# MUSIC NATURAL SIGN	[2000]
+0x81F9	U+266B	# BEAMED EIGHTH NOTES	[2000]
+0x81FA	U+266C	# BEAMED SIXTEENTH NOTES	[2000]
+0x81FB	U+2669	# QUARTER NOTE	[2000]
+0x81FC	U+25EF	# LARGE CIRCLE	[1983]
+0x8240	U+25B7	# WHITE RIGHT-POINTING TRIANGLE	[2000]
+0x8241	U+25B6	# BLACK RIGHT-POINTING TRIANGLE	[2000]
+0x8242	U+25C1	# WHITE LEFT-POINTING TRIANGLE	[2000]
+0x8243	U+25C0	# BLACK LEFT-POINTING TRIANGLE	[2000]
+0x8244	U+2197	# NORTH EAST ARROW	[2000]
+0x8245	U+2198	# SOUTH EAST ARROW	[2000]
+0x8246	U+2196	# NORTH WEST ARROW	[2000]
+0x8247	U+2199	# SOUTH WEST ARROW	[2000]
+0x8248	U+21C4	# RIGHTWARDS ARROW OVER LEFTWARDS ARROW	[2000]
+0x8249	U+21E8	# RIGHTWARDS WHITE ARROW	[2000]
+0x824A	U+21E6	# LEFTWARDS WHITE ARROW	[2000]
+0x824B	U+21E7	# UPWARDS WHITE ARROW	[2000]
+0x824C	U+21E9	# DOWNWARDS WHITE ARROW	[2000]
+0x824D	U+2934	# ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS	[2000]	[Unicode3.2]
+0x824E	U+2935	# ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS	[2000]	[Unicode3.2]
+0x824F	U+FF10	# FULLWIDTH DIGIT ZERO
+0x8250	U+FF11	# FULLWIDTH DIGIT ONE
+0x8251	U+FF12	# FULLWIDTH DIGIT TWO
+0x8252	U+FF13	# FULLWIDTH DIGIT THREE
+0x8253	U+FF14	# FULLWIDTH DIGIT FOUR
+0x8254	U+FF15	# FULLWIDTH DIGIT FIVE
+0x8255	U+FF16	# FULLWIDTH DIGIT SIX
+0x8256	U+FF17	# FULLWIDTH DIGIT SEVEN
+0x8257	U+FF18	# FULLWIDTH DIGIT EIGHT
+0x8258	U+FF19	# FULLWIDTH DIGIT NINE
+0x8259	U+29BF	# CIRCLED BULLET	[2000]	[Unicode3.2]
+0x825A	U+25C9	# FISHEYE	[2000]
+0x825B	U+303D	# PART ALTERNATION MARK	[2000]	[Unicode3.2]
+0x825C	U+FE46	# WHITE SESAME DOT	[2000]	[Unicode3.2]
+0x825D	U+FE45	# SESAME DOT	[2000]	[Unicode3.2]
+0x825E	U+25E6	# WHITE BULLET	[2000]
+0x825F	U+2022	# BULLET	[2000]
+0x8260	U+FF21	# FULLWIDTH LATIN CAPITAL LETTER A
+0x8261	U+FF22	# FULLWIDTH LATIN CAPITAL LETTER B
+0x8262	U+FF23	# FULLWIDTH LATIN CAPITAL LETTER C
+0x8263	U+FF24	# FULLWIDTH LATIN CAPITAL LETTER D
+0x8264	U+FF25	# FULLWIDTH LATIN CAPITAL LETTER E
+0x8265	U+FF26	# FULLWIDTH LATIN CAPITAL LETTER F
+0x8266	U+FF27	# FULLWIDTH LATIN CAPITAL LETTER G
+0x8267	U+FF28	# FULLWIDTH LATIN CAPITAL LETTER H
+0x8268	U+FF29	# FULLWIDTH LATIN CAPITAL LETTER I
+0x8269	U+FF2A	# FULLWIDTH LATIN CAPITAL LETTER J
+0x826A	U+FF2B	# FULLWIDTH LATIN CAPITAL LETTER K
+0x826B	U+FF2C	# FULLWIDTH LATIN CAPITAL LETTER L
+0x826C	U+FF2D	# FULLWIDTH LATIN CAPITAL LETTER M
+0x826D	U+FF2E	# FULLWIDTH LATIN CAPITAL LETTER N
+0x826E	U+FF2F	# FULLWIDTH LATIN CAPITAL LETTER O
+0x826F	U+FF30	# FULLWIDTH LATIN CAPITAL LETTER P
+0x8270	U+FF31	# FULLWIDTH LATIN CAPITAL LETTER Q
+0x8271	U+FF32	# FULLWIDTH LATIN CAPITAL LETTER R
+0x8272	U+FF33	# FULLWIDTH LATIN CAPITAL LETTER S
+0x8273	U+FF34	# FULLWIDTH LATIN CAPITAL LETTER T
+0x8274	U+FF35	# FULLWIDTH LATIN CAPITAL LETTER U
+0x8275	U+FF36	# FULLWIDTH LATIN CAPITAL LETTER V
+0x8276	U+FF37	# FULLWIDTH LATIN CAPITAL LETTER W
+0x8277	U+FF38	# FULLWIDTH LATIN CAPITAL LETTER X
+0x8278	U+FF39	# FULLWIDTH LATIN CAPITAL LETTER Y
+0x8279	U+FF3A	# FULLWIDTH LATIN CAPITAL LETTER Z
+0x827A	U+2213	# MINUS-OR-PLUS SIGN	[2000]
+0x827B	U+2135	# ALEF SYMBOL	[2000]
+0x827C	U+210F	# PLANCK CONSTANT OVER TWO PI	[2000]
+0x827D	U+33CB	# SQUARE HP	[2000]
+0x827E	U+2113	# SCRIPT SMALL L	[2000]
+0x8280	U+2127	# INVERTED OHM SIGN	[2000]
+0x8281	U+FF41	# FULLWIDTH LATIN SMALL LETTER A
+0x8282	U+FF42	# FULLWIDTH LATIN SMALL LETTER B
+0x8283	U+FF43	# FULLWIDTH LATIN SMALL LETTER C
+0x8284	U+FF44	# FULLWIDTH LATIN SMALL LETTER D
+0x8285	U+FF45	# FULLWIDTH LATIN SMALL LETTER E
+0x8286	U+FF46	# FULLWIDTH LATIN SMALL LETTER F
+0x8287	U+FF47	# FULLWIDTH LATIN SMALL LETTER G
+0x8288	U+FF48	# FULLWIDTH LATIN SMALL LETTER H
+0x8289	U+FF49	# FULLWIDTH LATIN SMALL LETTER I
+0x828A	U+FF4A	# FULLWIDTH LATIN SMALL LETTER J
+0x828B	U+FF4B	# FULLWIDTH LATIN SMALL LETTER K
+0x828C	U+FF4C	# FULLWIDTH LATIN SMALL LETTER L
+0x828D	U+FF4D	# FULLWIDTH LATIN SMALL LETTER M
+0x828E	U+FF4E	# FULLWIDTH LATIN SMALL LETTER N
+0x828F	U+FF4F	# FULLWIDTH LATIN SMALL LETTER O
+0x8290	U+FF50	# FULLWIDTH LATIN SMALL LETTER P
+0x8291	U+FF51	# FULLWIDTH LATIN SMALL LETTER Q
+0x8292	U+FF52	# FULLWIDTH LATIN SMALL LETTER R
+0x8293	U+FF53	# FULLWIDTH LATIN SMALL LETTER S
+0x8294	U+FF54	# FULLWIDTH LATIN SMALL LETTER T
+0x8295	U+FF55	# FULLWIDTH LATIN SMALL LETTER U
+0x8296	U+FF56	# FULLWIDTH LATIN SMALL LETTER V
+0x8297	U+FF57	# FULLWIDTH LATIN SMALL LETTER W
+0x8298	U+FF58	# FULLWIDTH LATIN SMALL LETTER X
+0x8299	U+FF59	# FULLWIDTH LATIN SMALL LETTER Y
+0x829A	U+FF5A	# FULLWIDTH LATIN SMALL LETTER Z
+0x829B	U+30A0	# KATAKANA-HIRAGANA DOUBLE HYPHEN	[2000]	[Unicode3.2]
+0x829C	U+2013	# EN DASH	[2000]
+0x829D	U+29FA	# DOUBLE PLUS	[2000]	[Unicode3.2]
+0x829E	U+29FB	# TRIPLE PLUS	[2000]	[Unicode3.2]
+0x829F	U+3041	# HIRAGANA LETTER SMALL A
+0x82A0	U+3042	# HIRAGANA LETTER A
+0x82A1	U+3043	# HIRAGANA LETTER SMALL I
+0x82A2	U+3044	# HIRAGANA LETTER I
+0x82A3	U+3045	# HIRAGANA LETTER SMALL U
+0x82A4	U+3046	# HIRAGANA LETTER U
+0x82A5	U+3047	# HIRAGANA LETTER SMALL E
+0x82A6	U+3048	# HIRAGANA LETTER E
+0x82A7	U+3049	# HIRAGANA LETTER SMALL O
+0x82A8	U+304A	# HIRAGANA LETTER O
+0x82A9	U+304B	# HIRAGANA LETTER KA
+0x82AA	U+304C	# HIRAGANA LETTER GA
+0x82AB	U+304D	# HIRAGANA LETTER KI
+0x82AC	U+304E	# HIRAGANA LETTER GI
+0x82AD	U+304F	# HIRAGANA LETTER KU
+0x82AE	U+3050	# HIRAGANA LETTER GU
+0x82AF	U+3051	# HIRAGANA LETTER KE
+0x82B0	U+3052	# HIRAGANA LETTER GE
+0x82B1	U+3053	# HIRAGANA LETTER KO
+0x82B2	U+3054	# HIRAGANA LETTER GO
+0x82B3	U+3055	# HIRAGANA LETTER SA
+0x82B4	U+3056	# HIRAGANA LETTER ZA
+0x82B5	U+3057	# HIRAGANA LETTER SI
+0x82B6	U+3058	# HIRAGANA LETTER ZI
+0x82B7	U+3059	# HIRAGANA LETTER SU
+0x82B8	U+305A	# HIRAGANA LETTER ZU
+0x82B9	U+305B	# HIRAGANA LETTER SE
+0x82BA	U+305C	# HIRAGANA LETTER ZE
+0x82BB	U+305D	# HIRAGANA LETTER SO
+0x82BC	U+305E	# HIRAGANA LETTER ZO
+0x82BD	U+305F	# HIRAGANA LETTER TA
+0x82BE	U+3060	# HIRAGANA LETTER DA
+0x82BF	U+3061	# HIRAGANA LETTER TI
+0x82C0	U+3062	# HIRAGANA LETTER DI
+0x82C1	U+3063	# HIRAGANA LETTER SMALL TU
+0x82C2	U+3064	# HIRAGANA LETTER TU
+0x82C3	U+3065	# HIRAGANA LETTER DU
+0x82C4	U+3066	# HIRAGANA LETTER TE
+0x82C5	U+3067	# HIRAGANA LETTER DE
+0x82C6	U+3068	# HIRAGANA LETTER TO
+0x82C7	U+3069	# HIRAGANA LETTER DO
+0x82C8	U+306A	# HIRAGANA LETTER NA
+0x82C9	U+306B	# HIRAGANA LETTER NI
+0x82CA	U+306C	# HIRAGANA LETTER NU
+0x82CB	U+306D	# HIRAGANA LETTER NE
+0x82CC	U+306E	# HIRAGANA LETTER NO
+0x82CD	U+306F	# HIRAGANA LETTER HA
+0x82CE	U+3070	# HIRAGANA LETTER BA
+0x82CF	U+3071	# HIRAGANA LETTER PA
+0x82D0	U+3072	# HIRAGANA LETTER HI
+0x82D1	U+3073	# HIRAGANA LETTER BI
+0x82D2	U+3074	# HIRAGANA LETTER PI
+0x82D3	U+3075	# HIRAGANA LETTER HU
+0x82D4	U+3076	# HIRAGANA LETTER BU
+0x82D5	U+3077	# HIRAGANA LETTER PU
+0x82D6	U+3078	# HIRAGANA LETTER HE
+0x82D7	U+3079	# HIRAGANA LETTER BE
+0x82D8	U+307A	# HIRAGANA LETTER PE
+0x82D9	U+307B	# HIRAGANA LETTER HO
+0x82DA	U+307C	# HIRAGANA LETTER BO
+0x82DB	U+307D	# HIRAGANA LETTER PO
+0x82DC	U+307E	# HIRAGANA LETTER MA
+0x82DD	U+307F	# HIRAGANA LETTER MI
+0x82DE	U+3080	# HIRAGANA LETTER MU
+0x82DF	U+3081	# HIRAGANA LETTER ME
+0x82E0	U+3082	# HIRAGANA LETTER MO
+0x82E1	U+3083	# HIRAGANA LETTER SMALL YA
+0x82E2	U+3084	# HIRAGANA LETTER YA
+0x82E3	U+3085	# HIRAGANA LETTER SMALL YU
+0x82E4	U+3086	# HIRAGANA LETTER YU
+0x82E5	U+3087	# HIRAGANA LETTER SMALL YO
+0x82E6	U+3088	# HIRAGANA LETTER YO
+0x82E7	U+3089	# HIRAGANA LETTER RA
+0x82E8	U+308A	# HIRAGANA LETTER RI
+0x82E9	U+308B	# HIRAGANA LETTER RU
+0x82EA	U+308C	# HIRAGANA LETTER RE
+0x82EB	U+308D	# HIRAGANA LETTER RO
+0x82EC	U+308E	# HIRAGANA LETTER SMALL WA
+0x82ED	U+308F	# HIRAGANA LETTER WA
+0x82EE	U+3090	# HIRAGANA LETTER WI
+0x82EF	U+3091	# HIRAGANA LETTER WE
+0x82F0	U+3092	# HIRAGANA LETTER WO
+0x82F1	U+3093	# HIRAGANA LETTER N
+0x82F2	U+3094	# HIRAGANA LETTER VU	[2000]
+0x82F3	U+3095	# HIRAGANA LETTER SMALL KA	[2000]	[Unicode3.2]
+0x82F4	U+3096	# HIRAGANA LETTER SMALL KE	[2000]	[Unicode3.2]
+0x82F5	U+304B+309A	# 	[2000]
+0x82F6	U+304D+309A	# 	[2000]
+0x82F7	U+304F+309A	# 	[2000]
+0x82F8	U+3051+309A	# 	[2000]
+0x82F9	U+3053+309A	# 	[2000]
+0x82FA		# <reserved>
+0x82FB		# <reserved>
+0x82FC		# <reserved>
+0x8340	U+30A1	# KATAKANA LETTER SMALL A
+0x8341	U+30A2	# KATAKANA LETTER A
+0x8342	U+30A3	# KATAKANA LETTER SMALL I
+0x8343	U+30A4	# KATAKANA LETTER I
+0x8344	U+30A5	# KATAKANA LETTER SMALL U
+0x8345	U+30A6	# KATAKANA LETTER U
+0x8346	U+30A7	# KATAKANA LETTER SMALL E
+0x8347	U+30A8	# KATAKANA LETTER E
+0x8348	U+30A9	# KATAKANA LETTER SMALL O
+0x8349	U+30AA	# KATAKANA LETTER O
+0x834A	U+30AB	# KATAKANA LETTER KA
+0x834B	U+30AC	# KATAKANA LETTER GA
+0x834C	U+30AD	# KATAKANA LETTER KI
+0x834D	U+30AE	# KATAKANA LETTER GI
+0x834E	U+30AF	# KATAKANA LETTER KU
+0x834F	U+30B0	# KATAKANA LETTER GU
+0x8350	U+30B1	# KATAKANA LETTER KE
+0x8351	U+30B2	# KATAKANA LETTER GE
+0x8352	U+30B3	# KATAKANA LETTER KO
+0x8353	U+30B4	# KATAKANA LETTER GO
+0x8354	U+30B5	# KATAKANA LETTER SA
+0x8355	U+30B6	# KATAKANA LETTER ZA
+0x8356	U+30B7	# KATAKANA LETTER SI
+0x8357	U+30B8	# KATAKANA LETTER ZI
+0x8358	U+30B9	# KATAKANA LETTER SU
+0x8359	U+30BA	# KATAKANA LETTER ZU
+0x835A	U+30BB	# KATAKANA LETTER SE
+0x835B	U+30BC	# KATAKANA LETTER ZE
+0x835C	U+30BD	# KATAKANA LETTER SO
+0x835D	U+30BE	# KATAKANA LETTER ZO
+0x835E	U+30BF	# KATAKANA LETTER TA
+0x835F	U+30C0	# KATAKANA LETTER DA
+0x8360	U+30C1	# KATAKANA LETTER TI
+0x8361	U+30C2	# KATAKANA LETTER DI
+0x8362	U+30C3	# KATAKANA LETTER SMALL TU
+0x8363	U+30C4	# KATAKANA LETTER TU
+0x8364	U+30C5	# KATAKANA LETTER DU
+0x8365	U+30C6	# KATAKANA LETTER TE
+0x8366	U+30C7	# KATAKANA LETTER DE
+0x8367	U+30C8	# KATAKANA LETTER TO
+0x8368	U+30C9	# KATAKANA LETTER DO
+0x8369	U+30CA	# KATAKANA LETTER NA
+0x836A	U+30CB	# KATAKANA LETTER NI
+0x836B	U+30CC	# KATAKANA LETTER NU
+0x836C	U+30CD	# KATAKANA LETTER NE
+0x836D	U+30CE	# KATAKANA LETTER NO
+0x836E	U+30CF	# KATAKANA LETTER HA
+0x836F	U+30D0	# KATAKANA LETTER BA
+0x8370	U+30D1	# KATAKANA LETTER PA
+0x8371	U+30D2	# KATAKANA LETTER HI
+0x8372	U+30D3	# KATAKANA LETTER BI
+0x8373	U+30D4	# KATAKANA LETTER PI
+0x8374	U+30D5	# KATAKANA LETTER HU
+0x8375	U+30D6	# KATAKANA LETTER BU
+0x8376	U+30D7	# KATAKANA LETTER PU
+0x8377	U+30D8	# KATAKANA LETTER HE
+0x8378	U+30D9	# KATAKANA LETTER BE
+0x8379	U+30DA	# KATAKANA LETTER PE
+0x837A	U+30DB	# KATAKANA LETTER HO
+0x837B	U+30DC	# KATAKANA LETTER BO
+0x837C	U+30DD	# KATAKANA LETTER PO
+0x837D	U+30DE	# KATAKANA LETTER MA
+0x837E	U+30DF	# KATAKANA LETTER MI
+0x8380	U+30E0	# KATAKANA LETTER MU
+0x8381	U+30E1	# KATAKANA LETTER ME
+0x8382	U+30E2	# KATAKANA LETTER MO
+0x8383	U+30E3	# KATAKANA LETTER SMALL YA
+0x8384	U+30E4	# KATAKANA LETTER YA
+0x8385	U+30E5	# KATAKANA LETTER SMALL YU
+0x8386	U+30E6	# KATAKANA LETTER YU
+0x8387	U+30E7	# KATAKANA LETTER SMALL YO
+0x8388	U+30E8	# KATAKANA LETTER YO
+0x8389	U+30E9	# KATAKANA LETTER RA
+0x838A	U+30EA	# KATAKANA LETTER RI
+0x838B	U+30EB	# KATAKANA LETTER RU
+0x838C	U+30EC	# KATAKANA LETTER RE
+0x838D	U+30ED	# KATAKANA LETTER RO
+0x838E	U+30EE	# KATAKANA LETTER SMALL WA
+0x838F	U+30EF	# KATAKANA LETTER WA
+0x8390	U+30F0	# KATAKANA LETTER WI
+0x8391	U+30F1	# KATAKANA LETTER WE
+0x8392	U+30F2	# KATAKANA LETTER WO
+0x8393	U+30F3	# KATAKANA LETTER N
+0x8394	U+30F4	# KATAKANA LETTER VU
+0x8395	U+30F5	# KATAKANA LETTER SMALL KA
+0x8396	U+30F6	# KATAKANA LETTER SMALL KE
+0x8397	U+30AB+309A	# 	[2000]
+0x8398	U+30AD+309A	# 	[2000]
+0x8399	U+30AF+309A	# 	[2000]
+0x839A	U+30B1+309A	# 	[2000]
+0x839B	U+30B3+309A	# 	[2000]
+0x839C	U+30BB+309A	# 	[2000]
+0x839D	U+30C4+309A	# 	[2000]
+0x839E	U+30C8+309A	# 	[2000]
+0x839F	U+0391	# GREEK CAPITAL LETTER ALPHA
+0x83A0	U+0392	# GREEK CAPITAL LETTER BETA
+0x83A1	U+0393	# GREEK CAPITAL LETTER GAMMA
+0x83A2	U+0394	# GREEK CAPITAL LETTER DELTA
+0x83A3	U+0395	# GREEK CAPITAL LETTER EPSILON
+0x83A4	U+0396	# GREEK CAPITAL LETTER ZETA
+0x83A5	U+0397	# GREEK CAPITAL LETTER ETA
+0x83A6	U+0398	# GREEK CAPITAL LETTER THETA
+0x83A7	U+0399	# GREEK CAPITAL LETTER IOTA
+0x83A8	U+039A	# GREEK CAPITAL LETTER KAPPA
+0x83A9	U+039B	# GREEK CAPITAL LETTER LAMDA
+0x83AA	U+039C	# GREEK CAPITAL LETTER MU
+0x83AB	U+039D	# GREEK CAPITAL LETTER NU
+0x83AC	U+039E	# GREEK CAPITAL LETTER XI
+0x83AD	U+039F	# GREEK CAPITAL LETTER OMICRON
+0x83AE	U+03A0	# GREEK CAPITAL LETTER PI
+0x83AF	U+03A1	# GREEK CAPITAL LETTER RHO
+0x83B0	U+03A3	# GREEK CAPITAL LETTER SIGMA
+0x83B1	U+03A4	# GREEK CAPITAL LETTER TAU
+0x83B2	U+03A5	# GREEK CAPITAL LETTER UPSILON
+0x83B3	U+03A6	# GREEK CAPITAL LETTER PHI
+0x83B4	U+03A7	# GREEK CAPITAL LETTER CHI
+0x83B5	U+03A8	# GREEK CAPITAL LETTER PSI
+0x83B6	U+03A9	# GREEK CAPITAL LETTER OMEGA
+0x83B7	U+2664	# WHITE SPADE SUIT	[2000]
+0x83B8	U+2660	# BLACK SPADE SUIT	[2000]
+0x83B9	U+2662	# WHITE DIAMOND SUIT	[2000]
+0x83BA	U+2666	# BLACK DIAMOND SUIT	[2000]
+0x83BB	U+2661	# WHITE HEART SUIT	[2000]
+0x83BC	U+2665	# BLACK HEART SUIT	[2000]
+0x83BD	U+2667	# WHITE CLUB SUIT	[2000]
+0x83BE	U+2663	# BLACK CLUB SUIT	[2000]
+0x83BF	U+03B1	# GREEK SMALL LETTER ALPHA
+0x83C0	U+03B2	# GREEK SMALL LETTER BETA
+0x83C1	U+03B3	# GREEK SMALL LETTER GAMMA
+0x83C2	U+03B4	# GREEK SMALL LETTER DELTA
+0x83C3	U+03B5	# GREEK SMALL LETTER EPSILON
+0x83C4	U+03B6	# GREEK SMALL LETTER ZETA
+0x83C5	U+03B7	# GREEK SMALL LETTER ETA
+0x83C6	U+03B8	# GREEK SMALL LETTER THETA
+0x83C7	U+03B9	# GREEK SMALL LETTER IOTA
+0x83C8	U+03BA	# GREEK SMALL LETTER KAPPA
+0x83C9	U+03BB	# GREEK SMALL LETTER LAMDA
+0x83CA	U+03BC	# GREEK SMALL LETTER MU
+0x83CB	U+03BD	# GREEK SMALL LETTER NU
+0x83CC	U+03BE	# GREEK SMALL LETTER XI
+0x83CD	U+03BF	# GREEK SMALL LETTER OMICRON
+0x83CE	U+03C0	# GREEK SMALL LETTER PI
+0x83CF	U+03C1	# GREEK SMALL LETTER RHO
+0x83D0	U+03C3	# GREEK SMALL LETTER SIGMA
+0x83D1	U+03C4	# GREEK SMALL LETTER TAU
+0x83D2	U+03C5	# GREEK SMALL LETTER UPSILON
+0x83D3	U+03C6	# GREEK SMALL LETTER PHI
+0x83D4	U+03C7	# GREEK SMALL LETTER CHI
+0x83D5	U+03C8	# GREEK SMALL LETTER PSI
+0x83D6	U+03C9	# GREEK SMALL LETTER OMEGA
+0x83D7	U+03C2	# GREEK SMALL LETTER FINAL SIGMA	[2000]
+0x83D8	U+24F5	# DOUBLE CIRCLED DIGIT ONE	[2000]	[Unicode3.2]
+0x83D9	U+24F6	# DOUBLE CIRCLED DIGIT TWO	[2000]	[Unicode3.2]
+0x83DA	U+24F7	# DOUBLE CIRCLED DIGIT THREE	[2000]	[Unicode3.2]
+0x83DB	U+24F8	# DOUBLE CIRCLED DIGIT FOUR	[2000]	[Unicode3.2]
+0x83DC	U+24F9	# DOUBLE CIRCLED DIGIT FIVE	[2000]	[Unicode3.2]
+0x83DD	U+24FA	# DOUBLE CIRCLED DIGIT SIX	[2000]	[Unicode3.2]
+0x83DE	U+24FB	# DOUBLE CIRCLED DIGIT SEVEN	[2000]	[Unicode3.2]
+0x83DF	U+24FC	# DOUBLE CIRCLED DIGIT EIGHT	[2000]	[Unicode3.2]
+0x83E0	U+24FD	# DOUBLE CIRCLED DIGIT NINE	[2000]	[Unicode3.2]
+0x83E1	U+24FE	# DOUBLE CIRCLED NUMBER TEN	[2000]	[Unicode3.2]
+0x83E2	U+2616	# WHITE SHOGI PIECE	[2000]	[Unicode3.2]
+0x83E3	U+2617	# BLACK SHOGI PIECE	[2000]	[Unicode3.2]
+0x83E4	U+3020	# POSTAL MARK FACE	[2000]
+0x83E5	U+260E	# BLACK TELEPHONE	[2000]
+0x83E6	U+2600	# BLACK SUN WITH RAYS	[2000]
+0x83E7	U+2601	# CLOUD	[2000]
+0x83E8	U+2602	# UMBRELLA	[2000]
+0x83E9	U+2603	# SNOWMAN	[2000]
+0x83EA	U+2668	# HOT SPRINGS	[2000]
+0x83EB	U+25B1	# WHITE PARALLELOGRAM	[2000]
+0x83EC	U+31F0	# KATAKANA LETTER SMALL KU	[2000]	[Unicode3.2]
+0x83ED	U+31F1	# KATAKANA LETTER SMALL SI	[2000]	[Unicode3.2]
+0x83EE	U+31F2	# KATAKANA LETTER SMALL SU	[2000]	[Unicode3.2]
+0x83EF	U+31F3	# KATAKANA LETTER SMALL TO	[2000]	[Unicode3.2]
+0x83F0	U+31F4	# KATAKANA LETTER SMALL NU	[2000]	[Unicode3.2]
+0x83F1	U+31F5	# KATAKANA LETTER SMALL HA	[2000]	[Unicode3.2]
+0x83F2	U+31F6	# KATAKANA LETTER SMALL HI	[2000]	[Unicode3.2]
+0x83F3	U+31F7	# KATAKANA LETTER SMALL HU	[2000]	[Unicode3.2]
+0x83F4	U+31F8	# KATAKANA LETTER SMALL HE	[2000]	[Unicode3.2]
+0x83F5	U+31F9	# KATAKANA LETTER SMALL HO	[2000]	[Unicode3.2]
+0x83F6	U+31F7+309A	# 	[2000]
+0x83F7	U+31FA	# KATAKANA LETTER SMALL MU	[2000]	[Unicode3.2]
+0x83F8	U+31FB	# KATAKANA LETTER SMALL RA	[2000]	[Unicode3.2]
+0x83F9	U+31FC	# KATAKANA LETTER SMALL RI	[2000]	[Unicode3.2]
+0x83FA	U+31FD	# KATAKANA LETTER SMALL RU	[2000]	[Unicode3.2]
+0x83FB	U+31FE	# KATAKANA LETTER SMALL RE	[2000]	[Unicode3.2]
+0x83FC	U+31FF	# KATAKANA LETTER SMALL RO	[2000]	[Unicode3.2]
+0x8440	U+0410	# CYRILLIC CAPITAL LETTER A
+0x8441	U+0411	# CYRILLIC CAPITAL LETTER BE
+0x8442	U+0412	# CYRILLIC CAPITAL LETTER VE
+0x8443	U+0413	# CYRILLIC CAPITAL LETTER GHE
+0x8444	U+0414	# CYRILLIC CAPITAL LETTER DE
+0x8445	U+0415	# CYRILLIC CAPITAL LETTER IE
+0x8446	U+0401	# CYRILLIC CAPITAL LETTER IO
+0x8447	U+0416	# CYRILLIC CAPITAL LETTER ZHE
+0x8448	U+0417	# CYRILLIC CAPITAL LETTER ZE
+0x8449	U+0418	# CYRILLIC CAPITAL LETTER I
+0x844A	U+0419	# CYRILLIC CAPITAL LETTER SHORT I
+0x844B	U+041A	# CYRILLIC CAPITAL LETTER KA
+0x844C	U+041B	# CYRILLIC CAPITAL LETTER EL
+0x844D	U+041C	# CYRILLIC CAPITAL LETTER EM
+0x844E	U+041D	# CYRILLIC CAPITAL LETTER EN
+0x844F	U+041E	# CYRILLIC CAPITAL LETTER O
+0x8450	U+041F	# CYRILLIC CAPITAL LETTER PE
+0x8451	U+0420	# CYRILLIC CAPITAL LETTER ER
+0x8452	U+0421	# CYRILLIC CAPITAL LETTER ES
+0x8453	U+0422	# CYRILLIC CAPITAL LETTER TE
+0x8454	U+0423	# CYRILLIC CAPITAL LETTER U
+0x8455	U+0424	# CYRILLIC CAPITAL LETTER EF
+0x8456	U+0425	# CYRILLIC CAPITAL LETTER HA
+0x8457	U+0426	# CYRILLIC CAPITAL LETTER TSE
+0x8458	U+0427	# CYRILLIC CAPITAL LETTER CHE
+0x8459	U+0428	# CYRILLIC CAPITAL LETTER SHA
+0x845A	U+0429	# CYRILLIC CAPITAL LETTER SHCHA
+0x845B	U+042A	# CYRILLIC CAPITAL LETTER HARD SIGN
+0x845C	U+042B	# CYRILLIC CAPITAL LETTER YERU
+0x845D	U+042C	# CYRILLIC CAPITAL LETTER SOFT SIGN
+0x845E	U+042D	# CYRILLIC CAPITAL LETTER E
+0x845F	U+042E	# CYRILLIC CAPITAL LETTER YU
+0x8460	U+042F	# CYRILLIC CAPITAL LETTER YA
+0x8461	U+23BE	# DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT	[2000]	[Unicode3.2]
+0x8462	U+23BF	# DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT	[2000]	[Unicode3.2]
+0x8463	U+23C0	# DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8464	U+23C1	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8465	U+23C2	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8466	U+23C3	# DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8467	U+23C4	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8468	U+23C5	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8469	U+23C6	# DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE	[2000]	[Unicode3.2]
+0x846A	U+23C7	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE	[2000]	[Unicode3.2]
+0x846B	U+23C8	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE	[2000]	[Unicode3.2]
+0x846C	U+23C9	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL	[2000]	[Unicode3.2]
+0x846D	U+23CA	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL	[2000]	[Unicode3.2]
+0x846E	U+23CB	# DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT	[2000]	[Unicode3.2]
+0x846F	U+23CC	# DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT	[2000]	[Unicode3.2]
+0x8470	U+0430	# CYRILLIC SMALL LETTER A
+0x8471	U+0431	# CYRILLIC SMALL LETTER BE
+0x8472	U+0432	# CYRILLIC SMALL LETTER VE
+0x8473	U+0433	# CYRILLIC SMALL LETTER GHE
+0x8474	U+0434	# CYRILLIC SMALL LETTER DE
+0x8475	U+0435	# CYRILLIC SMALL LETTER IE
+0x8476	U+0451	# CYRILLIC SMALL LETTER IO
+0x8477	U+0436	# CYRILLIC SMALL LETTER ZHE
+0x8478	U+0437	# CYRILLIC SMALL LETTER ZE
+0x8479	U+0438	# CYRILLIC SMALL LETTER I
+0x847A	U+0439	# CYRILLIC SMALL LETTER SHORT I
+0x847B	U+043A	# CYRILLIC SMALL LETTER KA
+0x847C	U+043B	# CYRILLIC SMALL LETTER EL
+0x847D	U+043C	# CYRILLIC SMALL LETTER EM
+0x847E	U+043D	# CYRILLIC SMALL LETTER EN
+0x8480	U+043E	# CYRILLIC SMALL LETTER O
+0x8481	U+043F	# CYRILLIC SMALL LETTER PE
+0x8482	U+0440	# CYRILLIC SMALL LETTER ER
+0x8483	U+0441	# CYRILLIC SMALL LETTER ES
+0x8484	U+0442	# CYRILLIC SMALL LETTER TE
+0x8485	U+0443	# CYRILLIC SMALL LETTER U
+0x8486	U+0444	# CYRILLIC SMALL LETTER EF
+0x8487	U+0445	# CYRILLIC SMALL LETTER HA
+0x8488	U+0446	# CYRILLIC SMALL LETTER TSE
+0x8489	U+0447	# CYRILLIC SMALL LETTER CHE
+0x848A	U+0448	# CYRILLIC SMALL LETTER SHA
+0x848B	U+0449	# CYRILLIC SMALL LETTER SHCHA
+0x848C	U+044A	# CYRILLIC SMALL LETTER HARD SIGN
+0x848D	U+044B	# CYRILLIC SMALL LETTER YERU
+0x848E	U+044C	# CYRILLIC SMALL LETTER SOFT SIGN
+0x848F	U+044D	# CYRILLIC SMALL LETTER E
+0x8490	U+044E	# CYRILLIC SMALL LETTER YU
+0x8491	U+044F	# CYRILLIC SMALL LETTER YA
+0x8492	U+30F7	# KATAKANA LETTER VA	[2000]
+0x8493	U+30F8	# KATAKANA LETTER VI	[2000]
+0x8494	U+30F9	# KATAKANA LETTER VE	[2000]
+0x8495	U+30FA	# KATAKANA LETTER VO	[2000]
+0x8496	U+22DA	# LESS-THAN EQUAL TO OR GREATER-THAN	[2000]
+0x8497	U+22DB	# GREATER-THAN EQUAL TO OR LESS-THAN	[2000]
+0x8498	U+2153	# VULGAR FRACTION ONE THIRD	[2000]
+0x8499	U+2154	# VULGAR FRACTION TWO THIRDS	[2000]
+0x849A	U+2155	# VULGAR FRACTION ONE FIFTH	[2000]
+0x849B	U+2713	# CHECK MARK	[2000]
+0x849C	U+2318	# PLACE OF INTEREST SIGN	[2000]
+0x849D	U+2423	# OPEN BOX	[2000]
+0x849E	U+23CE	# RETURN SYMBOL	[2000]	[Unicode3.2]
+0x849F	U+2500	# BOX DRAWINGS LIGHT HORIZONTAL	[1983]
+0x84A0	U+2502	# BOX DRAWINGS LIGHT VERTICAL	[1983]
+0x84A1	U+250C	# BOX DRAWINGS LIGHT DOWN AND RIGHT	[1983]
+0x84A2	U+2510	# BOX DRAWINGS LIGHT DOWN AND LEFT	[1983]
+0x84A3	U+2518	# BOX DRAWINGS LIGHT UP AND LEFT	[1983]
+0x84A4	U+2514	# BOX DRAWINGS LIGHT UP AND RIGHT	[1983]
+0x84A5	U+251C	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT	[1983]
+0x84A6	U+252C	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL	[1983]
+0x84A7	U+2524	# BOX DRAWINGS LIGHT VERTICAL AND LEFT	[1983]
+0x84A8	U+2534	# BOX DRAWINGS LIGHT UP AND HORIZONTAL	[1983]
+0x84A9	U+253C	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL	[1983]
+0x84AA	U+2501	# BOX DRAWINGS HEAVY HORIZONTAL	[1983]
+0x84AB	U+2503	# BOX DRAWINGS HEAVY VERTICAL	[1983]
+0x84AC	U+250F	# BOX DRAWINGS HEAVY DOWN AND RIGHT	[1983]
+0x84AD	U+2513	# BOX DRAWINGS HEAVY DOWN AND LEFT	[1983]
+0x84AE	U+251B	# BOX DRAWINGS HEAVY UP AND LEFT	[1983]
+0x84AF	U+2517	# BOX DRAWINGS HEAVY UP AND RIGHT	[1983]
+0x84B0	U+2523	# BOX DRAWINGS HEAVY VERTICAL AND RIGHT	[1983]
+0x84B1	U+2533	# BOX DRAWINGS HEAVY DOWN AND HORIZONTAL	[1983]
+0x84B2	U+252B	# BOX DRAWINGS HEAVY VERTICAL AND LEFT	[1983]
+0x84B3	U+253B	# BOX DRAWINGS HEAVY UP AND HORIZONTAL	[1983]
+0x84B4	U+254B	# BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL	[1983]
+0x84B5	U+2520	# BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT	[1983]
+0x84B6	U+252F	# BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84B7	U+2528	# BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT	[1983]
+0x84B8	U+2537	# BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84B9	U+253F	# BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84BA	U+251D	# BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY	[1983]
+0x84BB	U+2530	# BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BC	U+2525	# BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY	[1983]
+0x84BD	U+2538	# BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BE	U+2542	# BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BF	U+3251	# CIRCLED NUMBER TWENTY ONE	[2000]	[Unicode3.2]
+0x84C0	U+3252	# CIRCLED NUMBER TWENTY TWO	[2000]	[Unicode3.2]
+0x84C1	U+3253	# CIRCLED NUMBER TWENTY THREE	[2000]	[Unicode3.2]
+0x84C2	U+3254	# CIRCLED NUMBER TWENTY FOUR	[2000]	[Unicode3.2]
+0x84C3	U+3255	# CIRCLED NUMBER TWENTY FIVE	[2000]	[Unicode3.2]
+0x84C4	U+3256	# CIRCLED NUMBER TWENTY SIX	[2000]	[Unicode3.2]
+0x84C5	U+3257	# CIRCLED NUMBER TWENTY SEVEN	[2000]	[Unicode3.2]
+0x84C6	U+3258	# CIRCLED NUMBER TWENTY EIGHT	[2000]	[Unicode3.2]
+0x84C7	U+3259	# CIRCLED NUMBER TWENTY NINE	[2000]	[Unicode3.2]
+0x84C8	U+325A	# CIRCLED NUMBER THIRTY	[2000]	[Unicode3.2]
+0x84C9	U+325B	# CIRCLED NUMBER THIRTY ONE	[2000]	[Unicode3.2]
+0x84CA	U+325C	# CIRCLED NUMBER THIRTY TWO	[2000]	[Unicode3.2]
+0x84CB	U+325D	# CIRCLED NUMBER THIRTY THREE	[2000]	[Unicode3.2]
+0x84CC	U+325E	# CIRCLED NUMBER THIRTY FOUR	[2000]	[Unicode3.2]
+0x84CD	U+325F	# CIRCLED NUMBER THIRTY FIVE	[2000]	[Unicode3.2]
+0x84CE	U+32B1	# CIRCLED NUMBER THIRTY SIX	[2000]	[Unicode3.2]
+0x84CF	U+32B2	# CIRCLED NUMBER THIRTY SEVEN	[2000]	[Unicode3.2]
+0x84D0	U+32B3	# CIRCLED NUMBER THIRTY EIGHT	[2000]	[Unicode3.2]
+0x84D1	U+32B4	# CIRCLED NUMBER THIRTY NINE	[2000]	[Unicode3.2]
+0x84D2	U+32B5	# CIRCLED NUMBER FORTY	[2000]	[Unicode3.2]
+0x84D3	U+32B6	# CIRCLED NUMBER FORTY ONE	[2000]	[Unicode3.2]
+0x84D4	U+32B7	# CIRCLED NUMBER FORTY TWO	[2000]	[Unicode3.2]
+0x84D5	U+32B8	# CIRCLED NUMBER FORTY THREE	[2000]	[Unicode3.2]
+0x84D6	U+32B9	# CIRCLED NUMBER FORTY FOUR	[2000]	[Unicode3.2]
+0x84D7	U+32BA	# CIRCLED NUMBER FORTY FIVE	[2000]	[Unicode3.2]
+0x84D8	U+32BB	# CIRCLED NUMBER FORTY SIX	[2000]	[Unicode3.2]
+0x84D9	U+32BC	# CIRCLED NUMBER FORTY SEVEN	[2000]	[Unicode3.2]
+0x84DA	U+32BD	# CIRCLED NUMBER FORTY EIGHT	[2000]	[Unicode3.2]
+0x84DB	U+32BE	# CIRCLED NUMBER FORTY NINE	[2000]	[Unicode3.2]
+0x84DC	U+32BF	# CIRCLED NUMBER FIFTY	[2000]	[Unicode3.2]
+0x84DD		# <reserved>
+0x84DE		# <reserved>
+0x84DF		# <reserved>
+0x84E0		# <reserved>
+0x84E1		# <reserved>
+0x84E2		# <reserved>
+0x84E3		# <reserved>
+0x84E4		# <reserved>
+0x84E5	U+25D0	# CIRCLE WITH LEFT HALF BLACK	[2000]
+0x84E6	U+25D1	# CIRCLE WITH RIGHT HALF BLACK	[2000]
+0x84E7	U+25D2	# CIRCLE WITH LOWER HALF BLACK	[2000]
+0x84E8	U+25D3	# CIRCLE WITH UPPER HALF BLACK	[2000]
+0x84E9	U+203C	# DOUBLE EXCLAMATION MARK	[2000]
+0x84EA	U+2047	# DOUBLE QUESTION MARK	[2000]	[Unicode3.2]
+0x84EB	U+2048	# QUESTION EXCLAMATION MARK	[2000]
+0x84EC	U+2049	# EXCLAMATION QUESTION MARK	[2000]
+0x84ED	U+01CD	# LATIN CAPITAL LETTER A WITH CARON	[2000]
+0x84EE	U+01CE	# LATIN SMALL LETTER A WITH CARON	[2000]
+0x84EF	U+01D0	# LATIN SMALL LETTER I WITH CARON	[2000]
+0x84F0	U+1E3E	# LATIN CAPITAL LETTER M WITH ACUTE	[2000]
+0x84F1	U+1E3F	# LATIN SMALL LETTER M WITH ACUTE	[2000]
+0x84F2	U+01F8	# LATIN CAPITAL LETTER N WITH GRAVE	[2000]
+0x84F3	U+01F9	# LATIN SMALL LETTER N WITH GRAVE	[2000]
+0x84F4	U+01D1	# LATIN CAPITAL LETTER O WITH CARON	[2000]
+0x84F5	U+01D2	# LATIN SMALL LETTER O WITH CARON	[2000]
+0x84F6	U+01D4	# LATIN SMALL LETTER U WITH CARON	[2000]
+0x84F7	U+01D6	# LATIN SMALL LETTER U WITH DIAERESIS AND MACRON	[2000]
+0x84F8	U+01D8	# LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE	[2000]
+0x84F9	U+01DA	# LATIN SMALL LETTER U WITH DIAERESIS AND CARON	[2000]
+0x84FA	U+01DC	# LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE	[2000]
+0x84FB		# <reserved>
+0x84FC		# <reserved>
+0x8540	U+20AC	# EURO SIGN	[2000]
+0x8541	U+00A0	# NO-BREAK SPACE	[2000]
+0x8542	U+00A1	# INVERTED EXCLAMATION MARK	[2000]
+0x8543	U+00A4	# CURRENCY SIGN	[2000]
+0x8544	U+00A6	# BROKEN BAR	[2000]
+0x8545	U+00A9	# COPYRIGHT SIGN	[2000]
+0x8546	U+00AA	# FEMININE ORDINAL INDICATOR	[2000]
+0x8547	U+00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 	[2000]
+0x8548	U+00AD	# SOFT HYPHEN	[2000]
+0x8549	U+00AE	# REGISTERED SIGN	[2000]
+0x854A	U+00AF	# MACRON	[2000]
+0x854B	U+00B2	# SUPERSCRIPT TWO	[2000]
+0x854C	U+00B3	# SUPERSCRIPT THREE	[2000]
+0x854D	U+00B7	# MIDDLE DOT	[2000]
+0x854E	U+00B8	# CEDILLA	[2000]
+0x854F	U+00B9	# SUPERSCRIPT ONE	[2000]
+0x8550	U+00BA	# MASCULINE ORDINAL INDICATOR	[2000]
+0x8551	U+00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 	[2000]
+0x8552	U+00BC	# VULGAR FRACTION ONE QUARTER	[2000]
+0x8553	U+00BD	# VULGAR FRACTION ONE HALF	[2000]
+0x8554	U+00BE	# VULGAR FRACTION THREE QUARTERS	[2000]
+0x8555	U+00BF	# INVERTED QUESTION MARK	[2000]
+0x8556	U+00C0	# LATIN CAPITAL LETTER A WITH GRAVE	[2000]
+0x8557	U+00C1	# LATIN CAPITAL LETTER A WITH ACUTE	[2000]
+0x8558	U+00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX	[2000]
+0x8559	U+00C3	# LATIN CAPITAL LETTER A WITH TILDE	[2000]
+0x855A	U+00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS	[2000]
+0x855B	U+00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE	[2000]
+0x855C	U+00C6	# LATIN CAPITAL LETTER AE 	[2000]
+0x855D	U+00C7	# LATIN CAPITAL LETTER C WITH CEDILLA	[2000]
+0x855E	U+00C8	# LATIN CAPITAL LETTER E WITH GRAVE	[2000]
+0x855F	U+00C9	# LATIN CAPITAL LETTER E WITH ACUTE	[2000]
+0x8560	U+00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX	[2000]
+0x8561	U+00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS	[2000]
+0x8562	U+00CC	# LATIN CAPITAL LETTER I WITH GRAVE	[2000]
+0x8563	U+00CD	# LATIN CAPITAL LETTER I WITH ACUTE	[2000]
+0x8564	U+00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX	[2000]
+0x8565	U+00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS	[2000]
+0x8566	U+00D0	# LATIN CAPITAL LETTER ETH 	[2000]
+0x8567	U+00D1	# LATIN CAPITAL LETTER N WITH TILDE	[2000]
+0x8568	U+00D2	# LATIN CAPITAL LETTER O WITH GRAVE	[2000]
+0x8569	U+00D3	# LATIN CAPITAL LETTER O WITH ACUTE	[2000]
+0x856A	U+00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX	[2000]
+0x856B	U+00D5	# LATIN CAPITAL LETTER O WITH TILDE	[2000]
+0x856C	U+00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS	[2000]
+0x856D	U+00D8	# LATIN CAPITAL LETTER O WITH STROKE	[2000]
+0x856E	U+00D9	# LATIN CAPITAL LETTER U WITH GRAVE	[2000]
+0x856F	U+00DA	# LATIN CAPITAL LETTER U WITH ACUTE	[2000]
+0x8570	U+00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX	[2000]
+0x8571	U+00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS	[2000]
+0x8572	U+00DD	# LATIN CAPITAL LETTER Y WITH ACUTE	[2000]
+0x8573	U+00DE	# LATIN CAPITAL LETTER THORN 	[2000]
+0x8574	U+00DF	# LATIN SMALL LETTER SHARP S 	[2000]
+0x8575	U+00E0	# LATIN SMALL LETTER A WITH GRAVE	[2000]
+0x8576	U+00E1	# LATIN SMALL LETTER A WITH ACUTE	[2000]
+0x8577	U+00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX	[2000]
+0x8578	U+00E3	# LATIN SMALL LETTER A WITH TILDE	[2000]
+0x8579	U+00E4	# LATIN SMALL LETTER A WITH DIAERESIS	[2000]
+0x857A	U+00E5	# LATIN SMALL LETTER A WITH RING ABOVE	[2000]
+0x857B	U+00E6	# LATIN SMALL LETTER AE 	[2000]
+0x857C	U+00E7	# LATIN SMALL LETTER C WITH CEDILLA	[2000]
+0x857D	U+00E8	# LATIN SMALL LETTER E WITH GRAVE	[2000]
+0x857E	U+00E9	# LATIN SMALL LETTER E WITH ACUTE	[2000]
+0x8580	U+00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX	[2000]
+0x8581	U+00EB	# LATIN SMALL LETTER E WITH DIAERESIS	[2000]
+0x8582	U+00EC	# LATIN SMALL LETTER I WITH GRAVE	[2000]
+0x8583	U+00ED	# LATIN SMALL LETTER I WITH ACUTE	[2000]
+0x8584	U+00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX	[2000]
+0x8585	U+00EF	# LATIN SMALL LETTER I WITH DIAERESIS	[2000]
+0x8586	U+00F0	# LATIN SMALL LETTER ETH 	[2000]
+0x8587	U+00F1	# LATIN SMALL LETTER N WITH TILDE	[2000]
+0x8588	U+00F2	# LATIN SMALL LETTER O WITH GRAVE	[2000]
+0x8589	U+00F3	# LATIN SMALL LETTER O WITH ACUTE	[2000]
+0x858A	U+00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX	[2000]
+0x858B	U+00F5	# LATIN SMALL LETTER O WITH TILDE	[2000]
+0x858C	U+00F6	# LATIN SMALL LETTER O WITH DIAERESIS	[2000]
+0x858D	U+00F8	# LATIN SMALL LETTER O WITH STROKE	[2000]
+0x858E	U+00F9	# LATIN SMALL LETTER U WITH GRAVE	[2000]
+0x858F	U+00FA	# LATIN SMALL LETTER U WITH ACUTE	[2000]
+0x8590	U+00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX	[2000]
+0x8591	U+00FC	# LATIN SMALL LETTER U WITH DIAERESIS	[2000]
+0x8592	U+00FD	# LATIN SMALL LETTER Y WITH ACUTE	[2000]
+0x8593	U+00FE	# LATIN SMALL LETTER THORN 	[2000]
+0x8594	U+00FF	# LATIN SMALL LETTER Y WITH DIAERESIS	[2000]
+0x8595	U+0100	# LATIN CAPITAL LETTER A WITH MACRON	[2000]
+0x8596	U+012A	# LATIN CAPITAL LETTER I WITH MACRON	[2000]
+0x8597	U+016A	# LATIN CAPITAL LETTER U WITH MACRON	[2000]
+0x8598	U+0112	# LATIN CAPITAL LETTER E WITH MACRON	[2000]
+0x8599	U+014C	# LATIN CAPITAL LETTER O WITH MACRON	[2000]
+0x859A	U+0101	# LATIN SMALL LETTER A WITH MACRON	[2000]
+0x859B	U+012B	# LATIN SMALL LETTER I WITH MACRON	[2000]
+0x859C	U+016B	# LATIN SMALL LETTER U WITH MACRON	[2000]
+0x859D	U+0113	# LATIN SMALL LETTER E WITH MACRON	[2000]
+0x859E	U+014D	# LATIN SMALL LETTER O WITH MACRON	[2000]
+0x859F	U+0104	# LATIN CAPITAL LETTER A WITH OGONEK	[2000]
+0x85A0	U+02D8	# BREVE	[2000]
+0x85A1	U+0141	# LATIN CAPITAL LETTER L WITH STROKE	[2000]
+0x85A2	U+013D	# LATIN CAPITAL LETTER L WITH CARON	[2000]
+0x85A3	U+015A	# LATIN CAPITAL LETTER S WITH ACUTE	[2000]
+0x85A4	U+0160	# LATIN CAPITAL LETTER S WITH CARON	[2000]
+0x85A5	U+015E	# LATIN CAPITAL LETTER S WITH CEDILLA 	[2000]
+0x85A6	U+0164	# LATIN CAPITAL LETTER T WITH CARON	[2000]
+0x85A7	U+0179	# LATIN CAPITAL LETTER Z WITH ACUTE	[2000]
+0x85A8	U+017D	# LATIN CAPITAL LETTER Z WITH CARON	[2000]
+0x85A9	U+017B	# LATIN CAPITAL LETTER Z WITH DOT ABOVE	[2000]
+0x85AA	U+0105	# LATIN SMALL LETTER A WITH OGONEK	[2000]
+0x85AB	U+02DB	# OGONEK	[2000]
+0x85AC	U+0142	# LATIN SMALL LETTER L WITH STROKE	[2000]
+0x85AD	U+013E	# LATIN SMALL LETTER L WITH CARON	[2000]
+0x85AE	U+015B	# LATIN SMALL LETTER S WITH ACUTE	[2000]
+0x85AF	U+02C7	# CARON 	[2000]
+0x85B0	U+0161	# LATIN SMALL LETTER S WITH CARON	[2000]
+0x85B1	U+015F	# LATIN SMALL LETTER S WITH CEDILLA 	[2000]
+0x85B2	U+0165	# LATIN SMALL LETTER T WITH CARON	[2000]
+0x85B3	U+017A	# LATIN SMALL LETTER Z WITH ACUTE	[2000]
+0x85B4	U+02DD	# DOUBLE ACUTE ACCENT	[2000]
+0x85B5	U+017E	# LATIN SMALL LETTER Z WITH CARON	[2000]
+0x85B6	U+017C	# LATIN SMALL LETTER Z WITH DOT ABOVE	[2000]
+0x85B7	U+0154	# LATIN CAPITAL LETTER R WITH ACUTE	[2000]
+0x85B8	U+0102	# LATIN CAPITAL LETTER A WITH BREVE	[2000]
+0x85B9	U+0139	# LATIN CAPITAL LETTER L WITH ACUTE	[2000]
+0x85BA	U+0106	# LATIN CAPITAL LETTER C WITH ACUTE	[2000]
+0x85BB	U+010C	# LATIN CAPITAL LETTER C WITH CARON	[2000]
+0x85BC	U+0118	# LATIN CAPITAL LETTER E WITH OGONEK	[2000]
+0x85BD	U+011A	# LATIN CAPITAL LETTER E WITH CARON	[2000]
+0x85BE	U+010E	# LATIN CAPITAL LETTER D WITH CARON	[2000]
+0x85BF	U+0143	# LATIN CAPITAL LETTER N WITH ACUTE	[2000]
+0x85C0	U+0147	# LATIN CAPITAL LETTER N WITH CARON	[2000]
+0x85C1	U+0150	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE	[2000]
+0x85C2	U+0158	# LATIN CAPITAL LETTER R WITH CARON	[2000]
+0x85C3	U+016E	# LATIN CAPITAL LETTER U WITH RING ABOVE	[2000]
+0x85C4	U+0170	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE	[2000]
+0x85C5	U+0162	# LATIN CAPITAL LETTER T WITH CEDILLA 	[2000]
+0x85C6	U+0155	# LATIN SMALL LETTER R WITH ACUTE	[2000]
+0x85C7	U+0103	# LATIN SMALL LETTER A WITH BREVE	[2000]
+0x85C8	U+013A	# LATIN SMALL LETTER L WITH ACUTE	[2000]
+0x85C9	U+0107	# LATIN SMALL LETTER C WITH ACUTE	[2000]
+0x85CA	U+010D	# LATIN SMALL LETTER C WITH CARON	[2000]
+0x85CB	U+0119	# LATIN SMALL LETTER E WITH OGONEK	[2000]
+0x85CC	U+011B	# LATIN SMALL LETTER E WITH CARON	[2000]
+0x85CD	U+010F	# LATIN SMALL LETTER D WITH CARON	[2000]
+0x85CE	U+0111	# LATIN SMALL LETTER D WITH STROKE	[2000]
+0x85CF	U+0144	# LATIN SMALL LETTER N WITH ACUTE	[2000]
+0x85D0	U+0148	# LATIN SMALL LETTER N WITH CARON	[2000]
+0x85D1	U+0151	# LATIN SMALL LETTER O WITH DOUBLE ACUTE	[2000]
+0x85D2	U+0159	# LATIN SMALL LETTER R WITH CARON	[2000]
+0x85D3	U+016F	# LATIN SMALL LETTER U WITH RING ABOVE	[2000]
+0x85D4	U+0171	# LATIN SMALL LETTER U WITH DOUBLE ACUTE	[2000]
+0x85D5	U+0163	# LATIN SMALL LETTER T WITH CEDILLA 	[2000]
+0x85D6	U+02D9	# DOT ABOVE 	[2000]
+0x85D7	U+0108	# LATIN CAPITAL LETTER C WITH CIRCUMFLEX	[2000]
+0x85D8	U+011C	# LATIN CAPITAL LETTER G WITH CIRCUMFLEX	[2000]
+0x85D9	U+0124	# LATIN CAPITAL LETTER H WITH CIRCUMFLEX	[2000]
+0x85DA	U+0134	# LATIN CAPITAL LETTER J WITH CIRCUMFLEX	[2000]
+0x85DB	U+015C	# LATIN CAPITAL LETTER S WITH CIRCUMFLEX	[2000]
+0x85DC	U+016C	# LATIN CAPITAL LETTER U WITH BREVE	[2000]
+0x85DD	U+0109	# LATIN SMALL LETTER C WITH CIRCUMFLEX	[2000]
+0x85DE	U+011D	# LATIN SMALL LETTER G WITH CIRCUMFLEX	[2000]
+0x85DF	U+0125	# LATIN SMALL LETTER H WITH CIRCUMFLEX	[2000]
+0x85E0	U+0135	# LATIN SMALL LETTER J WITH CIRCUMFLEX	[2000]
+0x85E1	U+015D	# LATIN SMALL LETTER S WITH CIRCUMFLEX	[2000]
+0x85E2	U+016D	# LATIN SMALL LETTER U WITH BREVE	[2000]
+0x85E3	U+0271	# LATIN SMALL LETTER M WITH HOOK	[2000]
+0x85E4	U+028B	# LATIN SMALL LETTER V WITH HOOK	[2000]
+0x85E5	U+027E	# LATIN SMALL LETTER R WITH FISHHOOK	[2000]
+0x85E6	U+0283	# LATIN SMALL LETTER ESH	[2000]
+0x85E7	U+0292	# LATIN SMALL LETTER EZH	[2000]
+0x85E8	U+026C	# LATIN SMALL LETTER L WITH BELT	[2000]
+0x85E9	U+026E	# LATIN SMALL LETTER LEZH	[2000]
+0x85EA	U+0279	# LATIN SMALL LETTER TURNED R	[2000]
+0x85EB	U+0288	# LATIN SMALL LETTER T WITH RETROFLEX HOOK	[2000]
+0x85EC	U+0256	# LATIN SMALL LETTER D WITH TAIL	[2000]
+0x85ED	U+0273	# LATIN SMALL LETTER N WITH RETROFLEX HOOK	[2000]
+0x85EE	U+027D	# LATIN SMALL LETTER R WITH TAIL	[2000]
+0x85EF	U+0282	# LATIN SMALL LETTER S WITH HOOK	[2000]
+0x85F0	U+0290	# LATIN SMALL LETTER Z WITH RETROFLEX HOOK	[2000]
+0x85F1	U+027B	# LATIN SMALL LETTER TURNED R WITH HOOK	[2000]
+0x85F2	U+026D	# LATIN SMALL LETTER L WITH RETROFLEX HOOK	[2000]
+0x85F3	U+025F	# LATIN SMALL LETTER DOTLESS J WITH STROKE	[2000]
+0x85F4	U+0272	# LATIN SMALL LETTER N WITH LEFT HOOK	[2000]
+0x85F5	U+029D	# LATIN SMALL LETTER J WITH CROSSED-TAIL	[2000]
+0x85F6	U+028E	# LATIN SMALL LETTER TURNED Y	[2000]
+0x85F7	U+0261	# LATIN SMALL LETTER SCRIPT G	[2000]
+0x85F8	U+014B	# LATIN SMALL LETTER ENG 	[2000]
+0x85F9	U+0270	# LATIN SMALL LETTER TURNED M WITH LONG LEG	[2000]
+0x85FA	U+0281	# LATIN LETTER SMALL CAPITAL INVERTED R	[2000]
+0x85FB	U+0127	# LATIN SMALL LETTER H WITH STROKE	[2000]
+0x85FC	U+0295	# LATIN LETTER PHARYNGEAL VOICED FRICATIVE	[2000]
+0x8640	U+0294	# LATIN LETTER GLOTTAL STOP	[2000]
+0x8641	U+0266	# LATIN SMALL LETTER H WITH HOOK	[2000]
+0x8642	U+0298	# LATIN LETTER BILABIAL CLICK	[2000]
+0x8643	U+01C2	# LATIN LETTER ALVEOLAR CLICK	[2000]
+0x8644	U+0253	# LATIN SMALL LETTER B WITH HOOK	[2000]
+0x8645	U+0257	# LATIN SMALL LETTER D WITH HOOK	[2000]
+0x8646	U+0284	# LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK	[2000]
+0x8647	U+0260	# LATIN SMALL LETTER G WITH HOOK	[2000]
+0x8648	U+0193	# LATIN CAPITAL LETTER G WITH HOOK	[2000]
+0x8649	U+0153	# LATIN SMALL LIGATURE OE	[2000]
+0x864A	U+0152	# LATIN CAPITAL LIGATURE OE	[2000]
+0x864B	U+0268	# LATIN SMALL LETTER I WITH STROKE	[2000]
+0x864C	U+0289	# LATIN SMALL LETTER U BAR	[2000]
+0x864D	U+0258	# LATIN SMALL LETTER REVERSED E	[2000]
+0x864E	U+0275	# LATIN SMALL LETTER BARRED O	[2000]
+0x864F	U+0259	# LATIN SMALL LETTER SCHWA	[2000]
+0x8650	U+025C	# LATIN SMALL LETTER REVERSED OPEN E	[2000]
+0x8651	U+025E	# LATIN SMALL LETTER CLOSED REVERSED OPEN E	[2000]
+0x8652	U+0250	# LATIN SMALL LETTER TURNED A	[2000]
+0x8653	U+026F	# LATIN SMALL LETTER TURNED M	[2000]
+0x8654	U+028A	# LATIN SMALL LETTER UPSILON	[2000]
+0x8655	U+0264	# LATIN SMALL LETTER RAMS HORN	[2000]
+0x8656	U+028C	# LATIN SMALL LETTER TURNED V	[2000]
+0x8657	U+0254	# LATIN SMALL LETTER OPEN O	[2000]
+0x8658	U+0251	# LATIN SMALL LETTER ALPHA	[2000]
+0x8659	U+0252	# LATIN SMALL LETTER TURNED ALPHA	[2000]
+0x865A	U+028D	# LATIN SMALL LETTER TURNED W	[2000]
+0x865B	U+0265	# LATIN SMALL LETTER TURNED H	[2000]
+0x865C	U+02A2	# LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE	[2000]
+0x865D	U+02A1	# LATIN LETTER GLOTTAL STOP WITH STROKE	[2000]
+0x865E	U+0255	# LATIN SMALL LETTER C WITH CURL	[2000]
+0x865F	U+0291	# LATIN SMALL LETTER Z WITH CURL	[2000]
+0x8660	U+027A	# LATIN SMALL LETTER TURNED R WITH LONG LEG	[2000]
+0x8661	U+0267	# LATIN SMALL LETTER HENG WITH HOOK	[2000]
+0x8662	U+025A	# LATIN SMALL LETTER SCHWA WITH HOOK	[2000]
+0x8663	U+00E6+0300	# 	[2000]
+0x8664	U+01FD	# LATIN SMALL LETTER AE WITH ACUTE 	[2000]
+0x8665	U+1F70	# GREEK SMALL LETTER ALPHA WITH VARIA	[2000]
+0x8666	U+1F71	# GREEK SMALL LETTER ALPHA WITH OXIA	[2000]
+0x8667	U+0254+0300	# 	[2000]
+0x8668	U+0254+0301	# 	[2000]
+0x8669	U+028C+0300	# 	[2000]
+0x866A	U+028C+0301	# 	[2000]
+0x866B	U+0259+0300	# 	[2000]
+0x866C	U+0259+0301	# 	[2000]
+0x866D	U+025A+0300	# 	[2000]
+0x866E	U+025A+0301	# 	[2000]
+0x866F	U+1F72	# GREEK SMALL LETTER EPSILON WITH VARIA	[2000]
+0x8670	U+1F73	# GREEK SMALL LETTER EPSILON WITH OXIA	[2000]
+0x8671	U+0361	# COMBINING DOUBLE INVERTED BREVE	[2000]
+0x8672	U+02C8	# MODIFIER LETTER VERTICAL LINE	[2000]
+0x8673	U+02CC	# MODIFIER LETTER LOW VERTICAL LINE	[2000]
+0x8674	U+02D0	# MODIFIER LETTER TRIANGULAR COLON	[2000]
+0x8675	U+02D1	# MODIFIER LETTER HALF TRIANGULAR COLON	[2000]
+0x8676	U+0306	# COMBINING BREVE 	[2000]
+0x8677	U+203F	# UNDERTIE 	[2000]
+0x8678	U+030B	# COMBINING DOUBLE ACUTE ACCENT	[2000]
+0x8679	U+0301	# COMBINING ACUTE ACCENT 	[2000]
+0x867A	U+0304	# COMBINING MACRON	[2000]
+0x867B	U+0300	# COMBINING GRAVE ACCENT 	[2000]
+0x867C	U+030F	# COMBINING DOUBLE GRAVE ACCENT	[2000]
+0x867D	U+030C	# COMBINING CARON	[2000]
+0x867E	U+0302	# COMBINING CIRCUMFLEX ACCENT	[2000]
+0x8680	U+02E5	# MODIFIER LETTER EXTRA-HIGH TONE BAR	[2000]
+0x8681	U+02E6	# MODIFIER LETTER HIGH TONE BAR	[2000]
+0x8682	U+02E7	# MODIFIER LETTER MID TONE BAR	[2000]
+0x8683	U+02E8	# MODIFIER LETTER LOW TONE BAR	[2000]
+0x8684	U+02E9	# MODIFIER LETTER EXTRA-LOW TONE BAR	[2000]
+0x8685	U+02E9+02E5	# 	[2000]
+0x8686	U+02E5+02E9	# 	[2000]
+0x8687	U+0325	# COMBINING RING BELOW	[2000]
+0x8688	U+032C	# COMBINING CARON BELOW	[2000]
+0x8689	U+0339	# COMBINING RIGHT HALF RING BELOW	[2000]
+0x868A	U+031C	# COMBINING LEFT HALF RING BELOW	[2000]
+0x868B	U+031F	# COMBINING PLUS SIGN BELOW	[2000]
+0x868C	U+0320	# COMBINING MINUS SIGN BELOW	[2000]
+0x868D	U+0308	# COMBINING DIAERESIS 	[2000]
+0x868E	U+033D	# COMBINING X ABOVE	[2000]
+0x868F	U+0329	# COMBINING VERTICAL LINE BELOW	[2000]
+0x8690	U+032F	# COMBINING INVERTED BREVE BELOW	[2000]
+0x8691	U+02DE	# MODIFIER LETTER RHOTIC HOOK	[2000]
+0x8692	U+0324	# COMBINING DIAERESIS BELOW	[2000]
+0x8693	U+0330	# COMBINING TILDE BELOW	[2000]
+0x8694	U+033C	# COMBINING SEAGULL BELOW	[2000]
+0x8695	U+0334	# COMBINING TILDE OVERLAY	[2000]
+0x8696	U+031D	# COMBINING UP TACK BELOW	[2000]
+0x8697	U+031E	# COMBINING DOWN TACK BELOW	[2000]
+0x8698	U+0318	# COMBINING LEFT TACK BELOW	[2000]
+0x8699	U+0319	# COMBINING RIGHT TACK BELOW	[2000]
+0x869A	U+032A	# COMBINING BRIDGE BELOW	[2000]
+0x869B	U+033A	# COMBINING INVERTED BRIDGE BELOW	[2000]
+0x869C	U+033B	# COMBINING SQUARE BELOW	[2000]
+0x869D	U+0303	# COMBINING TILDE	[2000]
+0x869E	U+031A	# COMBINING LEFT ANGLE ABOVE	[2000]
+0x869F	U+2776	# DINGBAT NEGATIVE CIRCLED DIGIT ONE	[2000]
+0x86A0	U+2777	# DINGBAT NEGATIVE CIRCLED DIGIT TWO	[2000]
+0x86A1	U+2778	# DINGBAT NEGATIVE CIRCLED DIGIT THREE	[2000]
+0x86A2	U+2779	# DINGBAT NEGATIVE CIRCLED DIGIT FOUR	[2000]
+0x86A3	U+277A	# DINGBAT NEGATIVE CIRCLED DIGIT FIVE	[2000]
+0x86A4	U+277B	# DINGBAT NEGATIVE CIRCLED DIGIT SIX	[2000]
+0x86A5	U+277C	# DINGBAT NEGATIVE CIRCLED DIGIT SEVEN	[2000]
+0x86A6	U+277D	# DINGBAT NEGATIVE CIRCLED DIGIT EIGHT	[2000]
+0x86A7	U+277E	# DINGBAT NEGATIVE CIRCLED DIGIT NINE	[2000]
+0x86A8	U+277F	# DINGBAT NEGATIVE CIRCLED NUMBER TEN	[2000]
+0x86A9	U+24EB	# NEGATIVE CIRCLED NUMBER ELEVEN	[2000]	[Unicode3.2]
+0x86AA	U+24EC	# NEGATIVE CIRCLED NUMBER TWELVE	[2000]	[Unicode3.2]
+0x86AB	U+24ED	# NEGATIVE CIRCLED NUMBER THIRTEEN	[2000]	[Unicode3.2]
+0x86AC	U+24EE	# NEGATIVE CIRCLED NUMBER FOURTEEN	[2000]	[Unicode3.2]
+0x86AD	U+24EF	# NEGATIVE CIRCLED NUMBER FIFTEEN	[2000]	[Unicode3.2]
+0x86AE	U+24F0	# NEGATIVE CIRCLED NUMBER SIXTEEN	[2000]	[Unicode3.2]
+0x86AF	U+24F1	# NEGATIVE CIRCLED NUMBER SEVENTEEN	[2000]	[Unicode3.2]
+0x86B0	U+24F2	# NEGATIVE CIRCLED NUMBER EIGHTEEN	[2000]	[Unicode3.2]
+0x86B1	U+24F3	# NEGATIVE CIRCLED NUMBER NINETEEN	[2000]	[Unicode3.2]
+0x86B2	U+24F4	# NEGATIVE CIRCLED NUMBER TWENTY	[2000]	[Unicode3.2]
+0x86B3	U+2170	# SMALL ROMAN NUMERAL ONE	[2000]
+0x86B4	U+2171	# SMALL ROMAN NUMERAL TWO	[2000]
+0x86B5	U+2172	# SMALL ROMAN NUMERAL THREE	[2000]
+0x86B6	U+2173	# SMALL ROMAN NUMERAL FOUR	[2000]
+0x86B7	U+2174	# SMALL ROMAN NUMERAL FIVE	[2000]
+0x86B8	U+2175	# SMALL ROMAN NUMERAL SIX	[2000]
+0x86B9	U+2176	# SMALL ROMAN NUMERAL SEVEN	[2000]
+0x86BA	U+2177	# SMALL ROMAN NUMERAL EIGHT	[2000]
+0x86BB	U+2178	# SMALL ROMAN NUMERAL NINE	[2000]
+0x86BC	U+2179	# SMALL ROMAN NUMERAL TEN	[2000]
+0x86BD	U+217A	# SMALL ROMAN NUMERAL ELEVEN	[2000]
+0x86BE	U+217B	# SMALL ROMAN NUMERAL TWELVE	[2000]
+0x86BF	U+24D0	# CIRCLED LATIN SMALL LETTER A	[2000]
+0x86C0	U+24D1	# CIRCLED LATIN SMALL LETTER B	[2000]
+0x86C1	U+24D2	# CIRCLED LATIN SMALL LETTER C	[2000]
+0x86C2	U+24D3	# CIRCLED LATIN SMALL LETTER D	[2000]
+0x86C3	U+24D4	# CIRCLED LATIN SMALL LETTER E	[2000]
+0x86C4	U+24D5	# CIRCLED LATIN SMALL LETTER F	[2000]
+0x86C5	U+24D6	# CIRCLED LATIN SMALL LETTER G	[2000]
+0x86C6	U+24D7	# CIRCLED LATIN SMALL LETTER H	[2000]
+0x86C7	U+24D8	# CIRCLED LATIN SMALL LETTER I	[2000]
+0x86C8	U+24D9	# CIRCLED LATIN SMALL LETTER J	[2000]
+0x86C9	U+24DA	# CIRCLED LATIN SMALL LETTER K	[2000]
+0x86CA	U+24DB	# CIRCLED LATIN SMALL LETTER L	[2000]
+0x86CB	U+24DC	# CIRCLED LATIN SMALL LETTER M	[2000]
+0x86CC	U+24DD	# CIRCLED LATIN SMALL LETTER N	[2000]
+0x86CD	U+24DE	# CIRCLED LATIN SMALL LETTER O	[2000]
+0x86CE	U+24DF	# CIRCLED LATIN SMALL LETTER P	[2000]
+0x86CF	U+24E0	# CIRCLED LATIN SMALL LETTER Q	[2000]
+0x86D0	U+24E1	# CIRCLED LATIN SMALL LETTER R	[2000]
+0x86D1	U+24E2	# CIRCLED LATIN SMALL LETTER S	[2000]
+0x86D2	U+24E3	# CIRCLED LATIN SMALL LETTER T	[2000]
+0x86D3	U+24E4	# CIRCLED LATIN SMALL LETTER U	[2000]
+0x86D4	U+24E5	# CIRCLED LATIN SMALL LETTER V	[2000]
+0x86D5	U+24E6	# CIRCLED LATIN SMALL LETTER W	[2000]
+0x86D6	U+24E7	# CIRCLED LATIN SMALL LETTER X	[2000]
+0x86D7	U+24E8	# CIRCLED LATIN SMALL LETTER Y	[2000]
+0x86D8	U+24E9	# CIRCLED LATIN SMALL LETTER Z	[2000]
+0x86D9	U+32D0	# CIRCLED KATAKANA A	[2000]
+0x86DA	U+32D1	# CIRCLED KATAKANA I	[2000]
+0x86DB	U+32D2	# CIRCLED KATAKANA U	[2000]
+0x86DC	U+32D3	# CIRCLED KATAKANA E	[2000]
+0x86DD	U+32D4	# CIRCLED KATAKANA O	[2000]
+0x86DE	U+32D5	# CIRCLED KATAKANA KA	[2000]
+0x86DF	U+32D6	# CIRCLED KATAKANA KI	[2000]
+0x86E0	U+32D7	# CIRCLED KATAKANA KU	[2000]
+0x86E1	U+32D8	# CIRCLED KATAKANA KE	[2000]
+0x86E2	U+32D9	# CIRCLED KATAKANA KO	[2000]
+0x86E3	U+32DA	# CIRCLED KATAKANA SA	[2000]
+0x86E4	U+32DB	# CIRCLED KATAKANA SI	[2000]
+0x86E5	U+32DC	# CIRCLED KATAKANA SU	[2000]
+0x86E6	U+32DD	# CIRCLED KATAKANA SE	[2000]
+0x86E7	U+32DE	# CIRCLED KATAKANA SO	[2000]
+0x86E8	U+32DF	# CIRCLED KATAKANA TA	[2000]
+0x86E9	U+32E0	# CIRCLED KATAKANA TI	[2000]
+0x86EA	U+32E1	# CIRCLED KATAKANA TU	[2000]
+0x86EB	U+32E2	# CIRCLED KATAKANA TE	[2000]
+0x86EC	U+32E3	# CIRCLED KATAKANA TO	[2000]
+0x86ED	U+32FA	# CIRCLED KATAKANA RO	[2000]
+0x86EE	U+32E9	# CIRCLED KATAKANA HA	[2000]
+0x86EF	U+32E5	# CIRCLED KATAKANA NI	[2000]
+0x86F0	U+32ED	# CIRCLED KATAKANA HO	[2000]
+0x86F1	U+32EC	# CIRCLED KATAKANA HE	[2000]
+0x86F2		# <reserved>
+0x86F3		# <reserved>
+0x86F4		# <reserved>
+0x86F5		# <reserved>
+0x86F6		# <reserved>
+0x86F7		# <reserved>
+0x86F8		# <reserved>
+0x86F9		# <reserved>
+0x86FA		# <reserved>
+0x86FB	U+2051	# TWO ASTERISKS ALIGNED VERTICALLY	[2000]	[Unicode3.2]
+0x86FC	U+2042	# ASTERISM	[2000]
+0x8740	U+2460	# CIRCLED DIGIT ONE	[2000]
+0x8741	U+2461	# CIRCLED DIGIT TWO	[2000]
+0x8742	U+2462	# CIRCLED DIGIT THREE	[2000]
+0x8743	U+2463	# CIRCLED DIGIT FOUR	[2000]
+0x8744	U+2464	# CIRCLED DIGIT FIVE	[2000]
+0x8745	U+2465	# CIRCLED DIGIT SIX	[2000]
+0x8746	U+2466	# CIRCLED DIGIT SEVEN	[2000]
+0x8747	U+2467	# CIRCLED DIGIT EIGHT	[2000]
+0x8748	U+2468	# CIRCLED DIGIT NINE	[2000]
+0x8749	U+2469	# CIRCLED NUMBER TEN	[2000]
+0x874A	U+246A	# CIRCLED NUMBER ELEVEN	[2000]
+0x874B	U+246B	# CIRCLED NUMBER TWELVE	[2000]
+0x874C	U+246C	# CIRCLED NUMBER THIRTEEN	[2000]
+0x874D	U+246D	# CIRCLED NUMBER FOURTEEN	[2000]
+0x874E	U+246E	# CIRCLED NUMBER FIFTEEN	[2000]
+0x874F	U+246F	# CIRCLED NUMBER SIXTEEN	[2000]
+0x8750	U+2470	# CIRCLED NUMBER SEVENTEEN	[2000]
+0x8751	U+2471	# CIRCLED NUMBER EIGHTEEN	[2000]
+0x8752	U+2472	# CIRCLED NUMBER NINETEEN	[2000]
+0x8753	U+2473	# CIRCLED NUMBER TWENTY	[2000]
+0x8754	U+2160	# ROMAN NUMERAL ONE	[2000]
+0x8755	U+2161	# ROMAN NUMERAL TWO	[2000]
+0x8756	U+2162	# ROMAN NUMERAL THREE	[2000]
+0x8757	U+2163	# ROMAN NUMERAL FOUR	[2000]
+0x8758	U+2164	# ROMAN NUMERAL FIVE	[2000]
+0x8759	U+2165	# ROMAN NUMERAL SIX	[2000]
+0x875A	U+2166	# ROMAN NUMERAL SEVEN	[2000]
+0x875B	U+2167	# ROMAN NUMERAL EIGHT	[2000]
+0x875C	U+2168	# ROMAN NUMERAL NINE	[2000]
+0x875D	U+2169	# ROMAN NUMERAL TEN	[2000]
+0x875E	U+216A	# ROMAN NUMERAL ELEVEN	[2000]
+0x875F	U+3349	# SQUARE MIRI	[2000]
+0x8760	U+3314	# SQUARE KIRO	[2000]
+0x8761	U+3322	# SQUARE SENTI	[2000]
+0x8762	U+334D	# SQUARE MEETORU	[2000]
+0x8763	U+3318	# SQUARE GURAMU	[2000]
+0x8764	U+3327	# SQUARE TON	[2000]
+0x8765	U+3303	# SQUARE AARU	[2000]
+0x8766	U+3336	# SQUARE HEKUTAARU	[2000]
+0x8767	U+3351	# SQUARE RITTORU	[2000]
+0x8768	U+3357	# SQUARE WATTO	[2000]
+0x8769	U+330D	# SQUARE KARORII	[2000]
+0x876A	U+3326	# SQUARE DORU	[2000]
+0x876B	U+3323	# SQUARE SENTO	[2000]
+0x876C	U+332B	# SQUARE PAASENTO	[2000]
+0x876D	U+334A	# SQUARE MIRIBAARU	[2000]
+0x876E	U+333B	# SQUARE PEEZI	[2000]
+0x876F	U+339C	# SQUARE MM	[2000]
+0x8770	U+339D	# SQUARE CM	[2000]
+0x8771	U+339E	# SQUARE KM	[2000]
+0x8772	U+338E	# SQUARE MG	[2000]
+0x8773	U+338F	# SQUARE KG	[2000]
+0x8774	U+33C4	# SQUARE CC	[2000]
+0x8775	U+33A1	# SQUARE M SQUARED	[2000]
+0x8776	U+216B	# ROMAN NUMERAL TWELVE	[2000]
+0x8777		# <reserved>
+0x8778		# <reserved>
+0x8779		# <reserved>
+0x877A		# <reserved>
+0x877B		# <reserved>
+0x877C		# <reserved>
+0x877D		# <reserved>
+0x877E	U+337B	# SQUARE ERA NAME HEISEI	[2000]
+0x8780	U+301D	# REVERSED DOUBLE PRIME QUOTATION MARK	[2000]
+0x8781	U+301F	# LOW DOUBLE PRIME QUOTATION MARK	[2000]
+0x8782	U+2116	# NUMERO SIGN	[2000]
+0x8783	U+33CD	# SQUARE KK	[2000]
+0x8784	U+2121	# TELEPHONE SIGN	[2000]
+0x8785	U+32A4	# CIRCLED IDEOGRAPH HIGH	[2000]
+0x8786	U+32A5	# CIRCLED IDEOGRAPH CENTRE	[2000]
+0x8787	U+32A6	# CIRCLED IDEOGRAPH LOW	[2000]
+0x8788	U+32A7	# CIRCLED IDEOGRAPH LEFT	[2000]
+0x8789	U+32A8	# CIRCLED IDEOGRAPH RIGHT	[2000]
+0x878A	U+3231	# PARENTHESIZED IDEOGRAPH STOCK	[2000]
+0x878B	U+3232	# PARENTHESIZED IDEOGRAPH HAVE	[2000]
+0x878C	U+3239	# PARENTHESIZED IDEOGRAPH REPRESENT	[2000]
+0x878D	U+337E	# SQUARE ERA NAME MEIZI	[2000]
+0x878E	U+337D	# SQUARE ERA NAME TAISYOU	[2000]
+0x878F	U+337C	# SQUARE ERA NAME SYOUWA	[2000]
+0x8790		# <reserved>	Windows: U+2252
+0x8791		# <reserved>	Windows: U+2261
+0x8792		# <reserved>	Windows: U+222B
+0x8793	U+222E	# CONTOUR INTEGRAL	[2000]
+0x8794		# <reserved>	Windows: U+2211
+0x8795		# <reserved>	Windows: U+221A
+0x8796		# <reserved>	Windows: U+22A5
+0x8797		# <reserved>	Windows: U+2220
+0x8798	U+221F	# RIGHT ANGLE	[2000]
+0x8799	U+22BF	# RIGHT TRIANGLE	[2000]
+0x879A		# <reserved>	Windows: U+2235
+0x879B		# <reserved>	Windows: U+2229
+0x879C		# <reserved>	Windows: U+222A
+0x879D	U+2756	# BLACK DIAMOND MINUS WHITE X	[2000]
+0x879E	U+261E	# WHITE RIGHT POINTING INDEX	[2000]
+0x879F	U+4FF1	# <cjk>	[2004]
+0x87A0	U+2000B	# <cjk>	[2000]	[Unicode3.1]
+0x87A1	U+3402	# <cjk>	[2000]
+0x87A2	U+4E28	# <cjk>	[2000]
+0x87A3	U+4E2F	# <cjk>	[2000]
+0x87A4	U+4E30	# <cjk>	[2000]
+0x87A5	U+4E8D	# <cjk>	[2000]
+0x87A6	U+4EE1	# <cjk>	[2000]
+0x87A7	U+4EFD	# <cjk>	[2000]
+0x87A8	U+4EFF	# <cjk>	[2000]
+0x87A9	U+4F03	# <cjk>	[2000]
+0x87AA	U+4F0B	# <cjk>	[2000]
+0x87AB	U+4F60	# <cjk>	[2000]
+0x87AC	U+4F48	# <cjk>	[2000]
+0x87AD	U+4F49	# <cjk>	[2000]
+0x87AE	U+4F56	# <cjk>	[2000]
+0x87AF	U+4F5F	# <cjk>	[2000]
+0x87B0	U+4F6A	# <cjk>	[2000]
+0x87B1	U+4F6C	# <cjk>	[2000]
+0x87B2	U+4F7E	# <cjk>	[2000]
+0x87B3	U+4F8A	# <cjk>	[2000]
+0x87B4	U+4F94	# <cjk>	[2000]
+0x87B5	U+4F97	# <cjk>	[2000]
+0x87B6	U+FA30	# CJK COMPATIBILITY IDEOGRAPH-FA30	[2000]	[Unicode3.2]
+0x87B7	U+4FC9	# <cjk>	[2000]
+0x87B8	U+4FE0	# <cjk>	[2000]
+0x87B9	U+5001	# <cjk>	[2000]
+0x87BA	U+5002	# <cjk>	[2000]
+0x87BB	U+500E	# <cjk>	[2000]
+0x87BC	U+5018	# <cjk>	[2000]
+0x87BD	U+5027	# <cjk>	[2000]
+0x87BE	U+502E	# <cjk>	[2000]
+0x87BF	U+5040	# <cjk>	[2000]
+0x87C0	U+503B	# <cjk>	[2000]
+0x87C1	U+5041	# <cjk>	[2000]
+0x87C2	U+5094	# <cjk>	[2000]
+0x87C3	U+50CC	# <cjk>	[2000]
+0x87C4	U+50F2	# <cjk>	[2000]
+0x87C5	U+50D0	# <cjk>	[2000]
+0x87C6	U+50E6	# <cjk>	[2000]
+0x87C7	U+FA31	# CJK COMPATIBILITY IDEOGRAPH-FA31	[2000]	[Unicode3.2]
+0x87C8	U+5106	# <cjk>	[2000]
+0x87C9	U+5103	# <cjk>	[2000]
+0x87CA	U+510B	# <cjk>	[2000]
+0x87CB	U+511E	# <cjk>	[2000]
+0x87CC	U+5135	# <cjk>	[2000]
+0x87CD	U+514A	# <cjk>	[2000]
+0x87CE	U+FA32	# CJK COMPATIBILITY IDEOGRAPH-FA32	[2000]	[Unicode3.2]
+0x87CF	U+5155	# <cjk>	[2000]
+0x87D0	U+5157	# <cjk>	[2000]
+0x87D1	U+34B5	# <cjk>	[2000]
+0x87D2	U+519D	# <cjk>	[2000]
+0x87D3	U+51C3	# <cjk>	[2000]
+0x87D4	U+51CA	# <cjk>	[2000]
+0x87D5	U+51DE	# <cjk>	[2000]
+0x87D6	U+51E2	# <cjk>	[2000]
+0x87D7	U+51EE	# <cjk>	[2000]
+0x87D8	U+5201	# <cjk>	[2000]
+0x87D9	U+34DB	# <cjk>	[2000]
+0x87DA	U+5213	# <cjk>	[2000]
+0x87DB	U+5215	# <cjk>	[2000]
+0x87DC	U+5249	# <cjk>	[2000]
+0x87DD	U+5257	# <cjk>	[2000]
+0x87DE	U+5261	# <cjk>	[2000]
+0x87DF	U+5293	# <cjk>	[2000]
+0x87E0	U+52C8	# <cjk>	[2000]
+0x87E1	U+FA33	# CJK COMPATIBILITY IDEOGRAPH-FA33	[2000]	[Unicode3.2]
+0x87E2	U+52CC	# <cjk>	[2000]
+0x87E3	U+52D0	# <cjk>	[2000]
+0x87E4	U+52D6	# <cjk>	[2000]
+0x87E5	U+52DB	# <cjk>	[2000]
+0x87E6	U+FA34	# CJK COMPATIBILITY IDEOGRAPH-FA34	[2000]	[Unicode3.2]
+0x87E7	U+52F0	# <cjk>	[2000]
+0x87E8	U+52FB	# <cjk>	[2000]
+0x87E9	U+5300	# <cjk>	[2000]
+0x87EA	U+5307	# <cjk>	[2000]
+0x87EB	U+531C	# <cjk>	[2000]
+0x87EC	U+FA35	# CJK COMPATIBILITY IDEOGRAPH-FA35	[2000]	[Unicode3.2]
+0x87ED	U+5361	# <cjk>	[2000]
+0x87EE	U+5363	# <cjk>	[2000]
+0x87EF	U+537D	# <cjk>	[2000]
+0x87F0	U+5393	# <cjk>	[2000]
+0x87F1	U+539D	# <cjk>	[2000]
+0x87F2	U+53B2	# <cjk>	[2000]
+0x87F3	U+5412	# <cjk>	[2000]
+0x87F4	U+5427	# <cjk>	[2000]
+0x87F5	U+544D	# <cjk>	[2000]
+0x87F6	U+549C	# <cjk>	[2000]
+0x87F7	U+546B	# <cjk>	[2000]
+0x87F8	U+5474	# <cjk>	[2000]
+0x87F9	U+547F	# <cjk>	[2000]
+0x87FA	U+5488	# <cjk>	[2000]
+0x87FB	U+5496	# <cjk>	[2000]
+0x87FC	U+54A1	# <cjk>	[2000]
+0x8840	U+54A9	# <cjk>	[2000]
+0x8841	U+54C6	# <cjk>	[2000]
+0x8842	U+54FF	# <cjk>	[2000]
+0x8843	U+550E	# <cjk>	[2000]
+0x8844	U+552B	# <cjk>	[2000]
+0x8845	U+5535	# <cjk>	[2000]
+0x8846	U+5550	# <cjk>	[2000]
+0x8847	U+555E	# <cjk>	[2000]
+0x8848	U+5581	# <cjk>	[2000]
+0x8849	U+5586	# <cjk>	[2000]
+0x884A	U+558E	# <cjk>	[2000]
+0x884B	U+FA36	# CJK COMPATIBILITY IDEOGRAPH-FA36	[2000]	[Unicode3.2]
+0x884C	U+55AD	# <cjk>	[2000]
+0x884D	U+55CE	# <cjk>	[2000]
+0x884E	U+FA37	# CJK COMPATIBILITY IDEOGRAPH-FA37	[2000]	[Unicode3.2]
+0x884F	U+5608	# <cjk>	[2000]
+0x8850	U+560E	# <cjk>	[2000]
+0x8851	U+563B	# <cjk>	[2000]
+0x8852	U+5649	# <cjk>	[2000]
+0x8853	U+5676	# <cjk>	[2000]
+0x8854	U+5666	# <cjk>	[2000]
+0x8855	U+FA38	# CJK COMPATIBILITY IDEOGRAPH-FA38	[2000]	[Unicode3.2]
+0x8856	U+566F	# <cjk>	[2000]
+0x8857	U+5671	# <cjk>	[2000]
+0x8858	U+5672	# <cjk>	[2000]
+0x8859	U+5699	# <cjk>	[2000]
+0x885A	U+569E	# <cjk>	[2000]
+0x885B	U+56A9	# <cjk>	[2000]
+0x885C	U+56AC	# <cjk>	[2000]
+0x885D	U+56B3	# <cjk>	[2000]
+0x885E	U+56C9	# <cjk>	[2000]
+0x885F	U+56CA	# <cjk>	[2000]
+0x8860	U+570A	# <cjk>	[2000]
+0x8861	U+2123D	# <cjk>	[2000]	[Unicode3.1]
+0x8862	U+5721	# <cjk>	[2000]
+0x8863	U+572F	# <cjk>	[2000]
+0x8864	U+5733	# <cjk>	[2000]
+0x8865	U+5734	# <cjk>	[2000]
+0x8866	U+5770	# <cjk>	[2000]
+0x8867	U+5777	# <cjk>	[2000]
+0x8868	U+577C	# <cjk>	[2000]
+0x8869	U+579C	# <cjk>	[2000]
+0x886A	U+FA0F	# CJK COMPATIBILITY IDEOGRAPH-FA0F	[2000]
+0x886B	U+2131B	# <cjk>	[2000]	[Unicode3.1]
+0x886C	U+57B8	# <cjk>	[2000]
+0x886D	U+57C7	# <cjk>	[2000]
+0x886E	U+57C8	# <cjk>	[2000]
+0x886F	U+57CF	# <cjk>	[2000]
+0x8870	U+57E4	# <cjk>	[2000]
+0x8871	U+57ED	# <cjk>	[2000]
+0x8872	U+57F5	# <cjk>	[2000]
+0x8873	U+57F6	# <cjk>	[2000]
+0x8874	U+57FF	# <cjk>	[2000]
+0x8875	U+5809	# <cjk>	[2000]
+0x8876	U+FA10	# CJK COMPATIBILITY IDEOGRAPH-FA10	[2000]
+0x8877	U+5861	# <cjk>	[2000]
+0x8878	U+5864	# <cjk>	[2000]
+0x8879	U+FA39	# CJK COMPATIBILITY IDEOGRAPH-FA39	[2000]	[Unicode3.2]
+0x887A	U+587C	# <cjk>	[2000]
+0x887B	U+5889	# <cjk>	[2000]
+0x887C	U+589E	# <cjk>	[2000]
+0x887D	U+FA3A	# CJK COMPATIBILITY IDEOGRAPH-FA3A	[2000]	[Unicode3.2]
+0x887E	U+58A9	# <cjk>	[2000]
+0x8880	U+2146E	# <cjk>	[2000]	[Unicode3.1]
+0x8881	U+58D2	# <cjk>	[2000]
+0x8882	U+58CE	# <cjk>	[2000]
+0x8883	U+58D4	# <cjk>	[2000]
+0x8884	U+58DA	# <cjk>	[2000]
+0x8885	U+58E0	# <cjk>	[2000]
+0x8886	U+58E9	# <cjk>	[2000]
+0x8887	U+590C	# <cjk>	[2000]
+0x8888	U+8641	# <cjk>	[2000]
+0x8889	U+595D	# <cjk>	[2000]
+0x888A	U+596D	# <cjk>	[2000]
+0x888B	U+598B	# <cjk>	[2000]
+0x888C	U+5992	# <cjk>	[2000]
+0x888D	U+59A4	# <cjk>	[2000]
+0x888E	U+59C3	# <cjk>	[2000]
+0x888F	U+59D2	# <cjk>	[2000]
+0x8890	U+59DD	# <cjk>	[2000]
+0x8891	U+5A13	# <cjk>	[2000]
+0x8892	U+5A23	# <cjk>	[2000]
+0x8893	U+5A67	# <cjk>	[2000]
+0x8894	U+5A6D	# <cjk>	[2000]
+0x8895	U+5A77	# <cjk>	[2000]
+0x8896	U+5A7E	# <cjk>	[2000]
+0x8897	U+5A84	# <cjk>	[2000]
+0x8898	U+5A9E	# <cjk>	[2000]
+0x8899	U+5AA7	# <cjk>	[2000]
+0x889A	U+5AC4	# <cjk>	[2000]
+0x889B	U+218BD	# <cjk>	[2000]	[Unicode3.1]
+0x889C	U+5B19	# <cjk>	[2000]
+0x889D	U+5B25	# <cjk>	[2000]
+0x889E	U+525D	# <cjk>	[2004]
+0x889F	U+4E9C	# <cjk>
+0x88A0	U+5516	# <cjk>
+0x88A1	U+5A03	# <cjk>
+0x88A2	U+963F	# <cjk>
+0x88A3	U+54C0	# <cjk>
+0x88A4	U+611B	# <cjk>
+0x88A5	U+6328	# <cjk>
+0x88A6	U+59F6	# <cjk>
+0x88A7	U+9022	# <cjk>
+0x88A8	U+8475	# <cjk>
+0x88A9	U+831C	# <cjk>
+0x88AA	U+7A50	# <cjk>
+0x88AB	U+60AA	# <cjk>
+0x88AC	U+63E1	# <cjk>
+0x88AD	U+6E25	# <cjk>
+0x88AE	U+65ED	# <cjk>
+0x88AF	U+8466	# <cjk>
+0x88B0	U+82A6	# <cjk>
+0x88B1	U+9BF5	# <cjk>
+0x88B2	U+6893	# <cjk>
+0x88B3	U+5727	# <cjk>
+0x88B4	U+65A1	# <cjk>
+0x88B5	U+6271	# <cjk>
+0x88B6	U+5B9B	# <cjk>
+0x88B7	U+59D0	# <cjk>
+0x88B8	U+867B	# <cjk>
+0x88B9	U+98F4	# <cjk>
+0x88BA	U+7D62	# <cjk>
+0x88BB	U+7DBE	# <cjk>
+0x88BC	U+9B8E	# <cjk>
+0x88BD	U+6216	# <cjk>
+0x88BE	U+7C9F	# <cjk>
+0x88BF	U+88B7	# <cjk>
+0x88C0	U+5B89	# <cjk>
+0x88C1	U+5EB5	# <cjk>
+0x88C2	U+6309	# <cjk>
+0x88C3	U+6697	# <cjk>
+0x88C4	U+6848	# <cjk>
+0x88C5	U+95C7	# <cjk>
+0x88C6	U+978D	# <cjk>
+0x88C7	U+674F	# <cjk>
+0x88C8	U+4EE5	# <cjk>
+0x88C9	U+4F0A	# <cjk>
+0x88CA	U+4F4D	# <cjk>
+0x88CB	U+4F9D	# <cjk>
+0x88CC	U+5049	# <cjk>
+0x88CD	U+56F2	# <cjk>
+0x88CE	U+5937	# <cjk>
+0x88CF	U+59D4	# <cjk>
+0x88D0	U+5A01	# <cjk>
+0x88D1	U+5C09	# <cjk>
+0x88D2	U+60DF	# <cjk>
+0x88D3	U+610F	# <cjk>
+0x88D4	U+6170	# <cjk>
+0x88D5	U+6613	# <cjk>
+0x88D6	U+6905	# <cjk>
+0x88D7	U+70BA	# <cjk>
+0x88D8	U+754F	# <cjk>
+0x88D9	U+7570	# <cjk>
+0x88DA	U+79FB	# <cjk>
+0x88DB	U+7DAD	# <cjk>
+0x88DC	U+7DEF	# <cjk>
+0x88DD	U+80C3	# <cjk>
+0x88DE	U+840E	# <cjk>
+0x88DF	U+8863	# <cjk>
+0x88E0	U+8B02	# <cjk>
+0x88E1	U+9055	# <cjk>
+0x88E2	U+907A	# <cjk>
+0x88E3	U+533B	# <cjk>
+0x88E4	U+4E95	# <cjk>
+0x88E5	U+4EA5	# <cjk>
+0x88E6	U+57DF	# <cjk>
+0x88E7	U+80B2	# <cjk>
+0x88E8	U+90C1	# <cjk>
+0x88E9	U+78EF	# <cjk>
+0x88EA	U+4E00	# <cjk>
+0x88EB	U+58F1	# <cjk>
+0x88EC	U+6EA2	# <cjk>
+0x88ED	U+9038	# <cjk>
+0x88EE	U+7A32	# <cjk>
+0x88EF	U+8328	# <cjk>
+0x88F0	U+828B	# <cjk>
+0x88F1	U+9C2F	# <cjk>
+0x88F2	U+5141	# <cjk>
+0x88F3	U+5370	# <cjk>
+0x88F4	U+54BD	# <cjk>
+0x88F5	U+54E1	# <cjk>
+0x88F6	U+56E0	# <cjk>
+0x88F7	U+59FB	# <cjk>
+0x88F8	U+5F15	# <cjk>
+0x88F9	U+98F2	# <cjk>
+0x88FA	U+6DEB	# <cjk>
+0x88FB	U+80E4	# <cjk>
+0x88FC	U+852D	# <cjk>
+0x8940	U+9662	# <cjk>
+0x8941	U+9670	# <cjk>
+0x8942	U+96A0	# <cjk>
+0x8943	U+97FB	# <cjk>
+0x8944	U+540B	# <cjk>
+0x8945	U+53F3	# <cjk>
+0x8946	U+5B87	# <cjk>
+0x8947	U+70CF	# <cjk>
+0x8948	U+7FBD	# <cjk>
+0x8949	U+8FC2	# <cjk>
+0x894A	U+96E8	# <cjk>
+0x894B	U+536F	# <cjk>
+0x894C	U+9D5C	# <cjk>
+0x894D	U+7ABA	# <cjk>
+0x894E	U+4E11	# <cjk>
+0x894F	U+7893	# <cjk>
+0x8950	U+81FC	# <cjk>
+0x8951	U+6E26	# <cjk>
+0x8952	U+5618	# <cjk>
+0x8953	U+5504	# <cjk>
+0x8954	U+6B1D	# <cjk>
+0x8955	U+851A	# <cjk>
+0x8956	U+9C3B	# <cjk>
+0x8957	U+59E5	# <cjk>
+0x8958	U+53A9	# <cjk>
+0x8959	U+6D66	# <cjk>
+0x895A	U+74DC	# <cjk>
+0x895B	U+958F	# <cjk>
+0x895C	U+5642	# <cjk>
+0x895D	U+4E91	# <cjk>
+0x895E	U+904B	# <cjk>
+0x895F	U+96F2	# <cjk>
+0x8960	U+834F	# <cjk>
+0x8961	U+990C	# <cjk>
+0x8962	U+53E1	# <cjk>
+0x8963	U+55B6	# <cjk>
+0x8964	U+5B30	# <cjk>
+0x8965	U+5F71	# <cjk>
+0x8966	U+6620	# <cjk>
+0x8967	U+66F3	# <cjk>
+0x8968	U+6804	# <cjk>
+0x8969	U+6C38	# <cjk>
+0x896A	U+6CF3	# <cjk>
+0x896B	U+6D29	# <cjk>
+0x896C	U+745B	# <cjk>
+0x896D	U+76C8	# <cjk>
+0x896E	U+7A4E	# <cjk>
+0x896F	U+9834	# <cjk>
+0x8970	U+82F1	# <cjk>
+0x8971	U+885B	# <cjk>
+0x8972	U+8A60	# <cjk>
+0x8973	U+92ED	# <cjk>
+0x8974	U+6DB2	# <cjk>
+0x8975	U+75AB	# <cjk>
+0x8976	U+76CA	# <cjk>
+0x8977	U+99C5	# <cjk>
+0x8978	U+60A6	# <cjk>
+0x8979	U+8B01	# <cjk>
+0x897A	U+8D8A	# <cjk>
+0x897B	U+95B2	# <cjk>
+0x897C	U+698E	# <cjk>
+0x897D	U+53AD	# <cjk>
+0x897E	U+5186	# <cjk>
+0x8980	U+5712	# <cjk>
+0x8981	U+5830	# <cjk>
+0x8982	U+5944	# <cjk>
+0x8983	U+5BB4	# <cjk>
+0x8984	U+5EF6	# <cjk>
+0x8985	U+6028	# <cjk>
+0x8986	U+63A9	# <cjk>
+0x8987	U+63F4	# <cjk>
+0x8988	U+6CBF	# <cjk>
+0x8989	U+6F14	# <cjk>
+0x898A	U+708E	# <cjk>
+0x898B	U+7114	# <cjk>
+0x898C	U+7159	# <cjk>
+0x898D	U+71D5	# <cjk>
+0x898E	U+733F	# <cjk>
+0x898F	U+7E01	# <cjk>
+0x8990	U+8276	# <cjk>
+0x8991	U+82D1	# <cjk>
+0x8992	U+8597	# <cjk>
+0x8993	U+9060	# <cjk>
+0x8994	U+925B	# <cjk>
+0x8995	U+9D1B	# <cjk>
+0x8996	U+5869	# <cjk>
+0x8997	U+65BC	# <cjk>
+0x8998	U+6C5A	# <cjk>
+0x8999	U+7525	# <cjk>
+0x899A	U+51F9	# <cjk>
+0x899B	U+592E	# <cjk>
+0x899C	U+5965	# <cjk>
+0x899D	U+5F80	# <cjk>
+0x899E	U+5FDC	# <cjk>
+0x899F	U+62BC	# <cjk>
+0x89A0	U+65FA	# <cjk>
+0x89A1	U+6A2A	# <cjk>
+0x89A2	U+6B27	# <cjk>
+0x89A3	U+6BB4	# <cjk>
+0x89A4	U+738B	# <cjk>
+0x89A5	U+7FC1	# <cjk>
+0x89A6	U+8956	# <cjk>
+0x89A7	U+9D2C	# <cjk>
+0x89A8	U+9D0E	# <cjk>
+0x89A9	U+9EC4	# <cjk>
+0x89AA	U+5CA1	# <cjk>
+0x89AB	U+6C96	# <cjk>
+0x89AC	U+837B	# <cjk>
+0x89AD	U+5104	# <cjk>
+0x89AE	U+5C4B	# <cjk>
+0x89AF	U+61B6	# <cjk>
+0x89B0	U+81C6	# <cjk>
+0x89B1	U+6876	# <cjk>
+0x89B2	U+7261	# <cjk>
+0x89B3	U+4E59	# <cjk>
+0x89B4	U+4FFA	# <cjk>
+0x89B5	U+5378	# <cjk>
+0x89B6	U+6069	# <cjk>
+0x89B7	U+6E29	# <cjk>
+0x89B8	U+7A4F	# <cjk>
+0x89B9	U+97F3	# <cjk>
+0x89BA	U+4E0B	# <cjk>
+0x89BB	U+5316	# <cjk>
+0x89BC	U+4EEE	# <cjk>
+0x89BD	U+4F55	# <cjk>
+0x89BE	U+4F3D	# <cjk>
+0x89BF	U+4FA1	# <cjk>
+0x89C0	U+4F73	# <cjk>
+0x89C1	U+52A0	# <cjk>
+0x89C2	U+53EF	# <cjk>
+0x89C3	U+5609	# <cjk>
+0x89C4	U+590F	# <cjk>
+0x89C5	U+5AC1	# <cjk>
+0x89C6	U+5BB6	# <cjk>
+0x89C7	U+5BE1	# <cjk>
+0x89C8	U+79D1	# <cjk>
+0x89C9	U+6687	# <cjk>
+0x89CA	U+679C	# <cjk>
+0x89CB	U+67B6	# <cjk>
+0x89CC	U+6B4C	# <cjk>
+0x89CD	U+6CB3	# <cjk>
+0x89CE	U+706B	# <cjk>
+0x89CF	U+73C2	# <cjk>
+0x89D0	U+798D	# <cjk>
+0x89D1	U+79BE	# <cjk>
+0x89D2	U+7A3C	# <cjk>
+0x89D3	U+7B87	# <cjk>
+0x89D4	U+82B1	# <cjk>
+0x89D5	U+82DB	# <cjk>
+0x89D6	U+8304	# <cjk>
+0x89D7	U+8377	# <cjk>
+0x89D8	U+83EF	# <cjk>
+0x89D9	U+83D3	# <cjk>
+0x89DA	U+8766	# <cjk>
+0x89DB	U+8AB2	# <cjk>
+0x89DC	U+5629	# <cjk>
+0x89DD	U+8CA8	# <cjk>
+0x89DE	U+8FE6	# <cjk>
+0x89DF	U+904E	# <cjk>
+0x89E0	U+971E	# <cjk>
+0x89E1	U+868A	# <cjk>
+0x89E2	U+4FC4	# <cjk>
+0x89E3	U+5CE8	# <cjk>
+0x89E4	U+6211	# <cjk>
+0x89E5	U+7259	# <cjk>
+0x89E6	U+753B	# <cjk>
+0x89E7	U+81E5	# <cjk>
+0x89E8	U+82BD	# <cjk>
+0x89E9	U+86FE	# <cjk>
+0x89EA	U+8CC0	# <cjk>
+0x89EB	U+96C5	# <cjk>
+0x89EC	U+9913	# <cjk>
+0x89ED	U+99D5	# <cjk>
+0x89EE	U+4ECB	# <cjk>
+0x89EF	U+4F1A	# <cjk>
+0x89F0	U+89E3	# <cjk>
+0x89F1	U+56DE	# <cjk>
+0x89F2	U+584A	# <cjk>
+0x89F3	U+58CA	# <cjk>
+0x89F4	U+5EFB	# <cjk>
+0x89F5	U+5FEB	# <cjk>
+0x89F6	U+602A	# <cjk>
+0x89F7	U+6094	# <cjk>
+0x89F8	U+6062	# <cjk>
+0x89F9	U+61D0	# <cjk>
+0x89FA	U+6212	# <cjk>
+0x89FB	U+62D0	# <cjk>
+0x89FC	U+6539	# <cjk>
+0x8A40	U+9B41	# <cjk>
+0x8A41	U+6666	# <cjk>
+0x8A42	U+68B0	# <cjk>
+0x8A43	U+6D77	# <cjk>
+0x8A44	U+7070	# <cjk>
+0x8A45	U+754C	# <cjk>
+0x8A46	U+7686	# <cjk>
+0x8A47	U+7D75	# <cjk>
+0x8A48	U+82A5	# <cjk>
+0x8A49	U+87F9	# <cjk>
+0x8A4A	U+958B	# <cjk>
+0x8A4B	U+968E	# <cjk>
+0x8A4C	U+8C9D	# <cjk>
+0x8A4D	U+51F1	# <cjk>
+0x8A4E	U+52BE	# <cjk>
+0x8A4F	U+5916	# <cjk>
+0x8A50	U+54B3	# <cjk>
+0x8A51	U+5BB3	# <cjk>
+0x8A52	U+5D16	# <cjk>
+0x8A53	U+6168	# <cjk>
+0x8A54	U+6982	# <cjk>
+0x8A55	U+6DAF	# <cjk>
+0x8A56	U+788D	# <cjk>
+0x8A57	U+84CB	# <cjk>
+0x8A58	U+8857	# <cjk>
+0x8A59	U+8A72	# <cjk>
+0x8A5A	U+93A7	# <cjk>
+0x8A5B	U+9AB8	# <cjk>
+0x8A5C	U+6D6C	# <cjk>
+0x8A5D	U+99A8	# <cjk>
+0x8A5E	U+86D9	# <cjk>
+0x8A5F	U+57A3	# <cjk>
+0x8A60	U+67FF	# <cjk>
+0x8A61	U+86CE	# <cjk>
+0x8A62	U+920E	# <cjk>
+0x8A63	U+5283	# <cjk>
+0x8A64	U+5687	# <cjk>
+0x8A65	U+5404	# <cjk>
+0x8A66	U+5ED3	# <cjk>
+0x8A67	U+62E1	# <cjk>
+0x8A68	U+64B9	# <cjk>
+0x8A69	U+683C	# <cjk>
+0x8A6A	U+6838	# <cjk>
+0x8A6B	U+6BBB	# <cjk>
+0x8A6C	U+7372	# <cjk>
+0x8A6D	U+78BA	# <cjk>
+0x8A6E	U+7A6B	# <cjk>
+0x8A6F	U+899A	# <cjk>
+0x8A70	U+89D2	# <cjk>
+0x8A71	U+8D6B	# <cjk>
+0x8A72	U+8F03	# <cjk>
+0x8A73	U+90ED	# <cjk>
+0x8A74	U+95A3	# <cjk>
+0x8A75	U+9694	# <cjk>
+0x8A76	U+9769	# <cjk>
+0x8A77	U+5B66	# <cjk>
+0x8A78	U+5CB3	# <cjk>
+0x8A79	U+697D	# <cjk>
+0x8A7A	U+984D	# <cjk>
+0x8A7B	U+984E	# <cjk>
+0x8A7C	U+639B	# <cjk>
+0x8A7D	U+7B20	# <cjk>
+0x8A7E	U+6A2B	# <cjk>
+0x8A80	U+6A7F	# <cjk>
+0x8A81	U+68B6	# <cjk>
+0x8A82	U+9C0D	# <cjk>
+0x8A83	U+6F5F	# <cjk>
+0x8A84	U+5272	# <cjk>
+0x8A85	U+559D	# <cjk>
+0x8A86	U+6070	# <cjk>
+0x8A87	U+62EC	# <cjk>
+0x8A88	U+6D3B	# <cjk>
+0x8A89	U+6E07	# <cjk>
+0x8A8A	U+6ED1	# <cjk>
+0x8A8B	U+845B	# <cjk>
+0x8A8C	U+8910	# <cjk>
+0x8A8D	U+8F44	# <cjk>
+0x8A8E	U+4E14	# <cjk>
+0x8A8F	U+9C39	# <cjk>
+0x8A90	U+53F6	# <cjk>
+0x8A91	U+691B	# <cjk>
+0x8A92	U+6A3A	# <cjk>
+0x8A93	U+9784	# <cjk>
+0x8A94	U+682A	# <cjk>
+0x8A95	U+515C	# <cjk>
+0x8A96	U+7AC3	# <cjk>
+0x8A97	U+84B2	# <cjk>
+0x8A98	U+91DC	# <cjk>
+0x8A99	U+938C	# <cjk>
+0x8A9A	U+565B	# <cjk>
+0x8A9B	U+9D28	# <cjk>
+0x8A9C	U+6822	# <cjk>
+0x8A9D	U+8305	# <cjk>
+0x8A9E	U+8431	# <cjk>
+0x8A9F	U+7CA5	# <cjk>
+0x8AA0	U+5208	# <cjk>
+0x8AA1	U+82C5	# <cjk>
+0x8AA2	U+74E6	# <cjk>
+0x8AA3	U+4E7E	# <cjk>
+0x8AA4	U+4F83	# <cjk>
+0x8AA5	U+51A0	# <cjk>
+0x8AA6	U+5BD2	# <cjk>
+0x8AA7	U+520A	# <cjk>
+0x8AA8	U+52D8	# <cjk>
+0x8AA9	U+52E7	# <cjk>
+0x8AAA	U+5DFB	# <cjk>
+0x8AAB	U+559A	# <cjk>
+0x8AAC	U+582A	# <cjk>
+0x8AAD	U+59E6	# <cjk>
+0x8AAE	U+5B8C	# <cjk>
+0x8AAF	U+5B98	# <cjk>
+0x8AB0	U+5BDB	# <cjk>
+0x8AB1	U+5E72	# <cjk>
+0x8AB2	U+5E79	# <cjk>
+0x8AB3	U+60A3	# <cjk>
+0x8AB4	U+611F	# <cjk>
+0x8AB5	U+6163	# <cjk>
+0x8AB6	U+61BE	# <cjk>
+0x8AB7	U+63DB	# <cjk>
+0x8AB8	U+6562	# <cjk>
+0x8AB9	U+67D1	# <cjk>
+0x8ABA	U+6853	# <cjk>
+0x8ABB	U+68FA	# <cjk>
+0x8ABC	U+6B3E	# <cjk>
+0x8ABD	U+6B53	# <cjk>
+0x8ABE	U+6C57	# <cjk>
+0x8ABF	U+6F22	# <cjk>
+0x8AC0	U+6F97	# <cjk>
+0x8AC1	U+6F45	# <cjk>
+0x8AC2	U+74B0	# <cjk>
+0x8AC3	U+7518	# <cjk>
+0x8AC4	U+76E3	# <cjk>
+0x8AC5	U+770B	# <cjk>
+0x8AC6	U+7AFF	# <cjk>
+0x8AC7	U+7BA1	# <cjk>
+0x8AC8	U+7C21	# <cjk>
+0x8AC9	U+7DE9	# <cjk>
+0x8ACA	U+7F36	# <cjk>
+0x8ACB	U+7FF0	# <cjk>
+0x8ACC	U+809D	# <cjk>
+0x8ACD	U+8266	# <cjk>
+0x8ACE	U+839E	# <cjk>
+0x8ACF	U+89B3	# <cjk>
+0x8AD0	U+8ACC	# <cjk>
+0x8AD1	U+8CAB	# <cjk>
+0x8AD2	U+9084	# <cjk>
+0x8AD3	U+9451	# <cjk>
+0x8AD4	U+9593	# <cjk>
+0x8AD5	U+9591	# <cjk>
+0x8AD6	U+95A2	# <cjk>
+0x8AD7	U+9665	# <cjk>
+0x8AD8	U+97D3	# <cjk>
+0x8AD9	U+9928	# <cjk>
+0x8ADA	U+8218	# <cjk>
+0x8ADB	U+4E38	# <cjk>
+0x8ADC	U+542B	# <cjk>
+0x8ADD	U+5CB8	# <cjk>
+0x8ADE	U+5DCC	# <cjk>
+0x8ADF	U+73A9	# <cjk>
+0x8AE0	U+764C	# <cjk>
+0x8AE1	U+773C	# <cjk>
+0x8AE2	U+5CA9	# <cjk>
+0x8AE3	U+7FEB	# <cjk>
+0x8AE4	U+8D0B	# <cjk>
+0x8AE5	U+96C1	# <cjk>
+0x8AE6	U+9811	# <cjk>
+0x8AE7	U+9854	# <cjk>
+0x8AE8	U+9858	# <cjk>
+0x8AE9	U+4F01	# <cjk>
+0x8AEA	U+4F0E	# <cjk>
+0x8AEB	U+5371	# <cjk>
+0x8AEC	U+559C	# <cjk>
+0x8AED	U+5668	# <cjk>
+0x8AEE	U+57FA	# <cjk>
+0x8AEF	U+5947	# <cjk>
+0x8AF0	U+5B09	# <cjk>
+0x8AF1	U+5BC4	# <cjk>
+0x8AF2	U+5C90	# <cjk>
+0x8AF3	U+5E0C	# <cjk>
+0x8AF4	U+5E7E	# <cjk>
+0x8AF5	U+5FCC	# <cjk>
+0x8AF6	U+63EE	# <cjk>
+0x8AF7	U+673A	# <cjk>
+0x8AF8	U+65D7	# <cjk>
+0x8AF9	U+65E2	# <cjk>
+0x8AFA	U+671F	# <cjk>
+0x8AFB	U+68CB	# <cjk>
+0x8AFC	U+68C4	# <cjk>
+0x8B40	U+6A5F	# <cjk>
+0x8B41	U+5E30	# <cjk>
+0x8B42	U+6BC5	# <cjk>
+0x8B43	U+6C17	# <cjk>
+0x8B44	U+6C7D	# <cjk>
+0x8B45	U+757F	# <cjk>
+0x8B46	U+7948	# <cjk>
+0x8B47	U+5B63	# <cjk>
+0x8B48	U+7A00	# <cjk>
+0x8B49	U+7D00	# <cjk>
+0x8B4A	U+5FBD	# <cjk>
+0x8B4B	U+898F	# <cjk>
+0x8B4C	U+8A18	# <cjk>
+0x8B4D	U+8CB4	# <cjk>
+0x8B4E	U+8D77	# <cjk>
+0x8B4F	U+8ECC	# <cjk>
+0x8B50	U+8F1D	# <cjk>
+0x8B51	U+98E2	# <cjk>
+0x8B52	U+9A0E	# <cjk>
+0x8B53	U+9B3C	# <cjk>
+0x8B54	U+4E80	# <cjk>
+0x8B55	U+507D	# <cjk>
+0x8B56	U+5100	# <cjk>
+0x8B57	U+5993	# <cjk>
+0x8B58	U+5B9C	# <cjk>
+0x8B59	U+622F	# <cjk>
+0x8B5A	U+6280	# <cjk>
+0x8B5B	U+64EC	# <cjk>
+0x8B5C	U+6B3A	# <cjk>
+0x8B5D	U+72A0	# <cjk>
+0x8B5E	U+7591	# <cjk>
+0x8B5F	U+7947	# <cjk>
+0x8B60	U+7FA9	# <cjk>
+0x8B61	U+87FB	# <cjk>
+0x8B62	U+8ABC	# <cjk>
+0x8B63	U+8B70	# <cjk>
+0x8B64	U+63AC	# <cjk>
+0x8B65	U+83CA	# <cjk>
+0x8B66	U+97A0	# <cjk>
+0x8B67	U+5409	# <cjk>
+0x8B68	U+5403	# <cjk>
+0x8B69	U+55AB	# <cjk>
+0x8B6A	U+6854	# <cjk>
+0x8B6B	U+6A58	# <cjk>
+0x8B6C	U+8A70	# <cjk>
+0x8B6D	U+7827	# <cjk>
+0x8B6E	U+6775	# <cjk>
+0x8B6F	U+9ECD	# <cjk>
+0x8B70	U+5374	# <cjk>
+0x8B71	U+5BA2	# <cjk>
+0x8B72	U+811A	# <cjk>
+0x8B73	U+8650	# <cjk>
+0x8B74	U+9006	# <cjk>
+0x8B75	U+4E18	# <cjk>
+0x8B76	U+4E45	# <cjk>
+0x8B77	U+4EC7	# <cjk>
+0x8B78	U+4F11	# <cjk>
+0x8B79	U+53CA	# <cjk>
+0x8B7A	U+5438	# <cjk>
+0x8B7B	U+5BAE	# <cjk>
+0x8B7C	U+5F13	# <cjk>
+0x8B7D	U+6025	# <cjk>
+0x8B7E	U+6551	# <cjk>
+0x8B80	U+673D	# <cjk>
+0x8B81	U+6C42	# <cjk>
+0x8B82	U+6C72	# <cjk>
+0x8B83	U+6CE3	# <cjk>
+0x8B84	U+7078	# <cjk>
+0x8B85	U+7403	# <cjk>
+0x8B86	U+7A76	# <cjk>
+0x8B87	U+7AAE	# <cjk>
+0x8B88	U+7B08	# <cjk>
+0x8B89	U+7D1A	# <cjk>
+0x8B8A	U+7CFE	# <cjk>
+0x8B8B	U+7D66	# <cjk>
+0x8B8C	U+65E7	# <cjk>
+0x8B8D	U+725B	# <cjk>
+0x8B8E	U+53BB	# <cjk>
+0x8B8F	U+5C45	# <cjk>
+0x8B90	U+5DE8	# <cjk>
+0x8B91	U+62D2	# <cjk>
+0x8B92	U+62E0	# <cjk>
+0x8B93	U+6319	# <cjk>
+0x8B94	U+6E20	# <cjk>
+0x8B95	U+865A	# <cjk>
+0x8B96	U+8A31	# <cjk>
+0x8B97	U+8DDD	# <cjk>
+0x8B98	U+92F8	# <cjk>
+0x8B99	U+6F01	# <cjk>
+0x8B9A	U+79A6	# <cjk>
+0x8B9B	U+9B5A	# <cjk>
+0x8B9C	U+4EA8	# <cjk>
+0x8B9D	U+4EAB	# <cjk>
+0x8B9E	U+4EAC	# <cjk>
+0x8B9F	U+4F9B	# <cjk>
+0x8BA0	U+4FA0	# <cjk>
+0x8BA1	U+50D1	# <cjk>
+0x8BA2	U+5147	# <cjk>
+0x8BA3	U+7AF6	# <cjk>
+0x8BA4	U+5171	# <cjk>
+0x8BA5	U+51F6	# <cjk>
+0x8BA6	U+5354	# <cjk>
+0x8BA7	U+5321	# <cjk>
+0x8BA8	U+537F	# <cjk>
+0x8BA9	U+53EB	# <cjk>
+0x8BAA	U+55AC	# <cjk>
+0x8BAB	U+5883	# <cjk>
+0x8BAC	U+5CE1	# <cjk>
+0x8BAD	U+5F37	# <cjk>
+0x8BAE	U+5F4A	# <cjk>
+0x8BAF	U+602F	# <cjk>
+0x8BB0	U+6050	# <cjk>
+0x8BB1	U+606D	# <cjk>
+0x8BB2	U+631F	# <cjk>
+0x8BB3	U+6559	# <cjk>
+0x8BB4	U+6A4B	# <cjk>
+0x8BB5	U+6CC1	# <cjk>
+0x8BB6	U+72C2	# <cjk>
+0x8BB7	U+72ED	# <cjk>
+0x8BB8	U+77EF	# <cjk>
+0x8BB9	U+80F8	# <cjk>
+0x8BBA	U+8105	# <cjk>
+0x8BBB	U+8208	# <cjk>
+0x8BBC	U+854E	# <cjk>
+0x8BBD	U+90F7	# <cjk>
+0x8BBE	U+93E1	# <cjk>
+0x8BBF	U+97FF	# <cjk>
+0x8BC0	U+9957	# <cjk>
+0x8BC1	U+9A5A	# <cjk>
+0x8BC2	U+4EF0	# <cjk>
+0x8BC3	U+51DD	# <cjk>
+0x8BC4	U+5C2D	# <cjk>
+0x8BC5	U+6681	# <cjk>
+0x8BC6	U+696D	# <cjk>
+0x8BC7	U+5C40	# <cjk>
+0x8BC8	U+66F2	# <cjk>
+0x8BC9	U+6975	# <cjk>
+0x8BCA	U+7389	# <cjk>
+0x8BCB	U+6850	# <cjk>
+0x8BCC	U+7C81	# <cjk>
+0x8BCD	U+50C5	# <cjk>
+0x8BCE	U+52E4	# <cjk>
+0x8BCF	U+5747	# <cjk>
+0x8BD0	U+5DFE	# <cjk>
+0x8BD1	U+9326	# <cjk>
+0x8BD2	U+65A4	# <cjk>
+0x8BD3	U+6B23	# <cjk>
+0x8BD4	U+6B3D	# <cjk>
+0x8BD5	U+7434	# <cjk>
+0x8BD6	U+7981	# <cjk>
+0x8BD7	U+79BD	# <cjk>
+0x8BD8	U+7B4B	# <cjk>
+0x8BD9	U+7DCA	# <cjk>
+0x8BDA	U+82B9	# <cjk>
+0x8BDB	U+83CC	# <cjk>
+0x8BDC	U+887F	# <cjk>
+0x8BDD	U+895F	# <cjk>
+0x8BDE	U+8B39	# <cjk>
+0x8BDF	U+8FD1	# <cjk>
+0x8BE0	U+91D1	# <cjk>
+0x8BE1	U+541F	# <cjk>
+0x8BE2	U+9280	# <cjk>
+0x8BE3	U+4E5D	# <cjk>
+0x8BE4	U+5036	# <cjk>
+0x8BE5	U+53E5	# <cjk>
+0x8BE6	U+533A	# <cjk>
+0x8BE7	U+72D7	# <cjk>
+0x8BE8	U+7396	# <cjk>
+0x8BE9	U+77E9	# <cjk>
+0x8BEA	U+82E6	# <cjk>
+0x8BEB	U+8EAF	# <cjk>
+0x8BEC	U+99C6	# <cjk>
+0x8BED	U+99C8	# <cjk>
+0x8BEE	U+99D2	# <cjk>
+0x8BEF	U+5177	# <cjk>
+0x8BF0	U+611A	# <cjk>
+0x8BF1	U+865E	# <cjk>
+0x8BF2	U+55B0	# <cjk>
+0x8BF3	U+7A7A	# <cjk>
+0x8BF4	U+5076	# <cjk>
+0x8BF5	U+5BD3	# <cjk>
+0x8BF6	U+9047	# <cjk>
+0x8BF7	U+9685	# <cjk>
+0x8BF8	U+4E32	# <cjk>
+0x8BF9	U+6ADB	# <cjk>
+0x8BFA	U+91E7	# <cjk>
+0x8BFB	U+5C51	# <cjk>
+0x8BFC	U+5C48	# <cjk>
+0x8C40	U+6398	# <cjk>
+0x8C41	U+7A9F	# <cjk>
+0x8C42	U+6C93	# <cjk>
+0x8C43	U+9774	# <cjk>
+0x8C44	U+8F61	# <cjk>
+0x8C45	U+7AAA	# <cjk>
+0x8C46	U+718A	# <cjk>
+0x8C47	U+9688	# <cjk>
+0x8C48	U+7C82	# <cjk>
+0x8C49	U+6817	# <cjk>
+0x8C4A	U+7E70	# <cjk>
+0x8C4B	U+6851	# <cjk>
+0x8C4C	U+936C	# <cjk>
+0x8C4D	U+52F2	# <cjk>
+0x8C4E	U+541B	# <cjk>
+0x8C4F	U+85AB	# <cjk>
+0x8C50	U+8A13	# <cjk>
+0x8C51	U+7FA4	# <cjk>
+0x8C52	U+8ECD	# <cjk>
+0x8C53	U+90E1	# <cjk>
+0x8C54	U+5366	# <cjk>
+0x8C55	U+8888	# <cjk>
+0x8C56	U+7941	# <cjk>
+0x8C57	U+4FC2	# <cjk>
+0x8C58	U+50BE	# <cjk>
+0x8C59	U+5211	# <cjk>
+0x8C5A	U+5144	# <cjk>
+0x8C5B	U+5553	# <cjk>
+0x8C5C	U+572D	# <cjk>
+0x8C5D	U+73EA	# <cjk>
+0x8C5E	U+578B	# <cjk>
+0x8C5F	U+5951	# <cjk>
+0x8C60	U+5F62	# <cjk>
+0x8C61	U+5F84	# <cjk>
+0x8C62	U+6075	# <cjk>
+0x8C63	U+6176	# <cjk>
+0x8C64	U+6167	# <cjk>
+0x8C65	U+61A9	# <cjk>
+0x8C66	U+63B2	# <cjk>
+0x8C67	U+643A	# <cjk>
+0x8C68	U+656C	# <cjk>
+0x8C69	U+666F	# <cjk>
+0x8C6A	U+6842	# <cjk>
+0x8C6B	U+6E13	# <cjk>
+0x8C6C	U+7566	# <cjk>
+0x8C6D	U+7A3D	# <cjk>
+0x8C6E	U+7CFB	# <cjk>
+0x8C6F	U+7D4C	# <cjk>
+0x8C70	U+7D99	# <cjk>
+0x8C71	U+7E4B	# <cjk>
+0x8C72	U+7F6B	# <cjk>
+0x8C73	U+830E	# <cjk>
+0x8C74	U+834A	# <cjk>
+0x8C75	U+86CD	# <cjk>
+0x8C76	U+8A08	# <cjk>
+0x8C77	U+8A63	# <cjk>
+0x8C78	U+8B66	# <cjk>
+0x8C79	U+8EFD	# <cjk>
+0x8C7A	U+981A	# <cjk>
+0x8C7B	U+9D8F	# <cjk>
+0x8C7C	U+82B8	# <cjk>
+0x8C7D	U+8FCE	# <cjk>
+0x8C7E	U+9BE8	# <cjk>
+0x8C80	U+5287	# <cjk>
+0x8C81	U+621F	# <cjk>
+0x8C82	U+6483	# <cjk>
+0x8C83	U+6FC0	# <cjk>
+0x8C84	U+9699	# <cjk>
+0x8C85	U+6841	# <cjk>
+0x8C86	U+5091	# <cjk>
+0x8C87	U+6B20	# <cjk>
+0x8C88	U+6C7A	# <cjk>
+0x8C89	U+6F54	# <cjk>
+0x8C8A	U+7A74	# <cjk>
+0x8C8B	U+7D50	# <cjk>
+0x8C8C	U+8840	# <cjk>
+0x8C8D	U+8A23	# <cjk>
+0x8C8E	U+6708	# <cjk>
+0x8C8F	U+4EF6	# <cjk>
+0x8C90	U+5039	# <cjk>
+0x8C91	U+5026	# <cjk>
+0x8C92	U+5065	# <cjk>
+0x8C93	U+517C	# <cjk>
+0x8C94	U+5238	# <cjk>
+0x8C95	U+5263	# <cjk>
+0x8C96	U+55A7	# <cjk>
+0x8C97	U+570F	# <cjk>
+0x8C98	U+5805	# <cjk>
+0x8C99	U+5ACC	# <cjk>
+0x8C9A	U+5EFA	# <cjk>
+0x8C9B	U+61B2	# <cjk>
+0x8C9C	U+61F8	# <cjk>
+0x8C9D	U+62F3	# <cjk>
+0x8C9E	U+6372	# <cjk>
+0x8C9F	U+691C	# <cjk>
+0x8CA0	U+6A29	# <cjk>
+0x8CA1	U+727D	# <cjk>
+0x8CA2	U+72AC	# <cjk>
+0x8CA3	U+732E	# <cjk>
+0x8CA4	U+7814	# <cjk>
+0x8CA5	U+786F	# <cjk>
+0x8CA6	U+7D79	# <cjk>
+0x8CA7	U+770C	# <cjk>
+0x8CA8	U+80A9	# <cjk>
+0x8CA9	U+898B	# <cjk>
+0x8CAA	U+8B19	# <cjk>
+0x8CAB	U+8CE2	# <cjk>
+0x8CAC	U+8ED2	# <cjk>
+0x8CAD	U+9063	# <cjk>
+0x8CAE	U+9375	# <cjk>
+0x8CAF	U+967A	# <cjk>
+0x8CB0	U+9855	# <cjk>
+0x8CB1	U+9A13	# <cjk>
+0x8CB2	U+9E78	# <cjk>
+0x8CB3	U+5143	# <cjk>
+0x8CB4	U+539F	# <cjk>
+0x8CB5	U+53B3	# <cjk>
+0x8CB6	U+5E7B	# <cjk>
+0x8CB7	U+5F26	# <cjk>
+0x8CB8	U+6E1B	# <cjk>
+0x8CB9	U+6E90	# <cjk>
+0x8CBA	U+7384	# <cjk>
+0x8CBB	U+73FE	# <cjk>
+0x8CBC	U+7D43	# <cjk>
+0x8CBD	U+8237	# <cjk>
+0x8CBE	U+8A00	# <cjk>
+0x8CBF	U+8AFA	# <cjk>
+0x8CC0	U+9650	# <cjk>
+0x8CC1	U+4E4E	# <cjk>
+0x8CC2	U+500B	# <cjk>
+0x8CC3	U+53E4	# <cjk>
+0x8CC4	U+547C	# <cjk>
+0x8CC5	U+56FA	# <cjk>
+0x8CC6	U+59D1	# <cjk>
+0x8CC7	U+5B64	# <cjk>
+0x8CC8	U+5DF1	# <cjk>
+0x8CC9	U+5EAB	# <cjk>
+0x8CCA	U+5F27	# <cjk>
+0x8CCB	U+6238	# <cjk>
+0x8CCC	U+6545	# <cjk>
+0x8CCD	U+67AF	# <cjk>
+0x8CCE	U+6E56	# <cjk>
+0x8CCF	U+72D0	# <cjk>
+0x8CD0	U+7CCA	# <cjk>
+0x8CD1	U+88B4	# <cjk>
+0x8CD2	U+80A1	# <cjk>
+0x8CD3	U+80E1	# <cjk>
+0x8CD4	U+83F0	# <cjk>
+0x8CD5	U+864E	# <cjk>
+0x8CD6	U+8A87	# <cjk>
+0x8CD7	U+8DE8	# <cjk>
+0x8CD8	U+9237	# <cjk>
+0x8CD9	U+96C7	# <cjk>
+0x8CDA	U+9867	# <cjk>
+0x8CDB	U+9F13	# <cjk>
+0x8CDC	U+4E94	# <cjk>
+0x8CDD	U+4E92	# <cjk>
+0x8CDE	U+4F0D	# <cjk>
+0x8CDF	U+5348	# <cjk>
+0x8CE0	U+5449	# <cjk>
+0x8CE1	U+543E	# <cjk>
+0x8CE2	U+5A2F	# <cjk>
+0x8CE3	U+5F8C	# <cjk>
+0x8CE4	U+5FA1	# <cjk>
+0x8CE5	U+609F	# <cjk>
+0x8CE6	U+68A7	# <cjk>
+0x8CE7	U+6A8E	# <cjk>
+0x8CE8	U+745A	# <cjk>
+0x8CE9	U+7881	# <cjk>
+0x8CEA	U+8A9E	# <cjk>
+0x8CEB	U+8AA4	# <cjk>
+0x8CEC	U+8B77	# <cjk>
+0x8CED	U+9190	# <cjk>
+0x8CEE	U+4E5E	# <cjk>
+0x8CEF	U+9BC9	# <cjk>
+0x8CF0	U+4EA4	# <cjk>
+0x8CF1	U+4F7C	# <cjk>
+0x8CF2	U+4FAF	# <cjk>
+0x8CF3	U+5019	# <cjk>
+0x8CF4	U+5016	# <cjk>
+0x8CF5	U+5149	# <cjk>
+0x8CF6	U+516C	# <cjk>
+0x8CF7	U+529F	# <cjk>
+0x8CF8	U+52B9	# <cjk>
+0x8CF9	U+52FE	# <cjk>
+0x8CFA	U+539A	# <cjk>
+0x8CFB	U+53E3	# <cjk>
+0x8CFC	U+5411	# <cjk>
+0x8D40	U+540E	# <cjk>
+0x8D41	U+5589	# <cjk>
+0x8D42	U+5751	# <cjk>
+0x8D43	U+57A2	# <cjk>
+0x8D44	U+597D	# <cjk>
+0x8D45	U+5B54	# <cjk>
+0x8D46	U+5B5D	# <cjk>
+0x8D47	U+5B8F	# <cjk>
+0x8D48	U+5DE5	# <cjk>
+0x8D49	U+5DE7	# <cjk>
+0x8D4A	U+5DF7	# <cjk>
+0x8D4B	U+5E78	# <cjk>
+0x8D4C	U+5E83	# <cjk>
+0x8D4D	U+5E9A	# <cjk>
+0x8D4E	U+5EB7	# <cjk>
+0x8D4F	U+5F18	# <cjk>
+0x8D50	U+6052	# <cjk>
+0x8D51	U+614C	# <cjk>
+0x8D52	U+6297	# <cjk>
+0x8D53	U+62D8	# <cjk>
+0x8D54	U+63A7	# <cjk>
+0x8D55	U+653B	# <cjk>
+0x8D56	U+6602	# <cjk>
+0x8D57	U+6643	# <cjk>
+0x8D58	U+66F4	# <cjk>
+0x8D59	U+676D	# <cjk>
+0x8D5A	U+6821	# <cjk>
+0x8D5B	U+6897	# <cjk>
+0x8D5C	U+69CB	# <cjk>
+0x8D5D	U+6C5F	# <cjk>
+0x8D5E	U+6D2A	# <cjk>
+0x8D5F	U+6D69	# <cjk>
+0x8D60	U+6E2F	# <cjk>
+0x8D61	U+6E9D	# <cjk>
+0x8D62	U+7532	# <cjk>
+0x8D63	U+7687	# <cjk>
+0x8D64	U+786C	# <cjk>
+0x8D65	U+7A3F	# <cjk>
+0x8D66	U+7CE0	# <cjk>
+0x8D67	U+7D05	# <cjk>
+0x8D68	U+7D18	# <cjk>
+0x8D69	U+7D5E	# <cjk>
+0x8D6A	U+7DB1	# <cjk>
+0x8D6B	U+8015	# <cjk>
+0x8D6C	U+8003	# <cjk>
+0x8D6D	U+80AF	# <cjk>
+0x8D6E	U+80B1	# <cjk>
+0x8D6F	U+8154	# <cjk>
+0x8D70	U+818F	# <cjk>
+0x8D71	U+822A	# <cjk>
+0x8D72	U+8352	# <cjk>
+0x8D73	U+884C	# <cjk>
+0x8D74	U+8861	# <cjk>
+0x8D75	U+8B1B	# <cjk>
+0x8D76	U+8CA2	# <cjk>
+0x8D77	U+8CFC	# <cjk>
+0x8D78	U+90CA	# <cjk>
+0x8D79	U+9175	# <cjk>
+0x8D7A	U+9271	# <cjk>
+0x8D7B	U+783F	# <cjk>
+0x8D7C	U+92FC	# <cjk>
+0x8D7D	U+95A4	# <cjk>
+0x8D7E	U+964D	# <cjk>
+0x8D80	U+9805	# <cjk>
+0x8D81	U+9999	# <cjk>
+0x8D82	U+9AD8	# <cjk>
+0x8D83	U+9D3B	# <cjk>
+0x8D84	U+525B	# <cjk>
+0x8D85	U+52AB	# <cjk>
+0x8D86	U+53F7	# <cjk>
+0x8D87	U+5408	# <cjk>
+0x8D88	U+58D5	# <cjk>
+0x8D89	U+62F7	# <cjk>
+0x8D8A	U+6FE0	# <cjk>
+0x8D8B	U+8C6A	# <cjk>
+0x8D8C	U+8F5F	# <cjk>
+0x8D8D	U+9EB9	# <cjk>
+0x8D8E	U+514B	# <cjk>
+0x8D8F	U+523B	# <cjk>
+0x8D90	U+544A	# <cjk>
+0x8D91	U+56FD	# <cjk>
+0x8D92	U+7A40	# <cjk>
+0x8D93	U+9177	# <cjk>
+0x8D94	U+9D60	# <cjk>
+0x8D95	U+9ED2	# <cjk>
+0x8D96	U+7344	# <cjk>
+0x8D97	U+6F09	# <cjk>
+0x8D98	U+8170	# <cjk>
+0x8D99	U+7511	# <cjk>
+0x8D9A	U+5FFD	# <cjk>
+0x8D9B	U+60DA	# <cjk>
+0x8D9C	U+9AA8	# <cjk>
+0x8D9D	U+72DB	# <cjk>
+0x8D9E	U+8FBC	# <cjk>
+0x8D9F	U+6B64	# <cjk>
+0x8DA0	U+9803	# <cjk>
+0x8DA1	U+4ECA	# <cjk>
+0x8DA2	U+56F0	# <cjk>
+0x8DA3	U+5764	# <cjk>
+0x8DA4	U+58BE	# <cjk>
+0x8DA5	U+5A5A	# <cjk>
+0x8DA6	U+6068	# <cjk>
+0x8DA7	U+61C7	# <cjk>
+0x8DA8	U+660F	# <cjk>
+0x8DA9	U+6606	# <cjk>
+0x8DAA	U+6839	# <cjk>
+0x8DAB	U+68B1	# <cjk>
+0x8DAC	U+6DF7	# <cjk>
+0x8DAD	U+75D5	# <cjk>
+0x8DAE	U+7D3A	# <cjk>
+0x8DAF	U+826E	# <cjk>
+0x8DB0	U+9B42	# <cjk>
+0x8DB1	U+4E9B	# <cjk>
+0x8DB2	U+4F50	# <cjk>
+0x8DB3	U+53C9	# <cjk>
+0x8DB4	U+5506	# <cjk>
+0x8DB5	U+5D6F	# <cjk>
+0x8DB6	U+5DE6	# <cjk>
+0x8DB7	U+5DEE	# <cjk>
+0x8DB8	U+67FB	# <cjk>
+0x8DB9	U+6C99	# <cjk>
+0x8DBA	U+7473	# <cjk>
+0x8DBB	U+7802	# <cjk>
+0x8DBC	U+8A50	# <cjk>
+0x8DBD	U+9396	# <cjk>
+0x8DBE	U+88DF	# <cjk>
+0x8DBF	U+5750	# <cjk>
+0x8DC0	U+5EA7	# <cjk>
+0x8DC1	U+632B	# <cjk>
+0x8DC2	U+50B5	# <cjk>
+0x8DC3	U+50AC	# <cjk>
+0x8DC4	U+518D	# <cjk>
+0x8DC5	U+6700	# <cjk>
+0x8DC6	U+54C9	# <cjk>
+0x8DC7	U+585E	# <cjk>
+0x8DC8	U+59BB	# <cjk>
+0x8DC9	U+5BB0	# <cjk>
+0x8DCA	U+5F69	# <cjk>
+0x8DCB	U+624D	# <cjk>
+0x8DCC	U+63A1	# <cjk>
+0x8DCD	U+683D	# <cjk>
+0x8DCE	U+6B73	# <cjk>
+0x8DCF	U+6E08	# <cjk>
+0x8DD0	U+707D	# <cjk>
+0x8DD1	U+91C7	# <cjk>
+0x8DD2	U+7280	# <cjk>
+0x8DD3	U+7815	# <cjk>
+0x8DD4	U+7826	# <cjk>
+0x8DD5	U+796D	# <cjk>
+0x8DD6	U+658E	# <cjk>
+0x8DD7	U+7D30	# <cjk>
+0x8DD8	U+83DC	# <cjk>
+0x8DD9	U+88C1	# <cjk>
+0x8DDA	U+8F09	# <cjk>
+0x8DDB	U+969B	# <cjk>
+0x8DDC	U+5264	# <cjk>
+0x8DDD	U+5728	# <cjk>
+0x8DDE	U+6750	# <cjk>
+0x8DDF	U+7F6A	# <cjk>
+0x8DE0	U+8CA1	# <cjk>
+0x8DE1	U+51B4	# <cjk>
+0x8DE2	U+5742	# <cjk>
+0x8DE3	U+962A	# <cjk>
+0x8DE4	U+583A	# <cjk>
+0x8DE5	U+698A	# <cjk>
+0x8DE6	U+80B4	# <cjk>
+0x8DE7	U+54B2	# <cjk>
+0x8DE8	U+5D0E	# <cjk>
+0x8DE9	U+57FC	# <cjk>
+0x8DEA	U+7895	# <cjk>
+0x8DEB	U+9DFA	# <cjk>
+0x8DEC	U+4F5C	# <cjk>
+0x8DED	U+524A	# <cjk>
+0x8DEE	U+548B	# <cjk>
+0x8DEF	U+643E	# <cjk>
+0x8DF0	U+6628	# <cjk>
+0x8DF1	U+6714	# <cjk>
+0x8DF2	U+67F5	# <cjk>
+0x8DF3	U+7A84	# <cjk>
+0x8DF4	U+7B56	# <cjk>
+0x8DF5	U+7D22	# <cjk>
+0x8DF6	U+932F	# <cjk>
+0x8DF7	U+685C	# <cjk>
+0x8DF8	U+9BAD	# <cjk>
+0x8DF9	U+7B39	# <cjk>
+0x8DFA	U+5319	# <cjk>
+0x8DFB	U+518A	# <cjk>
+0x8DFC	U+5237	# <cjk>
+0x8E40	U+5BDF	# <cjk>
+0x8E41	U+62F6	# <cjk>
+0x8E42	U+64AE	# <cjk>
+0x8E43	U+64E6	# <cjk>
+0x8E44	U+672D	# <cjk>
+0x8E45	U+6BBA	# <cjk>
+0x8E46	U+85A9	# <cjk>
+0x8E47	U+96D1	# <cjk>
+0x8E48	U+7690	# <cjk>
+0x8E49	U+9BD6	# <cjk>
+0x8E4A	U+634C	# <cjk>
+0x8E4B	U+9306	# <cjk>
+0x8E4C	U+9BAB	# <cjk>
+0x8E4D	U+76BF	# <cjk>
+0x8E4E	U+6652	# <cjk>
+0x8E4F	U+4E09	# <cjk>
+0x8E50	U+5098	# <cjk>
+0x8E51	U+53C2	# <cjk>
+0x8E52	U+5C71	# <cjk>
+0x8E53	U+60E8	# <cjk>
+0x8E54	U+6492	# <cjk>
+0x8E55	U+6563	# <cjk>
+0x8E56	U+685F	# <cjk>
+0x8E57	U+71E6	# <cjk>
+0x8E58	U+73CA	# <cjk>
+0x8E59	U+7523	# <cjk>
+0x8E5A	U+7B97	# <cjk>
+0x8E5B	U+7E82	# <cjk>
+0x8E5C	U+8695	# <cjk>
+0x8E5D	U+8B83	# <cjk>
+0x8E5E	U+8CDB	# <cjk>
+0x8E5F	U+9178	# <cjk>
+0x8E60	U+9910	# <cjk>
+0x8E61	U+65AC	# <cjk>
+0x8E62	U+66AB	# <cjk>
+0x8E63	U+6B8B	# <cjk>
+0x8E64	U+4ED5	# <cjk>
+0x8E65	U+4ED4	# <cjk>
+0x8E66	U+4F3A	# <cjk>
+0x8E67	U+4F7F	# <cjk>
+0x8E68	U+523A	# <cjk>
+0x8E69	U+53F8	# <cjk>
+0x8E6A	U+53F2	# <cjk>
+0x8E6B	U+55E3	# <cjk>
+0x8E6C	U+56DB	# <cjk>
+0x8E6D	U+58EB	# <cjk>
+0x8E6E	U+59CB	# <cjk>
+0x8E6F	U+59C9	# <cjk>
+0x8E70	U+59FF	# <cjk>
+0x8E71	U+5B50	# <cjk>
+0x8E72	U+5C4D	# <cjk>
+0x8E73	U+5E02	# <cjk>
+0x8E74	U+5E2B	# <cjk>
+0x8E75	U+5FD7	# <cjk>
+0x8E76	U+601D	# <cjk>
+0x8E77	U+6307	# <cjk>
+0x8E78	U+652F	# <cjk>
+0x8E79	U+5B5C	# <cjk>
+0x8E7A	U+65AF	# <cjk>
+0x8E7B	U+65BD	# <cjk>
+0x8E7C	U+65E8	# <cjk>
+0x8E7D	U+679D	# <cjk>
+0x8E7E	U+6B62	# <cjk>
+0x8E80	U+6B7B	# <cjk>
+0x8E81	U+6C0F	# <cjk>
+0x8E82	U+7345	# <cjk>
+0x8E83	U+7949	# <cjk>
+0x8E84	U+79C1	# <cjk>
+0x8E85	U+7CF8	# <cjk>
+0x8E86	U+7D19	# <cjk>
+0x8E87	U+7D2B	# <cjk>
+0x8E88	U+80A2	# <cjk>
+0x8E89	U+8102	# <cjk>
+0x8E8A	U+81F3	# <cjk>
+0x8E8B	U+8996	# <cjk>
+0x8E8C	U+8A5E	# <cjk>
+0x8E8D	U+8A69	# <cjk>
+0x8E8E	U+8A66	# <cjk>
+0x8E8F	U+8A8C	# <cjk>
+0x8E90	U+8AEE	# <cjk>
+0x8E91	U+8CC7	# <cjk>
+0x8E92	U+8CDC	# <cjk>
+0x8E93	U+96CC	# <cjk>
+0x8E94	U+98FC	# <cjk>
+0x8E95	U+6B6F	# <cjk>
+0x8E96	U+4E8B	# <cjk>
+0x8E97	U+4F3C	# <cjk>
+0x8E98	U+4F8D	# <cjk>
+0x8E99	U+5150	# <cjk>
+0x8E9A	U+5B57	# <cjk>
+0x8E9B	U+5BFA	# <cjk>
+0x8E9C	U+6148	# <cjk>
+0x8E9D	U+6301	# <cjk>
+0x8E9E	U+6642	# <cjk>
+0x8E9F	U+6B21	# <cjk>
+0x8EA0	U+6ECB	# <cjk>
+0x8EA1	U+6CBB	# <cjk>
+0x8EA2	U+723E	# <cjk>
+0x8EA3	U+74BD	# <cjk>
+0x8EA4	U+75D4	# <cjk>
+0x8EA5	U+78C1	# <cjk>
+0x8EA6	U+793A	# <cjk>
+0x8EA7	U+800C	# <cjk>
+0x8EA8	U+8033	# <cjk>
+0x8EA9	U+81EA	# <cjk>
+0x8EAA	U+8494	# <cjk>
+0x8EAB	U+8F9E	# <cjk>
+0x8EAC	U+6C50	# <cjk>
+0x8EAD	U+9E7F	# <cjk>
+0x8EAE	U+5F0F	# <cjk>
+0x8EAF	U+8B58	# <cjk>
+0x8EB0	U+9D2B	# <cjk>
+0x8EB1	U+7AFA	# <cjk>
+0x8EB2	U+8EF8	# <cjk>
+0x8EB3	U+5B8D	# <cjk>
+0x8EB4	U+96EB	# <cjk>
+0x8EB5	U+4E03	# <cjk>
+0x8EB6	U+53F1	# <cjk>
+0x8EB7	U+57F7	# <cjk>
+0x8EB8	U+5931	# <cjk>
+0x8EB9	U+5AC9	# <cjk>
+0x8EBA	U+5BA4	# <cjk>
+0x8EBB	U+6089	# <cjk>
+0x8EBC	U+6E7F	# <cjk>
+0x8EBD	U+6F06	# <cjk>
+0x8EBE	U+75BE	# <cjk>
+0x8EBF	U+8CEA	# <cjk>
+0x8EC0	U+5B9F	# <cjk>
+0x8EC1	U+8500	# <cjk>
+0x8EC2	U+7BE0	# <cjk>
+0x8EC3	U+5072	# <cjk>
+0x8EC4	U+67F4	# <cjk>
+0x8EC5	U+829D	# <cjk>
+0x8EC6	U+5C61	# <cjk>
+0x8EC7	U+854A	# <cjk>
+0x8EC8	U+7E1E	# <cjk>
+0x8EC9	U+820E	# <cjk>
+0x8ECA	U+5199	# <cjk>
+0x8ECB	U+5C04	# <cjk>
+0x8ECC	U+6368	# <cjk>
+0x8ECD	U+8D66	# <cjk>
+0x8ECE	U+659C	# <cjk>
+0x8ECF	U+716E	# <cjk>
+0x8ED0	U+793E	# <cjk>
+0x8ED1	U+7D17	# <cjk>
+0x8ED2	U+8005	# <cjk>
+0x8ED3	U+8B1D	# <cjk>
+0x8ED4	U+8ECA	# <cjk>
+0x8ED5	U+906E	# <cjk>
+0x8ED6	U+86C7	# <cjk>
+0x8ED7	U+90AA	# <cjk>
+0x8ED8	U+501F	# <cjk>
+0x8ED9	U+52FA	# <cjk>
+0x8EDA	U+5C3A	# <cjk>
+0x8EDB	U+6753	# <cjk>
+0x8EDC	U+707C	# <cjk>
+0x8EDD	U+7235	# <cjk>
+0x8EDE	U+914C	# <cjk>
+0x8EDF	U+91C8	# <cjk>
+0x8EE0	U+932B	# <cjk>
+0x8EE1	U+82E5	# <cjk>
+0x8EE2	U+5BC2	# <cjk>
+0x8EE3	U+5F31	# <cjk>
+0x8EE4	U+60F9	# <cjk>
+0x8EE5	U+4E3B	# <cjk>
+0x8EE6	U+53D6	# <cjk>
+0x8EE7	U+5B88	# <cjk>
+0x8EE8	U+624B	# <cjk>
+0x8EE9	U+6731	# <cjk>
+0x8EEA	U+6B8A	# <cjk>
+0x8EEB	U+72E9	# <cjk>
+0x8EEC	U+73E0	# <cjk>
+0x8EED	U+7A2E	# <cjk>
+0x8EEE	U+816B	# <cjk>
+0x8EEF	U+8DA3	# <cjk>
+0x8EF0	U+9152	# <cjk>
+0x8EF1	U+9996	# <cjk>
+0x8EF2	U+5112	# <cjk>
+0x8EF3	U+53D7	# <cjk>
+0x8EF4	U+546A	# <cjk>
+0x8EF5	U+5BFF	# <cjk>
+0x8EF6	U+6388	# <cjk>
+0x8EF7	U+6A39	# <cjk>
+0x8EF8	U+7DAC	# <cjk>
+0x8EF9	U+9700	# <cjk>
+0x8EFA	U+56DA	# <cjk>
+0x8EFB	U+53CE	# <cjk>
+0x8EFC	U+5468	# <cjk>
+0x8F40	U+5B97	# <cjk>
+0x8F41	U+5C31	# <cjk>
+0x8F42	U+5DDE	# <cjk>
+0x8F43	U+4FEE	# <cjk>
+0x8F44	U+6101	# <cjk>
+0x8F45	U+62FE	# <cjk>
+0x8F46	U+6D32	# <cjk>
+0x8F47	U+79C0	# <cjk>
+0x8F48	U+79CB	# <cjk>
+0x8F49	U+7D42	# <cjk>
+0x8F4A	U+7E4D	# <cjk>
+0x8F4B	U+7FD2	# <cjk>
+0x8F4C	U+81ED	# <cjk>
+0x8F4D	U+821F	# <cjk>
+0x8F4E	U+8490	# <cjk>
+0x8F4F	U+8846	# <cjk>
+0x8F50	U+8972	# <cjk>
+0x8F51	U+8B90	# <cjk>
+0x8F52	U+8E74	# <cjk>
+0x8F53	U+8F2F	# <cjk>
+0x8F54	U+9031	# <cjk>
+0x8F55	U+914B	# <cjk>
+0x8F56	U+916C	# <cjk>
+0x8F57	U+96C6	# <cjk>
+0x8F58	U+919C	# <cjk>
+0x8F59	U+4EC0	# <cjk>
+0x8F5A	U+4F4F	# <cjk>
+0x8F5B	U+5145	# <cjk>
+0x8F5C	U+5341	# <cjk>
+0x8F5D	U+5F93	# <cjk>
+0x8F5E	U+620E	# <cjk>
+0x8F5F	U+67D4	# <cjk>
+0x8F60	U+6C41	# <cjk>
+0x8F61	U+6E0B	# <cjk>
+0x8F62	U+7363	# <cjk>
+0x8F63	U+7E26	# <cjk>
+0x8F64	U+91CD	# <cjk>
+0x8F65	U+9283	# <cjk>
+0x8F66	U+53D4	# <cjk>
+0x8F67	U+5919	# <cjk>
+0x8F68	U+5BBF	# <cjk>
+0x8F69	U+6DD1	# <cjk>
+0x8F6A	U+795D	# <cjk>
+0x8F6B	U+7E2E	# <cjk>
+0x8F6C	U+7C9B	# <cjk>
+0x8F6D	U+587E	# <cjk>
+0x8F6E	U+719F	# <cjk>
+0x8F6F	U+51FA	# <cjk>
+0x8F70	U+8853	# <cjk>
+0x8F71	U+8FF0	# <cjk>
+0x8F72	U+4FCA	# <cjk>
+0x8F73	U+5CFB	# <cjk>
+0x8F74	U+6625	# <cjk>
+0x8F75	U+77AC	# <cjk>
+0x8F76	U+7AE3	# <cjk>
+0x8F77	U+821C	# <cjk>
+0x8F78	U+99FF	# <cjk>
+0x8F79	U+51C6	# <cjk>
+0x8F7A	U+5FAA	# <cjk>
+0x8F7B	U+65EC	# <cjk>
+0x8F7C	U+696F	# <cjk>
+0x8F7D	U+6B89	# <cjk>
+0x8F7E	U+6DF3	# <cjk>
+0x8F80	U+6E96	# <cjk>
+0x8F81	U+6F64	# <cjk>
+0x8F82	U+76FE	# <cjk>
+0x8F83	U+7D14	# <cjk>
+0x8F84	U+5DE1	# <cjk>
+0x8F85	U+9075	# <cjk>
+0x8F86	U+9187	# <cjk>
+0x8F87	U+9806	# <cjk>
+0x8F88	U+51E6	# <cjk>
+0x8F89	U+521D	# <cjk>
+0x8F8A	U+6240	# <cjk>
+0x8F8B	U+6691	# <cjk>
+0x8F8C	U+66D9	# <cjk>
+0x8F8D	U+6E1A	# <cjk>
+0x8F8E	U+5EB6	# <cjk>
+0x8F8F	U+7DD2	# <cjk>
+0x8F90	U+7F72	# <cjk>
+0x8F91	U+66F8	# <cjk>
+0x8F92	U+85AF	# <cjk>
+0x8F93	U+85F7	# <cjk>
+0x8F94	U+8AF8	# <cjk>
+0x8F95	U+52A9	# <cjk>
+0x8F96	U+53D9	# <cjk>
+0x8F97	U+5973	# <cjk>
+0x8F98	U+5E8F	# <cjk>
+0x8F99	U+5F90	# <cjk>
+0x8F9A	U+6055	# <cjk>
+0x8F9B	U+92E4	# <cjk>
+0x8F9C	U+9664	# <cjk>
+0x8F9D	U+50B7	# <cjk>
+0x8F9E	U+511F	# <cjk>
+0x8F9F	U+52DD	# <cjk>
+0x8FA0	U+5320	# <cjk>
+0x8FA1	U+5347	# <cjk>
+0x8FA2	U+53EC	# <cjk>
+0x8FA3	U+54E8	# <cjk>
+0x8FA4	U+5546	# <cjk>
+0x8FA5	U+5531	# <cjk>
+0x8FA6	U+5617	# <cjk>
+0x8FA7	U+5968	# <cjk>
+0x8FA8	U+59BE	# <cjk>
+0x8FA9	U+5A3C	# <cjk>
+0x8FAA	U+5BB5	# <cjk>
+0x8FAB	U+5C06	# <cjk>
+0x8FAC	U+5C0F	# <cjk>
+0x8FAD	U+5C11	# <cjk>
+0x8FAE	U+5C1A	# <cjk>
+0x8FAF	U+5E84	# <cjk>
+0x8FB0	U+5E8A	# <cjk>
+0x8FB1	U+5EE0	# <cjk>
+0x8FB2	U+5F70	# <cjk>
+0x8FB3	U+627F	# <cjk>
+0x8FB4	U+6284	# <cjk>
+0x8FB5	U+62DB	# <cjk>
+0x8FB6	U+638C	# <cjk>
+0x8FB7	U+6377	# <cjk>
+0x8FB8	U+6607	# <cjk>
+0x8FB9	U+660C	# <cjk>
+0x8FBA	U+662D	# <cjk>
+0x8FBB	U+6676	# <cjk>
+0x8FBC	U+677E	# <cjk>
+0x8FBD	U+68A2	# <cjk>
+0x8FBE	U+6A1F	# <cjk>
+0x8FBF	U+6A35	# <cjk>
+0x8FC0	U+6CBC	# <cjk>
+0x8FC1	U+6D88	# <cjk>
+0x8FC2	U+6E09	# <cjk>
+0x8FC3	U+6E58	# <cjk>
+0x8FC4	U+713C	# <cjk>
+0x8FC5	U+7126	# <cjk>
+0x8FC6	U+7167	# <cjk>
+0x8FC7	U+75C7	# <cjk>
+0x8FC8	U+7701	# <cjk>
+0x8FC9	U+785D	# <cjk>
+0x8FCA	U+7901	# <cjk>
+0x8FCB	U+7965	# <cjk>
+0x8FCC	U+79F0	# <cjk>
+0x8FCD	U+7AE0	# <cjk>
+0x8FCE	U+7B11	# <cjk>
+0x8FCF	U+7CA7	# <cjk>
+0x8FD0	U+7D39	# <cjk>
+0x8FD1	U+8096	# <cjk>
+0x8FD2	U+83D6	# <cjk>
+0x8FD3	U+848B	# <cjk>
+0x8FD4	U+8549	# <cjk>
+0x8FD5	U+885D	# <cjk>
+0x8FD6	U+88F3	# <cjk>
+0x8FD7	U+8A1F	# <cjk>
+0x8FD8	U+8A3C	# <cjk>
+0x8FD9	U+8A54	# <cjk>
+0x8FDA	U+8A73	# <cjk>
+0x8FDB	U+8C61	# <cjk>
+0x8FDC	U+8CDE	# <cjk>
+0x8FDD	U+91A4	# <cjk>
+0x8FDE	U+9266	# <cjk>
+0x8FDF	U+937E	# <cjk>
+0x8FE0	U+9418	# <cjk>
+0x8FE1	U+969C	# <cjk>
+0x8FE2	U+9798	# <cjk>
+0x8FE3	U+4E0A	# <cjk>
+0x8FE4	U+4E08	# <cjk>
+0x8FE5	U+4E1E	# <cjk>
+0x8FE6	U+4E57	# <cjk>
+0x8FE7	U+5197	# <cjk>
+0x8FE8	U+5270	# <cjk>
+0x8FE9	U+57CE	# <cjk>
+0x8FEA	U+5834	# <cjk>
+0x8FEB	U+58CC	# <cjk>
+0x8FEC	U+5B22	# <cjk>
+0x8FED	U+5E38	# <cjk>
+0x8FEE	U+60C5	# <cjk>
+0x8FEF	U+64FE	# <cjk>
+0x8FF0	U+6761	# <cjk>
+0x8FF1	U+6756	# <cjk>
+0x8FF2	U+6D44	# <cjk>
+0x8FF3	U+72B6	# <cjk>
+0x8FF4	U+7573	# <cjk>
+0x8FF5	U+7A63	# <cjk>
+0x8FF6	U+84B8	# <cjk>
+0x8FF7	U+8B72	# <cjk>
+0x8FF8	U+91B8	# <cjk>
+0x8FF9	U+9320	# <cjk>
+0x8FFA	U+5631	# <cjk>
+0x8FFB	U+57F4	# <cjk>
+0x8FFC	U+98FE	# <cjk>
+0x9040	U+62ED	# <cjk>
+0x9041	U+690D	# <cjk>
+0x9042	U+6B96	# <cjk>
+0x9043	U+71ED	# <cjk>
+0x9044	U+7E54	# <cjk>
+0x9045	U+8077	# <cjk>
+0x9046	U+8272	# <cjk>
+0x9047	U+89E6	# <cjk>
+0x9048	U+98DF	# <cjk>
+0x9049	U+8755	# <cjk>
+0x904A	U+8FB1	# <cjk>
+0x904B	U+5C3B	# <cjk>
+0x904C	U+4F38	# <cjk>
+0x904D	U+4FE1	# <cjk>
+0x904E	U+4FB5	# <cjk>
+0x904F	U+5507	# <cjk>
+0x9050	U+5A20	# <cjk>
+0x9051	U+5BDD	# <cjk>
+0x9052	U+5BE9	# <cjk>
+0x9053	U+5FC3	# <cjk>
+0x9054	U+614E	# <cjk>
+0x9055	U+632F	# <cjk>
+0x9056	U+65B0	# <cjk>
+0x9057	U+664B	# <cjk>
+0x9058	U+68EE	# <cjk>
+0x9059	U+699B	# <cjk>
+0x905A	U+6D78	# <cjk>
+0x905B	U+6DF1	# <cjk>
+0x905C	U+7533	# <cjk>
+0x905D	U+75B9	# <cjk>
+0x905E	U+771F	# <cjk>
+0x905F	U+795E	# <cjk>
+0x9060	U+79E6	# <cjk>
+0x9061	U+7D33	# <cjk>
+0x9062	U+81E3	# <cjk>
+0x9063	U+82AF	# <cjk>
+0x9064	U+85AA	# <cjk>
+0x9065	U+89AA	# <cjk>
+0x9066	U+8A3A	# <cjk>
+0x9067	U+8EAB	# <cjk>
+0x9068	U+8F9B	# <cjk>
+0x9069	U+9032	# <cjk>
+0x906A	U+91DD	# <cjk>
+0x906B	U+9707	# <cjk>
+0x906C	U+4EBA	# <cjk>
+0x906D	U+4EC1	# <cjk>
+0x906E	U+5203	# <cjk>
+0x906F	U+5875	# <cjk>
+0x9070	U+58EC	# <cjk>
+0x9071	U+5C0B	# <cjk>
+0x9072	U+751A	# <cjk>
+0x9073	U+5C3D	# <cjk>
+0x9074	U+814E	# <cjk>
+0x9075	U+8A0A	# <cjk>
+0x9076	U+8FC5	# <cjk>
+0x9077	U+9663	# <cjk>
+0x9078	U+976D	# <cjk>
+0x9079	U+7B25	# <cjk>
+0x907A	U+8ACF	# <cjk>
+0x907B	U+9808	# <cjk>
+0x907C	U+9162	# <cjk>
+0x907D	U+56F3	# <cjk>
+0x907E	U+53A8	# <cjk>
+0x9080	U+9017	# <cjk>
+0x9081	U+5439	# <cjk>
+0x9082	U+5782	# <cjk>
+0x9083	U+5E25	# <cjk>
+0x9084	U+63A8	# <cjk>
+0x9085	U+6C34	# <cjk>
+0x9086	U+708A	# <cjk>
+0x9087	U+7761	# <cjk>
+0x9088	U+7C8B	# <cjk>
+0x9089	U+7FE0	# <cjk>
+0x908A	U+8870	# <cjk>
+0x908B	U+9042	# <cjk>
+0x908C	U+9154	# <cjk>
+0x908D	U+9310	# <cjk>
+0x908E	U+9318	# <cjk>
+0x908F	U+968F	# <cjk>
+0x9090	U+745E	# <cjk>
+0x9091	U+9AC4	# <cjk>
+0x9092	U+5D07	# <cjk>
+0x9093	U+5D69	# <cjk>
+0x9094	U+6570	# <cjk>
+0x9095	U+67A2	# <cjk>
+0x9096	U+8DA8	# <cjk>
+0x9097	U+96DB	# <cjk>
+0x9098	U+636E	# <cjk>
+0x9099	U+6749	# <cjk>
+0x909A	U+6919	# <cjk>
+0x909B	U+83C5	# <cjk>
+0x909C	U+9817	# <cjk>
+0x909D	U+96C0	# <cjk>
+0x909E	U+88FE	# <cjk>
+0x909F	U+6F84	# <cjk>
+0x90A0	U+647A	# <cjk>
+0x90A1	U+5BF8	# <cjk>
+0x90A2	U+4E16	# <cjk>
+0x90A3	U+702C	# <cjk>
+0x90A4	U+755D	# <cjk>
+0x90A5	U+662F	# <cjk>
+0x90A6	U+51C4	# <cjk>
+0x90A7	U+5236	# <cjk>
+0x90A8	U+52E2	# <cjk>
+0x90A9	U+59D3	# <cjk>
+0x90AA	U+5F81	# <cjk>
+0x90AB	U+6027	# <cjk>
+0x90AC	U+6210	# <cjk>
+0x90AD	U+653F	# <cjk>
+0x90AE	U+6574	# <cjk>
+0x90AF	U+661F	# <cjk>
+0x90B0	U+6674	# <cjk>
+0x90B1	U+68F2	# <cjk>
+0x90B2	U+6816	# <cjk>
+0x90B3	U+6B63	# <cjk>
+0x90B4	U+6E05	# <cjk>
+0x90B5	U+7272	# <cjk>
+0x90B6	U+751F	# <cjk>
+0x90B7	U+76DB	# <cjk>
+0x90B8	U+7CBE	# <cjk>
+0x90B9	U+8056	# <cjk>
+0x90BA	U+58F0	# <cjk>
+0x90BB	U+88FD	# <cjk>
+0x90BC	U+897F	# <cjk>
+0x90BD	U+8AA0	# <cjk>
+0x90BE	U+8A93	# <cjk>
+0x90BF	U+8ACB	# <cjk>
+0x90C0	U+901D	# <cjk>
+0x90C1	U+9192	# <cjk>
+0x90C2	U+9752	# <cjk>
+0x90C3	U+9759	# <cjk>
+0x90C4	U+6589	# <cjk>
+0x90C5	U+7A0E	# <cjk>
+0x90C6	U+8106	# <cjk>
+0x90C7	U+96BB	# <cjk>
+0x90C8	U+5E2D	# <cjk>
+0x90C9	U+60DC	# <cjk>
+0x90CA	U+621A	# <cjk>
+0x90CB	U+65A5	# <cjk>
+0x90CC	U+6614	# <cjk>
+0x90CD	U+6790	# <cjk>
+0x90CE	U+77F3	# <cjk>
+0x90CF	U+7A4D	# <cjk>
+0x90D0	U+7C4D	# <cjk>
+0x90D1	U+7E3E	# <cjk>
+0x90D2	U+810A	# <cjk>
+0x90D3	U+8CAC	# <cjk>
+0x90D4	U+8D64	# <cjk>
+0x90D5	U+8DE1	# <cjk>
+0x90D6	U+8E5F	# <cjk>
+0x90D7	U+78A9	# <cjk>
+0x90D8	U+5207	# <cjk>
+0x90D9	U+62D9	# <cjk>
+0x90DA	U+63A5	# <cjk>
+0x90DB	U+6442	# <cjk>
+0x90DC	U+6298	# <cjk>
+0x90DD	U+8A2D	# <cjk>
+0x90DE	U+7A83	# <cjk>
+0x90DF	U+7BC0	# <cjk>
+0x90E0	U+8AAC	# <cjk>
+0x90E1	U+96EA	# <cjk>
+0x90E2	U+7D76	# <cjk>
+0x90E3	U+820C	# <cjk>
+0x90E4	U+8749	# <cjk>
+0x90E5	U+4ED9	# <cjk>
+0x90E6	U+5148	# <cjk>
+0x90E7	U+5343	# <cjk>
+0x90E8	U+5360	# <cjk>
+0x90E9	U+5BA3	# <cjk>
+0x90EA	U+5C02	# <cjk>
+0x90EB	U+5C16	# <cjk>
+0x90EC	U+5DDD	# <cjk>
+0x90ED	U+6226	# <cjk>
+0x90EE	U+6247	# <cjk>
+0x90EF	U+64B0	# <cjk>
+0x90F0	U+6813	# <cjk>
+0x90F1	U+6834	# <cjk>
+0x90F2	U+6CC9	# <cjk>
+0x90F3	U+6D45	# <cjk>
+0x90F4	U+6D17	# <cjk>
+0x90F5	U+67D3	# <cjk>
+0x90F6	U+6F5C	# <cjk>
+0x90F7	U+714E	# <cjk>
+0x90F8	U+717D	# <cjk>
+0x90F9	U+65CB	# <cjk>
+0x90FA	U+7A7F	# <cjk>
+0x90FB	U+7BAD	# <cjk>
+0x90FC	U+7DDA	# <cjk>
+0x9140	U+7E4A	# <cjk>
+0x9141	U+7FA8	# <cjk>
+0x9142	U+817A	# <cjk>
+0x9143	U+821B	# <cjk>
+0x9144	U+8239	# <cjk>
+0x9145	U+85A6	# <cjk>
+0x9146	U+8A6E	# <cjk>
+0x9147	U+8CCE	# <cjk>
+0x9148	U+8DF5	# <cjk>
+0x9149	U+9078	# <cjk>
+0x914A	U+9077	# <cjk>
+0x914B	U+92AD	# <cjk>
+0x914C	U+9291	# <cjk>
+0x914D	U+9583	# <cjk>
+0x914E	U+9BAE	# <cjk>
+0x914F	U+524D	# <cjk>
+0x9150	U+5584	# <cjk>
+0x9151	U+6F38	# <cjk>
+0x9152	U+7136	# <cjk>
+0x9153	U+5168	# <cjk>
+0x9154	U+7985	# <cjk>
+0x9155	U+7E55	# <cjk>
+0x9156	U+81B3	# <cjk>
+0x9157	U+7CCE	# <cjk>
+0x9158	U+564C	# <cjk>
+0x9159	U+5851	# <cjk>
+0x915A	U+5CA8	# <cjk>
+0x915B	U+63AA	# <cjk>
+0x915C	U+66FE	# <cjk>
+0x915D	U+66FD	# <cjk>
+0x915E	U+695A	# <cjk>
+0x915F	U+72D9	# <cjk>
+0x9160	U+758F	# <cjk>
+0x9161	U+758E	# <cjk>
+0x9162	U+790E	# <cjk>
+0x9163	U+7956	# <cjk>
+0x9164	U+79DF	# <cjk>
+0x9165	U+7C97	# <cjk>
+0x9166	U+7D20	# <cjk>
+0x9167	U+7D44	# <cjk>
+0x9168	U+8607	# <cjk>
+0x9169	U+8A34	# <cjk>
+0x916A	U+963B	# <cjk>
+0x916B	U+9061	# <cjk>
+0x916C	U+9F20	# <cjk>
+0x916D	U+50E7	# <cjk>
+0x916E	U+5275	# <cjk>
+0x916F	U+53CC	# <cjk>
+0x9170	U+53E2	# <cjk>
+0x9171	U+5009	# <cjk>
+0x9172	U+55AA	# <cjk>
+0x9173	U+58EE	# <cjk>
+0x9174	U+594F	# <cjk>
+0x9175	U+723D	# <cjk>
+0x9176	U+5B8B	# <cjk>
+0x9177	U+5C64	# <cjk>
+0x9178	U+531D	# <cjk>
+0x9179	U+60E3	# <cjk>
+0x917A	U+60F3	# <cjk>
+0x917B	U+635C	# <cjk>
+0x917C	U+6383	# <cjk>
+0x917D	U+633F	# <cjk>
+0x917E	U+63BB	# <cjk>
+0x9180	U+64CD	# <cjk>
+0x9181	U+65E9	# <cjk>
+0x9182	U+66F9	# <cjk>
+0x9183	U+5DE3	# <cjk>
+0x9184	U+69CD	# <cjk>
+0x9185	U+69FD	# <cjk>
+0x9186	U+6F15	# <cjk>
+0x9187	U+71E5	# <cjk>
+0x9188	U+4E89	# <cjk>
+0x9189	U+75E9	# <cjk>
+0x918A	U+76F8	# <cjk>
+0x918B	U+7A93	# <cjk>
+0x918C	U+7CDF	# <cjk>
+0x918D	U+7DCF	# <cjk>
+0x918E	U+7D9C	# <cjk>
+0x918F	U+8061	# <cjk>
+0x9190	U+8349	# <cjk>
+0x9191	U+8358	# <cjk>
+0x9192	U+846C	# <cjk>
+0x9193	U+84BC	# <cjk>
+0x9194	U+85FB	# <cjk>
+0x9195	U+88C5	# <cjk>
+0x9196	U+8D70	# <cjk>
+0x9197	U+9001	# <cjk>
+0x9198	U+906D	# <cjk>
+0x9199	U+9397	# <cjk>
+0x919A	U+971C	# <cjk>
+0x919B	U+9A12	# <cjk>
+0x919C	U+50CF	# <cjk>
+0x919D	U+5897	# <cjk>
+0x919E	U+618E	# <cjk>
+0x919F	U+81D3	# <cjk>
+0x91A0	U+8535	# <cjk>
+0x91A1	U+8D08	# <cjk>
+0x91A2	U+9020	# <cjk>
+0x91A3	U+4FC3	# <cjk>
+0x91A4	U+5074	# <cjk>
+0x91A5	U+5247	# <cjk>
+0x91A6	U+5373	# <cjk>
+0x91A7	U+606F	# <cjk>
+0x91A8	U+6349	# <cjk>
+0x91A9	U+675F	# <cjk>
+0x91AA	U+6E2C	# <cjk>
+0x91AB	U+8DB3	# <cjk>
+0x91AC	U+901F	# <cjk>
+0x91AD	U+4FD7	# <cjk>
+0x91AE	U+5C5E	# <cjk>
+0x91AF	U+8CCA	# <cjk>
+0x91B0	U+65CF	# <cjk>
+0x91B1	U+7D9A	# <cjk>
+0x91B2	U+5352	# <cjk>
+0x91B3	U+8896	# <cjk>
+0x91B4	U+5176	# <cjk>
+0x91B5	U+63C3	# <cjk>
+0x91B6	U+5B58	# <cjk>
+0x91B7	U+5B6B	# <cjk>
+0x91B8	U+5C0A	# <cjk>
+0x91B9	U+640D	# <cjk>
+0x91BA	U+6751	# <cjk>
+0x91BB	U+905C	# <cjk>
+0x91BC	U+4ED6	# <cjk>
+0x91BD	U+591A	# <cjk>
+0x91BE	U+592A	# <cjk>
+0x91BF	U+6C70	# <cjk>
+0x91C0	U+8A51	# <cjk>
+0x91C1	U+553E	# <cjk>
+0x91C2	U+5815	# <cjk>
+0x91C3	U+59A5	# <cjk>
+0x91C4	U+60F0	# <cjk>
+0x91C5	U+6253	# <cjk>
+0x91C6	U+67C1	# <cjk>
+0x91C7	U+8235	# <cjk>
+0x91C8	U+6955	# <cjk>
+0x91C9	U+9640	# <cjk>
+0x91CA	U+99C4	# <cjk>
+0x91CB	U+9A28	# <cjk>
+0x91CC	U+4F53	# <cjk>
+0x91CD	U+5806	# <cjk>
+0x91CE	U+5BFE	# <cjk>
+0x91CF	U+8010	# <cjk>
+0x91D0	U+5CB1	# <cjk>
+0x91D1	U+5E2F	# <cjk>
+0x91D2	U+5F85	# <cjk>
+0x91D3	U+6020	# <cjk>
+0x91D4	U+614B	# <cjk>
+0x91D5	U+6234	# <cjk>
+0x91D6	U+66FF	# <cjk>
+0x91D7	U+6CF0	# <cjk>
+0x91D8	U+6EDE	# <cjk>
+0x91D9	U+80CE	# <cjk>
+0x91DA	U+817F	# <cjk>
+0x91DB	U+82D4	# <cjk>
+0x91DC	U+888B	# <cjk>
+0x91DD	U+8CB8	# <cjk>
+0x91DE	U+9000	# <cjk>
+0x91DF	U+902E	# <cjk>
+0x91E0	U+968A	# <cjk>
+0x91E1	U+9EDB	# <cjk>
+0x91E2	U+9BDB	# <cjk>
+0x91E3	U+4EE3	# <cjk>
+0x91E4	U+53F0	# <cjk>
+0x91E5	U+5927	# <cjk>
+0x91E6	U+7B2C	# <cjk>
+0x91E7	U+918D	# <cjk>
+0x91E8	U+984C	# <cjk>
+0x91E9	U+9DF9	# <cjk>
+0x91EA	U+6EDD	# <cjk>
+0x91EB	U+7027	# <cjk>
+0x91EC	U+5353	# <cjk>
+0x91ED	U+5544	# <cjk>
+0x91EE	U+5B85	# <cjk>
+0x91EF	U+6258	# <cjk>
+0x91F0	U+629E	# <cjk>
+0x91F1	U+62D3	# <cjk>
+0x91F2	U+6CA2	# <cjk>
+0x91F3	U+6FEF	# <cjk>
+0x91F4	U+7422	# <cjk>
+0x91F5	U+8A17	# <cjk>
+0x91F6	U+9438	# <cjk>
+0x91F7	U+6FC1	# <cjk>
+0x91F8	U+8AFE	# <cjk>
+0x91F9	U+8338	# <cjk>
+0x91FA	U+51E7	# <cjk>
+0x91FB	U+86F8	# <cjk>
+0x91FC	U+53EA	# <cjk>
+0x9240	U+53E9	# <cjk>
+0x9241	U+4F46	# <cjk>
+0x9242	U+9054	# <cjk>
+0x9243	U+8FB0	# <cjk>
+0x9244	U+596A	# <cjk>
+0x9245	U+8131	# <cjk>
+0x9246	U+5DFD	# <cjk>
+0x9247	U+7AEA	# <cjk>
+0x9248	U+8FBF	# <cjk>
+0x9249	U+68DA	# <cjk>
+0x924A	U+8C37	# <cjk>
+0x924B	U+72F8	# <cjk>
+0x924C	U+9C48	# <cjk>
+0x924D	U+6A3D	# <cjk>
+0x924E	U+8AB0	# <cjk>
+0x924F	U+4E39	# <cjk>
+0x9250	U+5358	# <cjk>
+0x9251	U+5606	# <cjk>
+0x9252	U+5766	# <cjk>
+0x9253	U+62C5	# <cjk>
+0x9254	U+63A2	# <cjk>
+0x9255	U+65E6	# <cjk>
+0x9256	U+6B4E	# <cjk>
+0x9257	U+6DE1	# <cjk>
+0x9258	U+6E5B	# <cjk>
+0x9259	U+70AD	# <cjk>
+0x925A	U+77ED	# <cjk>
+0x925B	U+7AEF	# <cjk>
+0x925C	U+7BAA	# <cjk>
+0x925D	U+7DBB	# <cjk>
+0x925E	U+803D	# <cjk>
+0x925F	U+80C6	# <cjk>
+0x9260	U+86CB	# <cjk>
+0x9261	U+8A95	# <cjk>
+0x9262	U+935B	# <cjk>
+0x9263	U+56E3	# <cjk>
+0x9264	U+58C7	# <cjk>
+0x9265	U+5F3E	# <cjk>
+0x9266	U+65AD	# <cjk>
+0x9267	U+6696	# <cjk>
+0x9268	U+6A80	# <cjk>
+0x9269	U+6BB5	# <cjk>
+0x926A	U+7537	# <cjk>
+0x926B	U+8AC7	# <cjk>
+0x926C	U+5024	# <cjk>
+0x926D	U+77E5	# <cjk>
+0x926E	U+5730	# <cjk>
+0x926F	U+5F1B	# <cjk>
+0x9270	U+6065	# <cjk>
+0x9271	U+667A	# <cjk>
+0x9272	U+6C60	# <cjk>
+0x9273	U+75F4	# <cjk>
+0x9274	U+7A1A	# <cjk>
+0x9275	U+7F6E	# <cjk>
+0x9276	U+81F4	# <cjk>
+0x9277	U+8718	# <cjk>
+0x9278	U+9045	# <cjk>
+0x9279	U+99B3	# <cjk>
+0x927A	U+7BC9	# <cjk>
+0x927B	U+755C	# <cjk>
+0x927C	U+7AF9	# <cjk>
+0x927D	U+7B51	# <cjk>
+0x927E	U+84C4	# <cjk>
+0x9280	U+9010	# <cjk>
+0x9281	U+79E9	# <cjk>
+0x9282	U+7A92	# <cjk>
+0x9283	U+8336	# <cjk>
+0x9284	U+5AE1	# <cjk>
+0x9285	U+7740	# <cjk>
+0x9286	U+4E2D	# <cjk>
+0x9287	U+4EF2	# <cjk>
+0x9288	U+5B99	# <cjk>
+0x9289	U+5FE0	# <cjk>
+0x928A	U+62BD	# <cjk>
+0x928B	U+663C	# <cjk>
+0x928C	U+67F1	# <cjk>
+0x928D	U+6CE8	# <cjk>
+0x928E	U+866B	# <cjk>
+0x928F	U+8877	# <cjk>
+0x9290	U+8A3B	# <cjk>
+0x9291	U+914E	# <cjk>
+0x9292	U+92F3	# <cjk>
+0x9293	U+99D0	# <cjk>
+0x9294	U+6A17	# <cjk>
+0x9295	U+7026	# <cjk>
+0x9296	U+732A	# <cjk>
+0x9297	U+82E7	# <cjk>
+0x9298	U+8457	# <cjk>
+0x9299	U+8CAF	# <cjk>
+0x929A	U+4E01	# <cjk>
+0x929B	U+5146	# <cjk>
+0x929C	U+51CB	# <cjk>
+0x929D	U+558B	# <cjk>
+0x929E	U+5BF5	# <cjk>
+0x929F	U+5E16	# <cjk>
+0x92A0	U+5E33	# <cjk>
+0x92A1	U+5E81	# <cjk>
+0x92A2	U+5F14	# <cjk>
+0x92A3	U+5F35	# <cjk>
+0x92A4	U+5F6B	# <cjk>
+0x92A5	U+5FB4	# <cjk>
+0x92A6	U+61F2	# <cjk>
+0x92A7	U+6311	# <cjk>
+0x92A8	U+66A2	# <cjk>
+0x92A9	U+671D	# <cjk>
+0x92AA	U+6F6E	# <cjk>
+0x92AB	U+7252	# <cjk>
+0x92AC	U+753A	# <cjk>
+0x92AD	U+773A	# <cjk>
+0x92AE	U+8074	# <cjk>
+0x92AF	U+8139	# <cjk>
+0x92B0	U+8178	# <cjk>
+0x92B1	U+8776	# <cjk>
+0x92B2	U+8ABF	# <cjk>
+0x92B3	U+8ADC	# <cjk>
+0x92B4	U+8D85	# <cjk>
+0x92B5	U+8DF3	# <cjk>
+0x92B6	U+929A	# <cjk>
+0x92B7	U+9577	# <cjk>
+0x92B8	U+9802	# <cjk>
+0x92B9	U+9CE5	# <cjk>
+0x92BA	U+52C5	# <cjk>
+0x92BB	U+6357	# <cjk>
+0x92BC	U+76F4	# <cjk>
+0x92BD	U+6715	# <cjk>
+0x92BE	U+6C88	# <cjk>
+0x92BF	U+73CD	# <cjk>
+0x92C0	U+8CC3	# <cjk>
+0x92C1	U+93AE	# <cjk>
+0x92C2	U+9673	# <cjk>
+0x92C3	U+6D25	# <cjk>
+0x92C4	U+589C	# <cjk>
+0x92C5	U+690E	# <cjk>
+0x92C6	U+69CC	# <cjk>
+0x92C7	U+8FFD	# <cjk>
+0x92C8	U+939A	# <cjk>
+0x92C9	U+75DB	# <cjk>
+0x92CA	U+901A	# <cjk>
+0x92CB	U+585A	# <cjk>
+0x92CC	U+6802	# <cjk>
+0x92CD	U+63B4	# <cjk>
+0x92CE	U+69FB	# <cjk>
+0x92CF	U+4F43	# <cjk>
+0x92D0	U+6F2C	# <cjk>
+0x92D1	U+67D8	# <cjk>
+0x92D2	U+8FBB	# <cjk>
+0x92D3	U+8526	# <cjk>
+0x92D4	U+7DB4	# <cjk>
+0x92D5	U+9354	# <cjk>
+0x92D6	U+693F	# <cjk>
+0x92D7	U+6F70	# <cjk>
+0x92D8	U+576A	# <cjk>
+0x92D9	U+58F7	# <cjk>
+0x92DA	U+5B2C	# <cjk>
+0x92DB	U+7D2C	# <cjk>
+0x92DC	U+722A	# <cjk>
+0x92DD	U+540A	# <cjk>
+0x92DE	U+91E3	# <cjk>
+0x92DF	U+9DB4	# <cjk>
+0x92E0	U+4EAD	# <cjk>
+0x92E1	U+4F4E	# <cjk>
+0x92E2	U+505C	# <cjk>
+0x92E3	U+5075	# <cjk>
+0x92E4	U+5243	# <cjk>
+0x92E5	U+8C9E	# <cjk>
+0x92E6	U+5448	# <cjk>
+0x92E7	U+5824	# <cjk>
+0x92E8	U+5B9A	# <cjk>
+0x92E9	U+5E1D	# <cjk>
+0x92EA	U+5E95	# <cjk>
+0x92EB	U+5EAD	# <cjk>
+0x92EC	U+5EF7	# <cjk>
+0x92ED	U+5F1F	# <cjk>
+0x92EE	U+608C	# <cjk>
+0x92EF	U+62B5	# <cjk>
+0x92F0	U+633A	# <cjk>
+0x92F1	U+63D0	# <cjk>
+0x92F2	U+68AF	# <cjk>
+0x92F3	U+6C40	# <cjk>
+0x92F4	U+7887	# <cjk>
+0x92F5	U+798E	# <cjk>
+0x92F6	U+7A0B	# <cjk>
+0x92F7	U+7DE0	# <cjk>
+0x92F8	U+8247	# <cjk>
+0x92F9	U+8A02	# <cjk>
+0x92FA	U+8AE6	# <cjk>
+0x92FB	U+8E44	# <cjk>
+0x92FC	U+9013	# <cjk>
+0x9340	U+90B8	# <cjk>
+0x9341	U+912D	# <cjk>
+0x9342	U+91D8	# <cjk>
+0x9343	U+9F0E	# <cjk>
+0x9344	U+6CE5	# <cjk>
+0x9345	U+6458	# <cjk>
+0x9346	U+64E2	# <cjk>
+0x9347	U+6575	# <cjk>
+0x9348	U+6EF4	# <cjk>
+0x9349	U+7684	# <cjk>
+0x934A	U+7B1B	# <cjk>
+0x934B	U+9069	# <cjk>
+0x934C	U+93D1	# <cjk>
+0x934D	U+6EBA	# <cjk>
+0x934E	U+54F2	# <cjk>
+0x934F	U+5FB9	# <cjk>
+0x9350	U+64A4	# <cjk>
+0x9351	U+8F4D	# <cjk>
+0x9352	U+8FED	# <cjk>
+0x9353	U+9244	# <cjk>
+0x9354	U+5178	# <cjk>
+0x9355	U+586B	# <cjk>
+0x9356	U+5929	# <cjk>
+0x9357	U+5C55	# <cjk>
+0x9358	U+5E97	# <cjk>
+0x9359	U+6DFB	# <cjk>
+0x935A	U+7E8F	# <cjk>
+0x935B	U+751C	# <cjk>
+0x935C	U+8CBC	# <cjk>
+0x935D	U+8EE2	# <cjk>
+0x935E	U+985B	# <cjk>
+0x935F	U+70B9	# <cjk>
+0x9360	U+4F1D	# <cjk>
+0x9361	U+6BBF	# <cjk>
+0x9362	U+6FB1	# <cjk>
+0x9363	U+7530	# <cjk>
+0x9364	U+96FB	# <cjk>
+0x9365	U+514E	# <cjk>
+0x9366	U+5410	# <cjk>
+0x9367	U+5835	# <cjk>
+0x9368	U+5857	# <cjk>
+0x9369	U+59AC	# <cjk>
+0x936A	U+5C60	# <cjk>
+0x936B	U+5F92	# <cjk>
+0x936C	U+6597	# <cjk>
+0x936D	U+675C	# <cjk>
+0x936E	U+6E21	# <cjk>
+0x936F	U+767B	# <cjk>
+0x9370	U+83DF	# <cjk>
+0x9371	U+8CED	# <cjk>
+0x9372	U+9014	# <cjk>
+0x9373	U+90FD	# <cjk>
+0x9374	U+934D	# <cjk>
+0x9375	U+7825	# <cjk>
+0x9376	U+783A	# <cjk>
+0x9377	U+52AA	# <cjk>
+0x9378	U+5EA6	# <cjk>
+0x9379	U+571F	# <cjk>
+0x937A	U+5974	# <cjk>
+0x937B	U+6012	# <cjk>
+0x937C	U+5012	# <cjk>
+0x937D	U+515A	# <cjk>
+0x937E	U+51AC	# <cjk>
+0x9380	U+51CD	# <cjk>
+0x9381	U+5200	# <cjk>
+0x9382	U+5510	# <cjk>
+0x9383	U+5854	# <cjk>
+0x9384	U+5858	# <cjk>
+0x9385	U+5957	# <cjk>
+0x9386	U+5B95	# <cjk>
+0x9387	U+5CF6	# <cjk>
+0x9388	U+5D8B	# <cjk>
+0x9389	U+60BC	# <cjk>
+0x938A	U+6295	# <cjk>
+0x938B	U+642D	# <cjk>
+0x938C	U+6771	# <cjk>
+0x938D	U+6843	# <cjk>
+0x938E	U+68BC	# <cjk>
+0x938F	U+68DF	# <cjk>
+0x9390	U+76D7	# <cjk>
+0x9391	U+6DD8	# <cjk>
+0x9392	U+6E6F	# <cjk>
+0x9393	U+6D9B	# <cjk>
+0x9394	U+706F	# <cjk>
+0x9395	U+71C8	# <cjk>
+0x9396	U+5F53	# <cjk>
+0x9397	U+75D8	# <cjk>
+0x9398	U+7977	# <cjk>
+0x9399	U+7B49	# <cjk>
+0x939A	U+7B54	# <cjk>
+0x939B	U+7B52	# <cjk>
+0x939C	U+7CD6	# <cjk>
+0x939D	U+7D71	# <cjk>
+0x939E	U+5230	# <cjk>
+0x939F	U+8463	# <cjk>
+0x93A0	U+8569	# <cjk>
+0x93A1	U+85E4	# <cjk>
+0x93A2	U+8A0E	# <cjk>
+0x93A3	U+8B04	# <cjk>
+0x93A4	U+8C46	# <cjk>
+0x93A5	U+8E0F	# <cjk>
+0x93A6	U+9003	# <cjk>
+0x93A7	U+900F	# <cjk>
+0x93A8	U+9419	# <cjk>
+0x93A9	U+9676	# <cjk>
+0x93AA	U+982D	# <cjk>
+0x93AB	U+9A30	# <cjk>
+0x93AC	U+95D8	# <cjk>
+0x93AD	U+50CD	# <cjk>
+0x93AE	U+52D5	# <cjk>
+0x93AF	U+540C	# <cjk>
+0x93B0	U+5802	# <cjk>
+0x93B1	U+5C0E	# <cjk>
+0x93B2	U+61A7	# <cjk>
+0x93B3	U+649E	# <cjk>
+0x93B4	U+6D1E	# <cjk>
+0x93B5	U+77B3	# <cjk>
+0x93B6	U+7AE5	# <cjk>
+0x93B7	U+80F4	# <cjk>
+0x93B8	U+8404	# <cjk>
+0x93B9	U+9053	# <cjk>
+0x93BA	U+9285	# <cjk>
+0x93BB	U+5CE0	# <cjk>
+0x93BC	U+9D07	# <cjk>
+0x93BD	U+533F	# <cjk>
+0x93BE	U+5F97	# <cjk>
+0x93BF	U+5FB3	# <cjk>
+0x93C0	U+6D9C	# <cjk>
+0x93C1	U+7279	# <cjk>
+0x93C2	U+7763	# <cjk>
+0x93C3	U+79BF	# <cjk>
+0x93C4	U+7BE4	# <cjk>
+0x93C5	U+6BD2	# <cjk>
+0x93C6	U+72EC	# <cjk>
+0x93C7	U+8AAD	# <cjk>
+0x93C8	U+6803	# <cjk>
+0x93C9	U+6A61	# <cjk>
+0x93CA	U+51F8	# <cjk>
+0x93CB	U+7A81	# <cjk>
+0x93CC	U+6934	# <cjk>
+0x93CD	U+5C4A	# <cjk>
+0x93CE	U+9CF6	# <cjk>
+0x93CF	U+82EB	# <cjk>
+0x93D0	U+5BC5	# <cjk>
+0x93D1	U+9149	# <cjk>
+0x93D2	U+701E	# <cjk>
+0x93D3	U+5678	# <cjk>
+0x93D4	U+5C6F	# <cjk>
+0x93D5	U+60C7	# <cjk>
+0x93D6	U+6566	# <cjk>
+0x93D7	U+6C8C	# <cjk>
+0x93D8	U+8C5A	# <cjk>
+0x93D9	U+9041	# <cjk>
+0x93DA	U+9813	# <cjk>
+0x93DB	U+5451	# <cjk>
+0x93DC	U+66C7	# <cjk>
+0x93DD	U+920D	# <cjk>
+0x93DE	U+5948	# <cjk>
+0x93DF	U+90A3	# <cjk>
+0x93E0	U+5185	# <cjk>
+0x93E1	U+4E4D	# <cjk>
+0x93E2	U+51EA	# <cjk>
+0x93E3	U+8599	# <cjk>
+0x93E4	U+8B0E	# <cjk>
+0x93E5	U+7058	# <cjk>
+0x93E6	U+637A	# <cjk>
+0x93E7	U+934B	# <cjk>
+0x93E8	U+6962	# <cjk>
+0x93E9	U+99B4	# <cjk>
+0x93EA	U+7E04	# <cjk>
+0x93EB	U+7577	# <cjk>
+0x93EC	U+5357	# <cjk>
+0x93ED	U+6960	# <cjk>
+0x93EE	U+8EDF	# <cjk>
+0x93EF	U+96E3	# <cjk>
+0x93F0	U+6C5D	# <cjk>
+0x93F1	U+4E8C	# <cjk>
+0x93F2	U+5C3C	# <cjk>
+0x93F3	U+5F10	# <cjk>
+0x93F4	U+8FE9	# <cjk>
+0x93F5	U+5302	# <cjk>
+0x93F6	U+8CD1	# <cjk>
+0x93F7	U+8089	# <cjk>
+0x93F8	U+8679	# <cjk>
+0x93F9	U+5EFF	# <cjk>
+0x93FA	U+65E5	# <cjk>
+0x93FB	U+4E73	# <cjk>
+0x93FC	U+5165	# <cjk>
+0x9440	U+5982	# <cjk>
+0x9441	U+5C3F	# <cjk>
+0x9442	U+97EE	# <cjk>
+0x9443	U+4EFB	# <cjk>
+0x9444	U+598A	# <cjk>
+0x9445	U+5FCD	# <cjk>
+0x9446	U+8A8D	# <cjk>
+0x9447	U+6FE1	# <cjk>
+0x9448	U+79B0	# <cjk>
+0x9449	U+7962	# <cjk>
+0x944A	U+5BE7	# <cjk>
+0x944B	U+8471	# <cjk>
+0x944C	U+732B	# <cjk>
+0x944D	U+71B1	# <cjk>
+0x944E	U+5E74	# <cjk>
+0x944F	U+5FF5	# <cjk>
+0x9450	U+637B	# <cjk>
+0x9451	U+649A	# <cjk>
+0x9452	U+71C3	# <cjk>
+0x9453	U+7C98	# <cjk>
+0x9454	U+4E43	# <cjk>
+0x9455	U+5EFC	# <cjk>
+0x9456	U+4E4B	# <cjk>
+0x9457	U+57DC	# <cjk>
+0x9458	U+56A2	# <cjk>
+0x9459	U+60A9	# <cjk>
+0x945A	U+6FC3	# <cjk>
+0x945B	U+7D0D	# <cjk>
+0x945C	U+80FD	# <cjk>
+0x945D	U+8133	# <cjk>
+0x945E	U+81BF	# <cjk>
+0x945F	U+8FB2	# <cjk>
+0x9460	U+8997	# <cjk>
+0x9461	U+86A4	# <cjk>
+0x9462	U+5DF4	# <cjk>
+0x9463	U+628A	# <cjk>
+0x9464	U+64AD	# <cjk>
+0x9465	U+8987	# <cjk>
+0x9466	U+6777	# <cjk>
+0x9467	U+6CE2	# <cjk>
+0x9468	U+6D3E	# <cjk>
+0x9469	U+7436	# <cjk>
+0x946A	U+7834	# <cjk>
+0x946B	U+5A46	# <cjk>
+0x946C	U+7F75	# <cjk>
+0x946D	U+82AD	# <cjk>
+0x946E	U+99AC	# <cjk>
+0x946F	U+4FF3	# <cjk>
+0x9470	U+5EC3	# <cjk>
+0x9471	U+62DD	# <cjk>
+0x9472	U+6392	# <cjk>
+0x9473	U+6557	# <cjk>
+0x9474	U+676F	# <cjk>
+0x9475	U+76C3	# <cjk>
+0x9476	U+724C	# <cjk>
+0x9477	U+80CC	# <cjk>
+0x9478	U+80BA	# <cjk>
+0x9479	U+8F29	# <cjk>
+0x947A	U+914D	# <cjk>
+0x947B	U+500D	# <cjk>
+0x947C	U+57F9	# <cjk>
+0x947D	U+5A92	# <cjk>
+0x947E	U+6885	# <cjk>
+0x9480	U+6973	# <cjk>
+0x9481	U+7164	# <cjk>
+0x9482	U+72FD	# <cjk>
+0x9483	U+8CB7	# <cjk>
+0x9484	U+58F2	# <cjk>
+0x9485	U+8CE0	# <cjk>
+0x9486	U+966A	# <cjk>
+0x9487	U+9019	# <cjk>
+0x9488	U+877F	# <cjk>
+0x9489	U+79E4	# <cjk>
+0x948A	U+77E7	# <cjk>
+0x948B	U+8429	# <cjk>
+0x948C	U+4F2F	# <cjk>
+0x948D	U+5265	# <cjk>
+0x948E	U+535A	# <cjk>
+0x948F	U+62CD	# <cjk>
+0x9490	U+67CF	# <cjk>
+0x9491	U+6CCA	# <cjk>
+0x9492	U+767D	# <cjk>
+0x9493	U+7B94	# <cjk>
+0x9494	U+7C95	# <cjk>
+0x9495	U+8236	# <cjk>
+0x9496	U+8584	# <cjk>
+0x9497	U+8FEB	# <cjk>
+0x9498	U+66DD	# <cjk>
+0x9499	U+6F20	# <cjk>
+0x949A	U+7206	# <cjk>
+0x949B	U+7E1B	# <cjk>
+0x949C	U+83AB	# <cjk>
+0x949D	U+99C1	# <cjk>
+0x949E	U+9EA6	# <cjk>
+0x949F	U+51FD	# <cjk>
+0x94A0	U+7BB1	# <cjk>
+0x94A1	U+7872	# <cjk>
+0x94A2	U+7BB8	# <cjk>
+0x94A3	U+8087	# <cjk>
+0x94A4	U+7B48	# <cjk>
+0x94A5	U+6AE8	# <cjk>
+0x94A6	U+5E61	# <cjk>
+0x94A7	U+808C	# <cjk>
+0x94A8	U+7551	# <cjk>
+0x94A9	U+7560	# <cjk>
+0x94AA	U+516B	# <cjk>
+0x94AB	U+9262	# <cjk>
+0x94AC	U+6E8C	# <cjk>
+0x94AD	U+767A	# <cjk>
+0x94AE	U+9197	# <cjk>
+0x94AF	U+9AEA	# <cjk>
+0x94B0	U+4F10	# <cjk>
+0x94B1	U+7F70	# <cjk>
+0x94B2	U+629C	# <cjk>
+0x94B3	U+7B4F	# <cjk>
+0x94B4	U+95A5	# <cjk>
+0x94B5	U+9CE9	# <cjk>
+0x94B6	U+567A	# <cjk>
+0x94B7	U+5859	# <cjk>
+0x94B8	U+86E4	# <cjk>
+0x94B9	U+96BC	# <cjk>
+0x94BA	U+4F34	# <cjk>
+0x94BB	U+5224	# <cjk>
+0x94BC	U+534A	# <cjk>
+0x94BD	U+53CD	# <cjk>
+0x94BE	U+53DB	# <cjk>
+0x94BF	U+5E06	# <cjk>
+0x94C0	U+642C	# <cjk>
+0x94C1	U+6591	# <cjk>
+0x94C2	U+677F	# <cjk>
+0x94C3	U+6C3E	# <cjk>
+0x94C4	U+6C4E	# <cjk>
+0x94C5	U+7248	# <cjk>
+0x94C6	U+72AF	# <cjk>
+0x94C7	U+73ED	# <cjk>
+0x94C8	U+7554	# <cjk>
+0x94C9	U+7E41	# <cjk>
+0x94CA	U+822C	# <cjk>
+0x94CB	U+85E9	# <cjk>
+0x94CC	U+8CA9	# <cjk>
+0x94CD	U+7BC4	# <cjk>
+0x94CE	U+91C6	# <cjk>
+0x94CF	U+7169	# <cjk>
+0x94D0	U+9812	# <cjk>
+0x94D1	U+98EF	# <cjk>
+0x94D2	U+633D	# <cjk>
+0x94D3	U+6669	# <cjk>
+0x94D4	U+756A	# <cjk>
+0x94D5	U+76E4	# <cjk>
+0x94D6	U+78D0	# <cjk>
+0x94D7	U+8543	# <cjk>
+0x94D8	U+86EE	# <cjk>
+0x94D9	U+532A	# <cjk>
+0x94DA	U+5351	# <cjk>
+0x94DB	U+5426	# <cjk>
+0x94DC	U+5983	# <cjk>
+0x94DD	U+5E87	# <cjk>
+0x94DE	U+5F7C	# <cjk>
+0x94DF	U+60B2	# <cjk>
+0x94E0	U+6249	# <cjk>
+0x94E1	U+6279	# <cjk>
+0x94E2	U+62AB	# <cjk>
+0x94E3	U+6590	# <cjk>
+0x94E4	U+6BD4	# <cjk>
+0x94E5	U+6CCC	# <cjk>
+0x94E6	U+75B2	# <cjk>
+0x94E7	U+76AE	# <cjk>
+0x94E8	U+7891	# <cjk>
+0x94E9	U+79D8	# <cjk>
+0x94EA	U+7DCB	# <cjk>
+0x94EB	U+7F77	# <cjk>
+0x94EC	U+80A5	# <cjk>
+0x94ED	U+88AB	# <cjk>
+0x94EE	U+8AB9	# <cjk>
+0x94EF	U+8CBB	# <cjk>
+0x94F0	U+907F	# <cjk>
+0x94F1	U+975E	# <cjk>
+0x94F2	U+98DB	# <cjk>
+0x94F3	U+6A0B	# <cjk>
+0x94F4	U+7C38	# <cjk>
+0x94F5	U+5099	# <cjk>
+0x94F6	U+5C3E	# <cjk>
+0x94F7	U+5FAE	# <cjk>
+0x94F8	U+6787	# <cjk>
+0x94F9	U+6BD8	# <cjk>
+0x94FA	U+7435	# <cjk>
+0x94FB	U+7709	# <cjk>
+0x94FC	U+7F8E	# <cjk>
+0x9540	U+9F3B	# <cjk>
+0x9541	U+67CA	# <cjk>
+0x9542	U+7A17	# <cjk>
+0x9543	U+5339	# <cjk>
+0x9544	U+758B	# <cjk>
+0x9545	U+9AED	# <cjk>
+0x9546	U+5F66	# <cjk>
+0x9547	U+819D	# <cjk>
+0x9548	U+83F1	# <cjk>
+0x9549	U+8098	# <cjk>
+0x954A	U+5F3C	# <cjk>
+0x954B	U+5FC5	# <cjk>
+0x954C	U+7562	# <cjk>
+0x954D	U+7B46	# <cjk>
+0x954E	U+903C	# <cjk>
+0x954F	U+6867	# <cjk>
+0x9550	U+59EB	# <cjk>
+0x9551	U+5A9B	# <cjk>
+0x9552	U+7D10	# <cjk>
+0x9553	U+767E	# <cjk>
+0x9554	U+8B2C	# <cjk>
+0x9555	U+4FF5	# <cjk>
+0x9556	U+5F6A	# <cjk>
+0x9557	U+6A19	# <cjk>
+0x9558	U+6C37	# <cjk>
+0x9559	U+6F02	# <cjk>
+0x955A	U+74E2	# <cjk>
+0x955B	U+7968	# <cjk>
+0x955C	U+8868	# <cjk>
+0x955D	U+8A55	# <cjk>
+0x955E	U+8C79	# <cjk>
+0x955F	U+5EDF	# <cjk>
+0x9560	U+63CF	# <cjk>
+0x9561	U+75C5	# <cjk>
+0x9562	U+79D2	# <cjk>
+0x9563	U+82D7	# <cjk>
+0x9564	U+9328	# <cjk>
+0x9565	U+92F2	# <cjk>
+0x9566	U+849C	# <cjk>
+0x9567	U+86ED	# <cjk>
+0x9568	U+9C2D	# <cjk>
+0x9569	U+54C1	# <cjk>
+0x956A	U+5F6C	# <cjk>
+0x956B	U+658C	# <cjk>
+0x956C	U+6D5C	# <cjk>
+0x956D	U+7015	# <cjk>
+0x956E	U+8CA7	# <cjk>
+0x956F	U+8CD3	# <cjk>
+0x9570	U+983B	# <cjk>
+0x9571	U+654F	# <cjk>
+0x9572	U+74F6	# <cjk>
+0x9573	U+4E0D	# <cjk>
+0x9574	U+4ED8	# <cjk>
+0x9575	U+57E0	# <cjk>
+0x9576	U+592B	# <cjk>
+0x9577	U+5A66	# <cjk>
+0x9578	U+5BCC	# <cjk>
+0x9579	U+51A8	# <cjk>
+0x957A	U+5E03	# <cjk>
+0x957B	U+5E9C	# <cjk>
+0x957C	U+6016	# <cjk>
+0x957D	U+6276	# <cjk>
+0x957E	U+6577	# <cjk>
+0x9580	U+65A7	# <cjk>
+0x9581	U+666E	# <cjk>
+0x9582	U+6D6E	# <cjk>
+0x9583	U+7236	# <cjk>
+0x9584	U+7B26	# <cjk>
+0x9585	U+8150	# <cjk>
+0x9586	U+819A	# <cjk>
+0x9587	U+8299	# <cjk>
+0x9588	U+8B5C	# <cjk>
+0x9589	U+8CA0	# <cjk>
+0x958A	U+8CE6	# <cjk>
+0x958B	U+8D74	# <cjk>
+0x958C	U+961C	# <cjk>
+0x958D	U+9644	# <cjk>
+0x958E	U+4FAE	# <cjk>
+0x958F	U+64AB	# <cjk>
+0x9590	U+6B66	# <cjk>
+0x9591	U+821E	# <cjk>
+0x9592	U+8461	# <cjk>
+0x9593	U+856A	# <cjk>
+0x9594	U+90E8	# <cjk>
+0x9595	U+5C01	# <cjk>
+0x9596	U+6953	# <cjk>
+0x9597	U+98A8	# <cjk>
+0x9598	U+847A	# <cjk>
+0x9599	U+8557	# <cjk>
+0x959A	U+4F0F	# <cjk>
+0x959B	U+526F	# <cjk>
+0x959C	U+5FA9	# <cjk>
+0x959D	U+5E45	# <cjk>
+0x959E	U+670D	# <cjk>
+0x959F	U+798F	# <cjk>
+0x95A0	U+8179	# <cjk>
+0x95A1	U+8907	# <cjk>
+0x95A2	U+8986	# <cjk>
+0x95A3	U+6DF5	# <cjk>
+0x95A4	U+5F17	# <cjk>
+0x95A5	U+6255	# <cjk>
+0x95A6	U+6CB8	# <cjk>
+0x95A7	U+4ECF	# <cjk>
+0x95A8	U+7269	# <cjk>
+0x95A9	U+9B92	# <cjk>
+0x95AA	U+5206	# <cjk>
+0x95AB	U+543B	# <cjk>
+0x95AC	U+5674	# <cjk>
+0x95AD	U+58B3	# <cjk>
+0x95AE	U+61A4	# <cjk>
+0x95AF	U+626E	# <cjk>
+0x95B0	U+711A	# <cjk>
+0x95B1	U+596E	# <cjk>
+0x95B2	U+7C89	# <cjk>
+0x95B3	U+7CDE	# <cjk>
+0x95B4	U+7D1B	# <cjk>
+0x95B5	U+96F0	# <cjk>
+0x95B6	U+6587	# <cjk>
+0x95B7	U+805E	# <cjk>
+0x95B8	U+4E19	# <cjk>
+0x95B9	U+4F75	# <cjk>
+0x95BA	U+5175	# <cjk>
+0x95BB	U+5840	# <cjk>
+0x95BC	U+5E63	# <cjk>
+0x95BD	U+5E73	# <cjk>
+0x95BE	U+5F0A	# <cjk>
+0x95BF	U+67C4	# <cjk>
+0x95C0	U+4E26	# <cjk>
+0x95C1	U+853D	# <cjk>
+0x95C2	U+9589	# <cjk>
+0x95C3	U+965B	# <cjk>
+0x95C4	U+7C73	# <cjk>
+0x95C5	U+9801	# <cjk>
+0x95C6	U+50FB	# <cjk>
+0x95C7	U+58C1	# <cjk>
+0x95C8	U+7656	# <cjk>
+0x95C9	U+78A7	# <cjk>
+0x95CA	U+5225	# <cjk>
+0x95CB	U+77A5	# <cjk>
+0x95CC	U+8511	# <cjk>
+0x95CD	U+7B86	# <cjk>
+0x95CE	U+504F	# <cjk>
+0x95CF	U+5909	# <cjk>
+0x95D0	U+7247	# <cjk>
+0x95D1	U+7BC7	# <cjk>
+0x95D2	U+7DE8	# <cjk>
+0x95D3	U+8FBA	# <cjk>
+0x95D4	U+8FD4	# <cjk>
+0x95D5	U+904D	# <cjk>
+0x95D6	U+4FBF	# <cjk>
+0x95D7	U+52C9	# <cjk>
+0x95D8	U+5A29	# <cjk>
+0x95D9	U+5F01	# <cjk>
+0x95DA	U+97AD	# <cjk>
+0x95DB	U+4FDD	# <cjk>
+0x95DC	U+8217	# <cjk>
+0x95DD	U+92EA	# <cjk>
+0x95DE	U+5703	# <cjk>
+0x95DF	U+6355	# <cjk>
+0x95E0	U+6B69	# <cjk>
+0x95E1	U+752B	# <cjk>
+0x95E2	U+88DC	# <cjk>
+0x95E3	U+8F14	# <cjk>
+0x95E4	U+7A42	# <cjk>
+0x95E5	U+52DF	# <cjk>
+0x95E6	U+5893	# <cjk>
+0x95E7	U+6155	# <cjk>
+0x95E8	U+620A	# <cjk>
+0x95E9	U+66AE	# <cjk>
+0x95EA	U+6BCD	# <cjk>
+0x95EB	U+7C3F	# <cjk>
+0x95EC	U+83E9	# <cjk>
+0x95ED	U+5023	# <cjk>
+0x95EE	U+4FF8	# <cjk>
+0x95EF	U+5305	# <cjk>
+0x95F0	U+5446	# <cjk>
+0x95F1	U+5831	# <cjk>
+0x95F2	U+5949	# <cjk>
+0x95F3	U+5B9D	# <cjk>
+0x95F4	U+5CF0	# <cjk>
+0x95F5	U+5CEF	# <cjk>
+0x95F6	U+5D29	# <cjk>
+0x95F7	U+5E96	# <cjk>
+0x95F8	U+62B1	# <cjk>
+0x95F9	U+6367	# <cjk>
+0x95FA	U+653E	# <cjk>
+0x95FB	U+65B9	# <cjk>
+0x95FC	U+670B	# <cjk>
+0x9640	U+6CD5	# <cjk>
+0x9641	U+6CE1	# <cjk>
+0x9642	U+70F9	# <cjk>
+0x9643	U+7832	# <cjk>
+0x9644	U+7E2B	# <cjk>
+0x9645	U+80DE	# <cjk>
+0x9646	U+82B3	# <cjk>
+0x9647	U+840C	# <cjk>
+0x9648	U+84EC	# <cjk>
+0x9649	U+8702	# <cjk>
+0x964A	U+8912	# <cjk>
+0x964B	U+8A2A	# <cjk>
+0x964C	U+8C4A	# <cjk>
+0x964D	U+90A6	# <cjk>
+0x964E	U+92D2	# <cjk>
+0x964F	U+98FD	# <cjk>
+0x9650	U+9CF3	# <cjk>
+0x9651	U+9D6C	# <cjk>
+0x9652	U+4E4F	# <cjk>
+0x9653	U+4EA1	# <cjk>
+0x9654	U+508D	# <cjk>
+0x9655	U+5256	# <cjk>
+0x9656	U+574A	# <cjk>
+0x9657	U+59A8	# <cjk>
+0x9658	U+5E3D	# <cjk>
+0x9659	U+5FD8	# <cjk>
+0x965A	U+5FD9	# <cjk>
+0x965B	U+623F	# <cjk>
+0x965C	U+66B4	# <cjk>
+0x965D	U+671B	# <cjk>
+0x965E	U+67D0	# <cjk>
+0x965F	U+68D2	# <cjk>
+0x9660	U+5192	# <cjk>
+0x9661	U+7D21	# <cjk>
+0x9662	U+80AA	# <cjk>
+0x9663	U+81A8	# <cjk>
+0x9664	U+8B00	# <cjk>
+0x9665	U+8C8C	# <cjk>
+0x9666	U+8CBF	# <cjk>
+0x9667	U+927E	# <cjk>
+0x9668	U+9632	# <cjk>
+0x9669	U+5420	# <cjk>
+0x966A	U+982C	# <cjk>
+0x966B	U+5317	# <cjk>
+0x966C	U+50D5	# <cjk>
+0x966D	U+535C	# <cjk>
+0x966E	U+58A8	# <cjk>
+0x966F	U+64B2	# <cjk>
+0x9670	U+6734	# <cjk>
+0x9671	U+7267	# <cjk>
+0x9672	U+7766	# <cjk>
+0x9673	U+7A46	# <cjk>
+0x9674	U+91E6	# <cjk>
+0x9675	U+52C3	# <cjk>
+0x9676	U+6CA1	# <cjk>
+0x9677	U+6B86	# <cjk>
+0x9678	U+5800	# <cjk>
+0x9679	U+5E4C	# <cjk>
+0x967A	U+5954	# <cjk>
+0x967B	U+672C	# <cjk>
+0x967C	U+7FFB	# <cjk>
+0x967D	U+51E1	# <cjk>
+0x967E	U+76C6	# <cjk>
+0x9680	U+6469	# <cjk>
+0x9681	U+78E8	# <cjk>
+0x9682	U+9B54	# <cjk>
+0x9683	U+9EBB	# <cjk>
+0x9684	U+57CB	# <cjk>
+0x9685	U+59B9	# <cjk>
+0x9686	U+6627	# <cjk>
+0x9687	U+679A	# <cjk>
+0x9688	U+6BCE	# <cjk>
+0x9689	U+54E9	# <cjk>
+0x968A	U+69D9	# <cjk>
+0x968B	U+5E55	# <cjk>
+0x968C	U+819C	# <cjk>
+0x968D	U+6795	# <cjk>
+0x968E	U+9BAA	# <cjk>
+0x968F	U+67FE	# <cjk>
+0x9690	U+9C52	# <cjk>
+0x9691	U+685D	# <cjk>
+0x9692	U+4EA6	# <cjk>
+0x9693	U+4FE3	# <cjk>
+0x9694	U+53C8	# <cjk>
+0x9695	U+62B9	# <cjk>
+0x9696	U+672B	# <cjk>
+0x9697	U+6CAB	# <cjk>
+0x9698	U+8FC4	# <cjk>
+0x9699	U+4FAD	# <cjk>
+0x969A	U+7E6D	# <cjk>
+0x969B	U+9EBF	# <cjk>
+0x969C	U+4E07	# <cjk>
+0x969D	U+6162	# <cjk>
+0x969E	U+6E80	# <cjk>
+0x969F	U+6F2B	# <cjk>
+0x96A0	U+8513	# <cjk>
+0x96A1	U+5473	# <cjk>
+0x96A2	U+672A	# <cjk>
+0x96A3	U+9B45	# <cjk>
+0x96A4	U+5DF3	# <cjk>
+0x96A5	U+7B95	# <cjk>
+0x96A6	U+5CAC	# <cjk>
+0x96A7	U+5BC6	# <cjk>
+0x96A8	U+871C	# <cjk>
+0x96A9	U+6E4A	# <cjk>
+0x96AA	U+84D1	# <cjk>
+0x96AB	U+7A14	# <cjk>
+0x96AC	U+8108	# <cjk>
+0x96AD	U+5999	# <cjk>
+0x96AE	U+7C8D	# <cjk>
+0x96AF	U+6C11	# <cjk>
+0x96B0	U+7720	# <cjk>
+0x96B1	U+52D9	# <cjk>
+0x96B2	U+5922	# <cjk>
+0x96B3	U+7121	# <cjk>
+0x96B4	U+725F	# <cjk>
+0x96B5	U+77DB	# <cjk>
+0x96B6	U+9727	# <cjk>
+0x96B7	U+9D61	# <cjk>
+0x96B8	U+690B	# <cjk>
+0x96B9	U+5A7F	# <cjk>
+0x96BA	U+5A18	# <cjk>
+0x96BB	U+51A5	# <cjk>
+0x96BC	U+540D	# <cjk>
+0x96BD	U+547D	# <cjk>
+0x96BE	U+660E	# <cjk>
+0x96BF	U+76DF	# <cjk>
+0x96C0	U+8FF7	# <cjk>
+0x96C1	U+9298	# <cjk>
+0x96C2	U+9CF4	# <cjk>
+0x96C3	U+59EA	# <cjk>
+0x96C4	U+725D	# <cjk>
+0x96C5	U+6EC5	# <cjk>
+0x96C6	U+514D	# <cjk>
+0x96C7	U+68C9	# <cjk>
+0x96C8	U+7DBF	# <cjk>
+0x96C9	U+7DEC	# <cjk>
+0x96CA	U+9762	# <cjk>
+0x96CB	U+9EBA	# <cjk>
+0x96CC	U+6478	# <cjk>
+0x96CD	U+6A21	# <cjk>
+0x96CE	U+8302	# <cjk>
+0x96CF	U+5984	# <cjk>
+0x96D0	U+5B5F	# <cjk>
+0x96D1	U+6BDB	# <cjk>
+0x96D2	U+731B	# <cjk>
+0x96D3	U+76F2	# <cjk>
+0x96D4	U+7DB2	# <cjk>
+0x96D5	U+8017	# <cjk>
+0x96D6	U+8499	# <cjk>
+0x96D7	U+5132	# <cjk>
+0x96D8	U+6728	# <cjk>
+0x96D9	U+9ED9	# <cjk>
+0x96DA	U+76EE	# <cjk>
+0x96DB	U+6762	# <cjk>
+0x96DC	U+52FF	# <cjk>
+0x96DD	U+9905	# <cjk>
+0x96DE	U+5C24	# <cjk>
+0x96DF	U+623B	# <cjk>
+0x96E0	U+7C7E	# <cjk>
+0x96E1	U+8CB0	# <cjk>
+0x96E2	U+554F	# <cjk>
+0x96E3	U+60B6	# <cjk>
+0x96E4	U+7D0B	# <cjk>
+0x96E5	U+9580	# <cjk>
+0x96E6	U+5301	# <cjk>
+0x96E7	U+4E5F	# <cjk>
+0x96E8	U+51B6	# <cjk>
+0x96E9	U+591C	# <cjk>
+0x96EA	U+723A	# <cjk>
+0x96EB	U+8036	# <cjk>
+0x96EC	U+91CE	# <cjk>
+0x96ED	U+5F25	# <cjk>
+0x96EE	U+77E2	# <cjk>
+0x96EF	U+5384	# <cjk>
+0x96F0	U+5F79	# <cjk>
+0x96F1	U+7D04	# <cjk>
+0x96F2	U+85AC	# <cjk>
+0x96F3	U+8A33	# <cjk>
+0x96F4	U+8E8D	# <cjk>
+0x96F5	U+9756	# <cjk>
+0x96F6	U+67F3	# <cjk>
+0x96F7	U+85AE	# <cjk>
+0x96F8	U+9453	# <cjk>
+0x96F9	U+6109	# <cjk>
+0x96FA	U+6108	# <cjk>
+0x96FB	U+6CB9	# <cjk>
+0x96FC	U+7652	# <cjk>
+0x9740	U+8AED	# <cjk>
+0x9741	U+8F38	# <cjk>
+0x9742	U+552F	# <cjk>
+0x9743	U+4F51	# <cjk>
+0x9744	U+512A	# <cjk>
+0x9745	U+52C7	# <cjk>
+0x9746	U+53CB	# <cjk>
+0x9747	U+5BA5	# <cjk>
+0x9748	U+5E7D	# <cjk>
+0x9749	U+60A0	# <cjk>
+0x974A	U+6182	# <cjk>
+0x974B	U+63D6	# <cjk>
+0x974C	U+6709	# <cjk>
+0x974D	U+67DA	# <cjk>
+0x974E	U+6E67	# <cjk>
+0x974F	U+6D8C	# <cjk>
+0x9750	U+7336	# <cjk>
+0x9751	U+7337	# <cjk>
+0x9752	U+7531	# <cjk>
+0x9753	U+7950	# <cjk>
+0x9754	U+88D5	# <cjk>
+0x9755	U+8A98	# <cjk>
+0x9756	U+904A	# <cjk>
+0x9757	U+9091	# <cjk>
+0x9758	U+90F5	# <cjk>
+0x9759	U+96C4	# <cjk>
+0x975A	U+878D	# <cjk>
+0x975B	U+5915	# <cjk>
+0x975C	U+4E88	# <cjk>
+0x975D	U+4F59	# <cjk>
+0x975E	U+4E0E	# <cjk>
+0x975F	U+8A89	# <cjk>
+0x9760	U+8F3F	# <cjk>
+0x9761	U+9810	# <cjk>
+0x9762	U+50AD	# <cjk>
+0x9763	U+5E7C	# <cjk>
+0x9764	U+5996	# <cjk>
+0x9765	U+5BB9	# <cjk>
+0x9766	U+5EB8	# <cjk>
+0x9767	U+63DA	# <cjk>
+0x9768	U+63FA	# <cjk>
+0x9769	U+64C1	# <cjk>
+0x976A	U+66DC	# <cjk>
+0x976B	U+694A	# <cjk>
+0x976C	U+69D8	# <cjk>
+0x976D	U+6D0B	# <cjk>
+0x976E	U+6EB6	# <cjk>
+0x976F	U+7194	# <cjk>
+0x9770	U+7528	# <cjk>
+0x9771	U+7AAF	# <cjk>
+0x9772	U+7F8A	# <cjk>
+0x9773	U+8000	# <cjk>
+0x9774	U+8449	# <cjk>
+0x9775	U+84C9	# <cjk>
+0x9776	U+8981	# <cjk>
+0x9777	U+8B21	# <cjk>
+0x9778	U+8E0A	# <cjk>
+0x9779	U+9065	# <cjk>
+0x977A	U+967D	# <cjk>
+0x977B	U+990A	# <cjk>
+0x977C	U+617E	# <cjk>
+0x977D	U+6291	# <cjk>
+0x977E	U+6B32	# <cjk>
+0x9780	U+6C83	# <cjk>
+0x9781	U+6D74	# <cjk>
+0x9782	U+7FCC	# <cjk>
+0x9783	U+7FFC	# <cjk>
+0x9784	U+6DC0	# <cjk>
+0x9785	U+7F85	# <cjk>
+0x9786	U+87BA	# <cjk>
+0x9787	U+88F8	# <cjk>
+0x9788	U+6765	# <cjk>
+0x9789	U+83B1	# <cjk>
+0x978A	U+983C	# <cjk>
+0x978B	U+96F7	# <cjk>
+0x978C	U+6D1B	# <cjk>
+0x978D	U+7D61	# <cjk>
+0x978E	U+843D	# <cjk>
+0x978F	U+916A	# <cjk>
+0x9790	U+4E71	# <cjk>
+0x9791	U+5375	# <cjk>
+0x9792	U+5D50	# <cjk>
+0x9793	U+6B04	# <cjk>
+0x9794	U+6FEB	# <cjk>
+0x9795	U+85CD	# <cjk>
+0x9796	U+862D	# <cjk>
+0x9797	U+89A7	# <cjk>
+0x9798	U+5229	# <cjk>
+0x9799	U+540F	# <cjk>
+0x979A	U+5C65	# <cjk>
+0x979B	U+674E	# <cjk>
+0x979C	U+68A8	# <cjk>
+0x979D	U+7406	# <cjk>
+0x979E	U+7483	# <cjk>
+0x979F	U+75E2	# <cjk>
+0x97A0	U+88CF	# <cjk>
+0x97A1	U+88E1	# <cjk>
+0x97A2	U+91CC	# <cjk>
+0x97A3	U+96E2	# <cjk>
+0x97A4	U+9678	# <cjk>
+0x97A5	U+5F8B	# <cjk>
+0x97A6	U+7387	# <cjk>
+0x97A7	U+7ACB	# <cjk>
+0x97A8	U+844E	# <cjk>
+0x97A9	U+63A0	# <cjk>
+0x97AA	U+7565	# <cjk>
+0x97AB	U+5289	# <cjk>
+0x97AC	U+6D41	# <cjk>
+0x97AD	U+6E9C	# <cjk>
+0x97AE	U+7409	# <cjk>
+0x97AF	U+7559	# <cjk>
+0x97B0	U+786B	# <cjk>
+0x97B1	U+7C92	# <cjk>
+0x97B2	U+9686	# <cjk>
+0x97B3	U+7ADC	# <cjk>
+0x97B4	U+9F8D	# <cjk>
+0x97B5	U+4FB6	# <cjk>
+0x97B6	U+616E	# <cjk>
+0x97B7	U+65C5	# <cjk>
+0x97B8	U+865C	# <cjk>
+0x97B9	U+4E86	# <cjk>
+0x97BA	U+4EAE	# <cjk>
+0x97BB	U+50DA	# <cjk>
+0x97BC	U+4E21	# <cjk>
+0x97BD	U+51CC	# <cjk>
+0x97BE	U+5BEE	# <cjk>
+0x97BF	U+6599	# <cjk>
+0x97C0	U+6881	# <cjk>
+0x97C1	U+6DBC	# <cjk>
+0x97C2	U+731F	# <cjk>
+0x97C3	U+7642	# <cjk>
+0x97C4	U+77AD	# <cjk>
+0x97C5	U+7A1C	# <cjk>
+0x97C6	U+7CE7	# <cjk>
+0x97C7	U+826F	# <cjk>
+0x97C8	U+8AD2	# <cjk>
+0x97C9	U+907C	# <cjk>
+0x97CA	U+91CF	# <cjk>
+0x97CB	U+9675	# <cjk>
+0x97CC	U+9818	# <cjk>
+0x97CD	U+529B	# <cjk>
+0x97CE	U+7DD1	# <cjk>
+0x97CF	U+502B	# <cjk>
+0x97D0	U+5398	# <cjk>
+0x97D1	U+6797	# <cjk>
+0x97D2	U+6DCB	# <cjk>
+0x97D3	U+71D0	# <cjk>
+0x97D4	U+7433	# <cjk>
+0x97D5	U+81E8	# <cjk>
+0x97D6	U+8F2A	# <cjk>
+0x97D7	U+96A3	# <cjk>
+0x97D8	U+9C57	# <cjk>
+0x97D9	U+9E9F	# <cjk>
+0x97DA	U+7460	# <cjk>
+0x97DB	U+5841	# <cjk>
+0x97DC	U+6D99	# <cjk>
+0x97DD	U+7D2F	# <cjk>
+0x97DE	U+985E	# <cjk>
+0x97DF	U+4EE4	# <cjk>
+0x97E0	U+4F36	# <cjk>
+0x97E1	U+4F8B	# <cjk>
+0x97E2	U+51B7	# <cjk>
+0x97E3	U+52B1	# <cjk>
+0x97E4	U+5DBA	# <cjk>
+0x97E5	U+601C	# <cjk>
+0x97E6	U+73B2	# <cjk>
+0x97E7	U+793C	# <cjk>
+0x97E8	U+82D3	# <cjk>
+0x97E9	U+9234	# <cjk>
+0x97EA	U+96B7	# <cjk>
+0x97EB	U+96F6	# <cjk>
+0x97EC	U+970A	# <cjk>
+0x97ED	U+9E97	# <cjk>
+0x97EE	U+9F62	# <cjk>
+0x97EF	U+66A6	# <cjk>
+0x97F0	U+6B74	# <cjk>
+0x97F1	U+5217	# <cjk>
+0x97F2	U+52A3	# <cjk>
+0x97F3	U+70C8	# <cjk>
+0x97F4	U+88C2	# <cjk>
+0x97F5	U+5EC9	# <cjk>
+0x97F6	U+604B	# <cjk>
+0x97F7	U+6190	# <cjk>
+0x97F8	U+6F23	# <cjk>
+0x97F9	U+7149	# <cjk>
+0x97FA	U+7C3E	# <cjk>
+0x97FB	U+7DF4	# <cjk>
+0x97FC	U+806F	# <cjk>
+0x9840	U+84EE	# <cjk>
+0x9841	U+9023	# <cjk>
+0x9842	U+932C	# <cjk>
+0x9843	U+5442	# <cjk>
+0x9844	U+9B6F	# <cjk>
+0x9845	U+6AD3	# <cjk>
+0x9846	U+7089	# <cjk>
+0x9847	U+8CC2	# <cjk>
+0x9848	U+8DEF	# <cjk>
+0x9849	U+9732	# <cjk>
+0x984A	U+52B4	# <cjk>
+0x984B	U+5A41	# <cjk>
+0x984C	U+5ECA	# <cjk>
+0x984D	U+5F04	# <cjk>
+0x984E	U+6717	# <cjk>
+0x984F	U+697C	# <cjk>
+0x9850	U+6994	# <cjk>
+0x9851	U+6D6A	# <cjk>
+0x9852	U+6F0F	# <cjk>
+0x9853	U+7262	# <cjk>
+0x9854	U+72FC	# <cjk>
+0x9855	U+7BED	# <cjk>
+0x9856	U+8001	# <cjk>
+0x9857	U+807E	# <cjk>
+0x9858	U+874B	# <cjk>
+0x9859	U+90CE	# <cjk>
+0x985A	U+516D	# <cjk>
+0x985B	U+9E93	# <cjk>
+0x985C	U+7984	# <cjk>
+0x985D	U+808B	# <cjk>
+0x985E	U+9332	# <cjk>
+0x985F	U+8AD6	# <cjk>
+0x9860	U+502D	# <cjk>
+0x9861	U+548C	# <cjk>
+0x9862	U+8A71	# <cjk>
+0x9863	U+6B6A	# <cjk>
+0x9864	U+8CC4	# <cjk>
+0x9865	U+8107	# <cjk>
+0x9866	U+60D1	# <cjk>
+0x9867	U+67A0	# <cjk>
+0x9868	U+9DF2	# <cjk>
+0x9869	U+4E99	# <cjk>
+0x986A	U+4E98	# <cjk>
+0x986B	U+9C10	# <cjk>
+0x986C	U+8A6B	# <cjk>
+0x986D	U+85C1	# <cjk>
+0x986E	U+8568	# <cjk>
+0x986F	U+6900	# <cjk>
+0x9870	U+6E7E	# <cjk>
+0x9871	U+7897	# <cjk>
+0x9872	U+8155	# <cjk>
+0x9873	U+20B9F	# <cjk>	[2004]	[Unicode3.1]
+0x9874	U+5B41	# <cjk>	[2000]
+0x9875	U+5B56	# <cjk>	[2000]
+0x9876	U+5B7D	# <cjk>	[2000]
+0x9877	U+5B93	# <cjk>	[2000]
+0x9878	U+5BD8	# <cjk>	[2000]
+0x9879	U+5BEC	# <cjk>	[2000]
+0x987A	U+5C12	# <cjk>	[2000]
+0x987B	U+5C1E	# <cjk>	[2000]
+0x987C	U+5C23	# <cjk>	[2000]
+0x987D	U+5C2B	# <cjk>	[2000]
+0x987E	U+378D	# <cjk>	[2000]
+0x9880	U+5C62	# <cjk>	[2000]
+0x9881	U+FA3B	# CJK COMPATIBILITY IDEOGRAPH-FA3B	[2000]	[Unicode3.2]
+0x9882	U+FA3C	# CJK COMPATIBILITY IDEOGRAPH-FA3C	[2000]	[Unicode3.2]
+0x9883	U+216B4	# <cjk>	[2000]	[Unicode3.1]
+0x9884	U+5C7A	# <cjk>	[2000]
+0x9885	U+5C8F	# <cjk>	[2000]
+0x9886	U+5C9F	# <cjk>	[2000]
+0x9887	U+5CA3	# <cjk>	[2000]
+0x9888	U+5CAA	# <cjk>	[2000]
+0x9889	U+5CBA	# <cjk>	[2000]
+0x988A	U+5CCB	# <cjk>	[2000]
+0x988B	U+5CD0	# <cjk>	[2000]
+0x988C	U+5CD2	# <cjk>	[2000]
+0x988D	U+5CF4	# <cjk>	[2000]
+0x988E	U+21E34	# <cjk>	[2000]	[Unicode3.1]
+0x988F	U+37E2	# <cjk>	[2000]
+0x9890	U+5D0D	# <cjk>	[2000]
+0x9891	U+5D27	# <cjk>	[2000]
+0x9892	U+FA11	# CJK COMPATIBILITY IDEOGRAPH-FA11	[2000]
+0x9893	U+5D46	# <cjk>	[2000]
+0x9894	U+5D47	# <cjk>	[2000]
+0x9895	U+5D53	# <cjk>	[2000]
+0x9896	U+5D4A	# <cjk>	[2000]
+0x9897	U+5D6D	# <cjk>	[2000]
+0x9898	U+5D81	# <cjk>	[2000]
+0x9899	U+5DA0	# <cjk>	[2000]
+0x989A	U+5DA4	# <cjk>	[2000]
+0x989B	U+5DA7	# <cjk>	[2000]
+0x989C	U+5DB8	# <cjk>	[2000]
+0x989D	U+5DCB	# <cjk>	[2000]
+0x989E	U+541E	# <cjk>	[2004]
+0x989F	U+5F0C	# <cjk>
+0x98A0	U+4E10	# <cjk>
+0x98A1	U+4E15	# <cjk>
+0x98A2	U+4E2A	# <cjk>
+0x98A3	U+4E31	# <cjk>
+0x98A4	U+4E36	# <cjk>
+0x98A5	U+4E3C	# <cjk>
+0x98A6	U+4E3F	# <cjk>
+0x98A7	U+4E42	# <cjk>
+0x98A8	U+4E56	# <cjk>
+0x98A9	U+4E58	# <cjk>
+0x98AA	U+4E82	# <cjk>
+0x98AB	U+4E85	# <cjk>
+0x98AC	U+8C6B	# <cjk>
+0x98AD	U+4E8A	# <cjk>
+0x98AE	U+8212	# <cjk>
+0x98AF	U+5F0D	# <cjk>
+0x98B0	U+4E8E	# <cjk>
+0x98B1	U+4E9E	# <cjk>
+0x98B2	U+4E9F	# <cjk>
+0x98B3	U+4EA0	# <cjk>
+0x98B4	U+4EA2	# <cjk>
+0x98B5	U+4EB0	# <cjk>
+0x98B6	U+4EB3	# <cjk>
+0x98B7	U+4EB6	# <cjk>
+0x98B8	U+4ECE	# <cjk>
+0x98B9	U+4ECD	# <cjk>
+0x98BA	U+4EC4	# <cjk>
+0x98BB	U+4EC6	# <cjk>
+0x98BC	U+4EC2	# <cjk>
+0x98BD	U+4ED7	# <cjk>
+0x98BE	U+4EDE	# <cjk>
+0x98BF	U+4EED	# <cjk>
+0x98C0	U+4EDF	# <cjk>
+0x98C1	U+4EF7	# <cjk>
+0x98C2	U+4F09	# <cjk>
+0x98C3	U+4F5A	# <cjk>
+0x98C4	U+4F30	# <cjk>
+0x98C5	U+4F5B	# <cjk>
+0x98C6	U+4F5D	# <cjk>
+0x98C7	U+4F57	# <cjk>
+0x98C8	U+4F47	# <cjk>
+0x98C9	U+4F76	# <cjk>
+0x98CA	U+4F88	# <cjk>
+0x98CB	U+4F8F	# <cjk>
+0x98CC	U+4F98	# <cjk>
+0x98CD	U+4F7B	# <cjk>
+0x98CE	U+4F69	# <cjk>
+0x98CF	U+4F70	# <cjk>
+0x98D0	U+4F91	# <cjk>
+0x98D1	U+4F6F	# <cjk>
+0x98D2	U+4F86	# <cjk>
+0x98D3	U+4F96	# <cjk>
+0x98D4	U+5118	# <cjk>
+0x98D5	U+4FD4	# <cjk>
+0x98D6	U+4FDF	# <cjk>
+0x98D7	U+4FCE	# <cjk>
+0x98D8	U+4FD8	# <cjk>
+0x98D9	U+4FDB	# <cjk>
+0x98DA	U+4FD1	# <cjk>
+0x98DB	U+4FDA	# <cjk>
+0x98DC	U+4FD0	# <cjk>
+0x98DD	U+4FE4	# <cjk>
+0x98DE	U+4FE5	# <cjk>
+0x98DF	U+501A	# <cjk>
+0x98E0	U+5028	# <cjk>
+0x98E1	U+5014	# <cjk>
+0x98E2	U+502A	# <cjk>
+0x98E3	U+5025	# <cjk>
+0x98E4	U+5005	# <cjk>
+0x98E5	U+4F1C	# <cjk>
+0x98E6	U+4FF6	# <cjk>
+0x98E7	U+5021	# <cjk>
+0x98E8	U+5029	# <cjk>
+0x98E9	U+502C	# <cjk>
+0x98EA	U+4FFE	# <cjk>
+0x98EB	U+4FEF	# <cjk>
+0x98EC	U+5011	# <cjk>
+0x98ED	U+5006	# <cjk>
+0x98EE	U+5043	# <cjk>
+0x98EF	U+5047	# <cjk>
+0x98F0	U+6703	# <cjk>
+0x98F1	U+5055	# <cjk>
+0x98F2	U+5050	# <cjk>
+0x98F3	U+5048	# <cjk>
+0x98F4	U+505A	# <cjk>
+0x98F5	U+5056	# <cjk>
+0x98F6	U+506C	# <cjk>
+0x98F7	U+5078	# <cjk>
+0x98F8	U+5080	# <cjk>
+0x98F9	U+509A	# <cjk>
+0x98FA	U+5085	# <cjk>
+0x98FB	U+50B4	# <cjk>
+0x98FC	U+50B2	# <cjk>
+0x9940	U+50C9	# <cjk>
+0x9941	U+50CA	# <cjk>
+0x9942	U+50B3	# <cjk>
+0x9943	U+50C2	# <cjk>
+0x9944	U+50D6	# <cjk>
+0x9945	U+50DE	# <cjk>
+0x9946	U+50E5	# <cjk>
+0x9947	U+50ED	# <cjk>
+0x9948	U+50E3	# <cjk>
+0x9949	U+50EE	# <cjk>
+0x994A	U+50F9	# <cjk>
+0x994B	U+50F5	# <cjk>
+0x994C	U+5109	# <cjk>
+0x994D	U+5101	# <cjk>
+0x994E	U+5102	# <cjk>
+0x994F	U+5116	# <cjk>
+0x9950	U+5115	# <cjk>
+0x9951	U+5114	# <cjk>
+0x9952	U+511A	# <cjk>
+0x9953	U+5121	# <cjk>
+0x9954	U+513A	# <cjk>
+0x9955	U+5137	# <cjk>
+0x9956	U+513C	# <cjk>
+0x9957	U+513B	# <cjk>
+0x9958	U+513F	# <cjk>
+0x9959	U+5140	# <cjk>
+0x995A	U+5152	# <cjk>
+0x995B	U+514C	# <cjk>
+0x995C	U+5154	# <cjk>
+0x995D	U+5162	# <cjk>
+0x995E	U+7AF8	# <cjk>
+0x995F	U+5169	# <cjk>
+0x9960	U+516A	# <cjk>
+0x9961	U+516E	# <cjk>
+0x9962	U+5180	# <cjk>
+0x9963	U+5182	# <cjk>
+0x9964	U+56D8	# <cjk>
+0x9965	U+518C	# <cjk>
+0x9966	U+5189	# <cjk>
+0x9967	U+518F	# <cjk>
+0x9968	U+5191	# <cjk>
+0x9969	U+5193	# <cjk>
+0x996A	U+5195	# <cjk>
+0x996B	U+5196	# <cjk>
+0x996C	U+51A4	# <cjk>
+0x996D	U+51A6	# <cjk>
+0x996E	U+51A2	# <cjk>
+0x996F	U+51A9	# <cjk>
+0x9970	U+51AA	# <cjk>
+0x9971	U+51AB	# <cjk>
+0x9972	U+51B3	# <cjk>
+0x9973	U+51B1	# <cjk>
+0x9974	U+51B2	# <cjk>
+0x9975	U+51B0	# <cjk>
+0x9976	U+51B5	# <cjk>
+0x9977	U+51BD	# <cjk>
+0x9978	U+51C5	# <cjk>
+0x9979	U+51C9	# <cjk>
+0x997A	U+51DB	# <cjk>
+0x997B	U+51E0	# <cjk>
+0x997C	U+8655	# <cjk>
+0x997D	U+51E9	# <cjk>
+0x997E	U+51ED	# <cjk>
+0x9980	U+51F0	# <cjk>
+0x9981	U+51F5	# <cjk>
+0x9982	U+51FE	# <cjk>
+0x9983	U+5204	# <cjk>
+0x9984	U+520B	# <cjk>
+0x9985	U+5214	# <cjk>
+0x9986	U+520E	# <cjk>
+0x9987	U+5227	# <cjk>
+0x9988	U+522A	# <cjk>
+0x9989	U+522E	# <cjk>
+0x998A	U+5233	# <cjk>
+0x998B	U+5239	# <cjk>
+0x998C	U+524F	# <cjk>
+0x998D	U+5244	# <cjk>
+0x998E	U+524B	# <cjk>
+0x998F	U+524C	# <cjk>
+0x9990	U+525E	# <cjk>
+0x9991	U+5254	# <cjk>
+0x9992	U+526A	# <cjk>
+0x9993	U+5274	# <cjk>
+0x9994	U+5269	# <cjk>
+0x9995	U+5273	# <cjk>
+0x9996	U+527F	# <cjk>
+0x9997	U+527D	# <cjk>
+0x9998	U+528D	# <cjk>
+0x9999	U+5294	# <cjk>
+0x999A	U+5292	# <cjk>
+0x999B	U+5271	# <cjk>
+0x999C	U+5288	# <cjk>
+0x999D	U+5291	# <cjk>
+0x999E	U+8FA8	# <cjk>
+0x999F	U+8FA7	# <cjk>
+0x99A0	U+52AC	# <cjk>
+0x99A1	U+52AD	# <cjk>
+0x99A2	U+52BC	# <cjk>
+0x99A3	U+52B5	# <cjk>
+0x99A4	U+52C1	# <cjk>
+0x99A5	U+52CD	# <cjk>
+0x99A6	U+52D7	# <cjk>
+0x99A7	U+52DE	# <cjk>
+0x99A8	U+52E3	# <cjk>
+0x99A9	U+52E6	# <cjk>
+0x99AA	U+98ED	# <cjk>
+0x99AB	U+52E0	# <cjk>
+0x99AC	U+52F3	# <cjk>
+0x99AD	U+52F5	# <cjk>
+0x99AE	U+52F8	# <cjk>
+0x99AF	U+52F9	# <cjk>
+0x99B0	U+5306	# <cjk>
+0x99B1	U+5308	# <cjk>
+0x99B2	U+7538	# <cjk>
+0x99B3	U+530D	# <cjk>
+0x99B4	U+5310	# <cjk>
+0x99B5	U+530F	# <cjk>
+0x99B6	U+5315	# <cjk>
+0x99B7	U+531A	# <cjk>
+0x99B8	U+5323	# <cjk>
+0x99B9	U+532F	# <cjk>
+0x99BA	U+5331	# <cjk>
+0x99BB	U+5333	# <cjk>
+0x99BC	U+5338	# <cjk>
+0x99BD	U+5340	# <cjk>
+0x99BE	U+5346	# <cjk>
+0x99BF	U+5345	# <cjk>
+0x99C0	U+4E17	# <cjk>
+0x99C1	U+5349	# <cjk>
+0x99C2	U+534D	# <cjk>
+0x99C3	U+51D6	# <cjk>
+0x99C4	U+535E	# <cjk>
+0x99C5	U+5369	# <cjk>
+0x99C6	U+536E	# <cjk>
+0x99C7	U+5918	# <cjk>
+0x99C8	U+537B	# <cjk>
+0x99C9	U+5377	# <cjk>
+0x99CA	U+5382	# <cjk>
+0x99CB	U+5396	# <cjk>
+0x99CC	U+53A0	# <cjk>
+0x99CD	U+53A6	# <cjk>
+0x99CE	U+53A5	# <cjk>
+0x99CF	U+53AE	# <cjk>
+0x99D0	U+53B0	# <cjk>
+0x99D1	U+53B6	# <cjk>
+0x99D2	U+53C3	# <cjk>
+0x99D3	U+7C12	# <cjk>
+0x99D4	U+96D9	# <cjk>
+0x99D5	U+53DF	# <cjk>
+0x99D6	U+66FC	# <cjk>
+0x99D7	U+71EE	# <cjk>
+0x99D8	U+53EE	# <cjk>
+0x99D9	U+53E8	# <cjk>
+0x99DA	U+53ED	# <cjk>
+0x99DB	U+53FA	# <cjk>
+0x99DC	U+5401	# <cjk>
+0x99DD	U+543D	# <cjk>
+0x99DE	U+5440	# <cjk>
+0x99DF	U+542C	# <cjk>
+0x99E0	U+542D	# <cjk>
+0x99E1	U+543C	# <cjk>
+0x99E2	U+542E	# <cjk>
+0x99E3	U+5436	# <cjk>
+0x99E4	U+5429	# <cjk>
+0x99E5	U+541D	# <cjk>
+0x99E6	U+544E	# <cjk>
+0x99E7	U+548F	# <cjk>
+0x99E8	U+5475	# <cjk>
+0x99E9	U+548E	# <cjk>
+0x99EA	U+545F	# <cjk>
+0x99EB	U+5471	# <cjk>
+0x99EC	U+5477	# <cjk>
+0x99ED	U+5470	# <cjk>
+0x99EE	U+5492	# <cjk>
+0x99EF	U+547B	# <cjk>
+0x99F0	U+5480	# <cjk>
+0x99F1	U+5476	# <cjk>
+0x99F2	U+5484	# <cjk>
+0x99F3	U+5490	# <cjk>
+0x99F4	U+5486	# <cjk>
+0x99F5	U+54C7	# <cjk>
+0x99F6	U+54A2	# <cjk>
+0x99F7	U+54B8	# <cjk>
+0x99F8	U+54A5	# <cjk>
+0x99F9	U+54AC	# <cjk>
+0x99FA	U+54C4	# <cjk>
+0x99FB	U+54C8	# <cjk>
+0x99FC	U+54A8	# <cjk>
+0x9A40	U+54AB	# <cjk>
+0x9A41	U+54C2	# <cjk>
+0x9A42	U+54A4	# <cjk>
+0x9A43	U+54BE	# <cjk>
+0x9A44	U+54BC	# <cjk>
+0x9A45	U+54D8	# <cjk>
+0x9A46	U+54E5	# <cjk>
+0x9A47	U+54E6	# <cjk>
+0x9A48	U+550F	# <cjk>
+0x9A49	U+5514	# <cjk>
+0x9A4A	U+54FD	# <cjk>
+0x9A4B	U+54EE	# <cjk>
+0x9A4C	U+54ED	# <cjk>
+0x9A4D	U+54FA	# <cjk>
+0x9A4E	U+54E2	# <cjk>
+0x9A4F	U+5539	# <cjk>
+0x9A50	U+5540	# <cjk>
+0x9A51	U+5563	# <cjk>
+0x9A52	U+554C	# <cjk>
+0x9A53	U+552E	# <cjk>
+0x9A54	U+555C	# <cjk>
+0x9A55	U+5545	# <cjk>
+0x9A56	U+5556	# <cjk>
+0x9A57	U+5557	# <cjk>
+0x9A58	U+5538	# <cjk>
+0x9A59	U+5533	# <cjk>
+0x9A5A	U+555D	# <cjk>
+0x9A5B	U+5599	# <cjk>
+0x9A5C	U+5580	# <cjk>
+0x9A5D	U+54AF	# <cjk>
+0x9A5E	U+558A	# <cjk>
+0x9A5F	U+559F	# <cjk>
+0x9A60	U+557B	# <cjk>
+0x9A61	U+557E	# <cjk>
+0x9A62	U+5598	# <cjk>
+0x9A63	U+559E	# <cjk>
+0x9A64	U+55AE	# <cjk>
+0x9A65	U+557C	# <cjk>
+0x9A66	U+5583	# <cjk>
+0x9A67	U+55A9	# <cjk>
+0x9A68	U+5587	# <cjk>
+0x9A69	U+55A8	# <cjk>
+0x9A6A	U+55DA	# <cjk>
+0x9A6B	U+55C5	# <cjk>
+0x9A6C	U+55DF	# <cjk>
+0x9A6D	U+55C4	# <cjk>
+0x9A6E	U+55DC	# <cjk>
+0x9A6F	U+55E4	# <cjk>
+0x9A70	U+55D4	# <cjk>
+0x9A71	U+5614	# <cjk>
+0x9A72	U+55F7	# <cjk>
+0x9A73	U+5616	# <cjk>
+0x9A74	U+55FE	# <cjk>
+0x9A75	U+55FD	# <cjk>
+0x9A76	U+561B	# <cjk>
+0x9A77	U+55F9	# <cjk>
+0x9A78	U+564E	# <cjk>
+0x9A79	U+5650	# <cjk>
+0x9A7A	U+71DF	# <cjk>
+0x9A7B	U+5634	# <cjk>
+0x9A7C	U+5636	# <cjk>
+0x9A7D	U+5632	# <cjk>
+0x9A7E	U+5638	# <cjk>
+0x9A80	U+566B	# <cjk>
+0x9A81	U+5664	# <cjk>
+0x9A82	U+562F	# <cjk>
+0x9A83	U+566C	# <cjk>
+0x9A84	U+566A	# <cjk>
+0x9A85	U+5686	# <cjk>
+0x9A86	U+5680	# <cjk>
+0x9A87	U+568A	# <cjk>
+0x9A88	U+56A0	# <cjk>
+0x9A89	U+5694	# <cjk>
+0x9A8A	U+568F	# <cjk>
+0x9A8B	U+56A5	# <cjk>
+0x9A8C	U+56AE	# <cjk>
+0x9A8D	U+56B6	# <cjk>
+0x9A8E	U+56B4	# <cjk>
+0x9A8F	U+56C2	# <cjk>
+0x9A90	U+56BC	# <cjk>
+0x9A91	U+56C1	# <cjk>
+0x9A92	U+56C3	# <cjk>
+0x9A93	U+56C0	# <cjk>
+0x9A94	U+56C8	# <cjk>
+0x9A95	U+56CE	# <cjk>
+0x9A96	U+56D1	# <cjk>
+0x9A97	U+56D3	# <cjk>
+0x9A98	U+56D7	# <cjk>
+0x9A99	U+56EE	# <cjk>
+0x9A9A	U+56F9	# <cjk>
+0x9A9B	U+5700	# <cjk>
+0x9A9C	U+56FF	# <cjk>
+0x9A9D	U+5704	# <cjk>
+0x9A9E	U+5709	# <cjk>
+0x9A9F	U+5708	# <cjk>
+0x9AA0	U+570B	# <cjk>
+0x9AA1	U+570D	# <cjk>
+0x9AA2	U+5713	# <cjk>
+0x9AA3	U+5718	# <cjk>
+0x9AA4	U+5716	# <cjk>
+0x9AA5	U+55C7	# <cjk>
+0x9AA6	U+571C	# <cjk>
+0x9AA7	U+5726	# <cjk>
+0x9AA8	U+5737	# <cjk>
+0x9AA9	U+5738	# <cjk>
+0x9AAA	U+574E	# <cjk>
+0x9AAB	U+573B	# <cjk>
+0x9AAC	U+5740	# <cjk>
+0x9AAD	U+574F	# <cjk>
+0x9AAE	U+5769	# <cjk>
+0x9AAF	U+57C0	# <cjk>
+0x9AB0	U+5788	# <cjk>
+0x9AB1	U+5761	# <cjk>
+0x9AB2	U+577F	# <cjk>
+0x9AB3	U+5789	# <cjk>
+0x9AB4	U+5793	# <cjk>
+0x9AB5	U+57A0	# <cjk>
+0x9AB6	U+57B3	# <cjk>
+0x9AB7	U+57A4	# <cjk>
+0x9AB8	U+57AA	# <cjk>
+0x9AB9	U+57B0	# <cjk>
+0x9ABA	U+57C3	# <cjk>
+0x9ABB	U+57C6	# <cjk>
+0x9ABC	U+57D4	# <cjk>
+0x9ABD	U+57D2	# <cjk>
+0x9ABE	U+57D3	# <cjk>
+0x9ABF	U+580A	# <cjk>
+0x9AC0	U+57D6	# <cjk>
+0x9AC1	U+57E3	# <cjk>
+0x9AC2	U+580B	# <cjk>
+0x9AC3	U+5819	# <cjk>
+0x9AC4	U+581D	# <cjk>
+0x9AC5	U+5872	# <cjk>
+0x9AC6	U+5821	# <cjk>
+0x9AC7	U+5862	# <cjk>
+0x9AC8	U+584B	# <cjk>
+0x9AC9	U+5870	# <cjk>
+0x9ACA	U+6BC0	# <cjk>
+0x9ACB	U+5852	# <cjk>
+0x9ACC	U+583D	# <cjk>
+0x9ACD	U+5879	# <cjk>
+0x9ACE	U+5885	# <cjk>
+0x9ACF	U+58B9	# <cjk>
+0x9AD0	U+589F	# <cjk>
+0x9AD1	U+58AB	# <cjk>
+0x9AD2	U+58BA	# <cjk>
+0x9AD3	U+58DE	# <cjk>
+0x9AD4	U+58BB	# <cjk>
+0x9AD5	U+58B8	# <cjk>
+0x9AD6	U+58AE	# <cjk>
+0x9AD7	U+58C5	# <cjk>
+0x9AD8	U+58D3	# <cjk>
+0x9AD9	U+58D1	# <cjk>
+0x9ADA	U+58D7	# <cjk>
+0x9ADB	U+58D9	# <cjk>
+0x9ADC	U+58D8	# <cjk>
+0x9ADD	U+58E5	# <cjk>
+0x9ADE	U+58DC	# <cjk>
+0x9ADF	U+58E4	# <cjk>
+0x9AE0	U+58DF	# <cjk>
+0x9AE1	U+58EF	# <cjk>
+0x9AE2	U+58FA	# <cjk>
+0x9AE3	U+58F9	# <cjk>
+0x9AE4	U+58FB	# <cjk>
+0x9AE5	U+58FC	# <cjk>
+0x9AE6	U+58FD	# <cjk>
+0x9AE7	U+5902	# <cjk>
+0x9AE8	U+590A	# <cjk>
+0x9AE9	U+5910	# <cjk>
+0x9AEA	U+591B	# <cjk>
+0x9AEB	U+68A6	# <cjk>
+0x9AEC	U+5925	# <cjk>
+0x9AED	U+592C	# <cjk>
+0x9AEE	U+592D	# <cjk>
+0x9AEF	U+5932	# <cjk>
+0x9AF0	U+5938	# <cjk>
+0x9AF1	U+593E	# <cjk>
+0x9AF2	U+7AD2	# <cjk>
+0x9AF3	U+5955	# <cjk>
+0x9AF4	U+5950	# <cjk>
+0x9AF5	U+594E	# <cjk>
+0x9AF6	U+595A	# <cjk>
+0x9AF7	U+5958	# <cjk>
+0x9AF8	U+5962	# <cjk>
+0x9AF9	U+5960	# <cjk>
+0x9AFA	U+5967	# <cjk>
+0x9AFB	U+596C	# <cjk>
+0x9AFC	U+5969	# <cjk>
+0x9B40	U+5978	# <cjk>
+0x9B41	U+5981	# <cjk>
+0x9B42	U+599D	# <cjk>
+0x9B43	U+4F5E	# <cjk>
+0x9B44	U+4FAB	# <cjk>
+0x9B45	U+59A3	# <cjk>
+0x9B46	U+59B2	# <cjk>
+0x9B47	U+59C6	# <cjk>
+0x9B48	U+59E8	# <cjk>
+0x9B49	U+59DC	# <cjk>
+0x9B4A	U+598D	# <cjk>
+0x9B4B	U+59D9	# <cjk>
+0x9B4C	U+59DA	# <cjk>
+0x9B4D	U+5A25	# <cjk>
+0x9B4E	U+5A1F	# <cjk>
+0x9B4F	U+5A11	# <cjk>
+0x9B50	U+5A1C	# <cjk>
+0x9B51	U+5A09	# <cjk>
+0x9B52	U+5A1A	# <cjk>
+0x9B53	U+5A40	# <cjk>
+0x9B54	U+5A6C	# <cjk>
+0x9B55	U+5A49	# <cjk>
+0x9B56	U+5A35	# <cjk>
+0x9B57	U+5A36	# <cjk>
+0x9B58	U+5A62	# <cjk>
+0x9B59	U+5A6A	# <cjk>
+0x9B5A	U+5A9A	# <cjk>
+0x9B5B	U+5ABC	# <cjk>
+0x9B5C	U+5ABE	# <cjk>
+0x9B5D	U+5ACB	# <cjk>
+0x9B5E	U+5AC2	# <cjk>
+0x9B5F	U+5ABD	# <cjk>
+0x9B60	U+5AE3	# <cjk>
+0x9B61	U+5AD7	# <cjk>
+0x9B62	U+5AE6	# <cjk>
+0x9B63	U+5AE9	# <cjk>
+0x9B64	U+5AD6	# <cjk>
+0x9B65	U+5AFA	# <cjk>
+0x9B66	U+5AFB	# <cjk>
+0x9B67	U+5B0C	# <cjk>
+0x9B68	U+5B0B	# <cjk>
+0x9B69	U+5B16	# <cjk>
+0x9B6A	U+5B32	# <cjk>
+0x9B6B	U+5AD0	# <cjk>
+0x9B6C	U+5B2A	# <cjk>
+0x9B6D	U+5B36	# <cjk>
+0x9B6E	U+5B3E	# <cjk>
+0x9B6F	U+5B43	# <cjk>
+0x9B70	U+5B45	# <cjk>
+0x9B71	U+5B40	# <cjk>
+0x9B72	U+5B51	# <cjk>
+0x9B73	U+5B55	# <cjk>
+0x9B74	U+5B5A	# <cjk>
+0x9B75	U+5B5B	# <cjk>
+0x9B76	U+5B65	# <cjk>
+0x9B77	U+5B69	# <cjk>
+0x9B78	U+5B70	# <cjk>
+0x9B79	U+5B73	# <cjk>
+0x9B7A	U+5B75	# <cjk>
+0x9B7B	U+5B78	# <cjk>
+0x9B7C	U+6588	# <cjk>
+0x9B7D	U+5B7A	# <cjk>
+0x9B7E	U+5B80	# <cjk>
+0x9B80	U+5B83	# <cjk>
+0x9B81	U+5BA6	# <cjk>
+0x9B82	U+5BB8	# <cjk>
+0x9B83	U+5BC3	# <cjk>
+0x9B84	U+5BC7	# <cjk>
+0x9B85	U+5BC9	# <cjk>
+0x9B86	U+5BD4	# <cjk>
+0x9B87	U+5BD0	# <cjk>
+0x9B88	U+5BE4	# <cjk>
+0x9B89	U+5BE6	# <cjk>
+0x9B8A	U+5BE2	# <cjk>
+0x9B8B	U+5BDE	# <cjk>
+0x9B8C	U+5BE5	# <cjk>
+0x9B8D	U+5BEB	# <cjk>
+0x9B8E	U+5BF0	# <cjk>
+0x9B8F	U+5BF6	# <cjk>
+0x9B90	U+5BF3	# <cjk>
+0x9B91	U+5C05	# <cjk>
+0x9B92	U+5C07	# <cjk>
+0x9B93	U+5C08	# <cjk>
+0x9B94	U+5C0D	# <cjk>
+0x9B95	U+5C13	# <cjk>
+0x9B96	U+5C20	# <cjk>
+0x9B97	U+5C22	# <cjk>
+0x9B98	U+5C28	# <cjk>
+0x9B99	U+5C38	# <cjk>
+0x9B9A	U+5C39	# <cjk>
+0x9B9B	U+5C41	# <cjk>
+0x9B9C	U+5C46	# <cjk>
+0x9B9D	U+5C4E	# <cjk>
+0x9B9E	U+5C53	# <cjk>
+0x9B9F	U+5C50	# <cjk>
+0x9BA0	U+5C4F	# <cjk>
+0x9BA1	U+5B71	# <cjk>
+0x9BA2	U+5C6C	# <cjk>
+0x9BA3	U+5C6E	# <cjk>
+0x9BA4	U+4E62	# <cjk>
+0x9BA5	U+5C76	# <cjk>
+0x9BA6	U+5C79	# <cjk>
+0x9BA7	U+5C8C	# <cjk>
+0x9BA8	U+5C91	# <cjk>
+0x9BA9	U+5C94	# <cjk>
+0x9BAA	U+599B	# <cjk>
+0x9BAB	U+5CAB	# <cjk>
+0x9BAC	U+5CBB	# <cjk>
+0x9BAD	U+5CB6	# <cjk>
+0x9BAE	U+5CBC	# <cjk>
+0x9BAF	U+5CB7	# <cjk>
+0x9BB0	U+5CC5	# <cjk>
+0x9BB1	U+5CBE	# <cjk>
+0x9BB2	U+5CC7	# <cjk>
+0x9BB3	U+5CD9	# <cjk>
+0x9BB4	U+5CE9	# <cjk>
+0x9BB5	U+5CFD	# <cjk>
+0x9BB6	U+5CFA	# <cjk>
+0x9BB7	U+5CED	# <cjk>
+0x9BB8	U+5D8C	# <cjk>
+0x9BB9	U+5CEA	# <cjk>
+0x9BBA	U+5D0B	# <cjk>
+0x9BBB	U+5D15	# <cjk>
+0x9BBC	U+5D17	# <cjk>
+0x9BBD	U+5D5C	# <cjk>
+0x9BBE	U+5D1F	# <cjk>
+0x9BBF	U+5D1B	# <cjk>
+0x9BC0	U+5D11	# <cjk>
+0x9BC1	U+5D14	# <cjk>
+0x9BC2	U+5D22	# <cjk>
+0x9BC3	U+5D1A	# <cjk>
+0x9BC4	U+5D19	# <cjk>
+0x9BC5	U+5D18	# <cjk>
+0x9BC6	U+5D4C	# <cjk>
+0x9BC7	U+5D52	# <cjk>
+0x9BC8	U+5D4E	# <cjk>
+0x9BC9	U+5D4B	# <cjk>
+0x9BCA	U+5D6C	# <cjk>
+0x9BCB	U+5D73	# <cjk>
+0x9BCC	U+5D76	# <cjk>
+0x9BCD	U+5D87	# <cjk>
+0x9BCE	U+5D84	# <cjk>
+0x9BCF	U+5D82	# <cjk>
+0x9BD0	U+5DA2	# <cjk>
+0x9BD1	U+5D9D	# <cjk>
+0x9BD2	U+5DAC	# <cjk>
+0x9BD3	U+5DAE	# <cjk>
+0x9BD4	U+5DBD	# <cjk>
+0x9BD5	U+5D90	# <cjk>
+0x9BD6	U+5DB7	# <cjk>
+0x9BD7	U+5DBC	# <cjk>
+0x9BD8	U+5DC9	# <cjk>
+0x9BD9	U+5DCD	# <cjk>
+0x9BDA	U+5DD3	# <cjk>
+0x9BDB	U+5DD2	# <cjk>
+0x9BDC	U+5DD6	# <cjk>
+0x9BDD	U+5DDB	# <cjk>
+0x9BDE	U+5DEB	# <cjk>
+0x9BDF	U+5DF2	# <cjk>
+0x9BE0	U+5DF5	# <cjk>
+0x9BE1	U+5E0B	# <cjk>
+0x9BE2	U+5E1A	# <cjk>
+0x9BE3	U+5E19	# <cjk>
+0x9BE4	U+5E11	# <cjk>
+0x9BE5	U+5E1B	# <cjk>
+0x9BE6	U+5E36	# <cjk>
+0x9BE7	U+5E37	# <cjk>
+0x9BE8	U+5E44	# <cjk>
+0x9BE9	U+5E43	# <cjk>
+0x9BEA	U+5E40	# <cjk>
+0x9BEB	U+5E4E	# <cjk>
+0x9BEC	U+5E57	# <cjk>
+0x9BED	U+5E54	# <cjk>
+0x9BEE	U+5E5F	# <cjk>
+0x9BEF	U+5E62	# <cjk>
+0x9BF0	U+5E64	# <cjk>
+0x9BF1	U+5E47	# <cjk>
+0x9BF2	U+5E75	# <cjk>
+0x9BF3	U+5E76	# <cjk>
+0x9BF4	U+5E7A	# <cjk>
+0x9BF5	U+9EBC	# <cjk>
+0x9BF6	U+5E7F	# <cjk>
+0x9BF7	U+5EA0	# <cjk>
+0x9BF8	U+5EC1	# <cjk>
+0x9BF9	U+5EC2	# <cjk>
+0x9BFA	U+5EC8	# <cjk>
+0x9BFB	U+5ED0	# <cjk>
+0x9BFC	U+5ECF	# <cjk>
+0x9C40	U+5ED6	# <cjk>
+0x9C41	U+5EE3	# <cjk>
+0x9C42	U+5EDD	# <cjk>
+0x9C43	U+5EDA	# <cjk>
+0x9C44	U+5EDB	# <cjk>
+0x9C45	U+5EE2	# <cjk>
+0x9C46	U+5EE1	# <cjk>
+0x9C47	U+5EE8	# <cjk>
+0x9C48	U+5EE9	# <cjk>
+0x9C49	U+5EEC	# <cjk>
+0x9C4A	U+5EF1	# <cjk>
+0x9C4B	U+5EF3	# <cjk>
+0x9C4C	U+5EF0	# <cjk>
+0x9C4D	U+5EF4	# <cjk>
+0x9C4E	U+5EF8	# <cjk>
+0x9C4F	U+5EFE	# <cjk>
+0x9C50	U+5F03	# <cjk>
+0x9C51	U+5F09	# <cjk>
+0x9C52	U+5F5D	# <cjk>
+0x9C53	U+5F5C	# <cjk>
+0x9C54	U+5F0B	# <cjk>
+0x9C55	U+5F11	# <cjk>
+0x9C56	U+5F16	# <cjk>
+0x9C57	U+5F29	# <cjk>
+0x9C58	U+5F2D	# <cjk>
+0x9C59	U+5F38	# <cjk>
+0x9C5A	U+5F41	# <cjk>
+0x9C5B	U+5F48	# <cjk>
+0x9C5C	U+5F4C	# <cjk>
+0x9C5D	U+5F4E	# <cjk>
+0x9C5E	U+5F2F	# <cjk>
+0x9C5F	U+5F51	# <cjk>
+0x9C60	U+5F56	# <cjk>
+0x9C61	U+5F57	# <cjk>
+0x9C62	U+5F59	# <cjk>
+0x9C63	U+5F61	# <cjk>
+0x9C64	U+5F6D	# <cjk>
+0x9C65	U+5F73	# <cjk>
+0x9C66	U+5F77	# <cjk>
+0x9C67	U+5F83	# <cjk>
+0x9C68	U+5F82	# <cjk>
+0x9C69	U+5F7F	# <cjk>
+0x9C6A	U+5F8A	# <cjk>
+0x9C6B	U+5F88	# <cjk>
+0x9C6C	U+5F91	# <cjk>
+0x9C6D	U+5F87	# <cjk>
+0x9C6E	U+5F9E	# <cjk>
+0x9C6F	U+5F99	# <cjk>
+0x9C70	U+5F98	# <cjk>
+0x9C71	U+5FA0	# <cjk>
+0x9C72	U+5FA8	# <cjk>
+0x9C73	U+5FAD	# <cjk>
+0x9C74	U+5FBC	# <cjk>
+0x9C75	U+5FD6	# <cjk>
+0x9C76	U+5FFB	# <cjk>
+0x9C77	U+5FE4	# <cjk>
+0x9C78	U+5FF8	# <cjk>
+0x9C79	U+5FF1	# <cjk>
+0x9C7A	U+5FDD	# <cjk>
+0x9C7B	U+60B3	# <cjk>
+0x9C7C	U+5FFF	# <cjk>
+0x9C7D	U+6021	# <cjk>
+0x9C7E	U+6060	# <cjk>
+0x9C80	U+6019	# <cjk>
+0x9C81	U+6010	# <cjk>
+0x9C82	U+6029	# <cjk>
+0x9C83	U+600E	# <cjk>
+0x9C84	U+6031	# <cjk>
+0x9C85	U+601B	# <cjk>
+0x9C86	U+6015	# <cjk>
+0x9C87	U+602B	# <cjk>
+0x9C88	U+6026	# <cjk>
+0x9C89	U+600F	# <cjk>
+0x9C8A	U+603A	# <cjk>
+0x9C8B	U+605A	# <cjk>
+0x9C8C	U+6041	# <cjk>
+0x9C8D	U+606A	# <cjk>
+0x9C8E	U+6077	# <cjk>
+0x9C8F	U+605F	# <cjk>
+0x9C90	U+604A	# <cjk>
+0x9C91	U+6046	# <cjk>
+0x9C92	U+604D	# <cjk>
+0x9C93	U+6063	# <cjk>
+0x9C94	U+6043	# <cjk>
+0x9C95	U+6064	# <cjk>
+0x9C96	U+6042	# <cjk>
+0x9C97	U+606C	# <cjk>
+0x9C98	U+606B	# <cjk>
+0x9C99	U+6059	# <cjk>
+0x9C9A	U+6081	# <cjk>
+0x9C9B	U+608D	# <cjk>
+0x9C9C	U+60E7	# <cjk>
+0x9C9D	U+6083	# <cjk>
+0x9C9E	U+609A	# <cjk>
+0x9C9F	U+6084	# <cjk>
+0x9CA0	U+609B	# <cjk>
+0x9CA1	U+6096	# <cjk>
+0x9CA2	U+6097	# <cjk>
+0x9CA3	U+6092	# <cjk>
+0x9CA4	U+60A7	# <cjk>
+0x9CA5	U+608B	# <cjk>
+0x9CA6	U+60E1	# <cjk>
+0x9CA7	U+60B8	# <cjk>
+0x9CA8	U+60E0	# <cjk>
+0x9CA9	U+60D3	# <cjk>
+0x9CAA	U+60B4	# <cjk>
+0x9CAB	U+5FF0	# <cjk>
+0x9CAC	U+60BD	# <cjk>
+0x9CAD	U+60C6	# <cjk>
+0x9CAE	U+60B5	# <cjk>
+0x9CAF	U+60D8	# <cjk>
+0x9CB0	U+614D	# <cjk>
+0x9CB1	U+6115	# <cjk>
+0x9CB2	U+6106	# <cjk>
+0x9CB3	U+60F6	# <cjk>
+0x9CB4	U+60F7	# <cjk>
+0x9CB5	U+6100	# <cjk>
+0x9CB6	U+60F4	# <cjk>
+0x9CB7	U+60FA	# <cjk>
+0x9CB8	U+6103	# <cjk>
+0x9CB9	U+6121	# <cjk>
+0x9CBA	U+60FB	# <cjk>
+0x9CBB	U+60F1	# <cjk>
+0x9CBC	U+610D	# <cjk>
+0x9CBD	U+610E	# <cjk>
+0x9CBE	U+6147	# <cjk>
+0x9CBF	U+613E	# <cjk>
+0x9CC0	U+6128	# <cjk>
+0x9CC1	U+6127	# <cjk>
+0x9CC2	U+614A	# <cjk>
+0x9CC3	U+613F	# <cjk>
+0x9CC4	U+613C	# <cjk>
+0x9CC5	U+612C	# <cjk>
+0x9CC6	U+6134	# <cjk>
+0x9CC7	U+613D	# <cjk>
+0x9CC8	U+6142	# <cjk>
+0x9CC9	U+6144	# <cjk>
+0x9CCA	U+6173	# <cjk>
+0x9CCB	U+6177	# <cjk>
+0x9CCC	U+6158	# <cjk>
+0x9CCD	U+6159	# <cjk>
+0x9CCE	U+615A	# <cjk>
+0x9CCF	U+616B	# <cjk>
+0x9CD0	U+6174	# <cjk>
+0x9CD1	U+616F	# <cjk>
+0x9CD2	U+6165	# <cjk>
+0x9CD3	U+6171	# <cjk>
+0x9CD4	U+615F	# <cjk>
+0x9CD5	U+615D	# <cjk>
+0x9CD6	U+6153	# <cjk>
+0x9CD7	U+6175	# <cjk>
+0x9CD8	U+6199	# <cjk>
+0x9CD9	U+6196	# <cjk>
+0x9CDA	U+6187	# <cjk>
+0x9CDB	U+61AC	# <cjk>
+0x9CDC	U+6194	# <cjk>
+0x9CDD	U+619A	# <cjk>
+0x9CDE	U+618A	# <cjk>
+0x9CDF	U+6191	# <cjk>
+0x9CE0	U+61AB	# <cjk>
+0x9CE1	U+61AE	# <cjk>
+0x9CE2	U+61CC	# <cjk>
+0x9CE3	U+61CA	# <cjk>
+0x9CE4	U+61C9	# <cjk>
+0x9CE5	U+61F7	# <cjk>
+0x9CE6	U+61C8	# <cjk>
+0x9CE7	U+61C3	# <cjk>
+0x9CE8	U+61C6	# <cjk>
+0x9CE9	U+61BA	# <cjk>
+0x9CEA	U+61CB	# <cjk>
+0x9CEB	U+7F79	# <cjk>
+0x9CEC	U+61CD	# <cjk>
+0x9CED	U+61E6	# <cjk>
+0x9CEE	U+61E3	# <cjk>
+0x9CEF	U+61F6	# <cjk>
+0x9CF0	U+61FA	# <cjk>
+0x9CF1	U+61F4	# <cjk>
+0x9CF2	U+61FF	# <cjk>
+0x9CF3	U+61FD	# <cjk>
+0x9CF4	U+61FC	# <cjk>
+0x9CF5	U+61FE	# <cjk>
+0x9CF6	U+6200	# <cjk>
+0x9CF7	U+6208	# <cjk>
+0x9CF8	U+6209	# <cjk>
+0x9CF9	U+620D	# <cjk>
+0x9CFA	U+620C	# <cjk>
+0x9CFB	U+6214	# <cjk>
+0x9CFC	U+621B	# <cjk>
+0x9D40	U+621E	# <cjk>
+0x9D41	U+6221	# <cjk>
+0x9D42	U+622A	# <cjk>
+0x9D43	U+622E	# <cjk>
+0x9D44	U+6230	# <cjk>
+0x9D45	U+6232	# <cjk>
+0x9D46	U+6233	# <cjk>
+0x9D47	U+6241	# <cjk>
+0x9D48	U+624E	# <cjk>
+0x9D49	U+625E	# <cjk>
+0x9D4A	U+6263	# <cjk>
+0x9D4B	U+625B	# <cjk>
+0x9D4C	U+6260	# <cjk>
+0x9D4D	U+6268	# <cjk>
+0x9D4E	U+627C	# <cjk>
+0x9D4F	U+6282	# <cjk>
+0x9D50	U+6289	# <cjk>
+0x9D51	U+627E	# <cjk>
+0x9D52	U+6292	# <cjk>
+0x9D53	U+6293	# <cjk>
+0x9D54	U+6296	# <cjk>
+0x9D55	U+62D4	# <cjk>
+0x9D56	U+6283	# <cjk>
+0x9D57	U+6294	# <cjk>
+0x9D58	U+62D7	# <cjk>
+0x9D59	U+62D1	# <cjk>
+0x9D5A	U+62BB	# <cjk>
+0x9D5B	U+62CF	# <cjk>
+0x9D5C	U+62FF	# <cjk>
+0x9D5D	U+62C6	# <cjk>
+0x9D5E	U+64D4	# <cjk>
+0x9D5F	U+62C8	# <cjk>
+0x9D60	U+62DC	# <cjk>
+0x9D61	U+62CC	# <cjk>
+0x9D62	U+62CA	# <cjk>
+0x9D63	U+62C2	# <cjk>
+0x9D64	U+62C7	# <cjk>
+0x9D65	U+629B	# <cjk>
+0x9D66	U+62C9	# <cjk>
+0x9D67	U+630C	# <cjk>
+0x9D68	U+62EE	# <cjk>
+0x9D69	U+62F1	# <cjk>
+0x9D6A	U+6327	# <cjk>
+0x9D6B	U+6302	# <cjk>
+0x9D6C	U+6308	# <cjk>
+0x9D6D	U+62EF	# <cjk>
+0x9D6E	U+62F5	# <cjk>
+0x9D6F	U+6350	# <cjk>
+0x9D70	U+633E	# <cjk>
+0x9D71	U+634D	# <cjk>
+0x9D72	U+641C	# <cjk>
+0x9D73	U+634F	# <cjk>
+0x9D74	U+6396	# <cjk>
+0x9D75	U+638E	# <cjk>
+0x9D76	U+6380	# <cjk>
+0x9D77	U+63AB	# <cjk>
+0x9D78	U+6376	# <cjk>
+0x9D79	U+63A3	# <cjk>
+0x9D7A	U+638F	# <cjk>
+0x9D7B	U+6389	# <cjk>
+0x9D7C	U+639F	# <cjk>
+0x9D7D	U+63B5	# <cjk>
+0x9D7E	U+636B	# <cjk>
+0x9D80	U+6369	# <cjk>
+0x9D81	U+63BE	# <cjk>
+0x9D82	U+63E9	# <cjk>
+0x9D83	U+63C0	# <cjk>
+0x9D84	U+63C6	# <cjk>
+0x9D85	U+63E3	# <cjk>
+0x9D86	U+63C9	# <cjk>
+0x9D87	U+63D2	# <cjk>
+0x9D88	U+63F6	# <cjk>
+0x9D89	U+63C4	# <cjk>
+0x9D8A	U+6416	# <cjk>
+0x9D8B	U+6434	# <cjk>
+0x9D8C	U+6406	# <cjk>
+0x9D8D	U+6413	# <cjk>
+0x9D8E	U+6426	# <cjk>
+0x9D8F	U+6436	# <cjk>
+0x9D90	U+651D	# <cjk>
+0x9D91	U+6417	# <cjk>
+0x9D92	U+6428	# <cjk>
+0x9D93	U+640F	# <cjk>
+0x9D94	U+6467	# <cjk>
+0x9D95	U+646F	# <cjk>
+0x9D96	U+6476	# <cjk>
+0x9D97	U+644E	# <cjk>
+0x9D98	U+652A	# <cjk>
+0x9D99	U+6495	# <cjk>
+0x9D9A	U+6493	# <cjk>
+0x9D9B	U+64A5	# <cjk>
+0x9D9C	U+64A9	# <cjk>
+0x9D9D	U+6488	# <cjk>
+0x9D9E	U+64BC	# <cjk>
+0x9D9F	U+64DA	# <cjk>
+0x9DA0	U+64D2	# <cjk>
+0x9DA1	U+64C5	# <cjk>
+0x9DA2	U+64C7	# <cjk>
+0x9DA3	U+64BB	# <cjk>
+0x9DA4	U+64D8	# <cjk>
+0x9DA5	U+64C2	# <cjk>
+0x9DA6	U+64F1	# <cjk>
+0x9DA7	U+64E7	# <cjk>
+0x9DA8	U+8209	# <cjk>
+0x9DA9	U+64E0	# <cjk>
+0x9DAA	U+64E1	# <cjk>
+0x9DAB	U+62AC	# <cjk>
+0x9DAC	U+64E3	# <cjk>
+0x9DAD	U+64EF	# <cjk>
+0x9DAE	U+652C	# <cjk>
+0x9DAF	U+64F6	# <cjk>
+0x9DB0	U+64F4	# <cjk>
+0x9DB1	U+64F2	# <cjk>
+0x9DB2	U+64FA	# <cjk>
+0x9DB3	U+6500	# <cjk>
+0x9DB4	U+64FD	# <cjk>
+0x9DB5	U+6518	# <cjk>
+0x9DB6	U+651C	# <cjk>
+0x9DB7	U+6505	# <cjk>
+0x9DB8	U+6524	# <cjk>
+0x9DB9	U+6523	# <cjk>
+0x9DBA	U+652B	# <cjk>
+0x9DBB	U+6534	# <cjk>
+0x9DBC	U+6535	# <cjk>
+0x9DBD	U+6537	# <cjk>
+0x9DBE	U+6536	# <cjk>
+0x9DBF	U+6538	# <cjk>
+0x9DC0	U+754B	# <cjk>
+0x9DC1	U+6548	# <cjk>
+0x9DC2	U+6556	# <cjk>
+0x9DC3	U+6555	# <cjk>
+0x9DC4	U+654D	# <cjk>
+0x9DC5	U+6558	# <cjk>
+0x9DC6	U+655E	# <cjk>
+0x9DC7	U+655D	# <cjk>
+0x9DC8	U+6572	# <cjk>
+0x9DC9	U+6578	# <cjk>
+0x9DCA	U+6582	# <cjk>
+0x9DCB	U+6583	# <cjk>
+0x9DCC	U+8B8A	# <cjk>
+0x9DCD	U+659B	# <cjk>
+0x9DCE	U+659F	# <cjk>
+0x9DCF	U+65AB	# <cjk>
+0x9DD0	U+65B7	# <cjk>
+0x9DD1	U+65C3	# <cjk>
+0x9DD2	U+65C6	# <cjk>
+0x9DD3	U+65C1	# <cjk>
+0x9DD4	U+65C4	# <cjk>
+0x9DD5	U+65CC	# <cjk>
+0x9DD6	U+65D2	# <cjk>
+0x9DD7	U+65DB	# <cjk>
+0x9DD8	U+65D9	# <cjk>
+0x9DD9	U+65E0	# <cjk>
+0x9DDA	U+65E1	# <cjk>
+0x9DDB	U+65F1	# <cjk>
+0x9DDC	U+6772	# <cjk>
+0x9DDD	U+660A	# <cjk>
+0x9DDE	U+6603	# <cjk>
+0x9DDF	U+65FB	# <cjk>
+0x9DE0	U+6773	# <cjk>
+0x9DE1	U+6635	# <cjk>
+0x9DE2	U+6636	# <cjk>
+0x9DE3	U+6634	# <cjk>
+0x9DE4	U+661C	# <cjk>
+0x9DE5	U+664F	# <cjk>
+0x9DE6	U+6644	# <cjk>
+0x9DE7	U+6649	# <cjk>
+0x9DE8	U+6641	# <cjk>
+0x9DE9	U+665E	# <cjk>
+0x9DEA	U+665D	# <cjk>
+0x9DEB	U+6664	# <cjk>
+0x9DEC	U+6667	# <cjk>
+0x9DED	U+6668	# <cjk>
+0x9DEE	U+665F	# <cjk>
+0x9DEF	U+6662	# <cjk>
+0x9DF0	U+6670	# <cjk>
+0x9DF1	U+6683	# <cjk>
+0x9DF2	U+6688	# <cjk>
+0x9DF3	U+668E	# <cjk>
+0x9DF4	U+6689	# <cjk>
+0x9DF5	U+6684	# <cjk>
+0x9DF6	U+6698	# <cjk>
+0x9DF7	U+669D	# <cjk>
+0x9DF8	U+66C1	# <cjk>
+0x9DF9	U+66B9	# <cjk>
+0x9DFA	U+66C9	# <cjk>
+0x9DFB	U+66BE	# <cjk>
+0x9DFC	U+66BC	# <cjk>
+0x9E40	U+66C4	# <cjk>
+0x9E41	U+66B8	# <cjk>
+0x9E42	U+66D6	# <cjk>
+0x9E43	U+66DA	# <cjk>
+0x9E44	U+66E0	# <cjk>
+0x9E45	U+663F	# <cjk>
+0x9E46	U+66E6	# <cjk>
+0x9E47	U+66E9	# <cjk>
+0x9E48	U+66F0	# <cjk>
+0x9E49	U+66F5	# <cjk>
+0x9E4A	U+66F7	# <cjk>
+0x9E4B	U+670F	# <cjk>
+0x9E4C	U+6716	# <cjk>
+0x9E4D	U+671E	# <cjk>
+0x9E4E	U+6726	# <cjk>
+0x9E4F	U+6727	# <cjk>
+0x9E50	U+9738	# <cjk>
+0x9E51	U+672E	# <cjk>
+0x9E52	U+673F	# <cjk>
+0x9E53	U+6736	# <cjk>
+0x9E54	U+6741	# <cjk>
+0x9E55	U+6738	# <cjk>
+0x9E56	U+6737	# <cjk>
+0x9E57	U+6746	# <cjk>
+0x9E58	U+675E	# <cjk>
+0x9E59	U+6760	# <cjk>
+0x9E5A	U+6759	# <cjk>
+0x9E5B	U+6763	# <cjk>
+0x9E5C	U+6764	# <cjk>
+0x9E5D	U+6789	# <cjk>
+0x9E5E	U+6770	# <cjk>
+0x9E5F	U+67A9	# <cjk>
+0x9E60	U+677C	# <cjk>
+0x9E61	U+676A	# <cjk>
+0x9E62	U+678C	# <cjk>
+0x9E63	U+678B	# <cjk>
+0x9E64	U+67A6	# <cjk>
+0x9E65	U+67A1	# <cjk>
+0x9E66	U+6785	# <cjk>
+0x9E67	U+67B7	# <cjk>
+0x9E68	U+67EF	# <cjk>
+0x9E69	U+67B4	# <cjk>
+0x9E6A	U+67EC	# <cjk>
+0x9E6B	U+67B3	# <cjk>
+0x9E6C	U+67E9	# <cjk>
+0x9E6D	U+67B8	# <cjk>
+0x9E6E	U+67E4	# <cjk>
+0x9E6F	U+67DE	# <cjk>
+0x9E70	U+67DD	# <cjk>
+0x9E71	U+67E2	# <cjk>
+0x9E72	U+67EE	# <cjk>
+0x9E73	U+67B9	# <cjk>
+0x9E74	U+67CE	# <cjk>
+0x9E75	U+67C6	# <cjk>
+0x9E76	U+67E7	# <cjk>
+0x9E77	U+6A9C	# <cjk>
+0x9E78	U+681E	# <cjk>
+0x9E79	U+6846	# <cjk>
+0x9E7A	U+6829	# <cjk>
+0x9E7B	U+6840	# <cjk>
+0x9E7C	U+684D	# <cjk>
+0x9E7D	U+6832	# <cjk>
+0x9E7E	U+684E	# <cjk>
+0x9E80	U+68B3	# <cjk>
+0x9E81	U+682B	# <cjk>
+0x9E82	U+6859	# <cjk>
+0x9E83	U+6863	# <cjk>
+0x9E84	U+6877	# <cjk>
+0x9E85	U+687F	# <cjk>
+0x9E86	U+689F	# <cjk>
+0x9E87	U+688F	# <cjk>
+0x9E88	U+68AD	# <cjk>
+0x9E89	U+6894	# <cjk>
+0x9E8A	U+689D	# <cjk>
+0x9E8B	U+689B	# <cjk>
+0x9E8C	U+6883	# <cjk>
+0x9E8D	U+6AAE	# <cjk>
+0x9E8E	U+68B9	# <cjk>
+0x9E8F	U+6874	# <cjk>
+0x9E90	U+68B5	# <cjk>
+0x9E91	U+68A0	# <cjk>
+0x9E92	U+68BA	# <cjk>
+0x9E93	U+690F	# <cjk>
+0x9E94	U+688D	# <cjk>
+0x9E95	U+687E	# <cjk>
+0x9E96	U+6901	# <cjk>
+0x9E97	U+68CA	# <cjk>
+0x9E98	U+6908	# <cjk>
+0x9E99	U+68D8	# <cjk>
+0x9E9A	U+6922	# <cjk>
+0x9E9B	U+6926	# <cjk>
+0x9E9C	U+68E1	# <cjk>
+0x9E9D	U+690C	# <cjk>
+0x9E9E	U+68CD	# <cjk>
+0x9E9F	U+68D4	# <cjk>
+0x9EA0	U+68E7	# <cjk>
+0x9EA1	U+68D5	# <cjk>
+0x9EA2	U+6936	# <cjk>
+0x9EA3	U+6912	# <cjk>
+0x9EA4	U+6904	# <cjk>
+0x9EA5	U+68D7	# <cjk>
+0x9EA6	U+68E3	# <cjk>
+0x9EA7	U+6925	# <cjk>
+0x9EA8	U+68F9	# <cjk>
+0x9EA9	U+68E0	# <cjk>
+0x9EAA	U+68EF	# <cjk>
+0x9EAB	U+6928	# <cjk>
+0x9EAC	U+692A	# <cjk>
+0x9EAD	U+691A	# <cjk>
+0x9EAE	U+6923	# <cjk>
+0x9EAF	U+6921	# <cjk>
+0x9EB0	U+68C6	# <cjk>
+0x9EB1	U+6979	# <cjk>
+0x9EB2	U+6977	# <cjk>
+0x9EB3	U+695C	# <cjk>
+0x9EB4	U+6978	# <cjk>
+0x9EB5	U+696B	# <cjk>
+0x9EB6	U+6954	# <cjk>
+0x9EB7	U+697E	# <cjk>
+0x9EB8	U+696E	# <cjk>
+0x9EB9	U+6939	# <cjk>
+0x9EBA	U+6974	# <cjk>
+0x9EBB	U+693D	# <cjk>
+0x9EBC	U+6959	# <cjk>
+0x9EBD	U+6930	# <cjk>
+0x9EBE	U+6961	# <cjk>
+0x9EBF	U+695E	# <cjk>
+0x9EC0	U+695D	# <cjk>
+0x9EC1	U+6981	# <cjk>
+0x9EC2	U+696A	# <cjk>
+0x9EC3	U+69B2	# <cjk>
+0x9EC4	U+69AE	# <cjk>
+0x9EC5	U+69D0	# <cjk>
+0x9EC6	U+69BF	# <cjk>
+0x9EC7	U+69C1	# <cjk>
+0x9EC8	U+69D3	# <cjk>
+0x9EC9	U+69BE	# <cjk>
+0x9ECA	U+69CE	# <cjk>
+0x9ECB	U+5BE8	# <cjk>
+0x9ECC	U+69CA	# <cjk>
+0x9ECD	U+69DD	# <cjk>
+0x9ECE	U+69BB	# <cjk>
+0x9ECF	U+69C3	# <cjk>
+0x9ED0	U+69A7	# <cjk>
+0x9ED1	U+6A2E	# <cjk>
+0x9ED2	U+6991	# <cjk>
+0x9ED3	U+69A0	# <cjk>
+0x9ED4	U+699C	# <cjk>
+0x9ED5	U+6995	# <cjk>
+0x9ED6	U+69B4	# <cjk>
+0x9ED7	U+69DE	# <cjk>
+0x9ED8	U+69E8	# <cjk>
+0x9ED9	U+6A02	# <cjk>
+0x9EDA	U+6A1B	# <cjk>
+0x9EDB	U+69FF	# <cjk>
+0x9EDC	U+6B0A	# <cjk>
+0x9EDD	U+69F9	# <cjk>
+0x9EDE	U+69F2	# <cjk>
+0x9EDF	U+69E7	# <cjk>
+0x9EE0	U+6A05	# <cjk>
+0x9EE1	U+69B1	# <cjk>
+0x9EE2	U+6A1E	# <cjk>
+0x9EE3	U+69ED	# <cjk>
+0x9EE4	U+6A14	# <cjk>
+0x9EE5	U+69EB	# <cjk>
+0x9EE6	U+6A0A	# <cjk>
+0x9EE7	U+6A12	# <cjk>
+0x9EE8	U+6AC1	# <cjk>
+0x9EE9	U+6A23	# <cjk>
+0x9EEA	U+6A13	# <cjk>
+0x9EEB	U+6A44	# <cjk>
+0x9EEC	U+6A0C	# <cjk>
+0x9EED	U+6A72	# <cjk>
+0x9EEE	U+6A36	# <cjk>
+0x9EEF	U+6A78	# <cjk>
+0x9EF0	U+6A47	# <cjk>
+0x9EF1	U+6A62	# <cjk>
+0x9EF2	U+6A59	# <cjk>
+0x9EF3	U+6A66	# <cjk>
+0x9EF4	U+6A48	# <cjk>
+0x9EF5	U+6A38	# <cjk>
+0x9EF6	U+6A22	# <cjk>
+0x9EF7	U+6A90	# <cjk>
+0x9EF8	U+6A8D	# <cjk>
+0x9EF9	U+6AA0	# <cjk>
+0x9EFA	U+6A84	# <cjk>
+0x9EFB	U+6AA2	# <cjk>
+0x9EFC	U+6AA3	# <cjk>
+0x9F40	U+6A97	# <cjk>
+0x9F41	U+8617	# <cjk>
+0x9F42	U+6ABB	# <cjk>
+0x9F43	U+6AC3	# <cjk>
+0x9F44	U+6AC2	# <cjk>
+0x9F45	U+6AB8	# <cjk>
+0x9F46	U+6AB3	# <cjk>
+0x9F47	U+6AAC	# <cjk>
+0x9F48	U+6ADE	# <cjk>
+0x9F49	U+6AD1	# <cjk>
+0x9F4A	U+6ADF	# <cjk>
+0x9F4B	U+6AAA	# <cjk>
+0x9F4C	U+6ADA	# <cjk>
+0x9F4D	U+6AEA	# <cjk>
+0x9F4E	U+6AFB	# <cjk>
+0x9F4F	U+6B05	# <cjk>
+0x9F50	U+8616	# <cjk>
+0x9F51	U+6AFA	# <cjk>
+0x9F52	U+6B12	# <cjk>
+0x9F53	U+6B16	# <cjk>
+0x9F54	U+9B31	# <cjk>
+0x9F55	U+6B1F	# <cjk>
+0x9F56	U+6B38	# <cjk>
+0x9F57	U+6B37	# <cjk>
+0x9F58	U+76DC	# <cjk>
+0x9F59	U+6B39	# <cjk>
+0x9F5A	U+98EE	# <cjk>
+0x9F5B	U+6B47	# <cjk>
+0x9F5C	U+6B43	# <cjk>
+0x9F5D	U+6B49	# <cjk>
+0x9F5E	U+6B50	# <cjk>
+0x9F5F	U+6B59	# <cjk>
+0x9F60	U+6B54	# <cjk>
+0x9F61	U+6B5B	# <cjk>
+0x9F62	U+6B5F	# <cjk>
+0x9F63	U+6B61	# <cjk>
+0x9F64	U+6B78	# <cjk>
+0x9F65	U+6B79	# <cjk>
+0x9F66	U+6B7F	# <cjk>
+0x9F67	U+6B80	# <cjk>
+0x9F68	U+6B84	# <cjk>
+0x9F69	U+6B83	# <cjk>
+0x9F6A	U+6B8D	# <cjk>
+0x9F6B	U+6B98	# <cjk>
+0x9F6C	U+6B95	# <cjk>
+0x9F6D	U+6B9E	# <cjk>
+0x9F6E	U+6BA4	# <cjk>
+0x9F6F	U+6BAA	# <cjk>
+0x9F70	U+6BAB	# <cjk>
+0x9F71	U+6BAF	# <cjk>
+0x9F72	U+6BB2	# <cjk>
+0x9F73	U+6BB1	# <cjk>
+0x9F74	U+6BB3	# <cjk>
+0x9F75	U+6BB7	# <cjk>
+0x9F76	U+6BBC	# <cjk>
+0x9F77	U+6BC6	# <cjk>
+0x9F78	U+6BCB	# <cjk>
+0x9F79	U+6BD3	# <cjk>
+0x9F7A	U+6BDF	# <cjk>
+0x9F7B	U+6BEC	# <cjk>
+0x9F7C	U+6BEB	# <cjk>
+0x9F7D	U+6BF3	# <cjk>
+0x9F7E	U+6BEF	# <cjk>
+0x9F80	U+9EBE	# <cjk>
+0x9F81	U+6C08	# <cjk>
+0x9F82	U+6C13	# <cjk>
+0x9F83	U+6C14	# <cjk>
+0x9F84	U+6C1B	# <cjk>
+0x9F85	U+6C24	# <cjk>
+0x9F86	U+6C23	# <cjk>
+0x9F87	U+6C5E	# <cjk>
+0x9F88	U+6C55	# <cjk>
+0x9F89	U+6C62	# <cjk>
+0x9F8A	U+6C6A	# <cjk>
+0x9F8B	U+6C82	# <cjk>
+0x9F8C	U+6C8D	# <cjk>
+0x9F8D	U+6C9A	# <cjk>
+0x9F8E	U+6C81	# <cjk>
+0x9F8F	U+6C9B	# <cjk>
+0x9F90	U+6C7E	# <cjk>
+0x9F91	U+6C68	# <cjk>
+0x9F92	U+6C73	# <cjk>
+0x9F93	U+6C92	# <cjk>
+0x9F94	U+6C90	# <cjk>
+0x9F95	U+6CC4	# <cjk>
+0x9F96	U+6CF1	# <cjk>
+0x9F97	U+6CD3	# <cjk>
+0x9F98	U+6CBD	# <cjk>
+0x9F99	U+6CD7	# <cjk>
+0x9F9A	U+6CC5	# <cjk>
+0x9F9B	U+6CDD	# <cjk>
+0x9F9C	U+6CAE	# <cjk>
+0x9F9D	U+6CB1	# <cjk>
+0x9F9E	U+6CBE	# <cjk>
+0x9F9F	U+6CBA	# <cjk>
+0x9FA0	U+6CDB	# <cjk>
+0x9FA1	U+6CEF	# <cjk>
+0x9FA2	U+6CD9	# <cjk>
+0x9FA3	U+6CEA	# <cjk>
+0x9FA4	U+6D1F	# <cjk>
+0x9FA5	U+884D	# <cjk>
+0x9FA6	U+6D36	# <cjk>
+0x9FA7	U+6D2B	# <cjk>
+0x9FA8	U+6D3D	# <cjk>
+0x9FA9	U+6D38	# <cjk>
+0x9FAA	U+6D19	# <cjk>
+0x9FAB	U+6D35	# <cjk>
+0x9FAC	U+6D33	# <cjk>
+0x9FAD	U+6D12	# <cjk>
+0x9FAE	U+6D0C	# <cjk>
+0x9FAF	U+6D63	# <cjk>
+0x9FB0	U+6D93	# <cjk>
+0x9FB1	U+6D64	# <cjk>
+0x9FB2	U+6D5A	# <cjk>
+0x9FB3	U+6D79	# <cjk>
+0x9FB4	U+6D59	# <cjk>
+0x9FB5	U+6D8E	# <cjk>
+0x9FB6	U+6D95	# <cjk>
+0x9FB7	U+6FE4	# <cjk>
+0x9FB8	U+6D85	# <cjk>
+0x9FB9	U+6DF9	# <cjk>
+0x9FBA	U+6E15	# <cjk>
+0x9FBB	U+6E0A	# <cjk>
+0x9FBC	U+6DB5	# <cjk>
+0x9FBD	U+6DC7	# <cjk>
+0x9FBE	U+6DE6	# <cjk>
+0x9FBF	U+6DB8	# <cjk>
+0x9FC0	U+6DC6	# <cjk>
+0x9FC1	U+6DEC	# <cjk>
+0x9FC2	U+6DDE	# <cjk>
+0x9FC3	U+6DCC	# <cjk>
+0x9FC4	U+6DE8	# <cjk>
+0x9FC5	U+6DD2	# <cjk>
+0x9FC6	U+6DC5	# <cjk>
+0x9FC7	U+6DFA	# <cjk>
+0x9FC8	U+6DD9	# <cjk>
+0x9FC9	U+6DE4	# <cjk>
+0x9FCA	U+6DD5	# <cjk>
+0x9FCB	U+6DEA	# <cjk>
+0x9FCC	U+6DEE	# <cjk>
+0x9FCD	U+6E2D	# <cjk>
+0x9FCE	U+6E6E	# <cjk>
+0x9FCF	U+6E2E	# <cjk>
+0x9FD0	U+6E19	# <cjk>
+0x9FD1	U+6E72	# <cjk>
+0x9FD2	U+6E5F	# <cjk>
+0x9FD3	U+6E3E	# <cjk>
+0x9FD4	U+6E23	# <cjk>
+0x9FD5	U+6E6B	# <cjk>
+0x9FD6	U+6E2B	# <cjk>
+0x9FD7	U+6E76	# <cjk>
+0x9FD8	U+6E4D	# <cjk>
+0x9FD9	U+6E1F	# <cjk>
+0x9FDA	U+6E43	# <cjk>
+0x9FDB	U+6E3A	# <cjk>
+0x9FDC	U+6E4E	# <cjk>
+0x9FDD	U+6E24	# <cjk>
+0x9FDE	U+6EFF	# <cjk>
+0x9FDF	U+6E1D	# <cjk>
+0x9FE0	U+6E38	# <cjk>
+0x9FE1	U+6E82	# <cjk>
+0x9FE2	U+6EAA	# <cjk>
+0x9FE3	U+6E98	# <cjk>
+0x9FE4	U+6EC9	# <cjk>
+0x9FE5	U+6EB7	# <cjk>
+0x9FE6	U+6ED3	# <cjk>
+0x9FE7	U+6EBD	# <cjk>
+0x9FE8	U+6EAF	# <cjk>
+0x9FE9	U+6EC4	# <cjk>
+0x9FEA	U+6EB2	# <cjk>
+0x9FEB	U+6ED4	# <cjk>
+0x9FEC	U+6ED5	# <cjk>
+0x9FED	U+6E8F	# <cjk>
+0x9FEE	U+6EA5	# <cjk>
+0x9FEF	U+6EC2	# <cjk>
+0x9FF0	U+6E9F	# <cjk>
+0x9FF1	U+6F41	# <cjk>
+0x9FF2	U+6F11	# <cjk>
+0x9FF3	U+704C	# <cjk>
+0x9FF4	U+6EEC	# <cjk>
+0x9FF5	U+6EF8	# <cjk>
+0x9FF6	U+6EFE	# <cjk>
+0x9FF7	U+6F3F	# <cjk>
+0x9FF8	U+6EF2	# <cjk>
+0x9FF9	U+6F31	# <cjk>
+0x9FFA	U+6EEF	# <cjk>
+0x9FFB	U+6F32	# <cjk>
+0x9FFC	U+6ECC	# <cjk>
+0xE040	U+6F3E	# <cjk>
+0xE041	U+6F13	# <cjk>
+0xE042	U+6EF7	# <cjk>
+0xE043	U+6F86	# <cjk>
+0xE044	U+6F7A	# <cjk>
+0xE045	U+6F78	# <cjk>
+0xE046	U+6F81	# <cjk>
+0xE047	U+6F80	# <cjk>
+0xE048	U+6F6F	# <cjk>
+0xE049	U+6F5B	# <cjk>
+0xE04A	U+6FF3	# <cjk>
+0xE04B	U+6F6D	# <cjk>
+0xE04C	U+6F82	# <cjk>
+0xE04D	U+6F7C	# <cjk>
+0xE04E	U+6F58	# <cjk>
+0xE04F	U+6F8E	# <cjk>
+0xE050	U+6F91	# <cjk>
+0xE051	U+6FC2	# <cjk>
+0xE052	U+6F66	# <cjk>
+0xE053	U+6FB3	# <cjk>
+0xE054	U+6FA3	# <cjk>
+0xE055	U+6FA1	# <cjk>
+0xE056	U+6FA4	# <cjk>
+0xE057	U+6FB9	# <cjk>
+0xE058	U+6FC6	# <cjk>
+0xE059	U+6FAA	# <cjk>
+0xE05A	U+6FDF	# <cjk>
+0xE05B	U+6FD5	# <cjk>
+0xE05C	U+6FEC	# <cjk>
+0xE05D	U+6FD4	# <cjk>
+0xE05E	U+6FD8	# <cjk>
+0xE05F	U+6FF1	# <cjk>
+0xE060	U+6FEE	# <cjk>
+0xE061	U+6FDB	# <cjk>
+0xE062	U+7009	# <cjk>
+0xE063	U+700B	# <cjk>
+0xE064	U+6FFA	# <cjk>
+0xE065	U+7011	# <cjk>
+0xE066	U+7001	# <cjk>
+0xE067	U+700F	# <cjk>
+0xE068	U+6FFE	# <cjk>
+0xE069	U+701B	# <cjk>
+0xE06A	U+701A	# <cjk>
+0xE06B	U+6F74	# <cjk>
+0xE06C	U+701D	# <cjk>
+0xE06D	U+7018	# <cjk>
+0xE06E	U+701F	# <cjk>
+0xE06F	U+7030	# <cjk>
+0xE070	U+703E	# <cjk>
+0xE071	U+7032	# <cjk>
+0xE072	U+7051	# <cjk>
+0xE073	U+7063	# <cjk>
+0xE074	U+7099	# <cjk>
+0xE075	U+7092	# <cjk>
+0xE076	U+70AF	# <cjk>
+0xE077	U+70F1	# <cjk>
+0xE078	U+70AC	# <cjk>
+0xE079	U+70B8	# <cjk>
+0xE07A	U+70B3	# <cjk>
+0xE07B	U+70AE	# <cjk>
+0xE07C	U+70DF	# <cjk>
+0xE07D	U+70CB	# <cjk>
+0xE07E	U+70DD	# <cjk>
+0xE080	U+70D9	# <cjk>
+0xE081	U+7109	# <cjk>
+0xE082	U+70FD	# <cjk>
+0xE083	U+711C	# <cjk>
+0xE084	U+7119	# <cjk>
+0xE085	U+7165	# <cjk>
+0xE086	U+7155	# <cjk>
+0xE087	U+7188	# <cjk>
+0xE088	U+7166	# <cjk>
+0xE089	U+7162	# <cjk>
+0xE08A	U+714C	# <cjk>
+0xE08B	U+7156	# <cjk>
+0xE08C	U+716C	# <cjk>
+0xE08D	U+718F	# <cjk>
+0xE08E	U+71FB	# <cjk>
+0xE08F	U+7184	# <cjk>
+0xE090	U+7195	# <cjk>
+0xE091	U+71A8	# <cjk>
+0xE092	U+71AC	# <cjk>
+0xE093	U+71D7	# <cjk>
+0xE094	U+71B9	# <cjk>
+0xE095	U+71BE	# <cjk>
+0xE096	U+71D2	# <cjk>
+0xE097	U+71C9	# <cjk>
+0xE098	U+71D4	# <cjk>
+0xE099	U+71CE	# <cjk>
+0xE09A	U+71E0	# <cjk>
+0xE09B	U+71EC	# <cjk>
+0xE09C	U+71E7	# <cjk>
+0xE09D	U+71F5	# <cjk>
+0xE09E	U+71FC	# <cjk>
+0xE09F	U+71F9	# <cjk>
+0xE0A0	U+71FF	# <cjk>
+0xE0A1	U+720D	# <cjk>
+0xE0A2	U+7210	# <cjk>
+0xE0A3	U+721B	# <cjk>
+0xE0A4	U+7228	# <cjk>
+0xE0A5	U+722D	# <cjk>
+0xE0A6	U+722C	# <cjk>
+0xE0A7	U+7230	# <cjk>
+0xE0A8	U+7232	# <cjk>
+0xE0A9	U+723B	# <cjk>
+0xE0AA	U+723C	# <cjk>
+0xE0AB	U+723F	# <cjk>
+0xE0AC	U+7240	# <cjk>
+0xE0AD	U+7246	# <cjk>
+0xE0AE	U+724B	# <cjk>
+0xE0AF	U+7258	# <cjk>
+0xE0B0	U+7274	# <cjk>
+0xE0B1	U+727E	# <cjk>
+0xE0B2	U+7282	# <cjk>
+0xE0B3	U+7281	# <cjk>
+0xE0B4	U+7287	# <cjk>
+0xE0B5	U+7292	# <cjk>
+0xE0B6	U+7296	# <cjk>
+0xE0B7	U+72A2	# <cjk>
+0xE0B8	U+72A7	# <cjk>
+0xE0B9	U+72B9	# <cjk>
+0xE0BA	U+72B2	# <cjk>
+0xE0BB	U+72C3	# <cjk>
+0xE0BC	U+72C6	# <cjk>
+0xE0BD	U+72C4	# <cjk>
+0xE0BE	U+72CE	# <cjk>
+0xE0BF	U+72D2	# <cjk>
+0xE0C0	U+72E2	# <cjk>
+0xE0C1	U+72E0	# <cjk>
+0xE0C2	U+72E1	# <cjk>
+0xE0C3	U+72F9	# <cjk>
+0xE0C4	U+72F7	# <cjk>
+0xE0C5	U+500F	# <cjk>
+0xE0C6	U+7317	# <cjk>
+0xE0C7	U+730A	# <cjk>
+0xE0C8	U+731C	# <cjk>
+0xE0C9	U+7316	# <cjk>
+0xE0CA	U+731D	# <cjk>
+0xE0CB	U+7334	# <cjk>
+0xE0CC	U+732F	# <cjk>
+0xE0CD	U+7329	# <cjk>
+0xE0CE	U+7325	# <cjk>
+0xE0CF	U+733E	# <cjk>
+0xE0D0	U+734E	# <cjk>
+0xE0D1	U+734F	# <cjk>
+0xE0D2	U+9ED8	# <cjk>
+0xE0D3	U+7357	# <cjk>
+0xE0D4	U+736A	# <cjk>
+0xE0D5	U+7368	# <cjk>
+0xE0D6	U+7370	# <cjk>
+0xE0D7	U+7378	# <cjk>
+0xE0D8	U+7375	# <cjk>
+0xE0D9	U+737B	# <cjk>
+0xE0DA	U+737A	# <cjk>
+0xE0DB	U+73C8	# <cjk>
+0xE0DC	U+73B3	# <cjk>
+0xE0DD	U+73CE	# <cjk>
+0xE0DE	U+73BB	# <cjk>
+0xE0DF	U+73C0	# <cjk>
+0xE0E0	U+73E5	# <cjk>
+0xE0E1	U+73EE	# <cjk>
+0xE0E2	U+73DE	# <cjk>
+0xE0E3	U+74A2	# <cjk>
+0xE0E4	U+7405	# <cjk>
+0xE0E5	U+746F	# <cjk>
+0xE0E6	U+7425	# <cjk>
+0xE0E7	U+73F8	# <cjk>
+0xE0E8	U+7432	# <cjk>
+0xE0E9	U+743A	# <cjk>
+0xE0EA	U+7455	# <cjk>
+0xE0EB	U+743F	# <cjk>
+0xE0EC	U+745F	# <cjk>
+0xE0ED	U+7459	# <cjk>
+0xE0EE	U+7441	# <cjk>
+0xE0EF	U+745C	# <cjk>
+0xE0F0	U+7469	# <cjk>
+0xE0F1	U+7470	# <cjk>
+0xE0F2	U+7463	# <cjk>
+0xE0F3	U+746A	# <cjk>
+0xE0F4	U+7476	# <cjk>
+0xE0F5	U+747E	# <cjk>
+0xE0F6	U+748B	# <cjk>
+0xE0F7	U+749E	# <cjk>
+0xE0F8	U+74A7	# <cjk>
+0xE0F9	U+74CA	# <cjk>
+0xE0FA	U+74CF	# <cjk>
+0xE0FB	U+74D4	# <cjk>
+0xE0FC	U+73F1	# <cjk>
+0xE140	U+74E0	# <cjk>
+0xE141	U+74E3	# <cjk>
+0xE142	U+74E7	# <cjk>
+0xE143	U+74E9	# <cjk>
+0xE144	U+74EE	# <cjk>
+0xE145	U+74F2	# <cjk>
+0xE146	U+74F0	# <cjk>
+0xE147	U+74F1	# <cjk>
+0xE148	U+74F8	# <cjk>
+0xE149	U+74F7	# <cjk>
+0xE14A	U+7504	# <cjk>
+0xE14B	U+7503	# <cjk>
+0xE14C	U+7505	# <cjk>
+0xE14D	U+750C	# <cjk>
+0xE14E	U+750E	# <cjk>
+0xE14F	U+750D	# <cjk>
+0xE150	U+7515	# <cjk>
+0xE151	U+7513	# <cjk>
+0xE152	U+751E	# <cjk>
+0xE153	U+7526	# <cjk>
+0xE154	U+752C	# <cjk>
+0xE155	U+753C	# <cjk>
+0xE156	U+7544	# <cjk>
+0xE157	U+754D	# <cjk>
+0xE158	U+754A	# <cjk>
+0xE159	U+7549	# <cjk>
+0xE15A	U+755B	# <cjk>
+0xE15B	U+7546	# <cjk>
+0xE15C	U+755A	# <cjk>
+0xE15D	U+7569	# <cjk>
+0xE15E	U+7564	# <cjk>
+0xE15F	U+7567	# <cjk>
+0xE160	U+756B	# <cjk>
+0xE161	U+756D	# <cjk>
+0xE162	U+7578	# <cjk>
+0xE163	U+7576	# <cjk>
+0xE164	U+7586	# <cjk>
+0xE165	U+7587	# <cjk>
+0xE166	U+7574	# <cjk>
+0xE167	U+758A	# <cjk>
+0xE168	U+7589	# <cjk>
+0xE169	U+7582	# <cjk>
+0xE16A	U+7594	# <cjk>
+0xE16B	U+759A	# <cjk>
+0xE16C	U+759D	# <cjk>
+0xE16D	U+75A5	# <cjk>
+0xE16E	U+75A3	# <cjk>
+0xE16F	U+75C2	# <cjk>
+0xE170	U+75B3	# <cjk>
+0xE171	U+75C3	# <cjk>
+0xE172	U+75B5	# <cjk>
+0xE173	U+75BD	# <cjk>
+0xE174	U+75B8	# <cjk>
+0xE175	U+75BC	# <cjk>
+0xE176	U+75B1	# <cjk>
+0xE177	U+75CD	# <cjk>
+0xE178	U+75CA	# <cjk>
+0xE179	U+75D2	# <cjk>
+0xE17A	U+75D9	# <cjk>
+0xE17B	U+75E3	# <cjk>
+0xE17C	U+75DE	# <cjk>
+0xE17D	U+75FE	# <cjk>
+0xE17E	U+75FF	# <cjk>
+0xE180	U+75FC	# <cjk>
+0xE181	U+7601	# <cjk>
+0xE182	U+75F0	# <cjk>
+0xE183	U+75FA	# <cjk>
+0xE184	U+75F2	# <cjk>
+0xE185	U+75F3	# <cjk>
+0xE186	U+760B	# <cjk>
+0xE187	U+760D	# <cjk>
+0xE188	U+7609	# <cjk>
+0xE189	U+761F	# <cjk>
+0xE18A	U+7627	# <cjk>
+0xE18B	U+7620	# <cjk>
+0xE18C	U+7621	# <cjk>
+0xE18D	U+7622	# <cjk>
+0xE18E	U+7624	# <cjk>
+0xE18F	U+7634	# <cjk>
+0xE190	U+7630	# <cjk>
+0xE191	U+763B	# <cjk>
+0xE192	U+7647	# <cjk>
+0xE193	U+7648	# <cjk>
+0xE194	U+7646	# <cjk>
+0xE195	U+765C	# <cjk>
+0xE196	U+7658	# <cjk>
+0xE197	U+7661	# <cjk>
+0xE198	U+7662	# <cjk>
+0xE199	U+7668	# <cjk>
+0xE19A	U+7669	# <cjk>
+0xE19B	U+766A	# <cjk>
+0xE19C	U+7667	# <cjk>
+0xE19D	U+766C	# <cjk>
+0xE19E	U+7670	# <cjk>
+0xE19F	U+7672	# <cjk>
+0xE1A0	U+7676	# <cjk>
+0xE1A1	U+7678	# <cjk>
+0xE1A2	U+767C	# <cjk>
+0xE1A3	U+7680	# <cjk>
+0xE1A4	U+7683	# <cjk>
+0xE1A5	U+7688	# <cjk>
+0xE1A6	U+768B	# <cjk>
+0xE1A7	U+768E	# <cjk>
+0xE1A8	U+7696	# <cjk>
+0xE1A9	U+7693	# <cjk>
+0xE1AA	U+7699	# <cjk>
+0xE1AB	U+769A	# <cjk>
+0xE1AC	U+76B0	# <cjk>
+0xE1AD	U+76B4	# <cjk>
+0xE1AE	U+76B8	# <cjk>
+0xE1AF	U+76B9	# <cjk>
+0xE1B0	U+76BA	# <cjk>
+0xE1B1	U+76C2	# <cjk>
+0xE1B2	U+76CD	# <cjk>
+0xE1B3	U+76D6	# <cjk>
+0xE1B4	U+76D2	# <cjk>
+0xE1B5	U+76DE	# <cjk>
+0xE1B6	U+76E1	# <cjk>
+0xE1B7	U+76E5	# <cjk>
+0xE1B8	U+76E7	# <cjk>
+0xE1B9	U+76EA	# <cjk>
+0xE1BA	U+862F	# <cjk>
+0xE1BB	U+76FB	# <cjk>
+0xE1BC	U+7708	# <cjk>
+0xE1BD	U+7707	# <cjk>
+0xE1BE	U+7704	# <cjk>
+0xE1BF	U+7729	# <cjk>
+0xE1C0	U+7724	# <cjk>
+0xE1C1	U+771E	# <cjk>
+0xE1C2	U+7725	# <cjk>
+0xE1C3	U+7726	# <cjk>
+0xE1C4	U+771B	# <cjk>
+0xE1C5	U+7737	# <cjk>
+0xE1C6	U+7738	# <cjk>
+0xE1C7	U+7747	# <cjk>
+0xE1C8	U+775A	# <cjk>
+0xE1C9	U+7768	# <cjk>
+0xE1CA	U+776B	# <cjk>
+0xE1CB	U+775B	# <cjk>
+0xE1CC	U+7765	# <cjk>
+0xE1CD	U+777F	# <cjk>
+0xE1CE	U+777E	# <cjk>
+0xE1CF	U+7779	# <cjk>
+0xE1D0	U+778E	# <cjk>
+0xE1D1	U+778B	# <cjk>
+0xE1D2	U+7791	# <cjk>
+0xE1D3	U+77A0	# <cjk>
+0xE1D4	U+779E	# <cjk>
+0xE1D5	U+77B0	# <cjk>
+0xE1D6	U+77B6	# <cjk>
+0xE1D7	U+77B9	# <cjk>
+0xE1D8	U+77BF	# <cjk>
+0xE1D9	U+77BC	# <cjk>
+0xE1DA	U+77BD	# <cjk>
+0xE1DB	U+77BB	# <cjk>
+0xE1DC	U+77C7	# <cjk>
+0xE1DD	U+77CD	# <cjk>
+0xE1DE	U+77D7	# <cjk>
+0xE1DF	U+77DA	# <cjk>
+0xE1E0	U+77DC	# <cjk>
+0xE1E1	U+77E3	# <cjk>
+0xE1E2	U+77EE	# <cjk>
+0xE1E3	U+77FC	# <cjk>
+0xE1E4	U+780C	# <cjk>
+0xE1E5	U+7812	# <cjk>
+0xE1E6	U+7926	# <cjk>
+0xE1E7	U+7820	# <cjk>
+0xE1E8	U+792A	# <cjk>
+0xE1E9	U+7845	# <cjk>
+0xE1EA	U+788E	# <cjk>
+0xE1EB	U+7874	# <cjk>
+0xE1EC	U+7886	# <cjk>
+0xE1ED	U+787C	# <cjk>
+0xE1EE	U+789A	# <cjk>
+0xE1EF	U+788C	# <cjk>
+0xE1F0	U+78A3	# <cjk>
+0xE1F1	U+78B5	# <cjk>
+0xE1F2	U+78AA	# <cjk>
+0xE1F3	U+78AF	# <cjk>
+0xE1F4	U+78D1	# <cjk>
+0xE1F5	U+78C6	# <cjk>
+0xE1F6	U+78CB	# <cjk>
+0xE1F7	U+78D4	# <cjk>
+0xE1F8	U+78BE	# <cjk>
+0xE1F9	U+78BC	# <cjk>
+0xE1FA	U+78C5	# <cjk>
+0xE1FB	U+78CA	# <cjk>
+0xE1FC	U+78EC	# <cjk>
+0xE240	U+78E7	# <cjk>
+0xE241	U+78DA	# <cjk>
+0xE242	U+78FD	# <cjk>
+0xE243	U+78F4	# <cjk>
+0xE244	U+7907	# <cjk>
+0xE245	U+7912	# <cjk>
+0xE246	U+7911	# <cjk>
+0xE247	U+7919	# <cjk>
+0xE248	U+792C	# <cjk>
+0xE249	U+792B	# <cjk>
+0xE24A	U+7940	# <cjk>
+0xE24B	U+7960	# <cjk>
+0xE24C	U+7957	# <cjk>
+0xE24D	U+795F	# <cjk>
+0xE24E	U+795A	# <cjk>
+0xE24F	U+7955	# <cjk>
+0xE250	U+7953	# <cjk>
+0xE251	U+797A	# <cjk>
+0xE252	U+797F	# <cjk>
+0xE253	U+798A	# <cjk>
+0xE254	U+799D	# <cjk>
+0xE255	U+79A7	# <cjk>
+0xE256	U+9F4B	# <cjk>
+0xE257	U+79AA	# <cjk>
+0xE258	U+79AE	# <cjk>
+0xE259	U+79B3	# <cjk>
+0xE25A	U+79B9	# <cjk>
+0xE25B	U+79BA	# <cjk>
+0xE25C	U+79C9	# <cjk>
+0xE25D	U+79D5	# <cjk>
+0xE25E	U+79E7	# <cjk>
+0xE25F	U+79EC	# <cjk>
+0xE260	U+79E1	# <cjk>
+0xE261	U+79E3	# <cjk>
+0xE262	U+7A08	# <cjk>
+0xE263	U+7A0D	# <cjk>
+0xE264	U+7A18	# <cjk>
+0xE265	U+7A19	# <cjk>
+0xE266	U+7A20	# <cjk>
+0xE267	U+7A1F	# <cjk>
+0xE268	U+7980	# <cjk>
+0xE269	U+7A31	# <cjk>
+0xE26A	U+7A3B	# <cjk>
+0xE26B	U+7A3E	# <cjk>
+0xE26C	U+7A37	# <cjk>
+0xE26D	U+7A43	# <cjk>
+0xE26E	U+7A57	# <cjk>
+0xE26F	U+7A49	# <cjk>
+0xE270	U+7A61	# <cjk>
+0xE271	U+7A62	# <cjk>
+0xE272	U+7A69	# <cjk>
+0xE273	U+9F9D	# <cjk>
+0xE274	U+7A70	# <cjk>
+0xE275	U+7A79	# <cjk>
+0xE276	U+7A7D	# <cjk>
+0xE277	U+7A88	# <cjk>
+0xE278	U+7A97	# <cjk>
+0xE279	U+7A95	# <cjk>
+0xE27A	U+7A98	# <cjk>
+0xE27B	U+7A96	# <cjk>
+0xE27C	U+7AA9	# <cjk>
+0xE27D	U+7AC8	# <cjk>
+0xE27E	U+7AB0	# <cjk>
+0xE280	U+7AB6	# <cjk>
+0xE281	U+7AC5	# <cjk>
+0xE282	U+7AC4	# <cjk>
+0xE283	U+7ABF	# <cjk>
+0xE284	U+9083	# <cjk>
+0xE285	U+7AC7	# <cjk>
+0xE286	U+7ACA	# <cjk>
+0xE287	U+7ACD	# <cjk>
+0xE288	U+7ACF	# <cjk>
+0xE289	U+7AD5	# <cjk>
+0xE28A	U+7AD3	# <cjk>
+0xE28B	U+7AD9	# <cjk>
+0xE28C	U+7ADA	# <cjk>
+0xE28D	U+7ADD	# <cjk>
+0xE28E	U+7AE1	# <cjk>
+0xE28F	U+7AE2	# <cjk>
+0xE290	U+7AE6	# <cjk>
+0xE291	U+7AED	# <cjk>
+0xE292	U+7AF0	# <cjk>
+0xE293	U+7B02	# <cjk>
+0xE294	U+7B0F	# <cjk>
+0xE295	U+7B0A	# <cjk>
+0xE296	U+7B06	# <cjk>
+0xE297	U+7B33	# <cjk>
+0xE298	U+7B18	# <cjk>
+0xE299	U+7B19	# <cjk>
+0xE29A	U+7B1E	# <cjk>
+0xE29B	U+7B35	# <cjk>
+0xE29C	U+7B28	# <cjk>
+0xE29D	U+7B36	# <cjk>
+0xE29E	U+7B50	# <cjk>
+0xE29F	U+7B7A	# <cjk>
+0xE2A0	U+7B04	# <cjk>
+0xE2A1	U+7B4D	# <cjk>
+0xE2A2	U+7B0B	# <cjk>
+0xE2A3	U+7B4C	# <cjk>
+0xE2A4	U+7B45	# <cjk>
+0xE2A5	U+7B75	# <cjk>
+0xE2A6	U+7B65	# <cjk>
+0xE2A7	U+7B74	# <cjk>
+0xE2A8	U+7B67	# <cjk>
+0xE2A9	U+7B70	# <cjk>
+0xE2AA	U+7B71	# <cjk>
+0xE2AB	U+7B6C	# <cjk>
+0xE2AC	U+7B6E	# <cjk>
+0xE2AD	U+7B9D	# <cjk>
+0xE2AE	U+7B98	# <cjk>
+0xE2AF	U+7B9F	# <cjk>
+0xE2B0	U+7B8D	# <cjk>
+0xE2B1	U+7B9C	# <cjk>
+0xE2B2	U+7B9A	# <cjk>
+0xE2B3	U+7B8B	# <cjk>
+0xE2B4	U+7B92	# <cjk>
+0xE2B5	U+7B8F	# <cjk>
+0xE2B6	U+7B5D	# <cjk>
+0xE2B7	U+7B99	# <cjk>
+0xE2B8	U+7BCB	# <cjk>
+0xE2B9	U+7BC1	# <cjk>
+0xE2BA	U+7BCC	# <cjk>
+0xE2BB	U+7BCF	# <cjk>
+0xE2BC	U+7BB4	# <cjk>
+0xE2BD	U+7BC6	# <cjk>
+0xE2BE	U+7BDD	# <cjk>
+0xE2BF	U+7BE9	# <cjk>
+0xE2C0	U+7C11	# <cjk>
+0xE2C1	U+7C14	# <cjk>
+0xE2C2	U+7BE6	# <cjk>
+0xE2C3	U+7BE5	# <cjk>
+0xE2C4	U+7C60	# <cjk>
+0xE2C5	U+7C00	# <cjk>
+0xE2C6	U+7C07	# <cjk>
+0xE2C7	U+7C13	# <cjk>
+0xE2C8	U+7BF3	# <cjk>
+0xE2C9	U+7BF7	# <cjk>
+0xE2CA	U+7C17	# <cjk>
+0xE2CB	U+7C0D	# <cjk>
+0xE2CC	U+7BF6	# <cjk>
+0xE2CD	U+7C23	# <cjk>
+0xE2CE	U+7C27	# <cjk>
+0xE2CF	U+7C2A	# <cjk>
+0xE2D0	U+7C1F	# <cjk>
+0xE2D1	U+7C37	# <cjk>
+0xE2D2	U+7C2B	# <cjk>
+0xE2D3	U+7C3D	# <cjk>
+0xE2D4	U+7C4C	# <cjk>
+0xE2D5	U+7C43	# <cjk>
+0xE2D6	U+7C54	# <cjk>
+0xE2D7	U+7C4F	# <cjk>
+0xE2D8	U+7C40	# <cjk>
+0xE2D9	U+7C50	# <cjk>
+0xE2DA	U+7C58	# <cjk>
+0xE2DB	U+7C5F	# <cjk>
+0xE2DC	U+7C64	# <cjk>
+0xE2DD	U+7C56	# <cjk>
+0xE2DE	U+7C65	# <cjk>
+0xE2DF	U+7C6C	# <cjk>
+0xE2E0	U+7C75	# <cjk>
+0xE2E1	U+7C83	# <cjk>
+0xE2E2	U+7C90	# <cjk>
+0xE2E3	U+7CA4	# <cjk>
+0xE2E4	U+7CAD	# <cjk>
+0xE2E5	U+7CA2	# <cjk>
+0xE2E6	U+7CAB	# <cjk>
+0xE2E7	U+7CA1	# <cjk>
+0xE2E8	U+7CA8	# <cjk>
+0xE2E9	U+7CB3	# <cjk>
+0xE2EA	U+7CB2	# <cjk>
+0xE2EB	U+7CB1	# <cjk>
+0xE2EC	U+7CAE	# <cjk>
+0xE2ED	U+7CB9	# <cjk>
+0xE2EE	U+7CBD	# <cjk>
+0xE2EF	U+7CC0	# <cjk>
+0xE2F0	U+7CC5	# <cjk>
+0xE2F1	U+7CC2	# <cjk>
+0xE2F2	U+7CD8	# <cjk>
+0xE2F3	U+7CD2	# <cjk>
+0xE2F4	U+7CDC	# <cjk>
+0xE2F5	U+7CE2	# <cjk>
+0xE2F6	U+9B3B	# <cjk>
+0xE2F7	U+7CEF	# <cjk>
+0xE2F8	U+7CF2	# <cjk>
+0xE2F9	U+7CF4	# <cjk>
+0xE2FA	U+7CF6	# <cjk>
+0xE2FB	U+7CFA	# <cjk>
+0xE2FC	U+7D06	# <cjk>
+0xE340	U+7D02	# <cjk>
+0xE341	U+7D1C	# <cjk>
+0xE342	U+7D15	# <cjk>
+0xE343	U+7D0A	# <cjk>
+0xE344	U+7D45	# <cjk>
+0xE345	U+7D4B	# <cjk>
+0xE346	U+7D2E	# <cjk>
+0xE347	U+7D32	# <cjk>
+0xE348	U+7D3F	# <cjk>
+0xE349	U+7D35	# <cjk>
+0xE34A	U+7D46	# <cjk>
+0xE34B	U+7D73	# <cjk>
+0xE34C	U+7D56	# <cjk>
+0xE34D	U+7D4E	# <cjk>
+0xE34E	U+7D72	# <cjk>
+0xE34F	U+7D68	# <cjk>
+0xE350	U+7D6E	# <cjk>
+0xE351	U+7D4F	# <cjk>
+0xE352	U+7D63	# <cjk>
+0xE353	U+7D93	# <cjk>
+0xE354	U+7D89	# <cjk>
+0xE355	U+7D5B	# <cjk>
+0xE356	U+7D8F	# <cjk>
+0xE357	U+7D7D	# <cjk>
+0xE358	U+7D9B	# <cjk>
+0xE359	U+7DBA	# <cjk>
+0xE35A	U+7DAE	# <cjk>
+0xE35B	U+7DA3	# <cjk>
+0xE35C	U+7DB5	# <cjk>
+0xE35D	U+7DC7	# <cjk>
+0xE35E	U+7DBD	# <cjk>
+0xE35F	U+7DAB	# <cjk>
+0xE360	U+7E3D	# <cjk>
+0xE361	U+7DA2	# <cjk>
+0xE362	U+7DAF	# <cjk>
+0xE363	U+7DDC	# <cjk>
+0xE364	U+7DB8	# <cjk>
+0xE365	U+7D9F	# <cjk>
+0xE366	U+7DB0	# <cjk>
+0xE367	U+7DD8	# <cjk>
+0xE368	U+7DDD	# <cjk>
+0xE369	U+7DE4	# <cjk>
+0xE36A	U+7DDE	# <cjk>
+0xE36B	U+7DFB	# <cjk>
+0xE36C	U+7DF2	# <cjk>
+0xE36D	U+7DE1	# <cjk>
+0xE36E	U+7E05	# <cjk>
+0xE36F	U+7E0A	# <cjk>
+0xE370	U+7E23	# <cjk>
+0xE371	U+7E21	# <cjk>
+0xE372	U+7E12	# <cjk>
+0xE373	U+7E31	# <cjk>
+0xE374	U+7E1F	# <cjk>
+0xE375	U+7E09	# <cjk>
+0xE376	U+7E0B	# <cjk>
+0xE377	U+7E22	# <cjk>
+0xE378	U+7E46	# <cjk>
+0xE379	U+7E66	# <cjk>
+0xE37A	U+7E3B	# <cjk>
+0xE37B	U+7E35	# <cjk>
+0xE37C	U+7E39	# <cjk>
+0xE37D	U+7E43	# <cjk>
+0xE37E	U+7E37	# <cjk>
+0xE380	U+7E32	# <cjk>
+0xE381	U+7E3A	# <cjk>
+0xE382	U+7E67	# <cjk>
+0xE383	U+7E5D	# <cjk>
+0xE384	U+7E56	# <cjk>
+0xE385	U+7E5E	# <cjk>
+0xE386	U+7E59	# <cjk>
+0xE387	U+7E5A	# <cjk>
+0xE388	U+7E79	# <cjk>
+0xE389	U+7E6A	# <cjk>
+0xE38A	U+7E69	# <cjk>
+0xE38B	U+7E7C	# <cjk>
+0xE38C	U+7E7B	# <cjk>
+0xE38D	U+7E83	# <cjk>
+0xE38E	U+7DD5	# <cjk>
+0xE38F	U+7E7D	# <cjk>
+0xE390	U+8FAE	# <cjk>
+0xE391	U+7E7F	# <cjk>
+0xE392	U+7E88	# <cjk>
+0xE393	U+7E89	# <cjk>
+0xE394	U+7E8C	# <cjk>
+0xE395	U+7E92	# <cjk>
+0xE396	U+7E90	# <cjk>
+0xE397	U+7E93	# <cjk>
+0xE398	U+7E94	# <cjk>
+0xE399	U+7E96	# <cjk>
+0xE39A	U+7E8E	# <cjk>
+0xE39B	U+7E9B	# <cjk>
+0xE39C	U+7E9C	# <cjk>
+0xE39D	U+7F38	# <cjk>
+0xE39E	U+7F3A	# <cjk>
+0xE39F	U+7F45	# <cjk>
+0xE3A0	U+7F4C	# <cjk>
+0xE3A1	U+7F4D	# <cjk>
+0xE3A2	U+7F4E	# <cjk>
+0xE3A3	U+7F50	# <cjk>
+0xE3A4	U+7F51	# <cjk>
+0xE3A5	U+7F55	# <cjk>
+0xE3A6	U+7F54	# <cjk>
+0xE3A7	U+7F58	# <cjk>
+0xE3A8	U+7F5F	# <cjk>
+0xE3A9	U+7F60	# <cjk>
+0xE3AA	U+7F68	# <cjk>
+0xE3AB	U+7F69	# <cjk>
+0xE3AC	U+7F67	# <cjk>
+0xE3AD	U+7F78	# <cjk>
+0xE3AE	U+7F82	# <cjk>
+0xE3AF	U+7F86	# <cjk>
+0xE3B0	U+7F83	# <cjk>
+0xE3B1	U+7F88	# <cjk>
+0xE3B2	U+7F87	# <cjk>
+0xE3B3	U+7F8C	# <cjk>
+0xE3B4	U+7F94	# <cjk>
+0xE3B5	U+7F9E	# <cjk>
+0xE3B6	U+7F9D	# <cjk>
+0xE3B7	U+7F9A	# <cjk>
+0xE3B8	U+7FA3	# <cjk>
+0xE3B9	U+7FAF	# <cjk>
+0xE3BA	U+7FB2	# <cjk>
+0xE3BB	U+7FB9	# <cjk>
+0xE3BC	U+7FAE	# <cjk>
+0xE3BD	U+7FB6	# <cjk>
+0xE3BE	U+7FB8	# <cjk>
+0xE3BF	U+8B71	# <cjk>
+0xE3C0	U+7FC5	# <cjk>
+0xE3C1	U+7FC6	# <cjk>
+0xE3C2	U+7FCA	# <cjk>
+0xE3C3	U+7FD5	# <cjk>
+0xE3C4	U+7FD4	# <cjk>
+0xE3C5	U+7FE1	# <cjk>
+0xE3C6	U+7FE6	# <cjk>
+0xE3C7	U+7FE9	# <cjk>
+0xE3C8	U+7FF3	# <cjk>
+0xE3C9	U+7FF9	# <cjk>
+0xE3CA	U+98DC	# <cjk>
+0xE3CB	U+8006	# <cjk>
+0xE3CC	U+8004	# <cjk>
+0xE3CD	U+800B	# <cjk>
+0xE3CE	U+8012	# <cjk>
+0xE3CF	U+8018	# <cjk>
+0xE3D0	U+8019	# <cjk>
+0xE3D1	U+801C	# <cjk>
+0xE3D2	U+8021	# <cjk>
+0xE3D3	U+8028	# <cjk>
+0xE3D4	U+803F	# <cjk>
+0xE3D5	U+803B	# <cjk>
+0xE3D6	U+804A	# <cjk>
+0xE3D7	U+8046	# <cjk>
+0xE3D8	U+8052	# <cjk>
+0xE3D9	U+8058	# <cjk>
+0xE3DA	U+805A	# <cjk>
+0xE3DB	U+805F	# <cjk>
+0xE3DC	U+8062	# <cjk>
+0xE3DD	U+8068	# <cjk>
+0xE3DE	U+8073	# <cjk>
+0xE3DF	U+8072	# <cjk>
+0xE3E0	U+8070	# <cjk>
+0xE3E1	U+8076	# <cjk>
+0xE3E2	U+8079	# <cjk>
+0xE3E3	U+807D	# <cjk>
+0xE3E4	U+807F	# <cjk>
+0xE3E5	U+8084	# <cjk>
+0xE3E6	U+8086	# <cjk>
+0xE3E7	U+8085	# <cjk>
+0xE3E8	U+809B	# <cjk>
+0xE3E9	U+8093	# <cjk>
+0xE3EA	U+809A	# <cjk>
+0xE3EB	U+80AD	# <cjk>
+0xE3EC	U+5190	# <cjk>
+0xE3ED	U+80AC	# <cjk>
+0xE3EE	U+80DB	# <cjk>
+0xE3EF	U+80E5	# <cjk>
+0xE3F0	U+80D9	# <cjk>
+0xE3F1	U+80DD	# <cjk>
+0xE3F2	U+80C4	# <cjk>
+0xE3F3	U+80DA	# <cjk>
+0xE3F4	U+80D6	# <cjk>
+0xE3F5	U+8109	# <cjk>
+0xE3F6	U+80EF	# <cjk>
+0xE3F7	U+80F1	# <cjk>
+0xE3F8	U+811B	# <cjk>
+0xE3F9	U+8129	# <cjk>
+0xE3FA	U+8123	# <cjk>
+0xE3FB	U+812F	# <cjk>
+0xE3FC	U+814B	# <cjk>
+0xE440	U+968B	# <cjk>
+0xE441	U+8146	# <cjk>
+0xE442	U+813E	# <cjk>
+0xE443	U+8153	# <cjk>
+0xE444	U+8151	# <cjk>
+0xE445	U+80FC	# <cjk>
+0xE446	U+8171	# <cjk>
+0xE447	U+816E	# <cjk>
+0xE448	U+8165	# <cjk>
+0xE449	U+8166	# <cjk>
+0xE44A	U+8174	# <cjk>
+0xE44B	U+8183	# <cjk>
+0xE44C	U+8188	# <cjk>
+0xE44D	U+818A	# <cjk>
+0xE44E	U+8180	# <cjk>
+0xE44F	U+8182	# <cjk>
+0xE450	U+81A0	# <cjk>
+0xE451	U+8195	# <cjk>
+0xE452	U+81A4	# <cjk>
+0xE453	U+81A3	# <cjk>
+0xE454	U+815F	# <cjk>
+0xE455	U+8193	# <cjk>
+0xE456	U+81A9	# <cjk>
+0xE457	U+81B0	# <cjk>
+0xE458	U+81B5	# <cjk>
+0xE459	U+81BE	# <cjk>
+0xE45A	U+81B8	# <cjk>
+0xE45B	U+81BD	# <cjk>
+0xE45C	U+81C0	# <cjk>
+0xE45D	U+81C2	# <cjk>
+0xE45E	U+81BA	# <cjk>
+0xE45F	U+81C9	# <cjk>
+0xE460	U+81CD	# <cjk>
+0xE461	U+81D1	# <cjk>
+0xE462	U+81D9	# <cjk>
+0xE463	U+81D8	# <cjk>
+0xE464	U+81C8	# <cjk>
+0xE465	U+81DA	# <cjk>
+0xE466	U+81DF	# <cjk>
+0xE467	U+81E0	# <cjk>
+0xE468	U+81E7	# <cjk>
+0xE469	U+81FA	# <cjk>
+0xE46A	U+81FB	# <cjk>
+0xE46B	U+81FE	# <cjk>
+0xE46C	U+8201	# <cjk>
+0xE46D	U+8202	# <cjk>
+0xE46E	U+8205	# <cjk>
+0xE46F	U+8207	# <cjk>
+0xE470	U+820A	# <cjk>
+0xE471	U+820D	# <cjk>
+0xE472	U+8210	# <cjk>
+0xE473	U+8216	# <cjk>
+0xE474	U+8229	# <cjk>
+0xE475	U+822B	# <cjk>
+0xE476	U+8238	# <cjk>
+0xE477	U+8233	# <cjk>
+0xE478	U+8240	# <cjk>
+0xE479	U+8259	# <cjk>
+0xE47A	U+8258	# <cjk>
+0xE47B	U+825D	# <cjk>
+0xE47C	U+825A	# <cjk>
+0xE47D	U+825F	# <cjk>
+0xE47E	U+8264	# <cjk>
+0xE480	U+8262	# <cjk>
+0xE481	U+8268	# <cjk>
+0xE482	U+826A	# <cjk>
+0xE483	U+826B	# <cjk>
+0xE484	U+822E	# <cjk>
+0xE485	U+8271	# <cjk>
+0xE486	U+8277	# <cjk>
+0xE487	U+8278	# <cjk>
+0xE488	U+827E	# <cjk>
+0xE489	U+828D	# <cjk>
+0xE48A	U+8292	# <cjk>
+0xE48B	U+82AB	# <cjk>
+0xE48C	U+829F	# <cjk>
+0xE48D	U+82BB	# <cjk>
+0xE48E	U+82AC	# <cjk>
+0xE48F	U+82E1	# <cjk>
+0xE490	U+82E3	# <cjk>
+0xE491	U+82DF	# <cjk>
+0xE492	U+82D2	# <cjk>
+0xE493	U+82F4	# <cjk>
+0xE494	U+82F3	# <cjk>
+0xE495	U+82FA	# <cjk>
+0xE496	U+8393	# <cjk>
+0xE497	U+8303	# <cjk>
+0xE498	U+82FB	# <cjk>
+0xE499	U+82F9	# <cjk>
+0xE49A	U+82DE	# <cjk>
+0xE49B	U+8306	# <cjk>
+0xE49C	U+82DC	# <cjk>
+0xE49D	U+8309	# <cjk>
+0xE49E	U+82D9	# <cjk>
+0xE49F	U+8335	# <cjk>
+0xE4A0	U+8334	# <cjk>
+0xE4A1	U+8316	# <cjk>
+0xE4A2	U+8332	# <cjk>
+0xE4A3	U+8331	# <cjk>
+0xE4A4	U+8340	# <cjk>
+0xE4A5	U+8339	# <cjk>
+0xE4A6	U+8350	# <cjk>
+0xE4A7	U+8345	# <cjk>
+0xE4A8	U+832F	# <cjk>
+0xE4A9	U+832B	# <cjk>
+0xE4AA	U+8317	# <cjk>
+0xE4AB	U+8318	# <cjk>
+0xE4AC	U+8385	# <cjk>
+0xE4AD	U+839A	# <cjk>
+0xE4AE	U+83AA	# <cjk>
+0xE4AF	U+839F	# <cjk>
+0xE4B0	U+83A2	# <cjk>
+0xE4B1	U+8396	# <cjk>
+0xE4B2	U+8323	# <cjk>
+0xE4B3	U+838E	# <cjk>
+0xE4B4	U+8387	# <cjk>
+0xE4B5	U+838A	# <cjk>
+0xE4B6	U+837C	# <cjk>
+0xE4B7	U+83B5	# <cjk>
+0xE4B8	U+8373	# <cjk>
+0xE4B9	U+8375	# <cjk>
+0xE4BA	U+83A0	# <cjk>
+0xE4BB	U+8389	# <cjk>
+0xE4BC	U+83A8	# <cjk>
+0xE4BD	U+83F4	# <cjk>
+0xE4BE	U+8413	# <cjk>
+0xE4BF	U+83EB	# <cjk>
+0xE4C0	U+83CE	# <cjk>
+0xE4C1	U+83FD	# <cjk>
+0xE4C2	U+8403	# <cjk>
+0xE4C3	U+83D8	# <cjk>
+0xE4C4	U+840B	# <cjk>
+0xE4C5	U+83C1	# <cjk>
+0xE4C6	U+83F7	# <cjk>
+0xE4C7	U+8407	# <cjk>
+0xE4C8	U+83E0	# <cjk>
+0xE4C9	U+83F2	# <cjk>
+0xE4CA	U+840D	# <cjk>
+0xE4CB	U+8422	# <cjk>
+0xE4CC	U+8420	# <cjk>
+0xE4CD	U+83BD	# <cjk>
+0xE4CE	U+8438	# <cjk>
+0xE4CF	U+8506	# <cjk>
+0xE4D0	U+83FB	# <cjk>
+0xE4D1	U+846D	# <cjk>
+0xE4D2	U+842A	# <cjk>
+0xE4D3	U+843C	# <cjk>
+0xE4D4	U+855A	# <cjk>
+0xE4D5	U+8484	# <cjk>
+0xE4D6	U+8477	# <cjk>
+0xE4D7	U+846B	# <cjk>
+0xE4D8	U+84AD	# <cjk>
+0xE4D9	U+846E	# <cjk>
+0xE4DA	U+8482	# <cjk>
+0xE4DB	U+8469	# <cjk>
+0xE4DC	U+8446	# <cjk>
+0xE4DD	U+842C	# <cjk>
+0xE4DE	U+846F	# <cjk>
+0xE4DF	U+8479	# <cjk>
+0xE4E0	U+8435	# <cjk>
+0xE4E1	U+84CA	# <cjk>
+0xE4E2	U+8462	# <cjk>
+0xE4E3	U+84B9	# <cjk>
+0xE4E4	U+84BF	# <cjk>
+0xE4E5	U+849F	# <cjk>
+0xE4E6	U+84D9	# <cjk>
+0xE4E7	U+84CD	# <cjk>
+0xE4E8	U+84BB	# <cjk>
+0xE4E9	U+84DA	# <cjk>
+0xE4EA	U+84D0	# <cjk>
+0xE4EB	U+84C1	# <cjk>
+0xE4EC	U+84C6	# <cjk>
+0xE4ED	U+84D6	# <cjk>
+0xE4EE	U+84A1	# <cjk>
+0xE4EF	U+8521	# <cjk>
+0xE4F0	U+84FF	# <cjk>
+0xE4F1	U+84F4	# <cjk>
+0xE4F2	U+8517	# <cjk>
+0xE4F3	U+8518	# <cjk>
+0xE4F4	U+852C	# <cjk>
+0xE4F5	U+851F	# <cjk>
+0xE4F6	U+8515	# <cjk>
+0xE4F7	U+8514	# <cjk>
+0xE4F8	U+84FC	# <cjk>
+0xE4F9	U+8540	# <cjk>
+0xE4FA	U+8563	# <cjk>
+0xE4FB	U+8558	# <cjk>
+0xE4FC	U+8548	# <cjk>
+0xE540	U+8541	# <cjk>
+0xE541	U+8602	# <cjk>
+0xE542	U+854B	# <cjk>
+0xE543	U+8555	# <cjk>
+0xE544	U+8580	# <cjk>
+0xE545	U+85A4	# <cjk>
+0xE546	U+8588	# <cjk>
+0xE547	U+8591	# <cjk>
+0xE548	U+858A	# <cjk>
+0xE549	U+85A8	# <cjk>
+0xE54A	U+856D	# <cjk>
+0xE54B	U+8594	# <cjk>
+0xE54C	U+859B	# <cjk>
+0xE54D	U+85EA	# <cjk>
+0xE54E	U+8587	# <cjk>
+0xE54F	U+859C	# <cjk>
+0xE550	U+8577	# <cjk>
+0xE551	U+857E	# <cjk>
+0xE552	U+8590	# <cjk>
+0xE553	U+85C9	# <cjk>
+0xE554	U+85BA	# <cjk>
+0xE555	U+85CF	# <cjk>
+0xE556	U+85B9	# <cjk>
+0xE557	U+85D0	# <cjk>
+0xE558	U+85D5	# <cjk>
+0xE559	U+85DD	# <cjk>
+0xE55A	U+85E5	# <cjk>
+0xE55B	U+85DC	# <cjk>
+0xE55C	U+85F9	# <cjk>
+0xE55D	U+860A	# <cjk>
+0xE55E	U+8613	# <cjk>
+0xE55F	U+860B	# <cjk>
+0xE560	U+85FE	# <cjk>
+0xE561	U+85FA	# <cjk>
+0xE562	U+8606	# <cjk>
+0xE563	U+8622	# <cjk>
+0xE564	U+861A	# <cjk>
+0xE565	U+8630	# <cjk>
+0xE566	U+863F	# <cjk>
+0xE567	U+864D	# <cjk>
+0xE568	U+4E55	# <cjk>
+0xE569	U+8654	# <cjk>
+0xE56A	U+865F	# <cjk>
+0xE56B	U+8667	# <cjk>
+0xE56C	U+8671	# <cjk>
+0xE56D	U+8693	# <cjk>
+0xE56E	U+86A3	# <cjk>
+0xE56F	U+86A9	# <cjk>
+0xE570	U+86AA	# <cjk>
+0xE571	U+868B	# <cjk>
+0xE572	U+868C	# <cjk>
+0xE573	U+86B6	# <cjk>
+0xE574	U+86AF	# <cjk>
+0xE575	U+86C4	# <cjk>
+0xE576	U+86C6	# <cjk>
+0xE577	U+86B0	# <cjk>
+0xE578	U+86C9	# <cjk>
+0xE579	U+8823	# <cjk>
+0xE57A	U+86AB	# <cjk>
+0xE57B	U+86D4	# <cjk>
+0xE57C	U+86DE	# <cjk>
+0xE57D	U+86E9	# <cjk>
+0xE57E	U+86EC	# <cjk>
+0xE580	U+86DF	# <cjk>
+0xE581	U+86DB	# <cjk>
+0xE582	U+86EF	# <cjk>
+0xE583	U+8712	# <cjk>
+0xE584	U+8706	# <cjk>
+0xE585	U+8708	# <cjk>
+0xE586	U+8700	# <cjk>
+0xE587	U+8703	# <cjk>
+0xE588	U+86FB	# <cjk>
+0xE589	U+8711	# <cjk>
+0xE58A	U+8709	# <cjk>
+0xE58B	U+870D	# <cjk>
+0xE58C	U+86F9	# <cjk>
+0xE58D	U+870A	# <cjk>
+0xE58E	U+8734	# <cjk>
+0xE58F	U+873F	# <cjk>
+0xE590	U+8737	# <cjk>
+0xE591	U+873B	# <cjk>
+0xE592	U+8725	# <cjk>
+0xE593	U+8729	# <cjk>
+0xE594	U+871A	# <cjk>
+0xE595	U+8760	# <cjk>
+0xE596	U+875F	# <cjk>
+0xE597	U+8778	# <cjk>
+0xE598	U+874C	# <cjk>
+0xE599	U+874E	# <cjk>
+0xE59A	U+8774	# <cjk>
+0xE59B	U+8757	# <cjk>
+0xE59C	U+8768	# <cjk>
+0xE59D	U+876E	# <cjk>
+0xE59E	U+8759	# <cjk>
+0xE59F	U+8753	# <cjk>
+0xE5A0	U+8763	# <cjk>
+0xE5A1	U+876A	# <cjk>
+0xE5A2	U+8805	# <cjk>
+0xE5A3	U+87A2	# <cjk>
+0xE5A4	U+879F	# <cjk>
+0xE5A5	U+8782	# <cjk>
+0xE5A6	U+87AF	# <cjk>
+0xE5A7	U+87CB	# <cjk>
+0xE5A8	U+87BD	# <cjk>
+0xE5A9	U+87C0	# <cjk>
+0xE5AA	U+87D0	# <cjk>
+0xE5AB	U+96D6	# <cjk>
+0xE5AC	U+87AB	# <cjk>
+0xE5AD	U+87C4	# <cjk>
+0xE5AE	U+87B3	# <cjk>
+0xE5AF	U+87C7	# <cjk>
+0xE5B0	U+87C6	# <cjk>
+0xE5B1	U+87BB	# <cjk>
+0xE5B2	U+87EF	# <cjk>
+0xE5B3	U+87F2	# <cjk>
+0xE5B4	U+87E0	# <cjk>
+0xE5B5	U+880F	# <cjk>
+0xE5B6	U+880D	# <cjk>
+0xE5B7	U+87FE	# <cjk>
+0xE5B8	U+87F6	# <cjk>
+0xE5B9	U+87F7	# <cjk>
+0xE5BA	U+880E	# <cjk>
+0xE5BB	U+87D2	# <cjk>
+0xE5BC	U+8811	# <cjk>
+0xE5BD	U+8816	# <cjk>
+0xE5BE	U+8815	# <cjk>
+0xE5BF	U+8822	# <cjk>
+0xE5C0	U+8821	# <cjk>
+0xE5C1	U+8831	# <cjk>
+0xE5C2	U+8836	# <cjk>
+0xE5C3	U+8839	# <cjk>
+0xE5C4	U+8827	# <cjk>
+0xE5C5	U+883B	# <cjk>
+0xE5C6	U+8844	# <cjk>
+0xE5C7	U+8842	# <cjk>
+0xE5C8	U+8852	# <cjk>
+0xE5C9	U+8859	# <cjk>
+0xE5CA	U+885E	# <cjk>
+0xE5CB	U+8862	# <cjk>
+0xE5CC	U+886B	# <cjk>
+0xE5CD	U+8881	# <cjk>
+0xE5CE	U+887E	# <cjk>
+0xE5CF	U+889E	# <cjk>
+0xE5D0	U+8875	# <cjk>
+0xE5D1	U+887D	# <cjk>
+0xE5D2	U+88B5	# <cjk>
+0xE5D3	U+8872	# <cjk>
+0xE5D4	U+8882	# <cjk>
+0xE5D5	U+8897	# <cjk>
+0xE5D6	U+8892	# <cjk>
+0xE5D7	U+88AE	# <cjk>
+0xE5D8	U+8899	# <cjk>
+0xE5D9	U+88A2	# <cjk>
+0xE5DA	U+888D	# <cjk>
+0xE5DB	U+88A4	# <cjk>
+0xE5DC	U+88B0	# <cjk>
+0xE5DD	U+88BF	# <cjk>
+0xE5DE	U+88B1	# <cjk>
+0xE5DF	U+88C3	# <cjk>
+0xE5E0	U+88C4	# <cjk>
+0xE5E1	U+88D4	# <cjk>
+0xE5E2	U+88D8	# <cjk>
+0xE5E3	U+88D9	# <cjk>
+0xE5E4	U+88DD	# <cjk>
+0xE5E5	U+88F9	# <cjk>
+0xE5E6	U+8902	# <cjk>
+0xE5E7	U+88FC	# <cjk>
+0xE5E8	U+88F4	# <cjk>
+0xE5E9	U+88E8	# <cjk>
+0xE5EA	U+88F2	# <cjk>
+0xE5EB	U+8904	# <cjk>
+0xE5EC	U+890C	# <cjk>
+0xE5ED	U+890A	# <cjk>
+0xE5EE	U+8913	# <cjk>
+0xE5EF	U+8943	# <cjk>
+0xE5F0	U+891E	# <cjk>
+0xE5F1	U+8925	# <cjk>
+0xE5F2	U+892A	# <cjk>
+0xE5F3	U+892B	# <cjk>
+0xE5F4	U+8941	# <cjk>
+0xE5F5	U+8944	# <cjk>
+0xE5F6	U+893B	# <cjk>
+0xE5F7	U+8936	# <cjk>
+0xE5F8	U+8938	# <cjk>
+0xE5F9	U+894C	# <cjk>
+0xE5FA	U+891D	# <cjk>
+0xE5FB	U+8960	# <cjk>
+0xE5FC	U+895E	# <cjk>
+0xE640	U+8966	# <cjk>
+0xE641	U+8964	# <cjk>
+0xE642	U+896D	# <cjk>
+0xE643	U+896A	# <cjk>
+0xE644	U+896F	# <cjk>
+0xE645	U+8974	# <cjk>
+0xE646	U+8977	# <cjk>
+0xE647	U+897E	# <cjk>
+0xE648	U+8983	# <cjk>
+0xE649	U+8988	# <cjk>
+0xE64A	U+898A	# <cjk>
+0xE64B	U+8993	# <cjk>
+0xE64C	U+8998	# <cjk>
+0xE64D	U+89A1	# <cjk>
+0xE64E	U+89A9	# <cjk>
+0xE64F	U+89A6	# <cjk>
+0xE650	U+89AC	# <cjk>
+0xE651	U+89AF	# <cjk>
+0xE652	U+89B2	# <cjk>
+0xE653	U+89BA	# <cjk>
+0xE654	U+89BD	# <cjk>
+0xE655	U+89BF	# <cjk>
+0xE656	U+89C0	# <cjk>
+0xE657	U+89DA	# <cjk>
+0xE658	U+89DC	# <cjk>
+0xE659	U+89DD	# <cjk>
+0xE65A	U+89E7	# <cjk>
+0xE65B	U+89F4	# <cjk>
+0xE65C	U+89F8	# <cjk>
+0xE65D	U+8A03	# <cjk>
+0xE65E	U+8A16	# <cjk>
+0xE65F	U+8A10	# <cjk>
+0xE660	U+8A0C	# <cjk>
+0xE661	U+8A1B	# <cjk>
+0xE662	U+8A1D	# <cjk>
+0xE663	U+8A25	# <cjk>
+0xE664	U+8A36	# <cjk>
+0xE665	U+8A41	# <cjk>
+0xE666	U+8A5B	# <cjk>
+0xE667	U+8A52	# <cjk>
+0xE668	U+8A46	# <cjk>
+0xE669	U+8A48	# <cjk>
+0xE66A	U+8A7C	# <cjk>
+0xE66B	U+8A6D	# <cjk>
+0xE66C	U+8A6C	# <cjk>
+0xE66D	U+8A62	# <cjk>
+0xE66E	U+8A85	# <cjk>
+0xE66F	U+8A82	# <cjk>
+0xE670	U+8A84	# <cjk>
+0xE671	U+8AA8	# <cjk>
+0xE672	U+8AA1	# <cjk>
+0xE673	U+8A91	# <cjk>
+0xE674	U+8AA5	# <cjk>
+0xE675	U+8AA6	# <cjk>
+0xE676	U+8A9A	# <cjk>
+0xE677	U+8AA3	# <cjk>
+0xE678	U+8AC4	# <cjk>
+0xE679	U+8ACD	# <cjk>
+0xE67A	U+8AC2	# <cjk>
+0xE67B	U+8ADA	# <cjk>
+0xE67C	U+8AEB	# <cjk>
+0xE67D	U+8AF3	# <cjk>
+0xE67E	U+8AE7	# <cjk>
+0xE680	U+8AE4	# <cjk>
+0xE681	U+8AF1	# <cjk>
+0xE682	U+8B14	# <cjk>
+0xE683	U+8AE0	# <cjk>
+0xE684	U+8AE2	# <cjk>
+0xE685	U+8AF7	# <cjk>
+0xE686	U+8ADE	# <cjk>
+0xE687	U+8ADB	# <cjk>
+0xE688	U+8B0C	# <cjk>
+0xE689	U+8B07	# <cjk>
+0xE68A	U+8B1A	# <cjk>
+0xE68B	U+8AE1	# <cjk>
+0xE68C	U+8B16	# <cjk>
+0xE68D	U+8B10	# <cjk>
+0xE68E	U+8B17	# <cjk>
+0xE68F	U+8B20	# <cjk>
+0xE690	U+8B33	# <cjk>
+0xE691	U+97AB	# <cjk>
+0xE692	U+8B26	# <cjk>
+0xE693	U+8B2B	# <cjk>
+0xE694	U+8B3E	# <cjk>
+0xE695	U+8B28	# <cjk>
+0xE696	U+8B41	# <cjk>
+0xE697	U+8B4C	# <cjk>
+0xE698	U+8B4F	# <cjk>
+0xE699	U+8B4E	# <cjk>
+0xE69A	U+8B49	# <cjk>
+0xE69B	U+8B56	# <cjk>
+0xE69C	U+8B5B	# <cjk>
+0xE69D	U+8B5A	# <cjk>
+0xE69E	U+8B6B	# <cjk>
+0xE69F	U+8B5F	# <cjk>
+0xE6A0	U+8B6C	# <cjk>
+0xE6A1	U+8B6F	# <cjk>
+0xE6A2	U+8B74	# <cjk>
+0xE6A3	U+8B7D	# <cjk>
+0xE6A4	U+8B80	# <cjk>
+0xE6A5	U+8B8C	# <cjk>
+0xE6A6	U+8B8E	# <cjk>
+0xE6A7	U+8B92	# <cjk>
+0xE6A8	U+8B93	# <cjk>
+0xE6A9	U+8B96	# <cjk>
+0xE6AA	U+8B99	# <cjk>
+0xE6AB	U+8B9A	# <cjk>
+0xE6AC	U+8C3A	# <cjk>
+0xE6AD	U+8C41	# <cjk>
+0xE6AE	U+8C3F	# <cjk>
+0xE6AF	U+8C48	# <cjk>
+0xE6B0	U+8C4C	# <cjk>
+0xE6B1	U+8C4E	# <cjk>
+0xE6B2	U+8C50	# <cjk>
+0xE6B3	U+8C55	# <cjk>
+0xE6B4	U+8C62	# <cjk>
+0xE6B5	U+8C6C	# <cjk>
+0xE6B6	U+8C78	# <cjk>
+0xE6B7	U+8C7A	# <cjk>
+0xE6B8	U+8C82	# <cjk>
+0xE6B9	U+8C89	# <cjk>
+0xE6BA	U+8C85	# <cjk>
+0xE6BB	U+8C8A	# <cjk>
+0xE6BC	U+8C8D	# <cjk>
+0xE6BD	U+8C8E	# <cjk>
+0xE6BE	U+8C94	# <cjk>
+0xE6BF	U+8C7C	# <cjk>
+0xE6C0	U+8C98	# <cjk>
+0xE6C1	U+621D	# <cjk>
+0xE6C2	U+8CAD	# <cjk>
+0xE6C3	U+8CAA	# <cjk>
+0xE6C4	U+8CBD	# <cjk>
+0xE6C5	U+8CB2	# <cjk>
+0xE6C6	U+8CB3	# <cjk>
+0xE6C7	U+8CAE	# <cjk>
+0xE6C8	U+8CB6	# <cjk>
+0xE6C9	U+8CC8	# <cjk>
+0xE6CA	U+8CC1	# <cjk>
+0xE6CB	U+8CE4	# <cjk>
+0xE6CC	U+8CE3	# <cjk>
+0xE6CD	U+8CDA	# <cjk>
+0xE6CE	U+8CFD	# <cjk>
+0xE6CF	U+8CFA	# <cjk>
+0xE6D0	U+8CFB	# <cjk>
+0xE6D1	U+8D04	# <cjk>
+0xE6D2	U+8D05	# <cjk>
+0xE6D3	U+8D0A	# <cjk>
+0xE6D4	U+8D07	# <cjk>
+0xE6D5	U+8D0F	# <cjk>
+0xE6D6	U+8D0D	# <cjk>
+0xE6D7	U+8D10	# <cjk>
+0xE6D8	U+9F4E	# <cjk>
+0xE6D9	U+8D13	# <cjk>
+0xE6DA	U+8CCD	# <cjk>
+0xE6DB	U+8D14	# <cjk>
+0xE6DC	U+8D16	# <cjk>
+0xE6DD	U+8D67	# <cjk>
+0xE6DE	U+8D6D	# <cjk>
+0xE6DF	U+8D71	# <cjk>
+0xE6E0	U+8D73	# <cjk>
+0xE6E1	U+8D81	# <cjk>
+0xE6E2	U+8D99	# <cjk>
+0xE6E3	U+8DC2	# <cjk>
+0xE6E4	U+8DBE	# <cjk>
+0xE6E5	U+8DBA	# <cjk>
+0xE6E6	U+8DCF	# <cjk>
+0xE6E7	U+8DDA	# <cjk>
+0xE6E8	U+8DD6	# <cjk>
+0xE6E9	U+8DCC	# <cjk>
+0xE6EA	U+8DDB	# <cjk>
+0xE6EB	U+8DCB	# <cjk>
+0xE6EC	U+8DEA	# <cjk>
+0xE6ED	U+8DEB	# <cjk>
+0xE6EE	U+8DDF	# <cjk>
+0xE6EF	U+8DE3	# <cjk>
+0xE6F0	U+8DFC	# <cjk>
+0xE6F1	U+8E08	# <cjk>
+0xE6F2	U+8E09	# <cjk>
+0xE6F3	U+8DFF	# <cjk>
+0xE6F4	U+8E1D	# <cjk>
+0xE6F5	U+8E1E	# <cjk>
+0xE6F6	U+8E10	# <cjk>
+0xE6F7	U+8E1F	# <cjk>
+0xE6F8	U+8E42	# <cjk>
+0xE6F9	U+8E35	# <cjk>
+0xE6FA	U+8E30	# <cjk>
+0xE6FB	U+8E34	# <cjk>
+0xE6FC	U+8E4A	# <cjk>
+0xE740	U+8E47	# <cjk>
+0xE741	U+8E49	# <cjk>
+0xE742	U+8E4C	# <cjk>
+0xE743	U+8E50	# <cjk>
+0xE744	U+8E48	# <cjk>
+0xE745	U+8E59	# <cjk>
+0xE746	U+8E64	# <cjk>
+0xE747	U+8E60	# <cjk>
+0xE748	U+8E2A	# <cjk>
+0xE749	U+8E63	# <cjk>
+0xE74A	U+8E55	# <cjk>
+0xE74B	U+8E76	# <cjk>
+0xE74C	U+8E72	# <cjk>
+0xE74D	U+8E7C	# <cjk>
+0xE74E	U+8E81	# <cjk>
+0xE74F	U+8E87	# <cjk>
+0xE750	U+8E85	# <cjk>
+0xE751	U+8E84	# <cjk>
+0xE752	U+8E8B	# <cjk>
+0xE753	U+8E8A	# <cjk>
+0xE754	U+8E93	# <cjk>
+0xE755	U+8E91	# <cjk>
+0xE756	U+8E94	# <cjk>
+0xE757	U+8E99	# <cjk>
+0xE758	U+8EAA	# <cjk>
+0xE759	U+8EA1	# <cjk>
+0xE75A	U+8EAC	# <cjk>
+0xE75B	U+8EB0	# <cjk>
+0xE75C	U+8EC6	# <cjk>
+0xE75D	U+8EB1	# <cjk>
+0xE75E	U+8EBE	# <cjk>
+0xE75F	U+8EC5	# <cjk>
+0xE760	U+8EC8	# <cjk>
+0xE761	U+8ECB	# <cjk>
+0xE762	U+8EDB	# <cjk>
+0xE763	U+8EE3	# <cjk>
+0xE764	U+8EFC	# <cjk>
+0xE765	U+8EFB	# <cjk>
+0xE766	U+8EEB	# <cjk>
+0xE767	U+8EFE	# <cjk>
+0xE768	U+8F0A	# <cjk>
+0xE769	U+8F05	# <cjk>
+0xE76A	U+8F15	# <cjk>
+0xE76B	U+8F12	# <cjk>
+0xE76C	U+8F19	# <cjk>
+0xE76D	U+8F13	# <cjk>
+0xE76E	U+8F1C	# <cjk>
+0xE76F	U+8F1F	# <cjk>
+0xE770	U+8F1B	# <cjk>
+0xE771	U+8F0C	# <cjk>
+0xE772	U+8F26	# <cjk>
+0xE773	U+8F33	# <cjk>
+0xE774	U+8F3B	# <cjk>
+0xE775	U+8F39	# <cjk>
+0xE776	U+8F45	# <cjk>
+0xE777	U+8F42	# <cjk>
+0xE778	U+8F3E	# <cjk>
+0xE779	U+8F4C	# <cjk>
+0xE77A	U+8F49	# <cjk>
+0xE77B	U+8F46	# <cjk>
+0xE77C	U+8F4E	# <cjk>
+0xE77D	U+8F57	# <cjk>
+0xE77E	U+8F5C	# <cjk>
+0xE780	U+8F62	# <cjk>
+0xE781	U+8F63	# <cjk>
+0xE782	U+8F64	# <cjk>
+0xE783	U+8F9C	# <cjk>
+0xE784	U+8F9F	# <cjk>
+0xE785	U+8FA3	# <cjk>
+0xE786	U+8FAD	# <cjk>
+0xE787	U+8FAF	# <cjk>
+0xE788	U+8FB7	# <cjk>
+0xE789	U+8FDA	# <cjk>
+0xE78A	U+8FE5	# <cjk>
+0xE78B	U+8FE2	# <cjk>
+0xE78C	U+8FEA	# <cjk>
+0xE78D	U+8FEF	# <cjk>
+0xE78E	U+9087	# <cjk>
+0xE78F	U+8FF4	# <cjk>
+0xE790	U+9005	# <cjk>
+0xE791	U+8FF9	# <cjk>
+0xE792	U+8FFA	# <cjk>
+0xE793	U+9011	# <cjk>
+0xE794	U+9015	# <cjk>
+0xE795	U+9021	# <cjk>
+0xE796	U+900D	# <cjk>
+0xE797	U+901E	# <cjk>
+0xE798	U+9016	# <cjk>
+0xE799	U+900B	# <cjk>
+0xE79A	U+9027	# <cjk>
+0xE79B	U+9036	# <cjk>
+0xE79C	U+9035	# <cjk>
+0xE79D	U+9039	# <cjk>
+0xE79E	U+8FF8	# <cjk>
+0xE79F	U+904F	# <cjk>
+0xE7A0	U+9050	# <cjk>
+0xE7A1	U+9051	# <cjk>
+0xE7A2	U+9052	# <cjk>
+0xE7A3	U+900E	# <cjk>
+0xE7A4	U+9049	# <cjk>
+0xE7A5	U+903E	# <cjk>
+0xE7A6	U+9056	# <cjk>
+0xE7A7	U+9058	# <cjk>
+0xE7A8	U+905E	# <cjk>
+0xE7A9	U+9068	# <cjk>
+0xE7AA	U+906F	# <cjk>
+0xE7AB	U+9076	# <cjk>
+0xE7AC	U+96A8	# <cjk>
+0xE7AD	U+9072	# <cjk>
+0xE7AE	U+9082	# <cjk>
+0xE7AF	U+907D	# <cjk>
+0xE7B0	U+9081	# <cjk>
+0xE7B1	U+9080	# <cjk>
+0xE7B2	U+908A	# <cjk>
+0xE7B3	U+9089	# <cjk>
+0xE7B4	U+908F	# <cjk>
+0xE7B5	U+90A8	# <cjk>
+0xE7B6	U+90AF	# <cjk>
+0xE7B7	U+90B1	# <cjk>
+0xE7B8	U+90B5	# <cjk>
+0xE7B9	U+90E2	# <cjk>
+0xE7BA	U+90E4	# <cjk>
+0xE7BB	U+6248	# <cjk>
+0xE7BC	U+90DB	# <cjk>
+0xE7BD	U+9102	# <cjk>
+0xE7BE	U+9112	# <cjk>
+0xE7BF	U+9119	# <cjk>
+0xE7C0	U+9132	# <cjk>
+0xE7C1	U+9130	# <cjk>
+0xE7C2	U+914A	# <cjk>
+0xE7C3	U+9156	# <cjk>
+0xE7C4	U+9158	# <cjk>
+0xE7C5	U+9163	# <cjk>
+0xE7C6	U+9165	# <cjk>
+0xE7C7	U+9169	# <cjk>
+0xE7C8	U+9173	# <cjk>
+0xE7C9	U+9172	# <cjk>
+0xE7CA	U+918B	# <cjk>
+0xE7CB	U+9189	# <cjk>
+0xE7CC	U+9182	# <cjk>
+0xE7CD	U+91A2	# <cjk>
+0xE7CE	U+91AB	# <cjk>
+0xE7CF	U+91AF	# <cjk>
+0xE7D0	U+91AA	# <cjk>
+0xE7D1	U+91B5	# <cjk>
+0xE7D2	U+91B4	# <cjk>
+0xE7D3	U+91BA	# <cjk>
+0xE7D4	U+91C0	# <cjk>
+0xE7D5	U+91C1	# <cjk>
+0xE7D6	U+91C9	# <cjk>
+0xE7D7	U+91CB	# <cjk>
+0xE7D8	U+91D0	# <cjk>
+0xE7D9	U+91D6	# <cjk>
+0xE7DA	U+91DF	# <cjk>
+0xE7DB	U+91E1	# <cjk>
+0xE7DC	U+91DB	# <cjk>
+0xE7DD	U+91FC	# <cjk>
+0xE7DE	U+91F5	# <cjk>
+0xE7DF	U+91F6	# <cjk>
+0xE7E0	U+921E	# <cjk>
+0xE7E1	U+91FF	# <cjk>
+0xE7E2	U+9214	# <cjk>
+0xE7E3	U+922C	# <cjk>
+0xE7E4	U+9215	# <cjk>
+0xE7E5	U+9211	# <cjk>
+0xE7E6	U+925E	# <cjk>
+0xE7E7	U+9257	# <cjk>
+0xE7E8	U+9245	# <cjk>
+0xE7E9	U+9249	# <cjk>
+0xE7EA	U+9264	# <cjk>
+0xE7EB	U+9248	# <cjk>
+0xE7EC	U+9295	# <cjk>
+0xE7ED	U+923F	# <cjk>
+0xE7EE	U+924B	# <cjk>
+0xE7EF	U+9250	# <cjk>
+0xE7F0	U+929C	# <cjk>
+0xE7F1	U+9296	# <cjk>
+0xE7F2	U+9293	# <cjk>
+0xE7F3	U+929B	# <cjk>
+0xE7F4	U+925A	# <cjk>
+0xE7F5	U+92CF	# <cjk>
+0xE7F6	U+92B9	# <cjk>
+0xE7F7	U+92B7	# <cjk>
+0xE7F8	U+92E9	# <cjk>
+0xE7F9	U+930F	# <cjk>
+0xE7FA	U+92FA	# <cjk>
+0xE7FB	U+9344	# <cjk>
+0xE7FC	U+932E	# <cjk>
+0xE840	U+9319	# <cjk>
+0xE841	U+9322	# <cjk>
+0xE842	U+931A	# <cjk>
+0xE843	U+9323	# <cjk>
+0xE844	U+933A	# <cjk>
+0xE845	U+9335	# <cjk>
+0xE846	U+933B	# <cjk>
+0xE847	U+935C	# <cjk>
+0xE848	U+9360	# <cjk>
+0xE849	U+937C	# <cjk>
+0xE84A	U+936E	# <cjk>
+0xE84B	U+9356	# <cjk>
+0xE84C	U+93B0	# <cjk>
+0xE84D	U+93AC	# <cjk>
+0xE84E	U+93AD	# <cjk>
+0xE84F	U+9394	# <cjk>
+0xE850	U+93B9	# <cjk>
+0xE851	U+93D6	# <cjk>
+0xE852	U+93D7	# <cjk>
+0xE853	U+93E8	# <cjk>
+0xE854	U+93E5	# <cjk>
+0xE855	U+93D8	# <cjk>
+0xE856	U+93C3	# <cjk>
+0xE857	U+93DD	# <cjk>
+0xE858	U+93D0	# <cjk>
+0xE859	U+93C8	# <cjk>
+0xE85A	U+93E4	# <cjk>
+0xE85B	U+941A	# <cjk>
+0xE85C	U+9414	# <cjk>
+0xE85D	U+9413	# <cjk>
+0xE85E	U+9403	# <cjk>
+0xE85F	U+9407	# <cjk>
+0xE860	U+9410	# <cjk>
+0xE861	U+9436	# <cjk>
+0xE862	U+942B	# <cjk>
+0xE863	U+9435	# <cjk>
+0xE864	U+9421	# <cjk>
+0xE865	U+943A	# <cjk>
+0xE866	U+9441	# <cjk>
+0xE867	U+9452	# <cjk>
+0xE868	U+9444	# <cjk>
+0xE869	U+945B	# <cjk>
+0xE86A	U+9460	# <cjk>
+0xE86B	U+9462	# <cjk>
+0xE86C	U+945E	# <cjk>
+0xE86D	U+946A	# <cjk>
+0xE86E	U+9229	# <cjk>
+0xE86F	U+9470	# <cjk>
+0xE870	U+9475	# <cjk>
+0xE871	U+9477	# <cjk>
+0xE872	U+947D	# <cjk>
+0xE873	U+945A	# <cjk>
+0xE874	U+947C	# <cjk>
+0xE875	U+947E	# <cjk>
+0xE876	U+9481	# <cjk>
+0xE877	U+947F	# <cjk>
+0xE878	U+9582	# <cjk>
+0xE879	U+9587	# <cjk>
+0xE87A	U+958A	# <cjk>
+0xE87B	U+9594	# <cjk>
+0xE87C	U+9596	# <cjk>
+0xE87D	U+9598	# <cjk>
+0xE87E	U+9599	# <cjk>
+0xE880	U+95A0	# <cjk>
+0xE881	U+95A8	# <cjk>
+0xE882	U+95A7	# <cjk>
+0xE883	U+95AD	# <cjk>
+0xE884	U+95BC	# <cjk>
+0xE885	U+95BB	# <cjk>
+0xE886	U+95B9	# <cjk>
+0xE887	U+95BE	# <cjk>
+0xE888	U+95CA	# <cjk>
+0xE889	U+6FF6	# <cjk>
+0xE88A	U+95C3	# <cjk>
+0xE88B	U+95CD	# <cjk>
+0xE88C	U+95CC	# <cjk>
+0xE88D	U+95D5	# <cjk>
+0xE88E	U+95D4	# <cjk>
+0xE88F	U+95D6	# <cjk>
+0xE890	U+95DC	# <cjk>
+0xE891	U+95E1	# <cjk>
+0xE892	U+95E5	# <cjk>
+0xE893	U+95E2	# <cjk>
+0xE894	U+9621	# <cjk>
+0xE895	U+9628	# <cjk>
+0xE896	U+962E	# <cjk>
+0xE897	U+962F	# <cjk>
+0xE898	U+9642	# <cjk>
+0xE899	U+964C	# <cjk>
+0xE89A	U+964F	# <cjk>
+0xE89B	U+964B	# <cjk>
+0xE89C	U+9677	# <cjk>
+0xE89D	U+965C	# <cjk>
+0xE89E	U+965E	# <cjk>
+0xE89F	U+965D	# <cjk>
+0xE8A0	U+965F	# <cjk>
+0xE8A1	U+9666	# <cjk>
+0xE8A2	U+9672	# <cjk>
+0xE8A3	U+966C	# <cjk>
+0xE8A4	U+968D	# <cjk>
+0xE8A5	U+9698	# <cjk>
+0xE8A6	U+9695	# <cjk>
+0xE8A7	U+9697	# <cjk>
+0xE8A8	U+96AA	# <cjk>
+0xE8A9	U+96A7	# <cjk>
+0xE8AA	U+96B1	# <cjk>
+0xE8AB	U+96B2	# <cjk>
+0xE8AC	U+96B0	# <cjk>
+0xE8AD	U+96B4	# <cjk>
+0xE8AE	U+96B6	# <cjk>
+0xE8AF	U+96B8	# <cjk>
+0xE8B0	U+96B9	# <cjk>
+0xE8B1	U+96CE	# <cjk>
+0xE8B2	U+96CB	# <cjk>
+0xE8B3	U+96C9	# <cjk>
+0xE8B4	U+96CD	# <cjk>
+0xE8B5	U+894D	# <cjk>
+0xE8B6	U+96DC	# <cjk>
+0xE8B7	U+970D	# <cjk>
+0xE8B8	U+96D5	# <cjk>
+0xE8B9	U+96F9	# <cjk>
+0xE8BA	U+9704	# <cjk>
+0xE8BB	U+9706	# <cjk>
+0xE8BC	U+9708	# <cjk>
+0xE8BD	U+9713	# <cjk>
+0xE8BE	U+970E	# <cjk>
+0xE8BF	U+9711	# <cjk>
+0xE8C0	U+970F	# <cjk>
+0xE8C1	U+9716	# <cjk>
+0xE8C2	U+9719	# <cjk>
+0xE8C3	U+9724	# <cjk>
+0xE8C4	U+972A	# <cjk>
+0xE8C5	U+9730	# <cjk>
+0xE8C6	U+9739	# <cjk>
+0xE8C7	U+973D	# <cjk>
+0xE8C8	U+973E	# <cjk>
+0xE8C9	U+9744	# <cjk>
+0xE8CA	U+9746	# <cjk>
+0xE8CB	U+9748	# <cjk>
+0xE8CC	U+9742	# <cjk>
+0xE8CD	U+9749	# <cjk>
+0xE8CE	U+975C	# <cjk>
+0xE8CF	U+9760	# <cjk>
+0xE8D0	U+9764	# <cjk>
+0xE8D1	U+9766	# <cjk>
+0xE8D2	U+9768	# <cjk>
+0xE8D3	U+52D2	# <cjk>
+0xE8D4	U+976B	# <cjk>
+0xE8D5	U+9771	# <cjk>
+0xE8D6	U+9779	# <cjk>
+0xE8D7	U+9785	# <cjk>
+0xE8D8	U+977C	# <cjk>
+0xE8D9	U+9781	# <cjk>
+0xE8DA	U+977A	# <cjk>
+0xE8DB	U+9786	# <cjk>
+0xE8DC	U+978B	# <cjk>
+0xE8DD	U+978F	# <cjk>
+0xE8DE	U+9790	# <cjk>
+0xE8DF	U+979C	# <cjk>
+0xE8E0	U+97A8	# <cjk>
+0xE8E1	U+97A6	# <cjk>
+0xE8E2	U+97A3	# <cjk>
+0xE8E3	U+97B3	# <cjk>
+0xE8E4	U+97B4	# <cjk>
+0xE8E5	U+97C3	# <cjk>
+0xE8E6	U+97C6	# <cjk>
+0xE8E7	U+97C8	# <cjk>
+0xE8E8	U+97CB	# <cjk>
+0xE8E9	U+97DC	# <cjk>
+0xE8EA	U+97ED	# <cjk>
+0xE8EB	U+9F4F	# <cjk>
+0xE8EC	U+97F2	# <cjk>
+0xE8ED	U+7ADF	# <cjk>
+0xE8EE	U+97F6	# <cjk>
+0xE8EF	U+97F5	# <cjk>
+0xE8F0	U+980F	# <cjk>
+0xE8F1	U+980C	# <cjk>
+0xE8F2	U+9838	# <cjk>
+0xE8F3	U+9824	# <cjk>
+0xE8F4	U+9821	# <cjk>
+0xE8F5	U+9837	# <cjk>
+0xE8F6	U+983D	# <cjk>
+0xE8F7	U+9846	# <cjk>
+0xE8F8	U+984F	# <cjk>
+0xE8F9	U+984B	# <cjk>
+0xE8FA	U+986B	# <cjk>
+0xE8FB	U+986F	# <cjk>
+0xE8FC	U+9870	# <cjk>
+0xE940	U+9871	# <cjk>
+0xE941	U+9874	# <cjk>
+0xE942	U+9873	# <cjk>
+0xE943	U+98AA	# <cjk>
+0xE944	U+98AF	# <cjk>
+0xE945	U+98B1	# <cjk>
+0xE946	U+98B6	# <cjk>
+0xE947	U+98C4	# <cjk>
+0xE948	U+98C3	# <cjk>
+0xE949	U+98C6	# <cjk>
+0xE94A	U+98E9	# <cjk>
+0xE94B	U+98EB	# <cjk>
+0xE94C	U+9903	# <cjk>
+0xE94D	U+9909	# <cjk>
+0xE94E	U+9912	# <cjk>
+0xE94F	U+9914	# <cjk>
+0xE950	U+9918	# <cjk>
+0xE951	U+9921	# <cjk>
+0xE952	U+991D	# <cjk>
+0xE953	U+991E	# <cjk>
+0xE954	U+9924	# <cjk>
+0xE955	U+9920	# <cjk>
+0xE956	U+992C	# <cjk>
+0xE957	U+992E	# <cjk>
+0xE958	U+993D	# <cjk>
+0xE959	U+993E	# <cjk>
+0xE95A	U+9942	# <cjk>
+0xE95B	U+9949	# <cjk>
+0xE95C	U+9945	# <cjk>
+0xE95D	U+9950	# <cjk>
+0xE95E	U+994B	# <cjk>
+0xE95F	U+9951	# <cjk>
+0xE960	U+9952	# <cjk>
+0xE961	U+994C	# <cjk>
+0xE962	U+9955	# <cjk>
+0xE963	U+9997	# <cjk>
+0xE964	U+9998	# <cjk>
+0xE965	U+99A5	# <cjk>
+0xE966	U+99AD	# <cjk>
+0xE967	U+99AE	# <cjk>
+0xE968	U+99BC	# <cjk>
+0xE969	U+99DF	# <cjk>
+0xE96A	U+99DB	# <cjk>
+0xE96B	U+99DD	# <cjk>
+0xE96C	U+99D8	# <cjk>
+0xE96D	U+99D1	# <cjk>
+0xE96E	U+99ED	# <cjk>
+0xE96F	U+99EE	# <cjk>
+0xE970	U+99F1	# <cjk>
+0xE971	U+99F2	# <cjk>
+0xE972	U+99FB	# <cjk>
+0xE973	U+99F8	# <cjk>
+0xE974	U+9A01	# <cjk>
+0xE975	U+9A0F	# <cjk>
+0xE976	U+9A05	# <cjk>
+0xE977	U+99E2	# <cjk>
+0xE978	U+9A19	# <cjk>
+0xE979	U+9A2B	# <cjk>
+0xE97A	U+9A37	# <cjk>
+0xE97B	U+9A45	# <cjk>
+0xE97C	U+9A42	# <cjk>
+0xE97D	U+9A40	# <cjk>
+0xE97E	U+9A43	# <cjk>
+0xE980	U+9A3E	# <cjk>
+0xE981	U+9A55	# <cjk>
+0xE982	U+9A4D	# <cjk>
+0xE983	U+9A5B	# <cjk>
+0xE984	U+9A57	# <cjk>
+0xE985	U+9A5F	# <cjk>
+0xE986	U+9A62	# <cjk>
+0xE987	U+9A65	# <cjk>
+0xE988	U+9A64	# <cjk>
+0xE989	U+9A69	# <cjk>
+0xE98A	U+9A6B	# <cjk>
+0xE98B	U+9A6A	# <cjk>
+0xE98C	U+9AAD	# <cjk>
+0xE98D	U+9AB0	# <cjk>
+0xE98E	U+9ABC	# <cjk>
+0xE98F	U+9AC0	# <cjk>
+0xE990	U+9ACF	# <cjk>
+0xE991	U+9AD1	# <cjk>
+0xE992	U+9AD3	# <cjk>
+0xE993	U+9AD4	# <cjk>
+0xE994	U+9ADE	# <cjk>
+0xE995	U+9ADF	# <cjk>
+0xE996	U+9AE2	# <cjk>
+0xE997	U+9AE3	# <cjk>
+0xE998	U+9AE6	# <cjk>
+0xE999	U+9AEF	# <cjk>
+0xE99A	U+9AEB	# <cjk>
+0xE99B	U+9AEE	# <cjk>
+0xE99C	U+9AF4	# <cjk>
+0xE99D	U+9AF1	# <cjk>
+0xE99E	U+9AF7	# <cjk>
+0xE99F	U+9AFB	# <cjk>
+0xE9A0	U+9B06	# <cjk>
+0xE9A1	U+9B18	# <cjk>
+0xE9A2	U+9B1A	# <cjk>
+0xE9A3	U+9B1F	# <cjk>
+0xE9A4	U+9B22	# <cjk>
+0xE9A5	U+9B23	# <cjk>
+0xE9A6	U+9B25	# <cjk>
+0xE9A7	U+9B27	# <cjk>
+0xE9A8	U+9B28	# <cjk>
+0xE9A9	U+9B29	# <cjk>
+0xE9AA	U+9B2A	# <cjk>
+0xE9AB	U+9B2E	# <cjk>
+0xE9AC	U+9B2F	# <cjk>
+0xE9AD	U+9B32	# <cjk>
+0xE9AE	U+9B44	# <cjk>
+0xE9AF	U+9B43	# <cjk>
+0xE9B0	U+9B4F	# <cjk>
+0xE9B1	U+9B4D	# <cjk>
+0xE9B2	U+9B4E	# <cjk>
+0xE9B3	U+9B51	# <cjk>
+0xE9B4	U+9B58	# <cjk>
+0xE9B5	U+9B74	# <cjk>
+0xE9B6	U+9B93	# <cjk>
+0xE9B7	U+9B83	# <cjk>
+0xE9B8	U+9B91	# <cjk>
+0xE9B9	U+9B96	# <cjk>
+0xE9BA	U+9B97	# <cjk>
+0xE9BB	U+9B9F	# <cjk>
+0xE9BC	U+9BA0	# <cjk>
+0xE9BD	U+9BA8	# <cjk>
+0xE9BE	U+9BB4	# <cjk>
+0xE9BF	U+9BC0	# <cjk>
+0xE9C0	U+9BCA	# <cjk>
+0xE9C1	U+9BB9	# <cjk>
+0xE9C2	U+9BC6	# <cjk>
+0xE9C3	U+9BCF	# <cjk>
+0xE9C4	U+9BD1	# <cjk>
+0xE9C5	U+9BD2	# <cjk>
+0xE9C6	U+9BE3	# <cjk>
+0xE9C7	U+9BE2	# <cjk>
+0xE9C8	U+9BE4	# <cjk>
+0xE9C9	U+9BD4	# <cjk>
+0xE9CA	U+9BE1	# <cjk>
+0xE9CB	U+9C3A	# <cjk>
+0xE9CC	U+9BF2	# <cjk>
+0xE9CD	U+9BF1	# <cjk>
+0xE9CE	U+9BF0	# <cjk>
+0xE9CF	U+9C15	# <cjk>
+0xE9D0	U+9C14	# <cjk>
+0xE9D1	U+9C09	# <cjk>
+0xE9D2	U+9C13	# <cjk>
+0xE9D3	U+9C0C	# <cjk>
+0xE9D4	U+9C06	# <cjk>
+0xE9D5	U+9C08	# <cjk>
+0xE9D6	U+9C12	# <cjk>
+0xE9D7	U+9C0A	# <cjk>
+0xE9D8	U+9C04	# <cjk>
+0xE9D9	U+9C2E	# <cjk>
+0xE9DA	U+9C1B	# <cjk>
+0xE9DB	U+9C25	# <cjk>
+0xE9DC	U+9C24	# <cjk>
+0xE9DD	U+9C21	# <cjk>
+0xE9DE	U+9C30	# <cjk>
+0xE9DF	U+9C47	# <cjk>
+0xE9E0	U+9C32	# <cjk>
+0xE9E1	U+9C46	# <cjk>
+0xE9E2	U+9C3E	# <cjk>
+0xE9E3	U+9C5A	# <cjk>
+0xE9E4	U+9C60	# <cjk>
+0xE9E5	U+9C67	# <cjk>
+0xE9E6	U+9C76	# <cjk>
+0xE9E7	U+9C78	# <cjk>
+0xE9E8	U+9CE7	# <cjk>
+0xE9E9	U+9CEC	# <cjk>
+0xE9EA	U+9CF0	# <cjk>
+0xE9EB	U+9D09	# <cjk>
+0xE9EC	U+9D08	# <cjk>
+0xE9ED	U+9CEB	# <cjk>
+0xE9EE	U+9D03	# <cjk>
+0xE9EF	U+9D06	# <cjk>
+0xE9F0	U+9D2A	# <cjk>
+0xE9F1	U+9D26	# <cjk>
+0xE9F2	U+9DAF	# <cjk>
+0xE9F3	U+9D23	# <cjk>
+0xE9F4	U+9D1F	# <cjk>
+0xE9F5	U+9D44	# <cjk>
+0xE9F6	U+9D15	# <cjk>
+0xE9F7	U+9D12	# <cjk>
+0xE9F8	U+9D41	# <cjk>
+0xE9F9	U+9D3F	# <cjk>
+0xE9FA	U+9D3E	# <cjk>
+0xE9FB	U+9D46	# <cjk>
+0xE9FC	U+9D48	# <cjk>
+0xEA40	U+9D5D	# <cjk>
+0xEA41	U+9D5E	# <cjk>
+0xEA42	U+9D64	# <cjk>
+0xEA43	U+9D51	# <cjk>
+0xEA44	U+9D50	# <cjk>
+0xEA45	U+9D59	# <cjk>
+0xEA46	U+9D72	# <cjk>
+0xEA47	U+9D89	# <cjk>
+0xEA48	U+9D87	# <cjk>
+0xEA49	U+9DAB	# <cjk>
+0xEA4A	U+9D6F	# <cjk>
+0xEA4B	U+9D7A	# <cjk>
+0xEA4C	U+9D9A	# <cjk>
+0xEA4D	U+9DA4	# <cjk>
+0xEA4E	U+9DA9	# <cjk>
+0xEA4F	U+9DB2	# <cjk>
+0xEA50	U+9DC4	# <cjk>
+0xEA51	U+9DC1	# <cjk>
+0xEA52	U+9DBB	# <cjk>
+0xEA53	U+9DB8	# <cjk>
+0xEA54	U+9DBA	# <cjk>
+0xEA55	U+9DC6	# <cjk>
+0xEA56	U+9DCF	# <cjk>
+0xEA57	U+9DC2	# <cjk>
+0xEA58	U+9DD9	# <cjk>
+0xEA59	U+9DD3	# <cjk>
+0xEA5A	U+9DF8	# <cjk>
+0xEA5B	U+9DE6	# <cjk>
+0xEA5C	U+9DED	# <cjk>
+0xEA5D	U+9DEF	# <cjk>
+0xEA5E	U+9DFD	# <cjk>
+0xEA5F	U+9E1A	# <cjk>
+0xEA60	U+9E1B	# <cjk>
+0xEA61	U+9E1E	# <cjk>
+0xEA62	U+9E75	# <cjk>
+0xEA63	U+9E79	# <cjk>
+0xEA64	U+9E7D	# <cjk>
+0xEA65	U+9E81	# <cjk>
+0xEA66	U+9E88	# <cjk>
+0xEA67	U+9E8B	# <cjk>
+0xEA68	U+9E8C	# <cjk>
+0xEA69	U+9E92	# <cjk>
+0xEA6A	U+9E95	# <cjk>
+0xEA6B	U+9E91	# <cjk>
+0xEA6C	U+9E9D	# <cjk>
+0xEA6D	U+9EA5	# <cjk>
+0xEA6E	U+9EA9	# <cjk>
+0xEA6F	U+9EB8	# <cjk>
+0xEA70	U+9EAA	# <cjk>
+0xEA71	U+9EAD	# <cjk>
+0xEA72	U+9761	# <cjk>
+0xEA73	U+9ECC	# <cjk>
+0xEA74	U+9ECE	# <cjk>
+0xEA75	U+9ECF	# <cjk>
+0xEA76	U+9ED0	# <cjk>
+0xEA77	U+9ED4	# <cjk>
+0xEA78	U+9EDC	# <cjk>
+0xEA79	U+9EDE	# <cjk>
+0xEA7A	U+9EDD	# <cjk>
+0xEA7B	U+9EE0	# <cjk>
+0xEA7C	U+9EE5	# <cjk>
+0xEA7D	U+9EE8	# <cjk>
+0xEA7E	U+9EEF	# <cjk>
+0xEA80	U+9EF4	# <cjk>
+0xEA81	U+9EF6	# <cjk>
+0xEA82	U+9EF7	# <cjk>
+0xEA83	U+9EF9	# <cjk>
+0xEA84	U+9EFB	# <cjk>
+0xEA85	U+9EFC	# <cjk>
+0xEA86	U+9EFD	# <cjk>
+0xEA87	U+9F07	# <cjk>
+0xEA88	U+9F08	# <cjk>
+0xEA89	U+76B7	# <cjk>
+0xEA8A	U+9F15	# <cjk>
+0xEA8B	U+9F21	# <cjk>
+0xEA8C	U+9F2C	# <cjk>
+0xEA8D	U+9F3E	# <cjk>
+0xEA8E	U+9F4A	# <cjk>
+0xEA8F	U+9F52	# <cjk>
+0xEA90	U+9F54	# <cjk>
+0xEA91	U+9F63	# <cjk>
+0xEA92	U+9F5F	# <cjk>
+0xEA93	U+9F60	# <cjk>
+0xEA94	U+9F61	# <cjk>
+0xEA95	U+9F66	# <cjk>
+0xEA96	U+9F67	# <cjk>
+0xEA97	U+9F6C	# <cjk>
+0xEA98	U+9F6A	# <cjk>
+0xEA99	U+9F77	# <cjk>
+0xEA9A	U+9F72	# <cjk>
+0xEA9B	U+9F76	# <cjk>
+0xEA9C	U+9F95	# <cjk>
+0xEA9D	U+9F9C	# <cjk>
+0xEA9E	U+9FA0	# <cjk>
+0xEA9F	U+582F	# <cjk>	[1983]
+0xEAA0	U+69C7	# <cjk>	[1983]
+0xEAA1	U+9059	# <cjk>	[1983]
+0xEAA2	U+7464	# <cjk>	[1983]
+0xEAA3	U+51DC	# <cjk>	[1990]
+0xEAA4	U+7199	# <cjk>	[1990]
+0xEAA5	U+5653	# <cjk>	[2004]
+0xEAA6	U+5DE2	# <cjk>	[2000]
+0xEAA7	U+5E14	# <cjk>	[2000]
+0xEAA8	U+5E18	# <cjk>	[2000]
+0xEAA9	U+5E58	# <cjk>	[2000]
+0xEAAA	U+5E5E	# <cjk>	[2000]
+0xEAAB	U+5EBE	# <cjk>	[2000]
+0xEAAC	U+F928	# CJK COMPATIBILITY IDEOGRAPH-F928	[2000]
+0xEAAD	U+5ECB	# <cjk>	[2000]
+0xEAAE	U+5EF9	# <cjk>	[2000]
+0xEAAF	U+5F00	# <cjk>	[2000]
+0xEAB0	U+5F02	# <cjk>	[2000]
+0xEAB1	U+5F07	# <cjk>	[2000]
+0xEAB2	U+5F1D	# <cjk>	[2000]
+0xEAB3	U+5F23	# <cjk>	[2000]
+0xEAB4	U+5F34	# <cjk>	[2000]
+0xEAB5	U+5F36	# <cjk>	[2000]
+0xEAB6	U+5F3D	# <cjk>	[2000]
+0xEAB7	U+5F40	# <cjk>	[2000]
+0xEAB8	U+5F45	# <cjk>	[2000]
+0xEAB9	U+5F54	# <cjk>	[2000]
+0xEABA	U+5F58	# <cjk>	[2000]
+0xEABB	U+5F64	# <cjk>	[2000]
+0xEABC	U+5F67	# <cjk>	[2000]
+0xEABD	U+5F7D	# <cjk>	[2000]
+0xEABE	U+5F89	# <cjk>	[2000]
+0xEABF	U+5F9C	# <cjk>	[2000]
+0xEAC0	U+5FA7	# <cjk>	[2000]
+0xEAC1	U+5FAF	# <cjk>	[2000]
+0xEAC2	U+5FB5	# <cjk>	[2000]
+0xEAC3	U+5FB7	# <cjk>	[2000]
+0xEAC4	U+5FC9	# <cjk>	[2000]
+0xEAC5	U+5FDE	# <cjk>	[2000]
+0xEAC6	U+5FE1	# <cjk>	[2000]
+0xEAC7	U+5FE9	# <cjk>	[2000]
+0xEAC8	U+600D	# <cjk>	[2000]
+0xEAC9	U+6014	# <cjk>	[2000]
+0xEACA	U+6018	# <cjk>	[2000]
+0xEACB	U+6033	# <cjk>	[2000]
+0xEACC	U+6035	# <cjk>	[2000]
+0xEACD	U+6047	# <cjk>	[2000]
+0xEACE	U+FA3D	# CJK COMPATIBILITY IDEOGRAPH-FA3D	[2000]	[Unicode3.2]
+0xEACF	U+609D	# <cjk>	[2000]
+0xEAD0	U+609E	# <cjk>	[2000]
+0xEAD1	U+60CB	# <cjk>	[2000]
+0xEAD2	U+60D4	# <cjk>	[2000]
+0xEAD3	U+60D5	# <cjk>	[2000]
+0xEAD4	U+60DD	# <cjk>	[2000]
+0xEAD5	U+60F8	# <cjk>	[2000]
+0xEAD6	U+611C	# <cjk>	[2000]
+0xEAD7	U+612B	# <cjk>	[2000]
+0xEAD8	U+6130	# <cjk>	[2000]
+0xEAD9	U+6137	# <cjk>	[2000]
+0xEADA	U+FA3E	# CJK COMPATIBILITY IDEOGRAPH-FA3E	[2000]	[Unicode3.2]
+0xEADB	U+618D	# <cjk>	[2000]
+0xEADC	U+FA3F	# CJK COMPATIBILITY IDEOGRAPH-FA3F	[2000]	[Unicode3.2]
+0xEADD	U+61BC	# <cjk>	[2000]
+0xEADE	U+61B9	# <cjk>	[2000]
+0xEADF	U+FA40	# CJK COMPATIBILITY IDEOGRAPH-FA40	[2000]	[Unicode3.2]
+0xEAE0	U+6222	# <cjk>	[2000]
+0xEAE1	U+623E	# <cjk>	[2000]
+0xEAE2	U+6243	# <cjk>	[2000]
+0xEAE3	U+6256	# <cjk>	[2000]
+0xEAE4	U+625A	# <cjk>	[2000]
+0xEAE5	U+626F	# <cjk>	[2000]
+0xEAE6	U+6285	# <cjk>	[2000]
+0xEAE7	U+62C4	# <cjk>	[2000]
+0xEAE8	U+62D6	# <cjk>	[2000]
+0xEAE9	U+62FC	# <cjk>	[2000]
+0xEAEA	U+630A	# <cjk>	[2000]
+0xEAEB	U+6318	# <cjk>	[2000]
+0xEAEC	U+6339	# <cjk>	[2000]
+0xEAED	U+6343	# <cjk>	[2000]
+0xEAEE	U+6365	# <cjk>	[2000]
+0xEAEF	U+637C	# <cjk>	[2000]
+0xEAF0	U+63E5	# <cjk>	[2000]
+0xEAF1	U+63ED	# <cjk>	[2000]
+0xEAF2	U+63F5	# <cjk>	[2000]
+0xEAF3	U+6410	# <cjk>	[2000]
+0xEAF4	U+6414	# <cjk>	[2000]
+0xEAF5	U+6422	# <cjk>	[2000]
+0xEAF6	U+6479	# <cjk>	[2000]
+0xEAF7	U+6451	# <cjk>	[2000]
+0xEAF8	U+6460	# <cjk>	[2000]
+0xEAF9	U+646D	# <cjk>	[2000]
+0xEAFA	U+64CE	# <cjk>	[2000]
+0xEAFB	U+64BE	# <cjk>	[2000]
+0xEAFC	U+64BF	# <cjk>	[2000]
+0xEB40	U+64C4	# <cjk>	[2000]
+0xEB41	U+64CA	# <cjk>	[2000]
+0xEB42	U+64D0	# <cjk>	[2000]
+0xEB43	U+64F7	# <cjk>	[2000]
+0xEB44	U+64FB	# <cjk>	[2000]
+0xEB45	U+6522	# <cjk>	[2000]
+0xEB46	U+6529	# <cjk>	[2000]
+0xEB47	U+FA41	# CJK COMPATIBILITY IDEOGRAPH-FA41	[2000]	[Unicode3.2]
+0xEB48	U+6567	# <cjk>	[2000]
+0xEB49	U+659D	# <cjk>	[2000]
+0xEB4A	U+FA42	# CJK COMPATIBILITY IDEOGRAPH-FA42	[2000]	[Unicode3.2]
+0xEB4B	U+6600	# <cjk>	[2000]
+0xEB4C	U+6609	# <cjk>	[2000]
+0xEB4D	U+6615	# <cjk>	[2000]
+0xEB4E	U+661E	# <cjk>	[2000]
+0xEB4F	U+663A	# <cjk>	[2000]
+0xEB50	U+6622	# <cjk>	[2000]
+0xEB51	U+6624	# <cjk>	[2000]
+0xEB52	U+662B	# <cjk>	[2000]
+0xEB53	U+6630	# <cjk>	[2000]
+0xEB54	U+6631	# <cjk>	[2000]
+0xEB55	U+6633	# <cjk>	[2000]
+0xEB56	U+66FB	# <cjk>	[2000]
+0xEB57	U+6648	# <cjk>	[2000]
+0xEB58	U+664C	# <cjk>	[2000]
+0xEB59	U+231C4	# <cjk>	[2000]	[Unicode3.1]
+0xEB5A	U+6659	# <cjk>	[2000]
+0xEB5B	U+665A	# <cjk>	[2000]
+0xEB5C	U+6661	# <cjk>	[2000]
+0xEB5D	U+6665	# <cjk>	[2000]
+0xEB5E	U+6673	# <cjk>	[2000]
+0xEB5F	U+6677	# <cjk>	[2000]
+0xEB60	U+6678	# <cjk>	[2000]
+0xEB61	U+668D	# <cjk>	[2000]
+0xEB62	U+FA43	# CJK COMPATIBILITY IDEOGRAPH-FA43	[2000]	[Unicode3.2]
+0xEB63	U+66A0	# <cjk>	[2000]
+0xEB64	U+66B2	# <cjk>	[2000]
+0xEB65	U+66BB	# <cjk>	[2000]
+0xEB66	U+66C6	# <cjk>	[2000]
+0xEB67	U+66C8	# <cjk>	[2000]
+0xEB68	U+3B22	# <cjk>	[2000]
+0xEB69	U+66DB	# <cjk>	[2000]
+0xEB6A	U+66E8	# <cjk>	[2000]
+0xEB6B	U+66FA	# <cjk>	[2000]
+0xEB6C	U+6713	# <cjk>	[2000]
+0xEB6D	U+F929	# CJK COMPATIBILITY IDEOGRAPH-F929	[2000]
+0xEB6E	U+6733	# <cjk>	[2000]
+0xEB6F	U+6766	# <cjk>	[2000]
+0xEB70	U+6747	# <cjk>	[2000]
+0xEB71	U+6748	# <cjk>	[2000]
+0xEB72	U+677B	# <cjk>	[2000]
+0xEB73	U+6781	# <cjk>	[2000]
+0xEB74	U+6793	# <cjk>	[2000]
+0xEB75	U+6798	# <cjk>	[2000]
+0xEB76	U+679B	# <cjk>	[2000]
+0xEB77	U+67BB	# <cjk>	[2000]
+0xEB78	U+67F9	# <cjk>	[2000]
+0xEB79	U+67C0	# <cjk>	[2000]
+0xEB7A	U+67D7	# <cjk>	[2000]
+0xEB7B	U+67FC	# <cjk>	[2000]
+0xEB7C	U+6801	# <cjk>	[2000]
+0xEB7D	U+6852	# <cjk>	[2000]
+0xEB7E	U+681D	# <cjk>	[2000]
+0xEB80	U+682C	# <cjk>	[2000]
+0xEB81	U+6831	# <cjk>	[2000]
+0xEB82	U+685B	# <cjk>	[2000]
+0xEB83	U+6872	# <cjk>	[2000]
+0xEB84	U+6875	# <cjk>	[2000]
+0xEB85	U+FA44	# CJK COMPATIBILITY IDEOGRAPH-FA44	[2000]	[Unicode3.2]
+0xEB86	U+68A3	# <cjk>	[2000]
+0xEB87	U+68A5	# <cjk>	[2000]
+0xEB88	U+68B2	# <cjk>	[2000]
+0xEB89	U+68C8	# <cjk>	[2000]
+0xEB8A	U+68D0	# <cjk>	[2000]
+0xEB8B	U+68E8	# <cjk>	[2000]
+0xEB8C	U+68ED	# <cjk>	[2000]
+0xEB8D	U+68F0	# <cjk>	[2000]
+0xEB8E	U+68F1	# <cjk>	[2000]
+0xEB8F	U+68FC	# <cjk>	[2000]
+0xEB90	U+690A	# <cjk>	[2000]
+0xEB91	U+6949	# <cjk>	[2000]
+0xEB92	U+235C4	# <cjk>	[2000]	[Unicode3.1]
+0xEB93	U+6935	# <cjk>	[2000]
+0xEB94	U+6942	# <cjk>	[2000]
+0xEB95	U+6957	# <cjk>	[2000]
+0xEB96	U+6963	# <cjk>	[2000]
+0xEB97	U+6964	# <cjk>	[2000]
+0xEB98	U+6968	# <cjk>	[2000]
+0xEB99	U+6980	# <cjk>	[2000]
+0xEB9A	U+FA14	# CJK COMPATIBILITY IDEOGRAPH-FA14	[2000]
+0xEB9B	U+69A5	# <cjk>	[2000]
+0xEB9C	U+69AD	# <cjk>	[2000]
+0xEB9D	U+69CF	# <cjk>	[2000]
+0xEB9E	U+3BB6	# <cjk>	[2000]
+0xEB9F	U+3BC3	# <cjk>	[2000]
+0xEBA0	U+69E2	# <cjk>	[2000]
+0xEBA1	U+69E9	# <cjk>	[2000]
+0xEBA2	U+69EA	# <cjk>	[2000]
+0xEBA3	U+69F5	# <cjk>	[2000]
+0xEBA4	U+69F6	# <cjk>	[2000]
+0xEBA5	U+6A0F	# <cjk>	[2000]
+0xEBA6	U+6A15	# <cjk>	[2000]
+0xEBA7	U+2373F	# <cjk>	[2000]	[Unicode3.1]
+0xEBA8	U+6A3B	# <cjk>	[2000]
+0xEBA9	U+6A3E	# <cjk>	[2000]
+0xEBAA	U+6A45	# <cjk>	[2000]
+0xEBAB	U+6A50	# <cjk>	[2000]
+0xEBAC	U+6A56	# <cjk>	[2000]
+0xEBAD	U+6A5B	# <cjk>	[2000]
+0xEBAE	U+6A6B	# <cjk>	[2000]
+0xEBAF	U+6A73	# <cjk>	[2000]
+0xEBB0	U+23763	# <cjk>	[2000]	[Unicode3.1]
+0xEBB1	U+6A89	# <cjk>	[2000]
+0xEBB2	U+6A94	# <cjk>	[2000]
+0xEBB3	U+6A9D	# <cjk>	[2000]
+0xEBB4	U+6A9E	# <cjk>	[2000]
+0xEBB5	U+6AA5	# <cjk>	[2000]
+0xEBB6	U+6AE4	# <cjk>	[2000]
+0xEBB7	U+6AE7	# <cjk>	[2000]
+0xEBB8	U+3C0F	# <cjk>	[2000]
+0xEBB9	U+F91D	# CJK COMPATIBILITY IDEOGRAPH-F91D	[2000]
+0xEBBA	U+6B1B	# <cjk>	[2000]
+0xEBBB	U+6B1E	# <cjk>	[2000]
+0xEBBC	U+6B2C	# <cjk>	[2000]
+0xEBBD	U+6B35	# <cjk>	[2000]
+0xEBBE	U+6B46	# <cjk>	[2000]
+0xEBBF	U+6B56	# <cjk>	[2000]
+0xEBC0	U+6B60	# <cjk>	[2000]
+0xEBC1	U+6B65	# <cjk>	[2000]
+0xEBC2	U+6B67	# <cjk>	[2000]
+0xEBC3	U+6B77	# <cjk>	[2000]
+0xEBC4	U+6B82	# <cjk>	[2000]
+0xEBC5	U+6BA9	# <cjk>	[2000]
+0xEBC6	U+6BAD	# <cjk>	[2000]
+0xEBC7	U+F970	# CJK COMPATIBILITY IDEOGRAPH-F970	[2000]
+0xEBC8	U+6BCF	# <cjk>	[2000]
+0xEBC9	U+6BD6	# <cjk>	[2000]
+0xEBCA	U+6BD7	# <cjk>	[2000]
+0xEBCB	U+6BFF	# <cjk>	[2000]
+0xEBCC	U+6C05	# <cjk>	[2000]
+0xEBCD	U+6C10	# <cjk>	[2000]
+0xEBCE	U+6C33	# <cjk>	[2000]
+0xEBCF	U+6C59	# <cjk>	[2000]
+0xEBD0	U+6C5C	# <cjk>	[2000]
+0xEBD1	U+6CAA	# <cjk>	[2000]
+0xEBD2	U+6C74	# <cjk>	[2000]
+0xEBD3	U+6C76	# <cjk>	[2000]
+0xEBD4	U+6C85	# <cjk>	[2000]
+0xEBD5	U+6C86	# <cjk>	[2000]
+0xEBD6	U+6C98	# <cjk>	[2000]
+0xEBD7	U+6C9C	# <cjk>	[2000]
+0xEBD8	U+6CFB	# <cjk>	[2000]
+0xEBD9	U+6CC6	# <cjk>	[2000]
+0xEBDA	U+6CD4	# <cjk>	[2000]
+0xEBDB	U+6CE0	# <cjk>	[2000]
+0xEBDC	U+6CEB	# <cjk>	[2000]
+0xEBDD	U+6CEE	# <cjk>	[2000]
+0xEBDE	U+23CFE	# <cjk>	[2000]	[Unicode3.1]
+0xEBDF	U+6D04	# <cjk>	[2000]
+0xEBE0	U+6D0E	# <cjk>	[2000]
+0xEBE1	U+6D2E	# <cjk>	[2000]
+0xEBE2	U+6D31	# <cjk>	[2000]
+0xEBE3	U+6D39	# <cjk>	[2000]
+0xEBE4	U+6D3F	# <cjk>	[2000]
+0xEBE5	U+6D58	# <cjk>	[2000]
+0xEBE6	U+6D65	# <cjk>	[2000]
+0xEBE7	U+FA45	# CJK COMPATIBILITY IDEOGRAPH-FA45	[2000]	[Unicode3.2]
+0xEBE8	U+6D82	# <cjk>	[2000]
+0xEBE9	U+6D87	# <cjk>	[2000]
+0xEBEA	U+6D89	# <cjk>	[2000]
+0xEBEB	U+6D94	# <cjk>	[2000]
+0xEBEC	U+6DAA	# <cjk>	[2000]
+0xEBED	U+6DAC	# <cjk>	[2000]
+0xEBEE	U+6DBF	# <cjk>	[2000]
+0xEBEF	U+6DC4	# <cjk>	[2000]
+0xEBF0	U+6DD6	# <cjk>	[2000]
+0xEBF1	U+6DDA	# <cjk>	[2000]
+0xEBF2	U+6DDB	# <cjk>	[2000]
+0xEBF3	U+6DDD	# <cjk>	[2000]
+0xEBF4	U+6DFC	# <cjk>	[2000]
+0xEBF5	U+FA46	# CJK COMPATIBILITY IDEOGRAPH-FA46	[2000]	[Unicode3.2]
+0xEBF6	U+6E34	# <cjk>	[2000]
+0xEBF7	U+6E44	# <cjk>	[2000]
+0xEBF8	U+6E5C	# <cjk>	[2000]
+0xEBF9	U+6E5E	# <cjk>	[2000]
+0xEBFA	U+6EAB	# <cjk>	[2000]
+0xEBFB	U+6EB1	# <cjk>	[2000]
+0xEBFC	U+6EC1	# <cjk>	[2000]
+0xEC40	U+6EC7	# <cjk>	[2000]
+0xEC41	U+6ECE	# <cjk>	[2000]
+0xEC42	U+6F10	# <cjk>	[2000]
+0xEC43	U+6F1A	# <cjk>	[2000]
+0xEC44	U+FA47	# CJK COMPATIBILITY IDEOGRAPH-FA47	[2000]	[Unicode3.2]
+0xEC45	U+6F2A	# <cjk>	[2000]
+0xEC46	U+6F2F	# <cjk>	[2000]
+0xEC47	U+6F33	# <cjk>	[2000]
+0xEC48	U+6F51	# <cjk>	[2000]
+0xEC49	U+6F59	# <cjk>	[2000]
+0xEC4A	U+6F5E	# <cjk>	[2000]
+0xEC4B	U+6F61	# <cjk>	[2000]
+0xEC4C	U+6F62	# <cjk>	[2000]
+0xEC4D	U+6F7E	# <cjk>	[2000]
+0xEC4E	U+6F88	# <cjk>	[2000]
+0xEC4F	U+6F8C	# <cjk>	[2000]
+0xEC50	U+6F8D	# <cjk>	[2000]
+0xEC51	U+6F94	# <cjk>	[2000]
+0xEC52	U+6FA0	# <cjk>	[2000]
+0xEC53	U+6FA7	# <cjk>	[2000]
+0xEC54	U+6FB6	# <cjk>	[2000]
+0xEC55	U+6FBC	# <cjk>	[2000]
+0xEC56	U+6FC7	# <cjk>	[2000]
+0xEC57	U+6FCA	# <cjk>	[2000]
+0xEC58	U+6FF9	# <cjk>	[2000]
+0xEC59	U+6FF0	# <cjk>	[2000]
+0xEC5A	U+6FF5	# <cjk>	[2000]
+0xEC5B	U+7005	# <cjk>	[2000]
+0xEC5C	U+7006	# <cjk>	[2000]
+0xEC5D	U+7028	# <cjk>	[2000]
+0xEC5E	U+704A	# <cjk>	[2000]
+0xEC5F	U+705D	# <cjk>	[2000]
+0xEC60	U+705E	# <cjk>	[2000]
+0xEC61	U+704E	# <cjk>	[2000]
+0xEC62	U+7064	# <cjk>	[2000]
+0xEC63	U+7075	# <cjk>	[2000]
+0xEC64	U+7085	# <cjk>	[2000]
+0xEC65	U+70A4	# <cjk>	[2000]
+0xEC66	U+70AB	# <cjk>	[2000]
+0xEC67	U+70B7	# <cjk>	[2000]
+0xEC68	U+70D4	# <cjk>	[2000]
+0xEC69	U+70D8	# <cjk>	[2000]
+0xEC6A	U+70E4	# <cjk>	[2000]
+0xEC6B	U+710F	# <cjk>	[2000]
+0xEC6C	U+712B	# <cjk>	[2000]
+0xEC6D	U+711E	# <cjk>	[2000]
+0xEC6E	U+7120	# <cjk>	[2000]
+0xEC6F	U+712E	# <cjk>	[2000]
+0xEC70	U+7130	# <cjk>	[2000]
+0xEC71	U+7146	# <cjk>	[2000]
+0xEC72	U+7147	# <cjk>	[2000]
+0xEC73	U+7151	# <cjk>	[2000]
+0xEC74	U+FA48	# CJK COMPATIBILITY IDEOGRAPH-FA48	[2000]	[Unicode3.2]
+0xEC75	U+7152	# <cjk>	[2000]
+0xEC76	U+715C	# <cjk>	[2000]
+0xEC77	U+7160	# <cjk>	[2000]
+0xEC78	U+7168	# <cjk>	[2000]
+0xEC79	U+FA15	# CJK COMPATIBILITY IDEOGRAPH-FA15	[2000]
+0xEC7A	U+7185	# <cjk>	[2000]
+0xEC7B	U+7187	# <cjk>	[2000]
+0xEC7C	U+7192	# <cjk>	[2000]
+0xEC7D	U+71C1	# <cjk>	[2000]
+0xEC7E	U+71BA	# <cjk>	[2000]
+0xEC80	U+71C4	# <cjk>	[2000]
+0xEC81	U+71FE	# <cjk>	[2000]
+0xEC82	U+7200	# <cjk>	[2000]
+0xEC83	U+7215	# <cjk>	[2000]
+0xEC84	U+7255	# <cjk>	[2000]
+0xEC85	U+7256	# <cjk>	[2000]
+0xEC86	U+3E3F	# <cjk>	[2000]
+0xEC87	U+728D	# <cjk>	[2000]
+0xEC88	U+729B	# <cjk>	[2000]
+0xEC89	U+72BE	# <cjk>	[2000]
+0xEC8A	U+72C0	# <cjk>	[2000]
+0xEC8B	U+72FB	# <cjk>	[2000]
+0xEC8C	U+247F1	# <cjk>	[2000]	[Unicode3.1]
+0xEC8D	U+7327	# <cjk>	[2000]
+0xEC8E	U+7328	# <cjk>	[2000]
+0xEC8F	U+FA16	# CJK COMPATIBILITY IDEOGRAPH-FA16	[2000]
+0xEC90	U+7350	# <cjk>	[2000]
+0xEC91	U+7366	# <cjk>	[2000]
+0xEC92	U+737C	# <cjk>	[2000]
+0xEC93	U+7395	# <cjk>	[2000]
+0xEC94	U+739F	# <cjk>	[2000]
+0xEC95	U+73A0	# <cjk>	[2000]
+0xEC96	U+73A2	# <cjk>	[2000]
+0xEC97	U+73A6	# <cjk>	[2000]
+0xEC98	U+73AB	# <cjk>	[2000]
+0xEC99	U+73C9	# <cjk>	[2000]
+0xEC9A	U+73CF	# <cjk>	[2000]
+0xEC9B	U+73D6	# <cjk>	[2000]
+0xEC9C	U+73D9	# <cjk>	[2000]
+0xEC9D	U+73E3	# <cjk>	[2000]
+0xEC9E	U+73E9	# <cjk>	[2000]
+0xEC9F	U+7407	# <cjk>	[2000]
+0xECA0	U+740A	# <cjk>	[2000]
+0xECA1	U+741A	# <cjk>	[2000]
+0xECA2	U+741B	# <cjk>	[2000]
+0xECA3	U+FA4A	# CJK COMPATIBILITY IDEOGRAPH-FA4A	[2000]	[Unicode3.2]
+0xECA4	U+7426	# <cjk>	[2000]
+0xECA5	U+7428	# <cjk>	[2000]
+0xECA6	U+742A	# <cjk>	[2000]
+0xECA7	U+742B	# <cjk>	[2000]
+0xECA8	U+742C	# <cjk>	[2000]
+0xECA9	U+742E	# <cjk>	[2000]
+0xECAA	U+742F	# <cjk>	[2000]
+0xECAB	U+7430	# <cjk>	[2000]
+0xECAC	U+7444	# <cjk>	[2000]
+0xECAD	U+7446	# <cjk>	[2000]
+0xECAE	U+7447	# <cjk>	[2000]
+0xECAF	U+744B	# <cjk>	[2000]
+0xECB0	U+7457	# <cjk>	[2000]
+0xECB1	U+7462	# <cjk>	[2000]
+0xECB2	U+746B	# <cjk>	[2000]
+0xECB3	U+746D	# <cjk>	[2000]
+0xECB4	U+7486	# <cjk>	[2000]
+0xECB5	U+7487	# <cjk>	[2000]
+0xECB6	U+7489	# <cjk>	[2000]
+0xECB7	U+7498	# <cjk>	[2000]
+0xECB8	U+749C	# <cjk>	[2000]
+0xECB9	U+749F	# <cjk>	[2000]
+0xECBA	U+74A3	# <cjk>	[2000]
+0xECBB	U+7490	# <cjk>	[2000]
+0xECBC	U+74A6	# <cjk>	[2000]
+0xECBD	U+74A8	# <cjk>	[2000]
+0xECBE	U+74A9	# <cjk>	[2000]
+0xECBF	U+74B5	# <cjk>	[2000]
+0xECC0	U+74BF	# <cjk>	[2000]
+0xECC1	U+74C8	# <cjk>	[2000]
+0xECC2	U+74C9	# <cjk>	[2000]
+0xECC3	U+74DA	# <cjk>	[2000]
+0xECC4	U+74FF	# <cjk>	[2000]
+0xECC5	U+7501	# <cjk>	[2000]
+0xECC6	U+7517	# <cjk>	[2000]
+0xECC7	U+752F	# <cjk>	[2000]
+0xECC8	U+756F	# <cjk>	[2000]
+0xECC9	U+7579	# <cjk>	[2000]
+0xECCA	U+7592	# <cjk>	[2000]
+0xECCB	U+3F72	# <cjk>	[2000]
+0xECCC	U+75CE	# <cjk>	[2000]
+0xECCD	U+75E4	# <cjk>	[2000]
+0xECCE	U+7600	# <cjk>	[2000]
+0xECCF	U+7602	# <cjk>	[2000]
+0xECD0	U+7608	# <cjk>	[2000]
+0xECD1	U+7615	# <cjk>	[2000]
+0xECD2	U+7616	# <cjk>	[2000]
+0xECD3	U+7619	# <cjk>	[2000]
+0xECD4	U+761E	# <cjk>	[2000]
+0xECD5	U+762D	# <cjk>	[2000]
+0xECD6	U+7635	# <cjk>	[2000]
+0xECD7	U+7643	# <cjk>	[2000]
+0xECD8	U+764B	# <cjk>	[2000]
+0xECD9	U+7664	# <cjk>	[2000]
+0xECDA	U+7665	# <cjk>	[2000]
+0xECDB	U+766D	# <cjk>	[2000]
+0xECDC	U+766F	# <cjk>	[2000]
+0xECDD	U+7671	# <cjk>	[2000]
+0xECDE	U+7681	# <cjk>	[2000]
+0xECDF	U+769B	# <cjk>	[2000]
+0xECE0	U+769D	# <cjk>	[2000]
+0xECE1	U+769E	# <cjk>	[2000]
+0xECE2	U+76A6	# <cjk>	[2000]
+0xECE3	U+76AA	# <cjk>	[2000]
+0xECE4	U+76B6	# <cjk>	[2000]
+0xECE5	U+76C5	# <cjk>	[2000]
+0xECE6	U+76CC	# <cjk>	[2000]
+0xECE7	U+76CE	# <cjk>	[2000]
+0xECE8	U+76D4	# <cjk>	[2000]
+0xECE9	U+76E6	# <cjk>	[2000]
+0xECEA	U+76F1	# <cjk>	[2000]
+0xECEB	U+76FC	# <cjk>	[2000]
+0xECEC	U+770A	# <cjk>	[2000]
+0xECED	U+7719	# <cjk>	[2000]
+0xECEE	U+7734	# <cjk>	[2000]
+0xECEF	U+7736	# <cjk>	[2000]
+0xECF0	U+7746	# <cjk>	[2000]
+0xECF1	U+774D	# <cjk>	[2000]
+0xECF2	U+774E	# <cjk>	[2000]
+0xECF3	U+775C	# <cjk>	[2000]
+0xECF4	U+775F	# <cjk>	[2000]
+0xECF5	U+7762	# <cjk>	[2000]
+0xECF6	U+777A	# <cjk>	[2000]
+0xECF7	U+7780	# <cjk>	[2000]
+0xECF8	U+7794	# <cjk>	[2000]
+0xECF9	U+77AA	# <cjk>	[2000]
+0xECFA	U+77E0	# <cjk>	[2000]
+0xECFB	U+782D	# <cjk>	[2000]
+0xECFC	U+2548E	# <cjk>	[2000]	[Unicode3.1]
+0xED40	U+7843	# <cjk>	[2000]
+0xED41	U+784E	# <cjk>	[2000]
+0xED42	U+784F	# <cjk>	[2000]
+0xED43	U+7851	# <cjk>	[2000]
+0xED44	U+7868	# <cjk>	[2000]
+0xED45	U+786E	# <cjk>	[2000]
+0xED46	U+FA4B	# CJK COMPATIBILITY IDEOGRAPH-FA4B	[2000]	[Unicode3.2]
+0xED47	U+78B0	# <cjk>	[2000]
+0xED48	U+2550E	# <cjk>	[2000]	[Unicode3.1]
+0xED49	U+78AD	# <cjk>	[2000]
+0xED4A	U+78E4	# <cjk>	[2000]
+0xED4B	U+78F2	# <cjk>	[2000]
+0xED4C	U+7900	# <cjk>	[2000]
+0xED4D	U+78F7	# <cjk>	[2000]
+0xED4E	U+791C	# <cjk>	[2000]
+0xED4F	U+792E	# <cjk>	[2000]
+0xED50	U+7931	# <cjk>	[2000]
+0xED51	U+7934	# <cjk>	[2000]
+0xED52	U+FA4C	# CJK COMPATIBILITY IDEOGRAPH-FA4C	[2000]	[Unicode3.2]
+0xED53	U+FA4D	# CJK COMPATIBILITY IDEOGRAPH-FA4D	[2000]	[Unicode3.2]
+0xED54	U+7945	# <cjk>	[2000]
+0xED55	U+7946	# <cjk>	[2000]
+0xED56	U+FA4E	# CJK COMPATIBILITY IDEOGRAPH-FA4E	[2000]	[Unicode3.2]
+0xED57	U+FA4F	# CJK COMPATIBILITY IDEOGRAPH-FA4F	[2000]	[Unicode3.2]
+0xED58	U+FA50	# CJK COMPATIBILITY IDEOGRAPH-FA50	[2000]	[Unicode3.2]
+0xED59	U+795C	# <cjk>	[2000]
+0xED5A	U+FA51	# CJK COMPATIBILITY IDEOGRAPH-FA51	[2000]	[Unicode3.2]
+0xED5B	U+FA19	# CJK COMPATIBILITY IDEOGRAPH-FA19	[2000]
+0xED5C	U+FA1A	# CJK COMPATIBILITY IDEOGRAPH-FA1A	[2000]
+0xED5D	U+7979	# <cjk>	[2000]
+0xED5E	U+FA52	# CJK COMPATIBILITY IDEOGRAPH-FA52	[2000]	[Unicode3.2]
+0xED5F	U+FA53	# CJK COMPATIBILITY IDEOGRAPH-FA53	[2000]	[Unicode3.2]
+0xED60	U+FA1B	# CJK COMPATIBILITY IDEOGRAPH-FA1B	[2000]
+0xED61	U+7998	# <cjk>	[2000]
+0xED62	U+79B1	# <cjk>	[2000]
+0xED63	U+79B8	# <cjk>	[2000]
+0xED64	U+79C8	# <cjk>	[2000]
+0xED65	U+79CA	# <cjk>	[2000]
+0xED66	U+25771	# <cjk>	[2000]	[Unicode3.1]
+0xED67	U+79D4	# <cjk>	[2000]
+0xED68	U+79DE	# <cjk>	[2000]
+0xED69	U+79EB	# <cjk>	[2000]
+0xED6A	U+79ED	# <cjk>	[2000]
+0xED6B	U+7A03	# <cjk>	[2000]
+0xED6C	U+FA54	# CJK COMPATIBILITY IDEOGRAPH-FA54	[2000]	[Unicode3.2]
+0xED6D	U+7A39	# <cjk>	[2000]
+0xED6E	U+7A5D	# <cjk>	[2000]
+0xED6F	U+7A6D	# <cjk>	[2000]
+0xED70	U+FA55	# CJK COMPATIBILITY IDEOGRAPH-FA55	[2000]	[Unicode3.2]
+0xED71	U+7A85	# <cjk>	[2000]
+0xED72	U+7AA0	# <cjk>	[2000]
+0xED73	U+259C4	# <cjk>	[2000]	[Unicode3.1]
+0xED74	U+7AB3	# <cjk>	[2000]
+0xED75	U+7ABB	# <cjk>	[2000]
+0xED76	U+7ACE	# <cjk>	[2000]
+0xED77	U+7AEB	# <cjk>	[2000]
+0xED78	U+7AFD	# <cjk>	[2000]
+0xED79	U+7B12	# <cjk>	[2000]
+0xED7A	U+7B2D	# <cjk>	[2000]
+0xED7B	U+7B3B	# <cjk>	[2000]
+0xED7C	U+7B47	# <cjk>	[2000]
+0xED7D	U+7B4E	# <cjk>	[2000]
+0xED7E	U+7B60	# <cjk>	[2000]
+0xED80	U+7B6D	# <cjk>	[2000]
+0xED81	U+7B6F	# <cjk>	[2000]
+0xED82	U+7B72	# <cjk>	[2000]
+0xED83	U+7B9E	# <cjk>	[2000]
+0xED84	U+FA56	# CJK COMPATIBILITY IDEOGRAPH-FA56	[2000]	[Unicode3.2]
+0xED85	U+7BD7	# <cjk>	[2000]
+0xED86	U+7BD9	# <cjk>	[2000]
+0xED87	U+7C01	# <cjk>	[2000]
+0xED88	U+7C31	# <cjk>	[2000]
+0xED89	U+7C1E	# <cjk>	[2000]
+0xED8A	U+7C20	# <cjk>	[2000]
+0xED8B	U+7C33	# <cjk>	[2000]
+0xED8C	U+7C36	# <cjk>	[2000]
+0xED8D	U+4264	# <cjk>	[2000]
+0xED8E	U+25DA1	# <cjk>	[2000]	[Unicode3.1]
+0xED8F	U+7C59	# <cjk>	[2000]
+0xED90	U+7C6D	# <cjk>	[2000]
+0xED91	U+7C79	# <cjk>	[2000]
+0xED92	U+7C8F	# <cjk>	[2000]
+0xED93	U+7C94	# <cjk>	[2000]
+0xED94	U+7CA0	# <cjk>	[2000]
+0xED95	U+7CBC	# <cjk>	[2000]
+0xED96	U+7CD5	# <cjk>	[2000]
+0xED97	U+7CD9	# <cjk>	[2000]
+0xED98	U+7CDD	# <cjk>	[2000]
+0xED99	U+7D07	# <cjk>	[2000]
+0xED9A	U+7D08	# <cjk>	[2000]
+0xED9B	U+7D13	# <cjk>	[2000]
+0xED9C	U+7D1D	# <cjk>	[2000]
+0xED9D	U+7D23	# <cjk>	[2000]
+0xED9E	U+7D31	# <cjk>	[2000]
+0xED9F	U+7D41	# <cjk>	[2000]
+0xEDA0	U+7D48	# <cjk>	[2000]
+0xEDA1	U+7D53	# <cjk>	[2000]
+0xEDA2	U+7D5C	# <cjk>	[2000]
+0xEDA3	U+7D7A	# <cjk>	[2000]
+0xEDA4	U+7D83	# <cjk>	[2000]
+0xEDA5	U+7D8B	# <cjk>	[2000]
+0xEDA6	U+7DA0	# <cjk>	[2000]
+0xEDA7	U+7DA6	# <cjk>	[2000]
+0xEDA8	U+7DC2	# <cjk>	[2000]
+0xEDA9	U+7DCC	# <cjk>	[2000]
+0xEDAA	U+7DD6	# <cjk>	[2000]
+0xEDAB	U+7DE3	# <cjk>	[2000]
+0xEDAC	U+FA57	# CJK COMPATIBILITY IDEOGRAPH-FA57	[2000]	[Unicode3.2]
+0xEDAD	U+7E28	# <cjk>	[2000]
+0xEDAE	U+7E08	# <cjk>	[2000]
+0xEDAF	U+7E11	# <cjk>	[2000]
+0xEDB0	U+7E15	# <cjk>	[2000]
+0xEDB1	U+FA59	# CJK COMPATIBILITY IDEOGRAPH-FA59	[2000]	[Unicode3.2]
+0xEDB2	U+7E47	# <cjk>	[2000]
+0xEDB3	U+7E52	# <cjk>	[2000]
+0xEDB4	U+7E61	# <cjk>	[2000]
+0xEDB5	U+7E8A	# <cjk>	[2000]
+0xEDB6	U+7E8D	# <cjk>	[2000]
+0xEDB7	U+7F47	# <cjk>	[2000]
+0xEDB8	U+FA5A	# CJK COMPATIBILITY IDEOGRAPH-FA5A	[2000]	[Unicode3.2]
+0xEDB9	U+7F91	# <cjk>	[2000]
+0xEDBA	U+7F97	# <cjk>	[2000]
+0xEDBB	U+7FBF	# <cjk>	[2000]
+0xEDBC	U+7FCE	# <cjk>	[2000]
+0xEDBD	U+7FDB	# <cjk>	[2000]
+0xEDBE	U+7FDF	# <cjk>	[2000]
+0xEDBF	U+7FEC	# <cjk>	[2000]
+0xEDC0	U+7FEE	# <cjk>	[2000]
+0xEDC1	U+7FFA	# <cjk>	[2000]
+0xEDC2	U+FA5B	# CJK COMPATIBILITY IDEOGRAPH-FA5B	[2000]	[Unicode3.2]
+0xEDC3	U+8014	# <cjk>	[2000]
+0xEDC4	U+8026	# <cjk>	[2000]
+0xEDC5	U+8035	# <cjk>	[2000]
+0xEDC6	U+8037	# <cjk>	[2000]
+0xEDC7	U+803C	# <cjk>	[2000]
+0xEDC8	U+80CA	# <cjk>	[2000]
+0xEDC9	U+80D7	# <cjk>	[2000]
+0xEDCA	U+80E0	# <cjk>	[2000]
+0xEDCB	U+80F3	# <cjk>	[2000]
+0xEDCC	U+8118	# <cjk>	[2000]
+0xEDCD	U+814A	# <cjk>	[2000]
+0xEDCE	U+8160	# <cjk>	[2000]
+0xEDCF	U+8167	# <cjk>	[2000]
+0xEDD0	U+8168	# <cjk>	[2000]
+0xEDD1	U+816D	# <cjk>	[2000]
+0xEDD2	U+81BB	# <cjk>	[2000]
+0xEDD3	U+81CA	# <cjk>	[2000]
+0xEDD4	U+81CF	# <cjk>	[2000]
+0xEDD5	U+81D7	# <cjk>	[2000]
+0xEDD6	U+FA5C	# CJK COMPATIBILITY IDEOGRAPH-FA5C	[2000]	[Unicode3.2]
+0xEDD7	U+4453	# <cjk>	[2000]
+0xEDD8	U+445B	# <cjk>	[2000]
+0xEDD9	U+8260	# <cjk>	[2000]
+0xEDDA	U+8274	# <cjk>	[2000]
+0xEDDB	U+26AFF	# <cjk>	[2000]	[Unicode3.1]
+0xEDDC	U+828E	# <cjk>	[2000]
+0xEDDD	U+82A1	# <cjk>	[2000]
+0xEDDE	U+82A3	# <cjk>	[2000]
+0xEDDF	U+82A4	# <cjk>	[2000]
+0xEDE0	U+82A9	# <cjk>	[2000]
+0xEDE1	U+82AE	# <cjk>	[2000]
+0xEDE2	U+82B7	# <cjk>	[2000]
+0xEDE3	U+82BE	# <cjk>	[2000]
+0xEDE4	U+82BF	# <cjk>	[2000]
+0xEDE5	U+82C6	# <cjk>	[2000]
+0xEDE6	U+82D5	# <cjk>	[2000]
+0xEDE7	U+82FD	# <cjk>	[2000]
+0xEDE8	U+82FE	# <cjk>	[2000]
+0xEDE9	U+8300	# <cjk>	[2000]
+0xEDEA	U+8301	# <cjk>	[2000]
+0xEDEB	U+8362	# <cjk>	[2000]
+0xEDEC	U+8322	# <cjk>	[2000]
+0xEDED	U+832D	# <cjk>	[2000]
+0xEDEE	U+833A	# <cjk>	[2000]
+0xEDEF	U+8343	# <cjk>	[2000]
+0xEDF0	U+8347	# <cjk>	[2000]
+0xEDF1	U+8351	# <cjk>	[2000]
+0xEDF2	U+8355	# <cjk>	[2000]
+0xEDF3	U+837D	# <cjk>	[2000]
+0xEDF4	U+8386	# <cjk>	[2000]
+0xEDF5	U+8392	# <cjk>	[2000]
+0xEDF6	U+8398	# <cjk>	[2000]
+0xEDF7	U+83A7	# <cjk>	[2000]
+0xEDF8	U+83A9	# <cjk>	[2000]
+0xEDF9	U+83BF	# <cjk>	[2000]
+0xEDFA	U+83C0	# <cjk>	[2000]
+0xEDFB	U+83C7	# <cjk>	[2000]
+0xEDFC	U+83CF	# <cjk>	[2000]
+0xEE40	U+83D1	# <cjk>	[2000]
+0xEE41	U+83E1	# <cjk>	[2000]
+0xEE42	U+83EA	# <cjk>	[2000]
+0xEE43	U+8401	# <cjk>	[2000]
+0xEE44	U+8406	# <cjk>	[2000]
+0xEE45	U+840A	# <cjk>	[2000]
+0xEE46	U+FA5F	# CJK COMPATIBILITY IDEOGRAPH-FA5F	[2000]	[Unicode3.2]
+0xEE47	U+8448	# <cjk>	[2000]
+0xEE48	U+845F	# <cjk>	[2000]
+0xEE49	U+8470	# <cjk>	[2000]
+0xEE4A	U+8473	# <cjk>	[2000]
+0xEE4B	U+8485	# <cjk>	[2000]
+0xEE4C	U+849E	# <cjk>	[2000]
+0xEE4D	U+84AF	# <cjk>	[2000]
+0xEE4E	U+84B4	# <cjk>	[2000]
+0xEE4F	U+84BA	# <cjk>	[2000]
+0xEE50	U+84C0	# <cjk>	[2000]
+0xEE51	U+84C2	# <cjk>	[2000]
+0xEE52	U+26E40	# <cjk>	[2000]	[Unicode3.1]
+0xEE53	U+8532	# <cjk>	[2000]
+0xEE54	U+851E	# <cjk>	[2000]
+0xEE55	U+8523	# <cjk>	[2000]
+0xEE56	U+852F	# <cjk>	[2000]
+0xEE57	U+8559	# <cjk>	[2000]
+0xEE58	U+8564	# <cjk>	[2000]
+0xEE59	U+FA1F	# CJK COMPATIBILITY IDEOGRAPH-FA1F 	[2000]
+0xEE5A	U+85AD	# <cjk>	[2000]
+0xEE5B	U+857A	# <cjk>	[2000]
+0xEE5C	U+858C	# <cjk>	[2000]
+0xEE5D	U+858F	# <cjk>	[2000]
+0xEE5E	U+85A2	# <cjk>	[2000]
+0xEE5F	U+85B0	# <cjk>	[2000]
+0xEE60	U+85CB	# <cjk>	[2000]
+0xEE61	U+85CE	# <cjk>	[2000]
+0xEE62	U+85ED	# <cjk>	[2000]
+0xEE63	U+8612	# <cjk>	[2000]
+0xEE64	U+85FF	# <cjk>	[2000]
+0xEE65	U+8604	# <cjk>	[2000]
+0xEE66	U+8605	# <cjk>	[2000]
+0xEE67	U+8610	# <cjk>	[2000]
+0xEE68	U+270F4	# <cjk>	[2000]	[Unicode3.1]
+0xEE69	U+8618	# <cjk>	[2000]
+0xEE6A	U+8629	# <cjk>	[2000]
+0xEE6B	U+8638	# <cjk>	[2000]
+0xEE6C	U+8657	# <cjk>	[2000]
+0xEE6D	U+865B	# <cjk>	[2000]
+0xEE6E	U+F936	# CJK COMPATIBILITY IDEOGRAPH-F936	[2000]
+0xEE6F	U+8662	# <cjk>	[2000]
+0xEE70	U+459D	# <cjk>	[2000]
+0xEE71	U+866C	# <cjk>	[2000]
+0xEE72	U+8675	# <cjk>	[2000]
+0xEE73	U+8698	# <cjk>	[2000]
+0xEE74	U+86B8	# <cjk>	[2000]
+0xEE75	U+86FA	# <cjk>	[2000]
+0xEE76	U+86FC	# <cjk>	[2000]
+0xEE77	U+86FD	# <cjk>	[2000]
+0xEE78	U+870B	# <cjk>	[2000]
+0xEE79	U+8771	# <cjk>	[2000]
+0xEE7A	U+8787	# <cjk>	[2000]
+0xEE7B	U+8788	# <cjk>	[2000]
+0xEE7C	U+87AC	# <cjk>	[2000]
+0xEE7D	U+87AD	# <cjk>	[2000]
+0xEE7E	U+87B5	# <cjk>	[2000]
+0xEE80	U+45EA	# <cjk>	[2000]
+0xEE81	U+87D6	# <cjk>	[2000]
+0xEE82	U+87EC	# <cjk>	[2000]
+0xEE83	U+8806	# <cjk>	[2000]
+0xEE84	U+880A	# <cjk>	[2000]
+0xEE85	U+8810	# <cjk>	[2000]
+0xEE86	U+8814	# <cjk>	[2000]
+0xEE87	U+881F	# <cjk>	[2000]
+0xEE88	U+8898	# <cjk>	[2000]
+0xEE89	U+88AA	# <cjk>	[2000]
+0xEE8A	U+88CA	# <cjk>	[2000]
+0xEE8B	U+88CE	# <cjk>	[2000]
+0xEE8C	U+27684	# <cjk>	[2000]	[Unicode3.1]
+0xEE8D	U+88F5	# <cjk>	[2000]
+0xEE8E	U+891C	# <cjk>	[2000]
+0xEE8F	U+FA60	# CJK COMPATIBILITY IDEOGRAPH-FA60	[2000]	[Unicode3.2]
+0xEE90	U+8918	# <cjk>	[2000]
+0xEE91	U+8919	# <cjk>	[2000]
+0xEE92	U+891A	# <cjk>	[2000]
+0xEE93	U+8927	# <cjk>	[2000]
+0xEE94	U+8930	# <cjk>	[2000]
+0xEE95	U+8932	# <cjk>	[2000]
+0xEE96	U+8939	# <cjk>	[2000]
+0xEE97	U+8940	# <cjk>	[2000]
+0xEE98	U+8994	# <cjk>	[2000]
+0xEE99	U+FA61	# CJK COMPATIBILITY IDEOGRAPH-FA61	[2000]	[Unicode3.2]
+0xEE9A	U+89D4	# <cjk>	[2000]
+0xEE9B	U+89E5	# <cjk>	[2000]
+0xEE9C	U+89F6	# <cjk>	[2000]
+0xEE9D	U+8A12	# <cjk>	[2000]
+0xEE9E	U+8A15	# <cjk>	[2000]
+0xEE9F	U+8A22	# <cjk>	[2000]
+0xEEA0	U+8A37	# <cjk>	[2000]
+0xEEA1	U+8A47	# <cjk>	[2000]
+0xEEA2	U+8A4E	# <cjk>	[2000]
+0xEEA3	U+8A5D	# <cjk>	[2000]
+0xEEA4	U+8A61	# <cjk>	[2000]
+0xEEA5	U+8A75	# <cjk>	[2000]
+0xEEA6	U+8A79	# <cjk>	[2000]
+0xEEA7	U+8AA7	# <cjk>	[2000]
+0xEEA8	U+8AD0	# <cjk>	[2000]
+0xEEA9	U+8ADF	# <cjk>	[2000]
+0xEEAA	U+8AF4	# <cjk>	[2000]
+0xEEAB	U+8AF6	# <cjk>	[2000]
+0xEEAC	U+FA22	# CJK COMPATIBILITY IDEOGRAPH-FA22	[2000]
+0xEEAD	U+FA62	# CJK COMPATIBILITY IDEOGRAPH-FA62	[2000]	[Unicode3.2]
+0xEEAE	U+FA63	# CJK COMPATIBILITY IDEOGRAPH-FA63	[2000]	[Unicode3.2]
+0xEEAF	U+8B46	# <cjk>	[2000]
+0xEEB0	U+8B54	# <cjk>	[2000]
+0xEEB1	U+8B59	# <cjk>	[2000]
+0xEEB2	U+8B69	# <cjk>	[2000]
+0xEEB3	U+8B9D	# <cjk>	[2000]
+0xEEB4	U+8C49	# <cjk>	[2000]
+0xEEB5	U+8C68	# <cjk>	[2000]
+0xEEB6	U+FA64	# CJK COMPATIBILITY IDEOGRAPH-FA64	[2000]	[Unicode3.2]
+0xEEB7	U+8CE1	# <cjk>	[2000]
+0xEEB8	U+8CF4	# <cjk>	[2000]
+0xEEB9	U+8CF8	# <cjk>	[2000]
+0xEEBA	U+8CFE	# <cjk>	[2000]
+0xEEBB	U+FA65	# CJK COMPATIBILITY IDEOGRAPH-FA65	[2000]	[Unicode3.2]
+0xEEBC	U+8D12	# <cjk>	[2000]
+0xEEBD	U+8D1B	# <cjk>	[2000]
+0xEEBE	U+8DAF	# <cjk>	[2000]
+0xEEBF	U+8DCE	# <cjk>	[2000]
+0xEEC0	U+8DD1	# <cjk>	[2000]
+0xEEC1	U+8DD7	# <cjk>	[2000]
+0xEEC2	U+8E20	# <cjk>	[2000]
+0xEEC3	U+8E23	# <cjk>	[2000]
+0xEEC4	U+8E3D	# <cjk>	[2000]
+0xEEC5	U+8E70	# <cjk>	[2000]
+0xEEC6	U+8E7B	# <cjk>	[2000]
+0xEEC7	U+28277	# <cjk>	[2000]	[Unicode3.1]
+0xEEC8	U+8EC0	# <cjk>	[2000]
+0xEEC9	U+4844	# <cjk>	[2000]
+0xEECA	U+8EFA	# <cjk>	[2000]
+0xEECB	U+8F1E	# <cjk>	[2000]
+0xEECC	U+8F2D	# <cjk>	[2000]
+0xEECD	U+8F36	# <cjk>	[2000]
+0xEECE	U+8F54	# <cjk>	[2000]
+0xEECF	U+283CD	# <cjk>	[2000]	[Unicode3.1]
+0xEED0	U+8FA6	# <cjk>	[2000]
+0xEED1	U+8FB5	# <cjk>	[2000]
+0xEED2	U+8FE4	# <cjk>	[2000]
+0xEED3	U+8FE8	# <cjk>	[2000]
+0xEED4	U+8FEE	# <cjk>	[2000]
+0xEED5	U+9008	# <cjk>	[2000]
+0xEED6	U+902D	# <cjk>	[2000]
+0xEED7	U+FA67	# CJK COMPATIBILITY IDEOGRAPH-FA67	[2000]	[Unicode3.2]
+0xEED8	U+9088	# <cjk>	[2000]
+0xEED9	U+9095	# <cjk>	[2000]
+0xEEDA	U+9097	# <cjk>	[2000]
+0xEEDB	U+9099	# <cjk>	[2000]
+0xEEDC	U+909B	# <cjk>	[2000]
+0xEEDD	U+90A2	# <cjk>	[2000]
+0xEEDE	U+90B3	# <cjk>	[2000]
+0xEEDF	U+90BE	# <cjk>	[2000]
+0xEEE0	U+90C4	# <cjk>	[2000]
+0xEEE1	U+90C5	# <cjk>	[2000]
+0xEEE2	U+90C7	# <cjk>	[2000]
+0xEEE3	U+90D7	# <cjk>	[2000]
+0xEEE4	U+90DD	# <cjk>	[2000]
+0xEEE5	U+90DE	# <cjk>	[2000]
+0xEEE6	U+90EF	# <cjk>	[2000]
+0xEEE7	U+90F4	# <cjk>	[2000]
+0xEEE8	U+FA26	# CJK COMPATIBILITY IDEOGRAPH-FA26	[2000]
+0xEEE9	U+9114	# <cjk>	[2000]
+0xEEEA	U+9115	# <cjk>	[2000]
+0xEEEB	U+9116	# <cjk>	[2000]
+0xEEEC	U+9122	# <cjk>	[2000]
+0xEEED	U+9123	# <cjk>	[2000]
+0xEEEE	U+9127	# <cjk>	[2000]
+0xEEEF	U+912F	# <cjk>	[2000]
+0xEEF0	U+9131	# <cjk>	[2000]
+0xEEF1	U+9134	# <cjk>	[2000]
+0xEEF2	U+913D	# <cjk>	[2000]
+0xEEF3	U+9148	# <cjk>	[2000]
+0xEEF4	U+915B	# <cjk>	[2000]
+0xEEF5	U+9183	# <cjk>	[2000]
+0xEEF6	U+919E	# <cjk>	[2000]
+0xEEF7	U+91AC	# <cjk>	[2000]
+0xEEF8	U+91B1	# <cjk>	[2000]
+0xEEF9	U+91BC	# <cjk>	[2000]
+0xEEFA	U+91D7	# <cjk>	[2000]
+0xEEFB	U+91FB	# <cjk>	[2000]
+0xEEFC	U+91E4	# <cjk>	[2000]
+0xEF40	U+91E5	# <cjk>	[2000]
+0xEF41	U+91ED	# <cjk>	[2000]
+0xEF42	U+91F1	# <cjk>	[2000]
+0xEF43	U+9207	# <cjk>	[2000]
+0xEF44	U+9210	# <cjk>	[2000]
+0xEF45	U+9238	# <cjk>	[2000]
+0xEF46	U+9239	# <cjk>	[2000]
+0xEF47	U+923A	# <cjk>	[2000]
+0xEF48	U+923C	# <cjk>	[2000]
+0xEF49	U+9240	# <cjk>	[2000]
+0xEF4A	U+9243	# <cjk>	[2000]
+0xEF4B	U+924F	# <cjk>	[2000]
+0xEF4C	U+9278	# <cjk>	[2000]
+0xEF4D	U+9288	# <cjk>	[2000]
+0xEF4E	U+92C2	# <cjk>	[2000]
+0xEF4F	U+92CB	# <cjk>	[2000]
+0xEF50	U+92CC	# <cjk>	[2000]
+0xEF51	U+92D3	# <cjk>	[2000]
+0xEF52	U+92E0	# <cjk>	[2000]
+0xEF53	U+92FF	# <cjk>	[2000]
+0xEF54	U+9304	# <cjk>	[2000]
+0xEF55	U+931F	# <cjk>	[2000]
+0xEF56	U+9321	# <cjk>	[2000]
+0xEF57	U+9325	# <cjk>	[2000]
+0xEF58	U+9348	# <cjk>	[2000]
+0xEF59	U+9349	# <cjk>	[2000]
+0xEF5A	U+934A	# <cjk>	[2000]
+0xEF5B	U+9364	# <cjk>	[2000]
+0xEF5C	U+9365	# <cjk>	[2000]
+0xEF5D	U+936A	# <cjk>	[2000]
+0xEF5E	U+9370	# <cjk>	[2000]
+0xEF5F	U+939B	# <cjk>	[2000]
+0xEF60	U+93A3	# <cjk>	[2000]
+0xEF61	U+93BA	# <cjk>	[2000]
+0xEF62	U+93C6	# <cjk>	[2000]
+0xEF63	U+93DE	# <cjk>	[2000]
+0xEF64	U+93DF	# <cjk>	[2000]
+0xEF65	U+9404	# <cjk>	[2000]
+0xEF66	U+93FD	# <cjk>	[2000]
+0xEF67	U+9433	# <cjk>	[2000]
+0xEF68	U+944A	# <cjk>	[2000]
+0xEF69	U+9463	# <cjk>	[2000]
+0xEF6A	U+946B	# <cjk>	[2000]
+0xEF6B	U+9471	# <cjk>	[2000]
+0xEF6C	U+9472	# <cjk>	[2000]
+0xEF6D	U+958E	# <cjk>	[2000]
+0xEF6E	U+959F	# <cjk>	[2000]
+0xEF6F	U+95A6	# <cjk>	[2000]
+0xEF70	U+95A9	# <cjk>	[2000]
+0xEF71	U+95AC	# <cjk>	[2000]
+0xEF72	U+95B6	# <cjk>	[2000]
+0xEF73	U+95BD	# <cjk>	[2000]
+0xEF74	U+95CB	# <cjk>	[2000]
+0xEF75	U+95D0	# <cjk>	[2000]
+0xEF76	U+95D3	# <cjk>	[2000]
+0xEF77	U+49B0	# <cjk>	[2000]
+0xEF78	U+95DA	# <cjk>	[2000]
+0xEF79	U+95DE	# <cjk>	[2000]
+0xEF7A	U+9658	# <cjk>	[2000]
+0xEF7B	U+9684	# <cjk>	[2000]
+0xEF7C	U+F9DC	# CJK COMPATIBILITY IDEOGRAPH-F9DC	[2000]
+0xEF7D	U+969D	# <cjk>	[2000]
+0xEF7E	U+96A4	# <cjk>	[2000]
+0xEF80	U+96A5	# <cjk>	[2000]
+0xEF81	U+96D2	# <cjk>	[2000]
+0xEF82	U+96DE	# <cjk>	[2000]
+0xEF83	U+FA68	# CJK COMPATIBILITY IDEOGRAPH-FA68	[2000]	[Unicode3.2]
+0xEF84	U+96E9	# <cjk>	[2000]
+0xEF85	U+96EF	# <cjk>	[2000]
+0xEF86	U+9733	# <cjk>	[2000]
+0xEF87	U+973B	# <cjk>	[2000]
+0xEF88	U+974D	# <cjk>	[2000]
+0xEF89	U+974E	# <cjk>	[2000]
+0xEF8A	U+974F	# <cjk>	[2000]
+0xEF8B	U+975A	# <cjk>	[2000]
+0xEF8C	U+976E	# <cjk>	[2000]
+0xEF8D	U+9773	# <cjk>	[2000]
+0xEF8E	U+9795	# <cjk>	[2000]
+0xEF8F	U+97AE	# <cjk>	[2000]
+0xEF90	U+97BA	# <cjk>	[2000]
+0xEF91	U+97C1	# <cjk>	[2000]
+0xEF92	U+97C9	# <cjk>	[2000]
+0xEF93	U+97DE	# <cjk>	[2000]
+0xEF94	U+97DB	# <cjk>	[2000]
+0xEF95	U+97F4	# <cjk>	[2000]
+0xEF96	U+FA69	# CJK COMPATIBILITY IDEOGRAPH-FA69	[2000]	[Unicode3.2]
+0xEF97	U+980A	# <cjk>	[2000]
+0xEF98	U+981E	# <cjk>	[2000]
+0xEF99	U+982B	# <cjk>	[2000]
+0xEF9A	U+9830	# <cjk>	[2000]
+0xEF9B	U+FA6A	# CJK COMPATIBILITY IDEOGRAPH-FA6A	[2000]	[Unicode3.2]
+0xEF9C	U+9852	# <cjk>	[2000]
+0xEF9D	U+9853	# <cjk>	[2000]
+0xEF9E	U+9856	# <cjk>	[2000]
+0xEF9F	U+9857	# <cjk>	[2000]
+0xEFA0	U+9859	# <cjk>	[2000]
+0xEFA1	U+985A	# <cjk>	[2000]
+0xEFA2	U+F9D0	# CJK COMPATIBILITY IDEOGRAPH-F9D0	[2000]
+0xEFA3	U+9865	# <cjk>	[2000]
+0xEFA4	U+986C	# <cjk>	[2000]
+0xEFA5	U+98BA	# <cjk>	[2000]
+0xEFA6	U+98C8	# <cjk>	[2000]
+0xEFA7	U+98E7	# <cjk>	[2000]
+0xEFA8	U+9958	# <cjk>	[2000]
+0xEFA9	U+999E	# <cjk>	[2000]
+0xEFAA	U+9A02	# <cjk>	[2000]
+0xEFAB	U+9A03	# <cjk>	[2000]
+0xEFAC	U+9A24	# <cjk>	[2000]
+0xEFAD	U+9A2D	# <cjk>	[2000]
+0xEFAE	U+9A2E	# <cjk>	[2000]
+0xEFAF	U+9A38	# <cjk>	[2000]
+0xEFB0	U+9A4A	# <cjk>	[2000]
+0xEFB1	U+9A4E	# <cjk>	[2000]
+0xEFB2	U+9A52	# <cjk>	[2000]
+0xEFB3	U+9AB6	# <cjk>	[2000]
+0xEFB4	U+9AC1	# <cjk>	[2000]
+0xEFB5	U+9AC3	# <cjk>	[2000]
+0xEFB6	U+9ACE	# <cjk>	[2000]
+0xEFB7	U+9AD6	# <cjk>	[2000]
+0xEFB8	U+9AF9	# <cjk>	[2000]
+0xEFB9	U+9B02	# <cjk>	[2000]
+0xEFBA	U+9B08	# <cjk>	[2000]
+0xEFBB	U+9B20	# <cjk>	[2000]
+0xEFBC	U+4C17	# <cjk>	[2000]
+0xEFBD	U+9B2D	# <cjk>	[2000]
+0xEFBE	U+9B5E	# <cjk>	[2000]
+0xEFBF	U+9B79	# <cjk>	[2000]
+0xEFC0	U+9B66	# <cjk>	[2000]
+0xEFC1	U+9B72	# <cjk>	[2000]
+0xEFC2	U+9B75	# <cjk>	[2000]
+0xEFC3	U+9B84	# <cjk>	[2000]
+0xEFC4	U+9B8A	# <cjk>	[2000]
+0xEFC5	U+9B8F	# <cjk>	[2000]
+0xEFC6	U+9B9E	# <cjk>	[2000]
+0xEFC7	U+9BA7	# <cjk>	[2000]
+0xEFC8	U+9BC1	# <cjk>	[2000]
+0xEFC9	U+9BCE	# <cjk>	[2000]
+0xEFCA	U+9BE5	# <cjk>	[2000]
+0xEFCB	U+9BF8	# <cjk>	[2000]
+0xEFCC	U+9BFD	# <cjk>	[2000]
+0xEFCD	U+9C00	# <cjk>	[2000]
+0xEFCE	U+9C23	# <cjk>	[2000]
+0xEFCF	U+9C41	# <cjk>	[2000]
+0xEFD0	U+9C4F	# <cjk>	[2000]
+0xEFD1	U+9C50	# <cjk>	[2000]
+0xEFD2	U+9C53	# <cjk>	[2000]
+0xEFD3	U+9C63	# <cjk>	[2000]
+0xEFD4	U+9C65	# <cjk>	[2000]
+0xEFD5	U+9C77	# <cjk>	[2000]
+0xEFD6	U+9D1D	# <cjk>	[2000]
+0xEFD7	U+9D1E	# <cjk>	[2000]
+0xEFD8	U+9D43	# <cjk>	[2000]
+0xEFD9	U+9D47	# <cjk>	[2000]
+0xEFDA	U+9D52	# <cjk>	[2000]
+0xEFDB	U+9D63	# <cjk>	[2000]
+0xEFDC	U+9D70	# <cjk>	[2000]
+0xEFDD	U+9D7C	# <cjk>	[2000]
+0xEFDE	U+9D8A	# <cjk>	[2000]
+0xEFDF	U+9D96	# <cjk>	[2000]
+0xEFE0	U+9DC0	# <cjk>	[2000]
+0xEFE1	U+9DAC	# <cjk>	[2000]
+0xEFE2	U+9DBC	# <cjk>	[2000]
+0xEFE3	U+9DD7	# <cjk>	[2000]
+0xEFE4	U+2A190	# <cjk>	[2000]	[Unicode3.1]
+0xEFE5	U+9DE7	# <cjk>	[2000]
+0xEFE6	U+9E07	# <cjk>	[2000]
+0xEFE7	U+9E15	# <cjk>	[2000]
+0xEFE8	U+9E7C	# <cjk>	[2000]
+0xEFE9	U+9E9E	# <cjk>	[2000]
+0xEFEA	U+9EA4	# <cjk>	[2000]
+0xEFEB	U+9EAC	# <cjk>	[2000]
+0xEFEC	U+9EAF	# <cjk>	[2000]
+0xEFED	U+9EB4	# <cjk>	[2000]
+0xEFEE	U+9EB5	# <cjk>	[2000]
+0xEFEF	U+9EC3	# <cjk>	[2000]
+0xEFF0	U+9ED1	# <cjk>	[2000]
+0xEFF1	U+9F10	# <cjk>	[2000]
+0xEFF2	U+9F39	# <cjk>	[2000]
+0xEFF3	U+9F57	# <cjk>	[2000]
+0xEFF4	U+9F90	# <cjk>	[2000]
+0xEFF5	U+9F94	# <cjk>	[2000]
+0xEFF6	U+9F97	# <cjk>	[2000]
+0xEFF7	U+9FA2	# <cjk>	[2000]
+0xEFF8	U+59F8	# <cjk>	[2004]
+0xEFF9	U+5C5B	# <cjk>	[2004]
+0xEFFA	U+5E77	# <cjk>	[2004]
+0xEFFB	U+7626	# <cjk>	[2004]
+0xEFFC	U+7E6B	# <cjk>	[2004]
+0xF040	U+20089	# <cjk>	[2000]	[Unicode3.1]
+0xF041	U+4E02	# <cjk>	[2000]
+0xF042	U+4E0F	# <cjk>	[2000]
+0xF043	U+4E12	# <cjk>	[2000]
+0xF044	U+4E29	# <cjk>	[2000]
+0xF045	U+4E2B	# <cjk>	[2000]
+0xF046	U+4E2E	# <cjk>	[2000]
+0xF047	U+4E40	# <cjk>	[2000]
+0xF048	U+4E47	# <cjk>	[2000]
+0xF049	U+4E48	# <cjk>	[2000]
+0xF04A	U+200A2	# <cjk>	[2000]	[Unicode3.1]
+0xF04B	U+4E51	# <cjk>	[2000]
+0xF04C	U+3406	# <cjk>	[2000]
+0xF04D	U+200A4	# <cjk>	[2000]	[Unicode3.1]
+0xF04E	U+4E5A	# <cjk>	[2000]
+0xF04F	U+4E69	# <cjk>	[2000]
+0xF050	U+4E9D	# <cjk>	[2000]
+0xF051	U+342C	# <cjk>	[2000]
+0xF052	U+342E	# <cjk>	[2000]
+0xF053	U+4EB9	# <cjk>	[2000]
+0xF054	U+4EBB	# <cjk>	[2000]
+0xF055	U+201A2	# <cjk>	[2000]	[Unicode3.1]
+0xF056	U+4EBC	# <cjk>	[2000]
+0xF057	U+4EC3	# <cjk>	[2000]
+0xF058	U+4EC8	# <cjk>	[2000]
+0xF059	U+4ED0	# <cjk>	[2000]
+0xF05A	U+4EEB	# <cjk>	[2000]
+0xF05B	U+4EDA	# <cjk>	[2000]
+0xF05C	U+4EF1	# <cjk>	[2000]
+0xF05D	U+4EF5	# <cjk>	[2000]
+0xF05E	U+4F00	# <cjk>	[2000]
+0xF05F	U+4F16	# <cjk>	[2000]
+0xF060	U+4F64	# <cjk>	[2000]
+0xF061	U+4F37	# <cjk>	[2000]
+0xF062	U+4F3E	# <cjk>	[2000]
+0xF063	U+4F54	# <cjk>	[2000]
+0xF064	U+4F58	# <cjk>	[2000]
+0xF065	U+20213	# <cjk>	[2000]	[Unicode3.1]
+0xF066	U+4F77	# <cjk>	[2000]
+0xF067	U+4F78	# <cjk>	[2000]
+0xF068	U+4F7A	# <cjk>	[2000]
+0xF069	U+4F7D	# <cjk>	[2000]
+0xF06A	U+4F82	# <cjk>	[2000]
+0xF06B	U+4F85	# <cjk>	[2000]
+0xF06C	U+4F92	# <cjk>	[2000]
+0xF06D	U+4F9A	# <cjk>	[2000]
+0xF06E	U+4FE6	# <cjk>	[2000]
+0xF06F	U+4FB2	# <cjk>	[2000]
+0xF070	U+4FBE	# <cjk>	[2000]
+0xF071	U+4FC5	# <cjk>	[2000]
+0xF072	U+4FCB	# <cjk>	[2000]
+0xF073	U+4FCF	# <cjk>	[2000]
+0xF074	U+4FD2	# <cjk>	[2000]
+0xF075	U+346A	# <cjk>	[2000]
+0xF076	U+4FF2	# <cjk>	[2000]
+0xF077	U+5000	# <cjk>	[2000]
+0xF078	U+5010	# <cjk>	[2000]
+0xF079	U+5013	# <cjk>	[2000]
+0xF07A	U+501C	# <cjk>	[2000]
+0xF07B	U+501E	# <cjk>	[2000]
+0xF07C	U+5022	# <cjk>	[2000]
+0xF07D	U+3468	# <cjk>	[2000]
+0xF07E	U+5042	# <cjk>	[2000]
+0xF080	U+5046	# <cjk>	[2000]
+0xF081	U+504E	# <cjk>	[2000]
+0xF082	U+5053	# <cjk>	[2000]
+0xF083	U+5057	# <cjk>	[2000]
+0xF084	U+5063	# <cjk>	[2000]
+0xF085	U+5066	# <cjk>	[2000]
+0xF086	U+506A	# <cjk>	[2000]
+0xF087	U+5070	# <cjk>	[2000]
+0xF088	U+50A3	# <cjk>	[2000]
+0xF089	U+5088	# <cjk>	[2000]
+0xF08A	U+5092	# <cjk>	[2000]
+0xF08B	U+5093	# <cjk>	[2000]
+0xF08C	U+5095	# <cjk>	[2000]
+0xF08D	U+5096	# <cjk>	[2000]
+0xF08E	U+509C	# <cjk>	[2000]
+0xF08F	U+50AA	# <cjk>	[2000]
+0xF090	U+2032B	# <cjk>	[2000]	[Unicode3.1]
+0xF091	U+50B1	# <cjk>	[2000]
+0xF092	U+50BA	# <cjk>	[2000]
+0xF093	U+50BB	# <cjk>	[2000]
+0xF094	U+50C4	# <cjk>	[2000]
+0xF095	U+50C7	# <cjk>	[2000]
+0xF096	U+50F3	# <cjk>	[2000]
+0xF097	U+20381	# <cjk>	[2000]	[Unicode3.1]
+0xF098	U+50CE	# <cjk>	[2000]
+0xF099	U+20371	# <cjk>	[2000]	[Unicode3.1]
+0xF09A	U+50D4	# <cjk>	[2000]
+0xF09B	U+50D9	# <cjk>	[2000]
+0xF09C	U+50E1	# <cjk>	[2000]
+0xF09D	U+50E9	# <cjk>	[2000]
+0xF09E	U+3492	# <cjk>	[2000]
+0xF09F	U+5B96	# <cjk>	[2000]
+0xF0A0	U+5BAC	# <cjk>	[2000]
+0xF0A1	U+3761	# <cjk>	[2000]
+0xF0A2	U+5BC0	# <cjk>	[2000]
+0xF0A3	U+3762	# <cjk>	[2000]
+0xF0A4	U+5BCE	# <cjk>	[2000]
+0xF0A5	U+5BD6	# <cjk>	[2000]
+0xF0A6	U+376C	# <cjk>	[2000]
+0xF0A7	U+376B	# <cjk>	[2000]
+0xF0A8	U+5BF1	# <cjk>	[2000]
+0xF0A9	U+5BFD	# <cjk>	[2000]
+0xF0AA	U+3775	# <cjk>	[2000]
+0xF0AB	U+5C03	# <cjk>	[2000]
+0xF0AC	U+5C29	# <cjk>	[2000]
+0xF0AD	U+5C30	# <cjk>	[2000]
+0xF0AE	U+21C56	# <cjk>	[2000]	[Unicode3.1]
+0xF0AF	U+5C5F	# <cjk>	[2000]
+0xF0B0	U+5C63	# <cjk>	[2000]
+0xF0B1	U+5C67	# <cjk>	[2000]
+0xF0B2	U+5C68	# <cjk>	[2000]
+0xF0B3	U+5C69	# <cjk>	[2000]
+0xF0B4	U+5C70	# <cjk>	[2000]
+0xF0B5	U+21D2D	# <cjk>	[2000]	[Unicode3.1]
+0xF0B6	U+21D45	# <cjk>	[2000]	[Unicode3.1]
+0xF0B7	U+5C7C	# <cjk>	[2000]
+0xF0B8	U+21D78	# <cjk>	[2000]	[Unicode3.1]
+0xF0B9	U+21D62	# <cjk>	[2000]	[Unicode3.1]
+0xF0BA	U+5C88	# <cjk>	[2000]
+0xF0BB	U+5C8A	# <cjk>	[2000]
+0xF0BC	U+37C1	# <cjk>	[2000]
+0xF0BD	U+21DA1	# <cjk>	[2000]	[Unicode3.1]
+0xF0BE	U+21D9C	# <cjk>	[2000]	[Unicode3.1]
+0xF0BF	U+5CA0	# <cjk>	[2000]
+0xF0C0	U+5CA2	# <cjk>	[2000]
+0xF0C1	U+5CA6	# <cjk>	[2000]
+0xF0C2	U+5CA7	# <cjk>	[2000]
+0xF0C3	U+21D92	# <cjk>	[2000]	[Unicode3.1]
+0xF0C4	U+5CAD	# <cjk>	[2000]
+0xF0C5	U+5CB5	# <cjk>	[2000]
+0xF0C6	U+21DB7	# <cjk>	[2000]	[Unicode3.1]
+0xF0C7	U+5CC9	# <cjk>	[2000]
+0xF0C8	U+21DE0	# <cjk>	[2000]	[Unicode3.1]
+0xF0C9	U+21E33	# <cjk>	[2000]	[Unicode3.1]
+0xF0CA	U+5D06	# <cjk>	[2000]
+0xF0CB	U+5D10	# <cjk>	[2000]
+0xF0CC	U+5D2B	# <cjk>	[2000]
+0xF0CD	U+5D1D	# <cjk>	[2000]
+0xF0CE	U+5D20	# <cjk>	[2000]
+0xF0CF	U+5D24	# <cjk>	[2000]
+0xF0D0	U+5D26	# <cjk>	[2000]
+0xF0D1	U+5D31	# <cjk>	[2000]
+0xF0D2	U+5D39	# <cjk>	[2000]
+0xF0D3	U+5D42	# <cjk>	[2000]
+0xF0D4	U+37E8	# <cjk>	[2000]
+0xF0D5	U+5D61	# <cjk>	[2000]
+0xF0D6	U+5D6A	# <cjk>	[2000]
+0xF0D7	U+37F4	# <cjk>	[2000]
+0xF0D8	U+5D70	# <cjk>	[2000]
+0xF0D9	U+21F1E	# <cjk>	[2000]	[Unicode3.1]
+0xF0DA	U+37FD	# <cjk>	[2000]
+0xF0DB	U+5D88	# <cjk>	[2000]
+0xF0DC	U+3800	# <cjk>	[2000]
+0xF0DD	U+5D92	# <cjk>	[2000]
+0xF0DE	U+5D94	# <cjk>	[2000]
+0xF0DF	U+5D97	# <cjk>	[2000]
+0xF0E0	U+5D99	# <cjk>	[2000]
+0xF0E1	U+5DB0	# <cjk>	[2000]
+0xF0E2	U+5DB2	# <cjk>	[2000]
+0xF0E3	U+5DB4	# <cjk>	[2000]
+0xF0E4	U+21F76	# <cjk>	[2000]	[Unicode3.1]
+0xF0E5	U+5DB9	# <cjk>	[2000]
+0xF0E6	U+5DD1	# <cjk>	[2000]
+0xF0E7	U+5DD7	# <cjk>	[2000]
+0xF0E8	U+5DD8	# <cjk>	[2000]
+0xF0E9	U+5DE0	# <cjk>	[2000]
+0xF0EA	U+21FFA	# <cjk>	[2000]	[Unicode3.1]
+0xF0EB	U+5DE4	# <cjk>	[2000]
+0xF0EC	U+5DE9	# <cjk>	[2000]
+0xF0ED	U+382F	# <cjk>	[2000]
+0xF0EE	U+5E00	# <cjk>	[2000]
+0xF0EF	U+3836	# <cjk>	[2000]
+0xF0F0	U+5E12	# <cjk>	[2000]
+0xF0F1	U+5E15	# <cjk>	[2000]
+0xF0F2	U+3840	# <cjk>	[2000]
+0xF0F3	U+5E1F	# <cjk>	[2000]
+0xF0F4	U+5E2E	# <cjk>	[2000]
+0xF0F5	U+5E3E	# <cjk>	[2000]
+0xF0F6	U+5E49	# <cjk>	[2000]
+0xF0F7	U+385C	# <cjk>	[2000]
+0xF0F8	U+5E56	# <cjk>	[2000]
+0xF0F9	U+3861	# <cjk>	[2000]
+0xF0FA	U+5E6B	# <cjk>	[2000]
+0xF0FB	U+5E6C	# <cjk>	[2000]
+0xF0FC	U+5E6D	# <cjk>	[2000]
+0xF140	U+5108	# <cjk>	[2000]
+0xF141	U+203F9	# <cjk>	[2000]	[Unicode3.1]
+0xF142	U+5117	# <cjk>	[2000]
+0xF143	U+511B	# <cjk>	[2000]
+0xF144	U+2044A	# <cjk>	[2000]	[Unicode3.1]
+0xF145	U+5160	# <cjk>	[2000]
+0xF146	U+20509	# <cjk>	[2000]	[Unicode3.1]
+0xF147	U+5173	# <cjk>	[2000]
+0xF148	U+5183	# <cjk>	[2000]
+0xF149	U+518B	# <cjk>	[2000]
+0xF14A	U+34BC	# <cjk>	[2000]
+0xF14B	U+5198	# <cjk>	[2000]
+0xF14C	U+51A3	# <cjk>	[2000]
+0xF14D	U+51AD	# <cjk>	[2000]
+0xF14E	U+34C7	# <cjk>	[2000]
+0xF14F	U+51BC	# <cjk>	[2000]
+0xF150	U+205D6	# <cjk>	[2000]	[Unicode3.1]
+0xF151	U+20628	# <cjk>	[2000]	[Unicode3.1]
+0xF152	U+51F3	# <cjk>	[2000]
+0xF153	U+51F4	# <cjk>	[2000]
+0xF154	U+5202	# <cjk>	[2000]
+0xF155	U+5212	# <cjk>	[2000]
+0xF156	U+5216	# <cjk>	[2000]
+0xF157	U+2074F	# <cjk>	[2000]	[Unicode3.1]
+0xF158	U+5255	# <cjk>	[2000]
+0xF159	U+525C	# <cjk>	[2000]
+0xF15A	U+526C	# <cjk>	[2000]
+0xF15B	U+5277	# <cjk>	[2000]
+0xF15C	U+5284	# <cjk>	[2000]
+0xF15D	U+5282	# <cjk>	[2000]
+0xF15E	U+20807	# <cjk>	[2000]	[Unicode3.1]
+0xF15F	U+5298	# <cjk>	[2000]
+0xF160	U+2083A	# <cjk>	[2000]	[Unicode3.1]
+0xF161	U+52A4	# <cjk>	[2000]
+0xF162	U+52A6	# <cjk>	[2000]
+0xF163	U+52AF	# <cjk>	[2000]
+0xF164	U+52BA	# <cjk>	[2000]
+0xF165	U+52BB	# <cjk>	[2000]
+0xF166	U+52CA	# <cjk>	[2000]
+0xF167	U+351F	# <cjk>	[2000]
+0xF168	U+52D1	# <cjk>	[2000]
+0xF169	U+208B9	# <cjk>	[2000]	[Unicode3.1]
+0xF16A	U+52F7	# <cjk>	[2000]
+0xF16B	U+530A	# <cjk>	[2000]
+0xF16C	U+530B	# <cjk>	[2000]
+0xF16D	U+5324	# <cjk>	[2000]
+0xF16E	U+5335	# <cjk>	[2000]
+0xF16F	U+533E	# <cjk>	[2000]
+0xF170	U+5342	# <cjk>	[2000]
+0xF171	U+2097C	# <cjk>	[2000]	[Unicode3.1]
+0xF172	U+2099D	# <cjk>	[2000]	[Unicode3.1]
+0xF173	U+5367	# <cjk>	[2000]
+0xF174	U+536C	# <cjk>	[2000]
+0xF175	U+537A	# <cjk>	[2000]
+0xF176	U+53A4	# <cjk>	[2000]
+0xF177	U+53B4	# <cjk>	[2000]
+0xF178	U+20AD3	# <cjk>	[2000]	[Unicode3.1]
+0xF179	U+53B7	# <cjk>	[2000]
+0xF17A	U+53C0	# <cjk>	[2000]
+0xF17B	U+20B1D	# <cjk>	[2000]	[Unicode3.1]
+0xF17C	U+355D	# <cjk>	[2000]
+0xF17D	U+355E	# <cjk>	[2000]
+0xF17E	U+53D5	# <cjk>	[2000]
+0xF180	U+53DA	# <cjk>	[2000]
+0xF181	U+3563	# <cjk>	[2000]
+0xF182	U+53F4	# <cjk>	[2000]
+0xF183	U+53F5	# <cjk>	[2000]
+0xF184	U+5455	# <cjk>	[2000]
+0xF185	U+5424	# <cjk>	[2000]
+0xF186	U+5428	# <cjk>	[2000]
+0xF187	U+356E	# <cjk>	[2000]
+0xF188	U+5443	# <cjk>	[2000]
+0xF189	U+5462	# <cjk>	[2000]
+0xF18A	U+5466	# <cjk>	[2000]
+0xF18B	U+546C	# <cjk>	[2000]
+0xF18C	U+548A	# <cjk>	[2000]
+0xF18D	U+548D	# <cjk>	[2000]
+0xF18E	U+5495	# <cjk>	[2000]
+0xF18F	U+54A0	# <cjk>	[2000]
+0xF190	U+54A6	# <cjk>	[2000]
+0xF191	U+54AD	# <cjk>	[2000]
+0xF192	U+54AE	# <cjk>	[2000]
+0xF193	U+54B7	# <cjk>	[2000]
+0xF194	U+54BA	# <cjk>	[2000]
+0xF195	U+54BF	# <cjk>	[2000]
+0xF196	U+54C3	# <cjk>	[2000]
+0xF197	U+20D45	# <cjk>	[2000]	[Unicode3.1]
+0xF198	U+54EC	# <cjk>	[2000]
+0xF199	U+54EF	# <cjk>	[2000]
+0xF19A	U+54F1	# <cjk>	[2000]
+0xF19B	U+54F3	# <cjk>	[2000]
+0xF19C	U+5500	# <cjk>	[2000]
+0xF19D	U+5501	# <cjk>	[2000]
+0xF19E	U+5509	# <cjk>	[2000]
+0xF19F	U+553C	# <cjk>	[2000]
+0xF1A0	U+5541	# <cjk>	[2000]
+0xF1A1	U+35A6	# <cjk>	[2000]
+0xF1A2	U+5547	# <cjk>	[2000]
+0xF1A3	U+554A	# <cjk>	[2000]
+0xF1A4	U+35A8	# <cjk>	[2000]
+0xF1A5	U+5560	# <cjk>	[2000]
+0xF1A6	U+5561	# <cjk>	[2000]
+0xF1A7	U+5564	# <cjk>	[2000]
+0xF1A8	U+20DE1	# <cjk>	[2000]	[Unicode3.1]
+0xF1A9	U+557D	# <cjk>	[2000]
+0xF1AA	U+5582	# <cjk>	[2000]
+0xF1AB	U+5588	# <cjk>	[2000]
+0xF1AC	U+5591	# <cjk>	[2000]
+0xF1AD	U+35C5	# <cjk>	[2000]
+0xF1AE	U+55D2	# <cjk>	[2000]
+0xF1AF	U+20E95	# <cjk>	[2000]	[Unicode3.1]
+0xF1B0	U+20E6D	# <cjk>	[2000]	[Unicode3.1]
+0xF1B1	U+55BF	# <cjk>	[2000]
+0xF1B2	U+55C9	# <cjk>	[2000]
+0xF1B3	U+55CC	# <cjk>	[2000]
+0xF1B4	U+55D1	# <cjk>	[2000]
+0xF1B5	U+55DD	# <cjk>	[2000]
+0xF1B6	U+35DA	# <cjk>	[2000]
+0xF1B7	U+55E2	# <cjk>	[2000]
+0xF1B8	U+20E64	# <cjk>	[2000]	[Unicode3.1]
+0xF1B9	U+55E9	# <cjk>	[2000]
+0xF1BA	U+5628	# <cjk>	[2000]
+0xF1BB	U+20F5F	# <cjk>	[2000]	[Unicode3.1]
+0xF1BC	U+5607	# <cjk>	[2000]
+0xF1BD	U+5610	# <cjk>	[2000]
+0xF1BE	U+5630	# <cjk>	[2000]
+0xF1BF	U+5637	# <cjk>	[2000]
+0xF1C0	U+35F4	# <cjk>	[2000]
+0xF1C1	U+563D	# <cjk>	[2000]
+0xF1C2	U+563F	# <cjk>	[2000]
+0xF1C3	U+5640	# <cjk>	[2000]
+0xF1C4	U+5647	# <cjk>	[2000]
+0xF1C5	U+565E	# <cjk>	[2000]
+0xF1C6	U+5660	# <cjk>	[2000]
+0xF1C7	U+566D	# <cjk>	[2000]
+0xF1C8	U+3605	# <cjk>	[2000]
+0xF1C9	U+5688	# <cjk>	[2000]
+0xF1CA	U+568C	# <cjk>	[2000]
+0xF1CB	U+5695	# <cjk>	[2000]
+0xF1CC	U+569A	# <cjk>	[2000]
+0xF1CD	U+569D	# <cjk>	[2000]
+0xF1CE	U+56A8	# <cjk>	[2000]
+0xF1CF	U+56AD	# <cjk>	[2000]
+0xF1D0	U+56B2	# <cjk>	[2000]
+0xF1D1	U+56C5	# <cjk>	[2000]
+0xF1D2	U+56CD	# <cjk>	[2000]
+0xF1D3	U+56DF	# <cjk>	[2000]
+0xF1D4	U+56E8	# <cjk>	[2000]
+0xF1D5	U+56F6	# <cjk>	[2000]
+0xF1D6	U+56F7	# <cjk>	[2000]
+0xF1D7	U+21201	# <cjk>	[2000]	[Unicode3.1]
+0xF1D8	U+5715	# <cjk>	[2000]
+0xF1D9	U+5723	# <cjk>	[2000]
+0xF1DA	U+21255	# <cjk>	[2000]	[Unicode3.1]
+0xF1DB	U+5729	# <cjk>	[2000]
+0xF1DC	U+2127B	# <cjk>	[2000]	[Unicode3.1]
+0xF1DD	U+5745	# <cjk>	[2000]
+0xF1DE	U+5746	# <cjk>	[2000]
+0xF1DF	U+574C	# <cjk>	[2000]
+0xF1E0	U+574D	# <cjk>	[2000]
+0xF1E1	U+21274	# <cjk>	[2000]	[Unicode3.1]
+0xF1E2	U+5768	# <cjk>	[2000]
+0xF1E3	U+576F	# <cjk>	[2000]
+0xF1E4	U+5773	# <cjk>	[2000]
+0xF1E5	U+5774	# <cjk>	[2000]
+0xF1E6	U+5775	# <cjk>	[2000]
+0xF1E7	U+577B	# <cjk>	[2000]
+0xF1E8	U+212E4	# <cjk>	[2000]	[Unicode3.1]
+0xF1E9	U+212D7	# <cjk>	[2000]	[Unicode3.1]
+0xF1EA	U+57AC	# <cjk>	[2000]
+0xF1EB	U+579A	# <cjk>	[2000]
+0xF1EC	U+579D	# <cjk>	[2000]
+0xF1ED	U+579E	# <cjk>	[2000]
+0xF1EE	U+57A8	# <cjk>	[2000]
+0xF1EF	U+57D7	# <cjk>	[2000]
+0xF1F0	U+212FD	# <cjk>	[2000]	[Unicode3.1]
+0xF1F1	U+57CC	# <cjk>	[2000]
+0xF1F2	U+21336	# <cjk>	[2000]	[Unicode3.1]
+0xF1F3	U+21344	# <cjk>	[2000]	[Unicode3.1]
+0xF1F4	U+57DE	# <cjk>	[2000]
+0xF1F5	U+57E6	# <cjk>	[2000]
+0xF1F6	U+57F0	# <cjk>	[2000]
+0xF1F7	U+364A	# <cjk>	[2000]
+0xF1F8	U+57F8	# <cjk>	[2000]
+0xF1F9	U+57FB	# <cjk>	[2000]
+0xF1FA	U+57FD	# <cjk>	[2000]
+0xF1FB	U+5804	# <cjk>	[2000]
+0xF1FC	U+581E	# <cjk>	[2000]
+0xF240	U+5820	# <cjk>	[2000]
+0xF241	U+5827	# <cjk>	[2000]
+0xF242	U+5832	# <cjk>	[2000]
+0xF243	U+5839	# <cjk>	[2000]
+0xF244	U+213C4	# <cjk>	[2000]	[Unicode3.1]
+0xF245	U+5849	# <cjk>	[2000]
+0xF246	U+584C	# <cjk>	[2000]
+0xF247	U+5867	# <cjk>	[2000]
+0xF248	U+588A	# <cjk>	[2000]
+0xF249	U+588B	# <cjk>	[2000]
+0xF24A	U+588D	# <cjk>	[2000]
+0xF24B	U+588F	# <cjk>	[2000]
+0xF24C	U+5890	# <cjk>	[2000]
+0xF24D	U+5894	# <cjk>	[2000]
+0xF24E	U+589D	# <cjk>	[2000]
+0xF24F	U+58AA	# <cjk>	[2000]
+0xF250	U+58B1	# <cjk>	[2000]
+0xF251	U+2146D	# <cjk>	[2000]	[Unicode3.1]
+0xF252	U+58C3	# <cjk>	[2000]
+0xF253	U+58CD	# <cjk>	[2000]
+0xF254	U+58E2	# <cjk>	[2000]
+0xF255	U+58F3	# <cjk>	[2000]
+0xF256	U+58F4	# <cjk>	[2000]
+0xF257	U+5905	# <cjk>	[2000]
+0xF258	U+5906	# <cjk>	[2000]
+0xF259	U+590B	# <cjk>	[2000]
+0xF25A	U+590D	# <cjk>	[2000]
+0xF25B	U+5914	# <cjk>	[2000]
+0xF25C	U+5924	# <cjk>	[2000]
+0xF25D	U+215D7	# <cjk>	[2000]	[Unicode3.1]
+0xF25E	U+3691	# <cjk>	[2000]
+0xF25F	U+593D	# <cjk>	[2000]
+0xF260	U+3699	# <cjk>	[2000]
+0xF261	U+5946	# <cjk>	[2000]
+0xF262	U+3696	# <cjk>	[2000]
+0xF263	U+26C29	# <cjk>	[2000]	[Unicode3.1]
+0xF264	U+595B	# <cjk>	[2000]
+0xF265	U+595F	# <cjk>	[2000]
+0xF266	U+21647	# <cjk>	[2000]	[Unicode3.1]
+0xF267	U+5975	# <cjk>	[2000]
+0xF268	U+5976	# <cjk>	[2000]
+0xF269	U+597C	# <cjk>	[2000]
+0xF26A	U+599F	# <cjk>	[2000]
+0xF26B	U+59AE	# <cjk>	[2000]
+0xF26C	U+59BC	# <cjk>	[2000]
+0xF26D	U+59C8	# <cjk>	[2000]
+0xF26E	U+59CD	# <cjk>	[2000]
+0xF26F	U+59DE	# <cjk>	[2000]
+0xF270	U+59E3	# <cjk>	[2000]
+0xF271	U+59E4	# <cjk>	[2000]
+0xF272	U+59E7	# <cjk>	[2000]
+0xF273	U+59EE	# <cjk>	[2000]
+0xF274	U+21706	# <cjk>	[2000]	[Unicode3.1]
+0xF275	U+21742	# <cjk>	[2000]	[Unicode3.1]
+0xF276	U+36CF	# <cjk>	[2000]
+0xF277	U+5A0C	# <cjk>	[2000]
+0xF278	U+5A0D	# <cjk>	[2000]
+0xF279	U+5A17	# <cjk>	[2000]
+0xF27A	U+5A27	# <cjk>	[2000]
+0xF27B	U+5A2D	# <cjk>	[2000]
+0xF27C	U+5A55	# <cjk>	[2000]
+0xF27D	U+5A65	# <cjk>	[2000]
+0xF27E	U+5A7A	# <cjk>	[2000]
+0xF280	U+5A8B	# <cjk>	[2000]
+0xF281	U+5A9C	# <cjk>	[2000]
+0xF282	U+5A9F	# <cjk>	[2000]
+0xF283	U+5AA0	# <cjk>	[2000]
+0xF284	U+5AA2	# <cjk>	[2000]
+0xF285	U+5AB1	# <cjk>	[2000]
+0xF286	U+5AB3	# <cjk>	[2000]
+0xF287	U+5AB5	# <cjk>	[2000]
+0xF288	U+5ABA	# <cjk>	[2000]
+0xF289	U+5ABF	# <cjk>	[2000]
+0xF28A	U+5ADA	# <cjk>	[2000]
+0xF28B	U+5ADC	# <cjk>	[2000]
+0xF28C	U+5AE0	# <cjk>	[2000]
+0xF28D	U+5AE5	# <cjk>	[2000]
+0xF28E	U+5AF0	# <cjk>	[2000]
+0xF28F	U+5AEE	# <cjk>	[2000]
+0xF290	U+5AF5	# <cjk>	[2000]
+0xF291	U+5B00	# <cjk>	[2000]
+0xF292	U+5B08	# <cjk>	[2000]
+0xF293	U+5B17	# <cjk>	[2000]
+0xF294	U+5B34	# <cjk>	[2000]
+0xF295	U+5B2D	# <cjk>	[2000]
+0xF296	U+5B4C	# <cjk>	[2000]
+0xF297	U+5B52	# <cjk>	[2000]
+0xF298	U+5B68	# <cjk>	[2000]
+0xF299	U+5B6F	# <cjk>	[2000]
+0xF29A	U+5B7C	# <cjk>	[2000]
+0xF29B	U+5B7F	# <cjk>	[2000]
+0xF29C	U+5B81	# <cjk>	[2000]
+0xF29D	U+5B84	# <cjk>	[2000]
+0xF29E	U+219C3	# <cjk>	[2000]	[Unicode3.1]
+0xF29F	U+5E6E	# <cjk>	[2000]
+0xF2A0	U+2217B	# <cjk>	[2000]	[Unicode3.1]
+0xF2A1	U+5EA5	# <cjk>	[2000]
+0xF2A2	U+5EAA	# <cjk>	[2000]
+0xF2A3	U+5EAC	# <cjk>	[2000]
+0xF2A4	U+5EB9	# <cjk>	[2000]
+0xF2A5	U+5EBF	# <cjk>	[2000]
+0xF2A6	U+5EC6	# <cjk>	[2000]
+0xF2A7	U+5ED2	# <cjk>	[2000]
+0xF2A8	U+5ED9	# <cjk>	[2000]
+0xF2A9	U+2231E	# <cjk>	[2000]	[Unicode3.1]
+0xF2AA	U+5EFD	# <cjk>	[2000]
+0xF2AB	U+5F08	# <cjk>	[2000]
+0xF2AC	U+5F0E	# <cjk>	[2000]
+0xF2AD	U+5F1C	# <cjk>	[2000]
+0xF2AE	U+223AD	# <cjk>	[2000]	[Unicode3.1]
+0xF2AF	U+5F1E	# <cjk>	[2000]
+0xF2B0	U+5F47	# <cjk>	[2000]
+0xF2B1	U+5F63	# <cjk>	[2000]
+0xF2B2	U+5F72	# <cjk>	[2000]
+0xF2B3	U+5F7E	# <cjk>	[2000]
+0xF2B4	U+5F8F	# <cjk>	[2000]
+0xF2B5	U+5FA2	# <cjk>	[2000]
+0xF2B6	U+5FA4	# <cjk>	[2000]
+0xF2B7	U+5FB8	# <cjk>	[2000]
+0xF2B8	U+5FC4	# <cjk>	[2000]
+0xF2B9	U+38FA	# <cjk>	[2000]
+0xF2BA	U+5FC7	# <cjk>	[2000]
+0xF2BB	U+5FCB	# <cjk>	[2000]
+0xF2BC	U+5FD2	# <cjk>	[2000]
+0xF2BD	U+5FD3	# <cjk>	[2000]
+0xF2BE	U+5FD4	# <cjk>	[2000]
+0xF2BF	U+5FE2	# <cjk>	[2000]
+0xF2C0	U+5FEE	# <cjk>	[2000]
+0xF2C1	U+5FEF	# <cjk>	[2000]
+0xF2C2	U+5FF3	# <cjk>	[2000]
+0xF2C3	U+5FFC	# <cjk>	[2000]
+0xF2C4	U+3917	# <cjk>	[2000]
+0xF2C5	U+6017	# <cjk>	[2000]
+0xF2C6	U+6022	# <cjk>	[2000]
+0xF2C7	U+6024	# <cjk>	[2000]
+0xF2C8	U+391A	# <cjk>	[2000]
+0xF2C9	U+604C	# <cjk>	[2000]
+0xF2CA	U+607F	# <cjk>	[2000]
+0xF2CB	U+608A	# <cjk>	[2000]
+0xF2CC	U+6095	# <cjk>	[2000]
+0xF2CD	U+60A8	# <cjk>	[2000]
+0xF2CE	U+226F3	# <cjk>	[2000]	[Unicode3.1]
+0xF2CF	U+60B0	# <cjk>	[2000]
+0xF2D0	U+60B1	# <cjk>	[2000]
+0xF2D1	U+60BE	# <cjk>	[2000]
+0xF2D2	U+60C8	# <cjk>	[2000]
+0xF2D3	U+60D9	# <cjk>	[2000]
+0xF2D4	U+60DB	# <cjk>	[2000]
+0xF2D5	U+60EE	# <cjk>	[2000]
+0xF2D6	U+60F2	# <cjk>	[2000]
+0xF2D7	U+60F5	# <cjk>	[2000]
+0xF2D8	U+6110	# <cjk>	[2000]
+0xF2D9	U+6112	# <cjk>	[2000]
+0xF2DA	U+6113	# <cjk>	[2000]
+0xF2DB	U+6119	# <cjk>	[2000]
+0xF2DC	U+611E	# <cjk>	[2000]
+0xF2DD	U+613A	# <cjk>	[2000]
+0xF2DE	U+396F	# <cjk>	[2000]
+0xF2DF	U+6141	# <cjk>	[2000]
+0xF2E0	U+6146	# <cjk>	[2000]
+0xF2E1	U+6160	# <cjk>	[2000]
+0xF2E2	U+617C	# <cjk>	[2000]
+0xF2E3	U+2285B	# <cjk>	[2000]	[Unicode3.1]
+0xF2E4	U+6192	# <cjk>	[2000]
+0xF2E5	U+6193	# <cjk>	[2000]
+0xF2E6	U+6197	# <cjk>	[2000]
+0xF2E7	U+6198	# <cjk>	[2000]
+0xF2E8	U+61A5	# <cjk>	[2000]
+0xF2E9	U+61A8	# <cjk>	[2000]
+0xF2EA	U+61AD	# <cjk>	[2000]
+0xF2EB	U+228AB	# <cjk>	[2000]	[Unicode3.1]
+0xF2EC	U+61D5	# <cjk>	[2000]
+0xF2ED	U+61DD	# <cjk>	[2000]
+0xF2EE	U+61DF	# <cjk>	[2000]
+0xF2EF	U+61F5	# <cjk>	[2000]
+0xF2F0	U+2298F	# <cjk>	[2000]	[Unicode3.1]
+0xF2F1	U+6215	# <cjk>	[2000]
+0xF2F2	U+6223	# <cjk>	[2000]
+0xF2F3	U+6229	# <cjk>	[2000]
+0xF2F4	U+6246	# <cjk>	[2000]
+0xF2F5	U+624C	# <cjk>	[2000]
+0xF2F6	U+6251	# <cjk>	[2000]
+0xF2F7	U+6252	# <cjk>	[2000]
+0xF2F8	U+6261	# <cjk>	[2000]
+0xF2F9	U+6264	# <cjk>	[2000]
+0xF2FA	U+627B	# <cjk>	[2000]
+0xF2FB	U+626D	# <cjk>	[2000]
+0xF2FC	U+6273	# <cjk>	[2000]
+0xF340	U+6299	# <cjk>	[2000]
+0xF341	U+62A6	# <cjk>	[2000]
+0xF342	U+62D5	# <cjk>	[2000]
+0xF343	U+22AB8	# <cjk>	[2000]	[Unicode3.1]
+0xF344	U+62FD	# <cjk>	[2000]
+0xF345	U+6303	# <cjk>	[2000]
+0xF346	U+630D	# <cjk>	[2000]
+0xF347	U+6310	# <cjk>	[2000]
+0xF348	U+22B4F	# <cjk>	[2000]	[Unicode3.1]
+0xF349	U+22B50	# <cjk>	[2000]	[Unicode3.1]
+0xF34A	U+6332	# <cjk>	[2000]
+0xF34B	U+6335	# <cjk>	[2000]
+0xF34C	U+633B	# <cjk>	[2000]
+0xF34D	U+633C	# <cjk>	[2000]
+0xF34E	U+6341	# <cjk>	[2000]
+0xF34F	U+6344	# <cjk>	[2000]
+0xF350	U+634E	# <cjk>	[2000]
+0xF351	U+22B46	# <cjk>	[2000]	[Unicode3.1]
+0xF352	U+6359	# <cjk>	[2000]
+0xF353	U+22C1D	# <cjk>	[2000]	[Unicode3.1]
+0xF354	U+22BA6	# <cjk>	[2000]	[Unicode3.1]
+0xF355	U+636C	# <cjk>	[2000]
+0xF356	U+6384	# <cjk>	[2000]
+0xF357	U+6399	# <cjk>	[2000]
+0xF358	U+22C24	# <cjk>	[2000]	[Unicode3.1]
+0xF359	U+6394	# <cjk>	[2000]
+0xF35A	U+63BD	# <cjk>	[2000]
+0xF35B	U+63F7	# <cjk>	[2000]
+0xF35C	U+63D4	# <cjk>	[2000]
+0xF35D	U+63D5	# <cjk>	[2000]
+0xF35E	U+63DC	# <cjk>	[2000]
+0xF35F	U+63E0	# <cjk>	[2000]
+0xF360	U+63EB	# <cjk>	[2000]
+0xF361	U+63EC	# <cjk>	[2000]
+0xF362	U+63F2	# <cjk>	[2000]
+0xF363	U+6409	# <cjk>	[2000]
+0xF364	U+641E	# <cjk>	[2000]
+0xF365	U+6425	# <cjk>	[2000]
+0xF366	U+6429	# <cjk>	[2000]
+0xF367	U+642F	# <cjk>	[2000]
+0xF368	U+645A	# <cjk>	[2000]
+0xF369	U+645B	# <cjk>	[2000]
+0xF36A	U+645D	# <cjk>	[2000]
+0xF36B	U+6473	# <cjk>	[2000]
+0xF36C	U+647D	# <cjk>	[2000]
+0xF36D	U+6487	# <cjk>	[2000]
+0xF36E	U+6491	# <cjk>	[2000]
+0xF36F	U+649D	# <cjk>	[2000]
+0xF370	U+649F	# <cjk>	[2000]
+0xF371	U+64CB	# <cjk>	[2000]
+0xF372	U+64CC	# <cjk>	[2000]
+0xF373	U+64D5	# <cjk>	[2000]
+0xF374	U+64D7	# <cjk>	[2000]
+0xF375	U+22DE1	# <cjk>	[2000]	[Unicode3.1]
+0xF376	U+64E4	# <cjk>	[2000]
+0xF377	U+64E5	# <cjk>	[2000]
+0xF378	U+64FF	# <cjk>	[2000]
+0xF379	U+6504	# <cjk>	[2000]
+0xF37A	U+3A6E	# <cjk>	[2000]
+0xF37B	U+650F	# <cjk>	[2000]
+0xF37C	U+6514	# <cjk>	[2000]
+0xF37D	U+6516	# <cjk>	[2000]
+0xF37E	U+3A73	# <cjk>	[2000]
+0xF380	U+651E	# <cjk>	[2000]
+0xF381	U+6532	# <cjk>	[2000]
+0xF382	U+6544	# <cjk>	[2000]
+0xF383	U+6554	# <cjk>	[2000]
+0xF384	U+656B	# <cjk>	[2000]
+0xF385	U+657A	# <cjk>	[2000]
+0xF386	U+6581	# <cjk>	[2000]
+0xF387	U+6584	# <cjk>	[2000]
+0xF388	U+6585	# <cjk>	[2000]
+0xF389	U+658A	# <cjk>	[2000]
+0xF38A	U+65B2	# <cjk>	[2000]
+0xF38B	U+65B5	# <cjk>	[2000]
+0xF38C	U+65B8	# <cjk>	[2000]
+0xF38D	U+65BF	# <cjk>	[2000]
+0xF38E	U+65C2	# <cjk>	[2000]
+0xF38F	U+65C9	# <cjk>	[2000]
+0xF390	U+65D4	# <cjk>	[2000]
+0xF391	U+3AD6	# <cjk>	[2000]
+0xF392	U+65F2	# <cjk>	[2000]
+0xF393	U+65F9	# <cjk>	[2000]
+0xF394	U+65FC	# <cjk>	[2000]
+0xF395	U+6604	# <cjk>	[2000]
+0xF396	U+6608	# <cjk>	[2000]
+0xF397	U+6621	# <cjk>	[2000]
+0xF398	U+662A	# <cjk>	[2000]
+0xF399	U+6645	# <cjk>	[2000]
+0xF39A	U+6651	# <cjk>	[2000]
+0xF39B	U+664E	# <cjk>	[2000]
+0xF39C	U+3AEA	# <cjk>	[2000]
+0xF39D	U+231C3	# <cjk>	[2000]	[Unicode3.1]
+0xF39E	U+6657	# <cjk>	[2000]
+0xF39F	U+665B	# <cjk>	[2000]
+0xF3A0	U+6663	# <cjk>	[2000]
+0xF3A1	U+231F5	# <cjk>	[2000]	[Unicode3.1]
+0xF3A2	U+231B6	# <cjk>	[2000]	[Unicode3.1]
+0xF3A3	U+666A	# <cjk>	[2000]
+0xF3A4	U+666B	# <cjk>	[2000]
+0xF3A5	U+666C	# <cjk>	[2000]
+0xF3A6	U+666D	# <cjk>	[2000]
+0xF3A7	U+667B	# <cjk>	[2000]
+0xF3A8	U+6680	# <cjk>	[2000]
+0xF3A9	U+6690	# <cjk>	[2000]
+0xF3AA	U+6692	# <cjk>	[2000]
+0xF3AB	U+6699	# <cjk>	[2000]
+0xF3AC	U+3B0E	# <cjk>	[2000]
+0xF3AD	U+66AD	# <cjk>	[2000]
+0xF3AE	U+66B1	# <cjk>	[2000]
+0xF3AF	U+66B5	# <cjk>	[2000]
+0xF3B0	U+3B1A	# <cjk>	[2000]
+0xF3B1	U+66BF	# <cjk>	[2000]
+0xF3B2	U+3B1C	# <cjk>	[2000]
+0xF3B3	U+66EC	# <cjk>	[2000]
+0xF3B4	U+3AD7	# <cjk>	[2000]
+0xF3B5	U+6701	# <cjk>	[2000]
+0xF3B6	U+6705	# <cjk>	[2000]
+0xF3B7	U+6712	# <cjk>	[2000]
+0xF3B8	U+23372	# <cjk>	[2000]	[Unicode3.1]
+0xF3B9	U+6719	# <cjk>	[2000]
+0xF3BA	U+233D3	# <cjk>	[2000]	[Unicode3.1]
+0xF3BB	U+233D2	# <cjk>	[2000]	[Unicode3.1]
+0xF3BC	U+674C	# <cjk>	[2000]
+0xF3BD	U+674D	# <cjk>	[2000]
+0xF3BE	U+6754	# <cjk>	[2000]
+0xF3BF	U+675D	# <cjk>	[2000]
+0xF3C0	U+233D0	# <cjk>	[2000]	[Unicode3.1]
+0xF3C1	U+233E4	# <cjk>	[2000]	[Unicode3.1]
+0xF3C2	U+233D5	# <cjk>	[2000]	[Unicode3.1]
+0xF3C3	U+6774	# <cjk>	[2000]
+0xF3C4	U+6776	# <cjk>	[2000]
+0xF3C5	U+233DA	# <cjk>	[2000]	[Unicode3.1]
+0xF3C6	U+6792	# <cjk>	[2000]
+0xF3C7	U+233DF	# <cjk>	[2000]	[Unicode3.1]
+0xF3C8	U+8363	# <cjk>	[2000]
+0xF3C9	U+6810	# <cjk>	[2000]
+0xF3CA	U+67B0	# <cjk>	[2000]
+0xF3CB	U+67B2	# <cjk>	[2000]
+0xF3CC	U+67C3	# <cjk>	[2000]
+0xF3CD	U+67C8	# <cjk>	[2000]
+0xF3CE	U+67D2	# <cjk>	[2000]
+0xF3CF	U+67D9	# <cjk>	[2000]
+0xF3D0	U+67DB	# <cjk>	[2000]
+0xF3D1	U+67F0	# <cjk>	[2000]
+0xF3D2	U+67F7	# <cjk>	[2000]
+0xF3D3	U+2344A	# <cjk>	[2000]	[Unicode3.1]
+0xF3D4	U+23451	# <cjk>	[2000]	[Unicode3.1]
+0xF3D5	U+2344B	# <cjk>	[2000]	[Unicode3.1]
+0xF3D6	U+6818	# <cjk>	[2000]
+0xF3D7	U+681F	# <cjk>	[2000]
+0xF3D8	U+682D	# <cjk>	[2000]
+0xF3D9	U+23465	# <cjk>	[2000]	[Unicode3.1]
+0xF3DA	U+6833	# <cjk>	[2000]
+0xF3DB	U+683B	# <cjk>	[2000]
+0xF3DC	U+683E	# <cjk>	[2000]
+0xF3DD	U+6844	# <cjk>	[2000]
+0xF3DE	U+6845	# <cjk>	[2000]
+0xF3DF	U+6849	# <cjk>	[2000]
+0xF3E0	U+684C	# <cjk>	[2000]
+0xF3E1	U+6855	# <cjk>	[2000]
+0xF3E2	U+6857	# <cjk>	[2000]
+0xF3E3	U+3B77	# <cjk>	[2000]
+0xF3E4	U+686B	# <cjk>	[2000]
+0xF3E5	U+686E	# <cjk>	[2000]
+0xF3E6	U+687A	# <cjk>	[2000]
+0xF3E7	U+687C	# <cjk>	[2000]
+0xF3E8	U+6882	# <cjk>	[2000]
+0xF3E9	U+6890	# <cjk>	[2000]
+0xF3EA	U+6896	# <cjk>	[2000]
+0xF3EB	U+3B6D	# <cjk>	[2000]
+0xF3EC	U+6898	# <cjk>	[2000]
+0xF3ED	U+6899	# <cjk>	[2000]
+0xF3EE	U+689A	# <cjk>	[2000]
+0xF3EF	U+689C	# <cjk>	[2000]
+0xF3F0	U+68AA	# <cjk>	[2000]
+0xF3F1	U+68AB	# <cjk>	[2000]
+0xF3F2	U+68B4	# <cjk>	[2000]
+0xF3F3	U+68BB	# <cjk>	[2000]
+0xF3F4	U+68FB	# <cjk>	[2000]
+0xF3F5	U+234E4	# <cjk>	[2000]	[Unicode3.1]
+0xF3F6	U+2355A	# <cjk>	[2000]	[Unicode3.1]
+0xF3F7	U+FA13	# CJK COMPATIBILITY IDEOGRAPH-FA13	[2000]
+0xF3F8	U+68C3	# <cjk>	[2000]
+0xF3F9	U+68C5	# <cjk>	[2000]
+0xF3FA	U+68CC	# <cjk>	[2000]
+0xF3FB	U+68CF	# <cjk>	[2000]
+0xF3FC	U+68D6	# <cjk>	[2000]
+0xF440	U+68D9	# <cjk>	[2000]
+0xF441	U+68E4	# <cjk>	[2000]
+0xF442	U+68E5	# <cjk>	[2000]
+0xF443	U+68EC	# <cjk>	[2000]
+0xF444	U+68F7	# <cjk>	[2000]
+0xF445	U+6903	# <cjk>	[2000]
+0xF446	U+6907	# <cjk>	[2000]
+0xF447	U+3B87	# <cjk>	[2000]
+0xF448	U+3B88	# <cjk>	[2000]
+0xF449	U+23594	# <cjk>	[2000]	[Unicode3.1]
+0xF44A	U+693B	# <cjk>	[2000]
+0xF44B	U+3B8D	# <cjk>	[2000]
+0xF44C	U+6946	# <cjk>	[2000]
+0xF44D	U+6969	# <cjk>	[2000]
+0xF44E	U+696C	# <cjk>	[2000]
+0xF44F	U+6972	# <cjk>	[2000]
+0xF450	U+697A	# <cjk>	[2000]
+0xF451	U+697F	# <cjk>	[2000]
+0xF452	U+6992	# <cjk>	[2000]
+0xF453	U+3BA4	# <cjk>	[2000]
+0xF454	U+6996	# <cjk>	[2000]
+0xF455	U+6998	# <cjk>	[2000]
+0xF456	U+69A6	# <cjk>	[2000]
+0xF457	U+69B0	# <cjk>	[2000]
+0xF458	U+69B7	# <cjk>	[2000]
+0xF459	U+69BA	# <cjk>	[2000]
+0xF45A	U+69BC	# <cjk>	[2000]
+0xF45B	U+69C0	# <cjk>	[2000]
+0xF45C	U+69D1	# <cjk>	[2000]
+0xF45D	U+69D6	# <cjk>	[2000]
+0xF45E	U+23639	# <cjk>	[2000]	[Unicode3.1]
+0xF45F	U+23647	# <cjk>	[2000]	[Unicode3.1]
+0xF460	U+6A30	# <cjk>	[2000]
+0xF461	U+23638	# <cjk>	[2000]	[Unicode3.1]
+0xF462	U+2363A	# <cjk>	[2000]	[Unicode3.1]
+0xF463	U+69E3	# <cjk>	[2000]
+0xF464	U+69EE	# <cjk>	[2000]
+0xF465	U+69EF	# <cjk>	[2000]
+0xF466	U+69F3	# <cjk>	[2000]
+0xF467	U+3BCD	# <cjk>	[2000]
+0xF468	U+69F4	# <cjk>	[2000]
+0xF469	U+69FE	# <cjk>	[2000]
+0xF46A	U+6A11	# <cjk>	[2000]
+0xF46B	U+6A1A	# <cjk>	[2000]
+0xF46C	U+6A1D	# <cjk>	[2000]
+0xF46D	U+2371C	# <cjk>	[2000]	[Unicode3.1]
+0xF46E	U+6A32	# <cjk>	[2000]
+0xF46F	U+6A33	# <cjk>	[2000]
+0xF470	U+6A34	# <cjk>	[2000]
+0xF471	U+6A3F	# <cjk>	[2000]
+0xF472	U+6A46	# <cjk>	[2000]
+0xF473	U+6A49	# <cjk>	[2000]
+0xF474	U+6A7A	# <cjk>	[2000]
+0xF475	U+6A4E	# <cjk>	[2000]
+0xF476	U+6A52	# <cjk>	[2000]
+0xF477	U+6A64	# <cjk>	[2000]
+0xF478	U+2370C	# <cjk>	[2000]	[Unicode3.1]
+0xF479	U+6A7E	# <cjk>	[2000]
+0xF47A	U+6A83	# <cjk>	[2000]
+0xF47B	U+6A8B	# <cjk>	[2000]
+0xF47C	U+3BF0	# <cjk>	[2000]
+0xF47D	U+6A91	# <cjk>	[2000]
+0xF47E	U+6A9F	# <cjk>	[2000]
+0xF480	U+6AA1	# <cjk>	[2000]
+0xF481	U+23764	# <cjk>	[2000]	[Unicode3.1]
+0xF482	U+6AAB	# <cjk>	[2000]
+0xF483	U+6ABD	# <cjk>	[2000]
+0xF484	U+6AC6	# <cjk>	[2000]
+0xF485	U+6AD4	# <cjk>	[2000]
+0xF486	U+6AD0	# <cjk>	[2000]
+0xF487	U+6ADC	# <cjk>	[2000]
+0xF488	U+6ADD	# <cjk>	[2000]
+0xF489	U+237FF	# <cjk>	[2000]	[Unicode3.1]
+0xF48A	U+237E7	# <cjk>	[2000]	[Unicode3.1]
+0xF48B	U+6AEC	# <cjk>	[2000]
+0xF48C	U+6AF1	# <cjk>	[2000]
+0xF48D	U+6AF2	# <cjk>	[2000]
+0xF48E	U+6AF3	# <cjk>	[2000]
+0xF48F	U+6AFD	# <cjk>	[2000]
+0xF490	U+23824	# <cjk>	[2000]	[Unicode3.1]
+0xF491	U+6B0B	# <cjk>	[2000]
+0xF492	U+6B0F	# <cjk>	[2000]
+0xF493	U+6B10	# <cjk>	[2000]
+0xF494	U+6B11	# <cjk>	[2000]
+0xF495	U+2383D	# <cjk>	[2000]	[Unicode3.1]
+0xF496	U+6B17	# <cjk>	[2000]
+0xF497	U+3C26	# <cjk>	[2000]
+0xF498	U+6B2F	# <cjk>	[2000]
+0xF499	U+6B4A	# <cjk>	[2000]
+0xF49A	U+6B58	# <cjk>	[2000]
+0xF49B	U+6B6C	# <cjk>	[2000]
+0xF49C	U+6B75	# <cjk>	[2000]
+0xF49D	U+6B7A	# <cjk>	[2000]
+0xF49E	U+6B81	# <cjk>	[2000]
+0xF49F	U+6B9B	# <cjk>	[2000]
+0xF4A0	U+6BAE	# <cjk>	[2000]
+0xF4A1	U+23A98	# <cjk>	[2000]	[Unicode3.1]
+0xF4A2	U+6BBD	# <cjk>	[2000]
+0xF4A3	U+6BBE	# <cjk>	[2000]
+0xF4A4	U+6BC7	# <cjk>	[2000]
+0xF4A5	U+6BC8	# <cjk>	[2000]
+0xF4A6	U+6BC9	# <cjk>	[2000]
+0xF4A7	U+6BDA	# <cjk>	[2000]
+0xF4A8	U+6BE6	# <cjk>	[2000]
+0xF4A9	U+6BE7	# <cjk>	[2000]
+0xF4AA	U+6BEE	# <cjk>	[2000]
+0xF4AB	U+6BF1	# <cjk>	[2000]
+0xF4AC	U+6C02	# <cjk>	[2000]
+0xF4AD	U+6C0A	# <cjk>	[2000]
+0xF4AE	U+6C0E	# <cjk>	[2000]
+0xF4AF	U+6C35	# <cjk>	[2000]
+0xF4B0	U+6C36	# <cjk>	[2000]
+0xF4B1	U+6C3A	# <cjk>	[2000]
+0xF4B2	U+23C7F	# <cjk>	[2000]	[Unicode3.1]
+0xF4B3	U+6C3F	# <cjk>	[2000]
+0xF4B4	U+6C4D	# <cjk>	[2000]
+0xF4B5	U+6C5B	# <cjk>	[2000]
+0xF4B6	U+6C6D	# <cjk>	[2000]
+0xF4B7	U+6C84	# <cjk>	[2000]
+0xF4B8	U+6C89	# <cjk>	[2000]
+0xF4B9	U+3CC3	# <cjk>	[2000]
+0xF4BA	U+6C94	# <cjk>	[2000]
+0xF4BB	U+6C95	# <cjk>	[2000]
+0xF4BC	U+6C97	# <cjk>	[2000]
+0xF4BD	U+6CAD	# <cjk>	[2000]
+0xF4BE	U+6CC2	# <cjk>	[2000]
+0xF4BF	U+6CD0	# <cjk>	[2000]
+0xF4C0	U+3CD2	# <cjk>	[2000]
+0xF4C1	U+6CD6	# <cjk>	[2000]
+0xF4C2	U+6CDA	# <cjk>	[2000]
+0xF4C3	U+6CDC	# <cjk>	[2000]
+0xF4C4	U+6CE9	# <cjk>	[2000]
+0xF4C5	U+6CEC	# <cjk>	[2000]
+0xF4C6	U+6CED	# <cjk>	[2000]
+0xF4C7	U+23D00	# <cjk>	[2000]	[Unicode3.1]
+0xF4C8	U+6D00	# <cjk>	[2000]
+0xF4C9	U+6D0A	# <cjk>	[2000]
+0xF4CA	U+6D24	# <cjk>	[2000]
+0xF4CB	U+6D26	# <cjk>	[2000]
+0xF4CC	U+6D27	# <cjk>	[2000]
+0xF4CD	U+6C67	# <cjk>	[2000]
+0xF4CE	U+6D2F	# <cjk>	[2000]
+0xF4CF	U+6D3C	# <cjk>	[2000]
+0xF4D0	U+6D5B	# <cjk>	[2000]
+0xF4D1	U+6D5E	# <cjk>	[2000]
+0xF4D2	U+6D60	# <cjk>	[2000]
+0xF4D3	U+6D70	# <cjk>	[2000]
+0xF4D4	U+6D80	# <cjk>	[2000]
+0xF4D5	U+6D81	# <cjk>	[2000]
+0xF4D6	U+6D8A	# <cjk>	[2000]
+0xF4D7	U+6D8D	# <cjk>	[2000]
+0xF4D8	U+6D91	# <cjk>	[2000]
+0xF4D9	U+6D98	# <cjk>	[2000]
+0xF4DA	U+23D40	# <cjk>	[2000]	[Unicode3.1]
+0xF4DB	U+6E17	# <cjk>	[2000]
+0xF4DC	U+23DFA	# <cjk>	[2000]	[Unicode3.1]
+0xF4DD	U+23DF9	# <cjk>	[2000]	[Unicode3.1]
+0xF4DE	U+23DD3	# <cjk>	[2000]	[Unicode3.1]
+0xF4DF	U+6DAB	# <cjk>	[2000]
+0xF4E0	U+6DAE	# <cjk>	[2000]
+0xF4E1	U+6DB4	# <cjk>	[2000]
+0xF4E2	U+6DC2	# <cjk>	[2000]
+0xF4E3	U+6D34	# <cjk>	[2000]
+0xF4E4	U+6DC8	# <cjk>	[2000]
+0xF4E5	U+6DCE	# <cjk>	[2000]
+0xF4E6	U+6DCF	# <cjk>	[2000]
+0xF4E7	U+6DD0	# <cjk>	[2000]
+0xF4E8	U+6DDF	# <cjk>	[2000]
+0xF4E9	U+6DE9	# <cjk>	[2000]
+0xF4EA	U+6DF6	# <cjk>	[2000]
+0xF4EB	U+6E36	# <cjk>	[2000]
+0xF4EC	U+6E1E	# <cjk>	[2000]
+0xF4ED	U+6E22	# <cjk>	[2000]
+0xF4EE	U+6E27	# <cjk>	[2000]
+0xF4EF	U+3D11	# <cjk>	[2000]
+0xF4F0	U+6E32	# <cjk>	[2000]
+0xF4F1	U+6E3C	# <cjk>	[2000]
+0xF4F2	U+6E48	# <cjk>	[2000]
+0xF4F3	U+6E49	# <cjk>	[2000]
+0xF4F4	U+6E4B	# <cjk>	[2000]
+0xF4F5	U+6E4C	# <cjk>	[2000]
+0xF4F6	U+6E4F	# <cjk>	[2000]
+0xF4F7	U+6E51	# <cjk>	[2000]
+0xF4F8	U+6E53	# <cjk>	[2000]
+0xF4F9	U+6E54	# <cjk>	[2000]
+0xF4FA	U+6E57	# <cjk>	[2000]
+0xF4FB	U+6E63	# <cjk>	[2000]
+0xF4FC	U+3D1E	# <cjk>	[2000]
+0xF540	U+6E93	# <cjk>	[2000]
+0xF541	U+6EA7	# <cjk>	[2000]
+0xF542	U+6EB4	# <cjk>	[2000]
+0xF543	U+6EBF	# <cjk>	[2000]
+0xF544	U+6EC3	# <cjk>	[2000]
+0xF545	U+6ECA	# <cjk>	[2000]
+0xF546	U+6ED9	# <cjk>	[2000]
+0xF547	U+6F35	# <cjk>	[2000]
+0xF548	U+6EEB	# <cjk>	[2000]
+0xF549	U+6EF9	# <cjk>	[2000]
+0xF54A	U+6EFB	# <cjk>	[2000]
+0xF54B	U+6F0A	# <cjk>	[2000]
+0xF54C	U+6F0C	# <cjk>	[2000]
+0xF54D	U+6F18	# <cjk>	[2000]
+0xF54E	U+6F25	# <cjk>	[2000]
+0xF54F	U+6F36	# <cjk>	[2000]
+0xF550	U+6F3C	# <cjk>	[2000]
+0xF551	U+23F7E	# <cjk>	[2000]	[Unicode3.1]
+0xF552	U+6F52	# <cjk>	[2000]
+0xF553	U+6F57	# <cjk>	[2000]
+0xF554	U+6F5A	# <cjk>	[2000]
+0xF555	U+6F60	# <cjk>	[2000]
+0xF556	U+6F68	# <cjk>	[2000]
+0xF557	U+6F98	# <cjk>	[2000]
+0xF558	U+6F7D	# <cjk>	[2000]
+0xF559	U+6F90	# <cjk>	[2000]
+0xF55A	U+6F96	# <cjk>	[2000]
+0xF55B	U+6FBE	# <cjk>	[2000]
+0xF55C	U+6F9F	# <cjk>	[2000]
+0xF55D	U+6FA5	# <cjk>	[2000]
+0xF55E	U+6FAF	# <cjk>	[2000]
+0xF55F	U+3D64	# <cjk>	[2000]
+0xF560	U+6FB5	# <cjk>	[2000]
+0xF561	U+6FC8	# <cjk>	[2000]
+0xF562	U+6FC9	# <cjk>	[2000]
+0xF563	U+6FDA	# <cjk>	[2000]
+0xF564	U+6FDE	# <cjk>	[2000]
+0xF565	U+6FE9	# <cjk>	[2000]
+0xF566	U+24096	# <cjk>	[2000]	[Unicode3.1]
+0xF567	U+6FFC	# <cjk>	[2000]
+0xF568	U+7000	# <cjk>	[2000]
+0xF569	U+7007	# <cjk>	[2000]
+0xF56A	U+700A	# <cjk>	[2000]
+0xF56B	U+7023	# <cjk>	[2000]
+0xF56C	U+24103	# <cjk>	[2000]	[Unicode3.1]
+0xF56D	U+7039	# <cjk>	[2000]
+0xF56E	U+703A	# <cjk>	[2000]
+0xF56F	U+703C	# <cjk>	[2000]
+0xF570	U+7043	# <cjk>	[2000]
+0xF571	U+7047	# <cjk>	[2000]
+0xF572	U+704B	# <cjk>	[2000]
+0xF573	U+3D9A	# <cjk>	[2000]
+0xF574	U+7054	# <cjk>	[2000]
+0xF575	U+7065	# <cjk>	[2000]
+0xF576	U+7069	# <cjk>	[2000]
+0xF577	U+706C	# <cjk>	[2000]
+0xF578	U+706E	# <cjk>	[2000]
+0xF579	U+7076	# <cjk>	[2000]
+0xF57A	U+707E	# <cjk>	[2000]
+0xF57B	U+7081	# <cjk>	[2000]
+0xF57C	U+7086	# <cjk>	[2000]
+0xF57D	U+7095	# <cjk>	[2000]
+0xF57E	U+7097	# <cjk>	[2000]
+0xF580	U+70BB	# <cjk>	[2000]
+0xF581	U+241C6	# <cjk>	[2000]	[Unicode3.1]
+0xF582	U+709F	# <cjk>	[2000]
+0xF583	U+70B1	# <cjk>	[2000]
+0xF584	U+241FE	# <cjk>	[2000]	[Unicode3.1]
+0xF585	U+70EC	# <cjk>	[2000]
+0xF586	U+70CA	# <cjk>	[2000]
+0xF587	U+70D1	# <cjk>	[2000]
+0xF588	U+70D3	# <cjk>	[2000]
+0xF589	U+70DC	# <cjk>	[2000]
+0xF58A	U+7103	# <cjk>	[2000]
+0xF58B	U+7104	# <cjk>	[2000]
+0xF58C	U+7106	# <cjk>	[2000]
+0xF58D	U+7107	# <cjk>	[2000]
+0xF58E	U+7108	# <cjk>	[2000]
+0xF58F	U+710C	# <cjk>	[2000]
+0xF590	U+3DC0	# <cjk>	[2000]
+0xF591	U+712F	# <cjk>	[2000]
+0xF592	U+7131	# <cjk>	[2000]
+0xF593	U+7150	# <cjk>	[2000]
+0xF594	U+714A	# <cjk>	[2000]
+0xF595	U+7153	# <cjk>	[2000]
+0xF596	U+715E	# <cjk>	[2000]
+0xF597	U+3DD4	# <cjk>	[2000]
+0xF598	U+7196	# <cjk>	[2000]
+0xF599	U+7180	# <cjk>	[2000]
+0xF59A	U+719B	# <cjk>	[2000]
+0xF59B	U+71A0	# <cjk>	[2000]
+0xF59C	U+71A2	# <cjk>	[2000]
+0xF59D	U+71AE	# <cjk>	[2000]
+0xF59E	U+71AF	# <cjk>	[2000]
+0xF59F	U+71B3	# <cjk>	[2000]
+0xF5A0	U+243BC	# <cjk>	[2000]	[Unicode3.1]
+0xF5A1	U+71CB	# <cjk>	[2000]
+0xF5A2	U+71D3	# <cjk>	[2000]
+0xF5A3	U+71D9	# <cjk>	[2000]
+0xF5A4	U+71DC	# <cjk>	[2000]
+0xF5A5	U+7207	# <cjk>	[2000]
+0xF5A6	U+3E05	# <cjk>	[2000]
+0xF5A7	U+FA49	# CJK COMPATIBILITY IDEOGRAPH-FA49	[2000]	[Unicode3.2]
+0xF5A8	U+722B	# <cjk>	[2000]
+0xF5A9	U+7234	# <cjk>	[2000]
+0xF5AA	U+7238	# <cjk>	[2000]
+0xF5AB	U+7239	# <cjk>	[2000]
+0xF5AC	U+4E2C	# <cjk>	[2000]
+0xF5AD	U+7242	# <cjk>	[2000]
+0xF5AE	U+7253	# <cjk>	[2000]
+0xF5AF	U+7257	# <cjk>	[2000]
+0xF5B0	U+7263	# <cjk>	[2000]
+0xF5B1	U+24629	# <cjk>	[2000]	[Unicode3.1]
+0xF5B2	U+726E	# <cjk>	[2000]
+0xF5B3	U+726F	# <cjk>	[2000]
+0xF5B4	U+7278	# <cjk>	[2000]
+0xF5B5	U+727F	# <cjk>	[2000]
+0xF5B6	U+728E	# <cjk>	[2000]
+0xF5B7	U+246A5	# <cjk>	[2000]	[Unicode3.1]
+0xF5B8	U+72AD	# <cjk>	[2000]
+0xF5B9	U+72AE	# <cjk>	[2000]
+0xF5BA	U+72B0	# <cjk>	[2000]
+0xF5BB	U+72B1	# <cjk>	[2000]
+0xF5BC	U+72C1	# <cjk>	[2000]
+0xF5BD	U+3E60	# <cjk>	[2000]
+0xF5BE	U+72CC	# <cjk>	[2000]
+0xF5BF	U+3E66	# <cjk>	[2000]
+0xF5C0	U+3E68	# <cjk>	[2000]
+0xF5C1	U+72F3	# <cjk>	[2000]
+0xF5C2	U+72FA	# <cjk>	[2000]
+0xF5C3	U+7307	# <cjk>	[2000]
+0xF5C4	U+7312	# <cjk>	[2000]
+0xF5C5	U+7318	# <cjk>	[2000]
+0xF5C6	U+7319	# <cjk>	[2000]
+0xF5C7	U+3E83	# <cjk>	[2000]
+0xF5C8	U+7339	# <cjk>	[2000]
+0xF5C9	U+732C	# <cjk>	[2000]
+0xF5CA	U+7331	# <cjk>	[2000]
+0xF5CB	U+7333	# <cjk>	[2000]
+0xF5CC	U+733D	# <cjk>	[2000]
+0xF5CD	U+7352	# <cjk>	[2000]
+0xF5CE	U+3E94	# <cjk>	[2000]
+0xF5CF	U+736B	# <cjk>	[2000]
+0xF5D0	U+736C	# <cjk>	[2000]
+0xF5D1	U+24896	# <cjk>	[2000]	[Unicode3.1]
+0xF5D2	U+736E	# <cjk>	[2000]
+0xF5D3	U+736F	# <cjk>	[2000]
+0xF5D4	U+7371	# <cjk>	[2000]
+0xF5D5	U+7377	# <cjk>	[2000]
+0xF5D6	U+7381	# <cjk>	[2000]
+0xF5D7	U+7385	# <cjk>	[2000]
+0xF5D8	U+738A	# <cjk>	[2000]
+0xF5D9	U+7394	# <cjk>	[2000]
+0xF5DA	U+7398	# <cjk>	[2000]
+0xF5DB	U+739C	# <cjk>	[2000]
+0xF5DC	U+739E	# <cjk>	[2000]
+0xF5DD	U+73A5	# <cjk>	[2000]
+0xF5DE	U+73A8	# <cjk>	[2000]
+0xF5DF	U+73B5	# <cjk>	[2000]
+0xF5E0	U+73B7	# <cjk>	[2000]
+0xF5E1	U+73B9	# <cjk>	[2000]
+0xF5E2	U+73BC	# <cjk>	[2000]
+0xF5E3	U+73BF	# <cjk>	[2000]
+0xF5E4	U+73C5	# <cjk>	[2000]
+0xF5E5	U+73CB	# <cjk>	[2000]
+0xF5E6	U+73E1	# <cjk>	[2000]
+0xF5E7	U+73E7	# <cjk>	[2000]
+0xF5E8	U+73F9	# <cjk>	[2000]
+0xF5E9	U+7413	# <cjk>	[2000]
+0xF5EA	U+73FA	# <cjk>	[2000]
+0xF5EB	U+7401	# <cjk>	[2000]
+0xF5EC	U+7424	# <cjk>	[2000]
+0xF5ED	U+7431	# <cjk>	[2000]
+0xF5EE	U+7439	# <cjk>	[2000]
+0xF5EF	U+7453	# <cjk>	[2000]
+0xF5F0	U+7440	# <cjk>	[2000]
+0xF5F1	U+7443	# <cjk>	[2000]
+0xF5F2	U+744D	# <cjk>	[2000]
+0xF5F3	U+7452	# <cjk>	[2000]
+0xF5F4	U+745D	# <cjk>	[2000]
+0xF5F5	U+7471	# <cjk>	[2000]
+0xF5F6	U+7481	# <cjk>	[2000]
+0xF5F7	U+7485	# <cjk>	[2000]
+0xF5F8	U+7488	# <cjk>	[2000]
+0xF5F9	U+24A4D	# <cjk>	[2000]	[Unicode3.1]
+0xF5FA	U+7492	# <cjk>	[2000]
+0xF5FB	U+7497	# <cjk>	[2000]
+0xF5FC	U+7499	# <cjk>	[2000]
+0xF640	U+74A0	# <cjk>	[2000]
+0xF641	U+74A1	# <cjk>	[2000]
+0xF642	U+74A5	# <cjk>	[2000]
+0xF643	U+74AA	# <cjk>	[2000]
+0xF644	U+74AB	# <cjk>	[2000]
+0xF645	U+74B9	# <cjk>	[2000]
+0xF646	U+74BB	# <cjk>	[2000]
+0xF647	U+74BA	# <cjk>	[2000]
+0xF648	U+74D6	# <cjk>	[2000]
+0xF649	U+74D8	# <cjk>	[2000]
+0xF64A	U+74DE	# <cjk>	[2000]
+0xF64B	U+74EF	# <cjk>	[2000]
+0xF64C	U+74EB	# <cjk>	[2000]
+0xF64D	U+24B56	# <cjk>	[2000]	[Unicode3.1]
+0xF64E	U+74FA	# <cjk>	[2000]
+0xF64F	U+24B6F	# <cjk>	[2000]	[Unicode3.1]
+0xF650	U+7520	# <cjk>	[2000]
+0xF651	U+7524	# <cjk>	[2000]
+0xF652	U+752A	# <cjk>	[2000]
+0xF653	U+3F57	# <cjk>	[2000]
+0xF654	U+24C16	# <cjk>	[2000]	[Unicode3.1]
+0xF655	U+753D	# <cjk>	[2000]
+0xF656	U+753E	# <cjk>	[2000]
+0xF657	U+7540	# <cjk>	[2000]
+0xF658	U+7548	# <cjk>	[2000]
+0xF659	U+754E	# <cjk>	[2000]
+0xF65A	U+7550	# <cjk>	[2000]
+0xF65B	U+7552	# <cjk>	[2000]
+0xF65C	U+756C	# <cjk>	[2000]
+0xF65D	U+7572	# <cjk>	[2000]
+0xF65E	U+7571	# <cjk>	[2000]
+0xF65F	U+757A	# <cjk>	[2000]
+0xF660	U+757D	# <cjk>	[2000]
+0xF661	U+757E	# <cjk>	[2000]
+0xF662	U+7581	# <cjk>	[2000]
+0xF663	U+24D14	# <cjk>	[2000]	[Unicode3.1]
+0xF664	U+758C	# <cjk>	[2000]
+0xF665	U+3F75	# <cjk>	[2000]
+0xF666	U+75A2	# <cjk>	[2000]
+0xF667	U+3F77	# <cjk>	[2000]
+0xF668	U+75B0	# <cjk>	[2000]
+0xF669	U+75B7	# <cjk>	[2000]
+0xF66A	U+75BF	# <cjk>	[2000]
+0xF66B	U+75C0	# <cjk>	[2000]
+0xF66C	U+75C6	# <cjk>	[2000]
+0xF66D	U+75CF	# <cjk>	[2000]
+0xF66E	U+75D3	# <cjk>	[2000]
+0xF66F	U+75DD	# <cjk>	[2000]
+0xF670	U+75DF	# <cjk>	[2000]
+0xF671	U+75E0	# <cjk>	[2000]
+0xF672	U+75E7	# <cjk>	[2000]
+0xF673	U+75EC	# <cjk>	[2000]
+0xF674	U+75EE	# <cjk>	[2000]
+0xF675	U+75F1	# <cjk>	[2000]
+0xF676	U+75F9	# <cjk>	[2000]
+0xF677	U+7603	# <cjk>	[2000]
+0xF678	U+7618	# <cjk>	[2000]
+0xF679	U+7607	# <cjk>	[2000]
+0xF67A	U+760F	# <cjk>	[2000]
+0xF67B	U+3FAE	# <cjk>	[2000]
+0xF67C	U+24E0E	# <cjk>	[2000]	[Unicode3.1]
+0xF67D	U+7613	# <cjk>	[2000]
+0xF67E	U+761B	# <cjk>	[2000]
+0xF680	U+761C	# <cjk>	[2000]
+0xF681	U+24E37	# <cjk>	[2000]	[Unicode3.1]
+0xF682	U+7625	# <cjk>	[2000]
+0xF683	U+7628	# <cjk>	[2000]
+0xF684	U+763C	# <cjk>	[2000]
+0xF685	U+7633	# <cjk>	[2000]
+0xF686	U+24E6A	# <cjk>	[2000]	[Unicode3.1]
+0xF687	U+3FC9	# <cjk>	[2000]
+0xF688	U+7641	# <cjk>	[2000]
+0xF689	U+24E8B	# <cjk>	[2000]	[Unicode3.1]
+0xF68A	U+7649	# <cjk>	[2000]
+0xF68B	U+7655	# <cjk>	[2000]
+0xF68C	U+3FD7	# <cjk>	[2000]
+0xF68D	U+766E	# <cjk>	[2000]
+0xF68E	U+7695	# <cjk>	[2000]
+0xF68F	U+769C	# <cjk>	[2000]
+0xF690	U+76A1	# <cjk>	[2000]
+0xF691	U+76A0	# <cjk>	[2000]
+0xF692	U+76A7	# <cjk>	[2000]
+0xF693	U+76A8	# <cjk>	[2000]
+0xF694	U+76AF	# <cjk>	[2000]
+0xF695	U+2504A	# <cjk>	[2000]	[Unicode3.1]
+0xF696	U+76C9	# <cjk>	[2000]
+0xF697	U+25055	# <cjk>	[2000]	[Unicode3.1]
+0xF698	U+76E8	# <cjk>	[2000]
+0xF699	U+76EC	# <cjk>	[2000]
+0xF69A	U+25122	# <cjk>	[2000]	[Unicode3.1]
+0xF69B	U+7717	# <cjk>	[2000]
+0xF69C	U+771A	# <cjk>	[2000]
+0xF69D	U+772D	# <cjk>	[2000]
+0xF69E	U+7735	# <cjk>	[2000]
+0xF69F	U+251A9	# <cjk>	[2000]	[Unicode3.1]
+0xF6A0	U+4039	# <cjk>	[2000]
+0xF6A1	U+251E5	# <cjk>	[2000]	[Unicode3.1]
+0xF6A2	U+251CD	# <cjk>	[2000]	[Unicode3.1]
+0xF6A3	U+7758	# <cjk>	[2000]
+0xF6A4	U+7760	# <cjk>	[2000]
+0xF6A5	U+776A	# <cjk>	[2000]
+0xF6A6	U+2521E	# <cjk>	[2000]	[Unicode3.1]
+0xF6A7	U+7772	# <cjk>	[2000]
+0xF6A8	U+777C	# <cjk>	[2000]
+0xF6A9	U+777D	# <cjk>	[2000]
+0xF6AA	U+2524C	# <cjk>	[2000]	[Unicode3.1]
+0xF6AB	U+4058	# <cjk>	[2000]
+0xF6AC	U+779A	# <cjk>	[2000]
+0xF6AD	U+779F	# <cjk>	[2000]
+0xF6AE	U+77A2	# <cjk>	[2000]
+0xF6AF	U+77A4	# <cjk>	[2000]
+0xF6B0	U+77A9	# <cjk>	[2000]
+0xF6B1	U+77DE	# <cjk>	[2000]
+0xF6B2	U+77DF	# <cjk>	[2000]
+0xF6B3	U+77E4	# <cjk>	[2000]
+0xF6B4	U+77E6	# <cjk>	[2000]
+0xF6B5	U+77EA	# <cjk>	[2000]
+0xF6B6	U+77EC	# <cjk>	[2000]
+0xF6B7	U+4093	# <cjk>	[2000]
+0xF6B8	U+77F0	# <cjk>	[2000]
+0xF6B9	U+77F4	# <cjk>	[2000]
+0xF6BA	U+77FB	# <cjk>	[2000]
+0xF6BB	U+2542E	# <cjk>	[2000]	[Unicode3.1]
+0xF6BC	U+7805	# <cjk>	[2000]
+0xF6BD	U+7806	# <cjk>	[2000]
+0xF6BE	U+7809	# <cjk>	[2000]
+0xF6BF	U+780D	# <cjk>	[2000]
+0xF6C0	U+7819	# <cjk>	[2000]
+0xF6C1	U+7821	# <cjk>	[2000]
+0xF6C2	U+782C	# <cjk>	[2000]
+0xF6C3	U+7847	# <cjk>	[2000]
+0xF6C4	U+7864	# <cjk>	[2000]
+0xF6C5	U+786A	# <cjk>	[2000]
+0xF6C6	U+254D9	# <cjk>	[2000]	[Unicode3.1]
+0xF6C7	U+788A	# <cjk>	[2000]
+0xF6C8	U+7894	# <cjk>	[2000]
+0xF6C9	U+78A4	# <cjk>	[2000]
+0xF6CA	U+789D	# <cjk>	[2000]
+0xF6CB	U+789E	# <cjk>	[2000]
+0xF6CC	U+789F	# <cjk>	[2000]
+0xF6CD	U+78BB	# <cjk>	[2000]
+0xF6CE	U+78C8	# <cjk>	[2000]
+0xF6CF	U+78CC	# <cjk>	[2000]
+0xF6D0	U+78CE	# <cjk>	[2000]
+0xF6D1	U+78D5	# <cjk>	[2000]
+0xF6D2	U+78E0	# <cjk>	[2000]
+0xF6D3	U+78E1	# <cjk>	[2000]
+0xF6D4	U+78E6	# <cjk>	[2000]
+0xF6D5	U+78F9	# <cjk>	[2000]
+0xF6D6	U+78FA	# <cjk>	[2000]
+0xF6D7	U+78FB	# <cjk>	[2000]
+0xF6D8	U+78FE	# <cjk>	[2000]
+0xF6D9	U+255A7	# <cjk>	[2000]	[Unicode3.1]
+0xF6DA	U+7910	# <cjk>	[2000]
+0xF6DB	U+791B	# <cjk>	[2000]
+0xF6DC	U+7930	# <cjk>	[2000]
+0xF6DD	U+7925	# <cjk>	[2000]
+0xF6DE	U+793B	# <cjk>	[2000]
+0xF6DF	U+794A	# <cjk>	[2000]
+0xF6E0	U+7958	# <cjk>	[2000]
+0xF6E1	U+795B	# <cjk>	[2000]
+0xF6E2	U+4105	# <cjk>	[2000]
+0xF6E3	U+7967	# <cjk>	[2000]
+0xF6E4	U+7972	# <cjk>	[2000]
+0xF6E5	U+7994	# <cjk>	[2000]
+0xF6E6	U+7995	# <cjk>	[2000]
+0xF6E7	U+7996	# <cjk>	[2000]
+0xF6E8	U+799B	# <cjk>	[2000]
+0xF6E9	U+79A1	# <cjk>	[2000]
+0xF6EA	U+79A9	# <cjk>	[2000]
+0xF6EB	U+79B4	# <cjk>	[2000]
+0xF6EC	U+79BB	# <cjk>	[2000]
+0xF6ED	U+79C2	# <cjk>	[2000]
+0xF6EE	U+79C7	# <cjk>	[2000]
+0xF6EF	U+79CC	# <cjk>	[2000]
+0xF6F0	U+79CD	# <cjk>	[2000]
+0xF6F1	U+79D6	# <cjk>	[2000]
+0xF6F2	U+4148	# <cjk>	[2000]
+0xF6F3	U+257A9	# <cjk>	[2000]	[Unicode3.1]
+0xF6F4	U+257B4	# <cjk>	[2000]	[Unicode3.1]
+0xF6F5	U+414F	# <cjk>	[2000]
+0xF6F6	U+7A0A	# <cjk>	[2000]
+0xF6F7	U+7A11	# <cjk>	[2000]
+0xF6F8	U+7A15	# <cjk>	[2000]
+0xF6F9	U+7A1B	# <cjk>	[2000]
+0xF6FA	U+7A1E	# <cjk>	[2000]
+0xF6FB	U+4163	# <cjk>	[2000]
+0xF6FC	U+7A2D	# <cjk>	[2000]
+0xF740	U+7A38	# <cjk>	[2000]
+0xF741	U+7A47	# <cjk>	[2000]
+0xF742	U+7A4C	# <cjk>	[2000]
+0xF743	U+7A56	# <cjk>	[2000]
+0xF744	U+7A59	# <cjk>	[2000]
+0xF745	U+7A5C	# <cjk>	[2000]
+0xF746	U+7A5F	# <cjk>	[2000]
+0xF747	U+7A60	# <cjk>	[2000]
+0xF748	U+7A67	# <cjk>	[2000]
+0xF749	U+7A6A	# <cjk>	[2000]
+0xF74A	U+7A75	# <cjk>	[2000]
+0xF74B	U+7A78	# <cjk>	[2000]
+0xF74C	U+7A82	# <cjk>	[2000]
+0xF74D	U+7A8A	# <cjk>	[2000]
+0xF74E	U+7A90	# <cjk>	[2000]
+0xF74F	U+7AA3	# <cjk>	[2000]
+0xF750	U+7AAC	# <cjk>	[2000]
+0xF751	U+259D4	# <cjk>	[2000]	[Unicode3.1]
+0xF752	U+41B4	# <cjk>	[2000]
+0xF753	U+7AB9	# <cjk>	[2000]
+0xF754	U+7ABC	# <cjk>	[2000]
+0xF755	U+7ABE	# <cjk>	[2000]
+0xF756	U+41BF	# <cjk>	[2000]
+0xF757	U+7ACC	# <cjk>	[2000]
+0xF758	U+7AD1	# <cjk>	[2000]
+0xF759	U+7AE7	# <cjk>	[2000]
+0xF75A	U+7AE8	# <cjk>	[2000]
+0xF75B	U+7AF4	# <cjk>	[2000]
+0xF75C	U+25AE4	# <cjk>	[2000]	[Unicode3.1]
+0xF75D	U+25AE3	# <cjk>	[2000]	[Unicode3.1]
+0xF75E	U+7B07	# <cjk>	[2000]
+0xF75F	U+25AF1	# <cjk>	[2000]	[Unicode3.1]
+0xF760	U+7B3D	# <cjk>	[2000]
+0xF761	U+7B27	# <cjk>	[2000]
+0xF762	U+7B2A	# <cjk>	[2000]
+0xF763	U+7B2E	# <cjk>	[2000]
+0xF764	U+7B2F	# <cjk>	[2000]
+0xF765	U+7B31	# <cjk>	[2000]
+0xF766	U+41E6	# <cjk>	[2000]
+0xF767	U+41F3	# <cjk>	[2000]
+0xF768	U+7B7F	# <cjk>	[2000]
+0xF769	U+7B41	# <cjk>	[2000]
+0xF76A	U+41EE	# <cjk>	[2000]
+0xF76B	U+7B55	# <cjk>	[2000]
+0xF76C	U+7B79	# <cjk>	[2000]
+0xF76D	U+7B64	# <cjk>	[2000]
+0xF76E	U+7B66	# <cjk>	[2000]
+0xF76F	U+7B69	# <cjk>	[2000]
+0xF770	U+7B73	# <cjk>	[2000]
+0xF771	U+25BB2	# <cjk>	[2000]	[Unicode3.1]
+0xF772	U+4207	# <cjk>	[2000]
+0xF773	U+7B90	# <cjk>	[2000]
+0xF774	U+7B91	# <cjk>	[2000]
+0xF775	U+7B9B	# <cjk>	[2000]
+0xF776	U+420E	# <cjk>	[2000]
+0xF777	U+7BAF	# <cjk>	[2000]
+0xF778	U+7BB5	# <cjk>	[2000]
+0xF779	U+7BBC	# <cjk>	[2000]
+0xF77A	U+7BC5	# <cjk>	[2000]
+0xF77B	U+7BCA	# <cjk>	[2000]
+0xF77C	U+25C4B	# <cjk>	[2000]	[Unicode3.1]
+0xF77D	U+25C64	# <cjk>	[2000]	[Unicode3.1]
+0xF77E	U+7BD4	# <cjk>	[2000]
+0xF780	U+7BD6	# <cjk>	[2000]
+0xF781	U+7BDA	# <cjk>	[2000]
+0xF782	U+7BEA	# <cjk>	[2000]
+0xF783	U+7BF0	# <cjk>	[2000]
+0xF784	U+7C03	# <cjk>	[2000]
+0xF785	U+7C0B	# <cjk>	[2000]
+0xF786	U+7C0E	# <cjk>	[2000]
+0xF787	U+7C0F	# <cjk>	[2000]
+0xF788	U+7C26	# <cjk>	[2000]
+0xF789	U+7C45	# <cjk>	[2000]
+0xF78A	U+7C4A	# <cjk>	[2000]
+0xF78B	U+7C51	# <cjk>	[2000]
+0xF78C	U+7C57	# <cjk>	[2000]
+0xF78D	U+7C5E	# <cjk>	[2000]
+0xF78E	U+7C61	# <cjk>	[2000]
+0xF78F	U+7C69	# <cjk>	[2000]
+0xF790	U+7C6E	# <cjk>	[2000]
+0xF791	U+7C6F	# <cjk>	[2000]
+0xF792	U+7C70	# <cjk>	[2000]
+0xF793	U+25E2E	# <cjk>	[2000]	[Unicode3.1]
+0xF794	U+25E56	# <cjk>	[2000]	[Unicode3.1]
+0xF795	U+25E65	# <cjk>	[2000]	[Unicode3.1]
+0xF796	U+7CA6	# <cjk>	[2000]
+0xF797	U+25E62	# <cjk>	[2000]	[Unicode3.1]
+0xF798	U+7CB6	# <cjk>	[2000]
+0xF799	U+7CB7	# <cjk>	[2000]
+0xF79A	U+7CBF	# <cjk>	[2000]
+0xF79B	U+25ED8	# <cjk>	[2000]	[Unicode3.1]
+0xF79C	U+7CC4	# <cjk>	[2000]
+0xF79D	U+25EC2	# <cjk>	[2000]	[Unicode3.1]
+0xF79E	U+7CC8	# <cjk>	[2000]
+0xF79F	U+7CCD	# <cjk>	[2000]
+0xF7A0	U+25EE8	# <cjk>	[2000]	[Unicode3.1]
+0xF7A1	U+7CD7	# <cjk>	[2000]
+0xF7A2	U+25F23	# <cjk>	[2000]	[Unicode3.1]
+0xF7A3	U+7CE6	# <cjk>	[2000]
+0xF7A4	U+7CEB	# <cjk>	[2000]
+0xF7A5	U+25F5C	# <cjk>	[2000]	[Unicode3.1]
+0xF7A6	U+7CF5	# <cjk>	[2000]
+0xF7A7	U+7D03	# <cjk>	[2000]
+0xF7A8	U+7D09	# <cjk>	[2000]
+0xF7A9	U+42C6	# <cjk>	[2000]
+0xF7AA	U+7D12	# <cjk>	[2000]
+0xF7AB	U+7D1E	# <cjk>	[2000]
+0xF7AC	U+25FE0	# <cjk>	[2000]	[Unicode3.1]
+0xF7AD	U+25FD4	# <cjk>	[2000]	[Unicode3.1]
+0xF7AE	U+7D3D	# <cjk>	[2000]
+0xF7AF	U+7D3E	# <cjk>	[2000]
+0xF7B0	U+7D40	# <cjk>	[2000]
+0xF7B1	U+7D47	# <cjk>	[2000]
+0xF7B2	U+2600C	# <cjk>	[2000]	[Unicode3.1]
+0xF7B3	U+25FFB	# <cjk>	[2000]	[Unicode3.1]
+0xF7B4	U+42D6	# <cjk>	[2000]
+0xF7B5	U+7D59	# <cjk>	[2000]
+0xF7B6	U+7D5A	# <cjk>	[2000]
+0xF7B7	U+7D6A	# <cjk>	[2000]
+0xF7B8	U+7D70	# <cjk>	[2000]
+0xF7B9	U+42DD	# <cjk>	[2000]
+0xF7BA	U+7D7F	# <cjk>	[2000]
+0xF7BB	U+26017	# <cjk>	[2000]	[Unicode3.1]
+0xF7BC	U+7D86	# <cjk>	[2000]
+0xF7BD	U+7D88	# <cjk>	[2000]
+0xF7BE	U+7D8C	# <cjk>	[2000]
+0xF7BF	U+7D97	# <cjk>	[2000]
+0xF7C0	U+26060	# <cjk>	[2000]	[Unicode3.1]
+0xF7C1	U+7D9D	# <cjk>	[2000]
+0xF7C2	U+7DA7	# <cjk>	[2000]
+0xF7C3	U+7DAA	# <cjk>	[2000]
+0xF7C4	U+7DB6	# <cjk>	[2000]
+0xF7C5	U+7DB7	# <cjk>	[2000]
+0xF7C6	U+7DC0	# <cjk>	[2000]
+0xF7C7	U+7DD7	# <cjk>	[2000]
+0xF7C8	U+7DD9	# <cjk>	[2000]
+0xF7C9	U+7DE6	# <cjk>	[2000]
+0xF7CA	U+7DF1	# <cjk>	[2000]
+0xF7CB	U+7DF9	# <cjk>	[2000]
+0xF7CC	U+4302	# <cjk>	[2000]
+0xF7CD	U+260ED	# <cjk>	[2000]	[Unicode3.1]
+0xF7CE	U+FA58	# CJK COMPATIBILITY IDEOGRAPH-FA58	[2000]	[Unicode3.2]
+0xF7CF	U+7E10	# <cjk>	[2000]
+0xF7D0	U+7E17	# <cjk>	[2000]
+0xF7D1	U+7E1D	# <cjk>	[2000]
+0xF7D2	U+7E20	# <cjk>	[2000]
+0xF7D3	U+7E27	# <cjk>	[2000]
+0xF7D4	U+7E2C	# <cjk>	[2000]
+0xF7D5	U+7E45	# <cjk>	[2000]
+0xF7D6	U+7E73	# <cjk>	[2000]
+0xF7D7	U+7E75	# <cjk>	[2000]
+0xF7D8	U+7E7E	# <cjk>	[2000]
+0xF7D9	U+7E86	# <cjk>	[2000]
+0xF7DA	U+7E87	# <cjk>	[2000]
+0xF7DB	U+432B	# <cjk>	[2000]
+0xF7DC	U+7E91	# <cjk>	[2000]
+0xF7DD	U+7E98	# <cjk>	[2000]
+0xF7DE	U+7E9A	# <cjk>	[2000]
+0xF7DF	U+4343	# <cjk>	[2000]
+0xF7E0	U+7F3C	# <cjk>	[2000]
+0xF7E1	U+7F3B	# <cjk>	[2000]
+0xF7E2	U+7F3E	# <cjk>	[2000]
+0xF7E3	U+7F43	# <cjk>	[2000]
+0xF7E4	U+7F44	# <cjk>	[2000]
+0xF7E5	U+7F4F	# <cjk>	[2000]
+0xF7E6	U+34C1	# <cjk>	[2000]
+0xF7E7	U+26270	# <cjk>	[2000]	[Unicode3.1]
+0xF7E8	U+7F52	# <cjk>	[2000]
+0xF7E9	U+26286	# <cjk>	[2000]	[Unicode3.1]
+0xF7EA	U+7F61	# <cjk>	[2000]
+0xF7EB	U+7F63	# <cjk>	[2000]
+0xF7EC	U+7F64	# <cjk>	[2000]
+0xF7ED	U+7F6D	# <cjk>	[2000]
+0xF7EE	U+7F7D	# <cjk>	[2000]
+0xF7EF	U+7F7E	# <cjk>	[2000]
+0xF7F0	U+2634C	# <cjk>	[2000]	[Unicode3.1]
+0xF7F1	U+7F90	# <cjk>	[2000]
+0xF7F2	U+517B	# <cjk>	[2000]
+0xF7F3	U+23D0E	# <cjk>	[2000]	[Unicode3.1]
+0xF7F4	U+7F96	# <cjk>	[2000]
+0xF7F5	U+7F9C	# <cjk>	[2000]
+0xF7F6	U+7FAD	# <cjk>	[2000]
+0xF7F7	U+26402	# <cjk>	[2000]	[Unicode3.1]
+0xF7F8	U+7FC3	# <cjk>	[2000]
+0xF7F9	U+7FCF	# <cjk>	[2000]
+0xF7FA	U+7FE3	# <cjk>	[2000]
+0xF7FB	U+7FE5	# <cjk>	[2000]
+0xF7FC	U+7FEF	# <cjk>	[2000]
+0xF840	U+7FF2	# <cjk>	[2000]
+0xF841	U+8002	# <cjk>	[2000]
+0xF842	U+800A	# <cjk>	[2000]
+0xF843	U+8008	# <cjk>	[2000]
+0xF844	U+800E	# <cjk>	[2000]
+0xF845	U+8011	# <cjk>	[2000]
+0xF846	U+8016	# <cjk>	[2000]
+0xF847	U+8024	# <cjk>	[2000]
+0xF848	U+802C	# <cjk>	[2000]
+0xF849	U+8030	# <cjk>	[2000]
+0xF84A	U+8043	# <cjk>	[2000]
+0xF84B	U+8066	# <cjk>	[2000]
+0xF84C	U+8071	# <cjk>	[2000]
+0xF84D	U+8075	# <cjk>	[2000]
+0xF84E	U+807B	# <cjk>	[2000]
+0xF84F	U+8099	# <cjk>	[2000]
+0xF850	U+809C	# <cjk>	[2000]
+0xF851	U+80A4	# <cjk>	[2000]
+0xF852	U+80A7	# <cjk>	[2000]
+0xF853	U+80B8	# <cjk>	[2000]
+0xF854	U+2667E	# <cjk>	[2000]	[Unicode3.1]
+0xF855	U+80C5	# <cjk>	[2000]
+0xF856	U+80D5	# <cjk>	[2000]
+0xF857	U+80D8	# <cjk>	[2000]
+0xF858	U+80E6	# <cjk>	[2000]
+0xF859	U+266B0	# <cjk>	[2000]	[Unicode3.1]
+0xF85A	U+810D	# <cjk>	[2000]
+0xF85B	U+80F5	# <cjk>	[2000]
+0xF85C	U+80FB	# <cjk>	[2000]
+0xF85D	U+43EE	# <cjk>	[2000]
+0xF85E	U+8135	# <cjk>	[2000]
+0xF85F	U+8116	# <cjk>	[2000]
+0xF860	U+811E	# <cjk>	[2000]
+0xF861	U+43F0	# <cjk>	[2000]
+0xF862	U+8124	# <cjk>	[2000]
+0xF863	U+8127	# <cjk>	[2000]
+0xF864	U+812C	# <cjk>	[2000]
+0xF865	U+2671D	# <cjk>	[2000]	[Unicode3.1]
+0xF866	U+813D	# <cjk>	[2000]
+0xF867	U+4408	# <cjk>	[2000]
+0xF868	U+8169	# <cjk>	[2000]
+0xF869	U+4417	# <cjk>	[2000]
+0xF86A	U+8181	# <cjk>	[2000]
+0xF86B	U+441C	# <cjk>	[2000]
+0xF86C	U+8184	# <cjk>	[2000]
+0xF86D	U+8185	# <cjk>	[2000]
+0xF86E	U+4422	# <cjk>	[2000]
+0xF86F	U+8198	# <cjk>	[2000]
+0xF870	U+81B2	# <cjk>	[2000]
+0xF871	U+81C1	# <cjk>	[2000]
+0xF872	U+81C3	# <cjk>	[2000]
+0xF873	U+81D6	# <cjk>	[2000]
+0xF874	U+81DB	# <cjk>	[2000]
+0xF875	U+268DD	# <cjk>	[2000]	[Unicode3.1]
+0xF876	U+81E4	# <cjk>	[2000]
+0xF877	U+268EA	# <cjk>	[2000]	[Unicode3.1]
+0xF878	U+81EC	# <cjk>	[2000]
+0xF879	U+26951	# <cjk>	[2000]	[Unicode3.1]
+0xF87A	U+81FD	# <cjk>	[2000]
+0xF87B	U+81FF	# <cjk>	[2000]
+0xF87C	U+2696F	# <cjk>	[2000]	[Unicode3.1]
+0xF87D	U+8204	# <cjk>	[2000]
+0xF87E	U+269DD	# <cjk>	[2000]	[Unicode3.1]
+0xF880	U+8219	# <cjk>	[2000]
+0xF881	U+8221	# <cjk>	[2000]
+0xF882	U+8222	# <cjk>	[2000]
+0xF883	U+26A1E	# <cjk>	[2000]	[Unicode3.1]
+0xF884	U+8232	# <cjk>	[2000]
+0xF885	U+8234	# <cjk>	[2000]
+0xF886	U+823C	# <cjk>	[2000]
+0xF887	U+8246	# <cjk>	[2000]
+0xF888	U+8249	# <cjk>	[2000]
+0xF889	U+8245	# <cjk>	[2000]
+0xF88A	U+26A58	# <cjk>	[2000]	[Unicode3.1]
+0xF88B	U+824B	# <cjk>	[2000]
+0xF88C	U+4476	# <cjk>	[2000]
+0xF88D	U+824F	# <cjk>	[2000]
+0xF88E	U+447A	# <cjk>	[2000]
+0xF88F	U+8257	# <cjk>	[2000]
+0xF890	U+26A8C	# <cjk>	[2000]	[Unicode3.1]
+0xF891	U+825C	# <cjk>	[2000]
+0xF892	U+8263	# <cjk>	[2000]
+0xF893	U+26AB7	# <cjk>	[2000]	[Unicode3.1]
+0xF894	U+FA5D	# CJK COMPATIBILITY IDEOGRAPH-FA5D	[2000]	[Unicode3.2]
+0xF895	U+FA5E	# CJK COMPATIBILITY IDEOGRAPH-FA5E	[2000]	[Unicode3.2]
+0xF896	U+8279	# <cjk>	[2000]
+0xF897	U+4491	# <cjk>	[2000]
+0xF898	U+827D	# <cjk>	[2000]
+0xF899	U+827F	# <cjk>	[2000]
+0xF89A	U+8283	# <cjk>	[2000]
+0xF89B	U+828A	# <cjk>	[2000]
+0xF89C	U+8293	# <cjk>	[2000]
+0xF89D	U+82A7	# <cjk>	[2000]
+0xF89E	U+82A8	# <cjk>	[2000]
+0xF89F	U+82B2	# <cjk>	[2000]
+0xF8A0	U+82B4	# <cjk>	[2000]
+0xF8A1	U+82BA	# <cjk>	[2000]
+0xF8A2	U+82BC	# <cjk>	[2000]
+0xF8A3	U+82E2	# <cjk>	[2000]
+0xF8A4	U+82E8	# <cjk>	[2000]
+0xF8A5	U+82F7	# <cjk>	[2000]
+0xF8A6	U+8307	# <cjk>	[2000]
+0xF8A7	U+8308	# <cjk>	[2000]
+0xF8A8	U+830C	# <cjk>	[2000]
+0xF8A9	U+8354	# <cjk>	[2000]
+0xF8AA	U+831B	# <cjk>	[2000]
+0xF8AB	U+831D	# <cjk>	[2000]
+0xF8AC	U+8330	# <cjk>	[2000]
+0xF8AD	U+833C	# <cjk>	[2000]
+0xF8AE	U+8344	# <cjk>	[2000]
+0xF8AF	U+8357	# <cjk>	[2000]
+0xF8B0	U+44BE	# <cjk>	[2000]
+0xF8B1	U+837F	# <cjk>	[2000]
+0xF8B2	U+44D4	# <cjk>	[2000]
+0xF8B3	U+44B3	# <cjk>	[2000]
+0xF8B4	U+838D	# <cjk>	[2000]
+0xF8B5	U+8394	# <cjk>	[2000]
+0xF8B6	U+8395	# <cjk>	[2000]
+0xF8B7	U+839B	# <cjk>	[2000]
+0xF8B8	U+839D	# <cjk>	[2000]
+0xF8B9	U+83C9	# <cjk>	[2000]
+0xF8BA	U+83D0	# <cjk>	[2000]
+0xF8BB	U+83D4	# <cjk>	[2000]
+0xF8BC	U+83DD	# <cjk>	[2000]
+0xF8BD	U+83E5	# <cjk>	[2000]
+0xF8BE	U+83F9	# <cjk>	[2000]
+0xF8BF	U+840F	# <cjk>	[2000]
+0xF8C0	U+8411	# <cjk>	[2000]
+0xF8C1	U+8415	# <cjk>	[2000]
+0xF8C2	U+26C73	# <cjk>	[2000]	[Unicode3.1]
+0xF8C3	U+8417	# <cjk>	[2000]
+0xF8C4	U+8439	# <cjk>	[2000]
+0xF8C5	U+844A	# <cjk>	[2000]
+0xF8C6	U+844F	# <cjk>	[2000]
+0xF8C7	U+8451	# <cjk>	[2000]
+0xF8C8	U+8452	# <cjk>	[2000]
+0xF8C9	U+8459	# <cjk>	[2000]
+0xF8CA	U+845A	# <cjk>	[2000]
+0xF8CB	U+845C	# <cjk>	[2000]
+0xF8CC	U+26CDD	# <cjk>	[2000]	[Unicode3.1]
+0xF8CD	U+8465	# <cjk>	[2000]
+0xF8CE	U+8476	# <cjk>	[2000]
+0xF8CF	U+8478	# <cjk>	[2000]
+0xF8D0	U+847C	# <cjk>	[2000]
+0xF8D1	U+8481	# <cjk>	[2000]
+0xF8D2	U+450D	# <cjk>	[2000]
+0xF8D3	U+84DC	# <cjk>	[2000]
+0xF8D4	U+8497	# <cjk>	[2000]
+0xF8D5	U+84A6	# <cjk>	[2000]
+0xF8D6	U+84BE	# <cjk>	[2000]
+0xF8D7	U+4508	# <cjk>	[2000]
+0xF8D8	U+84CE	# <cjk>	[2000]
+0xF8D9	U+84CF	# <cjk>	[2000]
+0xF8DA	U+84D3	# <cjk>	[2000]
+0xF8DB	U+26E65	# <cjk>	[2000]	[Unicode3.1]
+0xF8DC	U+84E7	# <cjk>	[2000]
+0xF8DD	U+84EA	# <cjk>	[2000]
+0xF8DE	U+84EF	# <cjk>	[2000]
+0xF8DF	U+84F0	# <cjk>	[2000]
+0xF8E0	U+84F1	# <cjk>	[2000]
+0xF8E1	U+84FA	# <cjk>	[2000]
+0xF8E2	U+84FD	# <cjk>	[2000]
+0xF8E3	U+850C	# <cjk>	[2000]
+0xF8E4	U+851B	# <cjk>	[2000]
+0xF8E5	U+8524	# <cjk>	[2000]
+0xF8E6	U+8525	# <cjk>	[2000]
+0xF8E7	U+852B	# <cjk>	[2000]
+0xF8E8	U+8534	# <cjk>	[2000]
+0xF8E9	U+854F	# <cjk>	[2000]
+0xF8EA	U+856F	# <cjk>	[2000]
+0xF8EB	U+4525	# <cjk>	[2000]
+0xF8EC	U+4543	# <cjk>	[2000]
+0xF8ED	U+853E	# <cjk>	[2000]
+0xF8EE	U+8551	# <cjk>	[2000]
+0xF8EF	U+8553	# <cjk>	[2000]
+0xF8F0	U+855E	# <cjk>	[2000]
+0xF8F1	U+8561	# <cjk>	[2000]
+0xF8F2	U+8562	# <cjk>	[2000]
+0xF8F3	U+26F94	# <cjk>	[2000]	[Unicode3.1]
+0xF8F4	U+857B	# <cjk>	[2000]
+0xF8F5	U+857D	# <cjk>	[2000]
+0xF8F6	U+857F	# <cjk>	[2000]
+0xF8F7	U+8581	# <cjk>	[2000]
+0xF8F8	U+8586	# <cjk>	[2000]
+0xF8F9	U+8593	# <cjk>	[2000]
+0xF8FA	U+859D	# <cjk>	[2000]
+0xF8FB	U+859F	# <cjk>	[2000]
+0xF8FC	U+26FF8	# <cjk>	[2000]	[Unicode3.1]
+0xF940	U+26FF6	# <cjk>	[2000]	[Unicode3.1]
+0xF941	U+26FF7	# <cjk>	[2000]	[Unicode3.1]
+0xF942	U+85B7	# <cjk>	[2000]
+0xF943	U+85BC	# <cjk>	[2000]
+0xF944	U+85C7	# <cjk>	[2000]
+0xF945	U+85CA	# <cjk>	[2000]
+0xF946	U+85D8	# <cjk>	[2000]
+0xF947	U+85D9	# <cjk>	[2000]
+0xF948	U+85DF	# <cjk>	[2000]
+0xF949	U+85E1	# <cjk>	[2000]
+0xF94A	U+85E6	# <cjk>	[2000]
+0xF94B	U+85F6	# <cjk>	[2000]
+0xF94C	U+8600	# <cjk>	[2000]
+0xF94D	U+8611	# <cjk>	[2000]
+0xF94E	U+861E	# <cjk>	[2000]
+0xF94F	U+8621	# <cjk>	[2000]
+0xF950	U+8624	# <cjk>	[2000]
+0xF951	U+8627	# <cjk>	[2000]
+0xF952	U+2710D	# <cjk>	[2000]	[Unicode3.1]
+0xF953	U+8639	# <cjk>	[2000]
+0xF954	U+863C	# <cjk>	[2000]
+0xF955	U+27139	# <cjk>	[2000]	[Unicode3.1]
+0xF956	U+8640	# <cjk>	[2000]
+0xF957	U+FA20	# CJK COMPATIBILITY IDEOGRAPH-FA20	[2000]
+0xF958	U+8653	# <cjk>	[2000]
+0xF959	U+8656	# <cjk>	[2000]
+0xF95A	U+866F	# <cjk>	[2000]
+0xF95B	U+8677	# <cjk>	[2000]
+0xF95C	U+867A	# <cjk>	[2000]
+0xF95D	U+8687	# <cjk>	[2000]
+0xF95E	U+8689	# <cjk>	[2000]
+0xF95F	U+868D	# <cjk>	[2000]
+0xF960	U+8691	# <cjk>	[2000]
+0xF961	U+869C	# <cjk>	[2000]
+0xF962	U+869D	# <cjk>	[2000]
+0xF963	U+86A8	# <cjk>	[2000]
+0xF964	U+FA21	# CJK COMPATIBILITY IDEOGRAPH-FA21	[2000]
+0xF965	U+86B1	# <cjk>	[2000]
+0xF966	U+86B3	# <cjk>	[2000]
+0xF967	U+86C1	# <cjk>	[2000]
+0xF968	U+86C3	# <cjk>	[2000]
+0xF969	U+86D1	# <cjk>	[2000]
+0xF96A	U+86D5	# <cjk>	[2000]
+0xF96B	U+86D7	# <cjk>	[2000]
+0xF96C	U+86E3	# <cjk>	[2000]
+0xF96D	U+86E6	# <cjk>	[2000]
+0xF96E	U+45B8	# <cjk>	[2000]
+0xF96F	U+8705	# <cjk>	[2000]
+0xF970	U+8707	# <cjk>	[2000]
+0xF971	U+870E	# <cjk>	[2000]
+0xF972	U+8710	# <cjk>	[2000]
+0xF973	U+8713	# <cjk>	[2000]
+0xF974	U+8719	# <cjk>	[2000]
+0xF975	U+871F	# <cjk>	[2000]
+0xF976	U+8721	# <cjk>	[2000]
+0xF977	U+8723	# <cjk>	[2000]
+0xF978	U+8731	# <cjk>	[2000]
+0xF979	U+873A	# <cjk>	[2000]
+0xF97A	U+873E	# <cjk>	[2000]
+0xF97B	U+8740	# <cjk>	[2000]
+0xF97C	U+8743	# <cjk>	[2000]
+0xF97D	U+8751	# <cjk>	[2000]
+0xF97E	U+8758	# <cjk>	[2000]
+0xF980	U+8764	# <cjk>	[2000]
+0xF981	U+8765	# <cjk>	[2000]
+0xF982	U+8772	# <cjk>	[2000]
+0xF983	U+877C	# <cjk>	[2000]
+0xF984	U+273DB	# <cjk>	[2000]	[Unicode3.1]
+0xF985	U+273DA	# <cjk>	[2000]	[Unicode3.1]
+0xF986	U+87A7	# <cjk>	[2000]
+0xF987	U+8789	# <cjk>	[2000]
+0xF988	U+878B	# <cjk>	[2000]
+0xF989	U+8793	# <cjk>	[2000]
+0xF98A	U+87A0	# <cjk>	[2000]
+0xF98B	U+273FE	# <cjk>	[2000]	[Unicode3.1]
+0xF98C	U+45E5	# <cjk>	[2000]
+0xF98D	U+87BE	# <cjk>	[2000]
+0xF98E	U+27410	# <cjk>	[2000]	[Unicode3.1]
+0xF98F	U+87C1	# <cjk>	[2000]
+0xF990	U+87CE	# <cjk>	[2000]
+0xF991	U+87F5	# <cjk>	[2000]
+0xF992	U+87DF	# <cjk>	[2000]
+0xF993	U+27449	# <cjk>	[2000]	[Unicode3.1]
+0xF994	U+87E3	# <cjk>	[2000]
+0xF995	U+87E5	# <cjk>	[2000]
+0xF996	U+87E6	# <cjk>	[2000]
+0xF997	U+87EA	# <cjk>	[2000]
+0xF998	U+87EB	# <cjk>	[2000]
+0xF999	U+87ED	# <cjk>	[2000]
+0xF99A	U+8801	# <cjk>	[2000]
+0xF99B	U+8803	# <cjk>	[2000]
+0xF99C	U+880B	# <cjk>	[2000]
+0xF99D	U+8813	# <cjk>	[2000]
+0xF99E	U+8828	# <cjk>	[2000]
+0xF99F	U+882E	# <cjk>	[2000]
+0xF9A0	U+8832	# <cjk>	[2000]
+0xF9A1	U+883C	# <cjk>	[2000]
+0xF9A2	U+460F	# <cjk>	[2000]
+0xF9A3	U+884A	# <cjk>	[2000]
+0xF9A4	U+8858	# <cjk>	[2000]
+0xF9A5	U+885F	# <cjk>	[2000]
+0xF9A6	U+8864	# <cjk>	[2000]
+0xF9A7	U+27615	# <cjk>	[2000]	[Unicode3.1]
+0xF9A8	U+27614	# <cjk>	[2000]	[Unicode3.1]
+0xF9A9	U+8869	# <cjk>	[2000]
+0xF9AA	U+27631	# <cjk>	[2000]	[Unicode3.1]
+0xF9AB	U+886F	# <cjk>	[2000]
+0xF9AC	U+88A0	# <cjk>	[2000]
+0xF9AD	U+88BC	# <cjk>	[2000]
+0xF9AE	U+88BD	# <cjk>	[2000]
+0xF9AF	U+88BE	# <cjk>	[2000]
+0xF9B0	U+88C0	# <cjk>	[2000]
+0xF9B1	U+88D2	# <cjk>	[2000]
+0xF9B2	U+27693	# <cjk>	[2000]	[Unicode3.1]
+0xF9B3	U+88D1	# <cjk>	[2000]
+0xF9B4	U+88D3	# <cjk>	[2000]
+0xF9B5	U+88DB	# <cjk>	[2000]
+0xF9B6	U+88F0	# <cjk>	[2000]
+0xF9B7	U+88F1	# <cjk>	[2000]
+0xF9B8	U+4641	# <cjk>	[2000]
+0xF9B9	U+8901	# <cjk>	[2000]
+0xF9BA	U+2770E	# <cjk>	[2000]	[Unicode3.1]
+0xF9BB	U+8937	# <cjk>	[2000]
+0xF9BC	U+27723	# <cjk>	[2000]	[Unicode3.1]
+0xF9BD	U+8942	# <cjk>	[2000]
+0xF9BE	U+8945	# <cjk>	[2000]
+0xF9BF	U+8949	# <cjk>	[2000]
+0xF9C0	U+27752	# <cjk>	[2000]	[Unicode3.1]
+0xF9C1	U+4665	# <cjk>	[2000]
+0xF9C2	U+8962	# <cjk>	[2000]
+0xF9C3	U+8980	# <cjk>	[2000]
+0xF9C4	U+8989	# <cjk>	[2000]
+0xF9C5	U+8990	# <cjk>	[2000]
+0xF9C6	U+899F	# <cjk>	[2000]
+0xF9C7	U+89B0	# <cjk>	[2000]
+0xF9C8	U+89B7	# <cjk>	[2000]
+0xF9C9	U+89D6	# <cjk>	[2000]
+0xF9CA	U+89D8	# <cjk>	[2000]
+0xF9CB	U+89EB	# <cjk>	[2000]
+0xF9CC	U+46A1	# <cjk>	[2000]
+0xF9CD	U+89F1	# <cjk>	[2000]
+0xF9CE	U+89F3	# <cjk>	[2000]
+0xF9CF	U+89FD	# <cjk>	[2000]
+0xF9D0	U+89FF	# <cjk>	[2000]
+0xF9D1	U+46AF	# <cjk>	[2000]
+0xF9D2	U+8A11	# <cjk>	[2000]
+0xF9D3	U+8A14	# <cjk>	[2000]
+0xF9D4	U+27985	# <cjk>	[2000]	[Unicode3.1]
+0xF9D5	U+8A21	# <cjk>	[2000]
+0xF9D6	U+8A35	# <cjk>	[2000]
+0xF9D7	U+8A3E	# <cjk>	[2000]
+0xF9D8	U+8A45	# <cjk>	[2000]
+0xF9D9	U+8A4D	# <cjk>	[2000]
+0xF9DA	U+8A58	# <cjk>	[2000]
+0xF9DB	U+8AAE	# <cjk>	[2000]
+0xF9DC	U+8A90	# <cjk>	[2000]
+0xF9DD	U+8AB7	# <cjk>	[2000]
+0xF9DE	U+8ABE	# <cjk>	[2000]
+0xF9DF	U+8AD7	# <cjk>	[2000]
+0xF9E0	U+8AFC	# <cjk>	[2000]
+0xF9E1	U+27A84	# <cjk>	[2000]	[Unicode3.1]
+0xF9E2	U+8B0A	# <cjk>	[2000]
+0xF9E3	U+8B05	# <cjk>	[2000]
+0xF9E4	U+8B0D	# <cjk>	[2000]
+0xF9E5	U+8B1C	# <cjk>	[2000]
+0xF9E6	U+8B1F	# <cjk>	[2000]
+0xF9E7	U+8B2D	# <cjk>	[2000]
+0xF9E8	U+8B43	# <cjk>	[2000]
+0xF9E9	U+470C	# <cjk>	[2000]
+0xF9EA	U+8B51	# <cjk>	[2000]
+0xF9EB	U+8B5E	# <cjk>	[2000]
+0xF9EC	U+8B76	# <cjk>	[2000]
+0xF9ED	U+8B7F	# <cjk>	[2000]
+0xF9EE	U+8B81	# <cjk>	[2000]
+0xF9EF	U+8B8B	# <cjk>	[2000]
+0xF9F0	U+8B94	# <cjk>	[2000]
+0xF9F1	U+8B95	# <cjk>	[2000]
+0xF9F2	U+8B9C	# <cjk>	[2000]
+0xF9F3	U+8B9E	# <cjk>	[2000]
+0xF9F4	U+8C39	# <cjk>	[2000]
+0xF9F5	U+27BB3	# <cjk>	[2000]	[Unicode3.1]
+0xF9F6	U+8C3D	# <cjk>	[2000]
+0xF9F7	U+27BBE	# <cjk>	[2000]	[Unicode3.1]
+0xF9F8	U+27BC7	# <cjk>	[2000]	[Unicode3.1]
+0xF9F9	U+8C45	# <cjk>	[2000]
+0xF9FA	U+8C47	# <cjk>	[2000]
+0xF9FB	U+8C4F	# <cjk>	[2000]
+0xF9FC	U+8C54	# <cjk>	[2000]
+0xFA40	U+8C57	# <cjk>	[2000]
+0xFA41	U+8C69	# <cjk>	[2000]
+0xFA42	U+8C6D	# <cjk>	[2000]
+0xFA43	U+8C73	# <cjk>	[2000]
+0xFA44	U+27CB8	# <cjk>	[2000]	[Unicode3.1]
+0xFA45	U+8C93	# <cjk>	[2000]
+0xFA46	U+8C92	# <cjk>	[2000]
+0xFA47	U+8C99	# <cjk>	[2000]
+0xFA48	U+4764	# <cjk>	[2000]
+0xFA49	U+8C9B	# <cjk>	[2000]
+0xFA4A	U+8CA4	# <cjk>	[2000]
+0xFA4B	U+8CD6	# <cjk>	[2000]
+0xFA4C	U+8CD5	# <cjk>	[2000]
+0xFA4D	U+8CD9	# <cjk>	[2000]
+0xFA4E	U+27DA0	# <cjk>	[2000]	[Unicode3.1]
+0xFA4F	U+8CF0	# <cjk>	[2000]
+0xFA50	U+8CF1	# <cjk>	[2000]
+0xFA51	U+27E10	# <cjk>	[2000]	[Unicode3.1]
+0xFA52	U+8D09	# <cjk>	[2000]
+0xFA53	U+8D0E	# <cjk>	[2000]
+0xFA54	U+8D6C	# <cjk>	[2000]
+0xFA55	U+8D84	# <cjk>	[2000]
+0xFA56	U+8D95	# <cjk>	[2000]
+0xFA57	U+8DA6	# <cjk>	[2000]
+0xFA58	U+27FB7	# <cjk>	[2000]	[Unicode3.1]
+0xFA59	U+8DC6	# <cjk>	[2000]
+0xFA5A	U+8DC8	# <cjk>	[2000]
+0xFA5B	U+8DD9	# <cjk>	[2000]
+0xFA5C	U+8DEC	# <cjk>	[2000]
+0xFA5D	U+8E0C	# <cjk>	[2000]
+0xFA5E	U+47FD	# <cjk>	[2000]
+0xFA5F	U+8DFD	# <cjk>	[2000]
+0xFA60	U+8E06	# <cjk>	[2000]
+0xFA61	U+2808A	# <cjk>	[2000]	[Unicode3.1]
+0xFA62	U+8E14	# <cjk>	[2000]
+0xFA63	U+8E16	# <cjk>	[2000]
+0xFA64	U+8E21	# <cjk>	[2000]
+0xFA65	U+8E22	# <cjk>	[2000]
+0xFA66	U+8E27	# <cjk>	[2000]
+0xFA67	U+280BB	# <cjk>	[2000]	[Unicode3.1]
+0xFA68	U+4816	# <cjk>	[2000]
+0xFA69	U+8E36	# <cjk>	[2000]
+0xFA6A	U+8E39	# <cjk>	[2000]
+0xFA6B	U+8E4B	# <cjk>	[2000]
+0xFA6C	U+8E54	# <cjk>	[2000]
+0xFA6D	U+8E62	# <cjk>	[2000]
+0xFA6E	U+8E6C	# <cjk>	[2000]
+0xFA6F	U+8E6D	# <cjk>	[2000]
+0xFA70	U+8E6F	# <cjk>	[2000]
+0xFA71	U+8E98	# <cjk>	[2000]
+0xFA72	U+8E9E	# <cjk>	[2000]
+0xFA73	U+8EAE	# <cjk>	[2000]
+0xFA74	U+8EB3	# <cjk>	[2000]
+0xFA75	U+8EB5	# <cjk>	[2000]
+0xFA76	U+8EB6	# <cjk>	[2000]
+0xFA77	U+8EBB	# <cjk>	[2000]
+0xFA78	U+28282	# <cjk>	[2000]	[Unicode3.1]
+0xFA79	U+8ED1	# <cjk>	[2000]
+0xFA7A	U+8ED4	# <cjk>	[2000]
+0xFA7B	U+484E	# <cjk>	[2000]
+0xFA7C	U+8EF9	# <cjk>	[2000]
+0xFA7D	U+282F3	# <cjk>	[2000]	[Unicode3.1]
+0xFA7E	U+8F00	# <cjk>	[2000]
+0xFA80	U+8F08	# <cjk>	[2000]
+0xFA81	U+8F17	# <cjk>	[2000]
+0xFA82	U+8F2B	# <cjk>	[2000]
+0xFA83	U+8F40	# <cjk>	[2000]
+0xFA84	U+8F4A	# <cjk>	[2000]
+0xFA85	U+8F58	# <cjk>	[2000]
+0xFA86	U+2840C	# <cjk>	[2000]	[Unicode3.1]
+0xFA87	U+8FA4	# <cjk>	[2000]
+0xFA88	U+8FB4	# <cjk>	[2000]
+0xFA89	U+FA66	# CJK COMPATIBILITY IDEOGRAPH-FA66	[2000]	[Unicode3.2]
+0xFA8A	U+8FB6	# <cjk>	[2000]
+0xFA8B	U+28455	# <cjk>	[2000]	[Unicode3.1]
+0xFA8C	U+8FC1	# <cjk>	[2000]
+0xFA8D	U+8FC6	# <cjk>	[2000]
+0xFA8E	U+FA24	# CJK COMPATIBILITY IDEOGRAPH-FA24	[2000]
+0xFA8F	U+8FCA	# <cjk>	[2000]
+0xFA90	U+8FCD	# <cjk>	[2000]
+0xFA91	U+8FD3	# <cjk>	[2000]
+0xFA92	U+8FD5	# <cjk>	[2000]
+0xFA93	U+8FE0	# <cjk>	[2000]
+0xFA94	U+8FF1	# <cjk>	[2000]
+0xFA95	U+8FF5	# <cjk>	[2000]
+0xFA96	U+8FFB	# <cjk>	[2000]
+0xFA97	U+9002	# <cjk>	[2000]
+0xFA98	U+900C	# <cjk>	[2000]
+0xFA99	U+9037	# <cjk>	[2000]
+0xFA9A	U+2856B	# <cjk>	[2000]	[Unicode3.1]
+0xFA9B	U+9043	# <cjk>	[2000]
+0xFA9C	U+9044	# <cjk>	[2000]
+0xFA9D	U+905D	# <cjk>	[2000]
+0xFA9E	U+285C8	# <cjk>	[2000]	[Unicode3.1]
+0xFA9F	U+285C9	# <cjk>	[2000]	[Unicode3.1]
+0xFAA0	U+9085	# <cjk>	[2000]
+0xFAA1	U+908C	# <cjk>	[2000]
+0xFAA2	U+9090	# <cjk>	[2000]
+0xFAA3	U+961D	# <cjk>	[2000]
+0xFAA4	U+90A1	# <cjk>	[2000]
+0xFAA5	U+48B5	# <cjk>	[2000]
+0xFAA6	U+90B0	# <cjk>	[2000]
+0xFAA7	U+90B6	# <cjk>	[2000]
+0xFAA8	U+90C3	# <cjk>	[2000]
+0xFAA9	U+90C8	# <cjk>	[2000]
+0xFAAA	U+286D7	# <cjk>	[2000]	[Unicode3.1]
+0xFAAB	U+90DC	# <cjk>	[2000]
+0xFAAC	U+90DF	# <cjk>	[2000]
+0xFAAD	U+286FA	# <cjk>	[2000]	[Unicode3.1]
+0xFAAE	U+90F6	# <cjk>	[2000]
+0xFAAF	U+90F2	# <cjk>	[2000]
+0xFAB0	U+9100	# <cjk>	[2000]
+0xFAB1	U+90EB	# <cjk>	[2000]
+0xFAB2	U+90FE	# <cjk>	[2000]
+0xFAB3	U+90FF	# <cjk>	[2000]
+0xFAB4	U+9104	# <cjk>	[2000]
+0xFAB5	U+9106	# <cjk>	[2000]
+0xFAB6	U+9118	# <cjk>	[2000]
+0xFAB7	U+911C	# <cjk>	[2000]
+0xFAB8	U+911E	# <cjk>	[2000]
+0xFAB9	U+9137	# <cjk>	[2000]
+0xFABA	U+9139	# <cjk>	[2000]
+0xFABB	U+913A	# <cjk>	[2000]
+0xFABC	U+9146	# <cjk>	[2000]
+0xFABD	U+9147	# <cjk>	[2000]
+0xFABE	U+9157	# <cjk>	[2000]
+0xFABF	U+9159	# <cjk>	[2000]
+0xFAC0	U+9161	# <cjk>	[2000]
+0xFAC1	U+9164	# <cjk>	[2000]
+0xFAC2	U+9174	# <cjk>	[2000]
+0xFAC3	U+9179	# <cjk>	[2000]
+0xFAC4	U+9185	# <cjk>	[2000]
+0xFAC5	U+918E	# <cjk>	[2000]
+0xFAC6	U+91A8	# <cjk>	[2000]
+0xFAC7	U+91AE	# <cjk>	[2000]
+0xFAC8	U+91B3	# <cjk>	[2000]
+0xFAC9	U+91B6	# <cjk>	[2000]
+0xFACA	U+91C3	# <cjk>	[2000]
+0xFACB	U+91C4	# <cjk>	[2000]
+0xFACC	U+91DA	# <cjk>	[2000]
+0xFACD	U+28949	# <cjk>	[2000]	[Unicode3.1]
+0xFACE	U+28946	# <cjk>	[2000]	[Unicode3.1]
+0xFACF	U+91EC	# <cjk>	[2000]
+0xFAD0	U+91EE	# <cjk>	[2000]
+0xFAD1	U+9201	# <cjk>	[2000]
+0xFAD2	U+920A	# <cjk>	[2000]
+0xFAD3	U+9216	# <cjk>	[2000]
+0xFAD4	U+9217	# <cjk>	[2000]
+0xFAD5	U+2896B	# <cjk>	[2000]	[Unicode3.1]
+0xFAD6	U+9233	# <cjk>	[2000]
+0xFAD7	U+9242	# <cjk>	[2000]
+0xFAD8	U+9247	# <cjk>	[2000]
+0xFAD9	U+924A	# <cjk>	[2000]
+0xFADA	U+924E	# <cjk>	[2000]
+0xFADB	U+9251	# <cjk>	[2000]
+0xFADC	U+9256	# <cjk>	[2000]
+0xFADD	U+9259	# <cjk>	[2000]
+0xFADE	U+9260	# <cjk>	[2000]
+0xFADF	U+9261	# <cjk>	[2000]
+0xFAE0	U+9265	# <cjk>	[2000]
+0xFAE1	U+9267	# <cjk>	[2000]
+0xFAE2	U+9268	# <cjk>	[2000]
+0xFAE3	U+28987	# <cjk>	[2000]	[Unicode3.1]
+0xFAE4	U+28988	# <cjk>	[2000]	[Unicode3.1]
+0xFAE5	U+927C	# <cjk>	[2000]
+0xFAE6	U+927D	# <cjk>	[2000]
+0xFAE7	U+927F	# <cjk>	[2000]
+0xFAE8	U+9289	# <cjk>	[2000]
+0xFAE9	U+928D	# <cjk>	[2000]
+0xFAEA	U+9297	# <cjk>	[2000]
+0xFAEB	U+9299	# <cjk>	[2000]
+0xFAEC	U+929F	# <cjk>	[2000]
+0xFAED	U+92A7	# <cjk>	[2000]
+0xFAEE	U+92AB	# <cjk>	[2000]
+0xFAEF	U+289BA	# <cjk>	[2000]	[Unicode3.1]
+0xFAF0	U+289BB	# <cjk>	[2000]	[Unicode3.1]
+0xFAF1	U+92B2	# <cjk>	[2000]
+0xFAF2	U+92BF	# <cjk>	[2000]
+0xFAF3	U+92C0	# <cjk>	[2000]
+0xFAF4	U+92C6	# <cjk>	[2000]
+0xFAF5	U+92CE	# <cjk>	[2000]
+0xFAF6	U+92D0	# <cjk>	[2000]
+0xFAF7	U+92D7	# <cjk>	[2000]
+0xFAF8	U+92D9	# <cjk>	[2000]
+0xFAF9	U+92E5	# <cjk>	[2000]
+0xFAFA	U+92E7	# <cjk>	[2000]
+0xFAFB	U+9311	# <cjk>	[2000]
+0xFAFC	U+28A1E	# <cjk>	[2000]	[Unicode3.1]
+0xFB40	U+28A29	# <cjk>	[2000]	[Unicode3.1]
+0xFB41	U+92F7	# <cjk>	[2000]
+0xFB42	U+92F9	# <cjk>	[2000]
+0xFB43	U+92FB	# <cjk>	[2000]
+0xFB44	U+9302	# <cjk>	[2000]
+0xFB45	U+930D	# <cjk>	[2000]
+0xFB46	U+9315	# <cjk>	[2000]
+0xFB47	U+931D	# <cjk>	[2000]
+0xFB48	U+931E	# <cjk>	[2000]
+0xFB49	U+9327	# <cjk>	[2000]
+0xFB4A	U+9329	# <cjk>	[2000]
+0xFB4B	U+28A71	# <cjk>	[2000]	[Unicode3.1]
+0xFB4C	U+28A43	# <cjk>	[2000]	[Unicode3.1]
+0xFB4D	U+9347	# <cjk>	[2000]
+0xFB4E	U+9351	# <cjk>	[2000]
+0xFB4F	U+9357	# <cjk>	[2000]
+0xFB50	U+935A	# <cjk>	[2000]
+0xFB51	U+936B	# <cjk>	[2000]
+0xFB52	U+9371	# <cjk>	[2000]
+0xFB53	U+9373	# <cjk>	[2000]
+0xFB54	U+93A1	# <cjk>	[2000]
+0xFB55	U+28A99	# <cjk>	[2000]	[Unicode3.1]
+0xFB56	U+28ACD	# <cjk>	[2000]	[Unicode3.1]
+0xFB57	U+9388	# <cjk>	[2000]
+0xFB58	U+938B	# <cjk>	[2000]
+0xFB59	U+938F	# <cjk>	[2000]
+0xFB5A	U+939E	# <cjk>	[2000]
+0xFB5B	U+93F5	# <cjk>	[2000]
+0xFB5C	U+28AE4	# <cjk>	[2000]	[Unicode3.1]
+0xFB5D	U+28ADD	# <cjk>	[2000]	[Unicode3.1]
+0xFB5E	U+93F1	# <cjk>	[2000]
+0xFB5F	U+93C1	# <cjk>	[2000]
+0xFB60	U+93C7	# <cjk>	[2000]
+0xFB61	U+93DC	# <cjk>	[2000]
+0xFB62	U+93E2	# <cjk>	[2000]
+0xFB63	U+93E7	# <cjk>	[2000]
+0xFB64	U+9409	# <cjk>	[2000]
+0xFB65	U+940F	# <cjk>	[2000]
+0xFB66	U+9416	# <cjk>	[2000]
+0xFB67	U+9417	# <cjk>	[2000]
+0xFB68	U+93FB	# <cjk>	[2000]
+0xFB69	U+9432	# <cjk>	[2000]
+0xFB6A	U+9434	# <cjk>	[2000]
+0xFB6B	U+943B	# <cjk>	[2000]
+0xFB6C	U+9445	# <cjk>	[2000]
+0xFB6D	U+28BC1	# <cjk>	[2000]	[Unicode3.1]
+0xFB6E	U+28BEF	# <cjk>	[2000]	[Unicode3.1]
+0xFB6F	U+946D	# <cjk>	[2000]
+0xFB70	U+946F	# <cjk>	[2000]
+0xFB71	U+9578	# <cjk>	[2000]
+0xFB72	U+9579	# <cjk>	[2000]
+0xFB73	U+9586	# <cjk>	[2000]
+0xFB74	U+958C	# <cjk>	[2000]
+0xFB75	U+958D	# <cjk>	[2000]
+0xFB76	U+28D10	# <cjk>	[2000]	[Unicode3.1]
+0xFB77	U+95AB	# <cjk>	[2000]
+0xFB78	U+95B4	# <cjk>	[2000]
+0xFB79	U+28D71	# <cjk>	[2000]	[Unicode3.1]
+0xFB7A	U+95C8	# <cjk>	[2000]
+0xFB7B	U+28DFB	# <cjk>	[2000]	[Unicode3.1]
+0xFB7C	U+28E1F	# <cjk>	[2000]	[Unicode3.1]
+0xFB7D	U+962C	# <cjk>	[2000]
+0xFB7E	U+9633	# <cjk>	[2000]
+0xFB80	U+9634	# <cjk>	[2000]
+0xFB81	U+28E36	# <cjk>	[2000]	[Unicode3.1]
+0xFB82	U+963C	# <cjk>	[2000]
+0xFB83	U+9641	# <cjk>	[2000]
+0xFB84	U+9661	# <cjk>	[2000]
+0xFB85	U+28E89	# <cjk>	[2000]	[Unicode3.1]
+0xFB86	U+9682	# <cjk>	[2000]
+0xFB87	U+28EEB	# <cjk>	[2000]	[Unicode3.1]
+0xFB88	U+969A	# <cjk>	[2000]
+0xFB89	U+28F32	# <cjk>	[2000]	[Unicode3.1]
+0xFB8A	U+49E7	# <cjk>	[2000]
+0xFB8B	U+96A9	# <cjk>	[2000]
+0xFB8C	U+96AF	# <cjk>	[2000]
+0xFB8D	U+96B3	# <cjk>	[2000]
+0xFB8E	U+96BA	# <cjk>	[2000]
+0xFB8F	U+96BD	# <cjk>	[2000]
+0xFB90	U+49FA	# <cjk>	[2000]
+0xFB91	U+28FF8	# <cjk>	[2000]	[Unicode3.1]
+0xFB92	U+96D8	# <cjk>	[2000]
+0xFB93	U+96DA	# <cjk>	[2000]
+0xFB94	U+96DD	# <cjk>	[2000]
+0xFB95	U+4A04	# <cjk>	[2000]
+0xFB96	U+9714	# <cjk>	[2000]
+0xFB97	U+9723	# <cjk>	[2000]
+0xFB98	U+4A29	# <cjk>	[2000]
+0xFB99	U+9736	# <cjk>	[2000]
+0xFB9A	U+9741	# <cjk>	[2000]
+0xFB9B	U+9747	# <cjk>	[2000]
+0xFB9C	U+9755	# <cjk>	[2000]
+0xFB9D	U+9757	# <cjk>	[2000]
+0xFB9E	U+975B	# <cjk>	[2000]
+0xFB9F	U+976A	# <cjk>	[2000]
+0xFBA0	U+292A0	# <cjk>	[2000]	[Unicode3.1]
+0xFBA1	U+292B1	# <cjk>	[2000]	[Unicode3.1]
+0xFBA2	U+9796	# <cjk>	[2000]
+0xFBA3	U+979A	# <cjk>	[2000]
+0xFBA4	U+979E	# <cjk>	[2000]
+0xFBA5	U+97A2	# <cjk>	[2000]
+0xFBA6	U+97B1	# <cjk>	[2000]
+0xFBA7	U+97B2	# <cjk>	[2000]
+0xFBA8	U+97BE	# <cjk>	[2000]
+0xFBA9	U+97CC	# <cjk>	[2000]
+0xFBAA	U+97D1	# <cjk>	[2000]
+0xFBAB	U+97D4	# <cjk>	[2000]
+0xFBAC	U+97D8	# <cjk>	[2000]
+0xFBAD	U+97D9	# <cjk>	[2000]
+0xFBAE	U+97E1	# <cjk>	[2000]
+0xFBAF	U+97F1	# <cjk>	[2000]
+0xFBB0	U+9804	# <cjk>	[2000]
+0xFBB1	U+980D	# <cjk>	[2000]
+0xFBB2	U+980E	# <cjk>	[2000]
+0xFBB3	U+9814	# <cjk>	[2000]
+0xFBB4	U+9816	# <cjk>	[2000]
+0xFBB5	U+4ABC	# <cjk>	[2000]
+0xFBB6	U+29490	# <cjk>	[2000]	[Unicode3.1]
+0xFBB7	U+9823	# <cjk>	[2000]
+0xFBB8	U+9832	# <cjk>	[2000]
+0xFBB9	U+9833	# <cjk>	[2000]
+0xFBBA	U+9825	# <cjk>	[2000]
+0xFBBB	U+9847	# <cjk>	[2000]
+0xFBBC	U+9866	# <cjk>	[2000]
+0xFBBD	U+98AB	# <cjk>	[2000]
+0xFBBE	U+98AD	# <cjk>	[2000]
+0xFBBF	U+98B0	# <cjk>	[2000]
+0xFBC0	U+295CF	# <cjk>	[2000]	[Unicode3.1]
+0xFBC1	U+98B7	# <cjk>	[2000]
+0xFBC2	U+98B8	# <cjk>	[2000]
+0xFBC3	U+98BB	# <cjk>	[2000]
+0xFBC4	U+98BC	# <cjk>	[2000]
+0xFBC5	U+98BF	# <cjk>	[2000]
+0xFBC6	U+98C2	# <cjk>	[2000]
+0xFBC7	U+98C7	# <cjk>	[2000]
+0xFBC8	U+98CB	# <cjk>	[2000]
+0xFBC9	U+98E0	# <cjk>	[2000]
+0xFBCA	U+2967F	# <cjk>	[2000]	[Unicode3.1]
+0xFBCB	U+98E1	# <cjk>	[2000]
+0xFBCC	U+98E3	# <cjk>	[2000]
+0xFBCD	U+98E5	# <cjk>	[2000]
+0xFBCE	U+98EA	# <cjk>	[2000]
+0xFBCF	U+98F0	# <cjk>	[2000]
+0xFBD0	U+98F1	# <cjk>	[2000]
+0xFBD1	U+98F3	# <cjk>	[2000]
+0xFBD2	U+9908	# <cjk>	[2000]
+0xFBD3	U+4B3B	# <cjk>	[2000]
+0xFBD4	U+296F0	# <cjk>	[2000]	[Unicode3.1]
+0xFBD5	U+9916	# <cjk>	[2000]
+0xFBD6	U+9917	# <cjk>	[2000]
+0xFBD7	U+29719	# <cjk>	[2000]	[Unicode3.1]
+0xFBD8	U+991A	# <cjk>	[2000]
+0xFBD9	U+991B	# <cjk>	[2000]
+0xFBDA	U+991C	# <cjk>	[2000]
+0xFBDB	U+29750	# <cjk>	[2000]	[Unicode3.1]
+0xFBDC	U+9931	# <cjk>	[2000]
+0xFBDD	U+9932	# <cjk>	[2000]
+0xFBDE	U+9933	# <cjk>	[2000]
+0xFBDF	U+993A	# <cjk>	[2000]
+0xFBE0	U+993B	# <cjk>	[2000]
+0xFBE1	U+993C	# <cjk>	[2000]
+0xFBE2	U+9940	# <cjk>	[2000]
+0xFBE3	U+9941	# <cjk>	[2000]
+0xFBE4	U+9946	# <cjk>	[2000]
+0xFBE5	U+994D	# <cjk>	[2000]
+0xFBE6	U+994E	# <cjk>	[2000]
+0xFBE7	U+995C	# <cjk>	[2000]
+0xFBE8	U+995F	# <cjk>	[2000]
+0xFBE9	U+9960	# <cjk>	[2000]
+0xFBEA	U+99A3	# <cjk>	[2000]
+0xFBEB	U+99A6	# <cjk>	[2000]
+0xFBEC	U+99B9	# <cjk>	[2000]
+0xFBED	U+99BD	# <cjk>	[2000]
+0xFBEE	U+99BF	# <cjk>	[2000]
+0xFBEF	U+99C3	# <cjk>	[2000]
+0xFBF0	U+99C9	# <cjk>	[2000]
+0xFBF1	U+99D4	# <cjk>	[2000]
+0xFBF2	U+99D9	# <cjk>	[2000]
+0xFBF3	U+99DE	# <cjk>	[2000]
+0xFBF4	U+298C6	# <cjk>	[2000]	[Unicode3.1]
+0xFBF5	U+99F0	# <cjk>	[2000]
+0xFBF6	U+99F9	# <cjk>	[2000]
+0xFBF7	U+99FC	# <cjk>	[2000]
+0xFBF8	U+9A0A	# <cjk>	[2000]
+0xFBF9	U+9A11	# <cjk>	[2000]
+0xFBFA	U+9A16	# <cjk>	[2000]
+0xFBFB	U+9A1A	# <cjk>	[2000]
+0xFBFC	U+9A20	# <cjk>	[2000]
+0xFC40	U+9A31	# <cjk>	[2000]
+0xFC41	U+9A36	# <cjk>	[2000]
+0xFC42	U+9A44	# <cjk>	[2000]
+0xFC43	U+9A4C	# <cjk>	[2000]
+0xFC44	U+9A58	# <cjk>	[2000]
+0xFC45	U+4BC2	# <cjk>	[2000]
+0xFC46	U+9AAF	# <cjk>	[2000]
+0xFC47	U+4BCA	# <cjk>	[2000]
+0xFC48	U+9AB7	# <cjk>	[2000]
+0xFC49	U+4BD2	# <cjk>	[2000]
+0xFC4A	U+9AB9	# <cjk>	[2000]
+0xFC4B	U+29A72	# <cjk>	[2000]	[Unicode3.1]
+0xFC4C	U+9AC6	# <cjk>	[2000]
+0xFC4D	U+9AD0	# <cjk>	[2000]
+0xFC4E	U+9AD2	# <cjk>	[2000]
+0xFC4F	U+9AD5	# <cjk>	[2000]
+0xFC50	U+4BE8	# <cjk>	[2000]
+0xFC51	U+9ADC	# <cjk>	[2000]
+0xFC52	U+9AE0	# <cjk>	[2000]
+0xFC53	U+9AE5	# <cjk>	[2000]
+0xFC54	U+9AE9	# <cjk>	[2000]
+0xFC55	U+9B03	# <cjk>	[2000]
+0xFC56	U+9B0C	# <cjk>	[2000]
+0xFC57	U+9B10	# <cjk>	[2000]
+0xFC58	U+9B12	# <cjk>	[2000]
+0xFC59	U+9B16	# <cjk>	[2000]
+0xFC5A	U+9B1C	# <cjk>	[2000]
+0xFC5B	U+9B2B	# <cjk>	[2000]
+0xFC5C	U+9B33	# <cjk>	[2000]
+0xFC5D	U+9B3D	# <cjk>	[2000]
+0xFC5E	U+4C20	# <cjk>	[2000]
+0xFC5F	U+9B4B	# <cjk>	[2000]
+0xFC60	U+9B63	# <cjk>	[2000]
+0xFC61	U+9B65	# <cjk>	[2000]
+0xFC62	U+9B6B	# <cjk>	[2000]
+0xFC63	U+9B6C	# <cjk>	[2000]
+0xFC64	U+9B73	# <cjk>	[2000]
+0xFC65	U+9B76	# <cjk>	[2000]
+0xFC66	U+9B77	# <cjk>	[2000]
+0xFC67	U+9BA6	# <cjk>	[2000]
+0xFC68	U+9BAC	# <cjk>	[2000]
+0xFC69	U+9BB1	# <cjk>	[2000]
+0xFC6A	U+29DDB	# <cjk>	[2000]	[Unicode3.1]
+0xFC6B	U+29E3D	# <cjk>	[2000]	[Unicode3.1]
+0xFC6C	U+9BB2	# <cjk>	[2000]
+0xFC6D	U+9BB8	# <cjk>	[2000]
+0xFC6E	U+9BBE	# <cjk>	[2000]
+0xFC6F	U+9BC7	# <cjk>	[2000]
+0xFC70	U+9BF3	# <cjk>	[2000]
+0xFC71	U+9BD8	# <cjk>	[2000]
+0xFC72	U+9BDD	# <cjk>	[2000]
+0xFC73	U+9BE7	# <cjk>	[2000]
+0xFC74	U+9BEA	# <cjk>	[2000]
+0xFC75	U+9BEB	# <cjk>	[2000]
+0xFC76	U+9BEF	# <cjk>	[2000]
+0xFC77	U+9BEE	# <cjk>	[2000]
+0xFC78	U+29E15	# <cjk>	[2000]	[Unicode3.1]
+0xFC79	U+9BFA	# <cjk>	[2000]
+0xFC7A	U+29E8A	# <cjk>	[2000]	[Unicode3.1]
+0xFC7B	U+9BF7	# <cjk>	[2000]
+0xFC7C	U+29E49	# <cjk>	[2000]	[Unicode3.1]
+0xFC7D	U+9C16	# <cjk>	[2000]
+0xFC7E	U+9C18	# <cjk>	[2000]
+0xFC80	U+9C19	# <cjk>	[2000]
+0xFC81	U+9C1A	# <cjk>	[2000]
+0xFC82	U+9C1D	# <cjk>	[2000]
+0xFC83	U+9C22	# <cjk>	[2000]
+0xFC84	U+9C27	# <cjk>	[2000]
+0xFC85	U+9C29	# <cjk>	[2000]
+0xFC86	U+9C2A	# <cjk>	[2000]
+0xFC87	U+29EC4	# <cjk>	[2000]	[Unicode3.1]
+0xFC88	U+9C31	# <cjk>	[2000]
+0xFC89	U+9C36	# <cjk>	[2000]
+0xFC8A	U+9C37	# <cjk>	[2000]
+0xFC8B	U+9C45	# <cjk>	[2000]
+0xFC8C	U+9C5C	# <cjk>	[2000]
+0xFC8D	U+29EE9	# <cjk>	[2000]	[Unicode3.1]
+0xFC8E	U+9C49	# <cjk>	[2000]
+0xFC8F	U+9C4A	# <cjk>	[2000]
+0xFC90	U+29EDB	# <cjk>	[2000]	[Unicode3.1]
+0xFC91	U+9C54	# <cjk>	[2000]
+0xFC92	U+9C58	# <cjk>	[2000]
+0xFC93	U+9C5B	# <cjk>	[2000]
+0xFC94	U+9C5D	# <cjk>	[2000]
+0xFC95	U+9C5F	# <cjk>	[2000]
+0xFC96	U+9C69	# <cjk>	[2000]
+0xFC97	U+9C6A	# <cjk>	[2000]
+0xFC98	U+9C6B	# <cjk>	[2000]
+0xFC99	U+9C6D	# <cjk>	[2000]
+0xFC9A	U+9C6E	# <cjk>	[2000]
+0xFC9B	U+9C70	# <cjk>	[2000]
+0xFC9C	U+9C72	# <cjk>	[2000]
+0xFC9D	U+9C75	# <cjk>	[2000]
+0xFC9E	U+9C7A	# <cjk>	[2000]
+0xFC9F	U+9CE6	# <cjk>	[2000]
+0xFCA0	U+9CF2	# <cjk>	[2000]
+0xFCA1	U+9D0B	# <cjk>	[2000]
+0xFCA2	U+9D02	# <cjk>	[2000]
+0xFCA3	U+29FCE	# <cjk>	[2000]	[Unicode3.1]
+0xFCA4	U+9D11	# <cjk>	[2000]
+0xFCA5	U+9D17	# <cjk>	[2000]
+0xFCA6	U+9D18	# <cjk>	[2000]
+0xFCA7	U+2A02F	# <cjk>	[2000]	[Unicode3.1]
+0xFCA8	U+4CC4	# <cjk>	[2000]
+0xFCA9	U+2A01A	# <cjk>	[2000]	[Unicode3.1]
+0xFCAA	U+9D32	# <cjk>	[2000]
+0xFCAB	U+4CD1	# <cjk>	[2000]
+0xFCAC	U+9D42	# <cjk>	[2000]
+0xFCAD	U+9D4A	# <cjk>	[2000]
+0xFCAE	U+9D5F	# <cjk>	[2000]
+0xFCAF	U+9D62	# <cjk>	[2000]
+0xFCB0	U+2A0F9	# <cjk>	[2000]	[Unicode3.1]
+0xFCB1	U+9D69	# <cjk>	[2000]
+0xFCB2	U+9D6B	# <cjk>	[2000]
+0xFCB3	U+2A082	# <cjk>	[2000]	[Unicode3.1]
+0xFCB4	U+9D73	# <cjk>	[2000]
+0xFCB5	U+9D76	# <cjk>	[2000]
+0xFCB6	U+9D77	# <cjk>	[2000]
+0xFCB7	U+9D7E	# <cjk>	[2000]
+0xFCB8	U+9D84	# <cjk>	[2000]
+0xFCB9	U+9D8D	# <cjk>	[2000]
+0xFCBA	U+9D99	# <cjk>	[2000]
+0xFCBB	U+9DA1	# <cjk>	[2000]
+0xFCBC	U+9DBF	# <cjk>	[2000]
+0xFCBD	U+9DB5	# <cjk>	[2000]
+0xFCBE	U+9DB9	# <cjk>	[2000]
+0xFCBF	U+9DBD	# <cjk>	[2000]
+0xFCC0	U+9DC3	# <cjk>	[2000]
+0xFCC1	U+9DC7	# <cjk>	[2000]
+0xFCC2	U+9DC9	# <cjk>	[2000]
+0xFCC3	U+9DD6	# <cjk>	[2000]
+0xFCC4	U+9DDA	# <cjk>	[2000]
+0xFCC5	U+9DDF	# <cjk>	[2000]
+0xFCC6	U+9DE0	# <cjk>	[2000]
+0xFCC7	U+9DE3	# <cjk>	[2000]
+0xFCC8	U+9DF4	# <cjk>	[2000]
+0xFCC9	U+4D07	# <cjk>	[2000]
+0xFCCA	U+9E0A	# <cjk>	[2000]
+0xFCCB	U+9E02	# <cjk>	[2000]
+0xFCCC	U+9E0D	# <cjk>	[2000]
+0xFCCD	U+9E19	# <cjk>	[2000]
+0xFCCE	U+9E1C	# <cjk>	[2000]
+0xFCCF	U+9E1D	# <cjk>	[2000]
+0xFCD0	U+9E7B	# <cjk>	[2000]
+0xFCD1	U+22218	# <cjk>	[2000]	[Unicode3.1]
+0xFCD2	U+9E80	# <cjk>	[2000]
+0xFCD3	U+9E85	# <cjk>	[2000]
+0xFCD4	U+9E9B	# <cjk>	[2000]
+0xFCD5	U+9EA8	# <cjk>	[2000]
+0xFCD6	U+2A38C	# <cjk>	[2000]	[Unicode3.1]
+0xFCD7	U+9EBD	# <cjk>	[2000]
+0xFCD8	U+2A437	# <cjk>	[2000]	[Unicode3.1]
+0xFCD9	U+9EDF	# <cjk>	[2000]
+0xFCDA	U+9EE7	# <cjk>	[2000]
+0xFCDB	U+9EEE	# <cjk>	[2000]
+0xFCDC	U+9EFF	# <cjk>	[2000]
+0xFCDD	U+9F02	# <cjk>	[2000]
+0xFCDE	U+4D77	# <cjk>	[2000]
+0xFCDF	U+9F03	# <cjk>	[2000]
+0xFCE0	U+9F17	# <cjk>	[2000]
+0xFCE1	U+9F19	# <cjk>	[2000]
+0xFCE2	U+9F2F	# <cjk>	[2000]
+0xFCE3	U+9F37	# <cjk>	[2000]
+0xFCE4	U+9F3A	# <cjk>	[2000]
+0xFCE5	U+9F3D	# <cjk>	[2000]
+0xFCE6	U+9F41	# <cjk>	[2000]
+0xFCE7	U+9F45	# <cjk>	[2000]
+0xFCE8	U+9F46	# <cjk>	[2000]
+0xFCE9	U+9F53	# <cjk>	[2000]
+0xFCEA	U+9F55	# <cjk>	[2000]
+0xFCEB	U+9F58	# <cjk>	[2000]
+0xFCEC	U+2A5F1	# <cjk>	[2000]	[Unicode3.1]
+0xFCED	U+9F5D	# <cjk>	[2000]
+0xFCEE	U+2A602	# <cjk>	[2000]	[Unicode3.1]
+0xFCEF	U+9F69	# <cjk>	[2000]
+0xFCF0	U+2A61A	# <cjk>	[2000]	[Unicode3.1]
+0xFCF1	U+9F6D	# <cjk>	[2000]
+0xFCF2	U+9F70	# <cjk>	[2000]
+0xFCF3	U+9F75	# <cjk>	[2000]
+0xFCF4	U+2A6B2	# <cjk>	[2000]	[Unicode3.1]
--- a/make/tools/Makefile	Wed Apr 30 17:34:41 2008 -0700
+++ b/make/tools/Makefile	Tue May 13 11:33:06 2008 -0700
@@ -51,7 +51,8 @@
   jdwpgen                   \
   makeclasslist             \
   strip_properties          \
-  winver
+  winver                    \
+  CharsetMapping
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/src/build/tools/charsetmapping/CharsetMapping.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.*;
+
+public class CharsetMapping {
+    public final static char UNMAPPABLE_DECODING = '\uFFFD';
+    public final static int  UNMAPPABLE_ENCODING = -1;
+
+    public static class Entry {
+        public int bs;   //byte sequence reps
+        public int cp;   //Unicode codepoint
+        public int cp2;  //CC of composite
+
+        public Entry () {}
+        public Entry (int bytes, int cp, int cp2) {
+            this.bs = bytes;
+            this.cp = cp;
+            this.cp2 = cp2;
+        }
+    }
+
+    static Comparator<Entry> comparatorCP =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.cp - m2.cp;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    public static class Parser {
+        static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*");
+        static final int gBS = 1;
+        static final int gCP = 2;
+        static final int gCP2 = 3;
+
+        BufferedReader reader;
+        boolean closed;
+        Matcher matcher;
+        int gbs, gcp, gcp2;
+
+        public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2)
+            throws IOException
+        {
+            this.reader = new BufferedReader(new InputStreamReader(in));
+            this.closed = false;
+            this.matcher = p.matcher("");
+            this.gbs = gbs;
+            this.gcp = gcp;
+            this.gcp2 = gcp2;
+        }
+
+        public Parser (InputStream in, Pattern p) throws IOException {
+            this(in, p, gBS, gCP, gCP2);
+        }
+
+        public Parser (InputStream in) throws IOException {
+            this(in, basic, gBS, gCP, gCP2);
+        }
+
+        protected boolean isDirective(String line) {
+            return line.startsWith("#");
+        }
+
+        protected Entry parse(Matcher matcher, Entry mapping) {
+            mapping.bs = Integer.parseInt(matcher.group(gbs), 16);
+            mapping.cp = Integer.parseInt(matcher.group(gcp), 16);
+            if (gcp2 <= matcher.groupCount() &&
+                matcher.group(gcp2) != null)
+                mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16);
+            else
+                mapping.cp2 = 0;
+            return mapping;
+        }
+
+        public Entry next() throws Exception {
+            return next(new Entry());
+        }
+
+        // returns null and closes the input stream if the eof has beenreached.
+        public Entry next(Entry mapping) throws Exception {
+            if (closed)
+                return null;
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (isDirective(line))
+                    continue;
+                matcher.reset(line);
+                if (!matcher.lookingAt()) {
+                    //System.out.println("Missed: " + line);
+                    continue;
+                }
+                return parse(matcher, mapping);
+            }
+            reader.close();
+            closed = true;
+            return null;
+        }
+    }
+
+    // tags of different charset mapping tables
+    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
+    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
+    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
+    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
+    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
+    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
+    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
+
+    private static final void writeShort(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 8) & 0xFF);
+        out.write((data      ) & 0xFF);
+    }
+
+    private static final void writeShortArray(OutputStream out,
+                                              int type,
+                                              int[] array,
+                                              int off,
+                                              int size)   // exclusive
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, size);
+        for (int i = off; i < size; i++) {
+            writeShort(out, array[off+i]);
+        }
+    }
+
+    public static final void writeSIZE(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 24) & 0xFF);
+        out.write((data >>> 16) & 0xFF);
+        out.write((data >>>  8) & 0xFF);
+        out.write((data       ) & 0xFF);
+    }
+
+    public static void writeINDEXC2B(OutputStream out, int[] indexC2B)
+        throws IOException
+    {
+        writeShort(out, MAP_INDEXC2B);
+        writeShort(out, indexC2B.length);
+        int off = 0;
+        for (int i = 0; i < indexC2B.length; i++) {
+            if (indexC2B[i] != 0) {
+                writeShort(out, off);
+                off += 256;
+            } else {
+                writeShort(out, -1);
+            }
+        }
+    }
+
+    public static void writeSINGLEBYTE(OutputStream out, int[] sb)
+        throws IOException
+    {
+        writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256);
+    }
+
+    private static void writeDOUBLEBYTE(OutputStream out,
+                                        int type,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, b1Min);
+        writeShort(out, b1Max);
+        writeShort(out, b2Min);
+        writeShort(out, b2Max);
+        writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1));
+
+        for (int b1 = b1Min; b1 <= b1Max; b1++) {
+            for (int b2 = b2Min; b2 <= b2Max; b2++) {
+                writeShort(out, db[b1 * 256 + b2]);
+            }
+        }
+    }
+    public static void writeDOUBLEBYTE1(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    public static void writeDOUBLEBYTE2(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    // the c2b table is output as well
+    public static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_SUPPLEMENT);
+        writeShort(out, size * 2);
+        // db at first half, cc at the low half
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+
+        //c2b
+        writeShort(out, MAP_SUPPLEMENT_C2B);
+        writeShort(out, size*2);
+        Arrays.sort(supp, 0, size, comparatorCP);
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+    }
+
+    public static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_COMPOSITE);
+        writeShort(out, size*3);
+        // comp is sorted already
+        for (int i = 0; i < size; i++) {
+            writeShort(out, (char)comp[i].bs);
+            writeShort(out, (char)comp[i].cp);
+            writeShort(out, (char)comp[i].cp2);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/src/build/tools/charsetmapping/GenerateMapping.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.regex.*;
+import static build.tools.charsetmapping.CharsetMapping.*;
+
+public class GenerateMapping {
+    public static void main(String argv[]) throws IOException {
+        if (argv.length < 2) {
+            System.out.println("Usage: java GenCSData fMap fDat");
+            System.exit(1);
+        }
+        genDataJIS0213(new FileInputStream(argv[0]),
+                       new FileOutputStream(argv[1]));
+    }
+
+    // regex pattern to parse the "jis0213.map" file
+    static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*");
+    private static void genDataJIS0213(InputStream in, OutputStream out)
+    {
+        int[] sb = new int[0x100];                         // singlebyte
+        int[] db = new int[0x10000];                       // doublebyte
+        int[] indexC2B = new int[256];
+        Entry[] supp = new Entry[0x10000];
+        Entry[] comp = new Entry[0x100];
+        int suppTotal = 0;
+        int compTotal = 0;
+
+        int b1Min1 = 0x81;
+        int b1Max1 = 0x9f;
+        int b1Min2 = 0xe0;
+        int b1Max2 = 0xfc;
+        int b2Min = 0x40;
+        int b2Max = 0xfe;
+
+        //init
+        for (int i = 0; i < 0x80; i++) sb[i] = i;
+        for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING;
+        for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING;
+        try {
+            Parser p = new Parser(in, sjis0213);
+            Entry  e = null;
+            while ((e = p.next()) != null) {
+                if (e.cp2 != 0) {
+                    comp[compTotal++] = e;
+                } else {
+                    if (e.cp <= 0xffff) {
+                        if (e.bs <= 0xff)
+                            sb[e.bs] = e.cp;
+                        else
+                            db[e.bs] = e.cp;
+                        indexC2B[e.cp>>8] = 1;
+                    } else {
+                        supp[suppTotal++] = e;
+                    }
+                }
+            }
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            // c2b Index Table, always the first one
+            writeINDEXC2B(baos, indexC2B);
+            writeSINGLEBYTE(baos, sb);
+            writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max);
+            writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max);
+            writeSUPPLEMENT(baos, supp, suppTotal);
+            writeCOMPOSITE(baos, comp, compTotal);
+            writeSIZE(out, baos.size());
+            baos.writeTo(out);
+            out.close();
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+    }
+}
--- a/src/share/bin/emessages.h	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/bin/emessages.h	Tue May 13 11:33:06 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -50,7 +50,7 @@
 #define JAR_ERROR2      "Error: Unable to access jarfile %s"
 #define JAR_ERROR3      "Error: Invalid or corrupt jarfile %s"
 
-#define CLS_ERROR1      "Error: Could not find the main class.\n" JNI_ERROR
+#define CLS_ERROR1      "Error: Could not find the main class %s.\n" JNI_ERROR
 #define CLS_ERROR2      "Error: Failed to load Main Class: %s\n%s"
 #define CLS_ERROR3      "Error: No main method found in specified class.\n" GEN_ERROR
 #define CLS_ERROR4      "Error: Main method not public\n" GEN_ERROR
--- a/src/share/bin/java.c	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/bin/java.c	Tue May 13 11:33:06 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -414,7 +414,7 @@
         mainClass = LoadClass(env, classname);
         if(mainClass == NULL) { /* exception occured */
             ReportExceptionDescription(env);
-            ReportErrorMessage(CLS_ERROR1);
+            ReportErrorMessage(CLS_ERROR1, classname);
             goto leave;
         }
         (*env)->ReleaseStringUTFChars(env, mainClassName, classname);
@@ -433,7 +433,7 @@
       mainClass = LoadClass(env, classname);
       if(mainClass == NULL) { /* exception occured */
         ReportExceptionDescription(env);
-        ReportErrorMessage(CLS_ERROR1);
+        ReportErrorMessage(CLS_ERROR1, classname);
         goto leave;
       }
       (*env)->ReleaseStringUTFChars(env, mainClassName, classname);
--- a/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -25,6 +25,8 @@
 
 package com.sun.management;
 
+import java.lang.management.PlatformManagedObject;
+
 /**
  * Diagnostic management interface for the HotSpot Virtual Machine.
  * The diagnostic MBean is registered to the platform MBeanServer
@@ -35,8 +37,13 @@
  * <blockquote>
  *    <tt>com.sun.management:type=HotSpotDiagnostic</tt>
  * </blockquote>
+.*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  */
-public interface HotSpotDiagnosticMXBean {
+public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
     /**
      * Dumps the heap to the <tt>outputFile</tt> file in the same
      * format as the hprof heap dump.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/Probe.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+/**
+ * The {@code Probe} interface represents a tracepoint.
+ *
+ * A {@code Probe} instance is obtained by calling the
+ * {@code Provider.getProbe()} method of a provider instance created by
+ * {@code ProviderFactory.createProvider()}.  A {@code Probe} can be used to
+ * trigger a probe manually (provided the correct arguments are passed to
+ * it), or to check a probe to see if anything is currently tracing it.
+ * <p>
+ * A tracing check can be used to avoid lengthy work that might be
+ * needed to set up the probe's arguments.  However, checking
+ * whether the probe is enabled generally takes the same amount of time
+ * as actually triggering the probe. So, you should only check a probe's status
+ * without triggering it if setting up the arguments is very expensive.
+ * <p>
+ * Users do not need to implement this interface: instances are
+ * created automatically by the system when a {@code Provider)} instance is
+ * created.
+ * <p>
+ * @since 1.7
+ */
+
+public interface Probe {
+    /**
+     * Checks whether there is an active trace of this probe.
+     *
+     * @return true if an active trace is detected.
+     */
+    boolean isEnabled();
+
+    /**
+     * Determines whether a tracepoint is enabled.
+     *
+     * Typically, users do not need to use this method. It is called
+     * automatically when a Provider's instance method is called. Calls to
+     * this method expect the arguments to match the declared parameters for
+     * the method associated with the probe.
+     *
+     * @param args the parameters to pass to the method.
+     * @throws IllegalArgumentException if the provided parameters do not
+     * match the method declaration for this probe.
+     */
+    void trigger(Object ... args);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProbeName.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to override the name of a probe.
+ * <p>
+ * This annotation can be added to a method in a user-defined {@code Provider}
+ * interface, to set the name that will be used for the generated probe
+ * associated with that method.  Without this annotation, the name will be the
+ * name of the method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ProbeName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/Provider.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+/**
+ * {@code Provider} is a superinterface for user-defined tracing providers.
+ * <p>
+ * To define tracepoints, users must extend this interface
+ * and then use a {@code ProviderFactory} to create an instance of the
+ * newly-defined interface.  Each method in the defined interface represents a
+ * tracepoint (or probe), which can be triggered by calling the associated
+ * method on the returned instance.
+ * <p>
+ * This interface also contains a {@code getProbe()} method, which can be
+ * used to get direct handles to the {@code Probe} objects themselves.
+ * {@code Probe} objects can be triggered manually, or they can be queried to
+ * check their state.
+ * <p>
+ * When an application has finished triggering probes, it should call
+ * {@code dispose()} to free up any system resources associated with the
+ * Provider.
+ * <p>
+ * All methods declared in a subclass of this interface should have a
+ * {@code void} return type. Methods can have parameters, and when called the
+ * values of the arguments will be passed to the tracing implementation.
+ * If any methods do not have a {@code void} return type, an
+ * {@code java.lang.IllegalArgumentException} will be thrown when the
+ * provider is registered.
+ * @since 1.7
+ */
+
+public interface Provider {
+    /**
+     * Retrieves a reference to a Probe object, which is used to check status
+     * or to trigger the probe manually.
+     *
+     * If the provided method parameter is not a method of the provider
+     * interface,  or if the provider interface has been disposed, then
+     * this returns null
+     *
+     * @param method a method declared in the provider.
+     * @return the specified probe represented by that method, or null.
+     */
+    Probe getProbe(java.lang.reflect.Method method);
+
+    /**
+     * Disposes system resources associated with this provider.
+     *
+     * After calling this method, triggering the probes will have no effect.
+     * Additional calls to this method after the first call are ignored.
+     */
+    void dispose();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProviderFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,110 @@
+
+package com.sun.tracing;
+
+import java.util.HashSet;
+import java.io.PrintStream;
+import java.lang.reflect.Field;
+import java.util.logging.Logger;
+
+import sun.tracing.NullProviderFactory;
+import sun.tracing.PrintStreamProviderFactory;
+import sun.tracing.MultiplexProviderFactory;
+import sun.tracing.dtrace.DTraceProviderFactory;
+
+/**
+ * {@code ProviderFactory} is a factory class used to create instances of
+ * providers.
+ *
+ * To enable tracing in an application, this class must be used to create
+ * instances of the provider interfaces defined by users.
+ * The system-defined factory is obtained by using the
+ * {@code getDefaultFactory()} static method.  The resulting instance can be
+ * used to create any number of providers.
+ *
+ * @since 1.7
+ */
+public abstract class ProviderFactory {
+
+    protected ProviderFactory() {}
+
+    /**
+     * Creates an implementation of a Provider interface.
+     *
+     * @param cls the provider interface to be defined.
+     * @return an implementation of {@code cls}, whose methods, when called,
+     * will trigger tracepoints in the application.
+     * @throws NullPointerException if cls is null
+     * @throws IllegalArgumentException if the class definition contains
+     * non-void methods
+     */
+    public abstract <T extends Provider> T createProvider(Class<T> cls);
+
+    /**
+     * Returns an implementation of a {@code ProviderFactory} which
+     * creates instances of Providers.
+     *
+     * The created Provider instances will be linked to all appropriate
+     * and enabled system-defined tracing mechanisms in the JDK.
+     *
+     * @return a {@code ProviderFactory} that is used to create Providers.
+     */
+    public static ProviderFactory getDefaultFactory() {
+        HashSet<ProviderFactory> factories = new HashSet<ProviderFactory>();
+
+        // Try to instantiate a DTraceProviderFactory
+        String prop = null;
+        try { prop = System.getProperty("com.sun.tracing.dtrace"); }
+        catch (java.security.AccessControlException e) {
+            Logger.getAnonymousLogger().fine(
+                "Cannot access property com.sun.tracing.dtrace");
+        }
+        if ( (prop == null || !prop.equals("disable")) &&
+             DTraceProviderFactory.isSupported() ) {
+            factories.add(new DTraceProviderFactory());
+        }
+
+        // Try to instantiate an output stream factory
+        try { prop = System.getProperty("sun.tracing.stream"); }
+        catch (java.security.AccessControlException e) {
+            Logger.getAnonymousLogger().fine(
+                "Cannot access property sun.tracing.stream");
+        }
+        if (prop != null) {
+            for (String spec : prop.split(",")) {
+                PrintStream ps = getPrintStreamFromSpec(spec);
+                if (ps != null) {
+                    factories.add(new PrintStreamProviderFactory(ps));
+                }
+            }
+        }
+
+        // See how many factories we instantiated, and return an appropriate
+        // factory that encapsulates that.
+        if (factories.size() == 0) {
+            return new NullProviderFactory();
+        } else if (factories.size() == 1) {
+            return factories.toArray(new ProviderFactory[1])[0];
+        } else {
+            return new MultiplexProviderFactory(factories);
+        }
+    }
+
+    private static PrintStream getPrintStreamFromSpec(String spec) {
+        try {
+            // spec is in the form of <class>.<field>, where <class> is
+            // a fully specified class name, and <field> is a static member
+            // in that class.  The <field> must be a 'PrintStream' or subtype
+            // in order to be used.
+            int fieldpos = spec.lastIndexOf('.');
+            Class<?> cls = Class.forName(spec.substring(0, fieldpos));
+            Field f = cls.getField(spec.substring(fieldpos + 1));
+            Class<?> fieldType = f.getType();
+            return (PrintStream)f.get(null);
+        } catch (Exception e) {
+            Logger.getAnonymousLogger().warning(
+                "Could not parse sun.tracing.stream property: " + e);
+        }
+        return null;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProviderName.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the name of a provider.
+ * <p>
+ * This annotation can be added to a user-defined {@code Provider}
+ * interface, to set the name that will be used
+ * for the provider in the generated probes.  Without this annotation,
+ * the simple class name of the provider interface is used.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ProviderName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ArgsAttributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+
+/**
+ * This annotation describes the interface attributes of the probe arguments in
+ * a single provider.
+ *
+ * This annotation can be added to a user-defined {@code Provider} specification
+ * interface to set the stability attributes of the probe arguments, for
+ * all the probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * arguments are Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ArgsAttributes {
+  Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/Attributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+
+/**
+ * This annotation describes the interface's field attributes
+ * for the probes in a provider.
+ *
+ * This annotation provides the contents of field-specific annotations
+ * that specify the stability attributes and dependency class of a
+ * particular field, for the probes in a provider.
+ * <p>
+ * The default interface attributes for unspecified fields is
+ * Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({})
+public @interface Attributes {
+  /**
+   * The stability level of the name.
+   */
+  StabilityLevel name() default StabilityLevel.PRIVATE;
+
+  /**
+   * The stability level of the data.
+   */
+  StabilityLevel data() default StabilityLevel.PRIVATE;
+
+  /**
+   * The interface attribute's dependency class.
+   */
+  DependencyClass dependency()  default DependencyClass.UNKNOWN;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/DependencyClass.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+/**
+ * Enumeration for the DTrace dependency classes.
+ *
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide for details, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+public enum DependencyClass {
+    /**
+     * The interface has an unknown set of architectural dependencies.
+     */
+    UNKNOWN  (0),
+    /**
+     * The interface is specific to the CPU model of the current system.
+     */
+    CPU      (1),
+    /**
+     * The interface is specific to the hardware platform of the current
+     * system.
+     */
+    PLATFORM (2),
+    /**
+     * The interface is specific to the hardware platform group of the
+     * current system.
+     */
+    GROUP    (3),
+    /**
+     * The interface is specific to the instruction set architecture (ISA)
+     * supported by the microprocessors on this system.
+     */
+    ISA      (4),
+    /**
+     * The interface is common to all Solaris systems regardless of the
+     * underlying hardware.
+     */
+    COMMON   (5);
+
+    public String toDisplayString() {
+        return toString().substring(0,1) +
+               toString().substring(1).toLowerCase();
+    }
+
+    public int getEncoding() { return encoding; }
+
+    private int encoding;
+
+    private DependencyClass(int encoding) {
+        this.encoding = encoding;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionAttributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation describes the interface attributes of the
+ * {@code function} field for a single provider.
+ *
+ * This annotation can be added to a user-defined {@code Provider} specification
+ * interface to set the stability attributes of the {@code function} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code function} field are Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface FunctionAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionName.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the {@code function} field for a DTrace probe.
+ *
+ * This annotation can be added to a method in a user-defined Provider
+ * specification interface to set the {@code function} field that is used
+ * for the generated DTrace probe associated with that method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface FunctionName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleAttributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation is used to describe the interface attributes of the
+ * {@code module} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code module} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code module} field is Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ModuleAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleName.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the {@code module} field for a DTrace probe.
+ *
+ * This annotation can be added to a method in a user-defined Provider
+ * specification interface to set the {@code module} field that will be used
+ * for the generated DTrace probe associated with that method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ModuleName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/NameAttributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation describes the interface attributes of the
+ * {@code name} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code name} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code name} field will be Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface NameAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ProviderAttributes.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation is used to describe the interface attributes of the
+ * {@code provider} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code provider} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code provider} field will be Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ProviderAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/StabilityLevel.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+/**
+ * Enumeration for the DTrace stability levels.
+ *
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+public enum StabilityLevel {
+    /**
+     * The interface is private to DTrace and represents an implementation
+     * detail of DTrace.
+     */
+    INTERNAL  (0),
+    /**
+     * The interface is private to Sun for use by other Sun products. It is
+     * not yet publicly documented for use by customers and ISVs.
+     */
+    PRIVATE  (1),
+    /**
+     * The interface is supported in the current release but is scheduled
+     * to be removed, most likely in a future minor release.
+     */
+    OBSOLETE (2),
+    /**
+     * The interface is controlled by an entity other than Sun.
+     */
+    EXTERNAL (3),
+    /**
+     * The interface gives developers early access to new or
+     * rapidly changing technology or to an implementation artifact that is
+     * essential for observing or debugging system behavior. A more
+     * stable solution is anticipated in the future.
+     */
+    UNSTABLE (4),
+    /**
+     * The interface might eventually become Standard or Stable but is
+     * still in transition.
+     */
+    EVOLVING (5),
+    /**
+     * The interface is a mature interface under Sun's control.
+     */
+    STABLE   (6),
+    /**
+     * The interface complies with an industry standard.
+     */
+    STANDARD (7);
+
+    String toDisplayString() {
+        return toString().substring(0,1) +
+               toString().substring(1).toLowerCase();
+    }
+
+    public int getEncoding() { return encoding; }
+
+    private int encoding;
+
+    private StabilityLevel(int encoding) {
+        this.encoding = encoding;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/package-info.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package contains annotations and enumerations that are used to
+ * add DTrace-specific information to a tracing provider.
+ * <p>
+ * The DTrace-specific annotations modify the attributes of a DTrace provider
+ * implementation when it is used by the tracing subsystem.  The annotations are
+ * added to a {@code com.sun.tracing} provider specification to control
+ * specific attributes of the provider as it relates to DTrace.
+ * <p>
+ * Any other tracing subsystems supported by the system will ignore these
+ * annotations.
+ * <p>
+ * DTrace probes have additional fields and stability attributes that are
+ * not accounted for in the generic tracing package.  If unspecified, the
+ * default values are used for the stability and dependency attributes of
+ * probes, as well as for the module and field names of the generated probes.
+ * The values can be specified by adding the appropriate annotations to the
+ * provider specification.
+ * <p>
+ * The {@code FunctionName} annotation is used to annotate the tracepoint
+ * methods defined in the provider specification.  The value of this annotation
+ * is used as the {@code function} field in the generated DTrace probes. It
+ * is typically set to the name of the enclosing function where the
+ * tracepoint is triggered.
+ * <p>
+ * The {@code ModuleName} annotation is used to annotate the provider
+ * specification itself and applies to all the probes in the provider.  It
+ * sets the value of the {@code module} field in the generated DTrace probes.
+ * <p>
+ * The remaining annotations, are also applied to the provider itself, and
+ * are used to set the stability and dependency attributes of all probes in
+ * that provider.  Each probe field and the probe arguments can be
+ * independently assigned interface attributes to control the stability
+ * ratings of the probes.
+ * <p>
+ * Here is an example of how to declare a provider, specifying additional DTrace
+ * data:
+<PRE>
+    &#064;ProviderName("my_app_provider")
+    &#064;ModuleName("app.jar")
+    &#064;ProviderAttributes(&#064;Attributes={
+        name=StabilityLevel.STABLE,data=StabilityLevel.STABLE,
+        dependency=DependencyClass.COMMON})
+    &#064;ProbeAttributes(&#064;Attributes={
+        name=StabilityLevel.STABLE,data=StabilityLevel.STABLE,
+        dependency=DependencyClass.COMMON})
+    &#064;ModuleAttributes(&#064;Attributes={name=StabilityLevel.UNSTABLE})
+    public class MyProvider {
+        &#064;FunctionName("main") void startProbe();
+    }
+</PRE>
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlms?a=view">Solaris Dynamic Tracing Guide, Chapter 34: Statically Defined Tracing for User Applications</a>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ */
+
+package com.sun.tracing.dtrace;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/package-info.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package provides a mechanism for defining and
+ * inserting tracepoints into Java-technology based applications, which
+ * can then be monitored by the tracing tools available on the system.
+ * <p>
+ * To add tracepoints to a program, you must first decide where to place the
+ * tracepoints, what the logical names are for these points, what information
+ * will be available to the tracing mechanisms at each point, and decide upon
+ * any logical grouping.
+ * <p>
+ * You add instrumentation to a program in three steps:
+ * <ul>
+ * <li>First, declare tracepoints by creating interfaces to define
+ * them, and include these interfaces in the program definition.
+ * The declared interfaces are standard Java technology-based
+ * interfaces and are compiled with the program.</li>
+ * <li>Second, add code in the application to create an instance of the
+ * interface at some point during the initialization of the application,
+ * using a factory class provided by the system. The reference to the
+ * instance can be stored as a global static, or passed as context to all
+ * the places where it is needed.</li>
+ * <li>Finally, add the actual tracepoints to the desired locations in the
+ * application by inserting a call to one of the methods defined in the
+ * interface, via the factory-created reference.</li>
+ * </ul>
+ * <p>
+ * The method calls representing the tracepoints have no logical
+ * impact on the program.  The side effect of the call is that any
+ * activated tracing mechanisms will be notified that the tracepoint has
+ * been hit, and will take whatever actions are appropriate (for example,
+ * logging  the tracepoint, or triggering a DTrace probe, etc.).  In most
+ * cases, the impact on performance of adding tracepoints to the application
+ * will be minimal.
+ * <p>
+ * Each logical grouping of tracepoints should be defined in a common
+ * interface, called a <i>provider</i>.  An application can have one or many
+ * providers.  Each provider is independent and can be created whenever
+ * it is appropriate for that provider, for example, when a subsytem is
+ * initialized.  Providers should be disposed of when they are no longer
+ * needed, to free up any associated system resources.  Each tracepoint
+ * in a provider is represented by a method in that interface.  These methods
+ * are referred to as <i>probes</i>.  The method signature determines the probe
+ * parameters.  A call to the method with the specified parameters triggers
+ * the probe and makes its parameter values visible to any associated tracing
+ * mechanism.
+ * <p>
+ * User-defined interfaces which represent providers must extend the
+ * {@code Provider} interface.  To activate the system-defined
+ * tracing mechanisms, you must obtain an instance of the
+ * {@code ProviderFactory} class, and pass the class of the provider to
+ * the {@code createProvider()} method.  The returned instance is then used to
+ * trigger the probes later in the application.
+ * <p>
+ * In addition to triggering the probes, the provider instance can be used
+ * to obtain direct references to the {@code Probe} objects, which can be used
+ * directly for triggering, or can be queried to determine whether the probe is
+ * currently being traced.  The {@code Provider} interface also defines a
+ * {@code Provider.dispose()} method which is used to free up any resources
+ * that might be associated with that provider.
+ * <p>
+ * When a probe is triggered, any activated tracing system will be given
+ * the provider name, the probe name, and the values of the probe arguments.
+ * The tracing system is free to consume this data is whatever way is
+ * appropriate.
+ * By default, the provider name is the same as the class name of the interface
+ * that defines the provider. Similarly, the probe name is
+ * the name of the method that defines the probe. These default values
+ * can be over-ridden by annotations.  The provider definition can be
+ * annotated with the {@code @ProviderName} annotation, whose value will
+ * indicate the provider name that the tracing system will use.  Similarly,
+ * the {@code @ProbeName} annotation annotates a declared method and
+ * indicates the probe name that should be used in the place of the
+ * method name.  These annotations can be used to define providers and
+ * probes with the same name, in cases where the semantics of the Java language
+ * may prevent this.
+ * <p>
+ * Here is a very small and simple usage example:
+ * <p>
+ *
+<PRE>
+   import com.sun.tracing.Provider;
+   import com.sun.tracing.ProviderFactory;
+
+   interface MyProvider extends Provider {
+       void startProbe();
+       void finishProbe(int value);
+   }
+
+   public class MyApplication {
+       public static void main(String argv[]) {
+           ProviderFactory factory = ProviderFactory.getDefaultFactory();
+           MyProvider trace = factory.createProvider(MyProvider.class);
+
+           trace.startProbe();
+           int result = foo();
+           trace.finishProbe(result);
+
+           trace.dispose();
+       }
+   }
+</PRE>
+ * <p>
+ * The Java Development Kit (JDK) currently only includes one system-defined
+ * tracing framework: DTrace. DTrace is enabled automatically whenever an
+ * application is run on a system and a JDK release that supports it. When
+ * DTrace is enabled, probes are made available for listing and matching by
+ * DTrace scripts as soon as the provider is created. At the tracepoint, an
+ * associated DTrace script is informed of the creation of the provider, and
+ * it takes whatever action it is designed to take. Tracepoints in the
+ * program have the following DTrace probe names:<br>
+ *   {@code <provider><pid>:<module>:<function>:<probe>}
+ * Where:
+ * <ul>
+ * <li>{@code <provider>} the provider name as specified by the application</li>
+ * <li>{@code <pid>} the operating system process ID</li>
+ * <li>{@code <module>} undefined, unless specified by the application</li>
+ * <li>{@code <function>} undefined, unless specified by the application</li>
+ * <li>{@code <probe>} the probe name as specified by the application</li>
+ * </ul>
+ * <p>
+ * The {@code com.sun.tracing.dtrace} package contains additional
+ * annotations that can be used to control the names used for the
+ * <code>module</code> and <code>function</code> fields, as well as annotations
+ * that can be added to the provider to control probe stability and dependency
+ * attributes.
+ * <p>
+ * Integer, float and string probe parameters are made available to DTrace
+ * using
+ * the built-in argument variables, {@code arg0 ... arg_n}.  Integer-types
+ * are passed by value (boxed values are unboxed), floating-point types are
+ * passed as encoded integer
+ * arguments, and {@code java.lang.String} objects are converted
+ * to UTF8 strings, so they can be read into the DTrace script using the
+ * {@code copyinstr()} intrinsic.  Non-string and non-boxed primitive
+ * reference arguments are only
+ * placeholders and have no value.
+ * <p>
+ * Using the example above, with a theoretical process ID of 123, these are
+ * the probes that can be traced from DTrace:
+<PRE>
+    MyProvider123:::startProbe
+    MyProvider123:::finishProbe
+</PRE>
+ * When {@code finishProbe} executes, {@code arg0} will contain the
+ * value of {@code result}.
+ * <p>
+ * The DTrace tracing mechanism is enabled for all providers, apart from in the
+ * following circumstances:
+ * <ul>
+ * <li>DTrace is not supported on the underlying system.</li>
+ * <li>The property {@code com.sun.tracing.dtrace} is set to "disable".</li>
+ * <li>The RuntimePermission {@code com.sun.tracing.dtrace.createProvider}
+ * is denied to the process.</li>
+ * </ul>
+ * <p>
+ */
+
+package com.sun.tracing;
--- a/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -35,7 +35,7 @@
  * that can be obtained by calling
  * the {@link ManagementFactory#getClassLoadingMXBean} method or
  * from the {@link ManagementFactory#getPlatformMBeanServer
- * platform <tt>MBeanServer</tt>} method.
+ * platform <tt>MBeanServer</tt>}.
  *
  * <p>The <tt>ObjectName</tt> for uniquely identifying the MXBean for
  * the class loading system within an <tt>MBeanServer</tt> is:
@@ -44,6 +44,10 @@
  *        <tt>java.lang:type=ClassLoading</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface ClassLoadingMXBean {
+public interface ClassLoadingMXBean extends PlatformManagedObject {
 
     /**
      * Returns the total number of classes that have been loaded since
--- a/src/share/classes/java/lang/management/CompilationMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/CompilationMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -44,6 +44,10 @@
  *         <tt>java.lang:type=Compilation</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface CompilationMXBean {
+public interface CompilationMXBean extends PlatformManagedObject {
     /**
      * Returns the name of the Just-in-time (JIT) compiler.
      *
--- a/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -48,9 +48,13 @@
  *    <tt>java.lang:type=GarbageCollector</tt>}<tt>,name=</tt><i>collector's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * A platform usually includes additional platform-dependent information
  * specific to a garbage collection algorithm for monitoring.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see MemoryMXBean
  *
  * @see <a href="../../../javax/management/package-summary.html">
--- a/src/share/classes/java/lang/management/ManagementFactory.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/ManagementFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -24,17 +24,31 @@
  */
 
 package java.lang.management;
+import javax.management.DynamicMBean;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerFactory;
 import javax.management.MBeanServerPermission;
+import javax.management.NotificationEmitter;
+import javax.management.ObjectInstance;
 import javax.management.ObjectName;
+import javax.management.InstanceAlreadyExistsException;
 import javax.management.InstanceNotFoundException;
 import javax.management.MalformedObjectNameException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import java.util.Collections;
+import java.util.ArrayList;
 import java.util.List;
 import java.security.AccessController;
 import java.security.Permission;
 import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import javax.management.JMX;
+import sun.management.ManagementFactoryHelper;
 
 /**
  * The <tt>ManagementFactory</tt> class is a factory class for getting
@@ -49,13 +63,16 @@
  * <ul>
  * <li><i>Direct access to an MXBean interface</i>
  *     <ol type="a">
- *     <li>Get the MXBean instance through the static factory method
+ *     <li>Get the MXBean instance through the static factory method,
+ *         or the {@link #getPlatformMXBeans(Class)} method
  *         and access the MXBean locally of the running
  *         virtual machine.
  *         </li>
  *     <li>Construct an MXBean proxy instance that forwards the
  *         method calls to a given {@link MBeanServer MBeanServer} by calling
- *         {@link #newPlatformMXBeanProxy newPlatfromMXBeanProxy}.
+ *         the {@link #newPlatformMXBeanProxy newPlatformMXBeanProxy} method
+ *         or the {@link #getPlatformMXBeans(MBeanServerConnection, Class)}
+ *         method.
  *         A proxy is typically constructed to remotely access
  *         an MXBean of another running virtual machine.
  *         </li>
@@ -83,6 +100,10 @@
  * a set of basic data types described below.
  * See <a href="../../../javax/management/MXBean.html#MXBean-spec">
  * the specification of MXBeans</a> for details.
+ * All platform MXBean interfaces extend {@link PlatformManagedObject}s
+ * and new methods may be added in these interfaces
+ * in future Java SE releases.
+ * <p>
  * A JMX management application and the platform <tt>MBeanServer</tt>
  * can interoperate without requiring classes for MXBean specific
  * data types.
@@ -191,7 +212,10 @@
  * <h4><a name="MXBeanNames">MXBean Names</a></h4>
  * Each platform MXBean for a Java virtual machine has a unique
  * {@link javax.management.ObjectName ObjectName} for
- * registration in the platform <tt>MBeanServer</tt>.
+ * registration in the platform <tt>MBeanServer</tt> that can
+ * be obtained by calling the {@link PlatformManagedObject#getObjectName}
+ * method.
+ *
  * A Java virtual machine has a single instance of the following management
  * interfaces:
  *
@@ -275,7 +299,7 @@
  * </blockquote>
  *
  * @see <a href="../../../javax/management/package-summary.html">
- *      JMX Specification.</a>
+ *      JMX Specification</a>
  * @see <a href="package-summary.html#examples">
  *      Ways to Access Management Metrics</a>
  * @see java.util.logging.LoggingMXBean
@@ -368,7 +392,7 @@
      * the Java virtual machine.
      */
     public static ClassLoadingMXBean getClassLoadingMXBean() {
-        return sun.management.ManagementFactory.getClassLoadingMXBean();
+        return ManagementFactoryHelper.getClassLoadingMXBean();
     }
 
     /**
@@ -378,7 +402,7 @@
      * @return a {@link MemoryMXBean} object for the Java virtual machine.
      */
     public static MemoryMXBean getMemoryMXBean() {
-        return sun.management.ManagementFactory.getMemoryMXBean();
+        return ManagementFactoryHelper.getMemoryMXBean();
     }
 
     /**
@@ -388,7 +412,7 @@
      * @return a {@link ThreadMXBean} object for the Java virtual machine.
      */
     public static ThreadMXBean getThreadMXBean() {
-        return sun.management.ManagementFactory.getThreadMXBean();
+        return ManagementFactoryHelper.getThreadMXBean();
     }
 
     /**
@@ -399,7 +423,7 @@
 
      */
     public static RuntimeMXBean getRuntimeMXBean() {
-        return sun.management.ManagementFactory.getRuntimeMXBean();
+        return ManagementFactoryHelper.getRuntimeMXBean();
     }
 
     /**
@@ -412,7 +436,7 @@
      *   no compilation system.
      */
     public static CompilationMXBean getCompilationMXBean() {
-        return sun.management.ManagementFactory.getCompilationMXBean();
+        return ManagementFactoryHelper.getCompilationMXBean();
     }
 
     /**
@@ -423,7 +447,7 @@
      * the Java virtual machine.
      */
     public static OperatingSystemMXBean getOperatingSystemMXBean() {
-        return sun.management.ManagementFactory.getOperatingSystemMXBean();
+        return ManagementFactoryHelper.getOperatingSystemMXBean();
     }
 
     /**
@@ -436,7 +460,7 @@
      *
      */
     public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
-        return sun.management.ManagementFactory.getMemoryPoolMXBeans();
+        return ManagementFactoryHelper.getMemoryPoolMXBeans();
     }
 
     /**
@@ -449,7 +473,7 @@
      *
      */
     public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
-        return sun.management.ManagementFactory.getMemoryManagerMXBeans();
+        return ManagementFactoryHelper.getMemoryManagerMXBeans();
     }
 
 
@@ -465,7 +489,7 @@
      *
      */
     public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
-        return sun.management.ManagementFactory.getGarbageCollectorMXBeans();
+        return ManagementFactoryHelper.getGarbageCollectorMXBeans();
     }
 
     private static MBeanServer platformMBeanServer;
@@ -518,8 +542,25 @@
         }
 
         if (platformMBeanServer == null) {
-            platformMBeanServer =
-                sun.management.ManagementFactory.createPlatformMBeanServer();
+            platformMBeanServer = MBeanServerFactory.createMBeanServer();
+            for (PlatformComponent pc : PlatformComponent.values()) {
+                List<? extends PlatformManagedObject> list =
+                    pc.getMXBeans(pc.getMXBeanInterface());
+                for (PlatformManagedObject o : list) {
+                    // Each PlatformComponent represents one management
+                    // interface. Some MXBean may extend another one.
+                    // The MXBean instances for one platform component
+                    // (returned by pc.getMXBeans()) might be also
+                    // the MXBean instances for another platform component.
+                    // e.g. com.sun.management.GarbageCollectorMXBean
+                    //
+                    // So need to check if an MXBean instance is registered
+                    // before registering into the platform MBeanServer
+                    if (!platformMBeanServer.isRegistered(o.getObjectName())) {
+                        addMXBean(platformMBeanServer, o);
+                    }
+                }
+            }
         }
         return platformMBeanServer;
     }
@@ -657,6 +698,136 @@
         }
     }
 
+    /**
+     * Returns the list of platform MXBeans that implement
+     * the given {@code mxbeanInterface} in the running Java
+     * virtual machine.
+     * The returned list may contain zero, one, or more instances.
+     * The number of instances in the returned list is defined
+     * in the specification of the given management interface.
+     *
+     * @param mxbeanInterface a management interface for a platform
+     *                        MXBean
+     *
+     * @return the list of platform MXBeans that implements
+     * {@code mxbeanInterface}.
+     *
+     * @throws IllegalArgumentException if {@code mxbeanInterface}
+     * is not a management interface for the platform.
+     *
+     * @since 1.7
+     */
+    public static <T extends PlatformManagedObject> List<T>
+            getPlatformMXBeans(Class<T> mxbeanInterface) {
+        String className = mxbeanInterface.getName();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            // comparing the class name first instead of the Class instance
+            // to avoid causing unnecessary class loading of
+            // the other MXBean interfaces
+            if (className.equals(component.getMXBeanInterfaceName())) {
+                if (component.getMXBeanInterface() == mxbeanInterface) {
+                    return component.getMXBeans(mxbeanInterface);
+                }
+            }
+        }
+        throw new IllegalArgumentException(mxbeanInterface.getName() +
+            " is not implemented by any of the platform MXBeans.");
+    }
+
+    /**
+     * Returns the list of the platform MXBean proxies for
+     * forwarding the method calls of the {@code mxbeanInterface}
+     * through the given {@code MBeanServerConnection}.
+     * The returned list may contain zero, one, or more instances.
+     * The number of instances in the returned list is defined
+     * in the specification of the given management interface.
+     *
+     * @param connection the {@code MBeanServerConnection} to forward to.
+     * @param mxbeanInterface a management interface for a platform
+     *                        MXBean
+     *
+     * @return the list of platform MXBean proxies for
+     * forwarding the method calls of the {@code mxbeanInterface}
+     * through the given {@code MBeanServerConnection}.
+     *
+     * @throws IllegalArgumentException if {@code mxbeanInterface}
+     * is not a management interface for the platform.
+     *
+     * @throws java.io.IOException if a communication problem
+     * occurred when accessing the {@code MBeanServerConnection}.
+     *
+     * @since 1.7
+     */
+    public static <T extends PlatformManagedObject>
+        List<T> getPlatformMXBeans(MBeanServerConnection connection,
+                                   Class<T> mxbeanInterface)
+        throws java.io.IOException
+    {
+        String className = mxbeanInterface.getName();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            // comparing the class name first instead of the Class instance
+            // to avoid causing unnecessary class loading of
+            // the other MXBean interfaces
+            if (className.equals(component.getMXBeanInterfaceName())) {
+                if (component.getMXBeanInterface() == mxbeanInterface) {
+                    return component.getMXBeans(connection,
+                                                mxbeanInterface);
+                }
+            }
+        }
+        throw new IllegalArgumentException(mxbeanInterface.getName() +
+            " is not implemented by any of the platform MXBeans.");
+    }
+
+    /**
+     * Returns a list of {@code Class} objects, subinterface of
+     * {@link PlatformManagedObject}, representing
+     * all management interfaces for
+     * monitoring and managing the Java platform.
+     *
+     * @return a list of {@code Class} objects, subinterface of
+     * {@link PlatformManagedObject} representing
+     * the management interfaces for
+     * monitoring and managing the Java platform.
+     *
+     * @since 1.7
+     */
+    public static List<Class<? extends PlatformManagedObject>> getAllPlatformMXBeanInterfaces() {
+        List<Class<? extends PlatformManagedObject>> result =
+            new ArrayList<Class<? extends PlatformManagedObject>>();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            result.add(component.getMXBeanInterface());
+        }
+        return result;
+    }
+
     private static final String NOTIF_EMITTER =
         "javax.management.NotificationEmitter";
+
+    /**
+     * Registers an MXBean.
+     */
+    private static void addMXBean(final MBeanServer mbs, final PlatformManagedObject pmo) {
+        // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
+        final DynamicMBean dmbean;
+        if (pmo instanceof NotificationEmitter) {
+            dmbean = new StandardEmitterMBean(pmo, null, true, (NotificationEmitter) pmo);
+        } else {
+            dmbean = new StandardMBean(pmo, null, true);
+        }
+
+        try {
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws InstanceAlreadyExistsException,
+                                         MBeanRegistrationException,
+                                         NotCompliantMBeanException {
+                    mbs.registerMBean(dmbean, pmo.getObjectName());
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw new RuntimeException(e.getException());
+        }
+    }
+
 }
--- a/src/share/classes/java/lang/management/MemoryMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -46,6 +46,9 @@
  *           <tt>java.lang:type=Memory</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4> Memory </h4>
  * The memory system of the Java virtual machine manages
  * the following kinds of memory:
@@ -190,6 +193,7 @@
  * emitter.addNotificationListener(listener, null, null);
  * </pre></blockquote>
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -198,7 +202,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryMXBean {
+public interface MemoryMXBean extends PlatformManagedObject {
     /**
      * Returns the approximate number of objects for which
      * finalization is pending.
--- a/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -45,6 +45,10 @@
  *    <tt>java.lang:type=MemoryManager</tt>}<tt>,name=</tt><i>manager's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see MemoryMXBean
  *
  * @see <a href="../../../javax/management/package-summary.html">
@@ -55,7 +59,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryManagerMXBean {
+public interface MemoryManagerMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing this memory manager.
      *
--- a/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -46,6 +46,9 @@
  *    <tt>java.lang:type=MemoryPool</tt>}<tt>,name=</tt><i>pool's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4>Memory Type</h4>
  * <p>The Java virtual machine has a heap for object allocation and also
  * maintains non-heap memory for the method area and the Java virtual
@@ -349,6 +352,7 @@
  * described above for the <a href="#UsageThreshold">usage threshold</a>
  * in a similar fashion.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -357,7 +361,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryPoolMXBean {
+public interface MemoryPoolMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing this memory pool.
      *
--- a/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -44,10 +44,14 @@
  *      <tt>java.lang:type=OperatingSystem</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <p> This interface defines several convenient methods for accessing
  * system properties about the operating system on which the Java
  * virtual machine is running.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -56,7 +60,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface OperatingSystemMXBean {
+public interface OperatingSystemMXBean extends PlatformManagedObject {
     /**
      * Returns the operating system name.
      * This method is equivalent to <tt>System.getProperty("os.name")</tt>.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/java/lang/management/PlatformComponent.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang.management;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.LoggingMXBean;
+import java.util.logging.LogManager;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import com.sun.management.HotSpotDiagnosticMXBean;
+import com.sun.management.UnixOperatingSystemMXBean;
+
+import sun.management.ManagementFactoryHelper;
+
+/**
+ * This enum class defines the list of platform components
+ * that provides monitoring and management support.
+ * Each enum represents one MXBean interface. A MXBean
+ * instance could implement one or more MXBean interfaces.
+ *
+ * For example, com.sun.management.GarbageCollectorMXBean
+ * extends java.lang.management.GarbageCollectorMXBean
+ * and there is one set of garbage collection MXBean instances,
+ * each of which implements both c.s.m. and j.l.m. interfaces.
+ * There are two separate enums GARBAGE_COLLECTOR
+ * and SUN_GARBAGE_COLLECTOR so that ManagementFactory.getPlatformMXBeans(Class)
+ * will return the list of MXBeans of the specified type.
+ *
+ * To add a new MXBean interface for the Java platform,
+ * add a new enum constant and implement the MXBeanFetcher.
+ */
+enum PlatformComponent {
+
+    /**
+     * Class loading system of the Java virtual machine.
+     */
+    CLASS_LOADING(
+        "java.lang.management.ClassLoadingMXBean",
+        "java.lang", "ClassLoading", defaultKeyProperties(),
+        new MXBeanFetcher<ClassLoadingMXBean>() {
+            public List<ClassLoadingMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getClassLoadingMXBean());
+            }
+        }),
+
+    /**
+     * Compilation system of the Java virtual machine.
+     */
+    COMPILATION(
+        "java.lang.management.CompilationMXBean",
+        "java.lang", "Compilation", defaultKeyProperties(),
+        new MXBeanFetcher<CompilationMXBean>() {
+            public List<CompilationMXBean> getMXBeans() {
+                CompilationMXBean m = ManagementFactoryHelper.getCompilationMXBean();
+                if (m == null) {
+                   return Collections.emptyList();
+                } else {
+                   return Collections.singletonList(m);
+                }
+            }
+        }),
+
+    /**
+     * Memory system of the Java virtual machine.
+     */
+    MEMORY(
+        "java.lang.management.MemoryMXBean",
+        "java.lang", "Memory", defaultKeyProperties(),
+        new MXBeanFetcher<MemoryMXBean>() {
+            public List<MemoryMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getMemoryMXBean());
+            }
+        }),
+
+    /**
+     * Garbage Collector in the Java virtual machine.
+     */
+    GARBAGE_COLLECTOR(
+        "java.lang.management.GarbageCollectorMXBean",
+        "java.lang", "GarbageCollector", keyProperties("name"),
+        new MXBeanFetcher<GarbageCollectorMXBean>() {
+            public List<GarbageCollectorMXBean> getMXBeans() {
+                return ManagementFactoryHelper.
+                           getGarbageCollectorMXBeans();
+            }
+        }),
+
+    /**
+     * Memory manager in the Java virtual machine.
+     */
+    MEMORY_MANAGER(
+        "java.lang.management.MemoryManagerMXBean",
+        "java.lang", "MemoryManager", keyProperties("name"),
+        new MXBeanFetcher<MemoryManagerMXBean>() {
+            public List<MemoryManagerMXBean> getMXBeans() {
+                return ManagementFactoryHelper.getMemoryManagerMXBeans();
+            }
+        },
+        GARBAGE_COLLECTOR),
+
+    /**
+     * Memory pool in the Java virtual machine.
+     */
+    MEMORY_POOL(
+        "java.lang.management.MemoryPoolMXBean",
+        "java.lang", "MemoryPool", keyProperties("name"),
+        new MXBeanFetcher<MemoryPoolMXBean>() {
+            public List<MemoryPoolMXBean> getMXBeans() {
+                return ManagementFactoryHelper.getMemoryPoolMXBeans();
+            }
+        }),
+
+    /**
+     * Operating system on which the Java virtual machine is running
+     */
+    OPERATING_SYSTEM(
+        "java.lang.management.OperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<OperatingSystemMXBean>() {
+            public List<OperatingSystemMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getOperatingSystemMXBean());
+            }
+        }),
+
+    /**
+     * Runtime system of the Java virtual machine.
+     */
+    RUNTIME(
+        "java.lang.management.RuntimeMXBean",
+        "java.lang", "Runtime", defaultKeyProperties(),
+        new MXBeanFetcher<RuntimeMXBean>() {
+            public List<RuntimeMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getRuntimeMXBean());
+            }
+        }),
+
+    /**
+     * Threading system of the Java virtual machine.
+     */
+    THREADING(
+        "java.lang.management.ThreadMXBean",
+        "java.lang", "Threading", defaultKeyProperties(),
+        new MXBeanFetcher<ThreadMXBean>() {
+            public List<ThreadMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getThreadMXBean());
+            }
+        }),
+
+
+    /**
+     * Logging facility.
+     */
+    LOGGING(
+        "java.util.logging.LoggingMXBean",
+        "java.util.logging", "Logging", defaultKeyProperties(),
+        new MXBeanFetcher<LoggingMXBean>() {
+            public List<LoggingMXBean> getMXBeans() {
+                return Collections.singletonList(LogManager.getLoggingMXBean());
+            }
+        }),
+
+    // Sun Platform Extension
+
+    /**
+     * Sun extension garbage collector that performs collections in cycles.
+     */
+    SUN_GARBAGE_COLLECTOR(
+        "com.sun.management.GarbageCollectorMXBean",
+        "java.lang", "GarbageCollector", keyProperties("name"),
+        new MXBeanFetcher<com.sun.management.GarbageCollectorMXBean>() {
+            public List<com.sun.management.GarbageCollectorMXBean> getMXBeans() {
+                return getGcMXBeanList(com.sun.management.GarbageCollectorMXBean.class);
+            }
+        }),
+
+    /**
+     * Sun extension operating system on which the Java virtual machine
+     * is running.
+     */
+    SUN_OPERATING_SYSTEM(
+        "com.sun.management.OperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<com.sun.management.OperatingSystemMXBean>() {
+            public List<com.sun.management.OperatingSystemMXBean> getMXBeans() {
+                return getOSMXBeanList(com.sun.management.OperatingSystemMXBean.class);
+            }
+        }),
+
+    /**
+     * Unix operating system.
+     */
+    SUN_UNIX_OPERATING_SYSTEM(
+        "com.sun.management.UnixOperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<UnixOperatingSystemMXBean>() {
+            public List<UnixOperatingSystemMXBean> getMXBeans() {
+                return getOSMXBeanList(com.sun.management.UnixOperatingSystemMXBean.class);
+            }
+        }),
+
+    /**
+     * Diagnostic support for the HotSpot Virtual Machine.
+     */
+    HOTSPOT_DIAGNOSTIC(
+        "com.sun.management.HotSpotDiagnosticMXBean",
+        "com.sun.management", "HotSpotDiagnostic", defaultKeyProperties(),
+        new MXBeanFetcher<HotSpotDiagnosticMXBean>() {
+            public List<HotSpotDiagnosticMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getDiagnosticMXBean());
+            }
+        });
+
+
+    /**
+     * A task that returns the MXBeans for a component.
+     */
+    interface MXBeanFetcher<T extends PlatformManagedObject> {
+        public List<T> getMXBeans();
+    }
+
+    /*
+     * Returns a list of the GC MXBeans of the given type.
+     */
+    private static <T extends GarbageCollectorMXBean>
+            List<T> getGcMXBeanList(Class<T> gcMXBeanIntf) {
+        List<GarbageCollectorMXBean> list =
+            ManagementFactoryHelper.getGarbageCollectorMXBeans();
+        List<T> result = new ArrayList<T>(list.size());
+        for (GarbageCollectorMXBean m : list) {
+            if (gcMXBeanIntf.isInstance(m)) {
+                result.add(gcMXBeanIntf.cast(m));
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Returns the OS mxbean instance of the given type.
+     */
+    private static <T extends OperatingSystemMXBean>
+            List<T> getOSMXBeanList(Class<T> osMXBeanIntf) {
+        OperatingSystemMXBean m =
+            ManagementFactoryHelper.getOperatingSystemMXBean();
+        if (osMXBeanIntf.isInstance(m)) {
+            return Collections.singletonList(osMXBeanIntf.cast(m));
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    private final String mxbeanInterfaceName;
+    private final String domain;
+    private final String type;
+    private final Set<String> keyProperties;
+    private final MXBeanFetcher fetcher;
+    private final PlatformComponent[] subComponents;
+
+    private PlatformComponent(String intfName,
+                              String domain, String type,
+                              Set<String> keyProperties,
+                              MXBeanFetcher fetcher) {
+        this.mxbeanInterfaceName = intfName;
+        this.domain = domain;
+        this.type = type;
+        this.keyProperties = keyProperties;
+        this.fetcher = fetcher;
+        this.subComponents = new PlatformComponent[0];
+    }
+    private PlatformComponent(String intfName,
+                              String domain, String type,
+                              Set<String> keyProperties,
+                              MXBeanFetcher fetcher,
+                              PlatformComponent... subComponents) {
+        this.mxbeanInterfaceName = intfName;
+        this.domain = domain;
+        this.type = type;
+        this.keyProperties = keyProperties;
+        this.fetcher = fetcher;
+        this.subComponents = subComponents;
+    }
+
+    private static Set<String> defaultKeyProps;
+    private static Set<String> defaultKeyProperties() {
+        if (defaultKeyProps == null) {
+            defaultKeyProps = Collections.singleton("type");
+        }
+        return defaultKeyProps;
+    }
+
+    private static Set<String> keyProperties(String... keyNames) {
+        Set<String> set = new HashSet<String>();
+        set.add("type");
+        for (String s : keyNames) {
+            set.add(s);
+        }
+        return set;
+    }
+
+    String getMXBeanInterfaceName() {
+        return mxbeanInterfaceName;
+    }
+
+    @SuppressWarnings("unchecked")
+    Class<? extends PlatformManagedObject> getMXBeanInterface() {
+        try {
+            // Lazy loading the MXBean interface only when it is needed
+            return (Class<? extends PlatformManagedObject>)
+                       Class.forName(mxbeanInterfaceName, false, null);
+        } catch (ClassNotFoundException x) {
+            throw new AssertionError(x);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    <T extends PlatformManagedObject>
+        List<T> getMXBeans(Class<T> mxbeanInterface)
+    {
+        return fetcher.getMXBeans();
+    }
+
+    <T extends PlatformManagedObject>
+        List<T> getMXBeans(MBeanServerConnection mbs, Class<T> mxbeanInterface)
+        throws java.io.IOException
+    {
+        List<T> result = new ArrayList<T>();
+        for (ObjectName on : getObjectNames(mbs)) {
+            result.add(ManagementFactory.
+                newPlatformMXBeanProxy(mbs,
+                                       on.getCanonicalName(),
+                                       mxbeanInterface)
+            );
+        }
+        return result;
+    }
+
+    private Set<ObjectName> getObjectNames(MBeanServerConnection mbs)
+        throws java.io.IOException
+    {
+        String domainAndType = domain + ":type=" + type;
+        if (keyProperties.size() > 1) {
+            // if there are more than 1 key properties (i.e. other than "type")
+            domainAndType += ",*";
+        }
+        ObjectName on = com.sun.jmx.mbeanserver.Util.newObjectName(domainAndType);
+        Set<ObjectName> set =  mbs.queryNames(on, null);
+        for (PlatformComponent pc : subComponents) {
+            set.addAll(pc.getObjectNames(mbs));
+        }
+        return set;
+    }
+
+    private static final long serialVersionUID = 6992337162326171013L;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/java/lang/management/PlatformManagedObject.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang.management;
+
+import javax.management.ObjectName;
+
+/**
+ * A platform managed object is a {@linkplain javax.management.MXBean JMX MXBean}
+ * for monitoring and managing a component in the Java platform.
+ * Each platform managed object has a unique
+ * <a href="ManagementFactory.html#MXBean">object name</a>
+ * for the {@linkplain ManagementFactory.getPlatformMBeanServer
+ * platform MBeanServer} access.
+ * All platform MXBeans will implement this interface.
+ *
+ * <p>
+ * Note:
+ * The platform MXBean interfaces (i.e. all subinterfaces
+ * of {@code PlatformManagedObject}) are implemented
+ * by the Java platform only.  New methods may be added in these interfaces
+ * in future Java SE releases.
+ * In addition, this {@code PlatformManagedObject} interface is only
+ * intended for the management interfaces for the platform to extend but
+ * not for applications.
+ *
+ * @see <a href="ManagementFactory.html#MXBean">Platform MXBeans</a>
+ * @since 1.7
+ */
+public interface PlatformManagedObject {
+    /**
+     * Returns an {@link ObjectName ObjectName} instance representing
+     * the object name of this platform managed object.
+     *
+     * @return an {@link ObjectName ObjectName} instance representing
+     * the object name of this platform managed object.
+     */
+    public ObjectName getObjectName();
+}
--- a/src/share/classes/java/lang/management/RuntimeMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/RuntimeMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -44,9 +44,13 @@
  *           <tt>java.lang:type=Runtime</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <p> This interface defines several convenient methods for accessing
  * system properties about the Java virtual machine.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -55,7 +59,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface RuntimeMXBean {
+public interface RuntimeMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing the running Java virtual machine.
      * The returned name string can be any arbitrary string and
--- a/src/share/classes/java/lang/management/ThreadInfo.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/ThreadInfo.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,7 @@
 package java.lang.management;
 
 import javax.management.openmbean.CompositeData;
+import sun.management.ManagementFactoryHelper;
 import sun.management.ThreadInfoCompositeData;
 import static java.lang.Thread.State.*;
 
@@ -220,12 +221,9 @@
                             LockInfo[] lockedSynchronizers) {
         this.threadId = t.getId();
         this.threadName = t.getName();
-        this.threadState =
-            sun.management.ManagementFactory.toThreadState(state);
-        this.suspended =
-            sun.management.ManagementFactory.isThreadSuspended(state);
-        this.inNative =
-            sun.management.ManagementFactory.isThreadRunningNative(state);
+        this.threadState = ManagementFactoryHelper.toThreadState(state);
+        this.suspended = ManagementFactoryHelper.isThreadSuspended(state);
+        this.inNative = ManagementFactoryHelper.isThreadRunningNative(state);
         this.blockedCount = blockedCount;
         this.blockedTime = blockedTime;
         this.waitedCount = waitedCount;
--- a/src/share/classes/java/lang/management/ThreadMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/lang/management/ThreadMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -46,6 +46,9 @@
  *           <tt>java.lang:type=Threading</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4>Thread ID</h4>
  * Thread ID is a positive long value returned by calling the
  * {@link java.lang.Thread#getId} method for a thread.
@@ -108,6 +111,7 @@
  * {@link #findDeadlockedThreads} methods to find deadlocks in
  * the running application.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -117,7 +121,7 @@
  * @since   1.5
  */
 
-public interface ThreadMXBean {
+public interface ThreadMXBean extends PlatformManagedObject {
     /**
      * Returns the current number of live threads including both
      * daemon and non-daemon threads.
--- a/src/share/classes/java/util/logging/Logging.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/util/logging/Logging.java	Tue May 13 11:33:06 2008 -0700
@@ -29,6 +29,8 @@
 import java.util.List;
 import java.util.ArrayList;
 
+import javax.management.ObjectName;
+
 /**
  * Logging is the implementation class of LoggingMXBean.
  *
@@ -115,4 +117,7 @@
         }
     }
 
+    public ObjectName getObjectName() {
+        return com.sun.jmx.mbeanserver.Util.newObjectName(LogManager.LOGGING_MXBEAN_NAME);
+    }
 }
--- a/src/share/classes/java/util/logging/LoggingMXBean.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/util/logging/LoggingMXBean.java	Tue May 13 11:33:06 2008 -0700
@@ -25,6 +25,8 @@
 
 package java.util.logging;
 
+import java.lang.management.PlatformManagedObject;
+
 /**
  * The management interface for the logging facility.
  *
@@ -43,14 +45,17 @@
  *           <tt>java.util.logging:type=Logging</tt>}
  * </blockquote>
  *
- * @see java.lang.management.ManagementFactory
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see java.lang.management.ManagementFactory#getPlatformMXBeans(Class)
  *
  * @author  Ron Mann
  * @author  Mandy Chung
  * @since   1.5
  *
  */
-public interface LoggingMXBean {
+public interface LoggingMXBean extends PlatformManagedObject {
 
     /**
      * Returns the list of currently registered loggers. This method
--- a/src/share/classes/java/util/regex/Pattern.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/java/util/regex/Pattern.java	Tue May 13 11:33:06 2008 -0700
@@ -2844,7 +2844,15 @@
     /**
      *  Utility method for parsing unicode escape sequences.
      */
-    private int u() {
+    private int cursor() {
+        return cursor;
+    }
+
+    private void setcursor(int pos) {
+        cursor = pos;
+    }
+
+    private int uxxxx() {
         int n = 0;
         for (int i = 0; i < 4; i++) {
             int ch = read();
@@ -2856,6 +2864,20 @@
         return n;
     }
 
+    private int u() {
+        int n = uxxxx();
+        if (Character.isHighSurrogate((char)n)) {
+            int cur = cursor();
+            if (read() == '\\' && read() == 'u') {
+                int n2 = uxxxx();
+                if (Character.isLowSurrogate((char)n2))
+                    return Character.toCodePoint((char)n, (char)n2);
+            }
+            setcursor(cur);
+        }
+        return n;
+    }
+
     //
     // Utility methods for code point support
     //
--- a/src/share/classes/sun/management/ClassLoadingImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/ClassLoadingImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.ClassLoadingMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the class loading subsystem.
@@ -62,9 +64,13 @@
     }
 
     public void setVerbose(boolean value) {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         setVerboseClass(value);
     }
     native static void setVerboseClass(boolean value);
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.CLASS_LOADING_MXBEAN_NAME);
+    }
 }
--- a/src/share/classes/sun/management/CompilationImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/CompilationImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.CompilationMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the compilation subsystem.
@@ -46,7 +48,7 @@
         this.jvm = vm;
         this.name = jvm.getCompilerName();
         if (name == null) {
-            throw new InternalError("Null compiler name");
+            throw new AssertionError("Null compiler name");
         }
     }
 
@@ -67,4 +69,9 @@
         return jvm.getTotalCompileTime();
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.COMPILATION_MXBEAN_NAME);
+    }
+
+
 }
--- a/src/share/classes/sun/management/GarbageCollectorImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/GarbageCollectorImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -34,6 +34,7 @@
 import javax.management.openmbean.CompositeData;
 import javax.management.MBeanInfo;
 import javax.management.MBeanAttributeInfo;
+import javax.management.ObjectName;
 
 import java.util.List;
 import java.util.ListIterator;
@@ -88,4 +89,8 @@
         return info;
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/GcInfoBuilder.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/GcInfoBuilder.java	Tue May 13 11:33:06 2008 -0700
@@ -145,7 +145,7 @@
                         allItemTypes[i] = SimpleType.DOUBLE;
                         break;
                     default:
-                        throw new InternalError(
+                        throw new AssertionError(
                             "Unsupported type [" + gcExtItemTypes[i] + "]");
                 }
             }
--- a/src/share/classes/sun/management/GcInfoCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/GcInfoCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -80,19 +80,19 @@
             };
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
 
         // Get the item values for the extension attributes
         final int gcExtItemCount = builder.getGcExtItemCount();
         if (gcExtItemCount == 0 &&
             gcExtItemValues != null && gcExtItemValues.length != 0) {
-            throw new InternalError("Unexpected Gc Extension Item Values");
+            throw new AssertionError("Unexpected Gc Extension Item Values");
         }
 
         if (gcExtItemCount > 0 && (gcExtItemValues == null ||
              gcExtItemCount != gcExtItemValues.length)) {
-            throw new InternalError("Unmatched Gc Extension Item Values");
+            throw new AssertionError("Unmatched Gc Extension Item Values");
         }
 
         Object[] values = new Object[baseGcInfoItemValues.length +
@@ -111,7 +111,7 @@
                                             values);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -141,10 +141,10 @@
                 MappedMXBeanType.getMappedType(m.getGenericReturnType());
         } catch (NoSuchMethodException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -186,10 +186,10 @@
             return cast(memoryUsageMapType.toJavaTypeData(td));
         } catch (InvalidObjectException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -205,10 +205,10 @@
             return cast(memoryUsageMapType.toJavaTypeData(td));
         } catch (InvalidObjectException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/HotSpotDiagnostic.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/HotSpotDiagnostic.java	Tue May 13 11:33:06 2008 -0700
@@ -28,6 +28,8 @@
 import java.util.*;
 import java.io.IOException;
 import java.lang.reflect.Method;
+import javax.management.ObjectName;
+
 import com.sun.management.HotSpotDiagnosticMXBean;
 import com.sun.management.VMOption;
 
@@ -72,7 +74,7 @@
             throw new NullPointerException("value cannot be null");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         Flag flag = Flag.getFlag(name);
         if (flag == null) {
             throw new IllegalArgumentException("VM option \"" +
@@ -113,4 +115,8 @@
                 v.getClass().getName());
         }
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName("com.sun.management:type=HotSpotDiagnostic");
+    }
 }
--- a/src/share/classes/sun/management/HotspotCompilation.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/HotspotCompilation.java	Tue May 13 11:33:06 2008 -0700
@@ -131,7 +131,7 @@
         }
 
         // FIXME: should tolerate if counter doesn't exist
-        throw new InternalError("Counter " + name + " does not exist");
+        throw new AssertionError("Counter " + name + " does not exist");
     }
 
     private void initCompilerCounters() {
--- a/src/share/classes/sun/management/HotspotInternal.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/HotspotInternal.java	Tue May 13 11:33:06 2008 -0700
@@ -39,6 +39,9 @@
 public class HotspotInternal
     implements HotspotInternalMBean, MBeanRegistration {
 
+    private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
+        "sun.management:type=HotspotInternal";
+    private static ObjectName objName = Util.newObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
     private MBeanServer server = null;
 
     /**
@@ -52,16 +55,16 @@
                                   ObjectName name) throws java.lang.Exception {
         // register all internal MBeans when this MBean is instantiated
         // and to be registered in a MBeanServer.
-        ManagementFactory.registerInternalMBeans(server);
+        ManagementFactoryHelper.registerInternalMBeans(server);
         this.server = server;
-        return ManagementFactory.getHotspotInternalObjectName();
+        return objName;
     }
 
     public void postRegister(Boolean registrationDone) {};
 
     public void preDeregister() throws java.lang.Exception {
         // unregister all internal MBeans when this MBean is unregistered.
-        ManagementFactory.unregisterInternalMBeans(server);
+        ManagementFactoryHelper.unregisterInternalMBeans(server);
     }
 
     public void postDeregister() {};
--- a/src/share/classes/sun/management/LockDataConverter.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/LockDataConverter.java	Tue May 13 11:33:06 2008 -0700
@@ -73,7 +73,7 @@
         try {
             return (CompositeData) getAttribute("LockInfo");
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -81,7 +81,7 @@
         try {
             return (CompositeData[]) getAttribute("LockedSynchronizers");
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -89,7 +89,7 @@
         try {
             setAttribute(new Attribute("LockInfo", cd));
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
         return getLockInfo();
     }
@@ -98,7 +98,7 @@
         try {
             setAttribute(new Attribute("LockedSynchronizers", cd));
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
         return getLockedSynchronizers();
     }
--- a/src/share/classes/sun/management/ManagementFactory.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/ManagementFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,445 +25,17 @@
 
 package sun.management;
 
-import java.lang.management.*;
-import java.util.logging.LogManager;
-
-import javax.management.DynamicMBean;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.MBeanInfo;
-import javax.management.NotificationEmitter;
-import javax.management.ObjectName;
-import javax.management.ObjectInstance;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanRegistrationException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.RuntimeOperationsException;
-import javax.management.StandardEmitterMBean;
-import javax.management.StandardMBean;
-import java.security.AccessController;
-import java.security.Permission;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import sun.security.action.LoadLibraryAction;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.ListIterator;
-import com.sun.management.OSMBeanFactory;
-import com.sun.management.HotSpotDiagnosticMXBean;
-
-import static java.lang.management.ManagementFactory.*;
+import java.lang.management.MemoryManagerMXBean;
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.GarbageCollectorMXBean;
 
 /**
- * ManagementFactory provides static factory methods to create
- * instances of the management interface.
+ * ManagementFactory class provides the methods that the HotSpot VM
+ * will invoke. So the class and method names cannot be renamed.
  */
-public class ManagementFactory {
+class ManagementFactory {
     private ManagementFactory() {};
 
-    private static VMManagement jvm;
-
-    private static boolean mbeansCreated = false;
-    private static ClassLoadingImpl    classMBean = null;
-    private static MemoryImpl          memoryMBean = null;
-    private static ThreadImpl          threadMBean = null;
-    private static RuntimeImpl         runtimeMBean = null;
-    private static CompilationImpl     compileMBean = null;
-    private static OperatingSystemImpl osMBean = null;
-
-    public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
-        if (classMBean == null) {
-            classMBean = new ClassLoadingImpl(jvm);
-        }
-        return classMBean;
-    }
-
-    public static synchronized MemoryMXBean getMemoryMXBean() {
-        if (memoryMBean == null) {
-            memoryMBean = new MemoryImpl(jvm);
-        }
-        return memoryMBean;
-    }
-
-    public static synchronized ThreadMXBean getThreadMXBean() {
-        if (threadMBean == null) {
-            threadMBean = new ThreadImpl(jvm);
-        }
-        return threadMBean;
-    }
-
-    public static synchronized RuntimeMXBean getRuntimeMXBean() {
-        if (runtimeMBean == null) {
-            runtimeMBean = new RuntimeImpl(jvm);
-        }
-        return runtimeMBean;
-    }
-
-    public static synchronized CompilationMXBean getCompilationMXBean() {
-        if (compileMBean == null && jvm.getCompilerName() != null) {
-            compileMBean = new CompilationImpl(jvm);
-        }
-        return compileMBean;
-    }
-
-    public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
-        if (osMBean == null) {
-            osMBean = (OperatingSystemImpl)
-                          OSMBeanFactory.getOperatingSystemMXBean(jvm);
-        }
-        return osMBean;
-    }
-
-    public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
-        MemoryPoolMXBean[] pools = MemoryImpl.getMemoryPools();
-        List<MemoryPoolMXBean> list = new ArrayList<MemoryPoolMXBean>(pools.length);
-        for (int i = 0; i < pools.length; i++) {
-            MemoryPoolMXBean p = pools[i];
-            list.add(p);
-        }
-        return list;
-    }
-
-    public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
-        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
-        List<MemoryManagerMXBean> result = new ArrayList<MemoryManagerMXBean>(mgrs.length);
-        for (int i = 0; i < mgrs.length; i++) {
-            MemoryManagerMXBean m = mgrs[i];
-            result.add(m);
-        }
-        return result;
-    }
-
-    public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
-        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
-        List<GarbageCollectorMXBean> result = new ArrayList<GarbageCollectorMXBean>(mgrs.length);
-        for (int i = 0; i < mgrs.length; i++) {
-            if (mgrs[i] instanceof GarbageCollectorMXBean) {
-                GarbageCollectorMXBean gc = (GarbageCollectorMXBean) mgrs[i];
-                result.add(gc);
-            }
-        }
-        return result;
-    }
-
-    private static HotSpotDiagnostic hsDiagMBean = null;
-    private static HotspotRuntime hsRuntimeMBean = null;
-    private static HotspotClassLoading hsClassMBean = null;
-    private static HotspotThread hsThreadMBean = null;
-    private static HotspotCompilation hsCompileMBean = null;
-    private static HotspotMemory hsMemoryMBean = null;
-
-    public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
-        if (hsDiagMBean == null) {
-            hsDiagMBean = new HotSpotDiagnostic();
-        }
-        return hsDiagMBean;
-    }
-
-    /**
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
-        if (hsRuntimeMBean == null) {
-            hsRuntimeMBean = new HotspotRuntime(jvm);
-        }
-        return hsRuntimeMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotClassLoadingMBean getHotspotClassLoadingMBean() {
-        if (hsClassMBean == null) {
-            hsClassMBean = new HotspotClassLoading(jvm);
-        }
-        return hsClassMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotThreadMBean getHotspotThreadMBean() {
-        if (hsThreadMBean == null) {
-            hsThreadMBean = new HotspotThread(jvm);
-        }
-        return hsThreadMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotMemoryMBean getHotspotMemoryMBean() {
-        if (hsMemoryMBean == null) {
-            hsMemoryMBean = new HotspotMemory(jvm);
-        }
-        return hsMemoryMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
-        if (hsCompileMBean == null) {
-            hsCompileMBean = new HotspotCompilation(jvm);
-        }
-        return hsCompileMBean;
-    }
-
-    private static Permission monitorPermission =
-        new ManagementPermission("monitor");
-    private static Permission controlPermission =
-        new ManagementPermission("control");
-
-    /**
-     * Check that the current context is trusted to perform monitoring
-     * or management.
-     * <p>
-     * If the check fails we throw a SecurityException, otherwise
-     * we return normally.
-     *
-     * @exception  SecurityException  if a security manager exists and if
-     *             the caller does not have ManagementPermission("control").
-     */
-    static void checkAccess(Permission p)
-         throws SecurityException {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(p);
-        }
-    }
-
-    static void checkMonitorAccess() throws SecurityException {
-        checkAccess(monitorPermission);
-    }
-    static void checkControlAccess() throws SecurityException {
-        checkAccess(controlPermission);
-    }
-
-    /**
-     * Registers an MXBean and throws exception if an instance with the same
-     * name exists.
-     *
-     * This method makes a DynamicMBean out of an MXBean by wrapping it with a
-     * StandardMBean (StandardEmitterMBean if the supplied emitter is not null),
-     * so it can be registered in an MBeanServer which does not have support for
-     * MXBeans.
-     */
-    private static void addMXBean(MBeanServer mbs, Object mbean,
-                                  String mbeanName, NotificationEmitter emitter) {
-        // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
-        //
-        final DynamicMBean dmbean;
-        if (emitter == null) {
-            dmbean = new StandardMBean(mbean, null, true);
-        } else {
-            dmbean = new StandardEmitterMBean(mbean, null, true, emitter);
-        }
-        addMBean(mbs, dmbean, mbeanName, false);
-    }
-
-    /**
-     * Registers a Standard MBean or a Dynamic MBean and throws
-     * exception if an instance with the same name exists.
-     */
-    private static void addMBean(MBeanServer mbs, Object mbean, String mbeanName) {
-        addMBean(mbs, mbean, mbeanName, false);
-    }
-
-    private static void addMBean(MBeanServer mbs, Object mbean,
-                                 String mbeanName, boolean ignoreConflicts) {
-        try {
-            final ObjectName objName = new ObjectName(mbeanName);
-
-            // inner class requires these fields to be final
-            final MBeanServer mbs0 = mbs;
-            final Object mbean0 = mbean;
-            final boolean ignore = ignoreConflicts;
-            AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
-                public Object run() throws InstanceAlreadyExistsException,
-                                           MBeanRegistrationException,
-                                           NotCompliantMBeanException {
-                    try {
-                        ObjectInstance o = mbs0.registerMBean(mbean0,
-                                                              objName);
-                        return null;
-                    } catch (InstanceAlreadyExistsException e) {
-                        // if an instance with the object name exists in
-                        // the MBeanServer ignore the exception
-                        // if ignoreConflicts is true;
-                        // otherwise, throws exception.
-                        if (!ignore) {
-                             throw e;
-                        }
-                    }
-                    return null;
-                }
-            });
-        } catch (PrivilegedActionException e) {
-            throw Util.newException(e.getException());
-        } catch (MalformedObjectNameException e) {
-            // should not reach here
-            throw Util.newException(e);
-        }
-    }
-
-    public static MBeanServer createPlatformMBeanServer() {
-        MBeanServer mbs = MBeanServerFactory.createMBeanServer();
-        // Register all the platform MBeans to this MBeanServer
-        addMXBean(mbs, getClassLoadingMXBean(),
-                  CLASS_LOADING_MXBEAN_NAME, null);
-        addMXBean(mbs, getMemoryMXBean(),
-                  MEMORY_MXBEAN_NAME, (NotificationEmitter) getMemoryMXBean());
-        addMXBean(mbs, getOperatingSystemMXBean(),
-                  OPERATING_SYSTEM_MXBEAN_NAME, null);
-        addMXBean(mbs, getRuntimeMXBean(),
-                  RUNTIME_MXBEAN_NAME, null);
-        addMXBean(mbs, getThreadMXBean(),
-                  THREAD_MXBEAN_NAME, null);
-        addMXBean(mbs, getDiagnosticMXBean(),
-                  HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, null);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            addMXBean(mbs, getCompilationMXBean(),
-                      COMPILATION_MXBEAN_NAME, null);
-        }
-
-        // Register MBeans for memory pools and memory managers
-        addMemoryManagers(mbs);
-        addMemoryPools(mbs);
-
-        // Register platform extension
-        addMXBean(mbs, LogManager.getLoggingMXBean(),
-                  LogManager.LOGGING_MXBEAN_NAME, null);
-
-        return mbs;
-    }
-
-    private final static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME =
-        "com.sun.management:type=HotSpotDiagnostic";
-
-    private final static String HOTSPOT_CLASS_LOADING_MBEAN_NAME =
-        "sun.management:type=HotspotClassLoading";
-
-    private final static String HOTSPOT_COMPILATION_MBEAN_NAME =
-        "sun.management:type=HotspotCompilation";
-
-    private final static String HOTSPOT_MEMORY_MBEAN_NAME =
-        "sun.management:type=HotspotMemory";
-
-    private static final String HOTSPOT_RUNTIME_MBEAN_NAME =
-        "sun.management:type=HotspotRuntime";
-
-    private final static String HOTSPOT_THREAD_MBEAN_NAME =
-        "sun.management:type=HotspotThreading";
-
-    private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
-        "sun.management:type=HotspotInternal";
-
-    private static ObjectName hsInternalObjName = null;
-    static synchronized ObjectName getHotspotInternalObjectName() {
-        if (hsInternalObjName == null) {
-            try {
-                hsInternalObjName = new ObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
-            } catch (MalformedObjectNameException e) {
-                // should not reach here
-                throw Util.newException(e);
-            }
-        }
-        return hsInternalObjName;
-    }
-
-    static void registerInternalMBeans(MBeanServer mbs) {
-        // register all internal MBeans if not registered
-        // No exception is thrown if a MBean with that object name
-        // already registered (i.e. ignore if name conflicts).
-        addMBean(mbs, getHotspotClassLoadingMBean(),
-            HOTSPOT_CLASS_LOADING_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotMemoryMBean(),
-            HOTSPOT_MEMORY_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotRuntimeMBean(),
-            HOTSPOT_RUNTIME_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotThreadMBean(),
-            HOTSPOT_THREAD_MBEAN_NAME, true);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            addMBean(mbs, getHotspotCompilationMBean(),
-                HOTSPOT_COMPILATION_MBEAN_NAME, true);
-        }
-    }
-
-    private static void unregisterMBean(MBeanServer mbs, String mbeanName) {
-        try {
-            final ObjectName objName = new ObjectName(mbeanName);
-
-            // inner class requires these fields to be final
-            final MBeanServer mbs0 = mbs;
-            AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
-                public Object run() throws MBeanRegistrationException,
-                                           RuntimeOperationsException  {
-                    try {
-                        mbs0.unregisterMBean(objName);
-                    } catch (InstanceNotFoundException e) {
-                        // ignore exception if not found
-                    }
-                    return null;
-                }
-            });
-        } catch (PrivilegedActionException e) {
-            throw Util.newException(e.getException());
-        } catch (MalformedObjectNameException e) {
-            // should not reach here
-            throw Util.newException(e);
-        }
-    }
-
-    static void unregisterInternalMBeans(MBeanServer mbs) {
-        // unregister all internal MBeans
-        unregisterMBean(mbs, HOTSPOT_CLASS_LOADING_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_MEMORY_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_RUNTIME_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_THREAD_MBEAN_NAME);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
-        }
-    }
-
-    private static synchronized void addMemoryPools(MBeanServer mbs) {
-
-        // Get a list of memory pools
-        MemoryPoolMXBean[] newPools = MemoryImpl.getMemoryPools();
-
-        for (int i = 0; i < newPools.length; i++) {
-            String poolObjNameString = Util.getMBeanObjectName(newPools[i]);
-            addMXBean(mbs, newPools[i], poolObjNameString, null);
-        }
-    }
-
-    // Register all memory managers with the MBeanServer;
-    private static synchronized void addMemoryManagers(MBeanServer mbs) {
-
-        // Get a list of memory managers
-        MemoryManagerMXBean[] newMgrs = MemoryImpl.getMemoryManagers();
-
-        for (int i = 0; i < newMgrs.length; i++) {
-            String mgrObjNameString = Util.getMBeanObjectName(newMgrs[i]);
-            addMXBean(mbs, newMgrs[i], mgrObjNameString, null);
-        }
-    }
-
     // Invoked by the VM
     private static MemoryPoolMXBean createMemoryPool
         (String name, boolean isHeap, long uThreshold, long gcThreshold) {
@@ -480,29 +52,4 @@
         // ignore type parameter which is for future extension
         return new GarbageCollectorImpl(name);
     }
-
-    static {
-        AccessController.doPrivileged(new LoadLibraryAction("management"));
-        jvm = new VMManagementImpl();
-    }
-
-    public static boolean isThreadSuspended(int state) {
-        return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
-    }
-
-    public static boolean isThreadRunningNative(int state) {
-        return ((state & JMM_THREAD_STATE_FLAG_NATIVE) != 0);
-    }
-
-    public static Thread.State toThreadState(int state) {
-        // suspended and native bits may be set in state
-        int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
-        return sun.misc.VM.toThreadState(threadStatus);
-    }
-
-    // These values are defined in jmm.h
-    private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
-    private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
-    private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/management/ManagementFactoryHelper.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.management;
+
+import java.lang.management.*;
+import java.util.logging.LogManager;
+
+import javax.management.DynamicMBean;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MBeanInfo;
+import javax.management.NotificationEmitter;
+import javax.management.ObjectName;
+import javax.management.ObjectInstance;
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.RuntimeOperationsException;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import sun.security.action.LoadLibraryAction;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.ListIterator;
+import com.sun.management.OSMBeanFactory;
+import com.sun.management.HotSpotDiagnosticMXBean;
+
+import static java.lang.management.ManagementFactory.*;
+
+/**
+ * ManagementFactoryHelper provides static factory methods to create
+ * instances of the management interface.
+ */
+public class ManagementFactoryHelper {
+    private ManagementFactoryHelper() {};
+
+    private static VMManagement jvm;
+
+    private static boolean mbeansCreated = false;
+    private static ClassLoadingImpl    classMBean = null;
+    private static MemoryImpl          memoryMBean = null;
+    private static ThreadImpl          threadMBean = null;
+    private static RuntimeImpl         runtimeMBean = null;
+    private static CompilationImpl     compileMBean = null;
+    private static OperatingSystemImpl osMBean = null;
+
+    public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
+        if (classMBean == null) {
+            classMBean = new ClassLoadingImpl(jvm);
+        }
+        return classMBean;
+    }
+
+    public static synchronized MemoryMXBean getMemoryMXBean() {
+        if (memoryMBean == null) {
+            memoryMBean = new MemoryImpl(jvm);
+        }
+        return memoryMBean;
+    }
+
+    public static synchronized ThreadMXBean getThreadMXBean() {
+        if (threadMBean == null) {
+            threadMBean = new ThreadImpl(jvm);
+        }
+        return threadMBean;
+    }
+
+    public static synchronized RuntimeMXBean getRuntimeMXBean() {
+        if (runtimeMBean == null) {
+            runtimeMBean = new RuntimeImpl(jvm);
+        }
+        return runtimeMBean;
+    }
+
+    public static synchronized CompilationMXBean getCompilationMXBean() {
+        if (compileMBean == null && jvm.getCompilerName() != null) {
+            compileMBean = new CompilationImpl(jvm);
+        }
+        return compileMBean;
+    }
+
+    public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
+        if (osMBean == null) {
+            osMBean = (OperatingSystemImpl)
+                          OSMBeanFactory.getOperatingSystemMXBean(jvm);
+        }
+        return osMBean;
+    }
+
+    public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
+        MemoryPoolMXBean[] pools = MemoryImpl.getMemoryPools();
+        List<MemoryPoolMXBean> list = new ArrayList<MemoryPoolMXBean>(pools.length);
+        for (MemoryPoolMXBean p : pools) {
+            list.add(p);
+        }
+        return list;
+    }
+
+    public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
+        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
+        List<MemoryManagerMXBean> result = new ArrayList<MemoryManagerMXBean>(mgrs.length);
+        for (MemoryManagerMXBean m : mgrs) {
+            result.add(m);
+        }
+        return result;
+    }
+
+    public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
+        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
+        List<GarbageCollectorMXBean> result = new ArrayList<GarbageCollectorMXBean>(mgrs.length);
+        for (MemoryManagerMXBean m : mgrs) {
+            if (GarbageCollectorMXBean.class.isInstance(m)) {
+                 result.add(GarbageCollectorMXBean.class.cast(m));
+            }
+        }
+        return result;
+    }
+
+    private static HotSpotDiagnostic hsDiagMBean = null;
+    private static HotspotRuntime hsRuntimeMBean = null;
+    private static HotspotClassLoading hsClassMBean = null;
+    private static HotspotThread hsThreadMBean = null;
+    private static HotspotCompilation hsCompileMBean = null;
+    private static HotspotMemory hsMemoryMBean = null;
+
+    public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
+        if (hsDiagMBean == null) {
+            hsDiagMBean = new HotSpotDiagnostic();
+        }
+        return hsDiagMBean;
+    }
+
+    /**
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
+        if (hsRuntimeMBean == null) {
+            hsRuntimeMBean = new HotspotRuntime(jvm);
+        }
+        return hsRuntimeMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotClassLoadingMBean getHotspotClassLoadingMBean() {
+        if (hsClassMBean == null) {
+            hsClassMBean = new HotspotClassLoading(jvm);
+        }
+        return hsClassMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotThreadMBean getHotspotThreadMBean() {
+        if (hsThreadMBean == null) {
+            hsThreadMBean = new HotspotThread(jvm);
+        }
+        return hsThreadMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotMemoryMBean getHotspotMemoryMBean() {
+        if (hsMemoryMBean == null) {
+            hsMemoryMBean = new HotspotMemory(jvm);
+        }
+        return hsMemoryMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
+        if (hsCompileMBean == null) {
+            hsCompileMBean = new HotspotCompilation(jvm);
+        }
+        return hsCompileMBean;
+    }
+
+    /**
+     * Registers a given MBean if not registered in the MBeanServer;
+     * otherwise, just return.
+     */
+    private static void addMBean(MBeanServer mbs, Object mbean, String mbeanName) {
+        try {
+            final ObjectName objName = Util.newObjectName(mbeanName);
+
+            // inner class requires these fields to be final
+            final MBeanServer mbs0 = mbs;
+            final Object mbean0 = mbean;
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws MBeanRegistrationException,
+                                         NotCompliantMBeanException {
+                    try {
+                        mbs0.registerMBean(mbean0, objName);
+                        return null;
+                    } catch (InstanceAlreadyExistsException e) {
+                        // if an instance with the object name exists in
+                        // the MBeanServer ignore the exception
+                    }
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw Util.newException(e.getException());
+        }
+    }
+
+    private final static String HOTSPOT_CLASS_LOADING_MBEAN_NAME =
+        "sun.management:type=HotspotClassLoading";
+
+    private final static String HOTSPOT_COMPILATION_MBEAN_NAME =
+        "sun.management:type=HotspotCompilation";
+
+    private final static String HOTSPOT_MEMORY_MBEAN_NAME =
+        "sun.management:type=HotspotMemory";
+
+    private static final String HOTSPOT_RUNTIME_MBEAN_NAME =
+        "sun.management:type=HotspotRuntime";
+
+    private final static String HOTSPOT_THREAD_MBEAN_NAME =
+        "sun.management:type=HotspotThreading";
+
+    static void registerInternalMBeans(MBeanServer mbs) {
+        // register all internal MBeans if not registered
+        // No exception is thrown if a MBean with that object name
+        // already registered
+        addMBean(mbs, getHotspotClassLoadingMBean(),
+            HOTSPOT_CLASS_LOADING_MBEAN_NAME);
+        addMBean(mbs, getHotspotMemoryMBean(),
+            HOTSPOT_MEMORY_MBEAN_NAME);
+        addMBean(mbs, getHotspotRuntimeMBean(),
+            HOTSPOT_RUNTIME_MBEAN_NAME);
+        addMBean(mbs, getHotspotThreadMBean(),
+            HOTSPOT_THREAD_MBEAN_NAME);
+
+        // CompilationMBean may not exist
+        if (getCompilationMXBean() != null) {
+            addMBean(mbs, getHotspotCompilationMBean(),
+                HOTSPOT_COMPILATION_MBEAN_NAME);
+        }
+    }
+
+    private static void unregisterMBean(MBeanServer mbs, String mbeanName) {
+        try {
+            final ObjectName objName = Util.newObjectName(mbeanName);
+
+            // inner class requires these fields to be final
+            final MBeanServer mbs0 = mbs;
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws MBeanRegistrationException,
+                                           RuntimeOperationsException  {
+                    try {
+                        mbs0.unregisterMBean(objName);
+                    } catch (InstanceNotFoundException e) {
+                        // ignore exception if not found
+                    }
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw Util.newException(e.getException());
+        }
+    }
+
+    static void unregisterInternalMBeans(MBeanServer mbs) {
+        // unregister all internal MBeans
+        unregisterMBean(mbs, HOTSPOT_CLASS_LOADING_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_MEMORY_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_RUNTIME_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_THREAD_MBEAN_NAME);
+
+        // CompilationMBean may not exist
+        if (getCompilationMXBean() != null) {
+            unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
+        }
+    }
+
+    static {
+        AccessController.doPrivileged(new LoadLibraryAction("management"));
+        jvm = new VMManagementImpl();
+    }
+
+    public static boolean isThreadSuspended(int state) {
+        return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
+    }
+
+    public static boolean isThreadRunningNative(int state) {
+        return ((state & JMM_THREAD_STATE_FLAG_NATIVE) != 0);
+    }
+
+    public static Thread.State toThreadState(int state) {
+        // suspended and native bits may be set in state
+        int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
+        return sun.misc.VM.toThreadState(threadStatus);
+    }
+
+    // These values are defined in jmm.h
+    private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
+    private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
+    private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
+
+}
--- a/src/share/classes/sun/management/MappedMXBeanType.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MappedMXBeanType.java	Tue May 13 11:33:06 2008 -0700
@@ -735,14 +735,14 @@
             throws OpenDataException, InvalidObjectException {
 
             if (fromMethod == null) {
-                throw new InternalError("Does not support data conversion");
+                throw new AssertionError("Does not support data conversion");
             }
 
             try {
                 return fromMethod.invoke(null, data);
             } catch (IllegalAccessException e) {
                 // should never reach here
-                throw Util.newAssertionError(e);
+                throw new AssertionError(e);
             } catch (InvocationTargetException e) {
                 final OpenDataException ode =
                     new OpenDataException("Failed to invoke " +
@@ -785,7 +785,7 @@
             t = new InProgress();
         } catch (OpenDataException e) {
             // Should not reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
         inProgress = t;
     }
@@ -807,9 +807,9 @@
                 } catch (ClassNotFoundException e) {
                     // the classes that these predefined types declare
                     // must exist!
-                    throw Util.newAssertionError(e);
+                    throw new AssertionError(e);
                 } catch (OpenDataException e) {
-                    throw Util.newAssertionError(e);
+                    throw new AssertionError(e);
                 }
 
                 if (c.getName().startsWith("java.lang.")) {
@@ -821,12 +821,12 @@
                         // OK: must not be a primitive wrapper
                     } catch (IllegalAccessException e) {
                         // Should not reach here
-                       throw Util.newAssertionError(e);
+                       throw new AssertionError(e);
                     }
                 }
             }
         } catch (OpenDataException e) {
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MemoryImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MemoryImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -25,13 +25,13 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryMXBean;
 import java.lang.management.MemoryUsage;
 import java.lang.management.MemoryNotificationInfo;
 import java.lang.management.MemoryManagerMXBean;
 import java.lang.management.MemoryPoolMXBean;
 import javax.management.ObjectName;
-import javax.management.MalformedObjectNameException;
 import javax.management.MBeanNotificationInfo;
 import javax.management.Notification;
 import javax.management.NotificationEmitter;
@@ -88,7 +88,7 @@
     }
 
     public void setVerbose(boolean value) {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         setVerboseGC(value);
     }
@@ -150,19 +150,6 @@
         return ++seqNumber;
     }
 
-    private static ObjectName objname = null;
-    private static synchronized ObjectName getObjectName() {
-        if (objname != null) return objname;
-
-        try {
-            objname = new ObjectName(java.lang.management.ManagementFactory.MEMORY_MXBEAN_NAME);
-        } catch (MalformedObjectNameException e) {
-            // should never reach here
-            throw Util.newInternalError(e);
-        }
-        return objname;
-    }
-
     static void createNotification(String notifType,
                                    String poolName,
                                    MemoryUsage usage,
@@ -175,7 +162,7 @@
         long timestamp = System.currentTimeMillis();
         String msg = getNotifMsg(notifType);
         Notification notif = new Notification(notifType,
-                                              getObjectName(),
+                                              mbean.getObjectName(),
                                               getNextSeqNumber(),
                                               timestamp,
                                               msg);
@@ -189,4 +176,8 @@
         mbean.sendNotification(notif);
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryManagerImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MemoryManagerImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -25,9 +25,12 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryManagerMXBean;
 import java.lang.management.MemoryPoolMXBean;
 
+import javax.management.ObjectName;
+
 /**
  * Implementation class for a memory manager.
  * Standard and committed hotspot-specific metrics if any.
@@ -73,4 +76,8 @@
     }
     private native MemoryPoolMXBean[] getMemoryPools0();
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -69,7 +69,7 @@
                                             memoryNotifInfoItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -80,7 +80,7 @@
                 MappedMXBeanType.toOpenType(MemoryNotificationInfo.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MemoryPoolImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MemoryPoolImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -25,12 +25,13 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryPoolMXBean;
-
 import java.lang.management.MemoryUsage;
 import java.lang.management.MemoryType;
 import java.lang.management.MemoryManagerMXBean;
 import javax.management.openmbean.CompositeData;
+import javax.management.ObjectName;
 
 import static java.lang.management.MemoryNotificationInfo.*;
 
@@ -114,7 +115,7 @@
                 "Usage threshold is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         MemoryUsage usage = getUsage0();
         if (newThreshold < 0) {
@@ -159,7 +160,7 @@
     }
 
     public void resetPeakUsage() {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         synchronized (this) {
             // synchronized since getPeakUsage may be called concurrently
@@ -211,7 +212,7 @@
                 "CollectionUsage threshold is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         MemoryUsage usage = getUsage0();
         if (newThreshold < 0) {
@@ -304,7 +305,7 @@
         }
         void triggerAction() {
             // Should not reach here
-            throw new InternalError();
+            throw new AssertionError("Should not reach here");
         }
         void clearAction() {
             // do nothing
@@ -332,10 +333,15 @@
         }
         void triggerAction() {
             // Should not reach here
-            throw new InternalError();
+            throw new AssertionError("Should not reach here");
         }
         void clearAction() {
             // do nothing
         }
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_POOL_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryUsageCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MemoryUsageCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -68,7 +68,7 @@
                                             memoryUsageItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -79,7 +79,7 @@
                 MappedMXBeanType.toOpenType(MemoryUsage.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MonitorInfoCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/MonitorInfoCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -81,7 +81,7 @@
                                             values);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -95,7 +95,7 @@
             monitorInfoItemNames = (String[]) s.toArray(new String[0]);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/NotificationEmitterSupport.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/NotificationEmitterSupport.java	Tue May 13 11:33:06 2008 -0700
@@ -156,7 +156,7 @@
                     li.listener.handleNotification(notification, li.handback);
                 } catch (Exception e) {
                     e.printStackTrace();
-                    throw new InternalError("Error in invoking listener");
+                    throw new AssertionError("Error in invoking listener");
                 }
             }
         }
--- a/src/share/classes/sun/management/OperatingSystemImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/OperatingSystemImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 import sun.misc.Unsafe;
 
 /**
@@ -71,4 +73,9 @@
              return -1.0;
         }
     }
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
+    }
+
 }
+
--- a/src/share/classes/sun/management/RuntimeImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/RuntimeImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,7 @@
 package sun.management;
 
 import java.lang.management.RuntimeMXBean;
+import java.lang.management.ManagementFactory;
 
 import java.util.List;
 import java.util.HashMap;
@@ -38,6 +39,7 @@
 import javax.management.openmbean.OpenType;
 import javax.management.openmbean.SimpleType;
 import javax.management.openmbean.OpenDataException;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the runtime subsystem.
@@ -104,12 +106,12 @@
             throw new UnsupportedOperationException(
                 "Boot class path mechanism is not supported");
         }
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return jvm.getBootClassPath();
     }
 
     public List<String> getInputArguments() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return jvm.getVmArguments();
     }
 
@@ -145,4 +147,9 @@
 
         return map;
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
+    }
+
 }
--- a/src/share/classes/sun/management/StackTraceElementCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/StackTraceElementCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -76,7 +76,7 @@
                                             stackTraceElementItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -87,7 +87,7 @@
                 MappedMXBeanType.toOpenType(StackTraceElement.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/ThreadImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/ThreadImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -26,6 +26,7 @@
 package sun.management;
 
 import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
 
 import java.lang.management.ThreadInfo;
 import java.lang.management.LockInfo;
@@ -33,6 +34,8 @@
 import java.util.Map;
 import java.util.HashMap;
 
+import javax.management.ObjectName;
+
 /**
  * Implementation class for the thread subsystem.
  * Standard and committed hotspot-specific metrics if any.
@@ -102,7 +105,7 @@
     }
 
     public long[] getAllThreadIds() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = getThreads();
         int length = threads.length;
@@ -156,7 +159,7 @@
                 "Invalid maxDepth parameter: " + maxDepth);
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         ThreadInfo[] infos = new ThreadInfo[ids.length];
         if (maxDepth == Integer.MAX_VALUE) {
@@ -175,7 +178,7 @@
                 "Thread contention monitoring is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         synchronized (this) {
             if (contentionMonitoringEnabled != enable) {
@@ -297,7 +300,7 @@
                 "Thread CPU time measurement is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         synchronized (this) {
             if (cpuTimeEnabled != enable) {
                 // update VM of the state change
@@ -308,7 +311,7 @@
     }
 
     public long[] findMonitorDeadlockedThreads() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = findMonitorDeadlockedThreads0();
         if (threads == null) {
@@ -329,7 +332,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = findDeadlockedThreads0();
         if (threads == null) {
@@ -345,7 +348,7 @@
     }
 
     public void resetPeakThreadCount() {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         resetPeakThreadCount0();
     }
 
@@ -373,7 +376,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return dumpThreads0(ids, lockedMonitors, lockedSynchronizers);
     }
 
@@ -388,7 +391,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return dumpThreads0(null, lockedMonitors, lockedSynchronizers);
     }
 
@@ -410,4 +413,10 @@
 
     // tid == 0 to reset contention times for all threads
     private static native void resetContentionTimes0(long tid);
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
+    }
+
 }
+
--- a/src/share/classes/sun/management/ThreadInfoCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/ThreadInfoCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -126,7 +126,7 @@
                                             threadInfoItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -209,7 +209,7 @@
                                   v5ItemTypes);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
 
         // Each CompositeData object has its CompositeType associated
--- a/src/share/classes/sun/management/Util.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/Util.java	Tue May 13 11:33:06 2008 -0700
@@ -26,48 +26,58 @@
 package sun.management;
 
 import java.lang.management.*;
+import java.util.List;
+import java.security.Permission;
+import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
+
 import static java.lang.management.ManagementFactory.*;
-import java.util.List;
 
 class Util {
-    static String getMBeanObjectName(MemoryPoolMXBean pool) {
-        return MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
-            ",name=" + pool.getName();
+    static RuntimeException newException(Exception e) {
+        throw new RuntimeException(e);
+    }
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+    static String[] toStringArray(List<String> list) {
+        return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+    }
+
+    static ObjectName newObjectName(String name) {
+        return com.sun.jmx.mbeanserver.Util.newObjectName(name);
+    }
+
+    public static ObjectName newObjectName(String domainAndType, String name) {
+        return newObjectName(domainAndType + ",name=" + name);
     }
 
-    static String getMBeanObjectName(MemoryManagerMXBean mgr) {
-        if (mgr instanceof GarbageCollectorMXBean) {
-            return getMBeanObjectName((GarbageCollectorMXBean) mgr);
-        } else {
-            return MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE +
-                ",name=" + mgr.getName();
+    private static ManagementPermission monitorPermission =
+        new ManagementPermission("monitor");
+    private static ManagementPermission controlPermission =
+        new ManagementPermission("control");
+
+    /**
+     * Check that the current context is trusted to perform monitoring
+     * or management.
+     * <p>
+     * If the check fails we throw a SecurityException, otherwise
+     * we return normally.
+     *
+     * @exception  SecurityException  if a security manager exists and if
+     *             the caller does not have ManagementPermission("control").
+     */
+    static void checkAccess(ManagementPermission p)
+         throws SecurityException {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(p);
         }
     }
 
-    static String getMBeanObjectName(GarbageCollectorMXBean gc) {
-        return GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
-            ",name=" + gc.getName();
-    }
-
-    static RuntimeException newException(Exception e) {
-        RuntimeException e1 = new RuntimeException(e.getMessage());
-        e1.initCause(e);
-        return e1;
+    static void checkMonitorAccess() throws SecurityException {
+        checkAccess(monitorPermission);
     }
-
-    static InternalError newInternalError(Exception e) {
-        InternalError e1 = new InternalError(e.getMessage());
-        e1.initCause(e);
-        return e1;
-    }
-    static AssertionError newAssertionError(Exception e) {
-        AssertionError e1 = new AssertionError(e.getMessage());
-        e1.initCause(e);
-        return e1;
-    }
-
-    private static String[] EMPTY_STRING_ARRAY = new String[0];
-    static String[] toStringArray(List<String> list) {
-        return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+    static void checkControlAccess() throws SecurityException {
+        checkAccess(controlPermission);
     }
 }
--- a/src/share/classes/sun/management/VMManagementImpl.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/VMManagementImpl.java	Tue May 13 11:33:06 2008 -0700
@@ -59,7 +59,7 @@
     static {
         version = getVersion0();
         if (version == null) {
-            throw new InternalError("Invalid Management Version");
+            throw new AssertionError("Invalid Management Version");
         }
         initOptionalSupportFields();
     }
@@ -244,7 +244,7 @@
             // was set
             noPerfData = true;
         } catch (IOException e) {
-            throw new InternalError(e.getMessage());
+            throw new AssertionError(e);
         }
         return perfInstr;
     }
--- a/src/share/classes/sun/management/VMOptionCompositeData.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/management/VMOptionCompositeData.java	Tue May 13 11:33:06 2008 -0700
@@ -69,7 +69,7 @@
                                             vmOptionItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -80,7 +80,7 @@
                 MappedMXBeanType.toOpenType(VMOption.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/CharsetMapping.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,351 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.*;
+import java.security.*;
+
+public class CharsetMapping {
+    public final static char UNMAPPABLE_DECODING = '\uFFFD';
+    public final static int  UNMAPPABLE_ENCODING = -1;
+
+    char[] b2cSB;                //singlebyte b->c
+    char[] b2cDB1;               //dobulebyte b->c /db1
+    char[] b2cDB2;               //dobulebyte b->c /db2
+
+    int    b2Min, b2Max;         //min/max(start/end) value of 2nd byte
+    int    b1MinDB1, b1MaxDB1;   //min/Max(start/end) value of 1st byte/db1
+    int    b1MinDB2, b1MaxDB2;   //min/Max(start/end) value of 1st byte/db2
+    int    dbSegSize;
+
+    char[] c2b;
+    char[] c2bIndex;
+
+    // Supplementary
+    char[] b2cSupp;
+    char[] c2bSupp;
+
+    // Composite
+    Entry[] b2cComp;
+    Entry[] c2bComp;
+
+    public char decodeSingle(int b) {
+        return b2cSB[b];
+    }
+
+    public char decodeDouble(int b1, int b2) {
+        if (b2 >= b2Min && b2 < b2Max) {
+            b2 -= b2Min;
+            if (b1 >= b1MinDB1 && b1 <= b1MaxDB1) {
+                b1 -= b1MinDB1;
+                return b2cDB1[b1 * dbSegSize + b2];
+            }
+            if (b1 >= b1MinDB2 && b1 <= b1MaxDB2) {
+                b1 -= b1MinDB2;
+                return b2cDB2[b1 * dbSegSize + b2];
+            }
+        }
+        return UNMAPPABLE_DECODING;
+    }
+
+    // for jis0213 all supplementary characters are in 0x2xxxx range,
+    // so only the xxxx part is now stored, should actually store the
+    // codepoint value instead.
+    public char[] decodeSurrogate(int db, char[] cc) {
+        int end = b2cSupp.length / 2;
+        int i = Arrays.binarySearch(b2cSupp, 0, end, (char)db);
+        if (i >= 0) {
+            Character.toChars(b2cSupp[end + i] + 0x20000, cc, 0);
+            return cc;
+        }
+        return null;
+    }
+
+    public char[] decodeComposite(Entry comp, char[] cc) {
+        int i = findBytes(b2cComp, comp);
+        if (i >= 0) {
+            cc[0] = (char)b2cComp[i].cp;
+            cc[1] = (char)b2cComp[i].cp2;
+            return cc;
+        }
+        return null;
+    }
+
+    public int encodeChar(char ch) {
+        int index = c2bIndex[ch >> 8];
+        if (index == 0xffff)
+            return UNMAPPABLE_ENCODING;
+        return c2b[index + (ch & 0xff)];
+    }
+
+    public int encodeSurrogate(char hi, char lo) {
+        char c = (char)Character.toCodePoint(hi, lo);
+        int end = c2bSupp.length / 2;
+        int i = Arrays.binarySearch(c2bSupp, 0, end, c);
+        if (i >= 0)
+            return c2bSupp[end + i];
+        return UNMAPPABLE_ENCODING;
+    }
+
+    public boolean isCompositeBase(Entry comp) {
+        if (comp.cp <= 0x31f7 && comp.cp >= 0xe6) {
+            return (findCP(c2bComp, comp) >= 0);
+        }
+        return false;
+    }
+
+    public int encodeComposite(Entry comp) {
+        int i = findComp(c2bComp, comp);
+        if (i >= 0)
+            return c2bComp[i].bs;
+        return UNMAPPABLE_ENCODING;
+    }
+
+    // init the CharsetMapping object from the .dat binary file
+    public static CharsetMapping get(final InputStream is) {
+        return AccessController.doPrivileged(new PrivilegedAction<CharsetMapping>() {
+            public CharsetMapping run() {
+                return new CharsetMapping().load(is);
+            }
+        });
+    }
+
+    public static class Entry {
+        public int bs;   //byte sequence reps
+        public int cp;   //Unicode codepoint
+        public int cp2;  //CC of composite
+    }
+
+    static Comparator<Entry> comparatorBytes =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.bs - m2.bs;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static Comparator<Entry> comparatorCP =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.cp - m2.cp;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static Comparator<Entry> comparatorComp =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                 int v = m1.cp - m2.cp;
+                 if (v == 0)
+                   v = m1.cp2 - m2.cp2;
+                 return v;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static int findBytes(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorBytes);
+    }
+
+    static int findCP(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorCP);
+    }
+
+    static int findComp(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorComp);
+    }
+
+    /*****************************************************************************/
+    // tags of different charset mapping tables
+    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
+    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
+    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
+    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
+    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
+    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
+    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
+
+    private static final boolean readNBytes(InputStream in, byte[] bb, int N)
+        throws IOException
+    {
+        int off = 0;
+        while (N > 0) {
+            int n = in.read(bb, off, N);
+            if (n == -1)
+                return false;
+            N = N - n;
+            off += n;
+        }
+        return true;
+    }
+
+    int off = 0;
+    byte[] bb;
+    private char[] readCharArray() {
+        // first 2 bytes are the number of "chars" stored in this table
+        int size  = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        char [] cc = new char[size];
+        for (int i = 0; i < size; i++) {
+            cc[i] = (char)(((bb[off++]&0xff)<<8) | (bb[off++]&0xff));
+        }
+        return cc;
+    }
+
+    void readSINGLEBYTE() {
+        char[] map = readCharArray();
+        for (int i = 0; i < map.length; i++) {
+            char c = map[i];
+            if (c != UNMAPPABLE_DECODING) {
+                c2b[c2bIndex[c >> 8] + (c&0xff)] = (char)i;
+            }
+        }
+        b2cSB = map;
+    }
+
+    void readINDEXC2B() {
+        char[] map = readCharArray();
+        for (int i = map.length - 1; i >= 0; i--) {
+            if (c2b == null && map[i] != -1) {
+                c2b = new char[map[i] + 256];
+                Arrays.fill(c2b, (char)UNMAPPABLE_ENCODING);
+                break;
+            }
+        }
+        c2bIndex = map;
+    }
+
+    char[] readDB(int b1Min, int b2Min, int segSize) {
+        char[] map = readCharArray();
+        for (int i = 0; i < map.length; i++) {
+            char c = map[i];
+            if (c != UNMAPPABLE_DECODING) {
+                int b1 = i / segSize;
+                int b2 = i % segSize;
+                int b = (b1 + b1Min)* 256 + (b2 + b2Min);
+                //System.out.printf("    DB %x\t%x%n", b, c & 0xffff);
+                c2b[c2bIndex[c >> 8] + (c&0xff)] = (char)(b);
+            }
+        }
+        return map;
+    }
+
+    void readDOUBLEBYTE1() {
+        b1MinDB1 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b1MaxDB1 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Min =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Max =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        dbSegSize = b2Max - b2Min + 1;
+        b2cDB1 = readDB(b1MinDB1, b2Min, dbSegSize);
+    }
+
+    void readDOUBLEBYTE2() {
+        b1MinDB2 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b1MaxDB2 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Min =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Max =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        dbSegSize = b2Max - b2Min + 1;
+        b2cDB2 = readDB(b1MinDB2, b2Min, dbSegSize);
+    }
+
+    void readCOMPOSITE() {
+        char[] map = readCharArray();
+        int mLen = map.length/3;
+        b2cComp = new Entry[mLen];
+        c2bComp = new Entry[mLen];
+        for (int i = 0, j= 0; i < mLen; i++) {
+            Entry m = new Entry();
+            m.bs = map[j++];
+            m.cp = map[j++];
+            m.cp2 = map[j++];
+            b2cComp[i] = m;
+            c2bComp[i] = m;
+        }
+        Arrays.sort(c2bComp, 0, c2bComp.length, comparatorComp);
+    }
+
+    CharsetMapping load(InputStream in) {
+        try {
+            // The first 4 bytes are the size of the total data followed in
+            // this .dat file.
+            int len = ((in.read()&0xff) << 24) | ((in.read()&0xff) << 16) |
+                      ((in.read()&0xff) << 8) | (in.read()&0xff);
+            bb = new byte[len];
+            off = 0;
+            //System.out.printf("In : Total=%d%n", len);
+            // Read in all bytes
+            if (!readNBytes(in, bb, len))
+                throw new RuntimeException("Corrupted data file");
+            in.close();
+
+            while (off < len) {
+                int type = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+                switch(type) {
+                case MAP_INDEXC2B:
+                    readINDEXC2B();
+                    break;
+                case MAP_SINGLEBYTE:
+                    readSINGLEBYTE();
+                    break;
+                case MAP_DOUBLEBYTE1:
+                    readDOUBLEBYTE1();
+                    break;
+                case MAP_DOUBLEBYTE2:
+                    readDOUBLEBYTE2();
+                    break;
+                case MAP_SUPPLEMENT:
+                    b2cSupp = readCharArray();
+                    break;
+                case MAP_SUPPLEMENT_C2B:
+                    c2bSupp = readCharArray();
+                    break;
+                case MAP_COMPOSITE:
+                    readCOMPOSITE();
+                    break;
+                default:
+                    throw new RuntimeException("Corrupted data file");
+                }
+            }
+            bb = null;
+            return this;
+        } catch (IOException x) {
+            x.printStackTrace();
+            return null;
+        }
+    }
+}
--- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Tue May 13 11:33:06 2008 -0700
@@ -23,9 +23,6 @@
  * have any questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.lang.ref.SoftReference;
@@ -183,6 +180,25 @@
                     "csISO159JISX02121990"
                 });
 
+        charset("x-SJIS_0213", "SJIS_0213",
+                new String[] {
+                    "sjis-0213",
+                    "sjis_0213",
+                    "sjis:2004",
+                    "sjis_0213:2004",
+                    "shift_jis_0213:2004",
+                    "shift_jis:2004"
+                });
+
+        charset("x-MS932_0213", "MS932_0213",
+                new String[] {
+                    "MS932-0213",
+                    "MS932_0213",
+                    "MS932:2004",
+                    "windows-932-0213",
+                    "windows-932:2004"
+                });
+
         charset("EUC-JP", "EUC_JP",
                 new String[] {
                     "euc_jp", // JDK historical
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/ext/MS932_0213.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CharsetDecoder;
+
+public class MS932_0213 extends Charset {
+    public MS932_0213() {
+        super("x-MS932_0213", ExtendedCharsets.aliasesFor("MS932_0213"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof MS932)
+                || (cs instanceof MS932_0213));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    protected static class Decoder extends SJIS_0213.Decoder {
+        MS932DB.Decoder decMS932;
+        protected Decoder(Charset cs) {
+            super(cs);
+            decMS932 = new MS932DB.Decoder(cs);
+        }
+
+        protected char decodeDouble(int b1, int b2) {
+            char c = decMS932.decodeDouble(b1, b2);
+            if (c == DoubleByteDecoder.REPLACE_CHAR)
+                return super.decodeDouble(b1, b2);
+            return c;
+        }
+    }
+
+    protected static class Encoder extends SJIS_0213.Encoder {
+        MS932DB.Encoder encMS932;
+        protected Encoder(Charset cs) {
+            super(cs);
+            encMS932 = new MS932DB.Encoder(cs);
+        }
+
+        protected int encodeChar(char ch) {
+            int db = encMS932.encodeDouble(ch);
+            if (db == 0)
+                return super.encodeChar(ch);
+            return db;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/ext/SJIS_0213.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,398 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.util.Arrays;
+import sun.nio.cs.CharsetMapping;
+
+/*
+ *  5 types of entry in SJIS_X_0213/Unicode mapping table
+ *
+ *  (1)Single-Byte
+ *     JIS_X_0213 does not define single-byte character itself, the
+ *     JIS_X_0201 entries are added in for sjis implementation.
+ *
+ *  (2)Double-Byte SJIS <-> BMP Unicode
+ *     ex: 0x8140 U+3000    # IDEOGRAPHIC SPACE
+ *
+ *  (3)Double-Byte SJIS <-> Supplementary
+ *     ex: 0xFCF0 U+2A61A   # <cjk> [2000] [Unicode3.1]
+ *
+ *  (4)Double-Byte SJIS <-> Composite
+ *   ex: 0x83F6 U+31F7+309A # [2000]
+ *
+ *  (5)"Windows-only" special mapping entries
+ *     are handled by MS932_0213.
+ */
+
+public class SJIS_0213 extends Charset {
+    public SJIS_0213() {
+        super("x-SJIS_0213", ExtendedCharsets.aliasesFor("SJIS_0213"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof SJIS)
+                || (cs instanceof SJIS_0213));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    static CharsetMapping mapping =
+        CharsetMapping.get(SJIS_0213.class.getResourceAsStream("sjis0213.dat"));
+
+    protected static class Decoder extends CharsetDecoder {
+        protected static final char UNMAPPABLE = CharsetMapping.UNMAPPABLE_DECODING;
+
+        protected Decoder(Charset cs) {
+            super(cs, 0.5f, 1.0f);
+        }
+
+        private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            try {
+                while (sp < sl) {
+                    int b1 = sa[sp] & 0xff;
+                    char c = decodeSingle(b1);
+                    int inSize = 1, outSize = 1;
+                    char[] cc = null;
+                    if (c == UNMAPPABLE) {
+                        if (sl - sp < 2)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = sa[sp + 1] & 0xff;
+                        c = decodeDouble(b1, b2);
+                        inSize++;
+                        if (c == UNMAPPABLE) {
+                            cc = decodeDoubleEx(b1, b2);
+                            if (cc == null) {
+                                if (decodeSingle(b2) == UNMAPPABLE)
+                                    return CoderResult.unmappableForLength(2);
+                                else
+                                    return CoderResult.unmappableForLength(1);
+                            }
+                            outSize++;
+                        }
+                    }
+                    if (dl - dp < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        da[dp++] = cc[0];
+                        da[dp++] = cc[1];
+                    } else {
+                        da[dp++] = c;
+                    }
+                    sp += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char[] cc = null;
+                    int b1 = src.get() & 0xff;
+                    char c = decodeSingle(b1);
+                    int inSize = 1, outSize = 1;
+                    if (c == UNMAPPABLE) {
+                        if (src.remaining() < 1)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = src.get() & 0xff;
+                        inSize++;
+                        c = decodeDouble(b1, b2);
+                        if (c == UNMAPPABLE) {
+                            cc = decodeDoubleEx(b1, b2);
+                            if (cc == null) {
+                                if (decodeSingle(b2) == UNMAPPABLE)
+                                    return CoderResult.unmappableForLength(2);
+                                else
+                                    return CoderResult.unmappableForLength(1);
+                            }
+                            outSize++;
+                        }
+                    }
+                    if (dst.remaining() < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        dst.put(cc[0]);
+                        dst.put(cc[1]);
+                    } else {
+                        dst.put(c);
+                    }
+                    mark += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
+
+        protected char decodeSingle(int b) {
+            return mapping.decodeSingle(b);
+        }
+
+        protected char decodeDouble(int b1, int b2) {
+            return mapping.decodeDouble(b1, b2);
+        }
+
+        private char[] cc = new char[2];
+        private CharsetMapping.Entry comp = new CharsetMapping.Entry();
+        protected char[] decodeDoubleEx(int b1, int b2) {
+            int db = (b1 << 8) | b2;
+            if (mapping.decodeSurrogate(db, cc) != null)
+                return cc;
+            comp.bs = db;
+            if (mapping.decodeComposite(comp, cc) != null)
+                return cc;
+            return null;
+        }
+    }
+
+    protected static class Encoder extends CharsetEncoder {
+        protected static final int UNMAPPABLE = CharsetMapping.UNMAPPABLE_ENCODING;
+        protected static final int MAX_SINGLEBYTE = 0xff;
+
+        protected Encoder(Charset cs) {
+            super(cs, 2.0f, 2.0f);
+        }
+
+        public boolean canEncode(char c) {
+            return (encodeChar(c) != UNMAPPABLE);
+        }
+
+        protected int encodeChar(char ch) {
+            return mapping.encodeChar(ch);
+        }
+
+        protected int encodeSurrogate(char hi, char lo) {
+            return mapping.encodeSurrogate(hi, lo);
+        }
+
+        private CharsetMapping.Entry comp = new CharsetMapping.Entry();
+        protected int encodeComposite(char base, char cc) {
+            comp.cp = base;
+            comp.cp2 = cc;
+            return mapping.encodeComposite(comp);
+        }
+
+        protected boolean isCompositeBase(char ch) {
+            comp.cp = ch;
+            return mapping.isCompositeBase(comp);
+        }
+
+        // Unlike surrogate pair, the base character of a base+cc composite
+        // itself is a legal codepoint in 0213, if we simply return UNDERFLOW
+        // when a base candidate is the last input char in the CharBuffer, like
+        // what we do for the surrogte pair, encoding will fail if this base
+        // character is indeed the last character of the input char sequence.
+        // Keep this base candidate in "leftoverBase" so we can flush it out
+        // at the end of the encoding circle.
+        char leftoverBase = 0;
+        protected CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+            char[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+            byte[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            try {
+                while (sp < sl) {
+                    int db;
+                    char c = sa[sp];
+                    if (leftoverBase != 0) {
+                        boolean isComp = false;
+                        db = encodeComposite(leftoverBase, c);
+                        if (db == UNMAPPABLE)
+                            db = encodeChar(leftoverBase);
+                        else
+                            isComp = true;
+                        if (dl - dp < 2)
+                            return CoderResult.OVERFLOW;
+                        da[dp++] = (byte)(db >> 8);
+                        da[dp++] = (byte)db;
+                        leftoverBase = 0;
+                        if (isComp) {
+                            sp++;
+                            continue;
+                        }
+                    }
+                    if (isCompositeBase(c)) {
+                        leftoverBase = c;
+                    } else {
+                        db = encodeChar(c);
+                        if (db > MAX_SINGLEBYTE) {      // DoubleByte
+                            if (dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)(db >> 8);
+                            da[dp++] = (byte)db;
+                        } else if (db != UNMAPPABLE) {  // SingleByte
+                            if (dl <= dp)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)db;
+                        } else if (Character.isHighSurrogate(c)) {
+                            if ((sp + 1) == sl)
+                                return CoderResult.UNDERFLOW;
+                            char c2 = sa[sp + 1];
+                            if (!Character.isLowSurrogate(c2))
+                                return CoderResult.malformedForLength(1);
+                            db = encodeSurrogate(c, c2);
+                            if (db == UNMAPPABLE)
+                                return CoderResult.unmappableForLength(2);
+                            if (dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)(db >> 8);
+                            da[dp++] = (byte)db;
+                            sp++;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    sp++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        protected CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    int db;
+                    char c = src.get();
+                    if (leftoverBase != 0) {
+                        boolean isComp = false;
+                        db = encodeComposite(leftoverBase, c);
+                        if (db == UNMAPPABLE)
+                            db = encodeChar(leftoverBase);
+                        else
+                            isComp = true;
+                        if (dst.remaining() < 2)
+                            return CoderResult.OVERFLOW;
+                        dst.put((byte)(db >> 8));
+                        dst.put((byte)(db));
+                        leftoverBase = 0;
+                        if (isComp) {
+                            mark++;
+                            continue;
+                        }
+                    }
+                    if (isCompositeBase(c)) {
+                        leftoverBase = c;
+                    } else {
+                        db = encodeChar(c);
+                        if (db > MAX_SINGLEBYTE) {        // DoubleByte
+                            if (dst.remaining() < 2)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)(db >> 8));
+                            dst.put((byte)(db));
+                        } else if (db != UNMAPPABLE) {    // Single-byte
+                            if (dst.remaining() < 1)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)db);
+                        } else if (Character.isHighSurrogate(c)) {
+                            if (!src.hasRemaining())     // Surrogates
+                                return CoderResult.UNDERFLOW;
+                            char c2 = src.get();
+                            if (!Character.isLowSurrogate(c2))
+                                return CoderResult.malformedForLength(1);
+                            db = encodeSurrogate(c, c2);
+                            if (db == UNMAPPABLE)
+                                return CoderResult.unmappableForLength(2);
+                            if (dst.remaining() < 2)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)(db >> 8));
+                            dst.put((byte)(db));
+                            mark++;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    mark++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return encodeArrayLoop(src, dst);
+            else
+                return encodeBufferLoop(src, dst);
+        }
+
+        protected CoderResult implFlush(ByteBuffer dst) {
+            if (leftoverBase > 0) {
+                if (dst.remaining() < 2)
+                    return CoderResult.OVERFLOW;
+                int db = encodeChar(leftoverBase);
+                dst.put((byte)(db >> 8));
+                dst.put((byte)(db));
+                leftoverBase = 0;
+            }
+            return CoderResult.UNDERFLOW;
+        }
+
+        protected void implReset() {
+            leftoverBase = 0;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/MultiplexProviderFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+import com.sun.tracing.Probe;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory creates a "multiplex provider", which is a provider that
+ * encapsulates a list of providers and whose probes trigger a corresponding
+ * trigger in each of the encapsulated providers' probes.
+ *
+ * This is used when there are multiple tracing frameworks activated at once.
+ * A user-defined provider gets implementation for each of the activated
+ * frameworks and this multiplex framework is what is ultimately passed
+ * back to the user.  All probe triggers are multiplexed to each
+ * active framework.
+ *
+ * @since 1.7
+ */
+public class MultiplexProviderFactory extends ProviderFactory {
+
+    private Set<ProviderFactory> factories;
+
+    public MultiplexProviderFactory(Set<ProviderFactory> factories) {
+        this.factories = factories;
+    }
+
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        HashSet<Provider> providers = new HashSet<Provider>();
+        for (ProviderFactory factory : factories) {
+            providers.add(factory.createProvider(cls));
+        }
+        MultiplexProvider provider = new MultiplexProvider(cls, providers);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class MultiplexProvider extends ProviderSkeleton {
+
+    private Set<Provider> providers;
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new MultiplexProbe(m, providers);
+    }
+
+    MultiplexProvider(Class<? extends Provider> type, Set<Provider> providers) {
+        super(type);
+        this.providers = providers;
+    }
+
+    public void dispose() {
+        for (Provider p : providers) {
+            p.dispose();
+        }
+        super.dispose();
+    }
+}
+
+class MultiplexProbe extends ProbeSkeleton {
+
+    private Set<Probe> probes;
+
+    MultiplexProbe(Method m, Set<Provider> providers) {
+        super(m.getParameterTypes());
+        probes = new HashSet<Probe>();
+        for (Provider p : providers) {
+            Probe probe = p.getProbe(m);
+            if (probe != null) {
+                probes.add(probe);
+            }
+        }
+    }
+
+    public boolean isEnabled() {
+        for (Probe p : probes) {
+            if (p.isEnabled()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        for (Probe p : probes) {
+            try {
+                // try the fast path
+                ProbeSkeleton ps = (ProbeSkeleton)p;
+                ps.uncheckedTrigger(args);
+            } catch (ClassCastException e) {
+                // Probe.trigger takes an "Object ..." varargs parameter,
+                // so we can't call it directly.
+                try {
+                    Method m = Probe.class.getMethod(
+                        "trigger", Class.forName("[java.lang.Object"));
+                    m.invoke(p, args);
+                } catch (Exception e1) {
+                    assert false; // This shouldn't happen
+                }
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/NullProviderFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory will create tracing instances that do nothing.
+ * It is used when no tracing is desired, but Provider instances still
+ * must be generated so that tracing calls in the application continue to
+ * run.
+ *
+ * @since 1.7
+ */
+public class NullProviderFactory extends ProviderFactory {
+
+    /**
+     * Creates and returns a Null provider.
+     *
+     * See comments at {@code ProviderSkeleton.createProvider()} for more
+     * details.
+     *
+     * @return a provider whose probe trigger are no-ops.
+     */
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        NullProvider provider = new NullProvider(cls);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class NullProvider extends ProviderSkeleton {
+
+    NullProvider(Class<? extends Provider> type) {
+        super(type);
+    }
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new NullProbe(m.getParameterTypes());
+    }
+}
+
+class NullProbe extends ProbeSkeleton {
+
+    public NullProbe(Class<?>[] parameters) {
+        super(parameters);
+    }
+
+    public boolean isEnabled() {
+        return false;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/PrintStreamProviderFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+import com.sun.tracing.ProviderName;
+import com.sun.tracing.Probe;
+import com.sun.tracing.ProbeName;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory will create tracing instances that print to a PrintStream
+ * when activated.
+ *
+ * @since 1.7
+ */
+public class PrintStreamProviderFactory extends ProviderFactory {
+
+    private PrintStream stream;
+
+    public PrintStreamProviderFactory(PrintStream stream) {
+        this.stream = stream;
+    }
+
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        PrintStreamProvider provider = new PrintStreamProvider(cls, stream);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class PrintStreamProvider extends ProviderSkeleton {
+
+    private PrintStream stream;
+    private String providerName;
+
+    protected ProbeSkeleton createProbe(Method m) {
+        String probeName = getAnnotationString(m, ProbeName.class, m.getName());
+        return new PrintStreamProbe(this, probeName, m.getParameterTypes());
+    }
+
+    PrintStreamProvider(Class<? extends Provider> type, PrintStream stream) {
+        super(type);
+        this.stream = stream;
+        this.providerName = getProviderName();
+    }
+
+    PrintStream getStream() {
+        return stream;
+    }
+
+    String getName() {
+        return providerName;
+    }
+}
+
+class PrintStreamProbe extends ProbeSkeleton {
+
+    private PrintStreamProvider provider;
+    private String name;
+
+    PrintStreamProbe(PrintStreamProvider p, String name, Class<?>[] params) {
+        super(params);
+        this.provider = p;
+        this.name = name;
+    }
+
+    public boolean isEnabled() {
+        return true;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        StringBuffer sb = new StringBuffer();
+        sb.append(provider.getName());
+        sb.append(".");
+        sb.append(name);
+        sb.append("(");
+        boolean first = true;
+        for (Object o : args) {
+            if (first == false) {
+                sb.append(",");
+            } else {
+                first = false;
+            }
+            sb.append(o.toString());
+        }
+        sb.append(")");
+        provider.getStream().println(sb.toString());
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/ProbeSkeleton.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+import com.sun.tracing.Probe;
+
+/**
+ * Provides common code for implementation of {@code Probe} classes.
+ *
+ * @since 1.7
+ */
+public abstract class ProbeSkeleton implements Probe {
+
+    protected Class<?>[] parameters;
+
+    protected ProbeSkeleton(Class<?>[] parameters) {
+        this.parameters = parameters;
+    }
+
+    public abstract boolean isEnabled();  // framework-dependent
+
+    /**
+     * Triggers the probe with verified arguments.
+     *
+     * The caller of this method must have already determined that the
+     * arity and types of the arguments match what the probe was
+     * declared with.
+     */
+    public abstract void uncheckedTrigger(Object[] args); // framework-dependent
+
+    private static boolean isAssignable(Object o, Class<?> formal) {
+        if (o != null) {
+            if ( !formal.isInstance(o) ) {
+                if ( formal.isPrimitive() ) { // o might be a boxed primitive
+                    try {
+                        // Yuck.  There must be a better way of doing this
+                        Field f = o.getClass().getField("TYPE");
+                        return formal.isAssignableFrom((Class<?>)f.get(null));
+                    } catch (Exception e) {
+                        /* fall-through. */
+                    }
+                }
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Performs a type-check of the parameters before triggering the probe.
+     */
+    public void trigger(Object ... args) {
+        if (args.length != parameters.length) {
+            throw new IllegalArgumentException("Wrong number of arguments");
+        } else {
+            for (int i = 0; i < parameters.length; ++i) {
+                if ( !isAssignable(args[i], parameters[i]) ) {
+                    throw new IllegalArgumentException(
+                            "Wrong type of argument at position " + i);
+                }
+            }
+            uncheckedTrigger(args);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/ProviderSkeleton.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+
+import com.sun.tracing.Provider;
+import com.sun.tracing.Probe;
+import com.sun.tracing.ProviderName;
+
+/**
+ * Provides a common code for implementation of {@code Provider} classes.
+ *
+ * Each tracing subsystem needs to provide three classes, a factory
+ * (derived from {@code ProviderFactory}, a provider (a subclass of
+ * {@code Provider}, and a probe type (subclass of {@code ProbeSkeleton}).
+ *
+ * The factory object takes a user-defined interface and provides an
+ * implementation of it whose method calls will trigger probes in the
+ * tracing framework.
+ *
+ * The framework's provider class, and its instances, are not seen by the
+ * user at all -- they usually sit in the background and receive and dispatch
+ * the calls to the user's provider interface.  The {@code ProviderSkeleton}
+ * class provides almost all of the implementation needed by a framework
+ * provider.  Framework providers must only provide a constructor and
+ * disposal method, and implement the {@code createProbe} method to create
+ * an appropriate {@code ProbeSkeleton} subclass.
+ *
+ * The framework's probe class provides the implementation of the two
+ * probe methods, {@code isEnabled()} and {@code uncheckedTrigger()}.  Both are
+ * framework-dependent implementations.
+ *
+ * @since 1.7
+ */
+
+public abstract class ProviderSkeleton implements InvocationHandler, Provider {
+
+    protected boolean active; // set to false after dispose() is called
+    protected Class<? extends Provider> providerType; // user's interface
+    protected HashMap<Method, ProbeSkeleton> probes; // methods to probes
+
+
+    /**
+     * Creates a framework-specific probe subtype.
+     *
+     * This method is implemented by the framework's provider and returns
+     * framework-specific probes for a method.
+     *
+     * @param method A method in the user's interface
+     * @return a subclass of ProbeSkeleton for the particular framework.
+     */
+    protected abstract ProbeSkeleton createProbe(Method method);
+
+    /**
+     * Initializes the provider.
+     *
+     * @param type the user's interface
+     */
+    protected ProviderSkeleton(Class<? extends Provider> type) {
+        this.active = false; // in case of some error during initialization
+        this.providerType = type;
+        this.probes = new HashMap<Method,ProbeSkeleton>();
+    }
+
+    /**
+     * Post-constructor initialization routine.
+     *
+     * Subclass instances must be initialized before they can create probes.
+     * It is up to the factory implementations to call this after construction.
+     */
+    public void init() {
+        for (Method m : providerType.getDeclaredMethods()) {
+            if ( m.getReturnType() != Void.TYPE ) {
+                throw new IllegalArgumentException(
+                   "Return value of method is not void");
+            } else {
+                probes.put(m, createProbe(m));
+            }
+        }
+        this.active = true;
+    }
+
+    /**
+     * Magic routine which creates an implementation of the user's interface.
+     *
+     * This method creates the instance of the user's interface which is
+     * passed back to the user.  Every call upon that interface will be
+     * redirected to the {@code invoke()} method of this class (until
+     * overridden by the VM).
+     *
+     * @return an implementation of the user's interface
+     */
+    @SuppressWarnings("unchecked")
+    public <T extends Provider> T newProxyInstance() {
+        return (T)Proxy.newProxyInstance(providerType.getClassLoader(),
+               new Class<?>[] { providerType }, this);
+    }
+
+    /**
+     * Triggers a framework probe when a user interface method is called.
+     *
+     * This method dispatches a user interface method call to the appropriate
+     * probe associated with this framework.
+     *
+     * If the invoked method is not a user-defined member of the interface,
+     * then it is a member of {@code Provider} or {@code Object} and we
+     * invoke the method directly.
+     *
+     * @param proxy the instance whose method was invoked
+     * @param method the method that was called
+     * @param args the arguments passed in the call.
+     * @return always null, if the method is a user-defined probe
+     */
+    public Object invoke(Object proxy, Method method, Object[] args) {
+        if (method.getDeclaringClass() != providerType) {
+            try {
+                return method.invoke(this, args);
+            } catch (IllegalAccessException e) {
+                assert false;
+            } catch (InvocationTargetException e) {
+                assert false;
+            }
+        } else if (active) {
+            ProbeSkeleton p = probes.get(method);
+            if (p != null) {
+                // Skips argument check -- already done by javac
+                p.uncheckedTrigger(args);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Direct accessor for {@code Probe} objects.
+     *
+     * @param m the method corresponding to a probe
+     * @return the method associated probe object, or null
+     */
+    public Probe getProbe(Method m) {
+        return active ? probes.get(m) : null;
+    }
+
+    /**
+     * Default provider disposal method.
+     *
+     * This is overridden in subclasses as needed.
+     */
+    public void dispose() {
+        active = false;
+        probes.clear();
+    }
+
+    /**
+     * Gets the user-specified provider name for the user's interface.
+     *
+     * If the user's interface has a {@ProviderName} annotation, that value
+     * is used.  Otherwise we use the simple name of the user interface's class.
+     * @return the provider name
+     */
+    protected String getProviderName() {
+        return getAnnotationString(
+                providerType, ProviderName.class, providerType.getSimpleName());
+    }
+
+    /**
+     * Utility method for getting a string value from an annotation.
+     *
+     * Used for getting a string value from an annotation with a 'value' method.
+     *
+     * @param element the element that was annotated, either a class or method
+     * @param annotation the class of the annotation we're interested in
+     * @param defaultValue the value to return if the annotation doesn't
+     * exist, doesn't have a "value", or the value is empty.
+     */
+    protected static String getAnnotationString(
+            AnnotatedElement element, Class<? extends Annotation> annotation,
+            String defaultValue) {
+        String ret = (String)getAnnotationValue(
+                element, annotation, "value", defaultValue);
+        return ret.isEmpty() ? defaultValue : ret;
+    }
+
+    /**
+     * Utility method for calling an arbitrary method in an annotation.
+     *
+     * @param element the element that was annotated, either a class or method
+     * @param annotation the class of the annotation we're interested in
+     * @param methodName the name of the method in the annotation we wish
+     * to call.
+     * @param defaultValue the value to return if the annotation doesn't
+     * exist, or we couldn't invoke the method for some reason.
+     * @return the result of calling the annotation method, or the default.
+     */
+    protected static Object getAnnotationValue(
+            AnnotatedElement element, Class<? extends Annotation> annotation,
+            String methodName, Object defaultValue) {
+        Object ret = defaultValue;
+        try {
+            Method m = annotation.getMethod(methodName);
+            Annotation a = element.getAnnotation(annotation);
+            ret = m.invoke(a);
+        } catch (NoSuchMethodException e) {
+            assert false;
+        } catch (IllegalAccessException e) {
+            assert false;
+        } catch (InvocationTargetException e) {
+            assert false;
+        } catch (NullPointerException e) {
+            assert false;
+        }
+        return ret;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/Activation.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.ref.WeakReference;
+import java.lang.ref.ReferenceQueue;
+import java.security.Permission;
+import java.util.HashSet;
+
+class Activation {
+    private SystemResource resource;
+    private int referenceCount;
+
+    Activation(String moduleName, DTraceProvider[] providers) {
+        SecurityManager security = System.getSecurityManager();
+        if (security != null) {
+            Permission perm =
+                new RuntimePermission("com.sun.tracing.dtrace.createProvider");
+            security.checkPermission(perm);
+        }
+        referenceCount = providers.length;
+        for (DTraceProvider p : providers) {
+            p.setActivation(this);
+        }
+        resource = new SystemResource(
+            this, JVM.activate(moduleName, providers));
+    }
+
+    void disposeProvider(DTraceProvider p) {
+        if (--referenceCount == 0) {
+            resource.dispose();
+        }
+    }
+}
+
+/**
+ * The native resource part of an Activation.
+ *
+ * This holds the native handle.
+ *
+ * If the user loses a reference to a set of Providers without disposing them,
+ * and GC determines the Activation is unreachable, then the next
+ * activation or flush call will automatically dispose the unreachable objects
+ *
+ * The SystemResource instances are creating during activation, and
+ * unattached during disposal.  When created, they always have a
+ * strong reference to them via the {@code resources} static member.  Explicit
+ * {@code dispose} calls will unregister the native resource and remove
+ * references to the SystemResource object.  Absent an explicit dispose,
+ * when their associated Activation object becomes garbage, the SystemResource
+ * object will be enqueued on the reference queue and disposed at the
+ * next call to {@code flush}.
+ */
+class SystemResource extends WeakReference<Activation> {
+
+    private long handle;
+
+    private static ReferenceQueue<Activation> referenceQueue =
+        referenceQueue = new ReferenceQueue<Activation>();
+    static HashSet<SystemResource> resources = new HashSet<SystemResource>();
+
+    SystemResource(Activation activation, long handle) {
+        super(activation, referenceQueue);
+        this.handle = handle;
+        flush();
+        resources.add(this);
+    }
+
+    void dispose() {
+        JVM.dispose(handle);
+        resources.remove(this);
+        handle = 0;
+    }
+
+    static void flush() {
+        SystemResource resource = null;
+        while ((resource = (SystemResource)referenceQueue.poll()) != null) {
+            if (resource.handle != 0) {
+                resource.dispose();
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProbe.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+import sun.tracing.ProbeSkeleton;
+
+class DTraceProbe extends ProbeSkeleton {
+    private Object proxy;
+    private Method declared_method;
+    private Method implementing_method;
+
+    DTraceProbe(Object proxy, Method m) {
+        super(m.getParameterTypes());
+        this.proxy = proxy;
+        this.declared_method = m;
+        try {
+            // The JVM will override the proxy method's implementation with
+            // a version that will invoke the probe.
+            this.implementing_method =  proxy.getClass().getMethod(
+                m.getName(), m.getParameterTypes());
+        } catch (NoSuchMethodException e) {
+            throw new RuntimeException("Internal error, wrong proxy class");
+        }
+    }
+
+    public boolean isEnabled() {
+        return JVM.isEnabled(implementing_method);
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        try {
+            implementing_method.invoke(proxy, args);
+        } catch (IllegalAccessException e) {
+            assert false;
+        } catch (InvocationTargetException e) {
+            assert false;
+        }
+    }
+
+    String getProbeName() {
+        return DTraceProvider.getProbeName(declared_method);
+    }
+
+    String getFunctionName() {
+        return DTraceProvider.getFunctionName(declared_method);
+    }
+
+    Method getMethod() {
+        return implementing_method;
+    }
+
+    Class<?>[] getParameterTypes() {
+        return this.parameters;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProvider.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+
+import sun.tracing.ProviderSkeleton;
+import sun.tracing.ProbeSkeleton;
+import com.sun.tracing.Provider;
+import com.sun.tracing.ProviderName;
+import com.sun.tracing.ProbeName;
+import com.sun.tracing.dtrace.Attributes;
+import com.sun.tracing.dtrace.ModuleName;
+import com.sun.tracing.dtrace.FunctionName;
+import com.sun.tracing.dtrace.StabilityLevel;
+import com.sun.tracing.dtrace.DependencyClass;
+
+import sun.misc.ProxyGenerator;
+
+class DTraceProvider extends ProviderSkeleton {
+
+    private Activation activation;
+    private Object proxy;
+
+    // For proxy generation
+    private final static Class[] constructorParams = { InvocationHandler.class };
+    private final String proxyClassNamePrefix = "$DTraceTracingProxy";
+
+    static final String DEFAULT_MODULE = "java_tracing";
+    static final String DEFAULT_FUNCTION = "unspecified";
+
+    private static long nextUniqueNumber = 0;
+    private static synchronized long getUniqueNumber() {
+        return nextUniqueNumber++;
+    }
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new DTraceProbe(proxy, m);
+    }
+
+    DTraceProvider(Class<? extends Provider> type) {
+        super(type);
+    }
+
+    void setProxy(Object p) {
+        proxy = p;
+    }
+
+    void setActivation(Activation a) {
+        this.activation = a;
+    }
+
+    public void dispose() {
+        if (activation != null) {
+            activation.disposeProvider(this);
+            activation = null;
+        }
+        super.dispose();
+    }
+
+    /**
+     * Magic routine which creates an implementation of the user's interface.
+     *
+     * This method uses the ProxyGenerator directly to bypass the
+     * java.lang.reflect.proxy cache so that we get a unique class each
+     * time it's called and can't accidently reuse a $Proxy class.
+     *
+     * @return an implementation of the user's interface
+     */
+    @SuppressWarnings("unchecked")
+    public <T extends Provider> T newProxyInstance() {
+        /*
+         * Choose a name for the proxy class to generate.
+         */
+        long num = getUniqueNumber();
+
+        String proxyPkg = "";
+        if (!Modifier.isPublic(providerType.getModifiers())) {
+            String name = providerType.getName();
+            int n = name.lastIndexOf('.');
+            proxyPkg = ((n == -1) ? "" : name.substring(0, n + 1));
+        }
+
+        String proxyName = proxyPkg + proxyClassNamePrefix + num;
+
+        /*
+         * Generate the specified proxy class.
+         */
+        Class<?> proxyClass = null;
+        byte[] proxyClassFile = ProxyGenerator.generateProxyClass(
+                proxyName, new Class<?>[] { providerType });
+        try {
+            proxyClass = JVM.defineClass(
+                providerType.getClassLoader(), proxyName,
+                proxyClassFile, 0, proxyClassFile.length);
+        } catch (ClassFormatError e) {
+            /*
+             * A ClassFormatError here means that (barring bugs in the
+             * proxy class generation code) there was some other
+             * invalid aspect of the arguments supplied to the proxy
+             * class creation (such as virtual machine limitations
+             * exceeded).
+             */
+            throw new IllegalArgumentException(e.toString());
+        }
+
+        /*
+         * Invoke its constructor with the designated invocation handler.
+         */
+        try {
+            Constructor cons = proxyClass.getConstructor(constructorParams);
+            return (T)cons.newInstance(new Object[] { this });
+        } catch (NoSuchMethodException e) {
+            throw new InternalError(e.toString());
+        } catch (IllegalAccessException e) {
+            throw new InternalError(e.toString());
+        } catch (InstantiationException e) {
+            throw new InternalError(e.toString());
+        } catch (InvocationTargetException e) {
+            throw new InternalError(e.toString());
+        }
+    }
+
+    // In the normal case, the proxy object's method implementations will call
+    // this method (it usually calls the ProviderSkeleton's version).  That
+    // method uses the passed 'method' object to lookup the associated
+    // 'ProbeSkeleton' and calls uncheckedTrigger() on that probe to cause the
+    // probe to fire.  DTrace probes are different in that the proxy class's
+    // methods are immediately overridden with native code to fire the probe
+    // directly.  So this method should never get invoked.  We also wire up the
+    // DTraceProbe.uncheckedTrigger() method to call the proxy method instead
+    // of doing the work itself.
+    public Object invoke(Object proxy, Method method, Object[] args) {
+        if (method.getDeclaringClass() != providerType) {
+            try {
+                return method.invoke(this, args);
+            } catch (IllegalAccessException e) {
+                assert false;
+            } catch (InvocationTargetException e) {
+                assert false;
+            }
+        } else if (active) {
+            assert false : "This method should have been overridden by the JVM";
+        }
+        return null;
+    }
+
+    public String getProviderName() {
+        return super.getProviderName();
+    }
+
+    String getModuleName() {
+        return getAnnotationString(
+            providerType, ModuleName.class, DEFAULT_MODULE);
+    }
+
+    static String getProbeName(Method method) {
+        return getAnnotationString(
+            method, ProbeName.class, method.getName());
+    }
+
+    static String getFunctionName(Method method) {
+        return getAnnotationString(
+            method, FunctionName.class, DEFAULT_FUNCTION);
+    }
+
+    DTraceProbe[] getProbes() {
+        return probes.values().toArray(new DTraceProbe[0]);
+    }
+
+    StabilityLevel getNameStabilityFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return StabilityLevel.PRIVATE;
+        } else {
+            return attrs.name();
+        }
+    }
+
+    StabilityLevel getDataStabilityFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return StabilityLevel.PRIVATE;
+        } else {
+            return attrs.data();
+        }
+    }
+
+    DependencyClass getDependencyClassFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return DependencyClass.UNKNOWN;
+        } else {
+            return attrs.dependency();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProviderFactory.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.logging.Logger;
+import java.security.Permission;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+
+/**
+ * Factory class to create JSDT Providers.
+ *
+ * This class contains methods to create an instance of a Provider
+ * interface which can be used to place tracepoints in an application.
+ * Method calls upon that instance trigger DTrace probes that
+ * are visible from DTrace scripts.   Such calls have no other
+ * side effects in the application.
+ * <p>
+ * The DTrace script mechanisms for listing and matching probes will not see
+ * nor match any probes until the provider they reside in is created by a
+ * call to {@code createProvider()} (or {@code createProviders()}).
+ * <p>
+ * Providers that are created should be disposed of when they are no longer
+ * needed to free up system resources, at which point the associated
+ * DTrace probes will no longer be available to DTrace.  One disposes a
+ * provider by calling
+ * {@link com.sun.tracing.Provider#dispose Provider.dispose()} on a
+ * created provider instance.
+ *
+ * @since 1.7
+ */
+public final class DTraceProviderFactory extends ProviderFactory {
+    /**
+     * Creates an instance of a provider which can then be used to trigger
+     * DTrace probes.
+     *
+     * The provider specification, provided as an argument, should only
+     * contain methods which have a 'void' return type and String or
+     * integer-based typed arguments (long, int, short, char, byte, or boolean).
+     *
+     * @param cls A user-defined interface which extends {@code Provider}.
+     * @return An instance of the interface which is used to trigger
+     * the DTrace probes.
+     * @throws java.lang.SecurityException if a security manager has been
+     * installed and it denies
+     * RuntimePermission("com.sun.dtrace.jsdt.createProvider")
+     * @throws java.lang.IllegalArgumentException if the interface contains
+     * methods that do not return null, or that contain arguments that are
+     * not String or integer types.
+     */
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        DTraceProvider jsdt = new DTraceProvider(cls);
+        T proxy = jsdt.newProxyInstance();
+        jsdt.setProxy(proxy);
+        try {
+            jsdt.init();
+            new Activation(jsdt.getModuleName(), new DTraceProvider[] { jsdt });
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+            jsdt.dispose();
+        }
+        return proxy;
+    }
+
+    /**
+     * Creates multiple providers at once.
+     *
+     * This method batches together a number of provider instantiations.
+     * It works similarly
+     * to {@code createProvider}, but operates on a set of providers instead
+     * of one at a time.  This method is in place since some DTrace
+     * implementations limit the number of times that providers can be
+     * created.  When numerous providers can be created at once with this
+     * method, it will count only as a single creation point to DTrace, thus
+     * it uses less system resources.
+     * <p>
+     * All of the probes in the providers will be visible to DTrace after
+     * this call and all will remain visible until all of the providers
+     * are disposed.
+     * <p>
+     * The {@code moduleName} parameter will override any {@code ModuleName}
+     * annotation associated with any of the providers in the set.
+     * All of the probes created by this call will share the same
+     * module name.
+     * <p>
+     * @param providers a set of provider specification interfaces
+     * @param moduleName the module name to associate with all probes
+     * @return A map which maps the provider interface specification to an
+     * implementing instance.
+     * @throws java.lang.SecurityException if a security manager has been
+     * installed and it denies
+     * RuntimePermission("com.sun.dtrace.jsdt.createProvider")
+     * @throws java.lang.IllegalArgumentException if any of the interface
+     * contains methods that do not return null, or that contain arguments
+     * that are not String or integer types.
+     */
+    public Map<Class<? extends Provider>,Provider> createProviders(
+            Set<Class<? extends Provider>> providers, String moduleName) {
+        HashMap<Class<? extends Provider>,Provider> map =
+            new HashMap<Class<? extends Provider>,Provider>();
+        HashSet<DTraceProvider> jsdts = new HashSet<DTraceProvider>();
+        for (Class<? extends Provider> cls : providers) {
+            DTraceProvider jsdt = new DTraceProvider(cls);
+            jsdts.add(jsdt);
+            map.put(cls, jsdt.newProxyInstance());
+        }
+        new Activation(moduleName, jsdts.toArray(new DTraceProvider[0]));
+        return map;
+    }
+
+    /**
+     * Used to check the status of DTrace support in the underlying JVM and
+     * operating system.
+     *
+     * This is an informative method only - the Java-level effects of
+     * creating providers and triggering probes will not change whether or
+     * not DTrace is supported by the underlying systems.
+     *
+     * @return true if DTrace is supported
+     */
+    public static boolean isSupported() {
+        try {
+            SecurityManager security = System.getSecurityManager();
+            if (security != null) {
+                Permission perm = new RuntimePermission(
+                        "com.sun.tracing.dtrace.createProvider");
+                security.checkPermission(perm);
+            }
+            return JVM.isSupported();
+        } catch (SecurityException e) {
+            return false;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/JVM.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+
+/**
+ * Container class for JVM interface native methods
+ *
+ * @since 1.7
+ */
+class JVM {
+
+    static {
+      java.security.AccessController.doPrivileged(
+              new sun.security.action.LoadLibraryAction("jsdt"));
+    }
+
+    static long activate(String moduleName, DTraceProvider[] providers) {
+        return activate0(moduleName, providers);
+    }
+
+    static void dispose(long handle) {
+        dispose0(handle);
+    }
+
+    static boolean isEnabled(Method m) {
+        return isEnabled0(m);
+    }
+
+    static boolean isSupported() {
+        return isSupported0();
+    }
+
+    static Class<?> defineClass(
+            ClassLoader loader, String name, byte[] b, int off, int len) {
+        return defineClass0(loader, name, b, off, len);
+    }
+
+    private static native long activate0(
+        String moduleName, DTraceProvider[] providers);
+    private static native void dispose0(long activation_handle);
+    private static native boolean isEnabled0(Method m);
+    private static native boolean isSupported0();
+    private static native Class<?> defineClass0(
+        ClassLoader loader, String name, byte[] b, int off, int len);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/package-info.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package contains internal common code for implementing tracing
+ * frameworks, and defined a number of existing frameworks.
+ * <p>
+ * There are four tracing frameworks currently defined.  The "Null" and
+ * "Multiplex" frameworks are used internally as part of the implementation.
+ * The "DTrace" framework is the prime consumer framework at the moment,
+ * while the "PrintStream" framework is a functional, but hidden, framework
+ * which can be used to track probe firings.  All but the "DTrace" framework
+ * are defined in this package.  The "DTrace" framework is implemented in the
+ * {@code sun.tracing.dtrace} package.
+ * <p>
+ * This package also contains the {@code ProviderSkeleton} class, which
+ * holds most of the common code needed for implementing frameworks.
+ * <p>
+ * The "Null" framework is used when there are no other active frameworks.
+ * It accomplishes absolutely nothing and is merely a placeholder so that
+ * the application can call the tracing routines without error.
+ * <p>
+ * The "Multiplex" framework is used when there are multiple active frameworks.
+ * It is initialized with the framework factories and create providers and
+ * probes that dispatch to each active framework in turn.
+ * <p>
+ * The "PrintStream" framework is currently a debugging framework which
+ * dispatches trace calls to a user-defined PrintStream class, defined by
+ * a property.  It may some day be opened up to general use.
+ * <p>
+ * See the {@code sun.tracing.dtrace} and {@code com.sun.tracing.dtrace}
+ * packages for information on the "DTrace" framework.
+ */
+
+package sun.tracing;
--- a/src/share/javavm/export/jvm.h	Wed Apr 30 17:34:41 2008 -0700
+++ b/src/share/javavm/export/jvm.h	Tue May 13 11:33:06 2008 -0700
@@ -591,6 +591,80 @@
 JNIEXPORT jboolean JNICALL
 JVM_SupportsCX8(void);
 
+/*
+ * com.sun.dtrace.jsdt support
+ */
+
+#define JVM_TRACING_DTRACE_VERSION 1
+
+/*
+ * Structure to pass one probe description to JVM
+ */
+typedef struct {
+    jmethodID method;
+    jstring   function;
+    jstring   name;
+    void*            reserved[4];     // for future use
+} JVM_DTraceProbe;
+
+/**
+ * Encapsulates the stability ratings for a DTrace provider field
+ */
+typedef struct {
+    jint nameStability;
+    jint dataStability;
+    jint dependencyClass;
+} JVM_DTraceInterfaceAttributes;
+
+/*
+ * Structure to pass one provider description to JVM
+ */
+typedef struct {
+    jstring                       name;
+    JVM_DTraceProbe*              probes;
+    jint                          probe_count;
+    JVM_DTraceInterfaceAttributes providerAttributes;
+    JVM_DTraceInterfaceAttributes moduleAttributes;
+    JVM_DTraceInterfaceAttributes functionAttributes;
+    JVM_DTraceInterfaceAttributes nameAttributes;
+    JVM_DTraceInterfaceAttributes argsAttributes;
+    void*                         reserved[4]; // for future use
+} JVM_DTraceProvider;
+
+/*
+ * Get the version number the JVM was built with
+ */
+JNIEXPORT jint JNICALL
+JVM_DTraceGetVersion(JNIEnv* env);
+
+/*
+ * Register new probe with given signature, return global handle
+ *
+ * The version passed in is the version that the library code was
+ * built with.
+ */
+JNIEXPORT jlong JNICALL
+JVM_DTraceActivate(JNIEnv* env, jint version, jstring module_name,
+  jint providers_count, JVM_DTraceProvider* providers);
+
+/*
+ * Check JSDT probe
+ */
+JNIEXPORT jboolean JNICALL
+JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method);
+
+/*
+ * Destroy custom DOF
+ */
+JNIEXPORT void JNICALL
+JVM_DTraceDispose(JNIEnv* env, jlong activation_handle);
+
+/*
+ * Check to see if DTrace is supported by OS
+ */
+JNIEXPORT jboolean JNICALL
+JVM_DTraceIsSupported(JNIEnv* env);
+
 /*************************************************************************
  PART 2: Support for the Verifier and Class File Format Checker
  ************************************************************************/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/native/sun/tracing/dtrace/JVM.c	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,304 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <stdlib.h>
+
+#include "jvm.h"
+#include "jni.h"
+#include "jni_util.h"
+
+#include "jvm_symbols.h"
+#include "sun_tracing_dtrace_JVM.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static JvmSymbols* jvm_symbols = NULL;
+
+static void initialize() {
+    static int initialized = 0;
+    if (initialized == 0) {
+        jvm_symbols = lookupJvmSymbols();
+        initialized = 1;
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    isSupported0
+ * Signature: ()I
+ */
+JNIEXPORT jboolean JNICALL Java_sun_tracing_dtrace_JVM_isSupported0(
+        JNIEnv* env, jclass cls) {
+    initialize();
+    if (jvm_symbols != NULL) {
+        return jvm_symbols->IsSupported(env) ? JNI_TRUE : JNI_FALSE;
+    } else {
+        return JNI_FALSE;
+    }
+}
+
+// Macros that cause an immediate return if we detect an exception
+#define CHECK if ((*env)->ExceptionOccurred(env)) { return; }
+#define CHECK_(x) if ((*env)->ExceptionOccurred(env)) { return x; }
+
+static void readProbeData (
+        JNIEnv* env, jobject probe, JVM_DTraceProbe* jvm_probe) {
+    jclass clazz;
+    jmethodID mid;
+    jobject method;
+
+    if (jvm_probe == NULL) {
+        return; // just in case
+    }
+
+    clazz = (*env)->GetObjectClass(env, probe); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getFunctionName", "()Ljava/lang/String;"); CHECK
+    jvm_probe->function = (jstring)(*env)->CallObjectMethod(
+        env, probe, mid); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProbeName", "()Ljava/lang/String;"); CHECK
+    jvm_probe->name = (jstring)(*env)->CallObjectMethod(env, probe, mid); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getMethod", "()Ljava/lang/reflect/Method;"); CHECK
+    method = (*env)->CallObjectMethod(env, probe, mid); CHECK
+    jvm_probe->method = (*env)->FromReflectedMethod(env, method); CHECK
+}
+
+static void readFieldInterfaceAttributes(
+        char* annotationName, JNIEnv* env, jobject provider,
+        JVM_DTraceInterfaceAttributes* attrs) {
+    jobject result;
+    jobject result_clazz;
+    jclass provider_clazz;
+    jclass annotation_clazz;
+    jmethodID get;
+    jmethodID enc;
+
+    provider_clazz = (*env)->GetObjectClass(env, provider); CHECK
+    annotation_clazz = (*env)->FindClass(env, annotationName); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getNameStabilityFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/StabilityLevel;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->nameStability = (*env)->CallIntMethod(env, result, enc); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getDataStabilityFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/StabilityLevel;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->dataStability = (*env)->CallIntMethod(env, result, enc); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getDependencyClassFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/DependencyClass;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->dependencyClass = (*env)->CallIntMethod(env, result, enc); CHECK
+}
+
+static void readInterfaceAttributes(
+        JNIEnv* env, jobject provider, JVM_DTraceProvider* jvm_provider) {
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ProviderAttributes",
+        env, provider, &(jvm_provider->providerAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ModuleAttributes",
+        env, provider, &(jvm_provider->moduleAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/FunctionAttributes",
+        env, provider, &(jvm_provider->functionAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/NameAttributes",
+        env, provider, &(jvm_provider->nameAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ArgsAttributes",
+        env, provider, &(jvm_provider->argsAttributes));
+}
+
+static void readProviderData(
+        JNIEnv* env, jobject provider, JVM_DTraceProvider* jvm_provider) {
+    jmethodID mid;
+    jobjectArray probes;
+    jsize i;
+    jclass clazz = (*env)->GetObjectClass(env, provider); CHECK
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProbes", "()[Lsun/tracing/dtrace/DTraceProbe;"); CHECK
+    probes = (jobjectArray)(*env)->CallObjectMethod(
+        env, provider, mid); CHECK
+
+    // Fill JVM structure, describing provider
+    jvm_provider->probe_count = (*env)->GetArrayLength(env, probes); CHECK
+    jvm_provider->probes = (JVM_DTraceProbe*)calloc(
+        jvm_provider->probe_count, sizeof(*jvm_provider->probes));
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProviderName", "()Ljava/lang/String;"); CHECK
+    jvm_provider->name = (jstring)(*env)->CallObjectMethod(
+        env, provider, mid); CHECK
+
+    readInterfaceAttributes(env, provider, jvm_provider); CHECK
+
+    for (i = 0; i < jvm_provider->probe_count; ++i) {
+        jobject probe = (*env)->GetObjectArrayElement(env, probes, i); CHECK
+        readProbeData(env, probe, &jvm_provider->probes[i]); CHECK
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    activate0
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_sun_tracing_dtrace_JVM_activate0(
+        JNIEnv* env, jclass cls, jstring moduleName, jobjectArray providers) {
+    jlong handle = 0;
+    jsize num_providers;
+    jsize i;
+    JVM_DTraceProvider* jvm_providers;
+
+    initialize();
+
+    if (jvm_symbols == NULL) {
+      return 0;
+    }
+
+    num_providers = (*env)->GetArrayLength(env, providers); CHECK_(0L)
+
+    jvm_providers = (JVM_DTraceProvider*)calloc(
+        num_providers, sizeof(*jvm_providers));
+
+    for (i = 0; i < num_providers; ++i) {
+        JVM_DTraceProvider* p = &(jvm_providers[i]);
+        jobject provider = (*env)->GetObjectArrayElement(
+            env, providers, i);
+        readProviderData(env, provider, p);
+    }
+
+    handle = jvm_symbols->Activate(
+        env, JVM_TRACING_DTRACE_VERSION, moduleName,
+        num_providers, jvm_providers);
+
+    for (i = 0; i < num_providers; ++i) {
+        JVM_DTraceProvider* p = &(jvm_providers[i]);
+        free(p->probes);
+    }
+    free(jvm_providers);
+
+    return handle;
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    dispose0
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_sun_tracing_dtrace_JVM_dispose0(
+        JNIEnv* env, jclass cls, jlong handle) {
+    if (jvm_symbols != NULL && handle != 0) {
+        jvm_symbols->Dispose(env, handle);
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    isEnabled0
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)Z
+ */
+JNIEXPORT jboolean JNICALL Java_sun_tracing_dtrace_JVM_isEnabled0(
+        JNIEnv* env, jclass cls, jobject method) {
+    jmethodID mid;
+    if (jvm_symbols != NULL && method != NULL) {
+        mid = (*env)->FromReflectedMethod(env, method);
+        return jvm_symbols->IsProbeEnabled(env, mid);
+    }
+    return JNI_FALSE;
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    defineClass0
+ * Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
+ *
+ * The implementation of this native static method is a copy of that of
+ * the native instance method Java_java_lang_ClassLoader_defineClass0()
+ * with the implicit "this" parameter becoming the "loader" parameter.
+ *
+ * This code was cloned and modified from java_lang_reflect_Proxy
+ */
+JNIEXPORT jclass JNICALL
+Java_sun_tracing_dtrace_JVM_defineClass0(
+        JNIEnv *env, jclass ignore, jobject loader, jstring name, jbyteArray data,
+        jint offset, jint length)
+{
+    jbyte *body;
+    char *utfName;
+    jclass result = 0;
+    char buf[128];
+
+    if (data == NULL) {
+        return 0;
+    }
+
+    /* Work around 4153825. malloc crashes on Solaris when passed a
+     * negative size.
+     */
+    if (length < 0) {
+        return 0;
+    }
+
+    body = (jbyte *)malloc(length);
+
+    if (body == 0) {
+        return 0;
+    }
+
+    (*env)->GetByteArrayRegion(env, data, offset, length, body);
+
+    if ((*env)->ExceptionOccurred(env))
+        goto free_body;
+
+    if (name != NULL) {
+        int i;
+        int len = (*env)->GetStringUTFLength(env, name);
+        int unicode_len = (*env)->GetStringLength(env, name);
+        if (len >= sizeof(buf)) {
+            utfName = malloc(len + 1);
+            if (utfName == NULL) {
+                goto free_body;
+            }
+        } else {
+            utfName = buf;
+        }
+        (*env)->GetStringUTFRegion(env, name, 0, unicode_len, utfName);
+
+        // Convert '.' to '/' in the package name
+        for (i = 0; i < unicode_len; ++i) {
+            if (utfName[i] == '.') {
+                utfName[i] = '/';
+            }
+        }
+    } else {
+        utfName = NULL;
+    }
+
+    result = (*env)->DefineClass(env, utfName, loader, body, length);
+
+    if (utfName && utfName != buf)
+        free(utfName);
+
+ free_body:
+    free(body);
+    return result;
+}
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/native/sun/tracing/dtrace/jvm_symbols.h	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JVM_SYMBOLS_H
+#define _JVM_SYMBOLS_H
+
+#include "jvm.h"
+
+typedef jint (JNICALL* GetVersion_t)(JNIEnv*);
+typedef jboolean (JNICALL *IsSupported_t)(JNIEnv*);
+typedef jlong (JNICALL* Activate_t)(
+    JNIEnv*, jint, jstring, jint, JVM_DTraceProvider*);
+typedef void (JNICALL *Dispose_t)(JNIEnv*, jlong);
+typedef jboolean (JNICALL *IsProbeEnabled_t)(JNIEnv*, jmethodID);
+
+typedef struct {
+    GetVersion_t     GetVersion;
+    IsSupported_t    IsSupported;
+    Activate_t       Activate;
+    Dispose_t        Dispose;
+    IsProbeEnabled_t IsProbeEnabled;
+} JvmSymbols;
+
+// Platform-dependent implementation.
+// Returns NULL if the symbols are not found
+extern JvmSymbols* lookupJvmSymbols();
+
+#endif // def _JVM_SYMBOLS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/native/sun/tracing/dtrace/jvm_symbols_md.c	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <dlfcn.h>
+#include <stdlib.h>
+
+#include <jvm.h>
+
+#include "jvm_symbols.h"
+
+JvmSymbols* lookupJvmSymbols() {
+    JvmSymbols* syms = (JvmSymbols*)malloc(sizeof(JvmSymbols));
+    if (syms != NULL) {
+        syms->GetVersion = (GetVersion_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceGetVersion");
+        syms->IsSupported = (IsSupported_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceIsSupported");
+        syms->Activate = (Activate_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceActivate");
+        syms->Dispose = (Dispose_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceDispose");
+        syms->IsProbeEnabled = (IsProbeEnabled_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceIsProbeEnabled");
+
+        if ( syms->GetVersion == NULL || syms->Activate == NULL ||
+             syms->IsProbeEnabled == NULL || syms->Dispose == NULL ||
+             syms->IsSupported == NULL) {
+            free(syms);
+            syms = NULL;
+        }
+    }
+    return syms;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <jvm.h>
+
+#include "jvm_symbols.h"
+
+JvmSymbols* lookupJvmSymbols() {
+    JvmSymbols* syms = (JvmSymbols*)malloc(sizeof(JvmSymbols));
+    if (syms != NULL) {
+        HINSTANCE jvm = LoadLibrary("jvm.dll");
+        if (jvm == NULL) {
+            free(syms);
+            return NULL;
+        }
+        syms->GetVersion = (GetVersion_t)
+            GetProcAddress(jvm, "JVM_DTraceGetVersion");
+        syms->IsSupported = (IsSupported_t)
+            GetProcAddress(jvm, "JVM_DTraceIsSupported");
+        syms->Activate = (Activate_t)
+            GetProcAddress(jvm, "JVM_DTraceActivate");
+        syms->Dispose = (Dispose_t)
+            GetProcAddress(jvm, "JVM_DTraceDispose");
+        syms->IsProbeEnabled = (IsProbeEnabled_t)
+            GetProcAddress(jvm, "JVM_DTraceIsProbeEnabled");
+
+        (void)FreeLibrary(jvm);
+        if ( syms->GetVersion == NULL || syms->IsSupported == NULL ||
+             syms->Activate == NULL || syms->Dispose == NULL ||
+             syms->IsProbeEnabled == NULL) {
+            free(syms);
+            syms = NULL;
+        }
+
+    }
+    return syms;
+}
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Tue May 13 11:33:06 2008 -0700
@@ -29,14 +29,14 @@
  */
 
 import java.lang.management.*;
+import java.util.List;
 import javax.management.MBeanServer;
 import com.sun.management.HotSpotDiagnosticMXBean;
 
 public class DumpHeap {
     public static void main(String[] argv) throws Exception {
-         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-         HotSpotDiagnosticMXBean dm = sun.management.ManagementFactory.getDiagnosticMXBean();
+         List<HotSpotDiagnosticMXBean> list = ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
          System.out.println("Dumping to file: " + argv[0] + " ....");
-         dm.dumpHeap(argv[0], true);
+         list.get(0).dumpHeap(argv[0], true);
     }
 }
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Tue May 13 11:33:06 2008 -0700
@@ -41,8 +41,9 @@
         "com.sun.management:type=HotSpotDiagnostic";
 
     public static void main(String[] args) throws Exception {
-        HotSpotDiagnosticMXBean mbean =
-            sun.management.ManagementFactory.getDiagnosticMXBean();
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+        HotSpotDiagnosticMXBean mbean = list.get(0);
         checkDiagnosticOptions(mbean);
 
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Tue May 13 11:33:06 2008 -0700
@@ -34,6 +34,7 @@
 import com.sun.management.VMOption;
 import com.sun.management.VMOption.Origin;
 import java.lang.management.ManagementFactory;
+import java.util.List;
 import javax.management.MBeanServer;
 
 public class GetVMOption {
@@ -44,8 +45,9 @@
         "com.sun.management:type=HotSpotDiagnostic";
 
     public static void main(String[] args) throws Exception {
-        HotSpotDiagnosticMXBean mbean =
-            sun.management.ManagementFactory.getDiagnosticMXBean();
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+        HotSpotDiagnosticMXBean mbean = list.get(0);
         checkVMOption(mbean);
 
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Tue May 13 11:33:06 2008 -0700
@@ -31,11 +31,11 @@
  * @run main/othervm -XX:+PrintGCDetails SetVMOption
  */
 
+import java.lang.management.ManagementFactory;
 import java.util.*;
 import com.sun.management.HotSpotDiagnosticMXBean;
 import com.sun.management.VMOption;
 import com.sun.management.VMOption.Origin;
-import sun.management.ManagementFactory;
 import sun.misc.Version;
 
 public class SetVMOption {
@@ -44,10 +44,11 @@
     private static String BAD_VALUE = "yes";
     private static String NEW_VALUE = "false";
     private static String MANAGEMENT_SERVER = "ManagementServer";
-    private static HotSpotDiagnosticMXBean mbean =
-        ManagementFactory.getDiagnosticMXBean();
+    private static HotSpotDiagnosticMXBean mbean;
 
     public static void main(String[] args) throws Exception {
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
 
         // The following test is transitional only and should be removed
         // once build 52 is promoted.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/com/sun/tracing/BasicFunctionality.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6537506
+ * @summary Basic unit test for tracing framework
+ */
+
+import com.sun.tracing.*;
+import java.lang.reflect.Method;
+
+@ProviderName("NamedProvider")
+interface BasicProvider extends Provider {
+    void plainProbe();
+    void probeWithArgs(int a, float f, String s, Long l);
+    @ProbeName("namedProbe") void probeWithName();
+    void overloadedProbe();
+    void overloadedProbe(int i);
+}
+
+interface InvalidProvider extends Provider {
+    int nonVoidProbe();
+}
+
+public class BasicFunctionality {
+
+    public static ProviderFactory factory;
+    public static BasicProvider bp;
+
+    public static void main(String[] args) throws Exception {
+
+        factory = ProviderFactory.getDefaultFactory();
+        if (factory != null) {
+            bp = factory.createProvider(BasicProvider.class);
+        }
+
+        testProviderFactory();
+        testProbe();
+        testProvider();
+    }
+
+    static void fail(String s) throws Exception {
+        throw new Exception(s);
+    }
+
+    static void testProviderFactory() throws Exception {
+        if (factory == null) {
+            fail("ProviderFactory.getDefaultFactory: Did not create factory");
+        }
+        if (bp == null) {
+            fail("ProviderFactory.createProvider: Did not create provider");
+        }
+        try {
+            factory.createProvider(null);
+            fail("ProviderFactory.createProvider: Did not throw NPE for null");
+        } catch (NullPointerException e) {}
+
+       try {
+           factory.createProvider(InvalidProvider.class);
+           fail("Factory.createProvider: Should error with non-void probes");
+       } catch (IllegalArgumentException e) {}
+    }
+
+    public static void testProvider() throws Exception {
+
+       // These just shouldn't throw any exeptions:
+       bp.plainProbe();
+       bp.probeWithArgs(42, (float)3.14, "spam", new Long(2L));
+       bp.probeWithArgs(42, (float)3.14, null, null);
+       bp.probeWithName();
+       bp.overloadedProbe();
+       bp.overloadedProbe(42);
+
+       Method m = BasicProvider.class.getMethod("plainProbe");
+       Probe p = bp.getProbe(m);
+       if (p == null) {
+           fail("Provider.getProbe: Did not return probe");
+       }
+
+       Method m2 = BasicFunctionality.class.getMethod("testProvider");
+       p = bp.getProbe(m2);
+       if (p != null) {
+           fail("Provider.getProbe: Got probe with invalid spec");
+       }
+
+       bp.dispose();
+       // These just shouldn't throw any exeptions:
+       bp.plainProbe();
+       bp.probeWithArgs(42, (float)3.14, "spam", new Long(2L));
+       bp.probeWithArgs(42, (float)3.14, null, null);
+       bp.probeWithName();
+       bp.overloadedProbe();
+       bp.overloadedProbe(42);
+
+       if (bp.getProbe(m) != null) {
+           fail("Provider.getProbe: Should return null after dispose()");
+       }
+
+       bp.dispose(); // just to make sure nothing bad happens
+    }
+
+    static void testProbe() throws Exception {
+       Method m = BasicProvider.class.getMethod("plainProbe");
+       Probe p = bp.getProbe(m);
+       p.isEnabled(); // just make sure it doesn't do anything bad
+       p.trigger();
+
+       try {
+         p.trigger(0);
+         fail("Probe.trigger: too many arguments not caught");
+       } catch (IllegalArgumentException e) {}
+
+       p = bp.getProbe(BasicProvider.class.getMethod(
+           "probeWithArgs", int.class, float.class, String.class, Long.class));
+       try {
+         p.trigger();
+         fail("Probe.trigger: too few arguments not caught");
+       } catch (IllegalArgumentException e) {}
+
+       try {
+         p.trigger((float)3.14, (float)3.14, "", new Long(0L));
+         fail("Probe.trigger: wrong type primitive arguments not caught");
+       } catch (IllegalArgumentException e) {}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/management/ManagementFactory/GetPlatformMXBeans.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug     6610094
+ * @summary Basic unit test of ManagementFactory.getPlatformMXBeans()
+ *          and also PlatformManagedObject.getObjectName()
+ * @author  Mandy Chung
+ *
+ * @run main GetPlatformMXBeans
+ */
+
+import java.lang.management.*;
+import static java.lang.management.ManagementFactory.*;
+import java.util.*;
+import javax.management.*;
+
+public class GetPlatformMXBeans {
+    private static MBeanServer platformMBeanServer =
+            getPlatformMBeanServer();
+    public static void main(String[] argv) throws Exception {
+        checkPlatformMXBean(getClassLoadingMXBean(),
+                            ClassLoadingMXBean.class,
+                            CLASS_LOADING_MXBEAN_NAME);
+        checkPlatformMXBean(getCompilationMXBean(),
+                            CompilationMXBean.class,
+                            COMPILATION_MXBEAN_NAME);
+        checkPlatformMXBean(getMemoryMXBean(),
+                            MemoryMXBean.class,
+                            MEMORY_MXBEAN_NAME);
+        checkPlatformMXBean(getOperatingSystemMXBean(),
+                            OperatingSystemMXBean.class,
+                            OPERATING_SYSTEM_MXBEAN_NAME);
+        checkPlatformMXBean(getRuntimeMXBean(),
+                            RuntimeMXBean.class,
+                            RUNTIME_MXBEAN_NAME);
+        checkPlatformMXBean(getThreadMXBean(),
+                            ThreadMXBean.class,
+                            THREAD_MXBEAN_NAME);
+        checkGarbageCollectorMXBeans(getGarbageCollectorMXBeans());
+        checkMemoryManagerMXBeans(getMemoryManagerMXBeans());
+        checkMemoryPoolMXBeans(getMemoryPoolMXBeans());
+    }
+
+    private static <T extends PlatformManagedObject>
+        void checkPlatformMXBean(T obj, Class<T> mxbeanInterface,
+                                 String mxbeanName) throws Exception
+    {
+        int numElements = (obj != null ? 1 : 0);
+        // verify local list of platform MXBeans
+        List<? extends PlatformManagedObject> mxbeans =
+            getPlatformMXBeans(mxbeanInterface);
+        if (mxbeans.size() != numElements) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + numElements);
+        }
+
+        if (obj != null) {
+            PlatformManagedObject pmo = mxbeans.get(0);
+            if (obj != pmo) {
+                throw new RuntimeException("The list returned by getPlatformMXBeans"
+                    + " not matched");
+            }
+            ObjectName on = new ObjectName(mxbeanName);
+            if (!on.equals(pmo.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    pmo.getObjectName() + " Expected = " + on);
+            }
+        }
+
+        // verify platform MXBeans in the platform MBeanServer
+        mxbeans = getPlatformMXBeans(platformMBeanServer, mxbeanInterface);
+        if (mxbeans.size() != numElements) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + numElements);
+        }
+    }
+
+    private static void checkMemoryManagerMXBeans(List<MemoryManagerMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, MemoryManagerMXBean.class);
+        for (MemoryManagerMXBean mxbean : objs) {
+            String domainAndType;
+            if (mxbean instanceof GarbageCollectorMXBean) {
+                domainAndType = GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE;
+            } else {
+                domainAndType = MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE;
+            }
+            ObjectName on = new ObjectName(domainAndType +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+    private static void checkMemoryPoolMXBeans(List<MemoryPoolMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, MemoryPoolMXBean.class);
+        for (MemoryPoolMXBean mxbean : objs) {
+            ObjectName on = new ObjectName(MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+
+    private static void checkGarbageCollectorMXBeans(List<GarbageCollectorMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, GarbageCollectorMXBean.class);
+        for (GarbageCollectorMXBean mxbean : objs) {
+            ObjectName on = new ObjectName(GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+
+    private static <T extends PlatformManagedObject>
+        void checkPlatformMXBeans(List<T> objs, Class<T> mxbeanInterface)
+            throws Exception
+    {
+        // verify local list of platform MXBeans
+        List<? extends PlatformManagedObject> mxbeans =
+            getPlatformMXBeans(mxbeanInterface);
+        if (objs.size() != mxbeans.size()) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + objs.size());
+        }
+        List<T> list = new ArrayList<T>(objs);
+        for (PlatformManagedObject pmo : mxbeans) {
+            if (list.contains(pmo)) {
+                list.remove(pmo);
+            } else {
+                throw new RuntimeException(pmo +
+                    " not in the platform MXBean list");
+            }
+        }
+
+        if (!list.isEmpty()) {
+            throw new RuntimeException("The list returned by getPlatformMXBeans"
+                + " not matched");
+        }
+
+        // verify platform MXBeans in the platform MBeanServer
+        mxbeans = getPlatformMXBeans(platformMBeanServer, mxbeanInterface);
+        if (objs.size() != mxbeans.size()) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + objs.size());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/management/OperatingSystemMXBean/PlatformMXBeanTest.java	Tue May 13 11:33:06 2008 -0700
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug     6610094
+ * @summary Test the OperatingSystemMXBean instance returned by
+ *          ManagementFactory.getPlatformMXBeans()
+ * @author  Mandy Chung
+ *
+ * @run main PlatformMXBeanTest
+ */
+
+import java.lang.management.*;
+import java.util.List;
+
+public class PlatformMXBeanTest {
+    public static void main(String[] argv) throws Exception {
+        OperatingSystemMXBean osMBean = getOSPlatformMXBean(OperatingSystemMXBean.class);
+
+        // There should have only one single MXBean for the OS MXBean interfaces:
+        //   java.lang.management.OperatingSystemMXBean
+        //   com.sun.management.OperatingSystemMXBean
+        //   com.sun.management.UnixOperatingSystemMXBean
+        if (osMBean != getOSPlatformMXBean(com.sun.management.OperatingSystemMXBean.class)) {
+            throw new RuntimeException(
+                "Invalid com.sun.management.OperatingSystemMXBean instance");
+        }
+
+        if (!System.getProperty("os.name").startsWith("Windows") &&
+                osMBean != getOSPlatformMXBean(com.sun.management.UnixOperatingSystemMXBean.class)) {
+            throw new RuntimeException(
+                "Invalid com.sun.management.UnixOperatingSystemMXBean instance");
+        }
+    }
+
+    private static <T extends OperatingSystemMXBean>
+            T getOSPlatformMXBean(Class<T> c) {
+        List<T> result = ManagementFactory.getPlatformMXBeans(c);
+        if (result.isEmpty()) {
+            return null;
+        } else if (result.size() == 1) {
+            return result.get(0);
+        } else {
+            throw new RuntimeException(c.getName() + " has " +
+                result.size() + " number of instances");
+        }
+    }
+}
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetClassInitializationTime {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Tue May 13 11:33:06 2008 -0700
@@ -39,7 +39,7 @@
 public class GetClassLoadingTime {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetInitializedClassCount {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetLoadedClassSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetMethodDataSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetUnloadedClassSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 0;
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetSafepointCount {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 5;
 
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetSafepointSyncTime {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 300;
 
--- a/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Tue May 13 11:33:06 2008 -0700
@@ -37,7 +37,7 @@
 public class GetTotalSafepointTime {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 100;
 
--- a/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Tue May 13 11:33:06 2008 -0700
@@ -32,10 +32,11 @@
 import sun.management.*;
 import java.util.*;
 import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
 
 public class GetInternalThreads {
     private static HotspotThreadMBean mbean =
-        ManagementFactory.getHotspotThreadMBean();
+        ManagementFactoryHelper.getHotspotThreadMBean();
 
     // Minimum number of VM internal threads
     //   VM thread, watcher thread, Low memory detector, compiler thread
@@ -55,7 +56,7 @@
         System.out.println("Internal Thread Count = " + value);
 
         ThreadMXBean thread =
-            java.lang.management.ManagementFactory.getThreadMXBean();
+            ManagementFactory.getThreadMXBean();
         if (!thread.isThreadCpuTimeSupported()) {
             System.out.println("Thread Cpu Time is not supported.");
             return;
--- a/test/tools/launcher/Arrrghs.java	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/tools/launcher/Arrrghs.java	Tue May 13 11:33:06 2008 -0700
@@ -1,17 +1,5 @@
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,8 +21,19 @@
  * have any questions.
  */
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
 
-public class Arrrghs{
+public class Arrrghs {
 
     /**
      * A group of tests to ensure that arguments are passed correctly to
@@ -113,12 +112,10 @@
         return retval;
     }
 
-
-
     private static boolean doExec0(ProcessBuilder pb, String expectedArguments) {
         boolean retval = false;
         try {
-            pb.redirectErrorStream(_debug);
+            pb.redirectErrorStream(true);
             Process p = pb.start();
             retval = detectCookie(p.getInputStream(), expectedArguments);
             p.waitFor();
@@ -167,7 +164,6 @@
             }
         }
 
-
         if (_debug) System.out.println("Starting Arrrghs tests");
         // Basic test
         if (!doExec("-a -b -c -d")) exitValue++;
--- a/test/tools/launcher/Arrrghs.sh	Wed Apr 30 17:34:41 2008 -0700
+++ b/test/tools/launcher/Arrrghs.sh	Tue May 13 11:33:06 2008 -0700
@@ -1,13 +1,13 @@
 #!/bin/sh
 # @test Arrrghs.sh
-# @bug 5030233 6214916 6356475 6571029
+# @bug 5030233 6214916 6356475 6571029 6684582
 # @build Arrrghs
 # @run shell Arrrghs.sh
 # @summary Argument parsing validation.
 # @author Joseph E. Kowalski
 
 #
-# Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -104,6 +104,44 @@
 }
 
 #
+# Test to ensure that a missing main class is indicated in the error message
+#
+TestMissingMainClass() {
+	# First create a small jar file with no main
+        printf "public class Foo {}\n" > Foo.java
+	$TESTJAVA/bin/javac Foo.java
+	if [ $? -ne 0 ]; then
+		printf "Error: compilation of Foo.java failed\n" 
+ 		exit 1
+	fi
+	printf "Main-Class: Bar\n" > manifest
+	$TESTJAVA/bin/jar -cvfm some.jar manifest Foo.class
+	if [ ! -f some.jar ]; then
+		printf "Error: did not find some.jar\n" 
+ 		exit 1
+	fi
+
+	# test a non-existence main-class using -jar 
+	mess="`$TESTJAVA/bin/java -jar some.jar 2>&1 1>/dev/null`"
+	echo $mess | grep 'Bar' 2>&1 > /dev/null
+	if [ $? -ne 0 ]; then
+		printf "Error: did not find main class missing message\n"
+		exit 1
+	fi
+
+	# test a non-existent main-class using classpath
+	mess="`$TESTJAVA/bin/java -cp some.jar Bar 2>&1 1>/dev/null`"
+	echo $mess | grep 'Bar' 2>&1 > /dev/null
+	if [ $? -ne 0 ]; then
+		printf "Error: did not find main class missing message\n"
+		exit 1
+	fi
+
+	# cleanup
+	rm -f some.jar Foo.* manifest
+}
+
+#
 # Main processing:
 #
 
@@ -117,6 +155,7 @@
 TestCP javac -classpath
 TestXUsage
 TestHelp
+TestMissingMainClass
 
 #
 # Tests for 6214916