--- a/.hgtags Thu Dec 06 16:45:26 2018 -0500
+++ b/.hgtags Fri Dec 07 09:46:53 2018 -0500
@@ -525,3 +525,4 @@
40098289d5804c3b5e7074bc75501a81e70d9b0d jdk-12+20
f8fb0c86f2b3d24294d39c5685a628e1beb14ba7 jdk-12+21
732bec44c89e8b93a38296bf690f97b7230c5b6d jdk-12+22
+eef755718cb24813031a842bbfc716a6cea18e9a jdk-12+23
--- a/make/data/charsetmapping/charsets Thu Dec 06 16:45:26 2018 -0500
+++ b/make/data/charsetmapping/charsets Fri Dec 07 09:46:53 2018 -0500
@@ -1554,10 +1554,11 @@
charset x-IBM964 IBM964
package sun.nio.cs.ext
- type source
+ type template
alias cp964 # JDK historical
alias ibm964
alias ibm-964
+ alias ibm-euctw
alias 964
charset x-IBM33722 IBM33722
@@ -1861,6 +1862,11 @@
minmax 0x21 0x7e 0x21 0x7e
internal true # "internal implementation
+charset SimpleEUCEncoder SimpleEUCEncoder
+ package sun.nio.cs.ext
+ type template
+ internal true
+
########################################################
#
# platform specific charsets, to be registered into spi
--- a/make/data/charsetmapping/stdcs-aix Thu Dec 06 16:45:26 2018 -0500
+++ b/make/data/charsetmapping/stdcs-aix Fri Dec 07 09:46:53 2018 -0500
@@ -16,6 +16,7 @@
IBM943
IBM943C
IBM950
+IBM964
IBM970
IBM1046
IBM1124
@@ -25,3 +26,4 @@
ISO_8859_8
MS1252
TIS_620
+SimpleEUCEncoder
--- a/make/hotspot/lib/JvmDtraceObjects.gmk Thu Dec 06 16:45:26 2018 -0500
+++ b/make/hotspot/lib/JvmDtraceObjects.gmk Fri Dec 07 09:46:53 2018 -0500
@@ -60,6 +60,7 @@
ciEnv.o \
classLoadingService.o \
compileBroker.o \
+ gcVMOperations.o \
hashtable.o \
instanceKlass.o \
java.o \
@@ -74,18 +75,17 @@
thread.o \
unsafe.o \
vmThread.o \
- vmGCOperations.o \
)
ifeq ($(call check-jvm-feature, cmsgc), true)
DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
- vmCMSOperations.o \
+ cmsVMOperations.o \
)
endif
ifeq ($(call check-jvm-feature, parallelgc), true)
DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
- vmPSOperations.o \
+ psVMOperations.o \
)
endif
--- a/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. 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
@@ -151,6 +151,19 @@
}
}
+ void pushStringListEntry(String qName, Attributes attributes, String key) {
+ if (!pushIfIgnored(qName, attributes)) {
+ currentContainer = new StringListEntry(qName, currentContainer, key);
+ }
+ }
+
+ void pushStringListElement(String qName, Attributes attributes, int index) {
+ if (!pushIfIgnored(qName, attributes)) {
+ currentContainer = new StringListElement(qName, currentContainer, index);
+ }
+ }
+
+
private boolean pushIfIgnored(String qName, Attributes attributes) {
if (isIgnored(attributes) || currentContainer instanceof IgnoredContainer) {
pushIgnoredContainer(qName);
--- a/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java Fri Dec 07 09:46:53 2018 -0500
@@ -53,6 +53,10 @@
"NumberPatterns/percent"
};
+ private final static String[] COMPACT_NUMBER_PATTERN_KEYS = {
+ "short.CompactNumberPatterns",
+ "long.CompactNumberPatterns"};
+
private final static String[] NUMBER_ELEMENT_KEYS = {
"NumberElements/decimal",
"NumberElements/group",
@@ -228,6 +232,16 @@
}
}
+ for (String k : COMPACT_NUMBER_PATTERN_KEYS) {
+ List<String> patterns = (List<String>) myMap.remove(k);
+ if (patterns != null) {
+ // Replace any null entry with empty strings.
+ String[] arrPatterns = patterns.stream()
+ .map(s -> s == null ? "" : s).toArray(String[]::new);
+ myMap.put(k, arrPatterns);
+ }
+ }
+
// if myMap has any of NUMBER_ELEMENT_KEYS, create a complete NumberElements.
String defaultScript = (String) myMap.get("DefaultNumberingSystem");
@SuppressWarnings("unchecked")
--- a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java Fri Dec 07 09:46:53 2018 -0500
@@ -888,6 +888,8 @@
copyIfPresent(map, "NumberElements", formatData);
}
copyIfPresent(map, "NumberPatterns", formatData);
+ copyIfPresent(map, "short.CompactNumberPatterns", formatData);
+ copyIfPresent(map, "long.CompactNumberPatterns", formatData);
// put extra number elements for available scripts into formatData, if it is "root"
if (id.equals("root")) {
--- a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java Fri Dec 07 09:46:53 2018 -0500
@@ -52,6 +52,8 @@
private final String id;
private String currentContext = ""; // "format"/"stand-alone"
private String currentWidth = ""; // "wide"/"narrow"/"abbreviated"
+ private String currentStyle = ""; // short, long for decimalFormat
+ private String compactCount = ""; // one or other for decimalFormat
LDMLParseHandler(String id) {
this.id = id;
@@ -503,13 +505,85 @@
// Number format information
//
case "decimalFormatLength":
- if (attributes.getValue("type") == null) {
- // skipping type="short" data
- // for FormatData
- // copy string for later assembly into NumberPatterns
+ String type = attributes.getValue("type");
+ if (null == type) {
+ // format data for decimal number format
pushStringEntry(qName, attributes, "NumberPatterns/decimal");
+ currentStyle = type;
} else {
- pushIgnoredContainer(qName);
+ switch (type) {
+ case "short":
+ case "long":
+ // considering "short" and long for
+ // compact number formatting patterns
+ pushKeyContainer(qName, attributes, type);
+ currentStyle = type;
+ break;
+ default:
+ pushIgnoredContainer(qName);
+ break;
+ }
+ }
+ break;
+ case "decimalFormat":
+ if(currentStyle == null) {
+ pushContainer(qName, attributes);
+ } else {
+ switch (currentStyle) {
+ case "short":
+ pushStringListEntry(qName, attributes,
+ currentStyle+".CompactNumberPatterns");
+ break;
+ case "long":
+ pushStringListEntry(qName, attributes,
+ currentStyle+".CompactNumberPatterns");
+ break;
+ default:
+ pushIgnoredContainer(qName);
+ break;
+ }
+ }
+ break;
+ case "pattern":
+ String containerName = currentContainer.getqName();
+ if (containerName.equals("decimalFormat")) {
+ if (currentStyle == null) {
+ pushContainer(qName, attributes);
+ } else {
+ // The compact number patterns parsing assumes that the order
+ // of patterns are always in the increasing order of their
+ // type attribute i.e. type = 1000...
+ // Between the inflectional forms for a type (e.g.
+ // count = "one" and count = "other" for type = 1000), it is
+ // assumed that the count = "one" always appears before
+ // count = "other"
+ switch (currentStyle) {
+ case "short":
+ case "long":
+ String count = attributes.getValue("count");
+ // first pattern of count = "one" or count = "other"
+ if ((count.equals("one") || count.equals("other"))
+ && compactCount.equals("")) {
+ compactCount = count;
+ pushStringListElement(qName, attributes,
+ (int) Math.log10(Double.parseDouble(attributes.getValue("type"))));
+ } else if ((count.equals("one") || count.equals("other"))
+ && compactCount.equals(count)) {
+ // extract patterns with similar "count"
+ // attribute value
+ pushStringListElement(qName, attributes,
+ (int) Math.log10(Double.parseDouble(attributes.getValue("type"))));
+ } else {
+ pushIgnoredContainer(qName);
+ }
+ break;
+ default:
+ pushIgnoredContainer(qName);
+ break;
+ }
+ }
+ } else {
+ pushContainer(qName, attributes);
}
break;
case "currencyFormatLength":
@@ -676,10 +750,9 @@
// "alias" for root
case "alias":
{
- if (id.equals("root") &&
- !isIgnored(attributes) &&
- currentCalendarType != null &&
- !currentCalendarType.lname().startsWith("islamic-")) { // ignore Islamic variants
+ if (id.equals("root") && !isIgnored(attributes)
+ && ((currentContainer.getqName().equals("decimalFormatLength"))
+ || (currentCalendarType != null && !currentCalendarType.lname().startsWith("islamic-")))) { // ignore islamic variants
pushAliasEntry(qName, attributes, attributes.getValue("path"));
} else {
pushIgnoredContainer(qName);
@@ -831,6 +904,9 @@
case "dayPeriods":
case "eras":
break;
+ case "decimalFormatLength": // used for compact number formatting patterns
+ keyName = type + ".CompactNumberPatterns";
+ break;
default:
keyName = "";
break;
@@ -869,6 +945,14 @@
width = path.substring(start+typeKey.length(), path.indexOf("']", start));
}
+ // used for compact number formatting patterns aliases
+ typeKey = "decimalFormatLength[@type='";
+ start = path.indexOf(typeKey);
+ if (start != -1) {
+ String style = path.substring(start + typeKey.length(), path.indexOf("']", start));
+ return toJDKKey(qName, "", style);
+ }
+
return calType + "." + toJDKKey(qName, context, width);
}
@@ -926,7 +1010,11 @@
currentContext = "";
putIfEntry();
break;
-
+ case "decimalFormatLength":
+ currentStyle = "";
+ compactCount = "";
+ putIfEntry();
+ break;
default:
putIfEntry();
}
@@ -937,22 +1025,28 @@
if (currentContainer instanceof AliasEntry) {
Entry<?> entry = (Entry<?>) currentContainer;
String containerqName = entry.getParent().getqName();
- Set<String> keyNames = populateAliasKeys(containerqName, currentContext, currentWidth);
- if (!keyNames.isEmpty()) {
- for (String keyName : keyNames) {
- String[] tmp = keyName.split(",", 3);
- String calType = currentCalendarType.lname();
- String src = calType+"."+tmp[0];
- String target = getTarget(
- entry.getKey(),
- calType,
- tmp[1].length()>0 ? tmp[1] : currentContext,
- tmp[2].length()>0 ? tmp[2] : currentWidth);
- if (target.substring(target.lastIndexOf('.')+1).equals(containerqName)) {
- target = target.substring(0, target.indexOf('.'))+"."+tmp[0];
+ if (containerqName.equals("decimalFormatLength")) {
+ String srcKey = toJDKKey(containerqName, "", currentStyle);
+ String targetKey = getTarget(entry.getKey(), "", "", "");
+ CLDRConverter.aliases.put(srcKey, targetKey);
+ } else {
+ Set<String> keyNames = populateAliasKeys(containerqName, currentContext, currentWidth);
+ if (!keyNames.isEmpty()) {
+ for (String keyName : keyNames) {
+ String[] tmp = keyName.split(",", 3);
+ String calType = currentCalendarType.lname();
+ String src = calType+"."+tmp[0];
+ String target = getTarget(
+ entry.getKey(),
+ calType,
+ tmp[1].length()>0 ? tmp[1] : currentContext,
+ tmp[2].length()>0 ? tmp[2] : currentWidth);
+ if (target.substring(target.lastIndexOf('.')+1).equals(containerqName)) {
+ target = target.substring(0, target.indexOf('.'))+"."+tmp[0];
+ }
+ CLDRConverter.aliases.put(src.replaceFirst("^gregorian.", ""),
+ target.replaceFirst("^gregorian.", ""));
}
- CLDRConverter.aliases.put(src.replaceFirst("^gregorian.", ""),
- target.replaceFirst("^gregorian.", ""));
}
}
} else if (currentContainer instanceof Entry) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/jdk/src/classes/build/tools/cldrconverter/StringListElement.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.cldrconverter;
+
+class StringListElement extends Container {
+
+ StringListEntry list;
+ int index;
+
+ StringListElement(String qName, Container parent, int index) {
+ super(qName, parent);
+ while (!(parent instanceof StringListEntry)) {
+ parent = parent.getParent();
+ }
+ list = (StringListEntry) parent;
+ this.index = index;
+ }
+
+ @Override
+ void addCharacters(char[] characters, int start, int length) {
+ list.addCharacters(index, characters, start, length);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/jdk/src/classes/build/tools/cldrconverter/StringListEntry.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.cldrconverter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+class StringListEntry extends Entry<List<String>> {
+
+ private List<String> value;
+
+ StringListEntry(String qName, Container parent, String key) {
+ super(qName, parent, key);
+ value = new ArrayList<>();
+ }
+
+ void addCharacters(int index, char[] characters, int start, int length) {
+ // fill with empty strings when the patterns start from index > 0
+ if (value.size() < index) {
+ IntStream.range(0, index).forEach(i -> value.add(i, ""));
+ value.add(index, new String(characters, start, length));
+ } else {
+ value.add(index, new String(characters, start, length));
+ }
+ }
+
+ @Override
+ List<String> getValue() {
+ for (String element : value) {
+ if (element != null) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+}
--- a/src/hotspot/os/aix/os_aix.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/aix/os_aix.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -4359,7 +4359,7 @@
static inline time_t get_mtime(const char* filename) {
struct stat st;
int ret = os::stat(filename, &st);
- assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
return st.st_mtime;
}
--- a/src/hotspot/os/bsd/os_bsd.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/bsd/os_bsd.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -3388,7 +3388,7 @@
static inline struct timespec get_mtime(const char* filename) {
struct stat st;
int ret = os::stat(filename, &st);
- assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
#ifdef __APPLE__
return st.st_mtimespec;
#else
--- a/src/hotspot/os/linux/os_linux.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/linux/os_linux.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -5946,7 +5946,7 @@
static inline struct timespec get_mtime(const char* filename) {
struct stat st;
int ret = os::stat(filename, &st);
- assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
return st.st_mtim;
}
--- a/src/hotspot/os/solaris/os_solaris.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/solaris/os_solaris.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1652,7 +1652,7 @@
static inline time_t get_mtime(const char* filename) {
struct stat st;
int ret = os::stat(filename, &st);
- assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
return st.st_mtime;
}
--- a/src/hotspot/os/windows/os_windows.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/windows/os_windows.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1563,7 +1563,7 @@
static inline time_t get_mtime(const char* filename) {
struct stat st;
int ret = os::stat(filename, &st);
- assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
return st.st_mtime;
}
--- a/src/hotspot/os/windows/os_windows.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/windows/os_windows.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,9 @@
#define OS_WINDOWS_VM_OS_WINDOWS_HPP
// Win32_OS defines the interface to windows operating systems
+// strtok_s is the Windows thread-safe equivalent of POSIX strtok_r
+#define strtok_r strtok_s
+
// Information about the protection of the page at address '0' on this os.
static bool zero_page_read_protected() { return true; }
--- a/src/hotspot/share/aot/aotCodeHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCodeHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,7 @@
#include "runtime/os.hpp"
#include "runtime/safepointVerifiers.hpp"
#include "runtime/sharedRuntime.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
bool AOTLib::_narrow_oop_shift_initialized = false;
int AOTLib::_narrow_oop_shift = 0;
--- a/src/hotspot/share/aot/aotCompiledMethod.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCompiledMethod.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -155,6 +155,10 @@
ShouldNotReachHere(); return NULL;
}
+void AOTCompiledMethod::do_unloading(bool unloading_occurred) {
+ unload_nmethod_caches(unloading_occurred);
+}
+
bool AOTCompiledMethod::make_not_entrant_helper(int new_state) {
// Make sure the method is not flushed in case of a safepoint in code below.
methodHandle the_method(method());
--- a/src/hotspot/share/aot/aotCompiledMethod.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCompiledMethod.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -265,6 +265,7 @@
#endif
}
+ virtual void do_unloading(bool unloading_occurred);
protected:
// AOT compiled methods are not flushed
--- a/src/hotspot/share/classfile/classLoader.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/classLoader.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1224,13 +1224,14 @@
assert((int)strlen(class_name) == class_name_len, "invariant");
static const char class_suffix[] = ".class";
+ size_t class_suffix_len = sizeof(class_suffix);
char* const file_name = NEW_RESOURCE_ARRAY(char,
class_name_len +
- sizeof(class_suffix)); // includes term NULL
+ class_suffix_len); // includes term NULL
strncpy(file_name, class_name, class_name_len);
- strncpy(&file_name[class_name_len], class_suffix, sizeof(class_suffix));
+ strncpy(&file_name[class_name_len], class_suffix, class_suffix_len);
return file_name;
}
--- a/src/hotspot/share/classfile/classLoaderStats.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/classLoaderStats.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
#include "oops/klass.hpp"
#include "oops/oop.hpp"
#include "oops/oopsHierarchy.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/diagnosticCommand.hpp"
#include "utilities/resourceHash.hpp"
--- a/src/hotspot/share/classfile/verifier.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/verifier.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -36,7 +36,6 @@
class Verifier : AllStatic {
public:
enum {
- STRICTER_ACCESS_CTRL_CHECK_VERSION = 49,
STACKMAP_ATTRIBUTE_MAJOR_VERSION = 50,
INVOKEDYNAMIC_MAJOR_VERSION = 51,
NO_RELAX_ACCESS_CTRL_CHECK_VERSION = 52,
--- a/src/hotspot/share/classfile/vmSymbols.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/vmSymbols.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -473,15 +473,16 @@
// Note, DirectiveSet may not be created at this point yet since this code
// is called from initial stub geenration code.
char* local_list = (char*)DirectiveSet::canonicalize_disableintrinsic(DisableIntrinsic);
-
+ char* save_ptr;
bool found = false;
- char* token = strtok(local_list, ",");
+
+ char* token = strtok_r(local_list, ",", &save_ptr);
while (token != NULL) {
if (strcmp(token, vmIntrinsics::name_at(id)) == 0) {
found = true;
break;
} else {
- token = strtok(NULL, ",");
+ token = strtok_r(NULL, ",", &save_ptr);
}
}
--- a/src/hotspot/share/code/codeCache.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/codeCache.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -289,7 +289,7 @@
// If large page support is enabled, align code heaps according to large
// page size to make sure that code cache is covered by large pages.
- const size_t alignment = MAX2(page_size(false), (size_t) os::vm_allocation_granularity());
+ const size_t alignment = MAX2(page_size(false, 8), (size_t) os::vm_allocation_granularity());
non_nmethod_size = align_up(non_nmethod_size, alignment);
profiled_size = align_down(profiled_size, alignment);
@@ -314,10 +314,14 @@
add_heap(non_profiled_space, "CodeHeap 'non-profiled nmethods'", CodeBlobType::MethodNonProfiled);
}
-size_t CodeCache::page_size(bool aligned) {
+size_t CodeCache::page_size(bool aligned, size_t min_pages) {
if (os::can_execute_large_page_memory()) {
- return aligned ? os::page_size_for_region_aligned(ReservedCodeCacheSize, 8) :
- os::page_size_for_region_unaligned(ReservedCodeCacheSize, 8);
+ if (InitialCodeCacheSize < ReservedCodeCacheSize) {
+ // Make sure that the page size allows for an incremental commit of the reserved space
+ min_pages = MAX2(min_pages, (size_t)8);
+ }
+ return aligned ? os::page_size_for_region_aligned(ReservedCodeCacheSize, min_pages) :
+ os::page_size_for_region_unaligned(ReservedCodeCacheSize, min_pages);
} else {
return os::vm_page_size();
}
--- a/src/hotspot/share/code/codeCache.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/codeCache.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -111,7 +111,6 @@
static CodeHeap* get_code_heap(int code_blob_type); // Returns the CodeHeap for the given CodeBlobType
// Returns the name of the VM option to set the size of the corresponding CodeHeap
static const char* get_code_heap_flag_name(int code_blob_type);
- static size_t page_size(bool aligned = true); // Returns the page size used by the CodeCache
static ReservedCodeSpace reserve_heap_memory(size_t size); // Reserves one continuous chunk of memory for the CodeHeaps
// Iteration
@@ -133,6 +132,7 @@
public:
// Initialization
static void initialize();
+ static size_t page_size(bool aligned = true, size_t min_pages = 1); // Returns the page size used by the CodeCache
static int code_heap_compare(CodeHeap* const &lhs, CodeHeap* const &rhs);
--- a/src/hotspot/share/code/compiledMethod.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/compiledMethod.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -556,6 +556,7 @@
void CompiledMethod::cleanup_inline_caches(bool clean_all) {
for (;;) {
+ ICRefillVerifier ic_refill_verifier;
{ CompiledICLocker ic_locker(this);
if (cleanup_inline_caches_impl(false, clean_all)) {
return;
--- a/src/hotspot/share/code/compiledMethod.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/compiledMethod.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -400,7 +400,7 @@
virtual bool is_unloading() = 0;
bool unload_nmethod_caches(bool class_unloading_occurred);
- virtual void do_unloading(bool unloading_occurred) { }
+ virtual void do_unloading(bool unloading_occurred) = 0;
private:
PcDesc* find_pc_desc(address pc, bool approximate) {
--- a/src/hotspot/share/code/icBuffer.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/icBuffer.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -38,6 +38,7 @@
#include "runtime/handles.inline.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
DEF_STUB_INTERFACE(ICStub);
@@ -45,7 +46,40 @@
CompiledICHolder* InlineCacheBuffer::_pending_released = NULL;
int InlineCacheBuffer::_pending_count = 0;
-DEBUG_ONLY(volatile int InlineCacheBuffer::_needs_refill = 0;)
+
+#ifdef ASSERT
+ICRefillVerifier::ICRefillVerifier()
+ : _refill_requested(false),
+ _refill_remembered(false)
+{
+ Thread* thread = Thread::current();
+ assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
+ thread->set_missed_ic_stub_refill_mark(this);
+}
+
+ICRefillVerifier::~ICRefillVerifier() {
+ assert(!_refill_requested || _refill_remembered,
+ "Forgot to refill IC stubs after failed IC transition");
+ Thread::current()->set_missed_ic_stub_refill_mark(NULL);
+}
+
+ICRefillVerifierMark::ICRefillVerifierMark(ICRefillVerifier* verifier) {
+ Thread* thread = Thread::current();
+ assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
+ thread->set_missed_ic_stub_refill_mark(this);
+}
+
+ICRefillVerifierMark::~ICRefillVerifierMark() {
+ Thread::current()->set_missed_ic_stub_refill_mark(NULL);
+}
+
+static ICRefillVerifier* current_ic_refill_verifier() {
+ Thread* current = Thread::current();
+ ICRefillVerifier* verifier = reinterpret_cast<ICRefillVerifier*>(current->missed_ic_stub_refill_mark());
+ assert(verifier != NULL, "need a verifier for safety");
+ return verifier;
+}
+#endif
void ICStub::finalize() {
if (!is_empty()) {
@@ -117,7 +151,10 @@
void InlineCacheBuffer::refill_ic_stubs() {
- DEBUG_ONLY(Atomic::store(0, &_needs_refill));
+#ifdef ASSERT
+ ICRefillVerifier* verifier = current_ic_refill_verifier();
+ verifier->request_remembered();
+#endif
// we ran out of inline cache buffer space; must enter safepoint.
// We do this by forcing a safepoint
EXCEPTION_MARK;
@@ -135,8 +172,6 @@
void InlineCacheBuffer::update_inline_caches() {
- assert(_needs_refill == 0,
- "Forgot to handle a failed IC transition requiring IC stubs");
if (buffer()->number_of_stubs() > 0) {
if (TraceICBuffer) {
tty->print_cr("[updating inline caches with %d stubs]", buffer()->number_of_stubs());
@@ -161,7 +196,6 @@
InlineCacheBuffer::initialize();
}
-
bool InlineCacheBuffer::create_transition_stub(CompiledIC *ic, void* cached_value, address entry) {
assert(!SafepointSynchronize::is_at_safepoint(), "should not be called during a safepoint");
assert(CompiledICLocker::is_safe(ic->instruction_address()), "mt unsafe call");
@@ -173,7 +207,10 @@
// allocate and initialize new "out-of-line" inline-cache
ICStub* ic_stub = new_ic_stub();
if (ic_stub == NULL) {
- DEBUG_ONLY(Atomic::inc(&_needs_refill));
+#ifdef ASSERT
+ ICRefillVerifier* verifier = current_ic_refill_verifier();
+ verifier->request_refill();
+#endif
return false;
}
--- a/src/hotspot/share/code/icBuffer.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/icBuffer.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. 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
@@ -29,7 +29,9 @@
#include "code/stubs.hpp"
#include "interpreter/bytecodes.hpp"
#include "memory/allocation.hpp"
+#include "runtime/safepointVerifiers.hpp"
#include "utilities/align.hpp"
+#include "utilities/debug.hpp"
#include "utilities/macros.hpp"
//
@@ -93,6 +95,43 @@
return stub;
}
+#ifdef ASSERT
+// The ICRefillVerifier class is a stack allocated RAII object used to
+// detect if a failed IC transition that required IC stub refilling has
+// been accidentally missed. It is up to the caller to in that case
+// refill IC stubs.
+class ICRefillVerifier: StackObj {
+ bool _refill_requested;
+ bool _refill_remembered;
+
+ public:
+ ICRefillVerifier();
+ ~ICRefillVerifier();
+
+ void request_refill() { _refill_requested = true; }
+ void request_remembered() { _refill_remembered = true; }
+};
+
+// The ICRefillVerifierMark is used to set the thread's current
+// ICRefillVerifier to a provided one. This is useful in particular
+// when transitioning IC stubs in parallel and refilling from the
+// master thread invoking the IC stub transitioning code.
+class ICRefillVerifierMark: StackObj {
+ public:
+ ICRefillVerifierMark(ICRefillVerifier* verifier);
+ ~ICRefillVerifierMark();
+};
+#else
+class ICRefillVerifier: StackObj {
+ public:
+ ICRefillVerifier() {}
+};
+class ICRefillVerifierMark: StackObj {
+ public:
+ ICRefillVerifierMark(ICRefillVerifier* verifier) {}
+};
+#endif
+
class InlineCacheBuffer: public AllStatic {
private:
// friends
@@ -105,8 +144,6 @@
static CompiledICHolder* _pending_released;
static int _pending_count;
- DEBUG_ONLY(static volatile int _needs_refill;)
-
static StubQueue* buffer() { return _buffer; }
static ICStub* new_ic_stub();
--- a/src/hotspot/share/compiler/compilerDefinitions.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/compiler/compilerDefinitions.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
+#include "code/codeCache.hpp"
#include "runtime/globals.hpp"
#include "runtime/globals_extension.hpp"
#include "compiler/compilerDefinitions.hpp"
@@ -200,8 +201,10 @@
FLAG_SET_ERGO(uintx, ReservedCodeCacheSize,
MIN2(CODE_CACHE_DEFAULT_LIMIT, (size_t)ReservedCodeCacheSize * 5));
}
- // Enable SegmentedCodeCache if TieredCompilation is enabled and ReservedCodeCacheSize >= 240M
- if (FLAG_IS_DEFAULT(SegmentedCodeCache) && ReservedCodeCacheSize >= 240*M) {
+ // Enable SegmentedCodeCache if TieredCompilation is enabled, ReservedCodeCacheSize >= 240M
+ // and the code cache contains at least 8 pages (segmentation disables advantage of huge pages).
+ if (FLAG_IS_DEFAULT(SegmentedCodeCache) && ReservedCodeCacheSize >= 240*M &&
+ 8 * CodeCache::page_size() <= ReservedCodeCacheSize) {
FLAG_SET_ERGO(bool, SegmentedCodeCache, true);
}
if (!UseInterpreter) { // -Xcomp
--- a/src/hotspot/share/compiler/compilerDirectives.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/compiler/compilerDirectives.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -398,13 +398,14 @@
size_t length = strlen(DisableIntrinsicOption);
char* local_list = NEW_RESOURCE_ARRAY(char, length + 1);
strncpy(local_list, DisableIntrinsicOption, length + 1);
+ char* save_ptr;
- char* token = strtok(local_list, ",");
+ char* token = strtok_r(local_list, ",", &save_ptr);
while (token != NULL) {
if (strcmp(token, vmIntrinsics::name_at(id)) == 0) {
return true;
} else {
- token = strtok(NULL, ",");
+ token = strtok_r(NULL, ",", &save_ptr);
}
}
--- a/src/hotspot/share/gc/cms/cmsCollectorPolicy.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/cmsCollectorPolicy.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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
@@ -30,9 +30,9 @@
#include "gc/shared/collectorPolicy.hpp"
#include "gc/shared/gcLocker.hpp"
#include "gc/shared/gcPolicyCounters.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/generationSpec.hpp"
#include "gc/shared/space.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "memory/universe.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/arguments.hpp"
--- a/src/hotspot/share/gc/cms/cmsHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/cmsHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -24,12 +24,12 @@
#include "precompiled.hpp"
#include "gc/cms/cmsCardTable.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
#include "gc/cms/compactibleFreeListSpace.hpp"
#include "gc/cms/concurrentMarkSweepGeneration.hpp"
#include "gc/cms/concurrentMarkSweepThread.hpp"
#include "gc/cms/cmsHeap.hpp"
#include "gc/cms/parNewGeneration.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
#include "gc/shared/genCollectedHeap.hpp"
#include "gc/shared/genMemoryPools.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/cmsVMOperations.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/cms/cmsHeap.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
+#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc/cms/concurrentMarkSweepThread.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+#include "runtime/os.hpp"
+#include "utilities/dtrace.hpp"
+
+//////////////////////////////////////////////////////////
+// Methods in abstract class VM_CMS_Operation
+//////////////////////////////////////////////////////////
+void VM_CMS_Operation::verify_before_gc() {
+ if (VerifyBeforeGC &&
+ CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
+ GCTraceTime(Info, gc, phases, verify) tm("Verify Before", _collector->_gc_timer_cm);
+ HandleMark hm;
+ FreelistLocker x(_collector);
+ MutexLockerEx y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
+ CMSHeap::heap()->prepare_for_verify();
+ Universe::verify();
+ }
+}
+
+void VM_CMS_Operation::verify_after_gc() {
+ if (VerifyAfterGC &&
+ CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
+ GCTraceTime(Info, gc, phases, verify) tm("Verify After", _collector->_gc_timer_cm);
+ HandleMark hm;
+ FreelistLocker x(_collector);
+ MutexLockerEx y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
+ Universe::verify();
+ }
+}
+
+bool VM_CMS_Operation::lost_race() const {
+ if (CMSCollector::abstract_state() == CMSCollector::Idling) {
+ // We lost a race to a foreground collection
+ // -- there's nothing to do
+ return true;
+ }
+ assert(CMSCollector::abstract_state() == legal_state(),
+ "Inconsistent collector state?");
+ return false;
+}
+
+bool VM_CMS_Operation::doit_prologue() {
+ assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
+ assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
+ assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
+ "Possible deadlock");
+
+ Heap_lock->lock();
+ if (lost_race()) {
+ assert(_prologue_succeeded == false, "Initialized in c'tor");
+ Heap_lock->unlock();
+ } else {
+ _prologue_succeeded = true;
+ }
+ return _prologue_succeeded;
+}
+
+void VM_CMS_Operation::doit_epilogue() {
+ assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
+ assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
+ assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
+ "Possible deadlock");
+
+ if (Universe::has_reference_pending_list()) {
+ Heap_lock->notify_all();
+ }
+ Heap_lock->unlock();
+}
+
+//////////////////////////////////////////////////////////
+// Methods in class VM_CMS_Initial_Mark
+//////////////////////////////////////////////////////////
+void VM_CMS_Initial_Mark::doit() {
+ if (lost_race()) {
+ // Nothing to do.
+ return;
+ }
+ HS_PRIVATE_CMS_INITMARK_BEGIN();
+ GCIdMark gc_id_mark(_gc_id);
+
+ _collector->_gc_timer_cm->register_gc_pause_start("Initial Mark");
+
+ CMSHeap* heap = CMSHeap::heap();
+ GCCauseSetter gccs(heap, GCCause::_cms_initial_mark);
+
+ VM_CMS_Operation::verify_before_gc();
+
+ IsGCActiveMark x; // stop-world GC active
+ _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsInitial, heap->gc_cause());
+
+ VM_CMS_Operation::verify_after_gc();
+
+ _collector->_gc_timer_cm->register_gc_pause_end();
+
+ HS_PRIVATE_CMS_INITMARK_END();
+}
+
+//////////////////////////////////////////////////////////
+// Methods in class VM_CMS_Final_Remark_Operation
+//////////////////////////////////////////////////////////
+void VM_CMS_Final_Remark::doit() {
+ if (lost_race()) {
+ // Nothing to do.
+ return;
+ }
+ HS_PRIVATE_CMS_REMARK_BEGIN();
+ GCIdMark gc_id_mark(_gc_id);
+
+ _collector->_gc_timer_cm->register_gc_pause_start("Final Mark");
+
+ CMSHeap* heap = CMSHeap::heap();
+ GCCauseSetter gccs(heap, GCCause::_cms_final_remark);
+
+ VM_CMS_Operation::verify_before_gc();
+
+ IsGCActiveMark x; // stop-world GC active
+ _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, heap->gc_cause());
+
+ VM_CMS_Operation::verify_after_gc();
+
+ _collector->save_heap_summary();
+ _collector->_gc_timer_cm->register_gc_pause_end();
+
+ HS_PRIVATE_CMS_REMARK_END();
+}
+
+// VM operation to invoke a concurrent collection of a
+// GenCollectedHeap heap.
+void VM_GenCollectFullConcurrent::doit() {
+ assert(Thread::current()->is_VM_thread(), "Should be VM thread");
+ assert(GCLockerInvokesConcurrent || ExplicitGCInvokesConcurrent, "Unexpected");
+
+ CMSHeap* heap = CMSHeap::heap();
+ if (_gc_count_before == heap->total_collections()) {
+ // The "full" of do_full_collection call below "forces"
+ // a collection; the second arg, 0, below ensures that
+ // only the young gen is collected. XXX In the future,
+ // we'll probably need to have something in this interface
+ // to say do this only if we are sure we will not bail
+ // out to a full collection in this attempt, but that's
+ // for the future.
+ assert(SafepointSynchronize::is_at_safepoint(),
+ "We can only be executing this arm of if at a safepoint");
+ GCCauseSetter gccs(heap, _gc_cause);
+ heap->do_full_collection(heap->must_clear_all_soft_refs(), GenCollectedHeap::YoungGen);
+ } // Else no need for a foreground young gc
+ assert((_gc_count_before < heap->total_collections()) ||
+ (GCLocker::is_active() /* gc may have been skipped */
+ && (_gc_count_before == heap->total_collections())),
+ "total_collections() should be monotonically increasing");
+
+ MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+ assert(_full_gc_count_before <= heap->total_full_collections(), "Error");
+ if (heap->total_full_collections() == _full_gc_count_before) {
+ // Nudge the CMS thread to start a concurrent collection.
+ CMSCollector::request_full_gc(_full_gc_count_before, _gc_cause);
+ } else {
+ assert(_full_gc_count_before < heap->total_full_collections(), "Error");
+ FullGCCount_lock->notify_all(); // Inform the Java thread its work is done
+ }
+}
+
+bool VM_GenCollectFullConcurrent::evaluate_at_safepoint() const {
+ Thread* thr = Thread::current();
+ assert(thr != NULL, "Unexpected tid");
+ if (!thr->is_Java_thread()) {
+ assert(thr->is_VM_thread(), "Expected to be evaluated by VM thread");
+ CMSHeap* heap = CMSHeap::heap();
+ if (_gc_count_before != heap->total_collections()) {
+ // No need to do a young gc, we'll just nudge the CMS thread
+ // in the doit() method above, to be executed soon.
+ assert(_gc_count_before < heap->total_collections(),
+ "total_collections() should be monotonically increasing");
+ return false; // no need for foreground young gc
+ }
+ }
+ return true; // may still need foreground young gc
+}
+
+
+void VM_GenCollectFullConcurrent::doit_epilogue() {
+ Thread* thr = Thread::current();
+ assert(thr->is_Java_thread(), "just checking");
+ JavaThread* jt = (JavaThread*)thr;
+
+ if (Universe::has_reference_pending_list()) {
+ Heap_lock->notify_all();
+ }
+ Heap_lock->unlock();
+
+ // It is fine to test whether completed collections has
+ // exceeded our request count without locking because
+ // the completion count is monotonically increasing;
+ // this will break for very long-running apps when the
+ // count overflows and wraps around. XXX fix me !!!
+ // e.g. at the rate of 1 full gc per ms, this could
+ // overflow in about 1000 years.
+ CMSHeap* heap = CMSHeap::heap();
+ if (_gc_cause != GCCause::_gc_locker &&
+ heap->total_full_collections_completed() <= _full_gc_count_before) {
+ // maybe we should change the condition to test _gc_cause ==
+ // GCCause::_java_lang_system_gc or GCCause::_dcmd_gc_run,
+ // instead of _gc_cause != GCCause::_gc_locker
+ assert(GCCause::is_user_requested_gc(_gc_cause),
+ "the only way to get here if this was a System.gc()-induced GC");
+ assert(ExplicitGCInvokesConcurrent, "Error");
+ // Now, wait for witnessing concurrent gc cycle to complete,
+ // but do so in native mode, because we want to lock the
+ // FullGCEvent_lock, which may be needed by the VM thread
+ // or by the CMS thread, so we do not want to be suspended
+ // while holding that lock.
+ ThreadToNativeFromVM native(jt);
+ MutexLockerEx ml(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+ // Either a concurrent or a stop-world full gc is sufficient
+ // witness to our request.
+ while (heap->total_full_collections_completed() <= _full_gc_count_before) {
+ FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/cmsVMOperations.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
+#define SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
+
+#include "gc/cms/concurrentMarkSweepGeneration.hpp"
+#include "gc/shared/gcCause.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+#include "runtime/vmOperations.hpp"
+
+// The VM_CMS_Operation is slightly different from
+// a VM_GC_Operation -- and would not have subclassed easily
+// to VM_GC_Operation without several changes to VM_GC_Operation.
+// To minimize the changes, we have replicated some of the VM_GC_Operation
+// functionality here. We will consolidate that back by doing subclassing
+// as appropriate in Dolphin.
+//
+// VM_Operation
+// VM_CMS_Operation
+// - implements the common portion of work done in support
+// of CMS' stop-world phases (initial mark and remark).
+//
+// VM_CMS_Initial_Mark
+// VM_CMS_Final_Mark
+//
+
+// Forward decl.
+class CMSCollector;
+
+class VM_CMS_Operation: public VM_Operation {
+ protected:
+ CMSCollector* _collector; // associated collector
+ bool _prologue_succeeded; // whether doit_prologue succeeded
+ uint _gc_id;
+
+ bool lost_race() const;
+
+ public:
+ VM_CMS_Operation(CMSCollector* collector):
+ _collector(collector),
+ _prologue_succeeded(false),
+ _gc_id(GCId::current()) {}
+ ~VM_CMS_Operation() {}
+
+ // The legal collector state for executing this CMS op.
+ virtual const CMSCollector::CollectorState legal_state() const = 0;
+
+ // Whether the pending list lock needs to be held
+ virtual const bool needs_pending_list_lock() const = 0;
+
+ // Execute operations in the context of the caller,
+ // prior to execution of the vm operation itself.
+ virtual bool doit_prologue();
+ // Execute operations in the context of the caller,
+ // following completion of the vm operation.
+ virtual void doit_epilogue();
+
+ virtual bool evaluate_at_safepoint() const { return true; }
+ virtual bool is_cheap_allocated() const { return false; }
+ virtual bool allow_nested_vm_operations() const { return false; }
+ bool prologue_succeeded() const { return _prologue_succeeded; }
+
+ void verify_before_gc();
+ void verify_after_gc();
+};
+
+
+// VM_CMS_Operation for the initial marking phase of CMS.
+class VM_CMS_Initial_Mark: public VM_CMS_Operation {
+ public:
+ VM_CMS_Initial_Mark(CMSCollector* _collector) :
+ VM_CMS_Operation(_collector) {}
+
+ virtual VMOp_Type type() const { return VMOp_CMS_Initial_Mark; }
+ virtual void doit();
+
+ virtual const CMSCollector::CollectorState legal_state() const {
+ return CMSCollector::InitialMarking;
+ }
+
+ virtual const bool needs_pending_list_lock() const {
+ return false;
+ }
+};
+
+// VM_CMS_Operation for the final remark phase of CMS.
+class VM_CMS_Final_Remark: public VM_CMS_Operation {
+ public:
+ VM_CMS_Final_Remark(CMSCollector* _collector) :
+ VM_CMS_Operation(_collector) {}
+ virtual VMOp_Type type() const { return VMOp_CMS_Final_Remark; }
+ virtual void doit();
+
+ virtual const CMSCollector::CollectorState legal_state() const {
+ return CMSCollector::FinalMarking;
+ }
+
+ virtual const bool needs_pending_list_lock() const {
+ return true;
+ }
+};
+
+
+// VM operation to invoke a concurrent collection of the heap as a
+// GenCollectedHeap heap.
+class VM_GenCollectFullConcurrent: public VM_GC_Operation {
+ public:
+ VM_GenCollectFullConcurrent(uint gc_count_before,
+ uint full_gc_count_before,
+ GCCause::Cause gc_cause)
+ : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */)
+ {
+ assert(FullGCCount_lock != NULL, "Error");
+ }
+ ~VM_GenCollectFullConcurrent() {}
+ virtual VMOp_Type type() const { return VMOp_GenCollectFullConcurrent; }
+ virtual void doit();
+ virtual void doit_epilogue();
+ virtual bool is_cheap_allocated() const { return false; }
+ virtual bool evaluate_at_safepoint() const;
+};
+
+#endif // SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,12 +32,12 @@
#include "gc/cms/cmsGCStats.hpp"
#include "gc/cms/cmsHeap.hpp"
#include "gc/cms/cmsOopClosures.inline.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
#include "gc/cms/compactibleFreeListSpace.hpp"
#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
#include "gc/cms/concurrentMarkSweepThread.hpp"
#include "gc/cms/parNewGeneration.hpp"
#include "gc/cms/promotionInfo.inline.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
#include "gc/serial/genMarkSweep.hpp"
#include "gc/serial/tenuredGeneration.hpp"
#include "gc/shared/adaptiveSizePolicy.hpp"
--- a/src/hotspot/share/gc/cms/vmCMSOperations.cpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/cms/cmsHeap.hpp"
-#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
-#include "gc/cms/concurrentMarkSweepThread.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "gc/shared/gcTimer.hpp"
-#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/os.hpp"
-#include "utilities/dtrace.hpp"
-
-//////////////////////////////////////////////////////////
-// Methods in abstract class VM_CMS_Operation
-//////////////////////////////////////////////////////////
-void VM_CMS_Operation::verify_before_gc() {
- if (VerifyBeforeGC &&
- CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
- GCTraceTime(Info, gc, phases, verify) tm("Verify Before", _collector->_gc_timer_cm);
- HandleMark hm;
- FreelistLocker x(_collector);
- MutexLockerEx y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
- CMSHeap::heap()->prepare_for_verify();
- Universe::verify();
- }
-}
-
-void VM_CMS_Operation::verify_after_gc() {
- if (VerifyAfterGC &&
- CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
- GCTraceTime(Info, gc, phases, verify) tm("Verify After", _collector->_gc_timer_cm);
- HandleMark hm;
- FreelistLocker x(_collector);
- MutexLockerEx y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
- Universe::verify();
- }
-}
-
-bool VM_CMS_Operation::lost_race() const {
- if (CMSCollector::abstract_state() == CMSCollector::Idling) {
- // We lost a race to a foreground collection
- // -- there's nothing to do
- return true;
- }
- assert(CMSCollector::abstract_state() == legal_state(),
- "Inconsistent collector state?");
- return false;
-}
-
-bool VM_CMS_Operation::doit_prologue() {
- assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
- assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
- assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
- "Possible deadlock");
-
- Heap_lock->lock();
- if (lost_race()) {
- assert(_prologue_succeeded == false, "Initialized in c'tor");
- Heap_lock->unlock();
- } else {
- _prologue_succeeded = true;
- }
- return _prologue_succeeded;
-}
-
-void VM_CMS_Operation::doit_epilogue() {
- assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
- assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
- assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
- "Possible deadlock");
-
- if (Universe::has_reference_pending_list()) {
- Heap_lock->notify_all();
- }
- Heap_lock->unlock();
-}
-
-//////////////////////////////////////////////////////////
-// Methods in class VM_CMS_Initial_Mark
-//////////////////////////////////////////////////////////
-void VM_CMS_Initial_Mark::doit() {
- if (lost_race()) {
- // Nothing to do.
- return;
- }
- HS_PRIVATE_CMS_INITMARK_BEGIN();
- GCIdMark gc_id_mark(_gc_id);
-
- _collector->_gc_timer_cm->register_gc_pause_start("Initial Mark");
-
- CMSHeap* heap = CMSHeap::heap();
- GCCauseSetter gccs(heap, GCCause::_cms_initial_mark);
-
- VM_CMS_Operation::verify_before_gc();
-
- IsGCActiveMark x; // stop-world GC active
- _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsInitial, heap->gc_cause());
-
- VM_CMS_Operation::verify_after_gc();
-
- _collector->_gc_timer_cm->register_gc_pause_end();
-
- HS_PRIVATE_CMS_INITMARK_END();
-}
-
-//////////////////////////////////////////////////////////
-// Methods in class VM_CMS_Final_Remark_Operation
-//////////////////////////////////////////////////////////
-void VM_CMS_Final_Remark::doit() {
- if (lost_race()) {
- // Nothing to do.
- return;
- }
- HS_PRIVATE_CMS_REMARK_BEGIN();
- GCIdMark gc_id_mark(_gc_id);
-
- _collector->_gc_timer_cm->register_gc_pause_start("Final Mark");
-
- CMSHeap* heap = CMSHeap::heap();
- GCCauseSetter gccs(heap, GCCause::_cms_final_remark);
-
- VM_CMS_Operation::verify_before_gc();
-
- IsGCActiveMark x; // stop-world GC active
- _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, heap->gc_cause());
-
- VM_CMS_Operation::verify_after_gc();
-
- _collector->save_heap_summary();
- _collector->_gc_timer_cm->register_gc_pause_end();
-
- HS_PRIVATE_CMS_REMARK_END();
-}
-
-// VM operation to invoke a concurrent collection of a
-// GenCollectedHeap heap.
-void VM_GenCollectFullConcurrent::doit() {
- assert(Thread::current()->is_VM_thread(), "Should be VM thread");
- assert(GCLockerInvokesConcurrent || ExplicitGCInvokesConcurrent, "Unexpected");
-
- CMSHeap* heap = CMSHeap::heap();
- if (_gc_count_before == heap->total_collections()) {
- // The "full" of do_full_collection call below "forces"
- // a collection; the second arg, 0, below ensures that
- // only the young gen is collected. XXX In the future,
- // we'll probably need to have something in this interface
- // to say do this only if we are sure we will not bail
- // out to a full collection in this attempt, but that's
- // for the future.
- assert(SafepointSynchronize::is_at_safepoint(),
- "We can only be executing this arm of if at a safepoint");
- GCCauseSetter gccs(heap, _gc_cause);
- heap->do_full_collection(heap->must_clear_all_soft_refs(), GenCollectedHeap::YoungGen);
- } // Else no need for a foreground young gc
- assert((_gc_count_before < heap->total_collections()) ||
- (GCLocker::is_active() /* gc may have been skipped */
- && (_gc_count_before == heap->total_collections())),
- "total_collections() should be monotonically increasing");
-
- MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
- assert(_full_gc_count_before <= heap->total_full_collections(), "Error");
- if (heap->total_full_collections() == _full_gc_count_before) {
- // Nudge the CMS thread to start a concurrent collection.
- CMSCollector::request_full_gc(_full_gc_count_before, _gc_cause);
- } else {
- assert(_full_gc_count_before < heap->total_full_collections(), "Error");
- FullGCCount_lock->notify_all(); // Inform the Java thread its work is done
- }
-}
-
-bool VM_GenCollectFullConcurrent::evaluate_at_safepoint() const {
- Thread* thr = Thread::current();
- assert(thr != NULL, "Unexpected tid");
- if (!thr->is_Java_thread()) {
- assert(thr->is_VM_thread(), "Expected to be evaluated by VM thread");
- CMSHeap* heap = CMSHeap::heap();
- if (_gc_count_before != heap->total_collections()) {
- // No need to do a young gc, we'll just nudge the CMS thread
- // in the doit() method above, to be executed soon.
- assert(_gc_count_before < heap->total_collections(),
- "total_collections() should be monotonically increasing");
- return false; // no need for foreground young gc
- }
- }
- return true; // may still need foreground young gc
-}
-
-
-void VM_GenCollectFullConcurrent::doit_epilogue() {
- Thread* thr = Thread::current();
- assert(thr->is_Java_thread(), "just checking");
- JavaThread* jt = (JavaThread*)thr;
-
- if (Universe::has_reference_pending_list()) {
- Heap_lock->notify_all();
- }
- Heap_lock->unlock();
-
- // It is fine to test whether completed collections has
- // exceeded our request count without locking because
- // the completion count is monotonically increasing;
- // this will break for very long-running apps when the
- // count overflows and wraps around. XXX fix me !!!
- // e.g. at the rate of 1 full gc per ms, this could
- // overflow in about 1000 years.
- CMSHeap* heap = CMSHeap::heap();
- if (_gc_cause != GCCause::_gc_locker &&
- heap->total_full_collections_completed() <= _full_gc_count_before) {
- // maybe we should change the condition to test _gc_cause ==
- // GCCause::_java_lang_system_gc or GCCause::_dcmd_gc_run,
- // instead of _gc_cause != GCCause::_gc_locker
- assert(GCCause::is_user_requested_gc(_gc_cause),
- "the only way to get here if this was a System.gc()-induced GC");
- assert(ExplicitGCInvokesConcurrent, "Error");
- // Now, wait for witnessing concurrent gc cycle to complete,
- // but do so in native mode, because we want to lock the
- // FullGCEvent_lock, which may be needed by the VM thread
- // or by the CMS thread, so we do not want to be suspended
- // while holding that lock.
- ThreadToNativeFromVM native(jt);
- MutexLockerEx ml(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
- // Either a concurrent or a stop-world full gc is sufficient
- // witness to our request.
- while (heap->total_full_collections_completed() <= _full_gc_count_before) {
- FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
- }
- }
-}
--- a/src/hotspot/share/gc/cms/vmCMSOperations.hpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
-#define SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
-
-#include "gc/cms/concurrentMarkSweepGeneration.hpp"
-#include "gc/shared/gcCause.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-#include "runtime/vm_operations.hpp"
-
-// The VM_CMS_Operation is slightly different from
-// a VM_GC_Operation -- and would not have subclassed easily
-// to VM_GC_Operation without several changes to VM_GC_Operation.
-// To minimize the changes, we have replicated some of the VM_GC_Operation
-// functionality here. We will consolidate that back by doing subclassing
-// as appropriate in Dolphin.
-//
-// VM_Operation
-// VM_CMS_Operation
-// - implements the common portion of work done in support
-// of CMS' stop-world phases (initial mark and remark).
-//
-// VM_CMS_Initial_Mark
-// VM_CMS_Final_Mark
-//
-
-// Forward decl.
-class CMSCollector;
-
-class VM_CMS_Operation: public VM_Operation {
- protected:
- CMSCollector* _collector; // associated collector
- bool _prologue_succeeded; // whether doit_prologue succeeded
- uint _gc_id;
-
- bool lost_race() const;
-
- public:
- VM_CMS_Operation(CMSCollector* collector):
- _collector(collector),
- _prologue_succeeded(false),
- _gc_id(GCId::current()) {}
- ~VM_CMS_Operation() {}
-
- // The legal collector state for executing this CMS op.
- virtual const CMSCollector::CollectorState legal_state() const = 0;
-
- // Whether the pending list lock needs to be held
- virtual const bool needs_pending_list_lock() const = 0;
-
- // Execute operations in the context of the caller,
- // prior to execution of the vm operation itself.
- virtual bool doit_prologue();
- // Execute operations in the context of the caller,
- // following completion of the vm operation.
- virtual void doit_epilogue();
-
- virtual bool evaluate_at_safepoint() const { return true; }
- virtual bool is_cheap_allocated() const { return false; }
- virtual bool allow_nested_vm_operations() const { return false; }
- bool prologue_succeeded() const { return _prologue_succeeded; }
-
- void verify_before_gc();
- void verify_after_gc();
-};
-
-
-// VM_CMS_Operation for the initial marking phase of CMS.
-class VM_CMS_Initial_Mark: public VM_CMS_Operation {
- public:
- VM_CMS_Initial_Mark(CMSCollector* _collector) :
- VM_CMS_Operation(_collector) {}
-
- virtual VMOp_Type type() const { return VMOp_CMS_Initial_Mark; }
- virtual void doit();
-
- virtual const CMSCollector::CollectorState legal_state() const {
- return CMSCollector::InitialMarking;
- }
-
- virtual const bool needs_pending_list_lock() const {
- return false;
- }
-};
-
-// VM_CMS_Operation for the final remark phase of CMS.
-class VM_CMS_Final_Remark: public VM_CMS_Operation {
- public:
- VM_CMS_Final_Remark(CMSCollector* _collector) :
- VM_CMS_Operation(_collector) {}
- virtual VMOp_Type type() const { return VMOp_CMS_Final_Remark; }
- virtual void doit();
-
- virtual const CMSCollector::CollectorState legal_state() const {
- return CMSCollector::FinalMarking;
- }
-
- virtual const bool needs_pending_list_lock() const {
- return true;
- }
-};
-
-
-// VM operation to invoke a concurrent collection of the heap as a
-// GenCollectedHeap heap.
-class VM_GenCollectFullConcurrent: public VM_GC_Operation {
- public:
- VM_GenCollectFullConcurrent(uint gc_count_before,
- uint full_gc_count_before,
- GCCause::Cause gc_cause)
- : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */)
- {
- assert(FullGCCount_lock != NULL, "Error");
- }
- ~VM_GenCollectFullConcurrent() {}
- virtual VMOp_Type type() const { return VMOp_GenCollectFullConcurrent; }
- virtual void doit();
- virtual void doit_epilogue();
- virtual bool is_cheap_allocated() const { return false; }
- virtual bool evaluate_at_safepoint() const;
-};
-
-#endif // SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
--- a/src/hotspot/share/gc/g1/g1Allocator.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Allocator.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -84,8 +84,6 @@
// we allocate to in the region sets. We'll re-add it later, when
// it's retired again.
_g1h->old_set_remove(retained_region);
- bool during_im = _g1h->collector_state()->in_initial_mark_gc();
- retained_region->note_start_of_copying(during_im);
old->set(retained_region);
_g1h->hr_printer()->reuse(retained_region);
evacuation_info.set_alloc_regions_used_before(retained_region->used());
--- a/src/hotspot/share/gc/g1/g1Arguments.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Arguments.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -44,10 +44,12 @@
size_t length = strlen(VerifyGCType);
char* type_list = NEW_C_HEAP_ARRAY(char, length + 1, mtInternal);
strncpy(type_list, VerifyGCType, length + 1);
- char* token = strtok(type_list, delimiter);
+ char* save_ptr;
+
+ char* token = strtok_r(type_list, delimiter, &save_ptr);
while (token != NULL) {
parse_verification_type(token);
- token = strtok(NULL, delimiter);
+ token = strtok_r(NULL, delimiter, &save_ptr);
}
FREE_C_HEAP_ARRAY(char, type_list);
}
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -57,10 +57,10 @@
#include "gc/g1/g1ThreadLocalData.hpp"
#include "gc/g1/g1YCTypes.hpp"
#include "gc/g1/g1YoungRemSetSamplingThread.hpp"
+#include "gc/g1/g1VMOperations.hpp"
#include "gc/g1/heapRegion.inline.hpp"
#include "gc/g1/heapRegionRemSet.hpp"
#include "gc/g1/heapRegionSet.inline.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
#include "gc/shared/adaptiveSizePolicy.hpp"
#include "gc/shared/gcBehaviours.hpp"
#include "gc/shared/gcHeapSummary.hpp"
@@ -3002,11 +3002,15 @@
// Initialize the GC alloc regions.
_allocator->init_gc_alloc_regions(evacuation_info);
- G1ParScanThreadStateSet per_thread_states(this, workers()->active_workers(), collection_set()->young_region_length());
+ G1ParScanThreadStateSet per_thread_states(this,
+ workers()->active_workers(),
+ collection_set()->young_region_length(),
+ collection_set()->optional_region_length());
pre_evacuate_collection_set();
// Actually do the work...
evacuate_collection_set(&per_thread_states);
+ evacuate_optional_collection_set(&per_thread_states);
post_evacuate_collection_set(evacuation_info, &per_thread_states);
@@ -3197,11 +3201,11 @@
EventGCPhaseParallel event;
G1ParScanThreadState* const pss = par_scan_state();
pss->trim_queue();
- event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy));
+ event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
do {
EventGCPhaseParallel event;
pss->steal_and_trim_queue(queues());
- event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy));
+ event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
} while (!offer_termination());
}
@@ -3256,7 +3260,7 @@
size_t evac_term_attempts = 0;
{
double start = os::elapsedTime();
- G1ParEvacuateFollowersClosure evac(_g1h, pss, _queues, &_terminator);
+ G1ParEvacuateFollowersClosure evac(_g1h, pss, _queues, &_terminator, G1GCPhaseTimes::ObjCopy);
evac.do_void();
evac_term_attempts = evac.term_attempts();
@@ -3547,7 +3551,7 @@
G1CopyingKeepAliveClosure keep_alive(_g1h, pss);
// Complete GC closure
- G1ParEvacuateFollowersClosure drain_queue(_g1h, pss, _task_queues, _terminator);
+ G1ParEvacuateFollowersClosure drain_queue(_g1h, pss, _task_queues, _terminator, G1GCPhaseTimes::ObjCopy);
// Call the reference processing task's work routine.
_proc_task.work(worker_id, is_alive, keep_alive, drain_queue);
@@ -3719,6 +3723,145 @@
phase_times->record_code_root_fixup_time(code_root_fixup_time_ms);
}
+class G1EvacuateOptionalRegionTask : public AbstractGangTask {
+ G1CollectedHeap* _g1h;
+ G1ParScanThreadStateSet* _per_thread_states;
+ G1OptionalCSet* _optional;
+ RefToScanQueueSet* _queues;
+ ParallelTaskTerminator _terminator;
+
+ Tickspan trim_ticks(G1ParScanThreadState* pss) {
+ Tickspan copy_time = pss->trim_ticks();
+ pss->reset_trim_ticks();
+ return copy_time;
+ }
+
+ void scan_roots(G1ParScanThreadState* pss, uint worker_id) {
+ G1EvacuationRootClosures* root_cls = pss->closures();
+ G1ScanObjsDuringScanRSClosure obj_cl(_g1h, pss);
+
+ size_t scanned = 0;
+ size_t claimed = 0;
+ size_t skipped = 0;
+ size_t used_memory = 0;
+
+ Ticks start = Ticks::now();
+ Tickspan copy_time;
+
+ for (uint i = _optional->current_index(); i < _optional->current_limit(); i++) {
+ HeapRegion* hr = _optional->region_at(i);
+ G1ScanRSForOptionalClosure scan_opt_cl(&obj_cl);
+ pss->oops_into_optional_region(hr)->oops_do(&scan_opt_cl, root_cls->raw_strong_oops());
+ copy_time += trim_ticks(pss);
+
+ G1ScanRSForRegionClosure scan_rs_cl(_g1h->g1_rem_set()->scan_state(), &obj_cl, pss, G1GCPhaseTimes::OptScanRS, worker_id);
+ scan_rs_cl.do_heap_region(hr);
+ copy_time += trim_ticks(pss);
+ scanned += scan_rs_cl.cards_scanned();
+ claimed += scan_rs_cl.cards_claimed();
+ skipped += scan_rs_cl.cards_skipped();
+
+ // Chunk lists for this region is no longer needed.
+ used_memory += pss->oops_into_optional_region(hr)->used_memory();
+ }
+
+ Tickspan scan_time = (Ticks::now() - start) - copy_time;
+ G1GCPhaseTimes* p = _g1h->g1_policy()->phase_times();
+ p->record_or_add_time_secs(G1GCPhaseTimes::OptScanRS, worker_id, scan_time.seconds());
+ p->record_or_add_time_secs(G1GCPhaseTimes::OptObjCopy, worker_id, copy_time.seconds());
+
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, scanned, G1GCPhaseTimes::OptCSetScannedCards);
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, claimed, G1GCPhaseTimes::OptCSetClaimedCards);
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, skipped, G1GCPhaseTimes::OptCSetSkippedCards);
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, used_memory, G1GCPhaseTimes::OptCSetUsedMemory);
+ }
+
+ void evacuate_live_objects(G1ParScanThreadState* pss, uint worker_id) {
+ Ticks start = Ticks::now();
+ G1ParEvacuateFollowersClosure cl(_g1h, pss, _queues, &_terminator, G1GCPhaseTimes::OptObjCopy);
+ cl.do_void();
+
+ Tickspan evac_time = (Ticks::now() - start);
+ G1GCPhaseTimes* p = _g1h->g1_policy()->phase_times();
+ p->record_or_add_time_secs(G1GCPhaseTimes::OptObjCopy, worker_id, evac_time.seconds());
+ assert(pss->trim_ticks().seconds() == 0.0, "Unexpected partial trimming done during optional evacuation");
+ }
+
+ public:
+ G1EvacuateOptionalRegionTask(G1CollectedHeap* g1h,
+ G1ParScanThreadStateSet* per_thread_states,
+ G1OptionalCSet* cset,
+ RefToScanQueueSet* queues,
+ uint n_workers) :
+ AbstractGangTask("G1 Evacuation Optional Region Task"),
+ _g1h(g1h),
+ _per_thread_states(per_thread_states),
+ _optional(cset),
+ _queues(queues),
+ _terminator(n_workers, _queues) {
+ }
+
+ void work(uint worker_id) {
+ ResourceMark rm;
+ HandleMark hm;
+
+ G1ParScanThreadState* pss = _per_thread_states->state_for_worker(worker_id);
+ pss->set_ref_discoverer(_g1h->ref_processor_stw());
+
+ scan_roots(pss, worker_id);
+ evacuate_live_objects(pss, worker_id);
+ }
+};
+
+void G1CollectedHeap::evacuate_optional_regions(G1ParScanThreadStateSet* per_thread_states, G1OptionalCSet* ocset) {
+ class G1MarkScope : public MarkScope {};
+ G1MarkScope code_mark_scope;
+
+ G1EvacuateOptionalRegionTask task(this, per_thread_states, ocset, _task_queues, workers()->active_workers());
+ workers()->run_task(&task);
+}
+
+void G1CollectedHeap::evacuate_optional_collection_set(G1ParScanThreadStateSet* per_thread_states) {
+ G1OptionalCSet optional_cset(&_collection_set, per_thread_states);
+ if (optional_cset.is_empty()) {
+ return;
+ }
+
+ if (evacuation_failed()) {
+ return;
+ }
+
+ G1GCPhaseTimes* phase_times = g1_policy()->phase_times();
+ const double gc_start_time_ms = phase_times->cur_collection_start_sec() * 1000.0;
+
+ double start_time_sec = os::elapsedTime();
+
+ do {
+ double time_used_ms = os::elapsedTime() * 1000.0 - gc_start_time_ms;
+ double time_left_ms = MaxGCPauseMillis - time_used_ms;
+
+ if (time_left_ms < 0) {
+ log_trace(gc, ergo, cset)("Skipping %u optional regions, pause time exceeded %.3fms", optional_cset.size(), time_used_ms);
+ break;
+ }
+
+ optional_cset.prepare_evacuation(time_left_ms * _g1_policy->optional_evacuation_fraction());
+ if (optional_cset.prepare_failed()) {
+ log_trace(gc, ergo, cset)("Skipping %u optional regions, no regions can be evacuated in %.3fms", optional_cset.size(), time_left_ms);
+ break;
+ }
+
+ evacuate_optional_regions(per_thread_states, &optional_cset);
+
+ optional_cset.complete_evacuation();
+ if (optional_cset.evacuation_failed()) {
+ break;
+ }
+ } while (!optional_cset.is_empty());
+
+ phase_times->record_optional_evacuation((os::elapsedTime() - start_time_sec) * 1000.0);
+}
+
void G1CollectedHeap::post_evacuate_collection_set(EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* per_thread_states) {
// Also cleans the card table from temporary duplicate detection information used
// during UpdateRS/ScanRS.
@@ -4533,8 +4676,6 @@
}
_g1_policy->remset_tracker()->update_at_allocate(new_alloc_region);
_hr_printer.alloc(new_alloc_region);
- bool during_im = collector_state()->in_initial_mark_gc();
- new_alloc_region->note_start_of_copying(during_im);
return new_alloc_region;
}
return NULL;
@@ -4543,12 +4684,15 @@
void G1CollectedHeap::retire_gc_alloc_region(HeapRegion* alloc_region,
size_t allocated_bytes,
InCSetState dest) {
- bool during_im = collector_state()->in_initial_mark_gc();
- alloc_region->note_end_of_copying(during_im);
g1_policy()->record_bytes_copied_during_gc(allocated_bytes);
if (dest.is_old()) {
old_set_add(alloc_region);
}
+
+ bool const during_im = collector_state()->in_initial_mark_gc();
+ if (during_im && allocated_bytes > 0) {
+ _cm->root_regions()->add(alloc_region);
+ }
_hr_printer.retire(alloc_region);
}
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -35,6 +35,7 @@
#include "gc/g1/g1EdenRegions.hpp"
#include "gc/g1/g1EvacFailure.hpp"
#include "gc/g1/g1EvacStats.hpp"
+#include "gc/g1/g1GCPhaseTimes.hpp"
#include "gc/g1/g1HeapTransition.hpp"
#include "gc/g1/g1HeapVerifier.hpp"
#include "gc/g1/g1HRPrinter.hpp"
@@ -567,6 +568,9 @@
void register_old_region_with_cset(HeapRegion* r) {
_in_cset_fast_test.set_in_old(r->hrm_index());
}
+ void register_optional_region_with_cset(HeapRegion* r) {
+ _in_cset_fast_test.set_optional(r->hrm_index());
+ }
void clear_in_cset(const HeapRegion* hr) {
_in_cset_fast_test.clear(hr);
}
@@ -723,6 +727,8 @@
// Actually do the work of evacuating the collection set.
void evacuate_collection_set(G1ParScanThreadStateSet* per_thread_states);
+ void evacuate_optional_collection_set(G1ParScanThreadStateSet* per_thread_states);
+ void evacuate_optional_regions(G1ParScanThreadStateSet* per_thread_states, G1OptionalCSet* ocset);
void pre_evacuate_collection_set();
void post_evacuate_collection_set(EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* pss);
@@ -1405,6 +1411,7 @@
G1ParScanThreadState* _par_scan_state;
RefToScanQueueSet* _queues;
ParallelTaskTerminator* _terminator;
+ G1GCPhaseTimes::GCParPhases _phase;
G1ParScanThreadState* par_scan_state() { return _par_scan_state; }
RefToScanQueueSet* queues() { return _queues; }
@@ -1414,10 +1421,11 @@
G1ParEvacuateFollowersClosure(G1CollectedHeap* g1h,
G1ParScanThreadState* par_scan_state,
RefToScanQueueSet* queues,
- ParallelTaskTerminator* terminator)
+ ParallelTaskTerminator* terminator,
+ G1GCPhaseTimes::GCParPhases phase)
: _start_term(0.0), _term_time(0.0), _term_attempts(0),
_g1h(g1h), _par_scan_state(par_scan_state),
- _queues(queues), _terminator(terminator) {}
+ _queues(queues), _terminator(terminator), _phase(phase) {}
void do_void();
--- a/src/hotspot/share/gc/g1/g1CollectionSet.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectionSet.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,17 @@
*/
#include "precompiled.hpp"
-#include "gc/g1/g1CollectedHeap.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
#include "gc/g1/g1CollectionSet.hpp"
#include "gc/g1/g1CollectorState.hpp"
+#include "gc/g1/g1ParScanThreadState.hpp"
#include "gc/g1/g1Policy.hpp"
#include "gc/g1/heapRegion.inline.hpp"
#include "gc/g1/heapRegionRemSet.hpp"
#include "gc/g1/heapRegionSet.hpp"
#include "logging/logStream.hpp"
#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
#include "utilities/quickSort.hpp"
G1CollectorState* G1CollectionSet::collector_state() {
@@ -60,6 +62,9 @@
_collection_set_regions(NULL),
_collection_set_cur_length(0),
_collection_set_max_length(0),
+ _optional_regions(NULL),
+ _optional_region_length(0),
+ _optional_region_max_length(0),
_bytes_used_before(0),
_recorded_rs_lengths(0),
_inc_build_state(Inactive),
@@ -74,6 +79,7 @@
if (_collection_set_regions != NULL) {
FREE_C_HEAP_ARRAY(uint, _collection_set_regions);
}
+ free_optional_regions();
delete _cset_chooser;
}
@@ -88,6 +94,7 @@
"Young region length %u should match collection set length " SIZE_FORMAT, young_region_length(), _collection_set_cur_length);
_old_region_length = 0;
+ _optional_region_length = 0;
}
void G1CollectionSet::initialize(uint max_region_length) {
@@ -96,6 +103,23 @@
_collection_set_regions = NEW_C_HEAP_ARRAY(uint, max_region_length, mtGC);
}
+void G1CollectionSet::initialize_optional(uint max_length) {
+ assert(_optional_regions == NULL, "Already initialized");
+ assert(_optional_region_length == 0, "Already initialized");
+ assert(_optional_region_max_length == 0, "Already initialized");
+ _optional_region_max_length = max_length;
+ _optional_regions = NEW_C_HEAP_ARRAY(HeapRegion*, _optional_region_max_length, mtGC);
+}
+
+void G1CollectionSet::free_optional_regions() {
+ _optional_region_length = 0;
+ _optional_region_max_length = 0;
+ if (_optional_regions != NULL) {
+ FREE_C_HEAP_ARRAY(HeapRegion*, _optional_regions);
+ _optional_regions = NULL;
+ }
+}
+
void G1CollectionSet::set_recorded_rs_lengths(size_t rs_lengths) {
_recorded_rs_lengths = rs_lengths;
}
@@ -104,7 +128,8 @@
void G1CollectionSet::add_old_region(HeapRegion* hr) {
assert_at_safepoint_on_vm_thread();
- assert(_inc_build_state == Active, "Precondition");
+ assert(_inc_build_state == Active || hr->index_in_opt_cset() != G1OptionalCSet::InvalidCSetIndex,
+ "Precondition, actively building cset or adding optional later on");
assert(hr->is_old(), "the region should be old");
assert(!hr->in_collection_set(), "should not already be in the CSet");
@@ -117,6 +142,22 @@
size_t rs_length = hr->rem_set()->occupied();
_recorded_rs_lengths += rs_length;
_old_region_length += 1;
+
+ log_trace(gc, cset)("Added old region %d to collection set", hr->hrm_index());
+}
+
+void G1CollectionSet::add_optional_region(HeapRegion* hr) {
+ assert(!optional_is_full(), "Precondition, must have room left for this region");
+ assert(hr->is_old(), "the region should be old");
+ assert(!hr->in_collection_set(), "should not already be in the CSet");
+
+ _g1h->register_optional_region_with_cset(hr);
+
+ _optional_regions[_optional_region_length] = hr;
+ uint index = _optional_region_length++;
+ hr->set_index_in_opt_cset(index);
+
+ log_trace(gc, cset)("Added region %d to optional collection set (%u)", hr->hrm_index(), _optional_region_length);
}
// Initialize the per-collection-set information
@@ -168,6 +209,7 @@
void G1CollectionSet::clear() {
assert_at_safepoint_on_vm_thread();
_collection_set_cur_length = 0;
+ _optional_region_length = 0;
}
void G1CollectionSet::iterate(HeapRegionClosure* cl) const {
@@ -396,6 +438,30 @@
return time_remaining_ms;
}
+void G1CollectionSet::add_as_old(HeapRegion* hr) {
+ cset_chooser()->pop(); // already have region via peek()
+ _g1h->old_set_remove(hr);
+ add_old_region(hr);
+}
+
+void G1CollectionSet::add_as_optional(HeapRegion* hr) {
+ assert(_optional_regions != NULL, "Must not be called before array is allocated");
+ cset_chooser()->pop(); // already have region via peek()
+ _g1h->old_set_remove(hr);
+ add_optional_region(hr);
+}
+
+bool G1CollectionSet::optional_is_full() {
+ assert(_optional_region_length <= _optional_region_max_length, "Invariant");
+ return _optional_region_length == _optional_region_max_length;
+}
+
+void G1CollectionSet::clear_optional_region(const HeapRegion* hr) {
+ assert(_optional_regions != NULL, "Must not be called before array is allocated");
+ uint index = hr->index_in_opt_cset();
+ _optional_regions[index] = NULL;
+}
+
static int compare_region_idx(const uint a, const uint b) {
if (a > b) {
return 1;
@@ -409,21 +475,28 @@
void G1CollectionSet::finalize_old_part(double time_remaining_ms) {
double non_young_start_time_sec = os::elapsedTime();
double predicted_old_time_ms = 0.0;
+ double predicted_optional_time_ms = 0.0;
+ double optional_threshold_ms = time_remaining_ms * _policy->optional_prediction_fraction();
+ uint expensive_region_num = 0;
if (collector_state()->in_mixed_phase()) {
cset_chooser()->verify();
const uint min_old_cset_length = _policy->calc_min_old_cset_length();
- const uint max_old_cset_length = _policy->calc_max_old_cset_length();
+ const uint max_old_cset_length = MAX2(min_old_cset_length, _policy->calc_max_old_cset_length());
+ bool check_time_remaining = _policy->adaptive_young_list_length();
- uint expensive_region_num = 0;
- bool check_time_remaining = _policy->adaptive_young_list_length();
+ initialize_optional(max_old_cset_length - min_old_cset_length);
+ log_debug(gc, ergo, cset)("Start adding old regions for mixed gc. min %u regions, max %u regions, "
+ "time remaining %1.2fms, optional threshold %1.2fms",
+ min_old_cset_length, max_old_cset_length, time_remaining_ms, optional_threshold_ms);
HeapRegion* hr = cset_chooser()->peek();
while (hr != NULL) {
- if (old_region_length() >= max_old_cset_length) {
+ if (old_region_length() + optional_region_length() >= max_old_cset_length) {
// Added maximum number of old regions to the CSet.
- log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached max). old %u regions, max %u regions",
- old_region_length(), max_old_cset_length);
+ log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached max). "
+ "old %u regions, optional %u regions",
+ old_region_length(), optional_region_length());
break;
}
@@ -437,69 +510,66 @@
// reclaimable space is at or below the waste threshold. Stop
// adding old regions to the CSet.
log_debug(gc, ergo, cset)("Finish adding old regions to CSet (reclaimable percentage not over threshold). "
- "old %u regions, max %u regions, reclaimable: " SIZE_FORMAT "B (%1.2f%%) threshold: " UINTX_FORMAT "%%",
- old_region_length(), max_old_cset_length, reclaimable_bytes, reclaimable_percent, G1HeapWastePercent);
+ "reclaimable: " SIZE_FORMAT "%s (%1.2f%%) threshold: " UINTX_FORMAT "%%",
+ byte_size_in_proper_unit(reclaimable_bytes), proper_unit_for_byte_size(reclaimable_bytes),
+ reclaimable_percent, G1HeapWastePercent);
break;
}
double predicted_time_ms = predict_region_elapsed_time_ms(hr);
- if (check_time_remaining) {
- if (predicted_time_ms > time_remaining_ms) {
- // Too expensive for the current CSet.
-
- if (old_region_length() >= min_old_cset_length) {
- // We have added the minimum number of old regions to the CSet,
- // we are done with this CSet.
- log_debug(gc, ergo, cset)("Finish adding old regions to CSet (predicted time is too high). "
- "predicted time: %1.2fms, remaining time: %1.2fms old %u regions, min %u regions",
- predicted_time_ms, time_remaining_ms, old_region_length(), min_old_cset_length);
+ time_remaining_ms = MAX2(time_remaining_ms - predicted_time_ms, 0.0);
+ // Add regions to old set until we reach minimum amount
+ if (old_region_length() < min_old_cset_length) {
+ predicted_old_time_ms += predicted_time_ms;
+ add_as_old(hr);
+ // Record the number of regions added when no time remaining
+ if (time_remaining_ms == 0.0) {
+ expensive_region_num++;
+ }
+ } else {
+ // In the non-auto-tuning case, we'll finish adding regions
+ // to the CSet if we reach the minimum.
+ if (!check_time_remaining) {
+ log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached min).");
+ break;
+ }
+ // Keep adding regions to old set until we reach optional threshold
+ if (time_remaining_ms > optional_threshold_ms) {
+ predicted_old_time_ms += predicted_time_ms;
+ add_as_old(hr);
+ } else if (time_remaining_ms > 0) {
+ // Keep adding optional regions until time is up
+ if (!optional_is_full()) {
+ predicted_optional_time_ms += predicted_time_ms;
+ add_as_optional(hr);
+ } else {
+ log_debug(gc, ergo, cset)("Finish adding old regions to CSet (optional set full).");
break;
}
-
- // We'll add it anyway given that we haven't reached the
- // minimum number of old regions.
- expensive_region_num += 1;
- }
- } else {
- if (old_region_length() >= min_old_cset_length) {
- // In the non-auto-tuning case, we'll finish adding regions
- // to the CSet if we reach the minimum.
-
- log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached min). old %u regions, min %u regions",
- old_region_length(), min_old_cset_length);
+ } else {
+ log_debug(gc, ergo, cset)("Finish adding old regions to CSet (predicted time is too high).");
break;
}
}
-
- // We will add this region to the CSet.
- time_remaining_ms = MAX2(time_remaining_ms - predicted_time_ms, 0.0);
- predicted_old_time_ms += predicted_time_ms;
- cset_chooser()->pop(); // already have region via peek()
- _g1h->old_set_remove(hr);
- add_old_region(hr);
-
hr = cset_chooser()->peek();
}
if (hr == NULL) {
log_debug(gc, ergo, cset)("Finish adding old regions to CSet (candidate old regions not available)");
}
- if (expensive_region_num > 0) {
- // We print the information once here at the end, predicated on
- // whether we added any apparently expensive regions or not, to
- // avoid generating output per region.
- log_debug(gc, ergo, cset)("Added expensive regions to CSet (old CSet region num not reached min)."
- "old: %u regions, expensive: %u regions, min: %u regions, remaining time: %1.2fms",
- old_region_length(), expensive_region_num, min_old_cset_length, time_remaining_ms);
- }
-
cset_chooser()->verify();
}
stop_incremental_building();
- log_debug(gc, ergo, cset)("Finish choosing CSet. old: %u regions, predicted old region time: %1.2fms, time remaining: %1.2f",
- old_region_length(), predicted_old_time_ms, time_remaining_ms);
+ log_debug(gc, ergo, cset)("Finish choosing CSet regions old: %u, optional: %u, "
+ "predicted old time: %1.2fms, predicted optional time: %1.2fms, time remaining: %1.2f",
+ old_region_length(), optional_region_length(),
+ predicted_old_time_ms, predicted_optional_time_ms, time_remaining_ms);
+ if (expensive_region_num > 0) {
+ log_debug(gc, ergo, cset)("CSet contains %u old regions that were added although the predicted time was too high.",
+ expensive_region_num);
+ }
double non_young_end_time_sec = os::elapsedTime();
phase_times()->record_non_young_cset_choice_time_ms((non_young_end_time_sec - non_young_start_time_sec) * 1000.0);
@@ -507,6 +577,86 @@
QuickSort::sort(_collection_set_regions, _collection_set_cur_length, compare_region_idx, true);
}
+HeapRegion* G1OptionalCSet::region_at(uint index) {
+ return _cset->optional_region_at(index);
+}
+
+void G1OptionalCSet::prepare_evacuation(double time_limit) {
+ assert(_current_index == _current_limit, "Before prepare no regions should be ready for evac");
+
+ uint prepared_regions = 0;
+ double prediction_ms = 0;
+
+ _prepare_failed = true;
+ for (uint i = _current_index; i < _cset->optional_region_length(); i++) {
+ HeapRegion* hr = region_at(i);
+ prediction_ms += _cset->predict_region_elapsed_time_ms(hr);
+ if (prediction_ms > time_limit) {
+ log_debug(gc, cset)("Prepared %u regions for optional evacuation. Predicted time: %.3fms", prepared_regions, prediction_ms);
+ return;
+ }
+
+ // This region will be included in the next optional evacuation.
+ prepare_to_evacuate_optional_region(hr);
+ prepared_regions++;
+ _current_limit++;
+ _prepare_failed = false;
+ }
+
+ log_debug(gc, cset)("Prepared all %u regions for optional evacuation. Predicted time: %.3fms",
+ prepared_regions, prediction_ms);
+}
+
+bool G1OptionalCSet::prepare_failed() {
+ return _prepare_failed;
+}
+
+void G1OptionalCSet::complete_evacuation() {
+ _evacuation_failed = false;
+ for (uint i = _current_index; i < _current_limit; i++) {
+ HeapRegion* hr = region_at(i);
+ _cset->clear_optional_region(hr);
+ if (hr->evacuation_failed()){
+ _evacuation_failed = true;
+ }
+ }
+ _current_index = _current_limit;
+}
+
+bool G1OptionalCSet::evacuation_failed() {
+ return _evacuation_failed;
+}
+
+G1OptionalCSet::~G1OptionalCSet() {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ while (!is_empty()) {
+ // We want to return regions not evacuated to the
+ // chooser in reverse order to maintain the old order.
+ HeapRegion* hr = _cset->remove_last_optional_region();
+ assert(hr != NULL, "Should be valid region left");
+ _pset->record_unused_optional_region(hr);
+ g1h->old_set_add(hr);
+ g1h->clear_in_cset(hr);
+ hr->set_index_in_opt_cset(InvalidCSetIndex);
+ _cset->cset_chooser()->push(hr);
+ }
+ _cset->free_optional_regions();
+}
+
+uint G1OptionalCSet::size() {
+ return _cset->optional_region_length() - _current_index;
+}
+
+bool G1OptionalCSet::is_empty() {
+ return size() == 0;
+}
+
+void G1OptionalCSet::prepare_to_evacuate_optional_region(HeapRegion* hr) {
+ log_trace(gc, cset)("Adding region %u for optional evacuation", hr->hrm_index());
+ G1CollectedHeap::heap()->clear_in_cset(hr);
+ _cset->add_old_region(hr);
+}
+
#ifdef ASSERT
class G1VerifyYoungCSetIndicesClosure : public HeapRegionClosure {
private:
--- a/src/hotspot/share/gc/g1/g1CollectionSet.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectionSet.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,6 +32,7 @@
class G1CollectedHeap;
class G1CollectorState;
class G1GCPhaseTimes;
+class G1ParScanThreadStateSet;
class G1Policy;
class G1SurvivorRegions;
class HeapRegion;
@@ -56,6 +57,13 @@
volatile size_t _collection_set_cur_length;
size_t _collection_set_max_length;
+ // When doing mixed collections we can add old regions to the collection, which
+ // can be collected if there is enough time. We call these optional regions and
+ // the pointer to these regions are stored in the array below.
+ HeapRegion** _optional_regions;
+ uint _optional_region_length;
+ uint _optional_region_max_length;
+
// The number of bytes in the collection set before the pause. Set from
// the incrementally built collection set at the start of an evacuation
// pause, and incremented in finalize_old_part() when adding old regions
@@ -106,15 +114,19 @@
G1CollectorState* collector_state();
G1GCPhaseTimes* phase_times();
- double predict_region_elapsed_time_ms(HeapRegion* hr);
+ void verify_young_cset_indices() const NOT_DEBUG_RETURN;
+ void add_as_optional(HeapRegion* hr);
+ void add_as_old(HeapRegion* hr);
+ bool optional_is_full();
- void verify_young_cset_indices() const NOT_DEBUG_RETURN;
public:
G1CollectionSet(G1CollectedHeap* g1h, G1Policy* policy);
~G1CollectionSet();
// Initializes the collection set giving the maximum possible length of the collection set.
void initialize(uint max_region_length);
+ void initialize_optional(uint max_length);
+ void free_optional_regions();
CollectionSetChooser* cset_chooser();
@@ -131,6 +143,7 @@
uint eden_region_length() const { return _eden_region_length; }
uint survivor_region_length() const { return _survivor_region_length; }
uint old_region_length() const { return _old_region_length; }
+ uint optional_region_length() const { return _optional_region_length; }
// Incremental collection set support
@@ -175,6 +188,9 @@
// Add old region "hr" to the collection set.
void add_old_region(HeapRegion* hr);
+ // Add old region "hr" to optional collection set.
+ void add_optional_region(HeapRegion* hr);
+
// Update information about hr in the aggregated information for
// the incrementally built collection set.
void update_young_region_prediction(HeapRegion* hr, size_t new_rs_length);
@@ -191,10 +207,73 @@
void print(outputStream* st);
#endif // !PRODUCT
+ double predict_region_elapsed_time_ms(HeapRegion* hr);
+
+ void clear_optional_region(const HeapRegion* hr);
+
+ HeapRegion* optional_region_at(uint i) const {
+ assert(_optional_regions != NULL, "Not yet initialized");
+ assert(i < _optional_region_length, "index %u out of bounds (%u)", i, _optional_region_length);
+ return _optional_regions[i];
+ }
+
+ HeapRegion* remove_last_optional_region() {
+ assert(_optional_regions != NULL, "Not yet initialized");
+ assert(_optional_region_length != 0, "No region to remove");
+ _optional_region_length--;
+ HeapRegion* removed = _optional_regions[_optional_region_length];
+ _optional_regions[_optional_region_length] = NULL;
+ return removed;
+ }
+
private:
// Update the incremental collection set information when adding a region.
void add_young_region_common(HeapRegion* hr);
};
+// Helper class to manage the optional regions in a Mixed collection.
+class G1OptionalCSet : public StackObj {
+private:
+ G1CollectionSet* _cset;
+ G1ParScanThreadStateSet* _pset;
+ uint _current_index;
+ uint _current_limit;
+ bool _prepare_failed;
+ bool _evacuation_failed;
+
+ void prepare_to_evacuate_optional_region(HeapRegion* hr);
+
+public:
+ static const uint InvalidCSetIndex = UINT_MAX;
+
+ G1OptionalCSet(G1CollectionSet* cset, G1ParScanThreadStateSet* pset) :
+ _cset(cset),
+ _pset(pset),
+ _current_index(0),
+ _current_limit(0),
+ _prepare_failed(false),
+ _evacuation_failed(false) { }
+ // The destructor returns regions to the cset-chooser and
+ // frees the optional structure in the cset.
+ ~G1OptionalCSet();
+
+ uint current_index() { return _current_index; }
+ uint current_limit() { return _current_limit; }
+
+ uint size();
+ bool is_empty();
+
+ HeapRegion* region_at(uint index);
+
+ // Prepare a set of regions for optional evacuation.
+ void prepare_evacuation(double time_left_ms);
+ bool prepare_failed();
+
+ // Complete the evacuation of the previously prepared
+ // regions by updating their state and check for failures.
+ void complete_evacuation();
+ bool evacuation_failed();
+};
+
#endif // SHARE_VM_GC_G1_G1COLLECTIONSET_HPP
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -44,12 +44,12 @@
#include "gc/shared/gcTimer.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
#include "gc/shared/referencePolicy.hpp"
#include "gc/shared/strongRootsScope.hpp"
#include "gc/shared/suspendibleThreadSet.hpp"
#include "gc/shared/taskqueue.inline.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "gc/shared/weakProcessor.inline.hpp"
#include "include/jvm.h"
#include "logging/log.hpp"
@@ -255,21 +255,35 @@
_free_list = NULL;
}
-G1CMRootRegions::G1CMRootRegions() :
- _survivors(NULL), _cm(NULL), _scan_in_progress(false),
- _should_abort(false), _claimed_survivor_index(0) { }
-
-void G1CMRootRegions::init(const G1SurvivorRegions* survivors, G1ConcurrentMark* cm) {
- _survivors = survivors;
- _cm = cm;
+G1CMRootRegions::G1CMRootRegions(uint const max_regions) :
+ _root_regions(NEW_C_HEAP_ARRAY(HeapRegion*, max_regions, mtGC)),
+ _max_regions(max_regions),
+ _num_root_regions(0),
+ _claimed_root_regions(0),
+ _scan_in_progress(false),
+ _should_abort(false) { }
+
+G1CMRootRegions::~G1CMRootRegions() {
+ FREE_C_HEAP_ARRAY(HeapRegion*, _max_regions);
+}
+
+void G1CMRootRegions::reset() {
+ _num_root_regions = 0;
+}
+
+void G1CMRootRegions::add(HeapRegion* hr) {
+ assert_at_safepoint();
+ size_t idx = Atomic::add((size_t)1, &_num_root_regions) - 1;
+ assert(idx < _max_regions, "Trying to add more root regions than there is space " SIZE_FORMAT, _max_regions);
+ _root_regions[idx] = hr;
}
void G1CMRootRegions::prepare_for_scan() {
assert(!scan_in_progress(), "pre-condition");
- // Currently, only survivors can be root regions.
- _claimed_survivor_index = 0;
- _scan_in_progress = _survivors->regions()->is_nonempty();
+ _scan_in_progress = _num_root_regions > 0;
+
+ _claimed_root_regions = 0;
_should_abort = false;
}
@@ -280,18 +294,19 @@
return NULL;
}
- // Currently, only survivors can be root regions.
- const GrowableArray<HeapRegion*>* survivor_regions = _survivors->regions();
-
- int claimed_index = Atomic::add(1, &_claimed_survivor_index) - 1;
- if (claimed_index < survivor_regions->length()) {
- return survivor_regions->at(claimed_index);
+ if (_claimed_root_regions >= _num_root_regions) {
+ return NULL;
+ }
+
+ size_t claimed_index = Atomic::add((size_t)1, &_claimed_root_regions) - 1;
+ if (claimed_index < _num_root_regions) {
+ return _root_regions[claimed_index];
}
return NULL;
}
uint G1CMRootRegions::num_root_regions() const {
- return (uint)_survivors->regions()->length();
+ return (uint)_num_root_regions;
}
void G1CMRootRegions::notify_scan_done() {
@@ -307,12 +322,10 @@
void G1CMRootRegions::scan_finished() {
assert(scan_in_progress(), "pre-condition");
- // Currently, only survivors can be root regions.
if (!_should_abort) {
- assert(_claimed_survivor_index >= 0, "otherwise comparison is invalid: %d", _claimed_survivor_index);
- assert((uint)_claimed_survivor_index >= _survivors->length(),
- "we should have claimed all survivors, claimed index = %u, length = %u",
- (uint)_claimed_survivor_index, _survivors->length());
+ assert(_claimed_root_regions >= num_root_regions(),
+ "we should have claimed all root regions, claimed " SIZE_FORMAT ", length = %u",
+ _claimed_root_regions, num_root_regions());
}
notify_scan_done();
@@ -353,7 +366,7 @@
_heap(_g1h->reserved_region()),
- _root_regions(),
+ _root_regions(_g1h->max_regions()),
_global_mark_stack(),
@@ -406,8 +419,6 @@
assert(CGC_lock != NULL, "CGC_lock must be initialized");
- _root_regions.init(_g1h->survivor(), this);
-
if (FLAG_IS_DEFAULT(ConcGCThreads) || ConcGCThreads == 0) {
// Calculate the number of concurrent worker threads by scaling
// the number of parallel GC threads.
@@ -728,6 +739,8 @@
// For each region note start of marking.
NoteStartOfMarkHRClosure startcl;
_g1h->heap_region_iterate(&startcl);
+
+ _root_regions.reset();
}
@@ -859,12 +872,12 @@
}
void G1ConcurrentMark::scan_root_region(HeapRegion* hr, uint worker_id) {
- // Currently, only survivors can be root regions.
- assert(hr->next_top_at_mark_start() == hr->bottom(), "invariant");
+ assert(hr->is_old() || (hr->is_survivor() && hr->next_top_at_mark_start() == hr->bottom()),
+ "Root regions must be old or survivor but region %u is %s", hr->hrm_index(), hr->get_type_str());
G1RootRegionScanClosure cl(_g1h, this, worker_id);
const uintx interval = PrefetchScanIntervalInBytes;
- HeapWord* curr = hr->bottom();
+ HeapWord* curr = hr->next_top_at_mark_start();
const HeapWord* end = hr->top();
while (curr < end) {
Prefetch::read(curr, interval);
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -224,34 +224,37 @@
template<typename Fn> void iterate(Fn fn) const PRODUCT_RETURN;
};
-// Root Regions are regions that are not empty at the beginning of a
-// marking cycle and which we might collect during an evacuation pause
-// while the cycle is active. Given that, during evacuation pauses, we
-// do not copy objects that are explicitly marked, what we have to do
-// for the root regions is to scan them and mark all objects reachable
-// from them. According to the SATB assumptions, we only need to visit
-// each object once during marking. So, as long as we finish this scan
-// before the next evacuation pause, we can copy the objects from the
-// root regions without having to mark them or do anything else to them.
-//
-// Currently, we only support root region scanning once (at the start
-// of the marking cycle) and the root regions are all the survivor
-// regions populated during the initial-mark pause.
+// Root Regions are regions that contain objects from nTAMS to top. These are roots
+// for marking, i.e. their referenced objects must be kept alive to maintain the
+// SATB invariant.
+// We could scan and mark them through during the initial-mark pause, but for
+// pause time reasons we move this work to the concurrent phase.
+// We need to complete this procedure before the next GC because it might determine
+// that some of these "root objects" are dead, potentially dropping some required
+// references.
+// Root regions comprise of the complete contents of survivor regions, and any
+// objects copied into old gen during GC.
class G1CMRootRegions {
-private:
- const G1SurvivorRegions* _survivors;
- G1ConcurrentMark* _cm;
+ HeapRegion** _root_regions;
+ size_t const _max_regions;
+
+ volatile size_t _num_root_regions; // Actual number of root regions.
- volatile bool _scan_in_progress;
- volatile bool _should_abort;
- volatile int _claimed_survivor_index;
+ volatile size_t _claimed_root_regions; // Number of root regions currently claimed.
+
+ volatile bool _scan_in_progress;
+ volatile bool _should_abort;
void notify_scan_done();
public:
- G1CMRootRegions();
- // We actually do most of the initialization in this method.
- void init(const G1SurvivorRegions* survivors, G1ConcurrentMark* cm);
+ G1CMRootRegions(uint const max_regions);
+ ~G1CMRootRegions();
+
+ // Reset the data structure to allow addition of new root regions.
+ void reset();
+
+ void add(HeapRegion* hr);
// Reset the claiming / scanning of the root regions.
void prepare_for_scan();
@@ -553,7 +556,7 @@
// them.
void scan_root_regions();
- // Scan a single root region and mark everything reachable from it.
+ // Scan a single root region from nTAMS to top and mark everything reachable from it.
void scan_root_region(HeapRegion* hr, uint worker_id);
// Do concurrent phase of marking, to a tentative transitive closure.
@@ -593,10 +596,8 @@
void print_on_error(outputStream* st) const;
// Mark the given object on the next bitmap if it is below nTAMS.
- // If the passed obj_size is zero, it is recalculated from the given object if
- // needed. This is to be as lazy as possible with accessing the object's size.
- inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size = 0);
- inline bool mark_in_next_bitmap(uint worker_id, oop const obj, size_t const obj_size = 0);
+ inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj);
+ inline bool mark_in_next_bitmap(uint worker_id, oop const obj);
inline bool is_marked_in_next_bitmap(oop p) const;
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -55,12 +55,12 @@
return _g1h->heap_region_containing(obj)->is_old_or_humongous_or_archive();
}
-inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, oop const obj, size_t const obj_size) {
+inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, oop const obj) {
HeapRegion* const hr = _g1h->heap_region_containing(obj);
- return mark_in_next_bitmap(worker_id, hr, obj, obj_size);
+ return mark_in_next_bitmap(worker_id, hr, obj);
}
-inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size) {
+inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, HeapRegion* const hr, oop const obj) {
assert(hr != NULL, "just checking");
assert(hr->is_in_reserved(obj), "Attempting to mark object at " PTR_FORMAT " that is not contained in the given region %u", p2i(obj), hr->hrm_index());
@@ -76,7 +76,7 @@
bool success = _next_mark_bitmap->par_mark(obj_addr);
if (success) {
- add_to_liveness(worker_id, obj, obj_size == 0 ? obj->size() : obj_size);
+ add_to_liveness(worker_id, obj, obj->size());
}
return success;
}
--- a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,7 @@
#include "gc/g1/g1MMUTracker.hpp"
#include "gc/g1/g1Policy.hpp"
#include "gc/g1/g1RemSet.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
+#include "gc/g1/g1VMOperations.hpp"
#include "gc/shared/concurrentGCPhaseManager.hpp"
#include "gc/shared/gcId.hpp"
#include "gc/shared/gcTrace.hpp"
@@ -339,7 +339,7 @@
TimeHelper::counter_to_millis(mark_end - mark_start));
mark_manager.set_phase(G1ConcurrentPhase::REMARK, false);
CMRemark cl(_cm);
- VM_CGC_Operation op(&cl, "Pause Remark");
+ VM_G1Concurrent op(&cl, "Pause Remark");
VMThread::execute(&op);
if (_cm->has_aborted()) {
break;
@@ -370,7 +370,7 @@
if (!_cm->has_aborted()) {
CMCleanup cl_cl(_cm);
- VM_CGC_Operation op(&cl_cl, "Pause Cleanup");
+ VM_G1Concurrent op(&cl_cl, "Pause Cleanup");
VMThread::execute(&op);
}
--- a/src/hotspot/share/gc/g1/g1EvacFailure.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1EvacFailure.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -126,7 +126,7 @@
// explicitly and all objects in the CSet are considered
// (implicitly) live. So, we won't mark them explicitly and
// we'll leave them over NTAMS.
- _cm->mark_in_next_bitmap(_worker_id, obj);
+ _cm->mark_in_next_bitmap(_worker_id, _hr, obj);
}
size_t obj_size = obj->size();
--- a/src/hotspot/share/gc/g1/g1FullGCScope.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1FullGCScope.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -31,8 +31,8 @@
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.hpp"
#include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/isGCActiveMark.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "memory/allocation.hpp"
#include "services/memoryService.hpp"
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -73,11 +73,13 @@
_gc_par_phases[ScanHCC] = NULL;
}
_gc_par_phases[ScanRS] = new WorkerDataArray<double>(max_gc_threads, "Scan RS (ms):");
+ _gc_par_phases[OptScanRS] = new WorkerDataArray<double>(max_gc_threads, "Optional Scan RS (ms):");
_gc_par_phases[CodeRoots] = new WorkerDataArray<double>(max_gc_threads, "Code Root Scanning (ms):");
#if INCLUDE_AOT
_gc_par_phases[AOTCodeRoots] = new WorkerDataArray<double>(max_gc_threads, "AOT Root Scanning (ms):");
#endif
_gc_par_phases[ObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Object Copy (ms):");
+ _gc_par_phases[OptObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Optional Object Copy (ms):");
_gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):");
_gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Total (ms):");
_gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>(max_gc_threads, "GC Worker End (ms):");
@@ -90,6 +92,15 @@
_scan_rs_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
_gc_par_phases[ScanRS]->link_thread_work_items(_scan_rs_skipped_cards, ScanRSSkippedCards);
+ _opt_cset_scanned_cards = new WorkerDataArray<size_t>(max_gc_threads, "Scanned Cards:");
+ _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_scanned_cards, OptCSetScannedCards);
+ _opt_cset_claimed_cards = new WorkerDataArray<size_t>(max_gc_threads, "Claimed Cards:");
+ _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_claimed_cards, OptCSetClaimedCards);
+ _opt_cset_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
+ _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_skipped_cards, OptCSetSkippedCards);
+ _opt_cset_used_memory = new WorkerDataArray<size_t>(max_gc_threads, "Used Memory:");
+ _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_used_memory, OptCSetUsedMemory);
+
_update_rs_processed_buffers = new WorkerDataArray<size_t>(max_gc_threads, "Processed Buffers:");
_gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_processed_buffers, UpdateRSProcessedBuffers);
_update_rs_scanned_cards = new WorkerDataArray<size_t>(max_gc_threads, "Scanned Cards:");
@@ -120,6 +131,7 @@
void G1GCPhaseTimes::reset() {
_cur_collection_par_time_ms = 0.0;
+ _cur_optional_evac_ms = 0.0;
_cur_collection_code_root_fixup_time_ms = 0.0;
_cur_strong_code_root_purge_time_ms = 0.0;
_cur_evac_fail_recalc_used = 0.0;
@@ -227,11 +239,11 @@
_gc_par_phases[phase]->add(worker_i, secs);
}
-void G1GCPhaseTimes::record_or_add_objcopy_time_secs(uint worker_i, double secs) {
- if (_gc_par_phases[ObjCopy]->get(worker_i) == _gc_par_phases[ObjCopy]->uninitialized()) {
- record_time_secs(ObjCopy, worker_i, secs);
+void G1GCPhaseTimes::record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs) {
+ if (_gc_par_phases[phase]->get(worker_i) == _gc_par_phases[phase]->uninitialized()) {
+ record_time_secs(phase, worker_i, secs);
} else {
- add_time_secs(ObjCopy, worker_i, secs);
+ add_time_secs(phase, worker_i, secs);
}
}
@@ -239,6 +251,10 @@
_gc_par_phases[phase]->set_thread_work_item(worker_i, count, index);
}
+void G1GCPhaseTimes::record_or_add_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index) {
+ _gc_par_phases[phase]->set_or_add_thread_work_item(worker_i, count, index);
+}
+
// return the average time for a phase in milliseconds
double G1GCPhaseTimes::average_time_ms(GCParPhases phase) {
return _gc_par_phases[phase]->average() * 1000.0;
@@ -348,6 +364,16 @@
return sum_ms;
}
+double G1GCPhaseTimes::print_evacuate_optional_collection_set() const {
+ const double sum_ms = _cur_optional_evac_ms;
+ if (sum_ms > 0) {
+ info_time("Evacuate Optional Collection Set", sum_ms);
+ debug_phase(_gc_par_phases[OptScanRS]);
+ debug_phase(_gc_par_phases[OptObjCopy]);
+ }
+ return sum_ms;
+}
+
double G1GCPhaseTimes::print_evacuate_collection_set() const {
const double sum_ms = _cur_collection_par_time_ms;
@@ -457,6 +483,7 @@
double accounted_ms = 0.0;
accounted_ms += print_pre_evacuate_collection_set();
accounted_ms += print_evacuate_collection_set();
+ accounted_ms += print_evacuate_optional_collection_set();
accounted_ms += print_post_evacuate_collection_set();
print_other(accounted_ms);
@@ -485,11 +512,13 @@
"UpdateRS",
"ScanHCC",
"ScanRS",
+ "OptScanRS",
"CodeRoots",
#if INCLUDE_AOT
"AOTCodeRoots",
#endif
"ObjCopy",
+ "OptObjCopy",
"Termination",
"Other",
"GCWorkerTotal",
@@ -561,7 +590,7 @@
_trim_tracker.stop();
// Exclude trim time by increasing the start time.
_start_time += _trim_time;
- _phase_times->record_or_add_objcopy_time_secs(_worker_id, _trim_time.seconds());
+ _phase_times->record_or_add_time_secs(G1GCPhaseTimes::ObjCopy, _worker_id, _trim_time.seconds());
}
}
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -63,11 +63,13 @@
UpdateRS,
ScanHCC,
ScanRS,
+ OptScanRS,
CodeRoots,
#if INCLUDE_AOT
AOTCodeRoots,
#endif
ObjCopy,
+ OptObjCopy,
Termination,
Other,
GCWorkerTotal,
@@ -92,6 +94,13 @@
UpdateRSSkippedCards
};
+ enum GCOptCSetWorkItems {
+ OptCSetScannedCards,
+ OptCSetClaimedCards,
+ OptCSetSkippedCards,
+ OptCSetUsedMemory
+ };
+
private:
// Markers for grouping the phases in the GCPhases enum above
static const int GCMainParPhasesLast = GCWorkerEnd;
@@ -108,11 +117,17 @@
WorkerDataArray<size_t>* _scan_rs_claimed_cards;
WorkerDataArray<size_t>* _scan_rs_skipped_cards;
+ WorkerDataArray<size_t>* _opt_cset_scanned_cards;
+ WorkerDataArray<size_t>* _opt_cset_claimed_cards;
+ WorkerDataArray<size_t>* _opt_cset_skipped_cards;
+ WorkerDataArray<size_t>* _opt_cset_used_memory;
+
WorkerDataArray<size_t>* _termination_attempts;
WorkerDataArray<size_t>* _redirtied_cards;
double _cur_collection_par_time_ms;
+ double _cur_optional_evac_ms;
double _cur_collection_code_root_fixup_time_ms;
double _cur_strong_code_root_purge_time_ms;
@@ -184,6 +199,7 @@
double print_pre_evacuate_collection_set() const;
double print_evacuate_collection_set() const;
+ double print_evacuate_optional_collection_set() const;
double print_post_evacuate_collection_set() const;
void print_other(double accounted_ms) const;
@@ -199,10 +215,12 @@
// add a number of seconds to a phase
void add_time_secs(GCParPhases phase, uint worker_i, double secs);
- void record_or_add_objcopy_time_secs(uint worker_i, double secs);
+ void record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs);
void record_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
+ void record_or_add_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
+
// return the average time for a phase in milliseconds
double average_time_ms(GCParPhases phase);
@@ -234,6 +252,10 @@
_cur_collection_par_time_ms = ms;
}
+ void record_optional_evacuation(double ms) {
+ _cur_optional_evac_ms = ms;
+ }
+
void record_code_root_fixup_time(double ms) {
_cur_collection_code_root_fixup_time_ms = ms;
}
--- a/src/hotspot/share/gc/g1/g1InCSetState.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1InCSetState.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -56,7 +56,8 @@
// makes getting the next generation fast by a simple increment. They are also
// used to index into arrays.
// The negative values are used for objects requiring various special cases,
- // for example eager reclamation of humongous objects.
+ // for example eager reclamation of humongous objects or optional regions.
+ Optional = -2, // The region is optional
Humongous = -1, // The region is humongous
NotInCSet = 0, // The region is not in the collection set.
Young = 1, // The region is in the collection set and a young region.
@@ -78,10 +79,11 @@
bool is_humongous() const { return _value == Humongous; }
bool is_young() const { return _value == Young; }
bool is_old() const { return _value == Old; }
+ bool is_optional() const { return _value == Optional; }
#ifdef ASSERT
bool is_default() const { return _value == NotInCSet; }
- bool is_valid() const { return (_value >= Humongous) && (_value < Num); }
+ bool is_valid() const { return (_value >= Optional) && (_value < Num); }
bool is_valid_gen() const { return (_value >= Young && _value <= Old); }
#endif
};
@@ -101,6 +103,12 @@
protected:
InCSetState default_value() const { return InCSetState::NotInCSet; }
public:
+ void set_optional(uintptr_t index) {
+ assert(get_by_index(index).is_default(),
+ "State at index " INTPTR_FORMAT " should be default but is " CSETSTATE_FORMAT, index, get_by_index(index).value());
+ set_by_index(index, InCSetState::Optional);
+ }
+
void set_humongous(uintptr_t index) {
assert(get_by_index(index).is_default(),
"State at index " INTPTR_FORMAT " should be default but is " CSETSTATE_FORMAT, index, get_by_index(index).value());
--- a/src/hotspot/share/gc/g1/g1OopClosures.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1OopClosures.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -83,6 +83,16 @@
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
};
+// Used during Optional RS scanning to make sure we trim the queues in a timely manner.
+class G1ScanRSForOptionalClosure : public OopClosure {
+ G1ScanObjsDuringScanRSClosure* _scan_cl;
+public:
+ G1ScanRSForOptionalClosure(G1ScanObjsDuringScanRSClosure* cl) : _scan_cl(cl) { }
+
+ template <class T> void do_oop_work(T* p);
+ virtual void do_oop(oop* p) { do_oop_work(p); }
+ virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+};
// This closure is applied to the fields of the objects that have just been copied during evacuation.
class G1ScanEvacuatedObjClosure : public G1ScanClosureBase {
@@ -141,11 +151,6 @@
// during the GC (i.e., non-CSet objects). It is MT-safe.
inline void mark_object(oop obj);
- // Mark the object if it's not already marked. This is used to mark
- // objects pointed to by roots that have been forwarded during a
- // GC. It is MT-safe.
- inline void mark_forwarded_object(oop from_obj, oop to_obj);
-
G1ParCopyHelper(G1CollectedHeap* g1h, G1ParScanThreadState* par_scan_state);
~G1ParCopyHelper() { }
--- a/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -64,6 +64,8 @@
inline void G1ScanClosureBase::handle_non_cset_obj_common(InCSetState const state, T* p, oop const obj) {
if (state.is_humongous()) {
_g1h->set_humongous_is_live(obj);
+ } else if (state.is_optional()) {
+ _par_scan_state->remember_reference_into_optional_region(p);
}
}
@@ -195,6 +197,12 @@
}
}
+template <class T>
+inline void G1ScanRSForOptionalClosure::do_oop_work(T* p) {
+ _scan_cl->do_oop_work(p);
+ _scan_cl->trim_queue_partially();
+}
+
void G1ParCopyHelper::do_cld_barrier(oop new_obj) {
if (_g1h->heap_region_containing(new_obj)->is_young()) {
_scanned_cld->record_modified_oops();
@@ -208,21 +216,6 @@
_cm->mark_in_next_bitmap(_worker_id, obj);
}
-void G1ParCopyHelper::mark_forwarded_object(oop from_obj, oop to_obj) {
- assert(from_obj->is_forwarded(), "from obj should be forwarded");
- assert(from_obj->forwardee() == to_obj, "to obj should be the forwardee");
- assert(from_obj != to_obj, "should not be self-forwarded");
-
- assert(_g1h->heap_region_containing(from_obj)->in_collection_set(), "from obj should be in the CSet");
- assert(!_g1h->heap_region_containing(to_obj)->in_collection_set(), "should not mark objects in the CSet");
-
- // The object might be in the process of being copied by another
- // worker so we cannot trust that its to-space image is
- // well-formed. So we have to read its size from its from-space
- // image which we know should not be changing.
- _cm->mark_in_next_bitmap(_worker_id, to_obj, from_obj->size());
-}
-
void G1ParCopyHelper::trim_queue_partially() {
_par_scan_state->trim_queue_partially();
}
@@ -251,11 +244,6 @@
}
assert(forwardee != NULL, "forwardee should not be NULL");
RawAccess<IS_NOT_NULL>::oop_store(p, forwardee);
- if (do_mark_object != G1MarkNone && forwardee != obj) {
- // If the object is self-forwarded we don't need to explicitly
- // mark it, the evacuation failure protocol will do so.
- mark_forwarded_object(obj, forwardee);
- }
if (barrier == G1BarrierCLD) {
do_cld_barrier(forwardee);
@@ -263,6 +251,8 @@
} else {
if (state.is_humongous()) {
_g1h->set_humongous_is_live(obj);
+ } else if (state.is_optional()) {
+ _par_scan_state->remember_root_into_optional_region(p);
}
// The object is not in collection set. If we're a root scanning
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/g1/g1OopStarChunkedList.inline.hpp"
+
+G1OopStarChunkedList::~G1OopStarChunkedList() {
+ delete_list(_roots);
+ delete_list(_croots);
+ delete_list(_oops);
+ delete_list(_coops);
+}
+
+void G1OopStarChunkedList::oops_do(OopClosure* obj_cl, OopClosure* root_cl) {
+ chunks_do(_roots, root_cl);
+ chunks_do(_croots, root_cl);
+ chunks_do(_oops, obj_cl);
+ chunks_do(_coops, obj_cl);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
+#define SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
+
+#include "oops/oopsHierarchy.hpp"
+#include "utilities/chunkedList.hpp"
+
+class OopClosure;
+
+class G1OopStarChunkedList : public CHeapObj<mtGC> {
+ size_t _used_memory;
+
+ ChunkedList<oop*, mtGC>* _roots;
+ ChunkedList<narrowOop*, mtGC>* _croots;
+ ChunkedList<oop*, mtGC>* _oops;
+ ChunkedList<narrowOop*, mtGC>* _coops;
+
+ template <typename T> void delete_list(ChunkedList<T*, mtGC>* c);
+
+ template <typename T>
+ void chunks_do(ChunkedList<T*, mtGC>* head,
+ OopClosure* cl);
+
+ template <typename T>
+ inline void push(ChunkedList<T*, mtGC>** field, T* p);
+
+ public:
+ G1OopStarChunkedList() : _used_memory(0), _roots(NULL), _croots(NULL), _oops(NULL), _coops(NULL) {}
+ ~G1OopStarChunkedList();
+
+ size_t used_memory() { return _used_memory; }
+
+ void oops_do(OopClosure* obj_cl, OopClosure* root_cl);
+
+ inline void push_oop(oop* p);
+ inline void push_oop(narrowOop* p);
+ inline void push_root(oop* p);
+ inline void push_root(narrowOop* p);
+};
+
+#endif // SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
+#define SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
+
+#include "gc/g1/g1OopStarChunkedList.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/iterator.hpp"
+
+template <typename T>
+inline void G1OopStarChunkedList::push(ChunkedList<T*, mtGC>** field, T* p) {
+ ChunkedList<T*, mtGC>* list = *field;
+ if (list == NULL) {
+ *field = new ChunkedList<T*, mtGC>();
+ _used_memory += sizeof(ChunkedList<T*, mtGC>);
+ } else if (list->is_full()) {
+ ChunkedList<T*, mtGC>* next = new ChunkedList<T*, mtGC>();
+ next->set_next_used(list);
+ *field = next;
+ _used_memory += sizeof(ChunkedList<T*, mtGC>);
+ }
+
+ (*field)->push(p);
+}
+
+inline void G1OopStarChunkedList::push_root(narrowOop* p) {
+ push(&_croots, p);
+}
+
+inline void G1OopStarChunkedList::push_root(oop* p) {
+ push(&_roots, p);
+}
+
+inline void G1OopStarChunkedList::push_oop(narrowOop* p) {
+ push(&_coops, p);
+}
+
+inline void G1OopStarChunkedList::push_oop(oop* p) {
+ push(&_oops, p);
+}
+
+template <typename T>
+void G1OopStarChunkedList::delete_list(ChunkedList<T*, mtGC>* c) {
+ while (c != NULL) {
+ ChunkedList<T*, mtGC>* next = c->next_used();
+ delete c;
+ c = next;
+ }
+}
+
+template <typename T>
+void G1OopStarChunkedList::chunks_do(ChunkedList<T*, mtGC>* head, OopClosure* cl) {
+ for (ChunkedList<T*, mtGC>* c = head; c != NULL; c = c->next_used()) {
+ for (size_t i = 0; i < c->size(); i++) {
+ T* p = c->at(i);
+ cl->do_oop(p);
+ }
+ }
+}
+
+#endif // SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,10 @@
#include "oops/oop.inline.hpp"
#include "runtime/prefetch.inline.hpp"
-G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, size_t young_cset_length)
+G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h,
+ uint worker_id,
+ size_t young_cset_length,
+ size_t optional_cset_length)
: _g1h(g1h),
_refs(g1h->task_queue(worker_id)),
_dcq(&g1h->dirty_card_queue_set()),
@@ -51,7 +54,8 @@
_stack_trim_upper_threshold(GCDrainStackTargetSize * 2 + 1),
_stack_trim_lower_threshold(GCDrainStackTargetSize),
_trim_ticks(),
- _old_gen_is_full(false)
+ _old_gen_is_full(false),
+ _num_optional_regions(optional_cset_length)
{
// we allocate G1YoungSurvRateNumRegions plus one entries, since
// we "sacrifice" entry 0 to keep track of surviving bytes for
@@ -78,6 +82,8 @@
_dest[InCSetState::Old] = InCSetState::Old;
_closures = G1EvacuationRootClosures::create_root_closures(this, _g1h);
+
+ _oops_into_optional_regions = new G1OopStarChunkedList[_num_optional_regions];
}
// Pass locally gathered statistics to global state.
@@ -97,6 +103,7 @@
delete _plab_allocator;
delete _closures;
FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base);
+ delete[] _oops_into_optional_regions;
}
void G1ParScanThreadState::waste(size_t& wasted, size_t& undo_wasted) {
@@ -324,7 +331,8 @@
G1ParScanThreadState* G1ParScanThreadStateSet::state_for_worker(uint worker_id) {
assert(worker_id < _n_workers, "out of bounds access");
if (_states[worker_id] == NULL) {
- _states[worker_id] = new G1ParScanThreadState(_g1h, worker_id, _young_cset_length);
+ _states[worker_id] =
+ new G1ParScanThreadState(_g1h, worker_id, _young_cset_length, _optional_cset_length);
}
return _states[worker_id];
}
@@ -351,6 +359,19 @@
_flushed = true;
}
+void G1ParScanThreadStateSet::record_unused_optional_region(HeapRegion* hr) {
+ for (uint worker_index = 0; worker_index < _n_workers; ++worker_index) {
+ G1ParScanThreadState* pss = _states[worker_index];
+
+ if (pss == NULL) {
+ continue;
+ }
+
+ size_t used_memory = pss->oops_into_optional_region(hr)->used_memory();
+ _g1h->g1_policy()->phase_times()->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_index, used_memory, G1GCPhaseTimes::OptCSetUsedMemory);
+ }
+}
+
oop G1ParScanThreadState::handle_evacuation_failure_par(oop old, markOop m) {
assert(_g1h->is_in_cset(old), "Object " PTR_FORMAT " should be in the CSet", p2i(old));
@@ -381,11 +402,15 @@
return forward_ptr;
}
}
-G1ParScanThreadStateSet::G1ParScanThreadStateSet(G1CollectedHeap* g1h, uint n_workers, size_t young_cset_length) :
+G1ParScanThreadStateSet::G1ParScanThreadStateSet(G1CollectedHeap* g1h,
+ uint n_workers,
+ size_t young_cset_length,
+ size_t optional_cset_length) :
_g1h(g1h),
_states(NEW_C_HEAP_ARRAY(G1ParScanThreadState*, n_workers, mtGC)),
_surviving_young_words_total(NEW_C_HEAP_ARRAY(size_t, young_cset_length, mtGC)),
_young_cset_length(young_cset_length),
+ _optional_cset_length(optional_cset_length),
_n_workers(n_workers),
_flushed(false) {
for (uint i = 0; i < n_workers; ++i) {
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -37,6 +37,7 @@
#include "oops/oop.hpp"
#include "utilities/ticks.hpp"
+class G1OopStarChunkedList;
class G1PLABAllocator;
class G1EvacuationRootClosures;
class HeapRegion;
@@ -87,8 +88,14 @@
return _dest[original.value()];
}
+ size_t _num_optional_regions;
+ G1OopStarChunkedList* _oops_into_optional_regions;
+
public:
- G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, size_t young_cset_length);
+ G1ParScanThreadState(G1CollectedHeap* g1h,
+ uint worker_id,
+ size_t young_cset_length,
+ size_t optional_cset_length);
virtual ~G1ParScanThreadState();
void set_ref_discoverer(ReferenceDiscoverer* rd) { _scanner.set_ref_discoverer(rd); }
@@ -206,6 +213,13 @@
// An attempt to evacuate "obj" has failed; take necessary steps.
oop handle_evacuation_failure_par(oop obj, markOop m);
+
+ template <typename T>
+ inline void remember_root_into_optional_region(T* p);
+ template <typename T>
+ inline void remember_reference_into_optional_region(T* p);
+
+ inline G1OopStarChunkedList* oops_into_optional_region(const HeapRegion* hr);
};
class G1ParScanThreadStateSet : public StackObj {
@@ -213,14 +227,19 @@
G1ParScanThreadState** _states;
size_t* _surviving_young_words_total;
size_t _young_cset_length;
+ size_t _optional_cset_length;
uint _n_workers;
bool _flushed;
public:
- G1ParScanThreadStateSet(G1CollectedHeap* g1h, uint n_workers, size_t young_cset_length);
+ G1ParScanThreadStateSet(G1CollectedHeap* g1h,
+ uint n_workers,
+ size_t young_cset_length,
+ size_t optional_cset_length);
~G1ParScanThreadStateSet();
void flush();
+ void record_unused_optional_region(HeapRegion* hr);
G1ParScanThreadState* state_for_worker(uint worker_id);
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,7 @@
#define SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP
#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1OopStarChunkedList.inline.hpp"
#include "gc/g1/g1ParScanThreadState.hpp"
#include "gc/g1/g1RemSet.hpp"
#include "oops/access.inline.hpp"
@@ -203,4 +204,23 @@
_trim_ticks = Tickspan();
}
+template <typename T>
+inline void G1ParScanThreadState::remember_root_into_optional_region(T* p) {
+ oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
+ uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+ _oops_into_optional_regions[index].push_root(p);
+}
+
+template <typename T>
+inline void G1ParScanThreadState::remember_reference_into_optional_region(T* p) {
+ oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
+ uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+ _oops_into_optional_regions[index].push_oop(p);
+ DEBUG_ONLY(verify_ref(p);)
+}
+
+G1OopStarChunkedList* G1ParScanThreadState::oops_into_optional_region(const HeapRegion* hr) {
+ return &_oops_into_optional_regions[hr->index_in_opt_cset()];
+}
+
#endif // SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP
--- a/src/hotspot/share/gc/g1/g1Policy.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Policy.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -401,6 +401,14 @@
size_t desired_survivor_size() const;
public:
+ // Fraction used when predicting how many optional regions to include in
+ // the CSet. This fraction of the available time is used for optional regions,
+ // the rest is used to add old regions to the normal CSet.
+ double optional_prediction_fraction() { return 0.2; }
+ // Fraction used when evacuating the optional regions. This fraction of the
+ // remaining time is used to choose what regions to include in the evacuation.
+ double optional_evacuation_fraction() { return 0.75; }
+
uint tenuring_threshold() const { return _tenuring_threshold; }
uint max_survivor_regions() {
--- a/src/hotspot/share/gc/g1/g1RemSet.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1RemSet.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -311,12 +311,14 @@
G1ScanRSForRegionClosure::G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
G1ParScanThreadState* pss,
+ G1GCPhaseTimes::GCParPhases phase,
uint worker_i) :
_g1h(G1CollectedHeap::heap()),
_ct(_g1h->card_table()),
_pss(pss),
_scan_objs_on_card_cl(scan_obj_on_card),
_scan_state(scan_state),
+ _phase(phase),
_worker_i(worker_i),
_cards_scanned(0),
_cards_claimed(0),
@@ -402,7 +404,7 @@
scan_card(mr, region_idx_for_card);
}
- event.commit(GCId::current(), _worker_i, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ScanRS));
+ event.commit(GCId::current(), _worker_i, G1GCPhaseTimes::phase_name(_phase));
}
void G1ScanRSForRegionClosure::scan_strong_code_roots(HeapRegion* r) {
@@ -437,7 +439,7 @@
void G1RemSet::scan_rem_set(G1ParScanThreadState* pss, uint worker_i) {
G1ScanObjsDuringScanRSClosure scan_cl(_g1h, pss);
- G1ScanRSForRegionClosure cl(_scan_state, &scan_cl, pss, worker_i);
+ G1ScanRSForRegionClosure cl(_scan_state, &scan_cl, pss, G1GCPhaseTimes::ScanRS, worker_i);
_g1h->collection_set_iterate_from(&cl, worker_i);
G1GCPhaseTimes* p = _g1p->phase_times();
--- a/src/hotspot/share/gc/g1/g1RemSet.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1RemSet.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,6 +28,7 @@
#include "gc/g1/dirtyCardQueue.hpp"
#include "gc/g1/g1CardTable.hpp"
#include "gc/g1/g1OopClosures.hpp"
+#include "gc/g1/g1GCPhaseTimes.hpp"
#include "gc/g1/g1RemSetSummary.hpp"
#include "gc/g1/heapRegion.hpp"
#include "memory/allocation.hpp"
@@ -138,6 +139,8 @@
G1RemSetScanState* _scan_state;
+ G1GCPhaseTimes::GCParPhases _phase;
+
uint _worker_i;
size_t _cards_scanned;
@@ -159,6 +162,7 @@
G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
G1ParScanThreadState* pss,
+ G1GCPhaseTimes::GCParPhases phase,
uint worker_i);
bool do_heap_region(HeapRegion* r);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1VMOperations.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1ConcurrentMarkThread.inline.hpp"
+#include "gc/g1/g1Policy.hpp"
+#include "gc/g1/g1VMOperations.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+
+void VM_G1CollectFull::doit() {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ GCCauseSetter x(g1h, _gc_cause);
+ g1h->do_full_collection(false /* clear_all_soft_refs */);
+}
+
+VM_G1CollectForAllocation::VM_G1CollectForAllocation(size_t word_size,
+ uint gc_count_before,
+ GCCause::Cause gc_cause,
+ bool should_initiate_conc_mark,
+ double target_pause_time_ms) :
+ VM_CollectForAllocation(word_size, gc_count_before, gc_cause),
+ _pause_succeeded(false),
+ _should_initiate_conc_mark(should_initiate_conc_mark),
+ _should_retry_gc(false),
+ _target_pause_time_ms(target_pause_time_ms),
+ _old_marking_cycles_completed_before(0) {
+
+ guarantee(target_pause_time_ms > 0.0,
+ "target_pause_time_ms = %1.6lf should be positive",
+ target_pause_time_ms);
+ _gc_cause = gc_cause;
+}
+
+bool VM_G1CollectForAllocation::doit_prologue() {
+ bool res = VM_CollectForAllocation::doit_prologue();
+ if (!res) {
+ if (_should_initiate_conc_mark) {
+ // The prologue can fail for a couple of reasons. The first is that another GC
+ // got scheduled and prevented the scheduling of the initial mark GC. The
+ // second is that the GC locker may be active and the heap can't be expanded.
+ // In both cases we want to retry the GC so that the initial mark pause is
+ // actually scheduled. In the second case, however, we should stall until
+ // until the GC locker is no longer active and then retry the initial mark GC.
+ _should_retry_gc = true;
+ }
+ }
+ return res;
+}
+
+void VM_G1CollectForAllocation::doit() {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ assert(!_should_initiate_conc_mark || g1h->should_do_concurrent_full_gc(_gc_cause),
+ "only a GC locker, a System.gc(), stats update, whitebox, or a hum allocation induced GC should start a cycle");
+
+ if (_word_size > 0) {
+ // An allocation has been requested. So, try to do that first.
+ _result = g1h->attempt_allocation_at_safepoint(_word_size,
+ false /* expect_null_cur_alloc_region */);
+ if (_result != NULL) {
+ // If we can successfully allocate before we actually do the
+ // pause then we will consider this pause successful.
+ _pause_succeeded = true;
+ return;
+ }
+ }
+
+ GCCauseSetter x(g1h, _gc_cause);
+ if (_should_initiate_conc_mark) {
+ // It's safer to read old_marking_cycles_completed() here, given
+ // that noone else will be updating it concurrently. Since we'll
+ // only need it if we're initiating a marking cycle, no point in
+ // setting it earlier.
+ _old_marking_cycles_completed_before = g1h->old_marking_cycles_completed();
+
+ // At this point we are supposed to start a concurrent cycle. We
+ // will do so if one is not already in progress.
+ bool res = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
+
+ // The above routine returns true if we were able to force the
+ // next GC pause to be an initial mark; it returns false if a
+ // marking cycle is already in progress.
+ //
+ // If a marking cycle is already in progress just return and skip the
+ // pause below - if the reason for requesting this initial mark pause
+ // was due to a System.gc() then the requesting thread should block in
+ // doit_epilogue() until the marking cycle is complete.
+ //
+ // If this initial mark pause was requested as part of a humongous
+ // allocation then we know that the marking cycle must just have
+ // been started by another thread (possibly also allocating a humongous
+ // object) as there was no active marking cycle when the requesting
+ // thread checked before calling collect() in
+ // attempt_allocation_humongous(). Retrying the GC, in this case,
+ // will cause the requesting thread to spin inside collect() until the
+ // just started marking cycle is complete - which may be a while. So
+ // we do NOT retry the GC.
+ if (!res) {
+ assert(_word_size == 0, "Concurrent Full GC/Humongous Object IM shouldn't be allocating");
+ if (_gc_cause != GCCause::_g1_humongous_allocation) {
+ _should_retry_gc = true;
+ }
+ return;
+ }
+ }
+
+ // Try a partial collection of some kind.
+ _pause_succeeded = g1h->do_collection_pause_at_safepoint(_target_pause_time_ms);
+
+ if (_pause_succeeded) {
+ if (_word_size > 0) {
+ // An allocation had been requested. Do it, eventually trying a stronger
+ // kind of GC.
+ _result = g1h->satisfy_failed_allocation(_word_size, &_pause_succeeded);
+ } else {
+ bool should_upgrade_to_full = !g1h->should_do_concurrent_full_gc(_gc_cause) &&
+ !g1h->has_regions_left_for_allocation();
+ if (should_upgrade_to_full) {
+ // There has been a request to perform a GC to free some space. We have no
+ // information on how much memory has been asked for. In case there are
+ // absolutely no regions left to allocate into, do a maximally compacting full GC.
+ log_info(gc, ergo)("Attempting maximally compacting collection");
+ _pause_succeeded = g1h->do_full_collection(false, /* explicit gc */
+ true /* clear_all_soft_refs */);
+ }
+ }
+ guarantee(_pause_succeeded, "Elevated collections during the safepoint must always succeed.");
+ } else {
+ assert(_result == NULL, "invariant");
+ // The only reason for the pause to not be successful is that, the GC locker is
+ // active (or has become active since the prologue was executed). In this case
+ // we should retry the pause after waiting for the GC locker to become inactive.
+ _should_retry_gc = true;
+ }
+}
+
+void VM_G1CollectForAllocation::doit_epilogue() {
+ VM_CollectForAllocation::doit_epilogue();
+
+ // If the pause was initiated by a System.gc() and
+ // +ExplicitGCInvokesConcurrent, we have to wait here for the cycle
+ // that just started (or maybe one that was already in progress) to
+ // finish.
+ if (GCCause::is_user_requested_gc(_gc_cause) &&
+ _should_initiate_conc_mark) {
+ assert(ExplicitGCInvokesConcurrent,
+ "the only way to be here is if ExplicitGCInvokesConcurrent is set");
+
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+
+ // In the doit() method we saved g1h->old_marking_cycles_completed()
+ // in the _old_marking_cycles_completed_before field. We have to
+ // wait until we observe that g1h->old_marking_cycles_completed()
+ // has increased by at least one. This can happen if a) we started
+ // a cycle and it completes, b) a cycle already in progress
+ // completes, or c) a Full GC happens.
+
+ // If the condition has already been reached, there's no point in
+ // actually taking the lock and doing the wait.
+ if (g1h->old_marking_cycles_completed() <=
+ _old_marking_cycles_completed_before) {
+ // The following is largely copied from CMS
+
+ Thread* thr = Thread::current();
+ assert(thr->is_Java_thread(), "invariant");
+ JavaThread* jt = (JavaThread*)thr;
+ ThreadToNativeFromVM native(jt);
+
+ MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+ while (g1h->old_marking_cycles_completed() <=
+ _old_marking_cycles_completed_before) {
+ FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
+ }
+ }
+ }
+}
+
+void VM_G1Concurrent::doit() {
+ GCIdMark gc_id_mark(_gc_id);
+ GCTraceCPUTime tcpu;
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ GCTraceTime(Info, gc) t(_message, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true);
+ TraceCollectorStats tcs(g1h->g1mm()->conc_collection_counters());
+ SvcGCMarker sgcm(SvcGCMarker::CONCURRENT);
+ IsGCActiveMark x;
+ _cl->do_void();
+}
+
+bool VM_G1Concurrent::doit_prologue() {
+ Heap_lock->lock();
+ return true;
+}
+
+void VM_G1Concurrent::doit_epilogue() {
+ if (Universe::has_reference_pending_list()) {
+ Heap_lock->notify_all();
+ }
+ Heap_lock->unlock();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1VMOperations.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
+#define SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
+
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+
+// VM_operations for the G1 collector.
+// VM_GC_Operation:
+// - VM_G1Concurrent
+// - VM_G1CollectForAllocation
+// - VM_G1CollectFull
+
+class VM_G1CollectFull : public VM_GC_Operation {
+public:
+ VM_G1CollectFull(uint gc_count_before,
+ uint full_gc_count_before,
+ GCCause::Cause cause) :
+ VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { }
+ virtual VMOp_Type type() const { return VMOp_G1CollectFull; }
+ virtual void doit();
+};
+
+class VM_G1CollectForAllocation : public VM_CollectForAllocation {
+ bool _pause_succeeded;
+
+ bool _should_initiate_conc_mark;
+ bool _should_retry_gc;
+ double _target_pause_time_ms;
+ uint _old_marking_cycles_completed_before;
+
+public:
+ VM_G1CollectForAllocation(size_t word_size,
+ uint gc_count_before,
+ GCCause::Cause gc_cause,
+ bool should_initiate_conc_mark,
+ double target_pause_time_ms);
+ virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; }
+ virtual bool doit_prologue();
+ virtual void doit();
+ virtual void doit_epilogue();
+ bool should_retry_gc() const { return _should_retry_gc; }
+ bool pause_succeeded() { return _pause_succeeded; }
+};
+
+// Concurrent G1 stop-the-world operations such as remark and cleanup.
+class VM_G1Concurrent : public VM_Operation {
+ VoidClosure* _cl;
+ const char* _message;
+ uint _gc_id;
+
+public:
+ VM_G1Concurrent(VoidClosure* cl, const char* message) :
+ _cl(cl), _message(message), _gc_id(GCId::current()) { }
+ virtual VMOp_Type type() const { return VMOp_G1Concurrent; }
+ virtual void doit();
+ virtual bool doit_prologue();
+ virtual void doit_epilogue();
+};
+
+#endif // SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
--- a/src/hotspot/share/gc/g1/heapRegion.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,7 @@
#include "code/nmethod.hpp"
#include "gc/g1/g1BlockOffsetTable.inline.hpp"
#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1CollectionSet.hpp"
#include "gc/g1/g1HeapRegionTraceType.hpp"
#include "gc/g1/g1OopClosures.inline.hpp"
#include "gc/g1/heapRegion.inline.hpp"
@@ -240,7 +241,8 @@
_containing_set(NULL),
#endif
_prev_marked_bytes(0), _next_marked_bytes(0), _gc_efficiency(0.0),
- _young_index_in_cset(-1), _surv_rate_group(NULL), _age_index(-1),
+ _index_in_opt_cset(G1OptionalCSet::InvalidCSetIndex), _young_index_in_cset(-1),
+ _surv_rate_group(NULL), _age_index(-1),
_prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
_recorded_rs_length(0), _predicted_elapsed_time_ms(0)
{
--- a/src/hotspot/share/gc/g1/heapRegion.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -250,6 +250,9 @@
// The calculated GC efficiency of the region.
double _gc_efficiency;
+ // The index in the optional regions array, if this region
+ // is considered optional during a mixed collections.
+ uint _index_in_opt_cset;
int _young_index_in_cset;
SurvRateGroup* _surv_rate_group;
int _age_index;
@@ -526,14 +529,6 @@
// info fields.
inline void note_end_of_marking();
- // Notify the region that it will be used as to-space during a GC
- // and we are about to start copying objects into it.
- inline void note_start_of_copying(bool during_initial_mark);
-
- // Notify the region that it ceases being to-space during a GC and
- // we will not copy objects into it any more.
- inline void note_end_of_copying(bool during_initial_mark);
-
// Notify the region that we are about to start processing
// self-forwarded objects during evac failure handling.
void note_self_forwarding_removal_start(bool during_initial_mark,
@@ -554,6 +549,9 @@
void calc_gc_efficiency(void);
double gc_efficiency() { return _gc_efficiency;}
+ uint index_in_opt_cset() const { return _index_in_opt_cset; }
+ void set_index_in_opt_cset(uint index) { _index_in_opt_cset = index; }
+
int young_index_in_cset() const { return _young_index_in_cset; }
void set_young_index_in_cset(int index) {
assert( (index == -1) || is_young(), "pre-condition" );
--- a/src/hotspot/share/gc/g1/heapRegion.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -252,49 +252,6 @@
_next_marked_bytes = 0;
}
-inline void HeapRegion::note_start_of_copying(bool during_initial_mark) {
- if (is_survivor()) {
- // This is how we always allocate survivors.
- assert(_next_top_at_mark_start == bottom(), "invariant");
- } else {
- if (during_initial_mark) {
- // During initial-mark we'll explicitly mark any objects on old
- // regions that are pointed to by roots. Given that explicit
- // marks only make sense under NTAMS it'd be nice if we could
- // check that condition if we wanted to. Given that we don't
- // know where the top of this region will end up, we simply set
- // NTAMS to the end of the region so all marks will be below
- // NTAMS. We'll set it to the actual top when we retire this region.
- _next_top_at_mark_start = end();
- } else {
- // We could have re-used this old region as to-space over a
- // couple of GCs since the start of the concurrent marking
- // cycle. This means that [bottom,NTAMS) will contain objects
- // copied up to and including initial-mark and [NTAMS, top)
- // will contain objects copied during the concurrent marking cycle.
- assert(top() >= _next_top_at_mark_start, "invariant");
- }
- }
-}
-
-inline void HeapRegion::note_end_of_copying(bool during_initial_mark) {
- if (is_survivor()) {
- // This is how we always allocate survivors.
- assert(_next_top_at_mark_start == bottom(), "invariant");
- } else {
- if (during_initial_mark) {
- // See the comment for note_start_of_copying() for the details
- // on this.
- assert(_next_top_at_mark_start == end(), "pre-condition");
- _next_top_at_mark_start = top();
- } else {
- // See the comment for note_start_of_copying() for the details
- // on this.
- assert(top() >= _next_top_at_mark_start, "invariant");
- }
- }
-}
-
inline bool HeapRegion::in_collection_set() const {
return G1CollectedHeap::heap()->is_in_cset(this);
}
--- a/src/hotspot/share/gc/g1/vm_operations_g1.cpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/g1/g1CollectedHeap.inline.hpp"
-#include "gc/g1/g1ConcurrentMarkThread.inline.hpp"
-#include "gc/g1/g1Policy.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
-#include "gc/shared/gcTimer.hpp"
-#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-
-void VM_G1CollectFull::doit() {
- G1CollectedHeap* g1h = G1CollectedHeap::heap();
- GCCauseSetter x(g1h, _gc_cause);
- g1h->do_full_collection(false /* clear_all_soft_refs */);
-}
-
-VM_G1CollectForAllocation::VM_G1CollectForAllocation(size_t word_size,
- uint gc_count_before,
- GCCause::Cause gc_cause,
- bool should_initiate_conc_mark,
- double target_pause_time_ms)
- : VM_CollectForAllocation(word_size, gc_count_before, gc_cause),
- _pause_succeeded(false),
- _should_initiate_conc_mark(should_initiate_conc_mark),
- _should_retry_gc(false),
- _target_pause_time_ms(target_pause_time_ms),
- _old_marking_cycles_completed_before(0) {
- guarantee(target_pause_time_ms > 0.0,
- "target_pause_time_ms = %1.6lf should be positive",
- target_pause_time_ms);
- _gc_cause = gc_cause;
-}
-
-bool VM_G1CollectForAllocation::doit_prologue() {
- bool res = VM_CollectForAllocation::doit_prologue();
- if (!res) {
- if (_should_initiate_conc_mark) {
- // The prologue can fail for a couple of reasons. The first is that another GC
- // got scheduled and prevented the scheduling of the initial mark GC. The
- // second is that the GC locker may be active and the heap can't be expanded.
- // In both cases we want to retry the GC so that the initial mark pause is
- // actually scheduled. In the second case, however, we should stall until
- // until the GC locker is no longer active and then retry the initial mark GC.
- _should_retry_gc = true;
- }
- }
- return res;
-}
-
-void VM_G1CollectForAllocation::doit() {
- G1CollectedHeap* g1h = G1CollectedHeap::heap();
- assert(!_should_initiate_conc_mark || g1h->should_do_concurrent_full_gc(_gc_cause),
- "only a GC locker, a System.gc(), stats update, whitebox, or a hum allocation induced GC should start a cycle");
-
- if (_word_size > 0) {
- // An allocation has been requested. So, try to do that first.
- _result = g1h->attempt_allocation_at_safepoint(_word_size,
- false /* expect_null_cur_alloc_region */);
- if (_result != NULL) {
- // If we can successfully allocate before we actually do the
- // pause then we will consider this pause successful.
- _pause_succeeded = true;
- return;
- }
- }
-
- GCCauseSetter x(g1h, _gc_cause);
- if (_should_initiate_conc_mark) {
- // It's safer to read old_marking_cycles_completed() here, given
- // that noone else will be updating it concurrently. Since we'll
- // only need it if we're initiating a marking cycle, no point in
- // setting it earlier.
- _old_marking_cycles_completed_before = g1h->old_marking_cycles_completed();
-
- // At this point we are supposed to start a concurrent cycle. We
- // will do so if one is not already in progress.
- bool res = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
-
- // The above routine returns true if we were able to force the
- // next GC pause to be an initial mark; it returns false if a
- // marking cycle is already in progress.
- //
- // If a marking cycle is already in progress just return and skip the
- // pause below - if the reason for requesting this initial mark pause
- // was due to a System.gc() then the requesting thread should block in
- // doit_epilogue() until the marking cycle is complete.
- //
- // If this initial mark pause was requested as part of a humongous
- // allocation then we know that the marking cycle must just have
- // been started by another thread (possibly also allocating a humongous
- // object) as there was no active marking cycle when the requesting
- // thread checked before calling collect() in
- // attempt_allocation_humongous(). Retrying the GC, in this case,
- // will cause the requesting thread to spin inside collect() until the
- // just started marking cycle is complete - which may be a while. So
- // we do NOT retry the GC.
- if (!res) {
- assert(_word_size == 0, "Concurrent Full GC/Humongous Object IM shouldn't be allocating");
- if (_gc_cause != GCCause::_g1_humongous_allocation) {
- _should_retry_gc = true;
- }
- return;
- }
- }
-
- // Try a partial collection of some kind.
- _pause_succeeded = g1h->do_collection_pause_at_safepoint(_target_pause_time_ms);
-
- if (_pause_succeeded) {
- if (_word_size > 0) {
- // An allocation had been requested. Do it, eventually trying a stronger
- // kind of GC.
- _result = g1h->satisfy_failed_allocation(_word_size, &_pause_succeeded);
- } else {
- bool should_upgrade_to_full = !g1h->should_do_concurrent_full_gc(_gc_cause) &&
- !g1h->has_regions_left_for_allocation();
- if (should_upgrade_to_full) {
- // There has been a request to perform a GC to free some space. We have no
- // information on how much memory has been asked for. In case there are
- // absolutely no regions left to allocate into, do a maximally compacting full GC.
- log_info(gc, ergo)("Attempting maximally compacting collection");
- _pause_succeeded = g1h->do_full_collection(false, /* explicit gc */
- true /* clear_all_soft_refs */);
- }
- }
- guarantee(_pause_succeeded, "Elevated collections during the safepoint must always succeed.");
- } else {
- assert(_result == NULL, "invariant");
- // The only reason for the pause to not be successful is that, the GC locker is
- // active (or has become active since the prologue was executed). In this case
- // we should retry the pause after waiting for the GC locker to become inactive.
- _should_retry_gc = true;
- }
-}
-
-void VM_G1CollectForAllocation::doit_epilogue() {
- VM_CollectForAllocation::doit_epilogue();
-
- // If the pause was initiated by a System.gc() and
- // +ExplicitGCInvokesConcurrent, we have to wait here for the cycle
- // that just started (or maybe one that was already in progress) to
- // finish.
- if (GCCause::is_user_requested_gc(_gc_cause) &&
- _should_initiate_conc_mark) {
- assert(ExplicitGCInvokesConcurrent,
- "the only way to be here is if ExplicitGCInvokesConcurrent is set");
-
- G1CollectedHeap* g1h = G1CollectedHeap::heap();
-
- // In the doit() method we saved g1h->old_marking_cycles_completed()
- // in the _old_marking_cycles_completed_before field. We have to
- // wait until we observe that g1h->old_marking_cycles_completed()
- // has increased by at least one. This can happen if a) we started
- // a cycle and it completes, b) a cycle already in progress
- // completes, or c) a Full GC happens.
-
- // If the condition has already been reached, there's no point in
- // actually taking the lock and doing the wait.
- if (g1h->old_marking_cycles_completed() <=
- _old_marking_cycles_completed_before) {
- // The following is largely copied from CMS
-
- Thread* thr = Thread::current();
- assert(thr->is_Java_thread(), "invariant");
- JavaThread* jt = (JavaThread*)thr;
- ThreadToNativeFromVM native(jt);
-
- MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
- while (g1h->old_marking_cycles_completed() <=
- _old_marking_cycles_completed_before) {
- FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
- }
- }
- }
-}
-
-void VM_CGC_Operation::doit() {
- GCIdMark gc_id_mark(_gc_id);
- GCTraceCPUTime tcpu;
- G1CollectedHeap* g1h = G1CollectedHeap::heap();
- GCTraceTime(Info, gc) t(_printGCMessage, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true);
- TraceCollectorStats tcs(g1h->g1mm()->conc_collection_counters());
- SvcGCMarker sgcm(SvcGCMarker::CONCURRENT);
- IsGCActiveMark x;
- _cl->do_void();
-}
-
-bool VM_CGC_Operation::doit_prologue() {
- Heap_lock->lock();
- return true;
-}
-
-void VM_CGC_Operation::doit_epilogue() {
- if (Universe::has_reference_pending_list()) {
- Heap_lock->notify_all();
- }
- Heap_lock->unlock();
-}
--- a/src/hotspot/share/gc/g1/vm_operations_g1.hpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
-#define SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
-
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-
-// VM_operations for the G1 collector.
-// VM_GC_Operation:
-// - VM_CGC_Operation
-// - VM_G1CollectForAllocation
-// - VM_G1CollectFull
-
-class VM_G1CollectFull: public VM_GC_Operation {
-public:
- VM_G1CollectFull(uint gc_count_before,
- uint full_gc_count_before,
- GCCause::Cause cause)
- : VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { }
- virtual VMOp_Type type() const { return VMOp_G1CollectFull; }
- virtual void doit();
- virtual const char* name() const {
- return "G1 Full collection";
- }
-};
-
-class VM_G1CollectForAllocation: public VM_CollectForAllocation {
-private:
- bool _pause_succeeded;
-
- bool _should_initiate_conc_mark;
- bool _should_retry_gc;
- double _target_pause_time_ms;
- uint _old_marking_cycles_completed_before;
-public:
- VM_G1CollectForAllocation(size_t word_size,
- uint gc_count_before,
- GCCause::Cause gc_cause,
- bool should_initiate_conc_mark,
- double target_pause_time_ms);
- virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; }
- virtual bool doit_prologue();
- virtual void doit();
- virtual void doit_epilogue();
- virtual const char* name() const {
- return "G1 collect for allocation";
- }
- bool should_retry_gc() const { return _should_retry_gc; }
- bool pause_succeeded() { return _pause_succeeded; }
-};
-
-// Concurrent GC stop-the-world operations such as remark and cleanup;
-// consider sharing these with CMS's counterparts.
-class VM_CGC_Operation: public VM_Operation {
- VoidClosure* _cl;
- const char* _printGCMessage;
- uint _gc_id;
-
-public:
- VM_CGC_Operation(VoidClosure* cl, const char *printGCMsg)
- : _cl(cl), _printGCMessage(printGCMsg), _gc_id(GCId::current()) {}
- virtual VMOp_Type type() const { return VMOp_CGC_Operation; }
- virtual void doit();
- virtual bool doit_prologue();
- virtual void doit_epilogue();
- virtual const char* name() const {
- return "concurrent gc";
- }
-};
-
-#endif // SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
--- a/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -36,7 +36,7 @@
#include "gc/parallel/psParallelCompact.inline.hpp"
#include "gc/parallel/psPromotionManager.hpp"
#include "gc/parallel/psScavenge.hpp"
-#include "gc/parallel/vmPSOperations.hpp"
+#include "gc/parallel/psVMOperations.hpp"
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/gcLocker.hpp"
#include "gc/shared/gcWhen.hpp"
--- a/src/hotspot/share/gc/parallel/psScavenge.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/parallel/psScavenge.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -57,7 +57,7 @@
#include "runtime/handles.inline.hpp"
#include "runtime/threadCritical.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/memoryService.hpp"
#include "utilities/stack.inline.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/parallel/psVMOperations.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/parallel/parallelScavengeHeap.inline.hpp"
+#include "gc/parallel/psScavenge.hpp"
+#include "gc/parallel/psVMOperations.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "utilities/dtrace.hpp"
+
+// The following methods are used by the parallel scavenge collector
+VM_ParallelGCFailedAllocation::VM_ParallelGCFailedAllocation(size_t word_size,
+ uint gc_count) :
+ VM_CollectForAllocation(word_size, gc_count, GCCause::_allocation_failure) {
+ assert(word_size != 0, "An allocation should always be requested with this operation.");
+}
+
+void VM_ParallelGCFailedAllocation::doit() {
+ SvcGCMarker sgcm(SvcGCMarker::MINOR);
+
+ ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
+
+ GCCauseSetter gccs(heap, _gc_cause);
+ _result = heap->failed_mem_allocate(_word_size);
+
+ if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
+ set_gc_locked();
+ }
+}
+
+// Only used for System.gc() calls
+VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(uint gc_count,
+ uint full_gc_count,
+ GCCause::Cause gc_cause) :
+ VM_GC_Operation(gc_count, gc_cause, full_gc_count, true /* full */)
+{
+}
+
+void VM_ParallelGCSystemGC::doit() {
+ SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+ ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
+
+ GCCauseSetter gccs(heap, _gc_cause);
+ if (_gc_cause == GCCause::_gc_locker || _gc_cause == GCCause::_wb_young_gc
+ DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
+ // If (and only if) the scavenge fails, this will invoke a full gc.
+ heap->invoke_scavenge();
+ } else {
+ heap->do_full_collection(false);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/parallel/psVMOperations.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
+#define SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
+
+#include "gc/parallel/parallelScavengeHeap.hpp"
+#include "gc/shared/gcCause.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+
+class VM_ParallelGCFailedAllocation : public VM_CollectForAllocation {
+ public:
+ VM_ParallelGCFailedAllocation(size_t word_size, uint gc_count);
+
+ virtual VMOp_Type type() const {
+ return VMOp_ParallelGCFailedAllocation;
+ }
+ virtual void doit();
+};
+
+class VM_ParallelGCSystemGC: public VM_GC_Operation {
+ public:
+ VM_ParallelGCSystemGC(uint gc_count, uint full_gc_count, GCCause::Cause gc_cause);
+ virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
+ virtual void doit();
+};
+
+#endif // SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/parallel/vmPSOperations.cpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/parallel/parallelScavengeHeap.inline.hpp"
-#include "gc/parallel/psScavenge.hpp"
-#include "gc/parallel/vmPSOperations.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "utilities/dtrace.hpp"
-
-// The following methods are used by the parallel scavenge collector
-VM_ParallelGCFailedAllocation::VM_ParallelGCFailedAllocation(size_t word_size,
- uint gc_count) :
- VM_CollectForAllocation(word_size, gc_count, GCCause::_allocation_failure) {
- assert(word_size != 0, "An allocation should always be requested with this operation.");
-}
-
-void VM_ParallelGCFailedAllocation::doit() {
- SvcGCMarker sgcm(SvcGCMarker::MINOR);
-
- ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-
- GCCauseSetter gccs(heap, _gc_cause);
- _result = heap->failed_mem_allocate(_word_size);
-
- if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
- set_gc_locked();
- }
-}
-
-// Only used for System.gc() calls
-VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(uint gc_count,
- uint full_gc_count,
- GCCause::Cause gc_cause) :
- VM_GC_Operation(gc_count, gc_cause, full_gc_count, true /* full */)
-{
-}
-
-void VM_ParallelGCSystemGC::doit() {
- SvcGCMarker sgcm(SvcGCMarker::FULL);
-
- ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-
- GCCauseSetter gccs(heap, _gc_cause);
- if (_gc_cause == GCCause::_gc_locker || _gc_cause == GCCause::_wb_young_gc
- DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
- // If (and only if) the scavenge fails, this will invoke a full gc.
- heap->invoke_scavenge();
- } else {
- heap->do_full_collection(false);
- }
-}
--- a/src/hotspot/share/gc/parallel/vmPSOperations.hpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
-#define SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
-
-#include "gc/parallel/parallelScavengeHeap.hpp"
-#include "gc/shared/gcCause.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-
-class VM_ParallelGCFailedAllocation : public VM_CollectForAllocation {
- public:
- VM_ParallelGCFailedAllocation(size_t word_size, uint gc_count);
-
- virtual VMOp_Type type() const {
- return VMOp_ParallelGCFailedAllocation;
- }
- virtual void doit();
-};
-
-class VM_ParallelGCSystemGC: public VM_GC_Operation {
- public:
- VM_ParallelGCSystemGC(uint gc_count, uint full_gc_count, GCCause::Cause gc_cause);
- virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
- virtual void doit();
-};
-
-#endif // SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/collectedHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/collectedHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,9 +32,9 @@
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/gcWhen.hpp"
#include "gc/shared/memAllocator.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "logging/log.hpp"
#include "memory/metaspace.hpp"
#include "memory/resourceArea.hpp"
--- a/src/hotspot/share/gc/shared/collectorPolicy.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/collectorPolicy.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,9 +28,9 @@
#include "gc/shared/collectorPolicy.hpp"
#include "gc/shared/gcLocker.hpp"
#include "gc/shared/gcPolicyCounters.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/generationSpec.hpp"
#include "gc/shared/space.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "logging/log.hpp"
#include "memory/universe.hpp"
#include "runtime/arguments.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcVMOperations.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc/shared/allocTracer.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+#include "gc/shared/genCollectedHeap.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "logging/log.hpp"
+#include "memory/oopFactory.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/macros.hpp"
+#include "utilities/preserveException.hpp"
+#if INCLUDE_G1GC
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1Policy.hpp"
+#endif // INCLUDE_G1GC
+
+VM_GC_Operation::~VM_GC_Operation() {
+ CollectedHeap* ch = Universe::heap();
+ ch->soft_ref_policy()->set_all_soft_refs_clear(false);
+}
+
+// The same dtrace probe can't be inserted in two different files, so we
+// have to call it here, so it's only in one file. Can't create new probes
+// for the other file anymore. The dtrace probes have to remain stable.
+void VM_GC_Operation::notify_gc_begin(bool full) {
+ HOTSPOT_GC_BEGIN(
+ full);
+ HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+}
+
+void VM_GC_Operation::notify_gc_end() {
+ HOTSPOT_GC_END();
+ HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+}
+
+// Allocations may fail in several threads at about the same time,
+// resulting in multiple gc requests. We only want to do one of them.
+// In case a GC locker is active and the need for a GC is already signaled,
+// we want to skip this GC attempt altogether, without doing a futile
+// safepoint operation.
+bool VM_GC_Operation::skip_operation() const {
+ bool skip = (_gc_count_before != Universe::heap()->total_collections());
+ if (_full && skip) {
+ skip = (_full_gc_count_before != Universe::heap()->total_full_collections());
+ }
+ if (!skip && GCLocker::is_active_and_needs_gc()) {
+ skip = Universe::heap()->is_maximal_no_gc();
+ assert(!(skip && (_gc_cause == GCCause::_gc_locker)),
+ "GCLocker cannot be active when initiating GC");
+ }
+ return skip;
+}
+
+bool VM_GC_Operation::doit_prologue() {
+ assert(Thread::current()->is_Java_thread(), "just checking");
+ assert(((_gc_cause != GCCause::_no_gc) &&
+ (_gc_cause != GCCause::_no_cause_specified)), "Illegal GCCause");
+
+ // To be able to handle a GC the VM initialization needs to be completed.
+ if (!is_init_completed()) {
+ vm_exit_during_initialization(
+ err_msg("GC triggered before VM initialization completed. Try increasing "
+ "NewSize, current value " SIZE_FORMAT "%s.",
+ byte_size_in_proper_unit(NewSize),
+ proper_unit_for_byte_size(NewSize)));
+ }
+
+ // If the GC count has changed someone beat us to the collection
+ Heap_lock->lock();
+
+ // Check invocations
+ if (skip_operation()) {
+ // skip collection
+ Heap_lock->unlock();
+ _prologue_succeeded = false;
+ } else {
+ _prologue_succeeded = true;
+ }
+ return _prologue_succeeded;
+}
+
+
+void VM_GC_Operation::doit_epilogue() {
+ assert(Thread::current()->is_Java_thread(), "just checking");
+ // Clean up old interpreter OopMap entries that were replaced
+ // during the GC thread root traversal.
+ OopMapCache::cleanup_old_entries();
+ if (Universe::has_reference_pending_list()) {
+ Heap_lock->notify_all();
+ }
+ Heap_lock->unlock();
+}
+
+bool VM_GC_HeapInspection::skip_operation() const {
+ return false;
+}
+
+bool VM_GC_HeapInspection::collect() {
+ if (GCLocker::is_active()) {
+ return false;
+ }
+ Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
+ return true;
+}
+
+void VM_GC_HeapInspection::doit() {
+ HandleMark hm;
+ Universe::heap()->ensure_parsability(false); // must happen, even if collection does
+ // not happen (e.g. due to GCLocker)
+ // or _full_gc being false
+ if (_full_gc) {
+ if (!collect()) {
+ // The collection attempt was skipped because the gc locker is held.
+ // The following dump may then be a tad misleading to someone expecting
+ // only live objects to show up in the dump (see CR 6944195). Just issue
+ // a suitable warning in that case and do not attempt to do a collection.
+ // The latter is a subtle point, because even a failed attempt
+ // to GC will, in fact, induce one in the future, which we
+ // probably want to avoid in this case because the GC that we may
+ // be about to attempt holds value for us only
+ // if it happens now and not if it happens in the eventual
+ // future.
+ log_warning(gc)("GC locker is held; pre-dump GC was skipped");
+ }
+ }
+ HeapInspection inspect(_csv_format, _print_help, _print_class_stats,
+ _columns);
+ inspect.heap_inspection(_out);
+}
+
+
+void VM_GenCollectForAllocation::doit() {
+ SvcGCMarker sgcm(SvcGCMarker::MINOR);
+
+ GenCollectedHeap* gch = GenCollectedHeap::heap();
+ GCCauseSetter gccs(gch, _gc_cause);
+ _result = gch->satisfy_failed_allocation(_word_size, _tlab);
+ assert(gch->is_in_reserved_or_null(_result), "result not in heap");
+
+ if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
+ set_gc_locked();
+ }
+}
+
+void VM_GenCollectFull::doit() {
+ SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+ GenCollectedHeap* gch = GenCollectedHeap::heap();
+ GCCauseSetter gccs(gch, _gc_cause);
+ gch->do_full_collection(gch->must_clear_all_soft_refs(), _max_generation);
+}
+
+VM_CollectForMetadataAllocation::VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
+ size_t size,
+ Metaspace::MetadataType mdtype,
+ uint gc_count_before,
+ uint full_gc_count_before,
+ GCCause::Cause gc_cause)
+ : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true),
+ _result(NULL), _size(size), _mdtype(mdtype), _loader_data(loader_data) {
+ assert(_size != 0, "An allocation should always be requested with this operation.");
+ AllocTracer::send_allocation_requiring_gc_event(_size * HeapWordSize, GCId::peek());
+}
+
+// Returns true iff concurrent GCs unloads metadata.
+bool VM_CollectForMetadataAllocation::initiate_concurrent_GC() {
+#if INCLUDE_CMSGC
+ if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) {
+ MetaspaceGC::set_should_concurrent_collect(true);
+ return true;
+ }
+#endif
+
+#if INCLUDE_G1GC
+ if (UseG1GC && ClassUnloadingWithConcurrentMark) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ g1h->g1_policy()->collector_state()->set_initiate_conc_mark_if_possible(true);
+
+ GCCauseSetter x(g1h, _gc_cause);
+
+ // At this point we are supposed to start a concurrent cycle. We
+ // will do so if one is not already in progress.
+ bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
+
+ if (should_start) {
+ double pause_target = g1h->g1_policy()->max_pause_time_ms();
+ g1h->do_collection_pause_at_safepoint(pause_target);
+ }
+ return true;
+ }
+#endif
+
+ return false;
+}
+
+void VM_CollectForMetadataAllocation::doit() {
+ SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+ CollectedHeap* heap = Universe::heap();
+ GCCauseSetter gccs(heap, _gc_cause);
+
+ // Check again if the space is available. Another thread
+ // may have similarly failed a metadata allocation and induced
+ // a GC that freed space for the allocation.
+ if (!MetadataAllocationFailALot) {
+ _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+ if (_result != NULL) {
+ return;
+ }
+ }
+
+ if (initiate_concurrent_GC()) {
+ // For CMS and G1 expand since the collection is going to be concurrent.
+ _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
+ if (_result != NULL) {
+ return;
+ }
+
+ log_debug(gc)("%s full GC for Metaspace", UseConcMarkSweepGC ? "CMS" : "G1");
+ }
+
+ // Don't clear the soft refs yet.
+ heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
+ // After a GC try to allocate without expanding. Could fail
+ // and expansion will be tried below.
+ _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+ if (_result != NULL) {
+ return;
+ }
+
+ // If still failing, allow the Metaspace to expand.
+ // See delta_capacity_until_GC() for explanation of the
+ // amount of the expansion.
+ // This should work unless there really is no more space
+ // or a MaxMetaspaceSize has been specified on the command line.
+ _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
+ if (_result != NULL) {
+ return;
+ }
+
+ // If expansion failed, do a collection clearing soft references.
+ heap->collect_as_vm_thread(GCCause::_metadata_GC_clear_soft_refs);
+ _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+ if (_result != NULL) {
+ return;
+ }
+
+ log_debug(gc)("After Metaspace GC failed to allocate size " SIZE_FORMAT, _size);
+
+ if (GCLocker::is_active_and_needs_gc()) {
+ set_gc_locked();
+ }
+}
+
+VM_CollectForAllocation::VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause)
+ : VM_GC_Operation(gc_count_before, cause), _word_size(word_size), _result(NULL) {
+ // Only report if operation was really caused by an allocation.
+ if (_word_size != 0) {
+ AllocTracer::send_allocation_requiring_gc_event(_word_size * HeapWordSize, GCId::peek());
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcVMOperations.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
+#define SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
+
+#include "gc/shared/collectedHeap.hpp"
+#include "gc/shared/genCollectedHeap.hpp"
+#include "memory/heapInspection.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vmOperations.hpp"
+
+// The following class hierarchy represents
+// a set of operations (VM_Operation) related to GC.
+//
+// VM_Operation
+// VM_GC_Operation
+// VM_GC_HeapInspection
+// VM_GenCollectFull
+// VM_GenCollectFullConcurrent
+// VM_ParallelGCSystemGC
+// VM_CollectForAllocation
+// VM_GenCollectForAllocation
+// VM_ParallelGCFailedAllocation
+// VM_GC_Operation
+// - implements methods common to all classes in the hierarchy:
+// prevents multiple gc requests and manages lock on heap;
+//
+// VM_GC_HeapInspection
+// - prints class histogram on SIGBREAK if PrintClassHistogram
+// is specified; and also the attach "inspectheap" operation
+//
+// VM_CollectForAllocation
+// VM_GenCollectForAllocation
+// VM_ParallelGCFailedAllocation
+// - this operation is invoked when allocation is failed;
+// operation performs garbage collection and tries to
+// allocate afterwards;
+//
+// VM_GenCollectFull
+// VM_GenCollectFullConcurrent
+// VM_ParallelGCSystemGC
+// - these operations preform full collection of heaps of
+// different kind
+//
+
+class VM_GC_Operation: public VM_Operation {
+ protected:
+ uint _gc_count_before; // gc count before acquiring PLL
+ uint _full_gc_count_before; // full gc count before acquiring PLL
+ bool _full; // whether a "full" collection
+ bool _prologue_succeeded; // whether doit_prologue succeeded
+ GCCause::Cause _gc_cause; // the putative cause for this gc op
+ bool _gc_locked; // will be set if gc was locked
+
+ virtual bool skip_operation() const;
+
+ public:
+ VM_GC_Operation(uint gc_count_before,
+ GCCause::Cause _cause,
+ uint full_gc_count_before = 0,
+ bool full = false) {
+ _full = full;
+ _prologue_succeeded = false;
+ _gc_count_before = gc_count_before;
+
+ // A subclass constructor will likely overwrite the following
+ _gc_cause = _cause;
+
+ _gc_locked = false;
+
+ _full_gc_count_before = full_gc_count_before;
+ // In ParallelScavengeHeap::mem_allocate() collections can be
+ // executed within a loop and _all_soft_refs_clear can be set
+ // true after they have been cleared by a collection and another
+ // collection started so that _all_soft_refs_clear can be true
+ // when this collection is started. Don't assert that
+ // _all_soft_refs_clear have to be false here even though
+ // mutators have run. Soft refs will be cleared again in this
+ // collection.
+ }
+ ~VM_GC_Operation();
+
+ // Acquire the reference synchronization lock
+ virtual bool doit_prologue();
+ // Do notifyAll (if needed) and release held lock
+ virtual void doit_epilogue();
+
+ virtual bool allow_nested_vm_operations() const { return true; }
+ bool prologue_succeeded() const { return _prologue_succeeded; }
+
+ void set_gc_locked() { _gc_locked = true; }
+ bool gc_locked() const { return _gc_locked; }
+
+ static void notify_gc_begin(bool full = false);
+ static void notify_gc_end();
+};
+
+
+class VM_GC_HeapInspection: public VM_GC_Operation {
+ private:
+ outputStream* _out;
+ bool _full_gc;
+ bool _csv_format; // "comma separated values" format for spreadsheet.
+ bool _print_help;
+ bool _print_class_stats;
+ const char* _columns;
+ public:
+ VM_GC_HeapInspection(outputStream* out, bool request_full_gc) :
+ VM_GC_Operation(0 /* total collections, dummy, ignored */,
+ GCCause::_heap_inspection /* GC Cause */,
+ 0 /* total full collections, dummy, ignored */,
+ request_full_gc) {
+ _out = out;
+ _full_gc = request_full_gc;
+ _csv_format = false;
+ _print_help = false;
+ _print_class_stats = false;
+ _columns = NULL;
+ }
+
+ ~VM_GC_HeapInspection() {}
+ virtual VMOp_Type type() const { return VMOp_GC_HeapInspection; }
+ virtual bool skip_operation() const;
+ virtual void doit();
+ void set_csv_format(bool value) {_csv_format = value;}
+ void set_print_help(bool value) {_print_help = value;}
+ void set_print_class_stats(bool value) {_print_class_stats = value;}
+ void set_columns(const char* value) {_columns = value;}
+ protected:
+ bool collect();
+};
+
+class VM_CollectForAllocation : public VM_GC_Operation {
+ protected:
+ size_t _word_size; // Size of object to be allocated (in number of words)
+ HeapWord* _result; // Allocation result (NULL if allocation failed)
+
+ public:
+ VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause);
+
+ HeapWord* result() const {
+ return _result;
+ }
+};
+
+class VM_GenCollectForAllocation : public VM_CollectForAllocation {
+ private:
+ bool _tlab; // alloc is of a tlab.
+ public:
+ VM_GenCollectForAllocation(size_t word_size,
+ bool tlab,
+ uint gc_count_before)
+ : VM_CollectForAllocation(word_size, gc_count_before, GCCause::_allocation_failure),
+ _tlab(tlab) {
+ assert(word_size != 0, "An allocation should always be requested with this operation.");
+ }
+ ~VM_GenCollectForAllocation() {}
+ virtual VMOp_Type type() const { return VMOp_GenCollectForAllocation; }
+ virtual void doit();
+};
+
+// VM operation to invoke a collection of the heap as a
+// GenCollectedHeap heap.
+class VM_GenCollectFull: public VM_GC_Operation {
+ private:
+ GenCollectedHeap::GenerationType _max_generation;
+ public:
+ VM_GenCollectFull(uint gc_count_before,
+ uint full_gc_count_before,
+ GCCause::Cause gc_cause,
+ GenCollectedHeap::GenerationType max_generation)
+ : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */),
+ _max_generation(max_generation) { }
+ ~VM_GenCollectFull() {}
+ virtual VMOp_Type type() const { return VMOp_GenCollectFull; }
+ virtual void doit();
+};
+
+class VM_CollectForMetadataAllocation: public VM_GC_Operation {
+ private:
+ MetaWord* _result;
+ size_t _size; // size of object to be allocated
+ Metaspace::MetadataType _mdtype;
+ ClassLoaderData* _loader_data;
+
+ public:
+ VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
+ size_t size,
+ Metaspace::MetadataType mdtype,
+ uint gc_count_before,
+ uint full_gc_count_before,
+ GCCause::Cause gc_cause);
+
+ virtual VMOp_Type type() const { return VMOp_CollectForMetadataAllocation; }
+ virtual void doit();
+ MetaWord* result() const { return _result; }
+
+ bool initiate_concurrent_GC();
+};
+
+class SvcGCMarker : public StackObj {
+ private:
+ JvmtiGCMarker _jgcm;
+ public:
+ typedef enum { MINOR, FULL, CONCURRENT } reason_type;
+
+ SvcGCMarker(reason_type reason ) {
+ VM_GC_Operation::notify_gc_begin(reason == FULL);
+ }
+
+ ~SvcGCMarker() {
+ VM_GC_Operation::notify_gc_end();
+ }
+};
+
+#endif // SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/genCollectedHeap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/genCollectedHeap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -42,13 +42,13 @@
#include "gc/shared/gcPolicyCounters.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/genCollectedHeap.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
#include "gc/shared/generationSpec.hpp"
#include "gc/shared/oopStorageParState.inline.hpp"
#include "gc/shared/space.hpp"
#include "gc/shared/strongRootsScope.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "gc/shared/weakProcessor.hpp"
#include "gc/shared/workgroup.hpp"
#include "memory/filemap.hpp"
--- a/src/hotspot/share/gc/shared/vmGCOperations.cpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/classLoader.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc/shared/allocTracer.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-#include "interpreter/oopMapCache.hpp"
-#include "logging/log.hpp"
-#include "memory/oopFactory.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/init.hpp"
-#include "utilities/dtrace.hpp"
-#include "utilities/macros.hpp"
-#include "utilities/preserveException.hpp"
-#if INCLUDE_G1GC
-#include "gc/g1/g1CollectedHeap.inline.hpp"
-#include "gc/g1/g1Policy.hpp"
-#endif // INCLUDE_G1GC
-
-VM_GC_Operation::~VM_GC_Operation() {
- CollectedHeap* ch = Universe::heap();
- ch->soft_ref_policy()->set_all_soft_refs_clear(false);
-}
-
-// The same dtrace probe can't be inserted in two different files, so we
-// have to call it here, so it's only in one file. Can't create new probes
-// for the other file anymore. The dtrace probes have to remain stable.
-void VM_GC_Operation::notify_gc_begin(bool full) {
- HOTSPOT_GC_BEGIN(
- full);
- HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
-}
-
-void VM_GC_Operation::notify_gc_end() {
- HOTSPOT_GC_END();
- HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
-}
-
-// Allocations may fail in several threads at about the same time,
-// resulting in multiple gc requests. We only want to do one of them.
-// In case a GC locker is active and the need for a GC is already signaled,
-// we want to skip this GC attempt altogether, without doing a futile
-// safepoint operation.
-bool VM_GC_Operation::skip_operation() const {
- bool skip = (_gc_count_before != Universe::heap()->total_collections());
- if (_full && skip) {
- skip = (_full_gc_count_before != Universe::heap()->total_full_collections());
- }
- if (!skip && GCLocker::is_active_and_needs_gc()) {
- skip = Universe::heap()->is_maximal_no_gc();
- assert(!(skip && (_gc_cause == GCCause::_gc_locker)),
- "GCLocker cannot be active when initiating GC");
- }
- return skip;
-}
-
-bool VM_GC_Operation::doit_prologue() {
- assert(Thread::current()->is_Java_thread(), "just checking");
- assert(((_gc_cause != GCCause::_no_gc) &&
- (_gc_cause != GCCause::_no_cause_specified)), "Illegal GCCause");
-
- // To be able to handle a GC the VM initialization needs to be completed.
- if (!is_init_completed()) {
- vm_exit_during_initialization(
- err_msg("GC triggered before VM initialization completed. Try increasing "
- "NewSize, current value " SIZE_FORMAT "%s.",
- byte_size_in_proper_unit(NewSize),
- proper_unit_for_byte_size(NewSize)));
- }
-
- // If the GC count has changed someone beat us to the collection
- Heap_lock->lock();
-
- // Check invocations
- if (skip_operation()) {
- // skip collection
- Heap_lock->unlock();
- _prologue_succeeded = false;
- } else {
- _prologue_succeeded = true;
- }
- return _prologue_succeeded;
-}
-
-
-void VM_GC_Operation::doit_epilogue() {
- assert(Thread::current()->is_Java_thread(), "just checking");
- // Clean up old interpreter OopMap entries that were replaced
- // during the GC thread root traversal.
- OopMapCache::cleanup_old_entries();
- if (Universe::has_reference_pending_list()) {
- Heap_lock->notify_all();
- }
- Heap_lock->unlock();
-}
-
-bool VM_GC_HeapInspection::skip_operation() const {
- return false;
-}
-
-bool VM_GC_HeapInspection::collect() {
- if (GCLocker::is_active()) {
- return false;
- }
- Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
- return true;
-}
-
-void VM_GC_HeapInspection::doit() {
- HandleMark hm;
- Universe::heap()->ensure_parsability(false); // must happen, even if collection does
- // not happen (e.g. due to GCLocker)
- // or _full_gc being false
- if (_full_gc) {
- if (!collect()) {
- // The collection attempt was skipped because the gc locker is held.
- // The following dump may then be a tad misleading to someone expecting
- // only live objects to show up in the dump (see CR 6944195). Just issue
- // a suitable warning in that case and do not attempt to do a collection.
- // The latter is a subtle point, because even a failed attempt
- // to GC will, in fact, induce one in the future, which we
- // probably want to avoid in this case because the GC that we may
- // be about to attempt holds value for us only
- // if it happens now and not if it happens in the eventual
- // future.
- log_warning(gc)("GC locker is held; pre-dump GC was skipped");
- }
- }
- HeapInspection inspect(_csv_format, _print_help, _print_class_stats,
- _columns);
- inspect.heap_inspection(_out);
-}
-
-
-void VM_GenCollectForAllocation::doit() {
- SvcGCMarker sgcm(SvcGCMarker::MINOR);
-
- GenCollectedHeap* gch = GenCollectedHeap::heap();
- GCCauseSetter gccs(gch, _gc_cause);
- _result = gch->satisfy_failed_allocation(_word_size, _tlab);
- assert(gch->is_in_reserved_or_null(_result), "result not in heap");
-
- if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
- set_gc_locked();
- }
-}
-
-void VM_GenCollectFull::doit() {
- SvcGCMarker sgcm(SvcGCMarker::FULL);
-
- GenCollectedHeap* gch = GenCollectedHeap::heap();
- GCCauseSetter gccs(gch, _gc_cause);
- gch->do_full_collection(gch->must_clear_all_soft_refs(), _max_generation);
-}
-
-VM_CollectForMetadataAllocation::VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
- size_t size,
- Metaspace::MetadataType mdtype,
- uint gc_count_before,
- uint full_gc_count_before,
- GCCause::Cause gc_cause)
- : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true),
- _result(NULL), _size(size), _mdtype(mdtype), _loader_data(loader_data) {
- assert(_size != 0, "An allocation should always be requested with this operation.");
- AllocTracer::send_allocation_requiring_gc_event(_size * HeapWordSize, GCId::peek());
-}
-
-// Returns true iff concurrent GCs unloads metadata.
-bool VM_CollectForMetadataAllocation::initiate_concurrent_GC() {
-#if INCLUDE_CMSGC
- if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) {
- MetaspaceGC::set_should_concurrent_collect(true);
- return true;
- }
-#endif
-
-#if INCLUDE_G1GC
- if (UseG1GC && ClassUnloadingWithConcurrentMark) {
- G1CollectedHeap* g1h = G1CollectedHeap::heap();
- g1h->g1_policy()->collector_state()->set_initiate_conc_mark_if_possible(true);
-
- GCCauseSetter x(g1h, _gc_cause);
-
- // At this point we are supposed to start a concurrent cycle. We
- // will do so if one is not already in progress.
- bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
-
- if (should_start) {
- double pause_target = g1h->g1_policy()->max_pause_time_ms();
- g1h->do_collection_pause_at_safepoint(pause_target);
- }
- return true;
- }
-#endif
-
- return false;
-}
-
-void VM_CollectForMetadataAllocation::doit() {
- SvcGCMarker sgcm(SvcGCMarker::FULL);
-
- CollectedHeap* heap = Universe::heap();
- GCCauseSetter gccs(heap, _gc_cause);
-
- // Check again if the space is available. Another thread
- // may have similarly failed a metadata allocation and induced
- // a GC that freed space for the allocation.
- if (!MetadataAllocationFailALot) {
- _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
- if (_result != NULL) {
- return;
- }
- }
-
- if (initiate_concurrent_GC()) {
- // For CMS and G1 expand since the collection is going to be concurrent.
- _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
- if (_result != NULL) {
- return;
- }
-
- log_debug(gc)("%s full GC for Metaspace", UseConcMarkSweepGC ? "CMS" : "G1");
- }
-
- // Don't clear the soft refs yet.
- heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
- // After a GC try to allocate without expanding. Could fail
- // and expansion will be tried below.
- _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
- if (_result != NULL) {
- return;
- }
-
- // If still failing, allow the Metaspace to expand.
- // See delta_capacity_until_GC() for explanation of the
- // amount of the expansion.
- // This should work unless there really is no more space
- // or a MaxMetaspaceSize has been specified on the command line.
- _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
- if (_result != NULL) {
- return;
- }
-
- // If expansion failed, do a collection clearing soft references.
- heap->collect_as_vm_thread(GCCause::_metadata_GC_clear_soft_refs);
- _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
- if (_result != NULL) {
- return;
- }
-
- log_debug(gc)("After Metaspace GC failed to allocate size " SIZE_FORMAT, _size);
-
- if (GCLocker::is_active_and_needs_gc()) {
- set_gc_locked();
- }
-}
-
-VM_CollectForAllocation::VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause)
- : VM_GC_Operation(gc_count_before, cause), _word_size(word_size), _result(NULL) {
- // Only report if operation was really caused by an allocation.
- if (_word_size != 0) {
- AllocTracer::send_allocation_requiring_gc_event(_word_size * HeapWordSize, GCId::peek());
- }
-}
--- a/src/hotspot/share/gc/shared/vmGCOperations.hpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
-#define SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
-
-#include "gc/shared/collectedHeap.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
-#include "memory/heapInspection.hpp"
-#include "prims/jvmtiExport.hpp"
-#include "runtime/handles.hpp"
-#include "runtime/jniHandles.hpp"
-#include "runtime/synchronizer.hpp"
-#include "runtime/vm_operations.hpp"
-
-// The following class hierarchy represents
-// a set of operations (VM_Operation) related to GC.
-//
-// VM_Operation
-// VM_GC_Operation
-// VM_GC_HeapInspection
-// VM_GenCollectFull
-// VM_GenCollectFullConcurrent
-// VM_ParallelGCSystemGC
-// VM_CollectForAllocation
-// VM_GenCollectForAllocation
-// VM_ParallelGCFailedAllocation
-// VM_GC_Operation
-// - implements methods common to all classes in the hierarchy:
-// prevents multiple gc requests and manages lock on heap;
-//
-// VM_GC_HeapInspection
-// - prints class histogram on SIGBREAK if PrintClassHistogram
-// is specified; and also the attach "inspectheap" operation
-//
-// VM_CollectForAllocation
-// VM_GenCollectForAllocation
-// VM_ParallelGCFailedAllocation
-// - this operation is invoked when allocation is failed;
-// operation performs garbage collection and tries to
-// allocate afterwards;
-//
-// VM_GenCollectFull
-// VM_GenCollectFullConcurrent
-// VM_ParallelGCSystemGC
-// - these operations preform full collection of heaps of
-// different kind
-//
-
-class VM_GC_Operation: public VM_Operation {
- protected:
- uint _gc_count_before; // gc count before acquiring PLL
- uint _full_gc_count_before; // full gc count before acquiring PLL
- bool _full; // whether a "full" collection
- bool _prologue_succeeded; // whether doit_prologue succeeded
- GCCause::Cause _gc_cause; // the putative cause for this gc op
- bool _gc_locked; // will be set if gc was locked
-
- virtual bool skip_operation() const;
-
- public:
- VM_GC_Operation(uint gc_count_before,
- GCCause::Cause _cause,
- uint full_gc_count_before = 0,
- bool full = false) {
- _full = full;
- _prologue_succeeded = false;
- _gc_count_before = gc_count_before;
-
- // A subclass constructor will likely overwrite the following
- _gc_cause = _cause;
-
- _gc_locked = false;
-
- _full_gc_count_before = full_gc_count_before;
- // In ParallelScavengeHeap::mem_allocate() collections can be
- // executed within a loop and _all_soft_refs_clear can be set
- // true after they have been cleared by a collection and another
- // collection started so that _all_soft_refs_clear can be true
- // when this collection is started. Don't assert that
- // _all_soft_refs_clear have to be false here even though
- // mutators have run. Soft refs will be cleared again in this
- // collection.
- }
- ~VM_GC_Operation();
-
- // Acquire the reference synchronization lock
- virtual bool doit_prologue();
- // Do notifyAll (if needed) and release held lock
- virtual void doit_epilogue();
-
- virtual bool allow_nested_vm_operations() const { return true; }
- bool prologue_succeeded() const { return _prologue_succeeded; }
-
- void set_gc_locked() { _gc_locked = true; }
- bool gc_locked() const { return _gc_locked; }
-
- static void notify_gc_begin(bool full = false);
- static void notify_gc_end();
-};
-
-
-class VM_GC_HeapInspection: public VM_GC_Operation {
- private:
- outputStream* _out;
- bool _full_gc;
- bool _csv_format; // "comma separated values" format for spreadsheet.
- bool _print_help;
- bool _print_class_stats;
- const char* _columns;
- public:
- VM_GC_HeapInspection(outputStream* out, bool request_full_gc) :
- VM_GC_Operation(0 /* total collections, dummy, ignored */,
- GCCause::_heap_inspection /* GC Cause */,
- 0 /* total full collections, dummy, ignored */,
- request_full_gc) {
- _out = out;
- _full_gc = request_full_gc;
- _csv_format = false;
- _print_help = false;
- _print_class_stats = false;
- _columns = NULL;
- }
-
- ~VM_GC_HeapInspection() {}
- virtual VMOp_Type type() const { return VMOp_GC_HeapInspection; }
- virtual bool skip_operation() const;
- virtual void doit();
- void set_csv_format(bool value) {_csv_format = value;}
- void set_print_help(bool value) {_print_help = value;}
- void set_print_class_stats(bool value) {_print_class_stats = value;}
- void set_columns(const char* value) {_columns = value;}
- protected:
- bool collect();
-};
-
-class VM_CollectForAllocation : public VM_GC_Operation {
- protected:
- size_t _word_size; // Size of object to be allocated (in number of words)
- HeapWord* _result; // Allocation result (NULL if allocation failed)
-
- public:
- VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause);
-
- HeapWord* result() const {
- return _result;
- }
-};
-
-class VM_GenCollectForAllocation : public VM_CollectForAllocation {
- private:
- bool _tlab; // alloc is of a tlab.
- public:
- VM_GenCollectForAllocation(size_t word_size,
- bool tlab,
- uint gc_count_before)
- : VM_CollectForAllocation(word_size, gc_count_before, GCCause::_allocation_failure),
- _tlab(tlab) {
- assert(word_size != 0, "An allocation should always be requested with this operation.");
- }
- ~VM_GenCollectForAllocation() {}
- virtual VMOp_Type type() const { return VMOp_GenCollectForAllocation; }
- virtual void doit();
-};
-
-// VM operation to invoke a collection of the heap as a
-// GenCollectedHeap heap.
-class VM_GenCollectFull: public VM_GC_Operation {
- private:
- GenCollectedHeap::GenerationType _max_generation;
- public:
- VM_GenCollectFull(uint gc_count_before,
- uint full_gc_count_before,
- GCCause::Cause gc_cause,
- GenCollectedHeap::GenerationType max_generation)
- : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */),
- _max_generation(max_generation) { }
- ~VM_GenCollectFull() {}
- virtual VMOp_Type type() const { return VMOp_GenCollectFull; }
- virtual void doit();
-};
-
-class VM_CollectForMetadataAllocation: public VM_GC_Operation {
- private:
- MetaWord* _result;
- size_t _size; // size of object to be allocated
- Metaspace::MetadataType _mdtype;
- ClassLoaderData* _loader_data;
-
- public:
- VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
- size_t size,
- Metaspace::MetadataType mdtype,
- uint gc_count_before,
- uint full_gc_count_before,
- GCCause::Cause gc_cause);
-
- virtual VMOp_Type type() const { return VMOp_CollectForMetadataAllocation; }
- virtual void doit();
- MetaWord* result() const { return _result; }
-
- bool initiate_concurrent_GC();
-};
-
-class SvcGCMarker : public StackObj {
- private:
- JvmtiGCMarker _jgcm;
- public:
- typedef enum { MINOR, FULL, CONCURRENT } reason_type;
-
- SvcGCMarker(reason_type reason ) {
- VM_GC_Operation::notify_gc_begin(reason == FULL);
- }
-
- ~SvcGCMarker() {
- VM_GC_Operation::notify_gc_end();
- }
-};
-
-#endif // SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/workerDataArray.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/workerDataArray.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -34,7 +34,7 @@
class WorkerDataArray : public CHeapObj<mtGC> {
friend class WDAPrinter;
public:
- static const uint MaxThreadWorkItems = 3;
+ static const uint MaxThreadWorkItems = 4;
private:
T* _data;
uint _length;
@@ -49,6 +49,8 @@
void link_thread_work_items(WorkerDataArray<size_t>* thread_work_items, uint index = 0);
void set_thread_work_item(uint worker_i, size_t value, uint index = 0);
void add_thread_work_item(uint worker_i, size_t value, uint index = 0);
+ void set_or_add_thread_work_item(uint worker_i, size_t value, uint index = 0);
+
WorkerDataArray<size_t>* thread_work_items(uint index = 0) const {
assert(index < MaxThreadWorkItems, "Tried to access thread work item %u max %u", index, MaxThreadWorkItems);
return _thread_work_items[index];
--- a/src/hotspot/share/gc/shared/workerDataArray.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/workerDataArray.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -81,6 +81,17 @@
}
template <typename T>
+void WorkerDataArray<T>::set_or_add_thread_work_item(uint worker_i, size_t value, uint index) {
+ assert(index < MaxThreadWorkItems, "Tried to access thread work item %u (max %u)", index, MaxThreadWorkItems);
+ assert(_thread_work_items[index] != NULL, "No sub count");
+ if (_thread_work_items[index]->get(worker_i) == _thread_work_items[index]->uninitialized()) {
+ _thread_work_items[index]->set(worker_i, value);
+ } else {
+ _thread_work_items[index]->add(worker_i, value);
+ }
+}
+
+template <typename T>
void WorkerDataArray<T>::add(uint worker_i, T value) {
assert(worker_i < _length, "Worker %d is greater than max: %d", worker_i, _length);
assert(_data[worker_i] != uninitialized(), "No data to add to for worker %d", worker_i);
--- a/src/hotspot/share/gc/z/zDriver.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/z/zDriver.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -24,8 +24,8 @@
#include "precompiled.hpp"
#include "gc/shared/gcId.hpp"
#include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/isGCActiveMark.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "gc/z/zCollectedHeap.hpp"
#include "gc/z/zDriver.hpp"
#include "gc/z/zHeap.inline.hpp"
@@ -34,7 +34,7 @@
#include "gc/z/zStat.hpp"
#include "logging/log.hpp"
#include "memory/universe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
static const ZStatPhaseCycle ZPhaseCycle("Garbage Collection Cycle");
--- a/src/hotspot/share/gc/z/zErrno.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/z/zErrno.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. 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
@@ -23,6 +23,7 @@
#include "precompiled.hpp"
#include "gc/z/zErrno.hpp"
+#include "runtime/os.inline.hpp"
#include <errno.h>
#include <string.h>
@@ -46,5 +47,5 @@
}
const char* ZErrno::to_string() const {
- return strerror(_error);
+ return os::strerror(_error);
}
--- a/src/hotspot/share/jfr/leakprofiler/emitEventOperation.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/emitEventOperation.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
#ifndef SHARE_VM_LEAKPROFILER_EMITEVENTOPERATION_HPP
#define SHARE_VM_LEAKPROFILER_EMITEVENTOPERATION_HPP
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
class BFSClosure;
class EdgeStore;
--- a/src/hotspot/share/jfr/leakprofiler/startOperation.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/startOperation.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
#include "jfr/leakprofiler/sampling/objectSampler.hpp"
#include "jfr/recorder/service/jfrOptionSet.hpp"
#include "logging/log.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
// Safepoint operation for starting leak profiler object sampler
class StartOperation : public VM_Operation {
--- a/src/hotspot/share/jfr/leakprofiler/stopOperation.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/stopOperation.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -29,7 +29,7 @@
#include "jfr/leakprofiler/sampling/objectSampler.hpp"
#include "jfr/recorder/service/jfrOptionSet.hpp"
#include "logging/log.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
// Safepoint operation for stopping leak profiler object sampler
class StopOperation : public VM_Operation {
--- a/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,8 +32,8 @@
#include "gc/g1/g1HeapRegionEventSender.hpp"
#include "gc/shared/gcConfiguration.hpp"
#include "gc/shared/gcTrace.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "gc/shared/objectCountEventSender.hpp"
-#include "gc/shared/vmGCOperations.hpp"
#include "jfr/jfrEvents.hpp"
#include "jfr/periodic/jfrModuleEvent.hpp"
#include "jfr/periodic/jfrOSInterface.hpp"
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -49,7 +49,7 @@
#include "runtime/safepoint.hpp"
#include "runtime/synchronizer.hpp"
#include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#ifdef COMPILER2
#include "opto/compile.hpp"
--- a/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -50,7 +50,7 @@
#include "runtime/os.hpp"
#include "runtime/safepoint.hpp"
#include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
// set data iff *dest == NULL
--- a/src/hotspot/share/logging/logFileOutput.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/logging/logFileOutput.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -248,7 +248,7 @@
_stream = os::fopen(_file_name, FileOpenMode);
if (_stream == NULL) {
errstream->print_cr("Error opening log file '%s': %s",
- _file_name, strerror(errno));
+ _file_name, os::strerror(errno));
return false;
}
--- a/src/hotspot/share/memory/heapShared.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/heapShared.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -71,10 +71,7 @@
};
// Entry fields for subgraphs archived in the open archive heap region.
static ArchivableStaticFieldInfo open_archive_subgraph_entry_fields[] = {
- {"jdk/internal/module/ArchivedModuleGraph", "archivedSystemModules"},
- {"jdk/internal/module/ArchivedModuleGraph", "archivedModuleFinder"},
- {"jdk/internal/module/ArchivedModuleGraph", "archivedMainModule"},
- {"jdk/internal/module/ArchivedModuleGraph", "archivedConfiguration"},
+ {"jdk/internal/module/ArchivedModuleGraph", "archivedModuleGraph"},
{"java/util/ImmutableCollections$ListN", "EMPTY_LIST"},
{"java/util/ImmutableCollections$MapN", "EMPTY_MAP"},
{"java/util/ImmutableCollections$SetN", "EMPTY_SET"},
--- a/src/hotspot/share/memory/metaspaceShared.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceShared.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -61,7 +61,7 @@
#include "runtime/signature.hpp"
#include "runtime/timerTrace.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/align.hpp"
#include "utilities/bitMap.hpp"
#include "utilities/defaultStream.hpp"
--- a/src/hotspot/share/memory/universe.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/universe.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
#include "runtime/synchronizer.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/timerTrace.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/memoryService.hpp"
#include "utilities/align.hpp"
#include "utilities/copy.hpp"
@@ -1118,8 +1118,9 @@
size_t length = strlen(VerifySubSet);
char* subset_list = NEW_C_HEAP_ARRAY(char, length + 1, mtInternal);
strncpy(subset_list, VerifySubSet, length + 1);
+ char* save_ptr;
- char* token = strtok(subset_list, delimiter);
+ char* token = strtok_r(subset_list, delimiter, &save_ptr);
while (token != NULL) {
if (strcmp(token, "threads") == 0) {
verify_flags |= Verify_Threads;
@@ -1144,7 +1145,7 @@
} else {
vm_exit_during_initialization(err_msg("VerifySubSet: \'%s\' memory sub-system is unknown, please correct it", token));
}
- token = strtok(NULL, delimiter);
+ token = strtok_r(NULL, delimiter, &save_ptr);
}
FREE_C_HEAP_ARRAY(char, subset_list);
}
--- a/src/hotspot/share/oops/generateOopMap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/oops/generateOopMap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1879,7 +1879,7 @@
constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
BasicType bt = ldc.result_type();
#ifdef ASSERT
- BasicType tag_bt = tag.is_dynamic_constant() ? bt : tag.basic_type();
+ BasicType tag_bt = (tag.is_dynamic_constant() || tag.is_dynamic_constant_in_error()) ? bt : tag.basic_type();
assert(bt == tag_bt, "same result");
#endif
CellTypeState cts;
--- a/src/hotspot/share/opto/memnode.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/opto/memnode.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -3230,7 +3230,7 @@
while (leading != NULL && (!leading->is_MemBar() || !leading->as_MemBar()->leading())) {
while (leading == NULL || leading->is_top() || seen.test_set(leading->_idx)) {
leading = NULL;
- while (regions.size() > 0) {
+ while (regions.size() > 0 && leading == NULL) {
Node* r = regions.node();
uint i = regions.index();
if (i < r->req()) {
--- a/src/hotspot/share/prims/jni.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jni.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -79,7 +79,7 @@
#include "runtime/sharedRuntime.hpp"
#include "runtime/signature.hpp"
#include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/memTracker.hpp"
#include "services/runtimeService.hpp"
#include "utilities/defaultStream.hpp"
--- a/src/hotspot/share/prims/jvm.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvm.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
#include "runtime/thread.inline.hpp"
#include "runtime/threadSMR.hpp"
#include "runtime/vframe.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vm_version.hpp"
#include "services/attachListener.hpp"
#include "services/management.hpp"
--- a/src/hotspot/share/prims/jvmtiEnvBase.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvBase.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -52,7 +52,7 @@
#include "runtime/vframe.hpp"
#include "runtime/vframe_hp.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
///////////////////////////////////////////////////////////////
//
--- a/src/hotspot/share/prims/jvmtiEnvBase.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvBase.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -33,7 +33,7 @@
#include "runtime/fieldDescriptor.hpp"
#include "runtime/frame.hpp"
#include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/growableArray.hpp"
#include "utilities/macros.hpp"
--- a/src/hotspot/share/prims/jvmtiEnvThreadState.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvThreadState.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,7 @@
#include "runtime/signature.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/vframe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
///////////////////////////////////////////////////////////////
--- a/src/hotspot/share/prims/jvmtiEventController.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEventController.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -38,7 +38,7 @@
#include "runtime/vframe.hpp"
#include "runtime/vframe_hp.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#ifdef JVMTI_TRACE
#define EC_TRACE(out) do { \
--- a/src/hotspot/share/prims/jvmtiImpl.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -50,7 +50,7 @@
#include "runtime/threadSMR.hpp"
#include "runtime/vframe.hpp"
#include "runtime/vframe_hp.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/exceptions.hpp"
//
--- a/src/hotspot/share/prims/jvmtiImpl.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiImpl.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -33,7 +33,7 @@
#include "prims/jvmtiTrace.hpp"
#include "prims/jvmtiUtil.hpp"
#include "runtime/stackValueCollection.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/ostream.hpp"
//
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
#include "memory/resourceArea.hpp"
#include "oops/objArrayKlass.hpp"
#include "oops/objArrayOop.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
// Introduction:
//
--- a/src/hotspot/share/prims/jvmtiTagMap.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiTagMap.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -58,7 +58,7 @@
#include "runtime/threadSMR.hpp"
#include "runtime/vframe.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/macros.hpp"
#if INCLUDE_ZGC
#include "gc/z/zGlobals.hpp"
--- a/src/hotspot/share/prims/jvmtiTrace.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiTrace.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
#include "prims/jvmtiEventController.hpp"
#include "prims/jvmtiUtil.hpp"
#include "runtime/stackValueCollection.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
///////////////////////////////////////////////////////////////
//
--- a/src/hotspot/share/prims/jvmtiUtil.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiUtil.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -27,7 +27,7 @@
#include "runtime/handles.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/exceptions.hpp"
//
--- a/src/hotspot/share/runtime/biasedLocking.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/biasedLocking.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
#include "runtime/threadSMR.hpp"
#include "runtime/vframe.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
static bool _biased_locking_enabled = false;
--- a/src/hotspot/share/runtime/compilationPolicy.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/compilationPolicy.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -42,7 +42,7 @@
#include "runtime/tieredThresholdPolicy.hpp"
#include "runtime/timer.hpp"
#include "runtime/vframe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/events.hpp"
#include "utilities/globalDefinitions.hpp"
--- a/src/hotspot/share/runtime/compilationPolicy.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/compilationPolicy.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "code/nmethod.hpp"
#include "compiler/compileBroker.hpp"
#include "memory/allocation.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/growableArray.hpp"
// The CompilationPolicy selects which method (if any) should be compiled.
--- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
#include "runtime/safepointMechanism.inline.hpp"
#include "runtime/safepointVerifiers.hpp"
#include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/globalDefinitions.hpp"
#include "utilities/macros.hpp"
#include "utilities/preserveException.hpp"
--- a/src/hotspot/share/runtime/java.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/java.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -68,7 +68,7 @@
#include "runtime/task.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/timer.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/memTracker.hpp"
#include "utilities/dtrace.hpp"
#include "utilities/globalDefinitions.hpp"
--- a/src/hotspot/share/runtime/os.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/os.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
#include "code/codeCache.hpp"
#include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "logging/log.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
--- a/src/hotspot/share/runtime/reflection.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/reflection.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -417,11 +417,9 @@
under_unsafe_anonymous_host(accessee_ik, accessor_ik))
return true;
- if ((RelaxAccessControlCheck &&
+ if (RelaxAccessControlCheck &&
accessor_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION &&
- accessee_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION) ||
- (accessor_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION &&
- accessee_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION)) {
+ accessee_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION) {
return classloader_only &&
Verifier::relax_access_for(accessor_ik->class_loader()) &&
accessor_ik->protection_domain() == accessee_ik->protection_domain() &&
--- a/src/hotspot/share/runtime/sharedRuntime.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -1395,6 +1395,7 @@
// Patching IC caches may fail if we run out if transition stubs.
// We refill the ic stubs then and try again.
for (;;) {
+ ICRefillVerifier ic_refill_verifier;
bool successful = resolve_sub_helper_internal(callee_method, caller_frame, caller_nm,
is_virtual, is_optimized, receiver,
call_info, invoke_code, CHECK_(methodHandle()));
@@ -1603,10 +1604,10 @@
// Potential change to megamorphic
bool successful = inline_cache->set_to_megamorphic(&call_info, bc, needs_ic_stub_refill, CHECK_false);
+ if (needs_ic_stub_refill) {
+ return false;
+ }
if (!successful) {
- if (!needs_ic_stub_refill) {
- return false;
- }
if (!inline_cache->set_to_clean()) {
needs_ic_stub_refill = true;
return false;
@@ -1690,6 +1691,7 @@
CompiledMethod* caller_nm = cb->as_compiled_method();
for (;;) {
+ ICRefillVerifier ic_refill_verifier;
bool needs_ic_stub_refill = false;
bool successful = handle_ic_miss_helper_internal(receiver, caller_nm, caller_frame, callee_method,
bc, call_info, needs_ic_stub_refill, CHECK_(methodHandle()));
@@ -1798,6 +1800,7 @@
// resolve is only done once.
for (;;) {
+ ICRefillVerifier ic_refill_verifier;
if (!clear_ic_at_addr(caller_nm, call_addr, is_static_call)) {
InlineCacheBuffer::refill_ic_stubs();
} else {
--- a/src/hotspot/share/runtime/sweeper.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/sweeper.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -46,7 +46,7 @@
#include "runtime/os.hpp"
#include "runtime/sweeper.hpp"
#include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
#include "utilities/events.hpp"
#include "utilities/xmlstream.hpp"
--- a/src/hotspot/share/runtime/thread.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/thread.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -100,7 +100,7 @@
#include "runtime/vframeArray.hpp"
#include "runtime/vframe_hp.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vm_version.hpp"
#include "services/attachListener.hpp"
#include "services/management.hpp"
@@ -231,6 +231,7 @@
set_active_handles(NULL);
set_free_handle_block(NULL);
set_last_handle_mark(NULL);
+ DEBUG_ONLY(_missed_ic_stub_refill_mark = NULL);
// This initial value ==> never claimed.
_oops_do_parity = 0;
--- a/src/hotspot/share/runtime/thread.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/thread.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -328,6 +328,21 @@
HandleMark* last_handle_mark() const { return _last_handle_mark; }
private:
+#ifdef ASSERT
+ void* _missed_ic_stub_refill_mark;
+
+ public:
+ void* missed_ic_stub_refill_mark() {
+ return _missed_ic_stub_refill_mark;
+ }
+
+ void set_missed_ic_stub_refill_mark(void* mark) {
+ _missed_ic_stub_refill_mark = mark;
+ }
+#endif
+
+ private:
+
// debug support for checking if code does allow safepoints or not
// GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
// mutex, or blocking on an object synchronizer (Java locking).
--- a/src/hotspot/share/runtime/threadSMR.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/threadSMR.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "runtime/jniHandles.inline.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/threadSMR.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/threadService.hpp"
#include "utilities/copy.hpp"
#include "utilities/globalDefinitions.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/runtime/vmOperations.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,508 @@
+/*
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "logging/log.hpp"
+#include "logging/logStream.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/symbol.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+#include "runtime/sweeper.hpp"
+#include "runtime/thread.inline.hpp"
+#include "runtime/threadSMR.inline.hpp"
+#include "runtime/vmOperations.hpp"
+#include "services/threadService.hpp"
+
+#define VM_OP_NAME_INITIALIZE(name) #name,
+
+const char* VM_Operation::_names[VM_Operation::VMOp_Terminating] = \
+ { VM_OPS_DO(VM_OP_NAME_INITIALIZE) };
+
+void VM_Operation::set_calling_thread(Thread* thread, ThreadPriority priority) {
+ _calling_thread = thread;
+ assert(MinPriority <= priority && priority <= MaxPriority, "sanity check");
+ _priority = priority;
+}
+
+
+void VM_Operation::evaluate() {
+ ResourceMark rm;
+ LogTarget(Debug, vmoperation) lt;
+ if (lt.is_enabled()) {
+ LogStream ls(lt);
+ ls.print("begin ");
+ print_on_error(&ls);
+ ls.cr();
+ }
+ doit();
+ if (lt.is_enabled()) {
+ LogStream ls(lt);
+ ls.print("end ");
+ print_on_error(&ls);
+ ls.cr();
+ }
+}
+
+const char* VM_Operation::mode_to_string(Mode mode) {
+ switch(mode) {
+ case _safepoint : return "safepoint";
+ case _no_safepoint : return "no safepoint";
+ case _concurrent : return "concurrent";
+ case _async_safepoint: return "async safepoint";
+ default : return "unknown";
+ }
+}
+// Called by fatal error handler.
+void VM_Operation::print_on_error(outputStream* st) const {
+ st->print("VM_Operation (" PTR_FORMAT "): ", p2i(this));
+ st->print("%s", name());
+
+ const char* mode = mode_to_string(evaluation_mode());
+ st->print(", mode: %s", mode);
+
+ if (calling_thread()) {
+ st->print(", requested by thread " PTR_FORMAT, p2i(calling_thread()));
+ }
+}
+
+void VM_ThreadStop::doit() {
+ assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
+ ThreadsListHandle tlh;
+ JavaThread* target = java_lang_Thread::thread(target_thread());
+ // Note that this now allows multiple ThreadDeath exceptions to be
+ // thrown at a thread.
+ if (target != NULL && (!EnableThreadSMRExtraValidityChecks || tlh.includes(target))) {
+ // The target thread has run and has not exited yet.
+ target->send_thread_stop(throwable());
+ }
+}
+
+void VM_ClearICs::doit() {
+ if (_preserve_static_stubs) {
+ CodeCache::cleanup_inline_caches();
+ } else {
+ CodeCache::clear_inline_caches();
+ }
+}
+
+void VM_Deoptimize::doit() {
+ // We do not want any GCs to happen while we are in the middle of this VM operation
+ ResourceMark rm;
+ DeoptimizationMarker dm;
+
+ // Deoptimize all activations depending on marked nmethods
+ Deoptimization::deoptimize_dependents();
+
+ // Make the dependent methods not entrant
+ CodeCache::make_marked_nmethods_not_entrant();
+}
+
+void VM_MarkActiveNMethods::doit() {
+ NMethodSweeper::mark_active_nmethods();
+}
+
+VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
+ _thread = thread;
+ _id = id;
+ _reason = reason;
+}
+
+
+void VM_DeoptimizeFrame::doit() {
+ assert(_reason > Deoptimization::Reason_none && _reason < Deoptimization::Reason_LIMIT, "invalid deopt reason");
+ Deoptimization::deoptimize_frame_internal(_thread, _id, (Deoptimization::DeoptReason)_reason);
+}
+
+
+#ifndef PRODUCT
+
+void VM_DeoptimizeAll::doit() {
+ DeoptimizationMarker dm;
+ JavaThreadIteratorWithHandle jtiwh;
+ // deoptimize all java threads in the system
+ if (DeoptimizeALot) {
+ for (; JavaThread *thread = jtiwh.next(); ) {
+ if (thread->has_last_Java_frame()) {
+ thread->deoptimize();
+ }
+ }
+ } else if (DeoptimizeRandom) {
+
+ // Deoptimize some selected threads and frames
+ int tnum = os::random() & 0x3;
+ int fnum = os::random() & 0x3;
+ int tcount = 0;
+ for (; JavaThread *thread = jtiwh.next(); ) {
+ if (thread->has_last_Java_frame()) {
+ if (tcount++ == tnum) {
+ tcount = 0;
+ int fcount = 0;
+ // Deoptimize some selected frames.
+ // Biased llocking wants a updated register map
+ for(StackFrameStream fst(thread, UseBiasedLocking); !fst.is_done(); fst.next()) {
+ if (fst.current()->can_be_deoptimized()) {
+ if (fcount++ == fnum) {
+ fcount = 0;
+ Deoptimization::deoptimize(thread, *fst.current(), fst.register_map());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+void VM_ZombieAll::doit() {
+ JavaThread *thread = (JavaThread *)calling_thread();
+ assert(thread->is_Java_thread(), "must be a Java thread");
+ thread->make_zombies();
+}
+
+#endif // !PRODUCT
+
+void VM_Verify::doit() {
+ Universe::heap()->prepare_for_verify();
+ Universe::verify();
+}
+
+bool VM_PrintThreads::doit_prologue() {
+ // Get Heap_lock if concurrent locks will be dumped
+ if (_print_concurrent_locks) {
+ Heap_lock->lock();
+ }
+ return true;
+}
+
+void VM_PrintThreads::doit() {
+ Threads::print_on(_out, true, false, _print_concurrent_locks, _print_extended_info);
+}
+
+void VM_PrintThreads::doit_epilogue() {
+ if (_print_concurrent_locks) {
+ // Release Heap_lock
+ Heap_lock->unlock();
+ }
+}
+
+void VM_PrintJNI::doit() {
+ JNIHandles::print_on(_out);
+}
+
+void VM_PrintMetadata::doit() {
+ MetaspaceUtils::print_report(_out, _scale, _flags);
+}
+
+VM_FindDeadlocks::~VM_FindDeadlocks() {
+ if (_deadlocks != NULL) {
+ DeadlockCycle* cycle = _deadlocks;
+ while (cycle != NULL) {
+ DeadlockCycle* d = cycle;
+ cycle = cycle->next();
+ delete d;
+ }
+ }
+}
+
+void VM_FindDeadlocks::doit() {
+ // Update the hazard ptr in the originating thread to the current
+ // list of threads. This VM operation needs the current list of
+ // threads for proper deadlock detection and those are the
+ // JavaThreads we need to be protected when we return info to the
+ // originating thread.
+ _setter.set();
+
+ _deadlocks = ThreadService::find_deadlocks_at_safepoint(_setter.list(), _concurrent_locks);
+ if (_out != NULL) {
+ int num_deadlocks = 0;
+ for (DeadlockCycle* cycle = _deadlocks; cycle != NULL; cycle = cycle->next()) {
+ num_deadlocks++;
+ cycle->print_on_with(_setter.list(), _out);
+ }
+
+ if (num_deadlocks == 1) {
+ _out->print_cr("\nFound 1 deadlock.\n");
+ _out->flush();
+ } else if (num_deadlocks > 1) {
+ _out->print_cr("\nFound %d deadlocks.\n", num_deadlocks);
+ _out->flush();
+ }
+ }
+}
+
+VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
+ int max_depth,
+ bool with_locked_monitors,
+ bool with_locked_synchronizers) {
+ _result = result;
+ _num_threads = 0; // 0 indicates all threads
+ _threads = NULL;
+ _result = result;
+ _max_depth = max_depth;
+ _with_locked_monitors = with_locked_monitors;
+ _with_locked_synchronizers = with_locked_synchronizers;
+}
+
+VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
+ GrowableArray<instanceHandle>* threads,
+ int num_threads,
+ int max_depth,
+ bool with_locked_monitors,
+ bool with_locked_synchronizers) {
+ _result = result;
+ _num_threads = num_threads;
+ _threads = threads;
+ _result = result;
+ _max_depth = max_depth;
+ _with_locked_monitors = with_locked_monitors;
+ _with_locked_synchronizers = with_locked_synchronizers;
+}
+
+bool VM_ThreadDump::doit_prologue() {
+ if (_with_locked_synchronizers) {
+ // Acquire Heap_lock to dump concurrent locks
+ Heap_lock->lock();
+ }
+
+ return true;
+}
+
+void VM_ThreadDump::doit_epilogue() {
+ if (_with_locked_synchronizers) {
+ // Release Heap_lock
+ Heap_lock->unlock();
+ }
+}
+
+void VM_ThreadDump::doit() {
+ ResourceMark rm;
+
+ // Set the hazard ptr in the originating thread to protect the
+ // current list of threads. This VM operation needs the current list
+ // of threads for a proper dump and those are the JavaThreads we need
+ // to be protected when we return info to the originating thread.
+ _result->set_t_list();
+
+ ConcurrentLocksDump concurrent_locks(true);
+ if (_with_locked_synchronizers) {
+ concurrent_locks.dump_at_safepoint();
+ }
+
+ if (_num_threads == 0) {
+ // Snapshot all live threads
+
+ for (uint i = 0; i < _result->t_list()->length(); i++) {
+ JavaThread* jt = _result->t_list()->thread_at(i);
+ if (jt->is_exiting() ||
+ jt->is_hidden_from_external_view()) {
+ // skip terminating threads and hidden threads
+ continue;
+ }
+ ThreadConcurrentLocks* tcl = NULL;
+ if (_with_locked_synchronizers) {
+ tcl = concurrent_locks.thread_concurrent_locks(jt);
+ }
+ ThreadSnapshot* ts = snapshot_thread(jt, tcl);
+ _result->add_thread_snapshot(ts);
+ }
+ } else {
+ // Snapshot threads in the given _threads array
+ // A dummy snapshot is created if a thread doesn't exist
+
+ for (int i = 0; i < _num_threads; i++) {
+ instanceHandle th = _threads->at(i);
+ if (th() == NULL) {
+ // skip if the thread doesn't exist
+ // Add a dummy snapshot
+ _result->add_thread_snapshot(new ThreadSnapshot());
+ continue;
+ }
+
+ // Dump thread stack only if the thread is alive and not exiting
+ // and not VM internal thread.
+ JavaThread* jt = java_lang_Thread::thread(th());
+ if (jt != NULL && !_result->t_list()->includes(jt)) {
+ // _threads[i] doesn't refer to a valid JavaThread; this check
+ // is primarily for JVM_DumpThreads() which doesn't have a good
+ // way to validate the _threads array.
+ jt = NULL;
+ }
+ if (jt == NULL || /* thread not alive */
+ jt->is_exiting() ||
+ jt->is_hidden_from_external_view()) {
+ // add a NULL snapshot if skipped
+ _result->add_thread_snapshot(new ThreadSnapshot());
+ continue;
+ }
+ ThreadConcurrentLocks* tcl = NULL;
+ if (_with_locked_synchronizers) {
+ tcl = concurrent_locks.thread_concurrent_locks(jt);
+ }
+ ThreadSnapshot* ts = snapshot_thread(jt, tcl);
+ _result->add_thread_snapshot(ts);
+ }
+ }
+}
+
+ThreadSnapshot* VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) {
+ ThreadSnapshot* snapshot = new ThreadSnapshot(_result->t_list(), java_thread);
+ snapshot->dump_stack_at_safepoint(_max_depth, _with_locked_monitors);
+ snapshot->set_concurrent_locks(tcl);
+ return snapshot;
+}
+
+volatile bool VM_Exit::_vm_exited = false;
+Thread * volatile VM_Exit::_shutdown_thread = NULL;
+
+int VM_Exit::set_vm_exited() {
+
+ Thread * thr_cur = Thread::current();
+
+ assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
+
+ int num_active = 0;
+
+ _shutdown_thread = thr_cur;
+ _vm_exited = true; // global flag
+ for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thr = jtiwh.next(); ) {
+ if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
+ ++num_active;
+ thr->set_terminated(JavaThread::_vm_exited); // per-thread flag
+ }
+ }
+
+ return num_active;
+}
+
+int VM_Exit::wait_for_threads_in_native_to_block() {
+ // VM exits at safepoint. This function must be called at the final safepoint
+ // to wait for threads in _thread_in_native state to be quiescent.
+ assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
+
+ Thread * thr_cur = Thread::current();
+ Monitor timer(Mutex::leaf, "VM_Exit timer", true,
+ Monitor::_safepoint_check_never);
+
+ // Compiler threads need longer wait because they can access VM data directly
+ // while in native. If they are active and some structures being used are
+ // deleted by the shutdown sequence, they will crash. On the other hand, user
+ // threads must go through native=>Java/VM transitions first to access VM
+ // data, and they will be stopped during state transition. In theory, we
+ // don't have to wait for user threads to be quiescent, but it's always
+ // better to terminate VM when current thread is the only active thread, so
+ // wait for user threads too. Numbers are in 10 milliseconds.
+ int max_wait_user_thread = 30; // at least 300 milliseconds
+ int max_wait_compiler_thread = 1000; // at least 10 seconds
+
+ int max_wait = max_wait_compiler_thread;
+
+ int attempts = 0;
+ JavaThreadIteratorWithHandle jtiwh;
+ while (true) {
+ int num_active = 0;
+ int num_active_compiler_thread = 0;
+
+ jtiwh.rewind();
+ for (; JavaThread *thr = jtiwh.next(); ) {
+ if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
+ num_active++;
+ if (thr->is_Compiler_thread()) {
+ num_active_compiler_thread++;
+ }
+ }
+ }
+
+ if (num_active == 0) {
+ return 0;
+ } else if (attempts > max_wait) {
+ return num_active;
+ } else if (num_active_compiler_thread == 0 && attempts > max_wait_user_thread) {
+ return num_active;
+ }
+
+ attempts++;
+
+ MutexLockerEx ml(&timer, Mutex::_no_safepoint_check_flag);
+ timer.wait(Mutex::_no_safepoint_check_flag, 10);
+ }
+}
+
+void VM_Exit::doit() {
+ CompileBroker::set_should_block();
+
+ // Wait for a short period for threads in native to block. Any thread
+ // still executing native code after the wait will be stopped at
+ // native==>Java/VM barriers.
+ // Among 16276 JCK tests, 94% of them come here without any threads still
+ // running in native; the other 6% are quiescent within 250ms (Ultra 80).
+ wait_for_threads_in_native_to_block();
+
+ set_vm_exited();
+
+ // cleanup globals resources before exiting. exit_globals() currently
+ // cleans up outputStream resources and PerfMemory resources.
+ exit_globals();
+
+ // Check for exit hook
+ exit_hook_t exit_hook = Arguments::exit_hook();
+ if (exit_hook != NULL) {
+ // exit hook should exit.
+ exit_hook(_exit_code);
+ // ... but if it didn't, we must do it here
+ vm_direct_exit(_exit_code);
+ } else {
+ vm_direct_exit(_exit_code);
+ }
+}
+
+
+void VM_Exit::wait_if_vm_exited() {
+ if (_vm_exited &&
+ Thread::current_or_null() != _shutdown_thread) {
+ // _vm_exited is set at safepoint, and the Threads_lock is never released
+ // we will block here until the process dies
+ Threads_lock->lock_without_safepoint_check();
+ ShouldNotReachHere();
+ }
+}
+
+void VM_PrintCompileQueue::doit() {
+ CompileBroker::print_compile_queues(_out);
+}
+
+#if INCLUDE_SERVICES
+void VM_PrintClassHierarchy::doit() {
+ KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
+}
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/runtime/vmOperations.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,512 @@
+/*
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_VMOPERATIONS_HPP
+#define SHARE_VM_RUNTIME_VMOPERATIONS_HPP
+
+#include "classfile/javaClasses.hpp"
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/threadSMR.hpp"
+#include "code/codeCache.hpp"
+
+// The following classes are used for operations
+// initiated by a Java thread but that must
+// take place in the VMThread.
+
+#define VM_OP_ENUM(type) VMOp_##type,
+
+// Note: When new VM_XXX comes up, add 'XXX' to the template table.
+#define VM_OPS_DO(template) \
+ template(None) \
+ template(ThreadStop) \
+ template(ThreadDump) \
+ template(PrintThreads) \
+ template(FindDeadlocks) \
+ template(ClearICs) \
+ template(ForceSafepoint) \
+ template(ForceAsyncSafepoint) \
+ template(Deoptimize) \
+ template(DeoptimizeFrame) \
+ template(DeoptimizeAll) \
+ template(ZombieAll) \
+ template(Verify) \
+ template(PrintJNI) \
+ template(HeapDumper) \
+ template(DeoptimizeTheWorld) \
+ template(CollectForMetadataAllocation) \
+ template(GC_HeapInspection) \
+ template(GenCollectFull) \
+ template(GenCollectFullConcurrent) \
+ template(GenCollectForAllocation) \
+ template(ParallelGCFailedAllocation) \
+ template(ParallelGCSystemGC) \
+ template(CMS_Initial_Mark) \
+ template(CMS_Final_Remark) \
+ template(G1CollectForAllocation) \
+ template(G1CollectFull) \
+ template(G1Concurrent) \
+ template(ZOperation) \
+ template(HandshakeOneThread) \
+ template(HandshakeAllThreads) \
+ template(HandshakeFallback) \
+ template(EnableBiasedLocking) \
+ template(RevokeBias) \
+ template(BulkRevokeBias) \
+ template(PopulateDumpSharedSpace) \
+ template(JNIFunctionTableCopier) \
+ template(RedefineClasses) \
+ template(UpdateForPopTopFrame) \
+ template(SetFramePop) \
+ template(GetOwnedMonitorInfo) \
+ template(GetObjectMonitorUsage) \
+ template(GetCurrentContendedMonitor) \
+ template(GetStackTrace) \
+ template(GetMultipleStackTraces) \
+ template(GetAllStackTraces) \
+ template(GetThreadListStackTraces) \
+ template(GetFrameCount) \
+ template(GetFrameLocation) \
+ template(ChangeBreakpoints) \
+ template(GetOrSetLocal) \
+ template(GetCurrentLocation) \
+ template(EnterInterpOnlyMode) \
+ template(ChangeSingleStep) \
+ template(HeapWalkOperation) \
+ template(HeapIterateOperation) \
+ template(ReportJavaOutOfMemory) \
+ template(JFRCheckpoint) \
+ template(Exit) \
+ template(LinuxDllLoad) \
+ template(RotateGCLog) \
+ template(WhiteBoxOperation) \
+ template(ClassLoaderStatsOperation) \
+ template(ClassLoaderHierarchyOperation) \
+ template(DumpHashtable) \
+ template(DumpTouchedMethods) \
+ template(MarkActiveNMethods) \
+ template(PrintCompileQueue) \
+ template(PrintClassHierarchy) \
+ template(ThreadSuspend) \
+ template(CTWThreshold) \
+ template(ThreadsSuspendJVMTI) \
+ template(ICBufferFull) \
+ template(ScavengeMonitors) \
+ template(PrintMetadata) \
+ template(GTestExecuteAtSafepoint) \
+
+class VM_Operation: public CHeapObj<mtInternal> {
+ public:
+ enum Mode {
+ _safepoint, // blocking, safepoint, vm_op C-heap allocated
+ _no_safepoint, // blocking, no safepoint, vm_op C-Heap allocated
+ _concurrent, // non-blocking, no safepoint, vm_op C-Heap allocated
+ _async_safepoint // non-blocking, safepoint, vm_op C-Heap allocated
+ };
+
+ enum VMOp_Type {
+ VM_OPS_DO(VM_OP_ENUM)
+ VMOp_Terminating
+ };
+
+ private:
+ Thread* _calling_thread;
+ ThreadPriority _priority;
+ long _timestamp;
+ VM_Operation* _next;
+ VM_Operation* _prev;
+
+ // The VM operation name array
+ static const char* _names[];
+
+ public:
+ VM_Operation() { _calling_thread = NULL; _next = NULL; _prev = NULL; }
+ virtual ~VM_Operation() {}
+
+ // VM operation support (used by VM thread)
+ Thread* calling_thread() const { return _calling_thread; }
+ ThreadPriority priority() { return _priority; }
+ void set_calling_thread(Thread* thread, ThreadPriority priority);
+
+ long timestamp() const { return _timestamp; }
+ void set_timestamp(long timestamp) { _timestamp = timestamp; }
+
+ // Called by VM thread - does in turn invoke doit(). Do not override this
+ void evaluate();
+
+ // evaluate() is called by the VMThread and in turn calls doit().
+ // If the thread invoking VMThread::execute((VM_Operation*) is a JavaThread,
+ // doit_prologue() is called in that thread before transferring control to
+ // the VMThread.
+ // If doit_prologue() returns true the VM operation will proceed, and
+ // doit_epilogue() will be called by the JavaThread once the VM operation
+ // completes. If doit_prologue() returns false the VM operation is cancelled.
+ virtual void doit() = 0;
+ virtual bool doit_prologue() { return true; };
+ virtual void doit_epilogue() {}; // Note: Not called if mode is: _concurrent
+
+ // Type test
+ virtual bool is_methodCompiler() const { return false; }
+
+ // Linking
+ VM_Operation *next() const { return _next; }
+ VM_Operation *prev() const { return _prev; }
+ void set_next(VM_Operation *next) { _next = next; }
+ void set_prev(VM_Operation *prev) { _prev = prev; }
+
+ // Configuration. Override these appropriately in subclasses.
+ virtual VMOp_Type type() const = 0;
+ virtual Mode evaluation_mode() const { return _safepoint; }
+ virtual bool allow_nested_vm_operations() const { return false; }
+ virtual bool is_cheap_allocated() const { return false; }
+ virtual void oops_do(OopClosure* f) { /* do nothing */ };
+
+ // CAUTION: <don't hang yourself with following rope>
+ // If you override these methods, make sure that the evaluation
+ // of these methods is race-free and non-blocking, since these
+ // methods may be evaluated either by the mutators or by the
+ // vm thread, either concurrently with mutators or with the mutators
+ // stopped. In other words, taking locks is verboten, and if there
+ // are any races in evaluating the conditions, they'd better be benign.
+ virtual bool evaluate_at_safepoint() const {
+ return evaluation_mode() == _safepoint ||
+ evaluation_mode() == _async_safepoint;
+ }
+ virtual bool evaluate_concurrently() const {
+ return evaluation_mode() == _concurrent ||
+ evaluation_mode() == _async_safepoint;
+ }
+
+ static const char* mode_to_string(Mode mode);
+
+ // Debugging
+ virtual void print_on_error(outputStream* st) const;
+ const char* name() const { return _names[type()]; }
+ static const char* name(int type) {
+ assert(type >= 0 && type < VMOp_Terminating, "invalid VM operation type");
+ return _names[type];
+ }
+#ifndef PRODUCT
+ void print_on(outputStream* st) const { print_on_error(st); }
+#endif
+};
+
+class VM_ThreadStop: public VM_Operation {
+ private:
+ oop _thread; // The Thread that the Throwable is thrown against
+ oop _throwable; // The Throwable thrown at the target Thread
+ public:
+ // All oops are passed as JNI handles, since there is no guarantee that a GC might happen before the
+ // VM operation is executed.
+ VM_ThreadStop(oop thread, oop throwable) {
+ _thread = thread;
+ _throwable = throwable;
+ }
+ VMOp_Type type() const { return VMOp_ThreadStop; }
+ oop target_thread() const { return _thread; }
+ oop throwable() const { return _throwable;}
+ void doit();
+ // We deoptimize if top-most frame is compiled - this might require a C2I adapter to be generated
+ bool allow_nested_vm_operations() const { return true; }
+ Mode evaluation_mode() const { return _async_safepoint; }
+ bool is_cheap_allocated() const { return true; }
+
+ // GC support
+ void oops_do(OopClosure* f) {
+ f->do_oop(&_thread); f->do_oop(&_throwable);
+ }
+};
+
+class VM_ClearICs: public VM_Operation {
+ private:
+ bool _preserve_static_stubs;
+ public:
+ VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; }
+ void doit();
+ VMOp_Type type() const { return VMOp_ClearICs; }
+};
+
+// empty vm op, evaluated just to force a safepoint
+class VM_ForceSafepoint: public VM_Operation {
+ public:
+ void doit() {}
+ VMOp_Type type() const { return VMOp_ForceSafepoint; }
+};
+
+// empty vm op, when forcing a safepoint to suspend a thread
+class VM_ThreadSuspend: public VM_ForceSafepoint {
+ public:
+ VMOp_Type type() const { return VMOp_ThreadSuspend; }
+};
+
+// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper
+class VM_CTWThreshold: public VM_ForceSafepoint {
+ public:
+ VMOp_Type type() const { return VMOp_CTWThreshold; }
+};
+
+// empty vm op, when forcing a safepoint to suspend threads from jvmti
+class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint {
+ public:
+ VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; }
+};
+
+// empty vm op, when forcing a safepoint due to inline cache buffers being full
+class VM_ICBufferFull: public VM_ForceSafepoint {
+ public:
+ VMOp_Type type() const { return VMOp_ICBufferFull; }
+};
+
+// empty asynchronous vm op, when forcing a safepoint to scavenge monitors
+class VM_ScavengeMonitors: public VM_ForceSafepoint {
+ public:
+ VMOp_Type type() const { return VMOp_ScavengeMonitors; }
+ Mode evaluation_mode() const { return _async_safepoint; }
+ bool is_cheap_allocated() const { return true; }
+};
+
+// Base class for invoking parts of a gtest in a safepoint.
+// Derived classes provide the doit method.
+// Typically also need to transition the gtest thread from native to VM.
+class VM_GTestExecuteAtSafepoint: public VM_Operation {
+ public:
+ VMOp_Type type() const { return VMOp_GTestExecuteAtSafepoint; }
+
+ protected:
+ VM_GTestExecuteAtSafepoint() {}
+};
+
+class VM_Deoptimize: public VM_Operation {
+ public:
+ VM_Deoptimize() {}
+ VMOp_Type type() const { return VMOp_Deoptimize; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
+
+class VM_MarkActiveNMethods: public VM_Operation {
+ public:
+ VM_MarkActiveNMethods() {}
+ VMOp_Type type() const { return VMOp_MarkActiveNMethods; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
+
+// Deopt helper that can deoptimize frames in threads other than the
+// current thread. Only used through Deoptimization::deoptimize_frame.
+class VM_DeoptimizeFrame: public VM_Operation {
+ friend class Deoptimization;
+
+ private:
+ JavaThread* _thread;
+ intptr_t* _id;
+ int _reason;
+ VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason);
+
+ public:
+ VMOp_Type type() const { return VMOp_DeoptimizeFrame; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
+
+#ifndef PRODUCT
+class VM_DeoptimizeAll: public VM_Operation {
+ private:
+ Klass* _dependee;
+ public:
+ VM_DeoptimizeAll() {}
+ VMOp_Type type() const { return VMOp_DeoptimizeAll; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
+
+
+class VM_ZombieAll: public VM_Operation {
+ public:
+ VM_ZombieAll() {}
+ VMOp_Type type() const { return VMOp_ZombieAll; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
+#endif // PRODUCT
+
+class VM_Verify: public VM_Operation {
+ public:
+ VMOp_Type type() const { return VMOp_Verify; }
+ void doit();
+};
+
+
+class VM_PrintThreads: public VM_Operation {
+ private:
+ outputStream* _out;
+ bool _print_concurrent_locks;
+ bool _print_extended_info;
+ public:
+ VM_PrintThreads()
+ : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
+ {}
+ VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
+ : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
+ {}
+ VMOp_Type type() const {
+ return VMOp_PrintThreads;
+ }
+ void doit();
+ bool doit_prologue();
+ void doit_epilogue();
+};
+
+class VM_PrintJNI: public VM_Operation {
+ private:
+ outputStream* _out;
+ public:
+ VM_PrintJNI() { _out = tty; }
+ VM_PrintJNI(outputStream* out) { _out = out; }
+ VMOp_Type type() const { return VMOp_PrintJNI; }
+ void doit();
+};
+
+class VM_PrintMetadata : public VM_Operation {
+ private:
+ outputStream* const _out;
+ const size_t _scale;
+ const int _flags;
+
+ public:
+ VM_PrintMetadata(outputStream* out, size_t scale, int flags)
+ : _out(out), _scale(scale), _flags(flags)
+ {};
+
+ VMOp_Type type() const { return VMOp_PrintMetadata; }
+ void doit();
+};
+
+class DeadlockCycle;
+class VM_FindDeadlocks: public VM_Operation {
+ private:
+ bool _concurrent_locks;
+ DeadlockCycle* _deadlocks;
+ outputStream* _out;
+ ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread
+ // which protects the JavaThreads in _deadlocks.
+
+ public:
+ VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _deadlocks(NULL), _out(NULL), _setter() {};
+ VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _deadlocks(NULL), _out(st) {};
+ ~VM_FindDeadlocks();
+
+ DeadlockCycle* result() { return _deadlocks; };
+ VMOp_Type type() const { return VMOp_FindDeadlocks; }
+ void doit();
+};
+
+class ThreadDumpResult;
+class ThreadSnapshot;
+class ThreadConcurrentLocks;
+
+class VM_ThreadDump : public VM_Operation {
+ private:
+ ThreadDumpResult* _result;
+ int _num_threads;
+ GrowableArray<instanceHandle>* _threads;
+ int _max_depth;
+ bool _with_locked_monitors;
+ bool _with_locked_synchronizers;
+
+ ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
+
+ public:
+ VM_ThreadDump(ThreadDumpResult* result,
+ int max_depth, // -1 indicates entire stack
+ bool with_locked_monitors,
+ bool with_locked_synchronizers);
+
+ VM_ThreadDump(ThreadDumpResult* result,
+ GrowableArray<instanceHandle>* threads,
+ int num_threads, // -1 indicates entire stack
+ int max_depth,
+ bool with_locked_monitors,
+ bool with_locked_synchronizers);
+
+ VMOp_Type type() const { return VMOp_ThreadDump; }
+ void doit();
+ bool doit_prologue();
+ void doit_epilogue();
+};
+
+
+class VM_Exit: public VM_Operation {
+ private:
+ int _exit_code;
+ static volatile bool _vm_exited;
+ static Thread * volatile _shutdown_thread;
+ static void wait_if_vm_exited();
+ public:
+ VM_Exit(int exit_code) {
+ _exit_code = exit_code;
+ }
+ static int wait_for_threads_in_native_to_block();
+ static int set_vm_exited();
+ static bool vm_exited() { return _vm_exited; }
+ static Thread * shutdown_thread() { return _shutdown_thread; }
+ static void block_if_vm_exited() {
+ if (_vm_exited) {
+ wait_if_vm_exited();
+ }
+ }
+ VMOp_Type type() const { return VMOp_Exit; }
+ void doit();
+};
+
+class VM_PrintCompileQueue: public VM_Operation {
+ private:
+ outputStream* _out;
+
+ public:
+ VM_PrintCompileQueue(outputStream* st) : _out(st) {}
+ VMOp_Type type() const { return VMOp_PrintCompileQueue; }
+ Mode evaluation_mode() const { return _safepoint; }
+ void doit();
+};
+
+#if INCLUDE_SERVICES
+class VM_PrintClassHierarchy: public VM_Operation {
+ private:
+ outputStream* _out;
+ bool _print_interfaces;
+ bool _print_subclasses;
+ char* _classname;
+
+ public:
+ VM_PrintClassHierarchy(outputStream* st, bool print_interfaces, bool print_subclasses, char* classname) :
+ _out(st), _print_interfaces(print_interfaces), _print_subclasses(print_subclasses),
+ _classname(classname) {}
+ VMOp_Type type() const { return VMOp_PrintClassHierarchy; }
+ void doit();
+};
+#endif // INCLUDE_SERVICES
+
+#endif // SHARE_VM_RUNTIME_VMOPERATIONS_HPP
--- a/src/hotspot/share/runtime/vmThread.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/vmThread.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
#include "runtime/safepoint.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/runtimeService.hpp"
#include "utilities/dtrace.hpp"
#include "utilities/events.hpp"
--- a/src/hotspot/share/runtime/vmThread.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/vmThread.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -27,7 +27,7 @@
#include "runtime/perfData.hpp"
#include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
//
// Prioritized queue of VM operations.
--- a/src/hotspot/share/runtime/vm_operations.cpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,508 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/vmSymbols.hpp"
-#include "code/codeCache.hpp"
-#include "compiler/compileBroker.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "logging/log.hpp"
-#include "logging/logStream.hpp"
-#include "memory/heapInspection.hpp"
-#include "memory/resourceArea.hpp"
-#include "oops/symbol.hpp"
-#include "runtime/arguments.hpp"
-#include "runtime/deoptimization.hpp"
-#include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/sweeper.hpp"
-#include "runtime/thread.inline.hpp"
-#include "runtime/threadSMR.inline.hpp"
-#include "runtime/vm_operations.hpp"
-#include "services/threadService.hpp"
-
-#define VM_OP_NAME_INITIALIZE(name) #name,
-
-const char* VM_Operation::_names[VM_Operation::VMOp_Terminating] = \
- { VM_OPS_DO(VM_OP_NAME_INITIALIZE) };
-
-void VM_Operation::set_calling_thread(Thread* thread, ThreadPriority priority) {
- _calling_thread = thread;
- assert(MinPriority <= priority && priority <= MaxPriority, "sanity check");
- _priority = priority;
-}
-
-
-void VM_Operation::evaluate() {
- ResourceMark rm;
- LogTarget(Debug, vmoperation) lt;
- if (lt.is_enabled()) {
- LogStream ls(lt);
- ls.print("begin ");
- print_on_error(&ls);
- ls.cr();
- }
- doit();
- if (lt.is_enabled()) {
- LogStream ls(lt);
- ls.print("end ");
- print_on_error(&ls);
- ls.cr();
- }
-}
-
-const char* VM_Operation::mode_to_string(Mode mode) {
- switch(mode) {
- case _safepoint : return "safepoint";
- case _no_safepoint : return "no safepoint";
- case _concurrent : return "concurrent";
- case _async_safepoint: return "async safepoint";
- default : return "unknown";
- }
-}
-// Called by fatal error handler.
-void VM_Operation::print_on_error(outputStream* st) const {
- st->print("VM_Operation (" PTR_FORMAT "): ", p2i(this));
- st->print("%s", name());
-
- const char* mode = mode_to_string(evaluation_mode());
- st->print(", mode: %s", mode);
-
- if (calling_thread()) {
- st->print(", requested by thread " PTR_FORMAT, p2i(calling_thread()));
- }
-}
-
-void VM_ThreadStop::doit() {
- assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
- ThreadsListHandle tlh;
- JavaThread* target = java_lang_Thread::thread(target_thread());
- // Note that this now allows multiple ThreadDeath exceptions to be
- // thrown at a thread.
- if (target != NULL && (!EnableThreadSMRExtraValidityChecks || tlh.includes(target))) {
- // The target thread has run and has not exited yet.
- target->send_thread_stop(throwable());
- }
-}
-
-void VM_ClearICs::doit() {
- if (_preserve_static_stubs) {
- CodeCache::cleanup_inline_caches();
- } else {
- CodeCache::clear_inline_caches();
- }
-}
-
-void VM_Deoptimize::doit() {
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- CodeCache::make_marked_nmethods_not_entrant();
-}
-
-void VM_MarkActiveNMethods::doit() {
- NMethodSweeper::mark_active_nmethods();
-}
-
-VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
- _thread = thread;
- _id = id;
- _reason = reason;
-}
-
-
-void VM_DeoptimizeFrame::doit() {
- assert(_reason > Deoptimization::Reason_none && _reason < Deoptimization::Reason_LIMIT, "invalid deopt reason");
- Deoptimization::deoptimize_frame_internal(_thread, _id, (Deoptimization::DeoptReason)_reason);
-}
-
-
-#ifndef PRODUCT
-
-void VM_DeoptimizeAll::doit() {
- DeoptimizationMarker dm;
- JavaThreadIteratorWithHandle jtiwh;
- // deoptimize all java threads in the system
- if (DeoptimizeALot) {
- for (; JavaThread *thread = jtiwh.next(); ) {
- if (thread->has_last_Java_frame()) {
- thread->deoptimize();
- }
- }
- } else if (DeoptimizeRandom) {
-
- // Deoptimize some selected threads and frames
- int tnum = os::random() & 0x3;
- int fnum = os::random() & 0x3;
- int tcount = 0;
- for (; JavaThread *thread = jtiwh.next(); ) {
- if (thread->has_last_Java_frame()) {
- if (tcount++ == tnum) {
- tcount = 0;
- int fcount = 0;
- // Deoptimize some selected frames.
- // Biased llocking wants a updated register map
- for(StackFrameStream fst(thread, UseBiasedLocking); !fst.is_done(); fst.next()) {
- if (fst.current()->can_be_deoptimized()) {
- if (fcount++ == fnum) {
- fcount = 0;
- Deoptimization::deoptimize(thread, *fst.current(), fst.register_map());
- }
- }
- }
- }
- }
- }
- }
-}
-
-
-void VM_ZombieAll::doit() {
- JavaThread *thread = (JavaThread *)calling_thread();
- assert(thread->is_Java_thread(), "must be a Java thread");
- thread->make_zombies();
-}
-
-#endif // !PRODUCT
-
-void VM_Verify::doit() {
- Universe::heap()->prepare_for_verify();
- Universe::verify();
-}
-
-bool VM_PrintThreads::doit_prologue() {
- // Get Heap_lock if concurrent locks will be dumped
- if (_print_concurrent_locks) {
- Heap_lock->lock();
- }
- return true;
-}
-
-void VM_PrintThreads::doit() {
- Threads::print_on(_out, true, false, _print_concurrent_locks, _print_extended_info);
-}
-
-void VM_PrintThreads::doit_epilogue() {
- if (_print_concurrent_locks) {
- // Release Heap_lock
- Heap_lock->unlock();
- }
-}
-
-void VM_PrintJNI::doit() {
- JNIHandles::print_on(_out);
-}
-
-void VM_PrintMetadata::doit() {
- MetaspaceUtils::print_report(_out, _scale, _flags);
-}
-
-VM_FindDeadlocks::~VM_FindDeadlocks() {
- if (_deadlocks != NULL) {
- DeadlockCycle* cycle = _deadlocks;
- while (cycle != NULL) {
- DeadlockCycle* d = cycle;
- cycle = cycle->next();
- delete d;
- }
- }
-}
-
-void VM_FindDeadlocks::doit() {
- // Update the hazard ptr in the originating thread to the current
- // list of threads. This VM operation needs the current list of
- // threads for proper deadlock detection and those are the
- // JavaThreads we need to be protected when we return info to the
- // originating thread.
- _setter.set();
-
- _deadlocks = ThreadService::find_deadlocks_at_safepoint(_setter.list(), _concurrent_locks);
- if (_out != NULL) {
- int num_deadlocks = 0;
- for (DeadlockCycle* cycle = _deadlocks; cycle != NULL; cycle = cycle->next()) {
- num_deadlocks++;
- cycle->print_on_with(_setter.list(), _out);
- }
-
- if (num_deadlocks == 1) {
- _out->print_cr("\nFound 1 deadlock.\n");
- _out->flush();
- } else if (num_deadlocks > 1) {
- _out->print_cr("\nFound %d deadlocks.\n", num_deadlocks);
- _out->flush();
- }
- }
-}
-
-VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
- int max_depth,
- bool with_locked_monitors,
- bool with_locked_synchronizers) {
- _result = result;
- _num_threads = 0; // 0 indicates all threads
- _threads = NULL;
- _result = result;
- _max_depth = max_depth;
- _with_locked_monitors = with_locked_monitors;
- _with_locked_synchronizers = with_locked_synchronizers;
-}
-
-VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
- GrowableArray<instanceHandle>* threads,
- int num_threads,
- int max_depth,
- bool with_locked_monitors,
- bool with_locked_synchronizers) {
- _result = result;
- _num_threads = num_threads;
- _threads = threads;
- _result = result;
- _max_depth = max_depth;
- _with_locked_monitors = with_locked_monitors;
- _with_locked_synchronizers = with_locked_synchronizers;
-}
-
-bool VM_ThreadDump::doit_prologue() {
- if (_with_locked_synchronizers) {
- // Acquire Heap_lock to dump concurrent locks
- Heap_lock->lock();
- }
-
- return true;
-}
-
-void VM_ThreadDump::doit_epilogue() {
- if (_with_locked_synchronizers) {
- // Release Heap_lock
- Heap_lock->unlock();
- }
-}
-
-void VM_ThreadDump::doit() {
- ResourceMark rm;
-
- // Set the hazard ptr in the originating thread to protect the
- // current list of threads. This VM operation needs the current list
- // of threads for a proper dump and those are the JavaThreads we need
- // to be protected when we return info to the originating thread.
- _result->set_t_list();
-
- ConcurrentLocksDump concurrent_locks(true);
- if (_with_locked_synchronizers) {
- concurrent_locks.dump_at_safepoint();
- }
-
- if (_num_threads == 0) {
- // Snapshot all live threads
-
- for (uint i = 0; i < _result->t_list()->length(); i++) {
- JavaThread* jt = _result->t_list()->thread_at(i);
- if (jt->is_exiting() ||
- jt->is_hidden_from_external_view()) {
- // skip terminating threads and hidden threads
- continue;
- }
- ThreadConcurrentLocks* tcl = NULL;
- if (_with_locked_synchronizers) {
- tcl = concurrent_locks.thread_concurrent_locks(jt);
- }
- ThreadSnapshot* ts = snapshot_thread(jt, tcl);
- _result->add_thread_snapshot(ts);
- }
- } else {
- // Snapshot threads in the given _threads array
- // A dummy snapshot is created if a thread doesn't exist
-
- for (int i = 0; i < _num_threads; i++) {
- instanceHandle th = _threads->at(i);
- if (th() == NULL) {
- // skip if the thread doesn't exist
- // Add a dummy snapshot
- _result->add_thread_snapshot(new ThreadSnapshot());
- continue;
- }
-
- // Dump thread stack only if the thread is alive and not exiting
- // and not VM internal thread.
- JavaThread* jt = java_lang_Thread::thread(th());
- if (jt != NULL && !_result->t_list()->includes(jt)) {
- // _threads[i] doesn't refer to a valid JavaThread; this check
- // is primarily for JVM_DumpThreads() which doesn't have a good
- // way to validate the _threads array.
- jt = NULL;
- }
- if (jt == NULL || /* thread not alive */
- jt->is_exiting() ||
- jt->is_hidden_from_external_view()) {
- // add a NULL snapshot if skipped
- _result->add_thread_snapshot(new ThreadSnapshot());
- continue;
- }
- ThreadConcurrentLocks* tcl = NULL;
- if (_with_locked_synchronizers) {
- tcl = concurrent_locks.thread_concurrent_locks(jt);
- }
- ThreadSnapshot* ts = snapshot_thread(jt, tcl);
- _result->add_thread_snapshot(ts);
- }
- }
-}
-
-ThreadSnapshot* VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) {
- ThreadSnapshot* snapshot = new ThreadSnapshot(_result->t_list(), java_thread);
- snapshot->dump_stack_at_safepoint(_max_depth, _with_locked_monitors);
- snapshot->set_concurrent_locks(tcl);
- return snapshot;
-}
-
-volatile bool VM_Exit::_vm_exited = false;
-Thread * volatile VM_Exit::_shutdown_thread = NULL;
-
-int VM_Exit::set_vm_exited() {
-
- Thread * thr_cur = Thread::current();
-
- assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
-
- int num_active = 0;
-
- _shutdown_thread = thr_cur;
- _vm_exited = true; // global flag
- for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thr = jtiwh.next(); ) {
- if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
- ++num_active;
- thr->set_terminated(JavaThread::_vm_exited); // per-thread flag
- }
- }
-
- return num_active;
-}
-
-int VM_Exit::wait_for_threads_in_native_to_block() {
- // VM exits at safepoint. This function must be called at the final safepoint
- // to wait for threads in _thread_in_native state to be quiescent.
- assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
-
- Thread * thr_cur = Thread::current();
- Monitor timer(Mutex::leaf, "VM_Exit timer", true,
- Monitor::_safepoint_check_never);
-
- // Compiler threads need longer wait because they can access VM data directly
- // while in native. If they are active and some structures being used are
- // deleted by the shutdown sequence, they will crash. On the other hand, user
- // threads must go through native=>Java/VM transitions first to access VM
- // data, and they will be stopped during state transition. In theory, we
- // don't have to wait for user threads to be quiescent, but it's always
- // better to terminate VM when current thread is the only active thread, so
- // wait for user threads too. Numbers are in 10 milliseconds.
- int max_wait_user_thread = 30; // at least 300 milliseconds
- int max_wait_compiler_thread = 1000; // at least 10 seconds
-
- int max_wait = max_wait_compiler_thread;
-
- int attempts = 0;
- JavaThreadIteratorWithHandle jtiwh;
- while (true) {
- int num_active = 0;
- int num_active_compiler_thread = 0;
-
- jtiwh.rewind();
- for (; JavaThread *thr = jtiwh.next(); ) {
- if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
- num_active++;
- if (thr->is_Compiler_thread()) {
- num_active_compiler_thread++;
- }
- }
- }
-
- if (num_active == 0) {
- return 0;
- } else if (attempts > max_wait) {
- return num_active;
- } else if (num_active_compiler_thread == 0 && attempts > max_wait_user_thread) {
- return num_active;
- }
-
- attempts++;
-
- MutexLockerEx ml(&timer, Mutex::_no_safepoint_check_flag);
- timer.wait(Mutex::_no_safepoint_check_flag, 10);
- }
-}
-
-void VM_Exit::doit() {
- CompileBroker::set_should_block();
-
- // Wait for a short period for threads in native to block. Any thread
- // still executing native code after the wait will be stopped at
- // native==>Java/VM barriers.
- // Among 16276 JCK tests, 94% of them come here without any threads still
- // running in native; the other 6% are quiescent within 250ms (Ultra 80).
- wait_for_threads_in_native_to_block();
-
- set_vm_exited();
-
- // cleanup globals resources before exiting. exit_globals() currently
- // cleans up outputStream resources and PerfMemory resources.
- exit_globals();
-
- // Check for exit hook
- exit_hook_t exit_hook = Arguments::exit_hook();
- if (exit_hook != NULL) {
- // exit hook should exit.
- exit_hook(_exit_code);
- // ... but if it didn't, we must do it here
- vm_direct_exit(_exit_code);
- } else {
- vm_direct_exit(_exit_code);
- }
-}
-
-
-void VM_Exit::wait_if_vm_exited() {
- if (_vm_exited &&
- Thread::current_or_null() != _shutdown_thread) {
- // _vm_exited is set at safepoint, and the Threads_lock is never released
- // we will block here until the process dies
- Threads_lock->lock_without_safepoint_check();
- ShouldNotReachHere();
- }
-}
-
-void VM_PrintCompileQueue::doit() {
- CompileBroker::print_compile_queues(_out);
-}
-
-#if INCLUDE_SERVICES
-void VM_PrintClassHierarchy::doit() {
- KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
-}
-#endif
--- a/src/hotspot/share/runtime/vm_operations.hpp Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,512 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
-#define SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
-
-#include "classfile/javaClasses.hpp"
-#include "memory/allocation.hpp"
-#include "oops/oop.hpp"
-#include "runtime/thread.hpp"
-#include "runtime/threadSMR.hpp"
-#include "code/codeCache.hpp"
-
-// The following classes are used for operations
-// initiated by a Java thread but that must
-// take place in the VMThread.
-
-#define VM_OP_ENUM(type) VMOp_##type,
-
-// Note: When new VM_XXX comes up, add 'XXX' to the template table.
-#define VM_OPS_DO(template) \
- template(None) \
- template(ThreadStop) \
- template(ThreadDump) \
- template(PrintThreads) \
- template(FindDeadlocks) \
- template(ClearICs) \
- template(ForceSafepoint) \
- template(ForceAsyncSafepoint) \
- template(Deoptimize) \
- template(DeoptimizeFrame) \
- template(DeoptimizeAll) \
- template(ZombieAll) \
- template(Verify) \
- template(PrintJNI) \
- template(HeapDumper) \
- template(DeoptimizeTheWorld) \
- template(CollectForMetadataAllocation) \
- template(GC_HeapInspection) \
- template(GenCollectFull) \
- template(GenCollectFullConcurrent) \
- template(GenCollectForAllocation) \
- template(ParallelGCFailedAllocation) \
- template(ParallelGCSystemGC) \
- template(CGC_Operation) \
- template(CMS_Initial_Mark) \
- template(CMS_Final_Remark) \
- template(G1CollectForAllocation) \
- template(G1CollectFull) \
- template(ZOperation) \
- template(HandshakeOneThread) \
- template(HandshakeAllThreads) \
- template(HandshakeFallback) \
- template(EnableBiasedLocking) \
- template(RevokeBias) \
- template(BulkRevokeBias) \
- template(PopulateDumpSharedSpace) \
- template(JNIFunctionTableCopier) \
- template(RedefineClasses) \
- template(UpdateForPopTopFrame) \
- template(SetFramePop) \
- template(GetOwnedMonitorInfo) \
- template(GetObjectMonitorUsage) \
- template(GetCurrentContendedMonitor) \
- template(GetStackTrace) \
- template(GetMultipleStackTraces) \
- template(GetAllStackTraces) \
- template(GetThreadListStackTraces) \
- template(GetFrameCount) \
- template(GetFrameLocation) \
- template(ChangeBreakpoints) \
- template(GetOrSetLocal) \
- template(GetCurrentLocation) \
- template(EnterInterpOnlyMode) \
- template(ChangeSingleStep) \
- template(HeapWalkOperation) \
- template(HeapIterateOperation) \
- template(ReportJavaOutOfMemory) \
- template(JFRCheckpoint) \
- template(Exit) \
- template(LinuxDllLoad) \
- template(RotateGCLog) \
- template(WhiteBoxOperation) \
- template(ClassLoaderStatsOperation) \
- template(ClassLoaderHierarchyOperation) \
- template(DumpHashtable) \
- template(DumpTouchedMethods) \
- template(MarkActiveNMethods) \
- template(PrintCompileQueue) \
- template(PrintClassHierarchy) \
- template(ThreadSuspend) \
- template(CTWThreshold) \
- template(ThreadsSuspendJVMTI) \
- template(ICBufferFull) \
- template(ScavengeMonitors) \
- template(PrintMetadata) \
- template(GTestExecuteAtSafepoint) \
-
-class VM_Operation: public CHeapObj<mtInternal> {
- public:
- enum Mode {
- _safepoint, // blocking, safepoint, vm_op C-heap allocated
- _no_safepoint, // blocking, no safepoint, vm_op C-Heap allocated
- _concurrent, // non-blocking, no safepoint, vm_op C-Heap allocated
- _async_safepoint // non-blocking, safepoint, vm_op C-Heap allocated
- };
-
- enum VMOp_Type {
- VM_OPS_DO(VM_OP_ENUM)
- VMOp_Terminating
- };
-
- private:
- Thread* _calling_thread;
- ThreadPriority _priority;
- long _timestamp;
- VM_Operation* _next;
- VM_Operation* _prev;
-
- // The VM operation name array
- static const char* _names[];
-
- public:
- VM_Operation() { _calling_thread = NULL; _next = NULL; _prev = NULL; }
- virtual ~VM_Operation() {}
-
- // VM operation support (used by VM thread)
- Thread* calling_thread() const { return _calling_thread; }
- ThreadPriority priority() { return _priority; }
- void set_calling_thread(Thread* thread, ThreadPriority priority);
-
- long timestamp() const { return _timestamp; }
- void set_timestamp(long timestamp) { _timestamp = timestamp; }
-
- // Called by VM thread - does in turn invoke doit(). Do not override this
- void evaluate();
-
- // evaluate() is called by the VMThread and in turn calls doit().
- // If the thread invoking VMThread::execute((VM_Operation*) is a JavaThread,
- // doit_prologue() is called in that thread before transferring control to
- // the VMThread.
- // If doit_prologue() returns true the VM operation will proceed, and
- // doit_epilogue() will be called by the JavaThread once the VM operation
- // completes. If doit_prologue() returns false the VM operation is cancelled.
- virtual void doit() = 0;
- virtual bool doit_prologue() { return true; };
- virtual void doit_epilogue() {}; // Note: Not called if mode is: _concurrent
-
- // Type test
- virtual bool is_methodCompiler() const { return false; }
-
- // Linking
- VM_Operation *next() const { return _next; }
- VM_Operation *prev() const { return _prev; }
- void set_next(VM_Operation *next) { _next = next; }
- void set_prev(VM_Operation *prev) { _prev = prev; }
-
- // Configuration. Override these appropriately in subclasses.
- virtual VMOp_Type type() const = 0;
- virtual Mode evaluation_mode() const { return _safepoint; }
- virtual bool allow_nested_vm_operations() const { return false; }
- virtual bool is_cheap_allocated() const { return false; }
- virtual void oops_do(OopClosure* f) { /* do nothing */ };
-
- // CAUTION: <don't hang yourself with following rope>
- // If you override these methods, make sure that the evaluation
- // of these methods is race-free and non-blocking, since these
- // methods may be evaluated either by the mutators or by the
- // vm thread, either concurrently with mutators or with the mutators
- // stopped. In other words, taking locks is verboten, and if there
- // are any races in evaluating the conditions, they'd better be benign.
- virtual bool evaluate_at_safepoint() const {
- return evaluation_mode() == _safepoint ||
- evaluation_mode() == _async_safepoint;
- }
- virtual bool evaluate_concurrently() const {
- return evaluation_mode() == _concurrent ||
- evaluation_mode() == _async_safepoint;
- }
-
- static const char* mode_to_string(Mode mode);
-
- // Debugging
- virtual void print_on_error(outputStream* st) const;
- const char* name() const { return _names[type()]; }
- static const char* name(int type) {
- assert(type >= 0 && type < VMOp_Terminating, "invalid VM operation type");
- return _names[type];
- }
-#ifndef PRODUCT
- void print_on(outputStream* st) const { print_on_error(st); }
-#endif
-};
-
-class VM_ThreadStop: public VM_Operation {
- private:
- oop _thread; // The Thread that the Throwable is thrown against
- oop _throwable; // The Throwable thrown at the target Thread
- public:
- // All oops are passed as JNI handles, since there is no guarantee that a GC might happen before the
- // VM operation is executed.
- VM_ThreadStop(oop thread, oop throwable) {
- _thread = thread;
- _throwable = throwable;
- }
- VMOp_Type type() const { return VMOp_ThreadStop; }
- oop target_thread() const { return _thread; }
- oop throwable() const { return _throwable;}
- void doit();
- // We deoptimize if top-most frame is compiled - this might require a C2I adapter to be generated
- bool allow_nested_vm_operations() const { return true; }
- Mode evaluation_mode() const { return _async_safepoint; }
- bool is_cheap_allocated() const { return true; }
-
- // GC support
- void oops_do(OopClosure* f) {
- f->do_oop(&_thread); f->do_oop(&_throwable);
- }
-};
-
-class VM_ClearICs: public VM_Operation {
- private:
- bool _preserve_static_stubs;
- public:
- VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; }
- void doit();
- VMOp_Type type() const { return VMOp_ClearICs; }
-};
-
-// empty vm op, evaluated just to force a safepoint
-class VM_ForceSafepoint: public VM_Operation {
- public:
- void doit() {}
- VMOp_Type type() const { return VMOp_ForceSafepoint; }
-};
-
-// empty vm op, when forcing a safepoint to suspend a thread
-class VM_ThreadSuspend: public VM_ForceSafepoint {
- public:
- VMOp_Type type() const { return VMOp_ThreadSuspend; }
-};
-
-// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper
-class VM_CTWThreshold: public VM_ForceSafepoint {
- public:
- VMOp_Type type() const { return VMOp_CTWThreshold; }
-};
-
-// empty vm op, when forcing a safepoint to suspend threads from jvmti
-class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint {
- public:
- VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; }
-};
-
-// empty vm op, when forcing a safepoint due to inline cache buffers being full
-class VM_ICBufferFull: public VM_ForceSafepoint {
- public:
- VMOp_Type type() const { return VMOp_ICBufferFull; }
-};
-
-// empty asynchronous vm op, when forcing a safepoint to scavenge monitors
-class VM_ScavengeMonitors: public VM_ForceSafepoint {
- public:
- VMOp_Type type() const { return VMOp_ScavengeMonitors; }
- Mode evaluation_mode() const { return _async_safepoint; }
- bool is_cheap_allocated() const { return true; }
-};
-
-// Base class for invoking parts of a gtest in a safepoint.
-// Derived classes provide the doit method.
-// Typically also need to transition the gtest thread from native to VM.
-class VM_GTestExecuteAtSafepoint: public VM_Operation {
- public:
- VMOp_Type type() const { return VMOp_GTestExecuteAtSafepoint; }
-
- protected:
- VM_GTestExecuteAtSafepoint() {}
-};
-
-class VM_Deoptimize: public VM_Operation {
- public:
- VM_Deoptimize() {}
- VMOp_Type type() const { return VMOp_Deoptimize; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-
-class VM_MarkActiveNMethods: public VM_Operation {
- public:
- VM_MarkActiveNMethods() {}
- VMOp_Type type() const { return VMOp_MarkActiveNMethods; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-
-// Deopt helper that can deoptimize frames in threads other than the
-// current thread. Only used through Deoptimization::deoptimize_frame.
-class VM_DeoptimizeFrame: public VM_Operation {
- friend class Deoptimization;
-
- private:
- JavaThread* _thread;
- intptr_t* _id;
- int _reason;
- VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason);
-
- public:
- VMOp_Type type() const { return VMOp_DeoptimizeFrame; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-
-#ifndef PRODUCT
-class VM_DeoptimizeAll: public VM_Operation {
- private:
- Klass* _dependee;
- public:
- VM_DeoptimizeAll() {}
- VMOp_Type type() const { return VMOp_DeoptimizeAll; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-
-
-class VM_ZombieAll: public VM_Operation {
- public:
- VM_ZombieAll() {}
- VMOp_Type type() const { return VMOp_ZombieAll; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-#endif // PRODUCT
-
-class VM_Verify: public VM_Operation {
- public:
- VMOp_Type type() const { return VMOp_Verify; }
- void doit();
-};
-
-
-class VM_PrintThreads: public VM_Operation {
- private:
- outputStream* _out;
- bool _print_concurrent_locks;
- bool _print_extended_info;
- public:
- VM_PrintThreads()
- : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
- {}
- VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
- : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
- {}
- VMOp_Type type() const {
- return VMOp_PrintThreads;
- }
- void doit();
- bool doit_prologue();
- void doit_epilogue();
-};
-
-class VM_PrintJNI: public VM_Operation {
- private:
- outputStream* _out;
- public:
- VM_PrintJNI() { _out = tty; }
- VM_PrintJNI(outputStream* out) { _out = out; }
- VMOp_Type type() const { return VMOp_PrintJNI; }
- void doit();
-};
-
-class VM_PrintMetadata : public VM_Operation {
- private:
- outputStream* const _out;
- const size_t _scale;
- const int _flags;
-
- public:
- VM_PrintMetadata(outputStream* out, size_t scale, int flags)
- : _out(out), _scale(scale), _flags(flags)
- {};
-
- VMOp_Type type() const { return VMOp_PrintMetadata; }
- void doit();
-};
-
-class DeadlockCycle;
-class VM_FindDeadlocks: public VM_Operation {
- private:
- bool _concurrent_locks;
- DeadlockCycle* _deadlocks;
- outputStream* _out;
- ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread
- // which protects the JavaThreads in _deadlocks.
-
- public:
- VM_FindDeadlocks(bool concurrent_locks) : _concurrent_locks(concurrent_locks), _deadlocks(NULL), _out(NULL), _setter() {};
- VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _deadlocks(NULL), _out(st) {};
- ~VM_FindDeadlocks();
-
- DeadlockCycle* result() { return _deadlocks; };
- VMOp_Type type() const { return VMOp_FindDeadlocks; }
- void doit();
-};
-
-class ThreadDumpResult;
-class ThreadSnapshot;
-class ThreadConcurrentLocks;
-
-class VM_ThreadDump : public VM_Operation {
- private:
- ThreadDumpResult* _result;
- int _num_threads;
- GrowableArray<instanceHandle>* _threads;
- int _max_depth;
- bool _with_locked_monitors;
- bool _with_locked_synchronizers;
-
- ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
-
- public:
- VM_ThreadDump(ThreadDumpResult* result,
- int max_depth, // -1 indicates entire stack
- bool with_locked_monitors,
- bool with_locked_synchronizers);
-
- VM_ThreadDump(ThreadDumpResult* result,
- GrowableArray<instanceHandle>* threads,
- int num_threads, // -1 indicates entire stack
- int max_depth,
- bool with_locked_monitors,
- bool with_locked_synchronizers);
-
- VMOp_Type type() const { return VMOp_ThreadDump; }
- void doit();
- bool doit_prologue();
- void doit_epilogue();
-};
-
-
-class VM_Exit: public VM_Operation {
- private:
- int _exit_code;
- static volatile bool _vm_exited;
- static Thread * volatile _shutdown_thread;
- static void wait_if_vm_exited();
- public:
- VM_Exit(int exit_code) {
- _exit_code = exit_code;
- }
- static int wait_for_threads_in_native_to_block();
- static int set_vm_exited();
- static bool vm_exited() { return _vm_exited; }
- static Thread * shutdown_thread() { return _shutdown_thread; }
- static void block_if_vm_exited() {
- if (_vm_exited) {
- wait_if_vm_exited();
- }
- }
- VMOp_Type type() const { return VMOp_Exit; }
- void doit();
-};
-
-class VM_PrintCompileQueue: public VM_Operation {
- private:
- outputStream* _out;
-
- public:
- VM_PrintCompileQueue(outputStream* st) : _out(st) {}
- VMOp_Type type() const { return VMOp_PrintCompileQueue; }
- Mode evaluation_mode() const { return _safepoint; }
- void doit();
-};
-
-#if INCLUDE_SERVICES
-class VM_PrintClassHierarchy: public VM_Operation {
- private:
- outputStream* _out;
- bool _print_interfaces;
- bool _print_subclasses;
- char* _classname;
-
- public:
- VM_PrintClassHierarchy(outputStream* st, bool print_interfaces, bool print_subclasses, char* classname) :
- _out(st), _print_interfaces(print_interfaces), _print_subclasses(print_subclasses),
- _classname(classname) {}
- VMOp_Type type() const { return VMOp_PrintClassHierarchy; }
- void doit();
-};
-#endif // INCLUDE_SERVICES
-
-#endif // SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
--- a/src/hotspot/share/services/attachListener.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/attachListener.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
#include "precompiled.hpp"
#include "classfile/javaClasses.hpp"
#include "classfile/systemDictionary.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "memory/resourceArea.hpp"
#include "oops/oop.inline.hpp"
#include "oops/typeArrayOop.inline.hpp"
--- a/src/hotspot/share/services/diagnosticCommand.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/diagnosticCommand.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "classfile/classLoaderStats.hpp"
#include "compiler/compileBroker.hpp"
#include "compiler/directivesParser.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "memory/metaspace/metaspaceDCmd.hpp"
#include "memory/resourceArea.hpp"
#include "oops/objArrayOop.inline.hpp"
--- a/src/hotspot/share/services/dtraceAttacher.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/dtraceAttacher.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "runtime/deoptimization.hpp"
#include "runtime/flags/jvmFlag.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/dtraceAttacher.hpp"
#ifdef SOLARIS
--- a/src/hotspot/share/services/heapDumper.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/heapDumper.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
#include "classfile/systemDictionary.hpp"
#include "classfile/vmSymbols.hpp"
#include "gc/shared/gcLocker.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
@@ -48,7 +48,7 @@
#include "runtime/threadSMR.hpp"
#include "runtime/vframe.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/heapDumper.hpp"
#include "services/threadService.hpp"
#include "utilities/macros.hpp"
--- a/src/hotspot/share/services/memTracker.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/memTracker.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,7 @@
#include "runtime/orderAccess.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/memBaseline.hpp"
#include "services/memReporter.hpp"
#include "services/mallocTracker.inline.hpp"
--- a/src/hotspot/share/services/nmtDCmd.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/nmtDCmd.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
#include "memory/resourceArea.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/nmtDCmd.hpp"
#include "services/memReporter.hpp"
#include "services/memTracker.hpp"
--- a/src/hotspot/share/services/threadService.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/threadService.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
#include "runtime/threadSMR.inline.hpp"
#include "runtime/vframe.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "services/threadService.hpp"
// TODO: we need to define a naming convention for perf counters
--- a/src/hotspot/share/utilities/vmError.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/utilities/vmError.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,7 @@
#include "runtime/thread.inline.hpp"
#include "runtime/threadSMR.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vm_version.hpp"
#include "runtime/flags/jvmFlag.hpp"
#include "services/memTracker.hpp"
--- a/src/java.base/share/classes/java/io/InputStream.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/io/InputStream.java Fri Dec 07 09:46:53 2018 -0500
@@ -64,8 +64,8 @@
* <p> While the stream is open, the {@code available()}, {@code read()},
* {@code read(byte[])}, {@code read(byte[], int, int)},
* {@code readAllBytes()}, {@code readNBytes(byte[], int, int)},
- * {@code readNBytes(int)}, {@code skip(long)}, and
- * {@code transferTo()} methods all behave as if end of stream has been
+ * {@code readNBytes(int)}, {@code skip(long)}, {@code skipNBytes(long)},
+ * and {@code transferTo()} methods all behave as if end of stream has been
* reached. After the stream has been closed, these methods all throw
* {@code IOException}.
*
@@ -139,6 +139,14 @@
}
@Override
+ public void skipNBytes(long n) throws IOException {
+ ensureOpen();
+ if (n > 0) {
+ throw new EOFException();
+ }
+ }
+
+ @Override
public long transferTo(OutputStream out) throws IOException {
Objects.requireNonNull(out);
ensureOpen();
@@ -513,11 +521,11 @@
* For instance, the implementation may depend on the ability to seek.
*
* @param n the number of bytes to be skipped.
- * @return the actual number of bytes skipped.
+ * @return the actual number of bytes skipped which might be zero.
* @throws IOException if an I/O error occurs.
+ * @see java.io.InputStream#skipNBytes(long)
*/
public long skip(long n) throws IOException {
-
long remaining = n;
int nr;
@@ -539,6 +547,65 @@
}
/**
+ * Skips over and discards exactly {@code n} bytes of data from this input
+ * stream. If {@code n} is zero, then no bytes are skipped.
+ * If {@code n} is negative, then no bytes are skipped.
+ * Subclasses may handle the negative value differently.
+ *
+ * <p> This method blocks until the requested number of bytes have been
+ * skipped, end of file is reached, or an exception is thrown.
+ *
+ * <p> If end of stream is reached before the stream is at the desired
+ * position, then an {@code EOFException} is thrown.
+ *
+ * <p> If an I/O error occurs, then the input stream may be
+ * in an inconsistent state. It is strongly recommended that the
+ * stream be promptly closed if an I/O error occurs.
+ *
+ * @implNote
+ * Subclasses are encouraged to provide a more efficient implementation
+ * of this method.
+ *
+ * @implSpec
+ * If {@code n} is zero or negative, then no bytes are skipped.
+ * If {@code n} is positive, the default implementation of this method
+ * invokes {@link #skip(long) skip()} with parameter {@code n}. If the
+ * return value of {@code skip(n)} is non-negative and less than {@code n},
+ * then {@link #read()} is invoked repeatedly until the stream is {@code n}
+ * bytes beyond its position when this method was invoked or end of stream
+ * is reached. If the return value of {@code skip(n)} is negative or
+ * greater than {@code n}, then an {@code IOException} is thrown. Any
+ * exception thrown by {@code skip()} or {@code read()} will be propagated.
+ *
+ * @param n the number of bytes to be skipped.
+ * @throws EOFException if end of stream is encountered before the
+ * stream can be positioned {@code n} bytes beyond its position
+ * when this method was invoked.
+ * @throws IOException if the stream cannot be positioned properly or
+ * if an I/O error occurs.
+ * @see java.io.InputStream#skip(long)
+ */
+ public void skipNBytes(long n) throws IOException {
+ if (n > 0) {
+ long ns = skip(n);
+ if (ns >= 0 && ns < n) { // skipped too few bytes
+ // adjust number to skip
+ n -= ns;
+ // read until requested number skipped or EOS reached
+ while (n > 0 && read() != -1) {
+ n--;
+ }
+ // if not enough skipped, then EOFE
+ if (n != 0) {
+ throw new EOFException();
+ }
+ } else if (ns != n) { // skipped negative or too many bytes
+ throw new IOException("Unable to skip exactly");
+ }
+ }
+ }
+
+ /**
* Returns an estimate of the number of bytes that can be read (or skipped
* over) from this input stream without blocking, which may be 0, or 0 when
* end of stream is detected. The read might be on the same thread or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/java/text/CompactNumberFormat.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,2130 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package java.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+/**
+ * <p>
+ * {@code CompactNumberFormat} is a concrete subclass of {@code NumberFormat}
+ * that formats a decimal number in its compact form.
+ *
+ * The compact number formatting is designed for the environment where the space
+ * is limited, and the formatted string can be displayed in that limited space.
+ * It is defined by LDML's specification for
+ * <a href = "http://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats">
+ * Compact Number Formats</a>. A compact number formatting refers
+ * to the representation of a number in a shorter form, based on the patterns
+ * provided for a given locale.
+ *
+ * <p>
+ * For example:
+ * <br>In the {@link java.util.Locale#US US locale}, {@code 1000} can be formatted
+ * as {@code "1K"}, and {@code 1000000} as {@code "1M"}, depending upon the
+ * <a href = "#compact_number_style" >style</a> used.
+ * <br>In the {@code "hi_IN"} locale, {@code 1000} can be formatted as
+ * "1 \u0939\u091C\u093C\u093E\u0930", and {@code 50000000} as "5 \u0915.",
+ * depending upon the <a href = "#compact_number_style" >style</a> used.
+ *
+ * <p>
+ * To obtain a {@code CompactNumberFormat} for a locale, use one
+ * of the factory methods given by {@code NumberFormat} for compact number
+ * formatting. For example,
+ * {@link NumberFormat#getCompactNumberInstance(Locale, Style)}.
+ *
+ * <blockquote><pre>
+ * NumberFormat fmt = NumberFormat.getCompactNumberInstance(
+ * new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+ * String result = fmt.format(1000);
+ * </pre></blockquote>
+ *
+ * <h3><a id="compact_number_style">Style</a></h3>
+ * <p>
+ * A number can be formatted in the compact forms with two different
+ * styles, {@link NumberFormat.Style#SHORT SHORT}
+ * and {@link NumberFormat.Style#LONG LONG}. Use
+ * {@link NumberFormat#getCompactNumberInstance(Locale, Style)} for formatting and
+ * parsing a number in {@link NumberFormat.Style#SHORT SHORT} or
+ * {@link NumberFormat.Style#LONG LONG} compact form,
+ * where the given {@code Style} parameter requests the desired
+ * format. A {@link NumberFormat.Style#SHORT SHORT} style
+ * compact number instance in the {@link java.util.Locale#US US locale} formats
+ * {@code 10000} as {@code "10K"}. However, a
+ * {@link NumberFormat.Style#LONG LONG} style instance in same locale
+ * formats {@code 10000} as {@code "10 thousand"}.
+ *
+ * <h3><a id="compact_number_patterns">Compact Number Patterns</a></h3>
+ * <p>
+ * The compact number patterns are represented in a series of patterns where each
+ * pattern is used to format a range of numbers. An example of
+ * {@link NumberFormat.Style#SHORT SHORT} styled compact number patterns
+ * for the {@link java.util.Locale#US US locale} is {@code {"", "", "", "0K",
+ * "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"}},
+ * ranging from {@code 10}<sup>{@code 0}</sup> to {@code 10}<sup>{@code 14}</sup>.
+ * There can be any number of patterns and they are
+ * strictly index based starting from the range {@code 10}<sup>{@code 0}</sup>.
+ * For example, in the above patterns, pattern at index 3
+ * ({@code "0K"}) is used for formatting {@code number >= 1000 and number < 10000},
+ * pattern at index 4 ({@code "00K"}) is used for formatting
+ * {@code number >= 10000 and number < 100000} and so on. In most of the locales,
+ * patterns with the range
+ * {@code 10}<sup>{@code 0}</sup>-{@code 10}<sup>{@code 2}</sup> are empty
+ * strings, which implicitly means a special pattern {@code "0"}.
+ * A special pattern {@code "0"} is used for any range which does not contain
+ * a compact pattern. This special pattern can appear explicitly for any specific
+ * range, or considered as a default pattern for an empty string.
+ * <p>
+ * A compact pattern has the following syntax:
+ * <blockquote><pre>
+ * <i>Pattern:</i>
+ * <i>PositivePattern</i>
+ * <i>PositivePattern</i> <i>[; NegativePattern]<sub>optional</sub></i>
+ * <i>PositivePattern:</i>
+ * <i>Prefix<sub>optional</sub></i> <i>MinimumInteger</i> <i>Suffix<sub>optional</sub></i>
+ * <i>NegativePattern:</i>
+ * <i>Prefix<sub>optional</sub></i> <i>MinimumInteger</i> <i>Suffix<sub>optional</sub></i>
+ * <i>Prefix:</i>
+ * Any Unicode characters except \uFFFE, \uFFFF, and
+ * <a href = "DecimalFormat.html#special_pattern_character">special characters</a>
+ * <i>Suffix:</i>
+ * Any Unicode characters except \uFFFE, \uFFFF, and
+ * <a href = "DecimalFormat.html#special_pattern_character">special characters</a>
+ * <i>MinimumInteger:</i>
+ * 0
+ * 0 <i>MinimumInteger</i>
+ * </pre></blockquote>
+ *
+ * A compact pattern contains a positive and negative subpattern
+ * separated by a subpattern boundary character {@code ';' (U+003B)},
+ * for example, {@code "0K;-0K"}. Each subpattern has a prefix,
+ * minimum integer digits, and suffix. The negative subpattern
+ * is optional, if absent, then the positive subpattern prefixed with the
+ * minus sign ({@code '-' U+002D HYPHEN-MINUS}) is used as the negative
+ * subpattern. That is, {@code "0K"} alone is equivalent to {@code "0K;-0K"}.
+ * If there is an explicit negative subpattern, it serves only to specify
+ * the negative prefix and suffix. The number of minimum integer digits,
+ * and other characteristics are all the same as the positive pattern.
+ * That means that {@code "0K;-00K"} produces precisely the same behavior
+ * as {@code "0K;-0K"}.
+ *
+ * <p>
+ * Many characters in a compact pattern are taken literally, they are matched
+ * during parsing and output unchanged during formatting.
+ * <a href = "DecimalFormat.html#special_pattern_character">Special characters</a>,
+ * on the other hand, stand for other characters, strings, or classes of
+ * characters. They must be quoted, using single quote {@code ' (U+0027)}
+ * unless noted otherwise, if they are to appear in the prefix or suffix
+ * as literals. For example, 0\u0915'.'.
+ *
+ * <h3>Formatting</h3>
+ * The default formatting behavior returns a formatted string with no fractional
+ * digits, however users can use the {@link #setMinimumFractionDigits(int)}
+ * method to include the fractional part.
+ * The number {@code 1000.0} or {@code 1000} is formatted as {@code "1K"}
+ * not {@code "1.00K"} (in the {@link java.util.Locale#US US locale}). For this
+ * reason, the patterns provided for formatting contain only the minimum
+ * integer digits, prefix and/or suffix, but no fractional part.
+ * For example, patterns used are {@code {"", "", "", 0K, 00K, ...}}. If the pattern
+ * selected for formatting a number is {@code "0"} (special pattern),
+ * either explicit or defaulted, then the general number formatting provided by
+ * {@link java.text.DecimalFormat DecimalFormat}
+ * for the specified locale is used.
+ *
+ * <h3>Parsing</h3>
+ * The default parsing behavior does not allow a grouping separator until
+ * grouping used is set to {@code true} by using
+ * {@link #setGroupingUsed(boolean)}. The parsing of the fractional part
+ * depends on the {@link #isParseIntegerOnly()}. For example, if the
+ * parse integer only is set to true, then the fractional part is skipped.
+ *
+ * <h3>Rounding</h3>
+ * {@code CompactNumberFormat} provides rounding modes defined in
+ * {@link java.math.RoundingMode} for formatting. By default, it uses
+ * {@link java.math.RoundingMode#HALF_EVEN RoundingMode.HALF_EVEN}.
+ *
+ * @see CompactNumberFormat.Style
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @since 12
+ */
+public final class CompactNumberFormat extends NumberFormat {
+
+ private static final long serialVersionUID = 7128367218649234678L;
+
+ /**
+ * The patterns for compact form of numbers for this
+ * {@code CompactNumberFormat}. A possible example is
+ * {@code {"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B",
+ * "00B", "000B", "0T", "00T", "000T"}} ranging from
+ * {@code 10}<sup>{@code 0}</sup>-{@code 10}<sup>{@code 14}</sup>,
+ * where each pattern is used to format a range of numbers.
+ * For example, {@code "0K"} is used for formatting
+ * {@code number >= 1000 and number < 10000}, {@code "00K"} is used for
+ * formatting {@code number >= 10000 and number < 100000} and so on.
+ * This field must not be {@code null}.
+ *
+ * @serial
+ */
+ private String[] compactPatterns;
+
+ /**
+ * List of positive prefix patterns of this formatter's
+ * compact number patterns.
+ */
+ private transient List<String> positivePrefixPatterns;
+
+ /**
+ * List of negative prefix patterns of this formatter's
+ * compact number patterns.
+ */
+ private transient List<String> negativePrefixPatterns;
+
+ /**
+ * List of positive suffix patterns of this formatter's
+ * compact number patterns.
+ */
+ private transient List<String> positiveSuffixPatterns;
+
+ /**
+ * List of negative suffix patterns of this formatter's
+ * compact number patterns.
+ */
+ private transient List<String> negativeSuffixPatterns;
+
+ /**
+ * List of divisors of this formatter's compact number patterns.
+ * Divisor can be either Long or BigInteger (if the divisor value goes
+ * beyond long boundary)
+ */
+ private transient List<Number> divisors;
+
+ /**
+ * The {@code DecimalFormatSymbols} object used by this format.
+ * It contains the symbols used to format numbers. For example,
+ * the grouping separator, decimal separator, and so on.
+ * This field must not be {@code null}.
+ *
+ * @serial
+ * @see DecimalFormatSymbols
+ */
+ private DecimalFormatSymbols symbols;
+
+ /**
+ * The decimal pattern which is used for formatting the numbers
+ * matching special pattern "0". This field must not be {@code null}.
+ *
+ * @serial
+ * @see DecimalFormat
+ */
+ private final String decimalPattern;
+
+ /**
+ * A {@code DecimalFormat} used by this format for getting corresponding
+ * general number formatting behavior for compact numbers.
+ *
+ */
+ private transient DecimalFormat decimalFormat;
+
+ /**
+ * A {@code DecimalFormat} used by this format for getting general number
+ * formatting behavior for the numbers which can't be represented as compact
+ * numbers. For example, number matching the special pattern "0" are
+ * formatted through general number format pattern provided by
+ * {@link java.text.DecimalFormat DecimalFormat}
+ * for the specified locale.
+ *
+ */
+ private transient DecimalFormat defaultDecimalFormat;
+
+ /**
+ * The number of digits between grouping separators in the integer portion
+ * of a compact number. For the grouping to work while formatting, this
+ * field needs to be greater than 0 with grouping used set as true.
+ * This field must not be negative.
+ *
+ * @serial
+ */
+ private byte groupingSize = 0;
+
+ /**
+ * Returns whether the {@link #parse(String, ParsePosition)}
+ * method returns {@code BigDecimal}.
+ *
+ * @serial
+ */
+ private boolean parseBigDecimal = false;
+
+ /**
+ * The {@code RoundingMode} used in this compact number format.
+ * This field must not be {@code null}.
+ *
+ * @serial
+ */
+ private RoundingMode roundingMode = RoundingMode.HALF_EVEN;
+
+ /**
+ * Special pattern used for compact numbers
+ */
+ private static final String SPECIAL_PATTERN = "0";
+
+ /**
+ * Multiplier for compact pattern range. In
+ * the list compact patterns each compact pattern
+ * specify the range with the multiplication factor of 10
+ * of its previous compact pattern range.
+ * For example, 10^0, 10^1, 10^2, 10^3, 10^4...
+ *
+ */
+ private static final int RANGE_MULTIPLIER = 10;
+
+ /**
+ * Creates a {@code CompactNumberFormat} using the given decimal pattern,
+ * decimal format symbols and compact patterns.
+ * To obtain the instance of {@code CompactNumberFormat} with the standard
+ * compact patterns for a {@code Locale} and {@code Style},
+ * it is recommended to use the factory methods given by
+ * {@code NumberFormat} for compact number formatting. For example,
+ * {@link NumberFormat#getCompactNumberInstance(Locale, Style)}.
+ *
+ * @param decimalPattern a decimal pattern for general number formatting
+ * @param symbols the set of symbols to be used
+ * @param compactPatterns an array of
+ * <a href = "CompactNumberFormat.html#compact_number_patterns">
+ * compact number patterns</a>
+ * @throws NullPointerException if any of the given arguments is
+ * {@code null}
+ * @throws IllegalArgumentException if the given {@code decimalPattern} or the
+ * {@code compactPatterns} array contains an invalid pattern
+ * or if a {@code null} appears in the array of compact
+ * patterns
+ * @see DecimalFormat#DecimalFormat(java.lang.String, DecimalFormatSymbols)
+ * @see DecimalFormatSymbols
+ */
+ public CompactNumberFormat(String decimalPattern,
+ DecimalFormatSymbols symbols, String[] compactPatterns) {
+
+ Objects.requireNonNull(decimalPattern, "decimalPattern");
+ Objects.requireNonNull(symbols, "symbols");
+ Objects.requireNonNull(compactPatterns, "compactPatterns");
+
+ this.symbols = symbols;
+ // Instantiating the DecimalFormat with "0" pattern; this acts just as a
+ // basic pattern; the properties (For example, prefix/suffix)
+ // are later computed based on the compact number formatting process.
+ decimalFormat = new DecimalFormat(SPECIAL_PATTERN, this.symbols);
+
+ // Initializing the super class state with the decimalFormat values
+ // to represent this CompactNumberFormat.
+ // For setting the digits counts, use overridden setXXX methods of this
+ // CompactNumberFormat, as it performs check with the max range allowed
+ // for compact number formatting
+ setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+ setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+ setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+ setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+
+ super.setGroupingUsed(decimalFormat.isGroupingUsed());
+ super.setParseIntegerOnly(decimalFormat.isParseIntegerOnly());
+
+ this.compactPatterns = compactPatterns;
+
+ // DecimalFormat used for formatting numbers with special pattern "0".
+ // Formatting is delegated to the DecimalFormat's number formatting
+ // with no fraction digits
+ this.decimalPattern = decimalPattern;
+ defaultDecimalFormat = new DecimalFormat(this.decimalPattern,
+ this.symbols);
+ defaultDecimalFormat.setMaximumFractionDigits(0);
+ // Process compact patterns to extract the prefixes, suffixes and
+ // divisors
+ processCompactPatterns();
+ }
+
+ /**
+ * Formats a number to produce a string representing its compact form.
+ * The number can be of any subclass of {@link java.lang.Number}.
+ * @param number the number to format
+ * @param toAppendTo the {@code StringBuffer} to which the formatted
+ * text is to be appended
+ * @param fieldPosition keeps track on the position of the field within
+ * the returned string. For example, for formatting
+ * a number {@code 123456789} in the
+ * {@link java.util.Locale#US US locale},
+ * if the given {@code fieldPosition} is
+ * {@link NumberFormat#INTEGER_FIELD}, the begin
+ * index and end index of {@code fieldPosition}
+ * will be set to 0 and 3, respectively for the
+ * output string {@code 123M}. Similarly, positions
+ * of the prefix and the suffix fields can be
+ * obtained using {@link NumberFormat.Field#PREFIX}
+ * and {@link NumberFormat.Field#SUFFIX} respectively.
+ * @return the {@code StringBuffer} passed in as {@code toAppendTo}
+ * @throws IllegalArgumentException if {@code number} is
+ * {@code null} or not an instance of {@code Number}
+ * @throws NullPointerException if {@code toAppendTo} or
+ * {@code fieldPosition} is {@code null}
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @see FieldPosition
+ */
+ @Override
+ public final StringBuffer format(Object number,
+ StringBuffer toAppendTo,
+ FieldPosition fieldPosition) {
+ if (number instanceof Long || number instanceof Integer
+ || number instanceof Short || number instanceof Byte
+ || number instanceof AtomicInteger
+ || number instanceof AtomicLong
+ || (number instanceof BigInteger
+ && ((BigInteger) number).bitLength() < 64)) {
+ return format(((Number) number).longValue(), toAppendTo,
+ fieldPosition);
+ } else if (number instanceof BigDecimal) {
+ return format((BigDecimal) number, toAppendTo, fieldPosition);
+ } else if (number instanceof BigInteger) {
+ return format((BigInteger) number, toAppendTo, fieldPosition);
+ } else if (number instanceof Number) {
+ return format(((Number) number).doubleValue(), toAppendTo, fieldPosition);
+ } else {
+ throw new IllegalArgumentException("Cannot format "
+ + number.getClass().getName() + " as a number");
+ }
+ }
+
+ /**
+ * Formats a double to produce a string representing its compact form.
+ * @param number the double number to format
+ * @param result where the text is to be appended
+ * @param fieldPosition keeps track on the position of the field within
+ * the returned string. For example, to format
+ * a number {@code 1234567.89} in the
+ * {@link java.util.Locale#US US locale}
+ * if the given {@code fieldPosition} is
+ * {@link NumberFormat#INTEGER_FIELD}, the begin
+ * index and end index of {@code fieldPosition}
+ * will be set to 0 and 1, respectively for the
+ * output string {@code 1M}. Similarly, positions
+ * of the prefix and the suffix fields can be
+ * obtained using {@link NumberFormat.Field#PREFIX}
+ * and {@link NumberFormat.Field#SUFFIX} respectively.
+ * @return the {@code StringBuffer} passed in as {@code result}
+ * @throws NullPointerException if {@code result} or
+ * {@code fieldPosition} is {@code null}
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @see FieldPosition
+ */
+ @Override
+ public StringBuffer format(double number, StringBuffer result,
+ FieldPosition fieldPosition) {
+
+ fieldPosition.setBeginIndex(0);
+ fieldPosition.setEndIndex(0);
+ return format(number, result, fieldPosition.getFieldDelegate());
+ }
+
+ private StringBuffer format(double number, StringBuffer result,
+ FieldDelegate delegate) {
+
+ boolean nanOrInfinity = decimalFormat.handleNaN(number, result, delegate);
+ if (nanOrInfinity) {
+ return result;
+ }
+
+ boolean isNegative = ((number < 0.0)
+ || (number == 0.0 && 1 / number < 0.0));
+
+ nanOrInfinity = decimalFormat.handleInfinity(number, result, delegate, isNegative);
+ if (nanOrInfinity) {
+ return result;
+ }
+
+ // Round the double value with min fraction digits, the integer
+ // part of the rounded value is used for matching the compact
+ // number pattern
+ // For example, if roundingMode is HALF_UP with min fraction
+ // digits = 0, the number 999.6 should round up
+ // to 1000 and outputs 1K/thousand in "en_US" locale
+ DigitList dList = new DigitList();
+ dList.setRoundingMode(getRoundingMode());
+ number = isNegative ? -number : number;
+ dList.set(isNegative, number, getMinimumFractionDigits());
+
+ double roundedNumber = dList.getDouble();
+ int compactDataIndex = selectCompactPattern((long) roundedNumber);
+ if (compactDataIndex != -1) {
+ String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+ : positivePrefixPatterns.get(compactDataIndex);
+ String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+ : positiveSuffixPatterns.get(compactDataIndex);
+
+ if (!prefix.isEmpty() || !suffix.isEmpty()) {
+ appendPrefix(result, prefix, delegate);
+ long divisor = (Long) divisors.get(compactDataIndex);
+ roundedNumber = roundedNumber / divisor;
+ decimalFormat.setDigitList(roundedNumber, isNegative, getMaximumFractionDigits());
+ decimalFormat.subformatNumber(result, delegate, isNegative,
+ false, getMaximumIntegerDigits(), getMinimumIntegerDigits(),
+ getMaximumFractionDigits(), getMinimumFractionDigits());
+ appendSuffix(result, suffix, delegate);
+ } else {
+ defaultDecimalFormat.doubleSubformat(number, result, delegate, isNegative);
+ }
+ } else {
+ defaultDecimalFormat.doubleSubformat(number, result, delegate, isNegative);
+ }
+ return result;
+ }
+
+ /**
+ * Formats a long to produce a string representing its compact form.
+ * @param number the long number to format
+ * @param result where the text is to be appended
+ * @param fieldPosition keeps track on the position of the field within
+ * the returned string. For example, to format
+ * a number {@code 123456789} in the
+ * {@link java.util.Locale#US US locale},
+ * if the given {@code fieldPosition} is
+ * {@link NumberFormat#INTEGER_FIELD}, the begin
+ * index and end index of {@code fieldPosition}
+ * will be set to 0 and 3, respectively for the
+ * output string {@code 123M}. Similarly, positions
+ * of the prefix and the suffix fields can be
+ * obtained using {@link NumberFormat.Field#PREFIX}
+ * and {@link NumberFormat.Field#SUFFIX} respectively.
+ * @return the {@code StringBuffer} passed in as {@code result}
+ * @throws NullPointerException if {@code result} or
+ * {@code fieldPosition} is {@code null}
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @see FieldPosition
+ */
+ @Override
+ public StringBuffer format(long number, StringBuffer result,
+ FieldPosition fieldPosition) {
+
+ fieldPosition.setBeginIndex(0);
+ fieldPosition.setEndIndex(0);
+ return format(number, result, fieldPosition.getFieldDelegate());
+ }
+
+ private StringBuffer format(long number, StringBuffer result, FieldDelegate delegate) {
+ boolean isNegative = (number < 0);
+ if (isNegative) {
+ number = -number;
+ }
+
+ if (number < 0) { // LONG_MIN
+ BigInteger bigIntegerValue = BigInteger.valueOf(number);
+ return format(bigIntegerValue, result, delegate, true);
+ }
+
+ int compactDataIndex = selectCompactPattern(number);
+ if (compactDataIndex != -1) {
+ String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+ : positivePrefixPatterns.get(compactDataIndex);
+ String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+ : positiveSuffixPatterns.get(compactDataIndex);
+ if (!prefix.isEmpty() || !suffix.isEmpty()) {
+ appendPrefix(result, prefix, delegate);
+ long divisor = (Long) divisors.get(compactDataIndex);
+ if ((number % divisor == 0)) {
+ number = number / divisor;
+ decimalFormat.setDigitList(number, isNegative, 0);
+ decimalFormat.subformatNumber(result, delegate,
+ isNegative, true, getMaximumIntegerDigits(),
+ getMinimumIntegerDigits(), getMaximumFractionDigits(),
+ getMinimumFractionDigits());
+ } else {
+ // To avoid truncation of fractional part store
+ // the value in double and follow double path instead of
+ // long path
+ double dNumber = (double) number / divisor;
+ decimalFormat.setDigitList(dNumber, isNegative, getMaximumFractionDigits());
+ decimalFormat.subformatNumber(result, delegate,
+ isNegative, false, getMaximumIntegerDigits(),
+ getMinimumIntegerDigits(), getMaximumFractionDigits(),
+ getMinimumFractionDigits());
+ }
+ appendSuffix(result, suffix, delegate);
+ } else {
+ number = isNegative ? -number : number;
+ defaultDecimalFormat.format(number, result, delegate);
+ }
+ } else {
+ number = isNegative ? -number : number;
+ defaultDecimalFormat.format(number, result, delegate);
+ }
+ return result;
+ }
+
+ /**
+ * Formats a BigDecimal to produce a string representing its compact form.
+ * @param number the BigDecimal number to format
+ * @param result where the text is to be appended
+ * @param fieldPosition keeps track on the position of the field within
+ * the returned string. For example, to format
+ * a number {@code 1234567.89} in the
+ * {@link java.util.Locale#US US locale},
+ * if the given {@code fieldPosition} is
+ * {@link NumberFormat#INTEGER_FIELD}, the begin
+ * index and end index of {@code fieldPosition}
+ * will be set to 0 and 1, respectively for the
+ * output string {@code 1M}. Similarly, positions
+ * of the prefix and the suffix fields can be
+ * obtained using {@link NumberFormat.Field#PREFIX}
+ * and {@link NumberFormat.Field#SUFFIX} respectively.
+ * @return the {@code StringBuffer} passed in as {@code result}
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @throws NullPointerException if any of the given parameter
+ * is {@code null}
+ * @see FieldPosition
+ */
+ private StringBuffer format(BigDecimal number, StringBuffer result,
+ FieldPosition fieldPosition) {
+
+ Objects.requireNonNull(number);
+ fieldPosition.setBeginIndex(0);
+ fieldPosition.setEndIndex(0);
+ return format(number, result, fieldPosition.getFieldDelegate());
+ }
+
+ private StringBuffer format(BigDecimal number, StringBuffer result,
+ FieldDelegate delegate) {
+
+ boolean isNegative = number.signum() == -1;
+ if (isNegative) {
+ number = number.negate();
+ }
+
+ // Round the value with min fraction digits, the integer
+ // part of the rounded value is used for matching the compact
+ // number pattern
+ // For example, If roundingMode is HALF_UP with min fraction digits = 0,
+ // the number 999.6 should round up
+ // to 1000 and outputs 1K/thousand in "en_US" locale
+ number = number.setScale(getMinimumFractionDigits(), getRoundingMode());
+
+ int compactDataIndex;
+ if (number.toBigInteger().bitLength() < 64) {
+ compactDataIndex = selectCompactPattern(number.toBigInteger().longValue());
+ } else {
+ compactDataIndex = selectCompactPattern(number.toBigInteger());
+ }
+
+ if (compactDataIndex != -1) {
+ String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+ : positivePrefixPatterns.get(compactDataIndex);
+ String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+ : positiveSuffixPatterns.get(compactDataIndex);
+ if (!prefix.isEmpty() || !suffix.isEmpty()) {
+ appendPrefix(result, prefix, delegate);
+ Number divisor = divisors.get(compactDataIndex);
+ number = number.divide(new BigDecimal(divisor.toString()), getRoundingMode());
+ decimalFormat.setDigitList(number, isNegative, getMaximumFractionDigits());
+ decimalFormat.subformatNumber(result, delegate, isNegative,
+ false, getMaximumIntegerDigits(), getMinimumIntegerDigits(),
+ getMaximumFractionDigits(), getMinimumFractionDigits());
+ appendSuffix(result, suffix, delegate);
+ } else {
+ number = isNegative ? number.negate() : number;
+ defaultDecimalFormat.format(number, result, delegate);
+ }
+ } else {
+ number = isNegative ? number.negate() : number;
+ defaultDecimalFormat.format(number, result, delegate);
+ }
+ return result;
+ }
+
+ /**
+ * Formats a BigInteger to produce a string representing its compact form.
+ * @param number the BigInteger number to format
+ * @param result where the text is to be appended
+ * @param fieldPosition keeps track on the position of the field within
+ * the returned string. For example, to format
+ * a number {@code 123456789} in the
+ * {@link java.util.Locale#US US locale},
+ * if the given {@code fieldPosition} is
+ * {@link NumberFormat#INTEGER_FIELD}, the begin index
+ * and end index of {@code fieldPosition} will be set
+ * to 0 and 3, respectively for the output string
+ * {@code 123M}. Similarly, positions of the
+ * prefix and the suffix fields can be obtained
+ * using {@link NumberFormat.Field#PREFIX} and
+ * {@link NumberFormat.Field#SUFFIX} respectively.
+ * @return the {@code StringBuffer} passed in as {@code result}
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @throws NullPointerException if any of the given parameter
+ * is {@code null}
+ * @see FieldPosition
+ */
+ private StringBuffer format(BigInteger number, StringBuffer result,
+ FieldPosition fieldPosition) {
+
+ Objects.requireNonNull(number);
+ fieldPosition.setBeginIndex(0);
+ fieldPosition.setEndIndex(0);
+ return format(number, result, fieldPosition.getFieldDelegate(), false);
+ }
+
+ private StringBuffer format(BigInteger number, StringBuffer result,
+ FieldDelegate delegate, boolean formatLong) {
+
+ boolean isNegative = number.signum() == -1;
+ if (isNegative) {
+ number = number.negate();
+ }
+
+ int compactDataIndex = selectCompactPattern(number);
+ if (compactDataIndex != -1) {
+ String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+ : positivePrefixPatterns.get(compactDataIndex);
+ String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+ : positiveSuffixPatterns.get(compactDataIndex);
+ if (!prefix.isEmpty() || !suffix.isEmpty()) {
+ appendPrefix(result, prefix, delegate);
+ Number divisor = divisors.get(compactDataIndex);
+ if (number.mod(new BigInteger(divisor.toString()))
+ .compareTo(BigInteger.ZERO) == 0) {
+ number = number.divide(new BigInteger(divisor.toString()));
+
+ decimalFormat.setDigitList(number, isNegative, 0);
+ decimalFormat.subformatNumber(result, delegate,
+ isNegative, true, getMaximumIntegerDigits(),
+ getMinimumIntegerDigits(), getMaximumFractionDigits(),
+ getMinimumFractionDigits());
+ } else {
+ // To avoid truncation of fractional part store the value in
+ // BigDecimal and follow BigDecimal path instead of
+ // BigInteger path
+ BigDecimal nDecimal = new BigDecimal(number)
+ .divide(new BigDecimal(divisor.toString()), getRoundingMode());
+ decimalFormat.setDigitList(nDecimal, isNegative, getMaximumFractionDigits());
+ decimalFormat.subformatNumber(result, delegate,
+ isNegative, false, getMaximumIntegerDigits(),
+ getMinimumIntegerDigits(), getMaximumFractionDigits(),
+ getMinimumFractionDigits());
+ }
+ appendSuffix(result, suffix, delegate);
+ } else {
+ number = isNegative ? number.negate() : number;
+ defaultDecimalFormat.format(number, result, delegate, formatLong);
+ }
+ } else {
+ number = isNegative ? number.negate() : number;
+ defaultDecimalFormat.format(number, result, delegate, formatLong);
+ }
+ return result;
+ }
+
+ /**
+ * Appends the {@code prefix} to the {@code result} and also set the
+ * {@code NumberFormat.Field.SIGN} and {@code NumberFormat.Field.PREFIX}
+ * field positions.
+ * @param result the resulting string, where the pefix is to be appended
+ * @param prefix prefix to append
+ * @param delegate notified of the locations of
+ * {@code NumberFormat.Field.SIGN} and
+ * {@code NumberFormat.Field.PREFIX} fields
+ */
+ private void appendPrefix(StringBuffer result, String prefix,
+ FieldDelegate delegate) {
+ append(result, expandAffix(prefix), delegate,
+ getFieldPositions(prefix, NumberFormat.Field.PREFIX));
+ }
+
+ /**
+ * Appends {@code suffix} to the {@code result} and also set the
+ * {@code NumberFormat.Field.SIGN} and {@code NumberFormat.Field.SUFFIX}
+ * field positions.
+ * @param result the resulting string, where the suffix is to be appended
+ * @param suffix suffix to append
+ * @param delegate notified of the locations of
+ * {@code NumberFormat.Field.SIGN} and
+ * {@code NumberFormat.Field.SUFFIX} fields
+ */
+ private void appendSuffix(StringBuffer result, String suffix,
+ FieldDelegate delegate) {
+ append(result, expandAffix(suffix), delegate,
+ getFieldPositions(suffix, NumberFormat.Field.SUFFIX));
+ }
+
+ /**
+ * Appends the {@code string} to the {@code result}.
+ * {@code delegate} is notified of SIGN, PREFIX and/or SUFFIX
+ * field positions.
+ * @param result the resulting string, where the text is to be appended
+ * @param string the text to append
+ * @param delegate notified of the locations of sub fields
+ * @param positions a list of {@code FieldPostion} in the given
+ * string
+ */
+ private void append(StringBuffer result, String string,
+ FieldDelegate delegate, List<FieldPosition> positions) {
+ if (string.length() > 0) {
+ int start = result.length();
+ result.append(string);
+ for (int counter = 0; counter < positions.size(); counter++) {
+ FieldPosition fp = positions.get(counter);
+ Format.Field attribute = fp.getFieldAttribute();
+ delegate.formatted(attribute, attribute,
+ start + fp.getBeginIndex(),
+ start + fp.getEndIndex(), result);
+ }
+ }
+ }
+
+ /**
+ * Expands an affix {@code pattern} into a string of literals.
+ * All characters in the pattern are literals unless prefixed by QUOTE.
+ * The character prefixed by QUOTE is replaced with its respective
+ * localized literal.
+ * @param pattern a compact number pattern affix
+ * @return an expanded affix
+ */
+ private String expandAffix(String pattern) {
+ // Return if no quoted character exists
+ if (pattern.indexOf(QUOTE) < 0) {
+ return pattern;
+ }
+ StringBuilder sb = new StringBuilder();
+ for (int index = 0; index < pattern.length();) {
+ char ch = pattern.charAt(index++);
+ if (ch == QUOTE) {
+ ch = pattern.charAt(index++);
+ if (ch == MINUS_SIGN) {
+ ch = symbols.getMinusSign();
+ }
+ }
+ sb.append(ch);
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Returns a list of {@code FieldPostion} in the given {@code pattern}.
+ * @param pattern the pattern to be parsed for {@code FieldPosition}
+ * @param field whether a PREFIX or SUFFIX field
+ * @return a list of {@code FieldPostion}
+ */
+ private List<FieldPosition> getFieldPositions(String pattern, Field field) {
+ List<FieldPosition> positions = new ArrayList<>();
+ StringBuilder affix = new StringBuilder();
+ int stringIndex = 0;
+ for (int index = 0; index < pattern.length();) {
+ char ch = pattern.charAt(index++);
+ if (ch == QUOTE) {
+ ch = pattern.charAt(index++);
+ if (ch == MINUS_SIGN) {
+ ch = symbols.getMinusSign();
+ FieldPosition fp = new FieldPosition(NumberFormat.Field.SIGN);
+ fp.setBeginIndex(stringIndex);
+ fp.setEndIndex(stringIndex + 1);
+ positions.add(fp);
+ }
+ }
+ stringIndex++;
+ affix.append(ch);
+ }
+ if (affix.length() != 0) {
+ FieldPosition fp = new FieldPosition(field);
+ fp.setBeginIndex(0);
+ fp.setEndIndex(affix.length());
+ positions.add(fp);
+ }
+ return positions;
+ }
+
+ /**
+ * Select the index of the matched compact number pattern for
+ * the given {@code long} {@code number}.
+ *
+ * @param number number to be formatted
+ * @return index of matched compact pattern;
+ * -1 if no compact patterns specified
+ */
+ private int selectCompactPattern(long number) {
+
+ if (compactPatterns.length == 0) {
+ return -1;
+ }
+
+ // Minimum index can be "0", max index can be "size - 1"
+ int dataIndex = number <= 1 ? 0 : (int) Math.log10(number);
+ dataIndex = Math.min(dataIndex, compactPatterns.length - 1);
+ return dataIndex;
+ }
+
+ /**
+ * Select the index of the matched compact number
+ * pattern for the given {@code BigInteger} {@code number}.
+ *
+ * @param number number to be formatted
+ * @return index of matched compact pattern;
+ * -1 if no compact patterns specified
+ */
+ private int selectCompactPattern(BigInteger number) {
+
+ int matchedIndex = -1;
+ if (compactPatterns.length == 0) {
+ return matchedIndex;
+ }
+
+ BigInteger currentValue = BigInteger.ONE;
+
+ // For formatting a number, the greatest type less than
+ // or equal to number is used
+ for (int index = 0; index < compactPatterns.length; index++) {
+ if (number.compareTo(currentValue) > 0) {
+ // Input number is greater than current type; try matching with
+ // the next
+ matchedIndex = index;
+ currentValue = currentValue.multiply(BigInteger.valueOf(RANGE_MULTIPLIER));
+ continue;
+ }
+ if (number.compareTo(currentValue) < 0) {
+ // Current type is greater than the input number;
+ // take the previous pattern
+ break;
+ } else {
+ // Equal
+ matchedIndex = index;
+ break;
+ }
+ }
+ return matchedIndex;
+ }
+
+ /**
+ * Formats an Object producing an {@code AttributedCharacterIterator}.
+ * The returned {@code AttributedCharacterIterator} can be used
+ * to build the resulting string, as well as to determine information
+ * about the resulting string.
+ * <p>
+ * Each attribute key of the {@code AttributedCharacterIterator} will
+ * be of type {@code NumberFormat.Field}, with the attribute value
+ * being the same as the attribute key. The prefix and the suffix
+ * parts of the returned iterator (if present) are represented by
+ * the attributes {@link NumberFormat.Field#PREFIX} and
+ * {@link NumberFormat.Field#SUFFIX} respectively.
+ *
+ *
+ * @throws NullPointerException if obj is null
+ * @throws IllegalArgumentException when the Format cannot format the
+ * given object
+ * @throws ArithmeticException if rounding is needed with rounding
+ * mode being set to {@code RoundingMode.UNNECESSARY}
+ * @param obj The object to format
+ * @return an {@code AttributedCharacterIterator} describing the
+ * formatted value
+ */
+ @Override
+ public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+ CharacterIteratorFieldDelegate delegate
+ = new CharacterIteratorFieldDelegate();
+ StringBuffer sb = new StringBuffer();
+
+ if (obj instanceof Double || obj instanceof Float) {
+ format(((Number) obj).doubleValue(), sb, delegate);
+ } else if (obj instanceof Long || obj instanceof Integer
+ || obj instanceof Short || obj instanceof Byte
+ || obj instanceof AtomicInteger || obj instanceof AtomicLong) {
+ format(((Number) obj).longValue(), sb, delegate);
+ } else if (obj instanceof BigDecimal) {
+ format((BigDecimal) obj, sb, delegate);
+ } else if (obj instanceof BigInteger) {
+ format((BigInteger) obj, sb, delegate, false);
+ } else if (obj == null) {
+ throw new NullPointerException(
+ "formatToCharacterIterator must be passed non-null object");
+ } else {
+ throw new IllegalArgumentException(
+ "Cannot format given Object as a Number");
+ }
+ return delegate.getIterator(sb.toString());
+ }
+
+ /**
+ * Computes the divisor using minimum integer digits and
+ * matched pattern index.
+ * @param minIntDigits string of 0s in compact pattern
+ * @param patternIndex index of matched compact pattern
+ * @return divisor value for the number matching the compact
+ * pattern at given {@code patternIndex}
+ */
+ private Number computeDivisor(String minIntDigits, int patternIndex) {
+ int count = minIntDigits.length() - 1;
+ Number matchedValue;
+ // The divisor value can go above long range, if the compact patterns
+ // goes above index 18, divisor may need to be stored as BigInteger,
+ // since long can't store numbers >= 10^19,
+ if (patternIndex < 19) {
+ matchedValue = (long) Math.pow(RANGE_MULTIPLIER, patternIndex);
+ } else {
+ matchedValue = BigInteger.valueOf(RANGE_MULTIPLIER).pow(patternIndex);
+ }
+ Number divisor = matchedValue;
+ if (count != 0) {
+ if (matchedValue instanceof BigInteger) {
+ BigInteger bigValue = (BigInteger) matchedValue;
+ if (bigValue.compareTo(BigInteger.valueOf((long) Math.pow(RANGE_MULTIPLIER, count))) < 0) {
+ throw new IllegalArgumentException("Invalid Pattern"
+ + " [" + compactPatterns[patternIndex]
+ + "]: min integer digits specified exceeds the limit"
+ + " for the index " + patternIndex);
+ }
+ divisor = bigValue.divide(BigInteger.valueOf((long) Math.pow(RANGE_MULTIPLIER, count)));
+ } else {
+ long longValue = (long) matchedValue;
+ if (longValue < (long) Math.pow(RANGE_MULTIPLIER, count)) {
+ throw new IllegalArgumentException("Invalid Pattern"
+ + " [" + compactPatterns[patternIndex]
+ + "]: min integer digits specified exceeds the limit"
+ + " for the index " + patternIndex);
+ }
+ divisor = longValue / (long) Math.pow(RANGE_MULTIPLIER, count);
+ }
+ }
+ return divisor;
+ }
+
+ /**
+ * Process the series of compact patterns to compute the
+ * series of prefixes, suffixes and their respective divisor
+ * value.
+ *
+ */
+ private void processCompactPatterns() {
+ int size = compactPatterns.length;
+ positivePrefixPatterns = new ArrayList<>(size);
+ negativePrefixPatterns = new ArrayList<>(size);
+ positiveSuffixPatterns = new ArrayList<>(size);
+ negativeSuffixPatterns = new ArrayList<>(size);
+ divisors = new ArrayList<>(size);
+
+ for (int index = 0; index < size; index++) {
+ applyPattern(compactPatterns[index], index);
+ }
+ }
+
+ /**
+ * Process a compact pattern at a specific {@code index}
+ * @param pattern the compact pattern to be processed
+ * @param index index in the array of compact patterns
+ *
+ */
+ private void applyPattern(String pattern, int index) {
+
+ int start = 0;
+ boolean gotNegative = false;
+
+ String positivePrefix = "";
+ String positiveSuffix = "";
+ String negativePrefix = "";
+ String negativeSuffix = "";
+ String zeros = "";
+ for (int j = 1; j >= 0 && start < pattern.length(); --j) {
+
+ StringBuffer prefix = new StringBuffer();
+ StringBuffer suffix = new StringBuffer();
+ boolean inQuote = false;
+ // The phase ranges from 0 to 2. Phase 0 is the prefix. Phase 1 is
+ // the section of the pattern with digits. Phase 2 is the suffix.
+ // The separation of the characters into phases is
+ // strictly enforced; if phase 1 characters are to appear in the
+ // suffix, for example, they must be quoted.
+ int phase = 0;
+
+ // The affix is either the prefix or the suffix.
+ StringBuffer affix = prefix;
+
+ for (int pos = start; pos < pattern.length(); ++pos) {
+ char ch = pattern.charAt(pos);
+ switch (phase) {
+ case 0:
+ case 2:
+ // Process the prefix / suffix characters
+ if (inQuote) {
+ // A quote within quotes indicates either the closing
+ // quote or two quotes, which is a quote literal. That
+ // is, we have the second quote in 'do' or 'don''t'.
+ if (ch == QUOTE) {
+ if ((pos + 1) < pattern.length()
+ && pattern.charAt(pos + 1) == QUOTE) {
+ ++pos;
+ affix.append("''"); // 'don''t'
+ } else {
+ inQuote = false; // 'do'
+ }
+ continue;
+ }
+ } else {
+ // Process unquoted characters seen in prefix or suffix
+ // phase.
+ switch (ch) {
+ case ZERO_DIGIT:
+ phase = 1;
+ --pos; // Reprocess this character
+ continue;
+ case QUOTE:
+ // A quote outside quotes indicates either the
+ // opening quote or two quotes, which is a quote
+ // literal. That is, we have the first quote in 'do'
+ // or o''clock.
+ if ((pos + 1) < pattern.length()
+ && pattern.charAt(pos + 1) == QUOTE) {
+ ++pos;
+ affix.append("''"); // o''clock
+ } else {
+ inQuote = true; // 'do'
+ }
+ continue;
+ case SEPARATOR:
+ // Don't allow separators before we see digit
+ // characters of phase 1, and don't allow separators
+ // in the second pattern (j == 0).
+ if (phase == 0 || j == 0) {
+ throw new IllegalArgumentException(
+ "Unquoted special character '"
+ + ch + "' in pattern \"" + pattern + "\"");
+ }
+ start = pos + 1;
+ pos = pattern.length();
+ continue;
+ case MINUS_SIGN:
+ affix.append("'-");
+ continue;
+ case DECIMAL_SEPARATOR:
+ case GROUPING_SEPARATOR:
+ case DIGIT:
+ case PERCENT:
+ case PER_MILLE:
+ case CURRENCY_SIGN:
+ throw new IllegalArgumentException(
+ "Unquoted special character '" + ch
+ + "' in pattern \"" + pattern + "\"");
+ default:
+ break;
+ }
+ }
+ // Note that if we are within quotes, or if this is an
+ // unquoted, non-special character, then we usually fall
+ // through to here.
+ affix.append(ch);
+ break;
+
+ case 1:
+ // The negative subpattern (j = 0) serves only to specify the
+ // negative prefix and suffix, so all the phase 1 characters,
+ // for example, digits, zeroDigit, groupingSeparator,
+ // decimalSeparator, exponent are ignored
+ if (j == 0) {
+ while (pos < pattern.length()) {
+ char negPatternChar = pattern.charAt(pos);
+ if (negPatternChar == ZERO_DIGIT) {
+ ++pos;
+ } else {
+ // Not a phase 1 character, consider it as
+ // suffix and parse it in phase 2
+ --pos; //process it again in outer loop
+ phase = 2;
+ affix = suffix;
+ break;
+ }
+ }
+ continue;
+ }
+ // Consider only '0' as valid pattern char which can appear
+ // in number part, rest can be either suffix or prefix
+ if (ch == ZERO_DIGIT) {
+ zeros = zeros + "0";
+ } else {
+ phase = 2;
+ affix = suffix;
+ --pos;
+ }
+ break;
+ }
+ }
+
+ if (inQuote) {
+ throw new IllegalArgumentException("Invalid single quote"
+ + " in pattern \"" + pattern + "\"");
+ }
+
+ if (j == 1) {
+ positivePrefix = prefix.toString();
+ positiveSuffix = suffix.toString();
+ negativePrefix = positivePrefix;
+ negativeSuffix = positiveSuffix;
+ } else {
+ negativePrefix = prefix.toString();
+ negativeSuffix = suffix.toString();
+ gotNegative = true;
+ }
+
+ // If there is no negative pattern, or if the negative pattern is
+ // identical to the positive pattern, then prepend the minus sign to
+ // the positive pattern to form the negative pattern.
+ if (!gotNegative
+ || (negativePrefix.equals(positivePrefix)
+ && negativeSuffix.equals(positiveSuffix))) {
+ negativeSuffix = positiveSuffix;
+ negativePrefix = "'-" + positivePrefix;
+ }
+ }
+
+ // If no 0s are specified in a non empty pattern, it is invalid
+ if (pattern.length() != 0 && zeros.isEmpty()) {
+ throw new IllegalArgumentException("Invalid pattern"
+ + " [" + pattern + "]: all patterns must include digit"
+ + " placement 0s");
+ }
+
+ // Only if positive affix exists; else put empty strings
+ if (!positivePrefix.isEmpty() || !positiveSuffix.isEmpty()) {
+ positivePrefixPatterns.add(positivePrefix);
+ negativePrefixPatterns.add(negativePrefix);
+ positiveSuffixPatterns.add(positiveSuffix);
+ negativeSuffixPatterns.add(negativeSuffix);
+ divisors.add(computeDivisor(zeros, index));
+ } else {
+ positivePrefixPatterns.add("");
+ negativePrefixPatterns.add("");
+ positiveSuffixPatterns.add("");
+ negativeSuffixPatterns.add("");
+ divisors.add(1L);
+ }
+ }
+
+ private final transient DigitList digitList = new DigitList();
+ private static final int STATUS_INFINITE = 0;
+ private static final int STATUS_POSITIVE = 1;
+ private static final int STATUS_LENGTH = 2;
+
+ private static final char ZERO_DIGIT = '0';
+ private static final char DIGIT = '#';
+ private static final char DECIMAL_SEPARATOR = '.';
+ private static final char GROUPING_SEPARATOR = ',';
+ private static final char MINUS_SIGN = '-';
+ private static final char PERCENT = '%';
+ private static final char PER_MILLE = '\u2030';
+ private static final char SEPARATOR = ';';
+ private static final char CURRENCY_SIGN = '\u00A4';
+ private static final char QUOTE = '\'';
+
+ // Expanded form of positive/negative prefix/suffix,
+ // the expanded form contains special characters in
+ // its localized form, which are used for matching
+ // while parsing a string to number
+ private transient List<String> positivePrefixes;
+ private transient List<String> negativePrefixes;
+ private transient List<String> positiveSuffixes;
+ private transient List<String> negativeSuffixes;
+
+ private void expandAffixPatterns() {
+ positivePrefixes = new ArrayList<>(compactPatterns.length);
+ negativePrefixes = new ArrayList<>(compactPatterns.length);
+ positiveSuffixes = new ArrayList<>(compactPatterns.length);
+ negativeSuffixes = new ArrayList<>(compactPatterns.length);
+ for (int index = 0; index < compactPatterns.length; index++) {
+ positivePrefixes.add(expandAffix(positivePrefixPatterns.get(index)));
+ negativePrefixes.add(expandAffix(negativePrefixPatterns.get(index)));
+ positiveSuffixes.add(expandAffix(positiveSuffixPatterns.get(index)));
+ negativeSuffixes.add(expandAffix(negativeSuffixPatterns.get(index)));
+ }
+ }
+
+ /**
+ * Parses a compact number from a string to produce a {@code Number}.
+ * <p>
+ * The method attempts to parse text starting at the index given by
+ * {@code pos}.
+ * If parsing succeeds, then the index of {@code pos} is updated
+ * to the index after the last character used (parsing does not necessarily
+ * use all characters up to the end of the string), and the parsed
+ * number is returned. The updated {@code pos} can be used to
+ * indicate the starting point for the next call to this method.
+ * If an error occurs, then the index of {@code pos} is not
+ * changed, the error index of {@code pos} is set to the index of
+ * the character where the error occurred, and {@code null} is returned.
+ * <p>
+ * The value is the numeric part in the given text multiplied
+ * by the numeric equivalent of the affix attached
+ * (For example, "K" = 1000 in {@link java.util.Locale#US US locale}).
+ * The subclass returned depends on the value of
+ * {@link #isParseBigDecimal}.
+ * <ul>
+ * <li>If {@link #isParseBigDecimal()} is false (the default),
+ * most integer values are returned as {@code Long}
+ * objects, no matter how they are written: {@code "17K"} and
+ * {@code "17.000K"} both parse to {@code Long.valueOf(17000)}.
+ * If the value cannot fit into {@code Long}, then the result is
+ * returned as {@code Double}. This includes values with a
+ * fractional part, infinite values, {@code NaN},
+ * and the value -0.0.
+ * <p>
+ * Callers may use the {@code Number} methods {@code doubleValue},
+ * {@code longValue}, etc., to obtain the type they want.
+ *
+ * <li>If {@link #isParseBigDecimal()} is true, values are returned
+ * as {@code BigDecimal} objects. The special cases negative
+ * and positive infinity and NaN are returned as {@code Double}
+ * instances holding the values of the corresponding
+ * {@code Double} constants.
+ * </ul>
+ * <p>
+ * {@code CompactNumberFormat} parses all Unicode characters that represent
+ * decimal digits, as defined by {@code Character.digit()}. In
+ * addition, {@code CompactNumberFormat} also recognizes as digits the ten
+ * consecutive characters starting with the localized zero digit defined in
+ * the {@code DecimalFormatSymbols} object.
+ * <p>
+ * {@code CompactNumberFormat} parse does not allow parsing scientific
+ * notations. For example, parsing a string {@code "1.05E4K"} in
+ * {@link java.util.Locale#US US locale} breaks at character 'E'
+ * and returns 1.05.
+ *
+ * @param text the string to be parsed
+ * @param pos a {@code ParsePosition} object with index and error
+ * index information as described above
+ * @return the parsed value, or {@code null} if the parse fails
+ * @exception NullPointerException if {@code text} or
+ * {@code pos} is null
+ *
+ */
+ @Override
+ public Number parse(String text, ParsePosition pos) {
+
+ Objects.requireNonNull(text);
+ Objects.requireNonNull(pos);
+
+ // Lazily expanding the affix patterns, on the first parse
+ // call on this instance
+ // If not initialized, expand and load all affixes
+ if (positivePrefixes == null) {
+ expandAffixPatterns();
+ }
+
+ // The compact number multiplier for parsed string.
+ // Its value is set on parsing prefix and suffix. For example,
+ // in the {@link java.util.Locale#US US locale} parsing {@code "1K"}
+ // sets its value to 1000, as K (thousand) is abbreviated form of 1000.
+ Number cnfMultiplier = 1L;
+
+ // Special case NaN
+ if (text.regionMatches(pos.index, symbols.getNaN(),
+ 0, symbols.getNaN().length())) {
+ pos.index = pos.index + symbols.getNaN().length();
+ return Double.NaN;
+ }
+
+ int position = pos.index;
+ int oldStart = pos.index;
+ boolean gotPositive = false;
+ boolean gotNegative = false;
+ int matchedPosIndex = -1;
+ int matchedNegIndex = -1;
+ String matchedPosPrefix = "";
+ String matchedNegPrefix = "";
+ String defaultPosPrefix = defaultDecimalFormat.getPositivePrefix();
+ String defaultNegPrefix = defaultDecimalFormat.getNegativePrefix();
+ // Prefix matching
+ for (int compactIndex = 0; compactIndex < compactPatterns.length; compactIndex++) {
+ String positivePrefix = positivePrefixes.get(compactIndex);
+ String negativePrefix = negativePrefixes.get(compactIndex);
+
+ // Do not break if a match occur; there is a possibility that the
+ // subsequent affixes may match the longer subsequence in the given
+ // string.
+ // For example, matching "Mdx 3" with "M", "Md" as prefix should
+ // match with "Md"
+ boolean match = matchAffix(text, position, positivePrefix,
+ defaultPosPrefix, matchedPosPrefix);
+ if (match) {
+ matchedPosIndex = compactIndex;
+ matchedPosPrefix = positivePrefix;
+ gotPositive = true;
+ }
+
+ match = matchAffix(text, position, negativePrefix,
+ defaultNegPrefix, matchedNegPrefix);
+ if (match) {
+ matchedNegIndex = compactIndex;
+ matchedNegPrefix = negativePrefix;
+ gotNegative = true;
+ }
+ }
+
+ // Given text does not match the non empty valid compact prefixes
+ // check with the default prefixes
+ if (!gotPositive && !gotNegative) {
+ if (text.regionMatches(pos.index, defaultPosPrefix, 0,
+ defaultPosPrefix.length())) {
+ // Matches the default positive prefix
+ matchedPosPrefix = defaultPosPrefix;
+ gotPositive = true;
+ }
+ if (text.regionMatches(pos.index, defaultNegPrefix, 0,
+ defaultNegPrefix.length())) {
+ // Matches the default negative prefix
+ matchedNegPrefix = defaultNegPrefix;
+ gotNegative = true;
+ }
+ }
+
+ // If both match, take the longest one
+ if (gotPositive && gotNegative) {
+ if (matchedPosPrefix.length() > matchedNegPrefix.length()) {
+ gotNegative = false;
+ } else if (matchedPosPrefix.length() < matchedNegPrefix.length()) {
+ gotPositive = false;
+ }
+ }
+
+ // Update the position and take compact multiplier
+ // only if it matches the compact prefix, not the default
+ // prefix; else multiplier should be 1
+ if (gotPositive) {
+ position += matchedPosPrefix.length();
+ cnfMultiplier = matchedPosIndex != -1
+ ? divisors.get(matchedPosIndex) : 1L;
+ } else if (gotNegative) {
+ position += matchedNegPrefix.length();
+ cnfMultiplier = matchedNegIndex != -1
+ ? divisors.get(matchedNegIndex) : 1L;
+ }
+
+ digitList.setRoundingMode(getRoundingMode());
+ boolean[] status = new boolean[STATUS_LENGTH];
+
+ // Call DecimalFormat.subparseNumber() method to parse the
+ // number part of the input text
+ position = decimalFormat.subparseNumber(text, position,
+ digitList, false, false, status);
+
+ if (position == -1) {
+ // Unable to parse the number successfully
+ pos.index = oldStart;
+ pos.errorIndex = oldStart;
+ return null;
+ }
+
+ // If parse integer only is true and the parsing is broken at
+ // decimal point, then pass/ignore all digits and move pointer
+ // at the start of suffix, to process the suffix part
+ if (isParseIntegerOnly()
+ && text.charAt(position) == symbols.getDecimalSeparator()) {
+ position++; // Pass decimal character
+ for (; position < text.length(); ++position) {
+ char ch = text.charAt(position);
+ int digit = ch - symbols.getZeroDigit();
+ if (digit < 0 || digit > 9) {
+ digit = Character.digit(ch, 10);
+ // Parse all digit characters
+ if (!(digit >= 0 && digit <= 9)) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Number parsed successfully; match prefix and
+ // suffix to obtain multiplier
+ pos.index = position;
+ Number multiplier = computeParseMultiplier(text, pos,
+ gotPositive ? matchedPosPrefix : matchedNegPrefix,
+ status, gotPositive, gotNegative);
+
+ if (multiplier.longValue() == -1L) {
+ return null;
+ } else if (multiplier.longValue() != 1L) {
+ cnfMultiplier = multiplier;
+ }
+
+ // Special case INFINITY
+ if (status[STATUS_INFINITE]) {
+ if (status[STATUS_POSITIVE]) {
+ return Double.POSITIVE_INFINITY;
+ } else {
+ return Double.NEGATIVE_INFINITY;
+ }
+ }
+
+ if (isParseBigDecimal()) {
+ BigDecimal bigDecimalResult = digitList.getBigDecimal();
+
+ if (cnfMultiplier.longValue() != 1) {
+ bigDecimalResult = bigDecimalResult
+ .multiply(new BigDecimal(cnfMultiplier.toString()));
+ }
+ if (!status[STATUS_POSITIVE]) {
+ bigDecimalResult = bigDecimalResult.negate();
+ }
+ return bigDecimalResult;
+ } else {
+ Number cnfResult;
+ if (digitList.fitsIntoLong(status[STATUS_POSITIVE], isParseIntegerOnly())) {
+ long longResult = digitList.getLong();
+ cnfResult = generateParseResult(longResult, false,
+ longResult < 0, status, cnfMultiplier);
+ } else {
+ cnfResult = generateParseResult(digitList.getDouble(),
+ true, false, status, cnfMultiplier);
+ }
+ return cnfResult;
+ }
+ }
+
+ /**
+ * Returns the parsed result by multiplying the parsed number
+ * with the multiplier representing the prefix and suffix.
+ *
+ * @param number parsed number component
+ * @param gotDouble whether the parsed number contains decimal
+ * @param gotLongMin whether the parsed number is Long.MIN
+ * @param status boolean status flags indicating whether the
+ * value is infinite and whether it is positive
+ * @param cnfMultiplier compact number multiplier
+ * @return parsed result
+ */
+ private Number generateParseResult(Number number, boolean gotDouble,
+ boolean gotLongMin, boolean[] status, Number cnfMultiplier) {
+
+ if (gotDouble) {
+ if (cnfMultiplier.longValue() != 1L) {
+ double doubleResult = number.doubleValue() * cnfMultiplier.doubleValue();
+ doubleResult = (double) convertIfNegative(doubleResult, status, gotLongMin);
+ // Check if a double can be represeneted as a long
+ long longResult = (long) doubleResult;
+ gotDouble = ((doubleResult != (double) longResult)
+ || (doubleResult == 0.0 && 1 / doubleResult < 0.0));
+ return gotDouble ? (Number) doubleResult : (Number) longResult;
+ }
+ } else {
+ if (cnfMultiplier.longValue() != 1L) {
+ Number result;
+ if ((cnfMultiplier instanceof Long) && !gotLongMin) {
+ long longMultiplier = (long) cnfMultiplier;
+ try {
+ result = Math.multiplyExact(number.longValue(),
+ longMultiplier);
+ } catch (ArithmeticException ex) {
+ // If number * longMultiplier can not be represented
+ // as long return as double
+ result = number.doubleValue() * cnfMultiplier.doubleValue();
+ }
+ } else {
+ // cnfMultiplier can not be stored into long or the number
+ // part is Long.MIN, return as double
+ result = number.doubleValue() * cnfMultiplier.doubleValue();
+ }
+ return convertIfNegative(result, status, gotLongMin);
+ }
+ }
+
+ // Default number
+ return convertIfNegative(number, status, gotLongMin);
+ }
+
+ /**
+ * Negate the parsed value if the positive status flag is false
+ * and the value is not a Long.MIN
+ * @param number parsed value
+ * @param status boolean status flags indicating whether the
+ * value is infinite and whether it is positive
+ * @param gotLongMin whether the parsed number is Long.MIN
+ * @return the resulting value
+ */
+ private Number convertIfNegative(Number number, boolean[] status,
+ boolean gotLongMin) {
+
+ if (!status[STATUS_POSITIVE] && !gotLongMin) {
+ if (number instanceof Long) {
+ return -(long) number;
+ } else {
+ return -(double) number;
+ }
+ } else {
+ return number;
+ }
+ }
+
+ /**
+ * Attempts to match the given {@code affix} in the
+ * specified {@code text}.
+ */
+ private boolean matchAffix(String text, int position, String affix,
+ String defaultAffix, String matchedAffix) {
+
+ // Check with the compact affixes which are non empty and
+ // do not match with default affix
+ if (!affix.isEmpty() && !affix.equals(defaultAffix)) {
+ // Look ahead only for the longer match than the previous match
+ if (matchedAffix.length() < affix.length()) {
+ if (text.regionMatches(position, affix, 0, affix.length())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Attempts to match given {@code prefix} and {@code suffix} in
+ * the specified {@code text}.
+ */
+ private boolean matchPrefixAndSuffix(String text, int position, String prefix,
+ String matchedPrefix, String defaultPrefix, String suffix,
+ String matchedSuffix, String defaultSuffix) {
+
+ // Check the compact pattern suffix only if there is a
+ // compact prefix match or a default prefix match
+ // because the compact prefix and suffix should match at the same
+ // index to obtain the multiplier.
+ // The prefix match is required because of the possibility of
+ // same prefix at multiple index, in which case matching the suffix
+ // is used to obtain the single match
+
+ if (prefix.equals(matchedPrefix)
+ || matchedPrefix.equals(defaultPrefix)) {
+ return matchAffix(text, position, suffix, defaultSuffix, matchedSuffix);
+ }
+ return false;
+ }
+
+ /**
+ * Computes multiplier by matching the given {@code matchedPrefix}
+ * and suffix in the specified {@code text} from the lists of
+ * prefixes and suffixes extracted from compact patterns.
+ *
+ * @param text the string to parse
+ * @param parsePosition the {@code ParsePosition} object representing the
+ * index and error index of the parse string
+ * @param matchedPrefix prefix extracted which needs to be matched to
+ * obtain the multiplier
+ * @param status upon return contains boolean status flags indicating
+ * whether the value is positive
+ * @param gotPositive based on the prefix parsed; whether the number is positive
+ * @param gotNegative based on the prefix parsed; whether the number is negative
+ * @return the multiplier matching the prefix and suffix; -1 otherwise
+ */
+ private Number computeParseMultiplier(String text, ParsePosition parsePosition,
+ String matchedPrefix, boolean[] status, boolean gotPositive,
+ boolean gotNegative) {
+
+ int position = parsePosition.index;
+ boolean gotPos = false;
+ boolean gotNeg = false;
+ int matchedPosIndex = -1;
+ int matchedNegIndex = -1;
+ String matchedPosSuffix = "";
+ String matchedNegSuffix = "";
+ for (int compactIndex = 0; compactIndex < compactPatterns.length; compactIndex++) {
+ String positivePrefix = positivePrefixes.get(compactIndex);
+ String negativePrefix = negativePrefixes.get(compactIndex);
+ String positiveSuffix = positiveSuffixes.get(compactIndex);
+ String negativeSuffix = negativeSuffixes.get(compactIndex);
+
+ // Do not break if a match occur; there is a possibility that the
+ // subsequent affixes may match the longer subsequence in the given
+ // string.
+ // For example, matching "3Mdx" with "M", "Md" should match with "Md"
+ boolean match = matchPrefixAndSuffix(text, position, positivePrefix, matchedPrefix,
+ defaultDecimalFormat.getPositivePrefix(), positiveSuffix,
+ matchedPosSuffix, defaultDecimalFormat.getPositiveSuffix());
+ if (match) {
+ matchedPosIndex = compactIndex;
+ matchedPosSuffix = positiveSuffix;
+ gotPos = true;
+ }
+
+ match = matchPrefixAndSuffix(text, position, negativePrefix, matchedPrefix,
+ defaultDecimalFormat.getNegativePrefix(), negativeSuffix,
+ matchedNegSuffix, defaultDecimalFormat.getNegativeSuffix());
+ if (match) {
+ matchedNegIndex = compactIndex;
+ matchedNegSuffix = negativeSuffix;
+ gotNeg = true;
+ }
+ }
+
+ // Suffix in the given text does not match with the compact
+ // patterns suffixes; match with the default suffix
+ if (!gotPos && !gotNeg) {
+ String positiveSuffix = defaultDecimalFormat.getPositiveSuffix();
+ String negativeSuffix = defaultDecimalFormat.getNegativeSuffix();
+ if (text.regionMatches(position, positiveSuffix, 0,
+ positiveSuffix.length())) {
+ // Matches the default positive prefix
+ matchedPosSuffix = positiveSuffix;
+ gotPos = true;
+ }
+ if (text.regionMatches(position, negativeSuffix, 0,
+ negativeSuffix.length())) {
+ // Matches the default negative suffix
+ matchedNegSuffix = negativeSuffix;
+ gotNeg = true;
+ }
+ }
+
+ // If both matches, take the longest one
+ if (gotPos && gotNeg) {
+ if (matchedPosSuffix.length() > matchedNegSuffix.length()) {
+ gotNeg = false;
+ } else if (matchedPosSuffix.length() < matchedNegSuffix.length()) {
+ gotPos = false;
+ } else {
+ // If longest comparison fails; take the positive and negative
+ // sign of matching prefix
+ gotPos = gotPositive;
+ gotNeg = gotNegative;
+ }
+ }
+
+ // Fail if neither or both
+ if (gotPos == gotNeg) {
+ parsePosition.errorIndex = position;
+ return -1L;
+ }
+
+ Number cnfMultiplier;
+ // Update the parse position index and take compact multiplier
+ // only if it matches the compact suffix, not the default
+ // suffix; else multiplier should be 1
+ if (gotPos) {
+ parsePosition.index = position + matchedPosSuffix.length();
+ cnfMultiplier = matchedPosIndex != -1
+ ? divisors.get(matchedPosIndex) : 1L;
+ } else {
+ parsePosition.index = position + matchedNegSuffix.length();
+ cnfMultiplier = matchedNegIndex != -1
+ ? divisors.get(matchedNegIndex) : 1L;
+ }
+ status[STATUS_POSITIVE] = gotPos;
+ return cnfMultiplier;
+ }
+
+ /**
+ * Reconstitutes this {@code CompactNumberFormat} from a stream
+ * (that is, deserializes it) after performing some validations.
+ * This method throws InvalidObjectException, if the stream data is invalid
+ * because of the following reasons,
+ * <ul>
+ * <li> If any of the {@code decimalPattern}, {@code compactPatterns},
+ * {@code symbols} or {@code roundingMode} is {@code null}.
+ * <li> If the {@code decimalPattern} or the {@code compactPatterns} array
+ * contains an invalid pattern or if a {@code null} appears in the array of
+ * compact patterns.
+ * <li> If the {@code minimumIntegerDigits} is greater than the
+ * {@code maximumIntegerDigits} or the {@code minimumFractionDigits} is
+ * greater than the {@code maximumFractionDigits}. This check is performed
+ * by superclass's Object.
+ * <li> If any of the minimum/maximum integer/fraction digit count is
+ * negative. This check is performed by superclass's readObject.
+ * <li> If the minimum or maximum integer digit count is larger than 309 or
+ * if the minimum or maximum fraction digit count is larger than 340.
+ * <li> If the grouping size is negative or larger than 127.
+ * </ul>
+ *
+ * @param inStream the stream
+ * @throws IOException if an I/O error occurs
+ * @throws ClassNotFoundException if the class of a serialized object
+ * could not be found
+ */
+ private void readObject(ObjectInputStream inStream) throws IOException,
+ ClassNotFoundException {
+
+ inStream.defaultReadObject();
+ if (decimalPattern == null || compactPatterns == null
+ || symbols == null || roundingMode == null) {
+ throw new InvalidObjectException("One of the 'decimalPattern',"
+ + " 'compactPatterns', 'symbols' or 'roundingMode'"
+ + " is null");
+ }
+
+ // Check only the maximum counts because NumberFormat.readObject has
+ // already ensured that the maximum is greater than the minimum count.
+ if (getMaximumIntegerDigits() > DecimalFormat.DOUBLE_INTEGER_DIGITS
+ || getMaximumFractionDigits() > DecimalFormat.DOUBLE_FRACTION_DIGITS) {
+ throw new InvalidObjectException("Digit count out of range");
+ }
+
+ // Check if the grouping size is negative, on an attempt to
+ // put value > 127, it wraps around, so check just negative value
+ if (groupingSize < 0) {
+ throw new InvalidObjectException("Grouping size is negative");
+ }
+
+ try {
+ processCompactPatterns();
+ } catch (IllegalArgumentException ex) {
+ throw new InvalidObjectException(ex.getMessage());
+ }
+
+ decimalFormat = new DecimalFormat(SPECIAL_PATTERN, symbols);
+ decimalFormat.setMaximumFractionDigits(getMaximumFractionDigits());
+ decimalFormat.setMinimumFractionDigits(getMinimumFractionDigits());
+ decimalFormat.setMaximumIntegerDigits(getMaximumIntegerDigits());
+ decimalFormat.setMinimumIntegerDigits(getMinimumIntegerDigits());
+ decimalFormat.setRoundingMode(getRoundingMode());
+ decimalFormat.setGroupingSize(getGroupingSize());
+ decimalFormat.setGroupingUsed(isGroupingUsed());
+ decimalFormat.setParseIntegerOnly(isParseIntegerOnly());
+
+ try {
+ defaultDecimalFormat = new DecimalFormat(decimalPattern, symbols);
+ defaultDecimalFormat.setMaximumFractionDigits(0);
+ } catch (IllegalArgumentException ex) {
+ throw new InvalidObjectException(ex.getMessage());
+ }
+
+ }
+
+ /**
+ * Sets the maximum number of digits allowed in the integer portion of a
+ * number.
+ * The maximum allowed integer range is 309, if the {@code newValue} > 309,
+ * then the maximum integer digits count is set to 309. Negative input
+ * values are replaced with 0.
+ *
+ * @param newValue the maximum number of integer digits to be shown
+ * @see #getMaximumIntegerDigits()
+ */
+ @Override
+ public void setMaximumIntegerDigits(int newValue) {
+ // The maximum integer digits is checked with the allowed range before calling
+ // the DecimalFormat.setMaximumIntegerDigits, which performs the negative check
+ // on the given newValue while setting it as max integer digits.
+ // For example, if a negative value is specified, it is replaced with 0
+ decimalFormat.setMaximumIntegerDigits(Math.min(newValue,
+ DecimalFormat.DOUBLE_INTEGER_DIGITS));
+ super.setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+ if (decimalFormat.getMinimumIntegerDigits() > decimalFormat.getMaximumIntegerDigits()) {
+ decimalFormat.setMinimumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+ super.setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+ }
+ }
+
+ /**
+ * Sets the minimum number of digits allowed in the integer portion of a
+ * number.
+ * The maximum allowed integer range is 309, if the {@code newValue} > 309,
+ * then the minimum integer digits count is set to 309. Negative input
+ * values are replaced with 0.
+ *
+ * @param newValue the minimum number of integer digits to be shown
+ * @see #getMinimumIntegerDigits()
+ */
+ @Override
+ public void setMinimumIntegerDigits(int newValue) {
+ // The minimum integer digits is checked with the allowed range before calling
+ // the DecimalFormat.setMinimumIntegerDigits, which performs check on the given
+ // newValue while setting it as min integer digits. For example, if a negative
+ // value is specified, it is replaced with 0
+ decimalFormat.setMinimumIntegerDigits(Math.min(newValue,
+ DecimalFormat.DOUBLE_INTEGER_DIGITS));
+ super.setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+ if (decimalFormat.getMinimumIntegerDigits() > decimalFormat.getMaximumIntegerDigits()) {
+ decimalFormat.setMaximumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+ super.setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+ }
+ }
+
+ /**
+ * Sets the minimum number of digits allowed in the fraction portion of a
+ * number.
+ * The maximum allowed fraction range is 340, if the {@code newValue} > 340,
+ * then the minimum fraction digits count is set to 340. Negative input
+ * values are replaced with 0.
+ *
+ * @param newValue the minimum number of fraction digits to be shown
+ * @see #getMinimumFractionDigits()
+ */
+ @Override
+ public void setMinimumFractionDigits(int newValue) {
+ // The minimum fraction digits is checked with the allowed range before
+ // calling the DecimalFormat.setMinimumFractionDigits, which performs
+ // check on the given newValue while setting it as min fraction
+ // digits. For example, if a negative value is specified, it is
+ // replaced with 0
+ decimalFormat.setMinimumFractionDigits(Math.min(newValue,
+ DecimalFormat.DOUBLE_FRACTION_DIGITS));
+ super.setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+ if (decimalFormat.getMinimumFractionDigits() > decimalFormat.getMaximumFractionDigits()) {
+ decimalFormat.setMaximumFractionDigits(decimalFormat.getMinimumFractionDigits());
+ super.setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+ }
+ }
+
+ /**
+ * Sets the maximum number of digits allowed in the fraction portion of a
+ * number.
+ * The maximum allowed fraction range is 340, if the {@code newValue} > 340,
+ * then the maximum fraction digits count is set to 340. Negative input
+ * values are replaced with 0.
+ *
+ * @param newValue the maximum number of fraction digits to be shown
+ * @see #getMaximumFractionDigits()
+ */
+ @Override
+ public void setMaximumFractionDigits(int newValue) {
+ // The maximum fraction digits is checked with the allowed range before
+ // calling the DecimalFormat.setMaximumFractionDigits, which performs
+ // check on the given newValue while setting it as max fraction digits.
+ // For example, if a negative value is specified, it is replaced with 0
+ decimalFormat.setMaximumFractionDigits(Math.min(newValue,
+ DecimalFormat.DOUBLE_FRACTION_DIGITS));
+ super.setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+ if (decimalFormat.getMinimumFractionDigits() > decimalFormat.getMaximumFractionDigits()) {
+ decimalFormat.setMinimumFractionDigits(decimalFormat.getMaximumFractionDigits());
+ super.setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+ }
+ }
+
+ /**
+ * Gets the {@link java.math.RoundingMode} used in this
+ * {@code CompactNumberFormat}.
+ *
+ * @return the {@code RoundingMode} used for this
+ * {@code CompactNumberFormat}
+ * @see #setRoundingMode(RoundingMode)
+ */
+ @Override
+ public RoundingMode getRoundingMode() {
+ return roundingMode;
+ }
+
+ /**
+ * Sets the {@link java.math.RoundingMode} used in this
+ * {@code CompactNumberFormat}.
+ *
+ * @param roundingMode the {@code RoundingMode} to be used
+ * @see #getRoundingMode()
+ * @throws NullPointerException if {@code roundingMode} is {@code null}
+ */
+ @Override
+ public void setRoundingMode(RoundingMode roundingMode) {
+ decimalFormat.setRoundingMode(roundingMode);
+ this.roundingMode = roundingMode;
+ }
+
+ /**
+ * Returns the grouping size. Grouping size is the number of digits between
+ * grouping separators in the integer portion of a number. For example,
+ * in the compact number {@code "12,347 trillion"} for the
+ * {@link java.util.Locale#US US locale}, the grouping size is 3.
+ *
+ * @return the grouping size
+ * @see #setGroupingSize
+ * @see java.text.NumberFormat#isGroupingUsed
+ * @see java.text.DecimalFormatSymbols#getGroupingSeparator
+ */
+ public int getGroupingSize() {
+ return groupingSize;
+ }
+
+ /**
+ * Sets the grouping size. Grouping size is the number of digits between
+ * grouping separators in the integer portion of a number. For example,
+ * in the compact number {@code "12,347 trillion"} for the
+ * {@link java.util.Locale#US US locale}, the grouping size is 3. The grouping
+ * size must be greater than or equal to zero and less than or equal to 127.
+ *
+ * @param newValue the new grouping size
+ * @see #getGroupingSize
+ * @see java.text.NumberFormat#setGroupingUsed
+ * @see java.text.DecimalFormatSymbols#setGroupingSeparator
+ * @throws IllegalArgumentException if {@code newValue} is negative or
+ * larger than 127
+ */
+ public void setGroupingSize(int newValue) {
+ if (newValue < 0 || newValue > 127) {
+ throw new IllegalArgumentException(
+ "The value passed is negative or larger than 127");
+ }
+ groupingSize = (byte) newValue;
+ decimalFormat.setGroupingSize(groupingSize);
+ }
+
+ /**
+ * Returns true if grouping is used in this format. For example, with
+ * grouping on and grouping size set to 3, the number {@code 12346567890987654}
+ * can be formatted as {@code "12,347 trillion"} in the
+ * {@link java.util.Locale#US US locale}.
+ * The grouping separator is locale dependent.
+ *
+ * @return {@code true} if grouping is used;
+ * {@code false} otherwise
+ * @see #setGroupingUsed
+ */
+ @Override
+ public boolean isGroupingUsed() {
+ return super.isGroupingUsed();
+ }
+
+ /**
+ * Sets whether or not grouping will be used in this format.
+ *
+ * @param newValue {@code true} if grouping is used;
+ * {@code false} otherwise
+ * @see #isGroupingUsed
+ */
+ @Override
+ public void setGroupingUsed(boolean newValue) {
+ decimalFormat.setGroupingUsed(newValue);
+ super.setGroupingUsed(newValue);
+ }
+
+ /**
+ * Returns true if this format parses only an integer from the number
+ * component of a compact number.
+ * Parsing an integer means that only an integer is considered from the
+ * number component, prefix/suffix is still considered to compute the
+ * resulting output.
+ * For example, in the {@link java.util.Locale#US US locale}, if this method
+ * returns {@code true}, the string {@code "1234.78 thousand"} would be
+ * parsed as the value {@code 1234000} (1234 (integer part) * 1000
+ * (thousand)) and the fractional part would be skipped.
+ * The exact format accepted by the parse operation is locale dependent.
+ *
+ * @return {@code true} if compact numbers should be parsed as integers
+ * only; {@code false} otherwise
+ */
+ @Override
+ public boolean isParseIntegerOnly() {
+ return super.isParseIntegerOnly();
+ }
+
+ /**
+ * Sets whether or not this format parses only an integer from the number
+ * component of a compact number.
+ *
+ * @param value {@code true} if compact numbers should be parsed as
+ * integers only; {@code false} otherwise
+ * @see #isParseIntegerOnly
+ */
+ @Override
+ public void setParseIntegerOnly(boolean value) {
+ decimalFormat.setParseIntegerOnly(value);
+ super.setParseIntegerOnly(value);
+ }
+
+ /**
+ * Returns whether the {@link #parse(String, ParsePosition)}
+ * method returns {@code BigDecimal}. The default value is false.
+ *
+ * @return {@code true} if the parse method returns BigDecimal;
+ * {@code false} otherwise
+ * @see #setParseBigDecimal
+ *
+ */
+ public boolean isParseBigDecimal() {
+ return parseBigDecimal;
+ }
+
+ /**
+ * Sets whether the {@link #parse(String, ParsePosition)}
+ * method returns {@code BigDecimal}.
+ *
+ * @param newValue {@code true} if the parse method returns BigDecimal;
+ * {@code false} otherwise
+ * @see #isParseBigDecimal
+ *
+ */
+ public void setParseBigDecimal(boolean newValue) {
+ parseBigDecimal = newValue;
+ }
+
+ /**
+ * Checks if this {@code CompactNumberFormat} is equal to the
+ * specified {@code obj}. The objects of type {@code CompactNumberFormat}
+ * are compared, other types return false; obeys the general contract of
+ * {@link java.lang.Object#equals(java.lang.Object) Object.equals}.
+ *
+ * @param obj the object to compare with
+ * @return true if this is equal to the other {@code CompactNumberFormat}
+ */
+ @Override
+ public boolean equals(Object obj) {
+
+ if (!super.equals(obj)) {
+ return false;
+ }
+
+ CompactNumberFormat other = (CompactNumberFormat) obj;
+ return decimalPattern.equals(other.decimalPattern)
+ && symbols.equals(other.symbols)
+ && Arrays.equals(compactPatterns, other.compactPatterns)
+ && roundingMode.equals(other.roundingMode)
+ && groupingSize == other.groupingSize
+ && parseBigDecimal == other.parseBigDecimal;
+ }
+
+ /**
+ * Returns the hash code for this {@code CompactNumberFormat} instance.
+ *
+ * @return hash code for this {@code CompactNumberFormat}
+ */
+ @Override
+ public int hashCode() {
+ return 31 * super.hashCode() +
+ Objects.hash(decimalPattern, symbols, roundingMode)
+ + Arrays.hashCode(compactPatterns) + groupingSize
+ + Boolean.hashCode(parseBigDecimal);
+ }
+
+ /**
+ * Creates and returns a copy of this {@code CompactNumberFormat}
+ * instance.
+ *
+ * @return a clone of this instance
+ */
+ @Override
+ public CompactNumberFormat clone() {
+ CompactNumberFormat other = (CompactNumberFormat) super.clone();
+ other.compactPatterns = compactPatterns.clone();
+ other.symbols = (DecimalFormatSymbols) symbols.clone();
+ return other;
+ }
+
+}
+
--- a/src/java.base/share/classes/java/text/DecimalFormat.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/DecimalFormat.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. 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
@@ -48,9 +48,6 @@
import java.util.ArrayList;
import java.util.Currency;
import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import sun.util.locale.provider.LocaleProviderAdapter;
@@ -157,7 +154,7 @@
* used. So <code>"#,##,###,####"</code> == <code>"######,####"</code> ==
* <code>"##,####,####"</code>.
*
- * <h4>Special Pattern Characters</h4>
+ * <h4><a id="special_pattern_character">Special Pattern Characters</a></h4>
*
* <p>Many characters in a pattern are taken literally; they are matched during
* parsing and output unchanged during formatting. Special characters, on the
@@ -572,14 +569,11 @@
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
*/
- private StringBuffer format(double number, StringBuffer result,
+ StringBuffer format(double number, StringBuffer result,
FieldDelegate delegate) {
- if (Double.isNaN(number) ||
- (Double.isInfinite(number) && multiplier == 0)) {
- int iFieldStart = result.length();
- result.append(symbols.getNaN());
- delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
- iFieldStart, result.length(), result);
+
+ boolean nanOrInfinity = handleNaN(number, result, delegate);
+ if (nanOrInfinity) {
return result;
}
@@ -599,6 +593,56 @@
number *= multiplier;
}
+ nanOrInfinity = handleInfinity(number, result, delegate, isNegative);
+ if (nanOrInfinity) {
+ return result;
+ }
+
+ if (isNegative) {
+ number = -number;
+ }
+
+ // at this point we are guaranteed a nonnegative finite number.
+ assert (number >= 0 && !Double.isInfinite(number));
+ return doubleSubformat(number, result, delegate, isNegative);
+ }
+
+ /**
+ * Checks if the given {@code number} is {@code Double.NaN}. if yes;
+ * appends the NaN symbol to the result string. The NaN string is
+ * determined by the DecimalFormatSymbols object.
+ * @param number the double number to format
+ * @param result where the text is to be appended
+ * @param delegate notified of locations of sub fields
+ * @return true, if number is a NaN; false otherwise
+ */
+ boolean handleNaN(double number, StringBuffer result,
+ FieldDelegate delegate) {
+ if (Double.isNaN(number)
+ || (Double.isInfinite(number) && multiplier == 0)) {
+ int iFieldStart = result.length();
+ result.append(symbols.getNaN());
+ delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
+ iFieldStart, result.length(), result);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Checks if the given {@code number} is {@code Double.NEGATIVE_INFINITY}
+ * or {@code Double.POSITIVE_INFINITY}. if yes;
+ * appends the infinity string to the result string. The infinity string is
+ * determined by the DecimalFormatSymbols object.
+ * @param number the double number to format
+ * @param result where the text is to be appended
+ * @param delegate notified of locations of sub fields
+ * @param isNegative whether the given {@code number} is negative
+ * @return true, if number is a {@code Double.NEGATIVE_INFINITY} or
+ * {@code Double.POSITIVE_INFINITY}; false otherwise
+ */
+ boolean handleInfinity(double number, StringBuffer result,
+ FieldDelegate delegate, boolean isNegative) {
if (Double.isInfinite(number)) {
if (isNegative) {
append(result, negativePrefix, delegate,
@@ -621,27 +665,24 @@
getPositiveSuffixFieldPositions(), Field.SIGN);
}
- return result;
- }
-
- if (isNegative) {
- number = -number;
+ return true;
}
-
- // at this point we are guaranteed a nonnegative finite number.
- assert(number >= 0 && !Double.isInfinite(number));
-
- synchronized(digitList) {
+ return false;
+ }
+
+ StringBuffer doubleSubformat(double number, StringBuffer result,
+ FieldDelegate delegate, boolean isNegative) {
+ synchronized (digitList) {
int maxIntDigits = super.getMaximumIntegerDigits();
int minIntDigits = super.getMinimumIntegerDigits();
int maxFraDigits = super.getMaximumFractionDigits();
int minFraDigits = super.getMinimumFractionDigits();
- digitList.set(isNegative, number, useExponentialNotation ?
- maxIntDigits + maxFraDigits : maxFraDigits,
- !useExponentialNotation);
+ digitList.set(isNegative, number, useExponentialNotation
+ ? maxIntDigits + maxFraDigits : maxFraDigits,
+ !useExponentialNotation);
return subformat(result, delegate, isNegative, false,
- maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+ maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
}
}
@@ -683,7 +724,7 @@
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
- private StringBuffer format(long number, StringBuffer result,
+ StringBuffer format(long number, StringBuffer result,
FieldDelegate delegate) {
boolean isNegative = (number < 0);
if (isNegative) {
@@ -774,7 +815,7 @@
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
*/
- private StringBuffer format(BigDecimal number, StringBuffer result,
+ StringBuffer format(BigDecimal number, StringBuffer result,
FieldDelegate delegate) {
if (multiplier != 1) {
number = number.multiply(getBigDecimalMultiplier());
@@ -835,7 +876,7 @@
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
- private StringBuffer format(BigInteger number, StringBuffer result,
+ StringBuffer format(BigInteger number, StringBuffer result,
FieldDelegate delegate, boolean formatLong) {
if (multiplier != 1) {
number = number.multiply(getBigIntegerMultiplier());
@@ -917,7 +958,7 @@
return delegate.getIterator(sb.toString());
}
- // ==== Begin fast-path formating logic for double =========================
+ // ==== Begin fast-path formatting logic for double =========================
/* Fast-path formatting will be used for format(double ...) methods iff a
* number of conditions are met (see checkAndSetFastPathStatus()):
@@ -1662,6 +1703,26 @@
}
+ /**
+ * Sets the {@code DigitList} used by this {@code DecimalFormat}
+ * instance.
+ * @param number the number to format
+ * @param isNegative true, if the number is negative; false otherwise
+ * @param maxDigits the max digits
+ */
+ void setDigitList(Number number, boolean isNegative, int maxDigits) {
+
+ if (number instanceof Double) {
+ digitList.set(isNegative, (Double) number, maxDigits, true);
+ } else if (number instanceof BigDecimal) {
+ digitList.set(isNegative, (BigDecimal) number, maxDigits, true);
+ } else if (number instanceof Long) {
+ digitList.set(isNegative, (Long) number, maxDigits);
+ } else if (number instanceof BigInteger) {
+ digitList.set(isNegative, (BigInteger) number, maxDigits);
+ }
+ }
+
// ======== End fast-path formating logic for double =========================
/**
@@ -1669,29 +1730,59 @@
* be filled in with the correct digits.
*/
private StringBuffer subformat(StringBuffer result, FieldDelegate delegate,
- boolean isNegative, boolean isInteger,
- int maxIntDigits, int minIntDigits,
- int maxFraDigits, int minFraDigits) {
- // NOTE: This isn't required anymore because DigitList takes care of this.
- //
- // // The negative of the exponent represents the number of leading
- // // zeros between the decimal and the first non-zero digit, for
- // // a value < 0.1 (e.g., for 0.00123, -fExponent == 2). If this
- // // is more than the maximum fraction digits, then we have an underflow
- // // for the printed representation. We recognize this here and set
- // // the DigitList representation to zero in this situation.
- //
- // if (-digitList.decimalAt >= getMaximumFractionDigits())
- // {
- // digitList.count = 0;
- // }
-
+ boolean isNegative, boolean isInteger,
+ int maxIntDigits, int minIntDigits,
+ int maxFraDigits, int minFraDigits) {
+
+ // Process prefix
+ if (isNegative) {
+ append(result, negativePrefix, delegate,
+ getNegativePrefixFieldPositions(), Field.SIGN);
+ } else {
+ append(result, positivePrefix, delegate,
+ getPositivePrefixFieldPositions(), Field.SIGN);
+ }
+
+ // Process number
+ subformatNumber(result, delegate, isNegative, isInteger,
+ maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+
+ // Process suffix
+ if (isNegative) {
+ append(result, negativeSuffix, delegate,
+ getNegativeSuffixFieldPositions(), Field.SIGN);
+ } else {
+ append(result, positiveSuffix, delegate,
+ getPositiveSuffixFieldPositions(), Field.SIGN);
+ }
+
+ return result;
+ }
+
+ /**
+ * Subformats number part using the {@code DigitList} of this
+ * {@code DecimalFormat} instance.
+ * @param result where the text is to be appended
+ * @param delegate notified of the location of sub fields
+ * @param isNegative true, if the number is negative; false otherwise
+ * @param isInteger true, if the number is an integer; false otherwise
+ * @param maxIntDigits maximum integer digits
+ * @param minIntDigits minimum integer digits
+ * @param maxFraDigits maximum fraction digits
+ * @param minFraDigits minimum fraction digits
+ */
+ void subformatNumber(StringBuffer result, FieldDelegate delegate,
+ boolean isNegative, boolean isInteger,
+ int maxIntDigits, int minIntDigits,
+ int maxFraDigits, int minFraDigits) {
+
+ char grouping = symbols.getGroupingSeparator();
char zero = symbols.getZeroDigit();
int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
- char grouping = symbols.getGroupingSeparator();
+
char decimal = isCurrencyFormat ?
- symbols.getMonetaryDecimalSeparator() :
- symbols.getDecimalSeparator();
+ symbols.getMonetaryDecimalSeparator() :
+ symbols.getDecimalSeparator();
/* Per bug 4147706, DecimalFormat must respect the sign of numbers which
* format as zero. This allows sensible computations and preserves
@@ -1703,14 +1794,6 @@
digitList.decimalAt = 0; // Normalize
}
- if (isNegative) {
- append(result, negativePrefix, delegate,
- getNegativePrefixFieldPositions(), Field.SIGN);
- } else {
- append(result, positivePrefix, delegate,
- getPositivePrefixFieldPositions(), Field.SIGN);
- }
-
if (useExponentialNotation) {
int iFieldStart = result.length();
int iFieldEnd = -1;
@@ -1719,7 +1802,6 @@
// Minimum integer digits are handled in exponential format by
// adjusting the exponent. For example, 0.01234 with 3 minimum
// integer digits is "123.4E-4".
-
// Maximum integer digits are interpreted as indicating the
// repeating range. This is useful for engineering notation, in
// which the exponent is restricted to a multiple of 3. For
@@ -1782,8 +1864,8 @@
fFieldStart = result.length();
}
result.append((i < digitList.count) ?
- (char)(digitList.digits[i] + zeroDelta) :
- zero);
+ (char)(digitList.digits[i] + zeroDelta) :
+ zero);
}
if (decimalSeparatorAlwaysShown && totalDigits == integerDigits) {
@@ -1802,17 +1884,17 @@
iFieldEnd = result.length();
}
delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
- iFieldStart, iFieldEnd, result);
+ iFieldStart, iFieldEnd, result);
if (addedDecimalSeparator) {
delegate.formatted(Field.DECIMAL_SEPARATOR,
- Field.DECIMAL_SEPARATOR,
- iFieldEnd, fFieldStart, result);
+ Field.DECIMAL_SEPARATOR,
+ iFieldEnd, fFieldStart, result);
}
if (fFieldStart == -1) {
fFieldStart = result.length();
}
delegate.formatted(FRACTION_FIELD, Field.FRACTION, Field.FRACTION,
- fFieldStart, result.length(), result);
+ fFieldStart, result.length(), result);
// The exponent is output using the pattern-specified minimum
// exponent digits. There is no maximum limit to the exponent
@@ -1823,7 +1905,7 @@
result.append(symbols.getExponentSeparator());
delegate.formatted(Field.EXPONENT_SYMBOL, Field.EXPONENT_SYMBOL,
- fieldStart, result.length(), result);
+ fieldStart, result.length(), result);
// For zero values, we force the exponent to zero. We
// must do this here, and not earlier, because the value
@@ -1838,7 +1920,7 @@
fieldStart = result.length();
result.append(symbols.getMinusSign());
delegate.formatted(Field.EXPONENT_SIGN, Field.EXPONENT_SIGN,
- fieldStart, result.length(), result);
+ fieldStart, result.length(), result);
}
digitList.set(negativeExponent, exponent);
@@ -1849,10 +1931,10 @@
}
for (int i=0; i<digitList.decimalAt; ++i) {
result.append((i < digitList.count) ?
- (char)(digitList.digits[i] + zeroDelta) : zero);
+ (char)(digitList.digits[i] + zeroDelta) : zero);
}
delegate.formatted(Field.EXPONENT, Field.EXPONENT, eFieldStart,
- result.length(), result);
+ result.length(), result);
} else {
int iFieldStart = result.length();
@@ -1889,19 +1971,19 @@
// grouping separator if i==0 though; that's at the end of
// the integer part.
if (isGroupingUsed() && i>0 && (groupingSize != 0) &&
- (i % groupingSize == 0)) {
+ (i % groupingSize == 0)) {
int gStart = result.length();
result.append(grouping);
delegate.formatted(Field.GROUPING_SEPARATOR,
- Field.GROUPING_SEPARATOR, gStart,
- result.length(), result);
+ Field.GROUPING_SEPARATOR, gStart,
+ result.length(), result);
}
}
// Determine whether or not there are any printable fractional
// digits. If we've used up the digits we know there aren't.
boolean fractionPresent = (minFraDigits > 0) ||
- (!isInteger && digitIndex < digitList.count);
+ (!isInteger && digitIndex < digitList.count);
// If there is no fraction present, and we haven't printed any
// integer digits, then print a zero. Otherwise we won't print
@@ -1911,7 +1993,7 @@
}
delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
- iFieldStart, result.length(), result);
+ iFieldStart, result.length(), result);
// Output the decimal separator if we always do so.
int sStart = result.length();
@@ -1921,8 +2003,8 @@
if (sStart != result.length()) {
delegate.formatted(Field.DECIMAL_SEPARATOR,
- Field.DECIMAL_SEPARATOR,
- sStart, result.length(), result);
+ Field.DECIMAL_SEPARATOR,
+ sStart, result.length(), result);
}
int fFieldStart = result.length();
@@ -1934,7 +2016,7 @@
// we have an integer, so there is no fractional stuff to
// display, or we're out of significant digits.
if (i >= minFraDigits &&
- (isInteger || digitIndex >= digitList.count)) {
+ (isInteger || digitIndex >= digitList.count)) {
break;
}
@@ -1957,18 +2039,8 @@
// Record field information for caller.
delegate.formatted(FRACTION_FIELD, Field.FRACTION, Field.FRACTION,
- fFieldStart, result.length(), result);
+ fFieldStart, result.length(), result);
}
-
- if (isNegative) {
- append(result, negativeSuffix, delegate,
- getNegativeSuffixFieldPositions(), Field.SIGN);
- } else {
- append(result, positiveSuffix, delegate,
- getPositiveSuffixFieldPositions(), Field.SIGN);
- }
-
- return result;
}
/**
@@ -2209,19 +2281,18 @@
* whether the value was infinite and whether it was positive.
*/
private final boolean subparse(String text, ParsePosition parsePosition,
- String positivePrefix, String negativePrefix,
- DigitList digits, boolean isExponent,
- boolean status[]) {
+ String positivePrefix, String negativePrefix,
+ DigitList digits, boolean isExponent,
+ boolean status[]) {
int position = parsePosition.index;
int oldStart = parsePosition.index;
- int backup;
boolean gotPositive, gotNegative;
// check for positivePrefix; take longest
gotPositive = text.regionMatches(position, positivePrefix, 0,
- positivePrefix.length());
+ positivePrefix.length());
gotNegative = text.regionMatches(position, negativePrefix, 0,
- negativePrefix.length());
+ negativePrefix.length());
if (gotPositive && gotNegative) {
if (positivePrefix.length() > negativePrefix.length()) {
@@ -2240,10 +2311,75 @@
return false;
}
+ position = subparseNumber(text, position, digits, true, isExponent, status);
+ if (position == -1) {
+ parsePosition.index = oldStart;
+ parsePosition.errorIndex = oldStart;
+ return false;
+ }
+
+ // Check for suffix
+ if (!isExponent) {
+ if (gotPositive) {
+ gotPositive = text.regionMatches(position,positiveSuffix,0,
+ positiveSuffix.length());
+ }
+ if (gotNegative) {
+ gotNegative = text.regionMatches(position,negativeSuffix,0,
+ negativeSuffix.length());
+ }
+
+ // If both match, take longest
+ if (gotPositive && gotNegative) {
+ if (positiveSuffix.length() > negativeSuffix.length()) {
+ gotNegative = false;
+ } else if (positiveSuffix.length() < negativeSuffix.length()) {
+ gotPositive = false;
+ }
+ }
+
+ // Fail if neither or both
+ if (gotPositive == gotNegative) {
+ parsePosition.errorIndex = position;
+ return false;
+ }
+
+ parsePosition.index = position +
+ (gotPositive ? positiveSuffix.length() : negativeSuffix.length()); // mark success!
+ } else {
+ parsePosition.index = position;
+ }
+
+ status[STATUS_POSITIVE] = gotPositive;
+ if (parsePosition.index == oldStart) {
+ parsePosition.errorIndex = position;
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Parses a number from the given {@code text}. The text is parsed
+ * beginning at position, until an unparseable character is seen.
+ *
+ * @param text the string to parse
+ * @param position the position at which parsing begins
+ * @param digits the DigitList to set to the parsed value
+ * @param checkExponent whether to check for exponential number
+ * @param isExponent if the exponential part is encountered
+ * @param status upon return contains boolean status flags indicating
+ * whether the value is infinite and whether it is
+ * positive
+ * @return returns the position of the first unparseable character or
+ * -1 in case of no valid number parsed
+ */
+ int subparseNumber(String text, int position,
+ DigitList digits, boolean checkExponent,
+ boolean isExponent, boolean status[]) {
// process digits or Inf, find decimal position
status[STATUS_INFINITE] = false;
if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
- symbols.getInfinity().length())) {
+ symbols.getInfinity().length())) {
position += symbols.getInfinity().length();
status[STATUS_INFINITE] = true;
} else {
@@ -2257,8 +2393,8 @@
digits.decimalAt = digits.count = 0;
char zero = symbols.getZeroDigit();
char decimal = isCurrencyFormat ?
- symbols.getMonetaryDecimalSeparator() :
- symbols.getDecimalSeparator();
+ symbols.getMonetaryDecimalSeparator() :
+ symbols.getDecimalSeparator();
char grouping = symbols.getGroupingSeparator();
String exponentString = symbols.getExponentSeparator();
boolean sawDecimal = false;
@@ -2270,7 +2406,7 @@
// pin when the maximum allowable digits is reached.
int digitCount = 0;
- backup = -1;
+ int backup = -1;
for (; position < text.length(); ++position) {
char ch = text.charAt(position);
@@ -2334,15 +2470,15 @@
// require that they be followed by a digit. Otherwise
// we backup and reprocess them.
backup = position;
- } else if (!isExponent && text.regionMatches(position, exponentString, 0, exponentString.length())
- && !sawExponent) {
+ } else if (checkExponent && !isExponent && text.regionMatches(position, exponentString, 0, exponentString.length())
+ && !sawExponent) {
// Process the exponent by recursively calling this method.
- ParsePosition pos = new ParsePosition(position + exponentString.length());
+ ParsePosition pos = new ParsePosition(position + exponentString.length());
boolean[] stat = new boolean[STATUS_LENGTH];
DigitList exponentDigits = new DigitList();
if (subparse(text, pos, "", Character.toString(symbols.getMinusSign()), exponentDigits, true, stat) &&
- exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) {
+ exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) {
position = pos.index; // Advance past the exponent
exponent = (int)exponentDigits.getLong();
if (!stat[STATUS_POSITIVE]) {
@@ -2373,50 +2509,11 @@
// parse "$" with pattern "$#0.00". (return index 0 and error
// index 1).
if (!sawDigit && digitCount == 0) {
- parsePosition.index = oldStart;
- parsePosition.errorIndex = oldStart;
- return false;
+ return -1;
}
}
-
- // check for suffix
- if (!isExponent) {
- if (gotPositive) {
- gotPositive = text.regionMatches(position,positiveSuffix,0,
- positiveSuffix.length());
- }
- if (gotNegative) {
- gotNegative = text.regionMatches(position,negativeSuffix,0,
- negativeSuffix.length());
- }
-
- // if both match, take longest
- if (gotPositive && gotNegative) {
- if (positiveSuffix.length() > negativeSuffix.length()) {
- gotNegative = false;
- } else if (positiveSuffix.length() < negativeSuffix.length()) {
- gotPositive = false;
- }
- }
-
- // fail if neither or both
- if (gotPositive == gotNegative) {
- parsePosition.errorIndex = position;
- return false;
- }
-
- parsePosition.index = position +
- (gotPositive ? positiveSuffix.length() : negativeSuffix.length()); // mark success!
- } else {
- parsePosition.index = position;
- }
-
- status[STATUS_POSITIVE] = gotPositive;
- if (parsePosition.index == oldStart) {
- parsePosition.errorIndex = position;
- return false;
- }
- return true;
+ return position;
+
}
/**
--- a/src/java.base/share/classes/java/text/NumberFormat.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/NumberFormat.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. 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
@@ -47,13 +47,11 @@
import java.text.spi.NumberFormatProvider;
import java.util.Currency;
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
-import java.util.ResourceBundle;
+import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
-import java.util.spi.LocaleServiceProvider;
import sun.util.locale.provider.LocaleProviderAdapter;
import sun.util.locale.provider.LocaleServiceProviderPool;
@@ -112,9 +110,12 @@
* Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
* normal number format. Use <code>getIntegerInstance</code> to get an
* integer number format. Use <code>getCurrencyInstance</code> to get the
- * currency number format. And use <code>getPercentInstance</code> to get a
- * format for displaying percentages. With this format, a fraction like
- * 0.53 is displayed as 53%.
+ * currency number format. Use {@code getCompactNumberInstance} to get the
+ * compact number format to format a number in shorter form. For example,
+ * {@code 2000} can be formatted as {@code "2K"} in
+ * {@link java.util.Locale#US US locale}. Use <code>getPercentInstance</code>
+ * to get a format for displaying percentages. With this format, a fraction
+ * like 0.53 is displayed as 53%.
*
* <p>
* You can also control the display of numbers with such methods as
@@ -122,9 +123,10 @@
* If you want even more control over the format or parsing,
* or want to give your users more control,
* you can try casting the <code>NumberFormat</code> you get from the factory methods
- * to a <code>DecimalFormat</code>. This will work for the vast majority
- * of locales; just remember to put it in a <code>try</code> block in case you
- * encounter an unusual one.
+ * to a {@code DecimalFormat} or {@code CompactNumberFormat} depending on
+ * the factory method used. This will work for the vast majority of locales;
+ * just remember to put it in a <code>try</code> block in case you encounter
+ * an unusual one.
*
* <p>
* NumberFormat and DecimalFormat are designed such that some controls
@@ -201,6 +203,7 @@
*
* @see DecimalFormat
* @see ChoiceFormat
+ * @see CompactNumberFormat
* @author Mark Davis
* @author Helena Shih
* @since 1.1
@@ -472,7 +475,7 @@
* formatting
*/
public static final NumberFormat getInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), NUMBERSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, NUMBERSTYLE);
}
/**
@@ -485,7 +488,7 @@
* formatting
*/
public static NumberFormat getInstance(Locale inLocale) {
- return getInstance(inLocale, NUMBERSTYLE);
+ return getInstance(inLocale, null, NUMBERSTYLE);
}
/**
@@ -501,7 +504,7 @@
* @see java.util.Locale.Category#FORMAT
*/
public static final NumberFormat getNumberInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), NUMBERSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, NUMBERSTYLE);
}
/**
@@ -512,7 +515,7 @@
* formatting
*/
public static NumberFormat getNumberInstance(Locale inLocale) {
- return getInstance(inLocale, NUMBERSTYLE);
+ return getInstance(inLocale, null, NUMBERSTYLE);
}
/**
@@ -534,7 +537,7 @@
* @since 1.4
*/
public static final NumberFormat getIntegerInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), INTEGERSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, INTEGERSTYLE);
}
/**
@@ -551,7 +554,7 @@
* @since 1.4
*/
public static NumberFormat getIntegerInstance(Locale inLocale) {
- return getInstance(inLocale, INTEGERSTYLE);
+ return getInstance(inLocale, null, INTEGERSTYLE);
}
/**
@@ -566,7 +569,7 @@
* @see java.util.Locale.Category#FORMAT
*/
public static final NumberFormat getCurrencyInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), CURRENCYSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, CURRENCYSTYLE);
}
/**
@@ -576,7 +579,7 @@
* @return the {@code NumberFormat} instance for currency formatting
*/
public static NumberFormat getCurrencyInstance(Locale inLocale) {
- return getInstance(inLocale, CURRENCYSTYLE);
+ return getInstance(inLocale, null, CURRENCYSTYLE);
}
/**
@@ -591,7 +594,7 @@
* @see java.util.Locale.Category#FORMAT
*/
public static final NumberFormat getPercentInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), PERCENTSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, PERCENTSTYLE);
}
/**
@@ -601,14 +604,14 @@
* @return the {@code NumberFormat} instance for percentage formatting
*/
public static NumberFormat getPercentInstance(Locale inLocale) {
- return getInstance(inLocale, PERCENTSTYLE);
+ return getInstance(inLocale, null, PERCENTSTYLE);
}
/**
* Returns a scientific format for the current default locale.
*/
/*public*/ final static NumberFormat getScientificInstance() {
- return getInstance(Locale.getDefault(Locale.Category.FORMAT), SCIENTIFICSTYLE);
+ return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, SCIENTIFICSTYLE);
}
/**
@@ -617,7 +620,50 @@
* @param inLocale the desired locale
*/
/*public*/ static NumberFormat getScientificInstance(Locale inLocale) {
- return getInstance(inLocale, SCIENTIFICSTYLE);
+ return getInstance(inLocale, null, SCIENTIFICSTYLE);
+ }
+
+ /**
+ * Returns a compact number format for the default
+ * {@link java.util.Locale.Category#FORMAT FORMAT} locale with
+ * {@link NumberFormat.Style#SHORT "SHORT"} format style.
+ *
+ * @return A {@code NumberFormat} instance for compact number
+ * formatting
+ *
+ * @see CompactNumberFormat
+ * @see NumberFormat.Style
+ * @see java.util.Locale#getDefault(java.util.Locale.Category)
+ * @see java.util.Locale.Category#FORMAT
+ * @since 12
+ */
+ public static NumberFormat getCompactNumberInstance() {
+ return getInstance(Locale.getDefault(
+ Locale.Category.FORMAT), NumberFormat.Style.SHORT, COMPACTSTYLE);
+ }
+
+ /**
+ * Returns a compact number format for the specified {@link java.util.Locale locale}
+ * and {@link NumberFormat.Style formatStyle}.
+ *
+ * @param locale the desired locale
+ * @param formatStyle the style for formatting a number
+ * @return A {@code NumberFormat} instance for compact number
+ * formatting
+ * @throws NullPointerException if {@code locale} or {@code formatStyle}
+ * is {@code null}
+ *
+ * @see CompactNumberFormat
+ * @see NumberFormat.Style
+ * @see java.util.Locale
+ * @since 12
+ */
+ public static NumberFormat getCompactNumberInstance(Locale locale,
+ NumberFormat.Style formatStyle) {
+
+ Objects.requireNonNull(locale);
+ Objects.requireNonNull(formatStyle);
+ return getInstance(locale, formatStyle, COMPACTSTYLE);
}
/**
@@ -900,20 +946,22 @@
// =======================privates===============================
private static NumberFormat getInstance(Locale desiredLocale,
- int choice) {
+ Style formatStyle, int choice) {
LocaleProviderAdapter adapter;
adapter = LocaleProviderAdapter.getAdapter(NumberFormatProvider.class,
- desiredLocale);
- NumberFormat numberFormat = getInstance(adapter, desiredLocale, choice);
+ desiredLocale);
+ NumberFormat numberFormat = getInstance(adapter, desiredLocale,
+ formatStyle, choice);
if (numberFormat == null) {
numberFormat = getInstance(LocaleProviderAdapter.forJRE(),
- desiredLocale, choice);
+ desiredLocale, formatStyle, choice);
}
return numberFormat;
}
private static NumberFormat getInstance(LocaleProviderAdapter adapter,
- Locale locale, int choice) {
+ Locale locale, Style formatStyle,
+ int choice) {
NumberFormatProvider provider = adapter.getNumberFormatProvider();
NumberFormat numberFormat = null;
switch (choice) {
@@ -929,6 +977,9 @@
case INTEGERSTYLE:
numberFormat = provider.getIntegerInstance(locale);
break;
+ case COMPACTSTYLE:
+ numberFormat = provider.getCompactNumberInstance(locale, formatStyle);
+ break;
}
return numberFormat;
}
@@ -1001,6 +1052,7 @@
private static final int PERCENTSTYLE = 2;
private static final int SCIENTIFICSTYLE = 3;
private static final int INTEGERSTYLE = 4;
+ private static final int COMPACTSTYLE = 5;
/**
* True if the grouping (i.e. thousands) separator is used when
@@ -1276,5 +1328,43 @@
* Constant identifying the exponent sign field.
*/
public static final Field EXPONENT_SIGN = new Field("exponent sign");
+
+ /**
+ * Constant identifying the prefix field.
+ *
+ * @since 12
+ */
+ public static final Field PREFIX = new Field("prefix");
+
+ /**
+ * Constant identifying the suffix field.
+ *
+ * @since 12
+ */
+ public static final Field SUFFIX = new Field("suffix");
+ }
+
+ /**
+ * A number format style.
+ * <p>
+ * {@code Style} is an enum which represents the style for formatting
+ * a number within a given {@code NumberFormat} instance.
+ *
+ * @see CompactNumberFormat
+ * @see NumberFormat#getCompactNumberInstance(Locale, Style)
+ * @since 12
+ */
+ public enum Style {
+
+ /**
+ * The {@code SHORT} number format style.
+ */
+ SHORT,
+
+ /**
+ * The {@code LONG} number format style.
+ */
+ LONG
+
}
}
--- a/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. 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
@@ -110,4 +110,37 @@
* @see java.text.NumberFormat#getPercentInstance(java.util.Locale)
*/
public abstract NumberFormat getPercentInstance(Locale locale);
+
+ /**
+ * Returns a new {@code NumberFormat} instance which formats
+ * a number in its compact form for the specified
+ * {@code locale} and {@code formatStyle}.
+ *
+ * @implSpec The default implementation of this method throws
+ * {@code UnSupportedOperationException}. Overriding the implementation
+ * of this method returns the compact number formatter instance
+ * of the given {@code locale} with specified {@code formatStyle}.
+ *
+ * @param locale the desired locale
+ * @param formatStyle the style for formatting a number
+ * @throws NullPointerException if {@code locale} or {@code formatStyle}
+ * is {@code null}
+ * @throws IllegalArgumentException if {@code locale} is not
+ * one of the locales returned from
+ * {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
+ * getAvailableLocales()}.
+ * @return a compact number formatter
+ *
+ * @see java.text.NumberFormat#getCompactNumberInstance(Locale,
+ * NumberFormat.Style)
+ * @since 12
+ */
+ public NumberFormat getCompactNumberInstance(Locale locale,
+ NumberFormat.Style formatStyle) {
+ throw new UnsupportedOperationException(
+ "The " + this.getClass().getName() + " should override this"
+ + " method to return compact number format instance of "
+ + locale + " locale and " + formatStyle + " style.");
+ }
+
}
--- a/src/java.base/share/classes/java/util/EnumSet.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/util/EnumSet.java Fri Dec 07 09:46:53 2018 -0500
@@ -463,7 +463,7 @@
/**
* Returns a
- * <a href="../../serialized-form.html#java.util.EnumSet.SerializationProxy">
+ * <a href="{@docRoot}/serialized-form.html#java.util.EnumSet.SerializationProxy">
* SerializationProxy</a>
* representing the state of this instance.
*
--- a/src/java.base/share/classes/java/util/ImmutableCollections.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/util/ImmutableCollections.java Fri Dec 07 09:46:53 2018 -0500
@@ -1091,9 +1091,9 @@
* Creates and returns an immutable collection from this proxy class.
* The instance returned is created as if by calling one of the
* static factory methods for
- * <a href="List.html#immutable">List</a>,
- * <a href="Map.html#immutable">Map</a>, or
- * <a href="Set.html#immutable">Set</a>.
+ * <a href="List.html#unmodifiable">List</a>,
+ * <a href="Map.html#unmodifiable">Map</a>, or
+ * <a href="Set.html#unmodifiable">Set</a>.
* This proxy class is the serial form for all immutable collection instances,
* regardless of implementation type. This is necessary to ensure that the
* existence of any particular implementation type is kept out of the
--- a/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystem.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystem.java Fri Dec 07 09:46:53 2018 -0500
@@ -106,14 +106,6 @@
}
@Override
- @SuppressWarnings("deprecation")
- protected void finalize() throws Throwable {
- try {
- cleanup();
- } catch (IOException ignored) {}
- }
-
- @Override
public FileSystemProvider provider() {
return provider;
}
--- a/src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java Fri Dec 07 09:46:53 2018 -0500
@@ -27,32 +27,40 @@
import java.lang.module.Configuration;
import java.lang.module.ModuleFinder;
+import java.util.Map;
import java.util.Objects;
+import java.util.Set;
+
import jdk.internal.misc.VM;
/**
* Used by ModuleBootstrap to obtain the archived system modules and finder.
*/
final class ArchivedModuleGraph {
- private static String archivedMainModule;
- private static SystemModules archivedSystemModules;
- private static ModuleFinder archivedModuleFinder;
- private static Configuration archivedConfiguration;
+ private static ArchivedModuleGraph archivedModuleGraph;
- private final SystemModules systemModules;
+ private final String mainModule;
+ private final boolean hasSplitPackages;
+ private final boolean hasIncubatorModules;
private final ModuleFinder finder;
private final Configuration configuration;
+ private final Map<String, Set<String>> concealedPackagesToOpen;
+ private final Map<String, Set<String>> exportedPackagesToOpen;
- private ArchivedModuleGraph(SystemModules modules,
+ private ArchivedModuleGraph(String mainModule,
+ boolean hasSplitPackages,
+ boolean hasIncubatorModules,
ModuleFinder finder,
- Configuration configuration) {
- this.systemModules = modules;
+ Configuration configuration,
+ Map<String, Set<String>> concealedPackagesToOpen,
+ Map<String, Set<String>> exportedPackagesToOpen) {
+ this.mainModule = mainModule;
+ this.hasSplitPackages = hasSplitPackages;
+ this.hasIncubatorModules = hasIncubatorModules;
this.finder = finder;
this.configuration = configuration;
- }
-
- SystemModules systemModules() {
- return systemModules;
+ this.concealedPackagesToOpen = concealedPackagesToOpen;
+ this.exportedPackagesToOpen = exportedPackagesToOpen;
}
ModuleFinder finder() {
@@ -63,32 +71,54 @@
return configuration;
}
- // A factory method that ModuleBootstrap can use to obtain the
- // ArchivedModuleGraph.
+ Map<String, Set<String>> concealedPackagesToOpen() {
+ return concealedPackagesToOpen;
+ }
+
+ Map<String, Set<String>> exportedPackagesToOpen() {
+ return exportedPackagesToOpen;
+ }
+
+ boolean hasSplitPackages() {
+ return hasSplitPackages;
+ }
+
+ boolean hasIncubatorModules() {
+ return hasIncubatorModules;
+ }
+
+ /**
+ * Returns the ArchivedModuleGraph for the given initial module.
+ */
static ArchivedModuleGraph get(String mainModule) {
- if (Objects.equals(mainModule, archivedMainModule)
- && archivedSystemModules != null
- && archivedModuleFinder != null
- && archivedConfiguration != null) {
- return new ArchivedModuleGraph(archivedSystemModules,
- archivedModuleFinder,
- archivedConfiguration);
+ ArchivedModuleGraph graph = archivedModuleGraph;
+ if (graph != null && Objects.equals(mainModule, graph.mainModule)) {
+ return graph;
} else {
return null;
}
}
- // Used at CDS dump time
+ /**
+ * Archive the module graph for the given initial module.
+ */
static void archive(String mainModule,
- SystemModules systemModules,
+ boolean hasSplitPackages,
+ boolean hasIncubatorModules,
ModuleFinder finder,
- Configuration configuration) {
- if (archivedMainModule != null)
+ Configuration configuration,
+ Map<String, Set<String>> concealedPackagesToOpen,
+ Map<String, Set<String>> exportedPackagesToOpen) {
+ if (mainModule != null) {
throw new UnsupportedOperationException();
- archivedMainModule = mainModule;
- archivedSystemModules = systemModules;
- archivedModuleFinder = finder;
- archivedConfiguration = configuration;
+ }
+ archivedModuleGraph = new ArchivedModuleGraph(mainModule,
+ hasSplitPackages,
+ hasIncubatorModules,
+ finder,
+ configuration,
+ concealedPackagesToOpen,
+ exportedPackagesToOpen);
}
static {
--- a/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java Fri Dec 07 09:46:53 2018 -0500
@@ -172,6 +172,8 @@
boolean haveModulePath = (appModulePath != null || upgradeModulePath != null);
boolean needResolution = true;
boolean canArchive = false;
+ boolean hasSplitPackages;
+ boolean hasIncubatorModules;
// If the java heap was archived at CDS dump time and the environment
// at dump time matches the current environment then use the archived
@@ -182,8 +184,9 @@
&& addModules.isEmpty()
&& limitModules.isEmpty()
&& !isPatched) {
- systemModules = archivedModuleGraph.systemModules();
systemModuleFinder = archivedModuleGraph.finder();
+ hasSplitPackages = archivedModuleGraph.hasSplitPackages();
+ hasIncubatorModules = archivedModuleGraph.hasIncubatorModules();
needResolution = (traceOutput != null);
} else {
if (!haveModulePath && addModules.isEmpty() && limitModules.isEmpty()) {
@@ -205,6 +208,11 @@
systemModules = new ExplodedSystemModules();
systemModuleFinder = SystemModuleFinders.ofSystem();
}
+
+ hasSplitPackages = systemModules.hasSplitPackages();
+ hasIncubatorModules = systemModules.hasIncubatorModules();
+ // not using the archived module graph - avoid accidental use
+ archivedModuleGraph = null;
}
Counters.add("jdk.module.boot.1.systemModulesTime", t1);
@@ -395,7 +403,7 @@
}
// check for split packages in the modules mapped to the built-in loaders
- if (systemModules.hasSplitPackages() || isPatched || haveModulePath) {
+ if (hasSplitPackages || isPatched || haveModulePath) {
checkSplitPackages(cf, clf);
}
@@ -415,7 +423,7 @@
// Step 7: Miscellaneous
// check incubating status
- if (systemModules.hasIncubatorModules() || haveModulePath) {
+ if (hasIncubatorModules || haveModulePath) {
checkIncubatingStatus(cf);
}
@@ -423,7 +431,21 @@
long t7 = System.nanoTime();
addExtraReads(bootLayer);
boolean extraExportsOrOpens = addExtraExportsAndOpens(bootLayer);
- addIllegalAccess(upgradeModulePath, systemModules, bootLayer, extraExportsOrOpens);
+
+ Map<String, Set<String>> concealedPackagesToOpen;
+ Map<String, Set<String>> exportedPackagesToOpen;
+ if (archivedModuleGraph != null) {
+ concealedPackagesToOpen = archivedModuleGraph.concealedPackagesToOpen();
+ exportedPackagesToOpen = archivedModuleGraph.exportedPackagesToOpen();
+ } else {
+ concealedPackagesToOpen = systemModules.concealedPackagesToOpen();
+ exportedPackagesToOpen = systemModules.exportedPackagesToOpen();
+ }
+ addIllegalAccess(upgradeModulePath,
+ concealedPackagesToOpen,
+ exportedPackagesToOpen,
+ bootLayer,
+ extraExportsOrOpens);
Counters.add("jdk.module.boot.7.adjustModulesTime", t7);
// save module finders for later use
@@ -436,8 +458,13 @@
// Module graph can be archived at CDS dump time. Only allow the
// unnamed module case for now.
if (canArchive && (mainModule == null)) {
- ArchivedModuleGraph.archive(mainModule, systemModules,
- systemModuleFinder, cf);
+ ArchivedModuleGraph.archive(mainModule,
+ hasSplitPackages,
+ hasIncubatorModules,
+ systemModuleFinder,
+ cf,
+ concealedPackagesToOpen,
+ exportedPackagesToOpen);
}
// total time to initialize
@@ -738,7 +765,8 @@
* of system modules in the boot layer to code in unnamed modules.
*/
private static void addIllegalAccess(ModuleFinder upgradeModulePath,
- SystemModules systemModules,
+ Map<String, Set<String>> concealedPackagesToOpen,
+ Map<String, Set<String>> exportedPackagesToOpen,
ModuleLayer bootLayer,
boolean extraExportsOrOpens) {
String value = getAndRemoveProperty("jdk.module.illegalAccess");
@@ -764,13 +792,11 @@
IllegalAccessLogger.Builder builder
= new IllegalAccessLogger.Builder(mode, System.err);
- Map<String, Set<String>> map1 = systemModules.concealedPackagesToOpen();
- Map<String, Set<String>> map2 = systemModules.exportedPackagesToOpen();
- if (map1.isEmpty() && map2.isEmpty()) {
+ if (concealedPackagesToOpen.isEmpty() && exportedPackagesToOpen.isEmpty()) {
// need to generate (exploded build)
IllegalAccessMaps maps = IllegalAccessMaps.generate(limitedFinder());
- map1 = maps.concealedPackagesToOpen();
- map2 = maps.exportedPackagesToOpen();
+ concealedPackagesToOpen = maps.concealedPackagesToOpen();
+ exportedPackagesToOpen = maps.exportedPackagesToOpen();
}
// open specific packages in the system modules
@@ -789,8 +815,8 @@
continue;
}
- Set<String> concealedPackages = map1.getOrDefault(name, Set.of());
- Set<String> exportedPackages = map2.getOrDefault(name, Set.of());
+ Set<String> concealedPackages = concealedPackagesToOpen.getOrDefault(name, Set.of());
+ Set<String> exportedPackages = exportedPackagesToOpen.getOrDefault(name, Set.of());
// refresh the set of concealed and exported packages if needed
if (extraExportsOrOpens) {
--- a/src/java.base/share/classes/jdk/internal/util/SystemProps.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/util/SystemProps.java Fri Dec 07 09:46:53 2018 -0500
@@ -152,16 +152,18 @@
String format) {
// Do not override command line setting
String baseValue = cmdProps.getProperty(base);
- if (baseValue == null) {
- // Not overridden on the command line; define the properties if there are platform defined values
+ if (baseValue != null) {
+ return; // Do not override value from the command line
+ }
+
+ // Not overridden on the command line; define the properties if there are platform defined values
+ if (display != null) {
+ cmdProps.put(base, display);
baseValue = display;
}
- if (baseValue != null) {
- cmdProps.put(base, baseValue);
- }
/* user.xxx.display property */
- String disp = base + ".display";
+ String disp = base.concat(".display");
String dispValue = cmdProps.getProperty(disp);
if (dispValue == null && display != null && !display.equals(baseValue)) {
// Create the property only if different from the base property
@@ -169,7 +171,7 @@
}
/* user.xxx.format property */
- String fmt = base + ".format";
+ String fmt = base.concat(".format");
String fmtValue = cmdProps.getProperty(fmt);
if (fmtValue == null && format != null && !format.equals(baseValue)) {
// Create the property only if different than the base property
--- a/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java Fri Dec 07 09:46:53 2018 -0500
@@ -176,7 +176,11 @@
/*
* Record a new session, using a given cipher spec, session ID,
- * and creation time
+ * and creation time.
+ * Note: For the unmodifiable collections and lists we are creating new
+ * collections as inputs to avoid potential deep nesting of
+ * unmodifiable collections that can cause StackOverflowErrors
+ * (see JDK-6323374).
*/
SSLSessionImpl(HandshakeContext hc,
CipherSuite cipherSuite, SessionId id, long creationTime) {
@@ -187,10 +191,11 @@
this.port = hc.conContext.transport.getPeerPort();
this.localSupportedSignAlgs = hc.localSupportedSignAlgs == null ?
Collections.emptySet() :
- Collections.unmodifiableCollection(hc.localSupportedSignAlgs);
+ Collections.unmodifiableCollection(
+ new ArrayList<>(hc.localSupportedSignAlgs));
this.serverNameIndication = hc.negotiatedServerName;
- this.requestedServerNames = Collections.<SNIServerName>unmodifiableList(
- hc.getRequestedServerNames());
+ this.requestedServerNames = Collections.unmodifiableList(
+ new ArrayList<>(hc.getRequestedServerNames()));
if (hc.sslConfig.isClientMode) {
this.useExtendedMasterSecret =
(hc.handshakeExtensions.get(
@@ -219,10 +224,8 @@
this.host = baseSession.getPeerHost();
this.port = baseSession.getPeerPort();
this.localSupportedSignAlgs =
- baseSession.localSupportedSignAlgs == null ?
- Collections.emptySet() :
- Collections.unmodifiableCollection(
- baseSession.localSupportedSignAlgs);
+ baseSession.localSupportedSignAlgs == null ?
+ Collections.emptySet() : baseSession.localSupportedSignAlgs;
this.peerSupportedSignAlgs =
baseSession.getPeerSupportedSignatureAlgorithms();
this.serverNameIndication = baseSession.serverNameIndication;
--- a/src/java.base/share/classes/sun/security/ssl/ServerNameExtension.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/security/ssl/ServerNameExtension.java Fri Dec 07 09:46:53 2018 -0500
@@ -82,9 +82,15 @@
// +2: Name length
final List<SNIServerName> serverNames;
+ /*
+ * Note: For the unmodifiable collection we are creating new
+ * collections as inputs to avoid potential deep nesting of
+ * unmodifiable collections that can cause StackOverflowErrors
+ * (see JDK-6323374).
+ */
private CHServerNamesSpec(List<SNIServerName> serverNames) {
- this.serverNames =
- Collections.<SNIServerName>unmodifiableList(serverNames);
+ this.serverNames = Collections.<SNIServerName>unmodifiableList(
+ new ArrayList<>(serverNames));
}
private CHServerNamesSpec(ByteBuffer buffer) throws IOException {
--- a/src/java.base/share/classes/sun/text/resources/FormatData.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/text/resources/FormatData.java Fri Dec 07 09:46:53 2018 -0500
@@ -796,6 +796,44 @@
"NaN",
}
},
+ { "short.CompactNumberPatterns",
+ new String[] {
+ "",
+ "",
+ "",
+ "0K",
+ "00K",
+ "000K",
+ "0M",
+ "00M",
+ "000M",
+ "0B",
+ "00B",
+ "000B",
+ "0T",
+ "00T",
+ "000T",
+ }
+ },
+ { "long.CompactNumberPatterns",
+ new String[] {
+ "",
+ "",
+ "",
+ "0 thousand",
+ "00 thousand",
+ "000 thousand",
+ "0 million",
+ "00 million",
+ "000 million",
+ "0 billion",
+ "00 billion",
+ "000 billion",
+ "0 trillion",
+ "00 trillion",
+ "000 trillion",
+ }
+ },
{ "TimePatterns",
new String[] {
"h:mm:ss a z", // full time pattern
--- a/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java Fri Dec 07 09:46:53 2018 -0500
@@ -43,6 +43,7 @@
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.text.MessageFormat;
+import java.text.NumberFormat;
import java.util.Calendar;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -88,6 +89,7 @@
private static final String ZONE_IDS_CACHEKEY = "ZID";
private static final String CALENDAR_NAMES = "CALN.";
private static final String NUMBER_PATTERNS_CACHEKEY = "NP";
+ private static final String COMPACT_NUMBER_PATTERNS_CACHEKEY = "CNP";
private static final String DATE_TIME_PATTERN = "DTP.";
// TimeZoneNamesBundle exemplar city prefix
@@ -479,6 +481,32 @@
}
/**
+ * Returns the compact number format patterns.
+ * @param formatStyle the style for formatting a number
+ * @return an array of compact number patterns
+ */
+ @SuppressWarnings("unchecked")
+ public String[] getCNPatterns(NumberFormat.Style formatStyle) {
+
+ Objects.requireNonNull(formatStyle);
+ String[] compactNumberPatterns = null;
+ removeEmptyReferences();
+ String width = (formatStyle == NumberFormat.Style.LONG) ? "long" : "short";
+ String cacheKey = width + "." + COMPACT_NUMBER_PATTERNS_CACHEKEY;
+ ResourceReference data = cache.get(cacheKey);
+ if (data == null || ((compactNumberPatterns
+ = (String[]) data.get()) == null)) {
+ ResourceBundle resource = localeData.getNumberFormatData(locale);
+ compactNumberPatterns = (String[]) resource
+ .getObject(width + ".CompactNumberPatterns");
+ cache.put(cacheKey, new ResourceReference(cacheKey,
+ (Object) compactNumberPatterns, referenceQueue));
+ }
+ return compactNumberPatterns;
+ }
+
+
+ /**
* Returns the FormatData resource bundle of this LocaleResources.
* The FormatData should be used only for accessing extra
* resources required by JSR 310.
--- a/src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. 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
@@ -40,12 +40,14 @@
package sun.util.locale.provider;
+import java.text.CompactNumberFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.spi.NumberFormatProvider;
import java.util.Currency;
import java.util.Locale;
+import java.util.Objects;
import java.util.Set;
/**
@@ -225,6 +227,49 @@
}
}
+ /**
+ * Returns a new {@code NumberFormat} instance which formats
+ * a number in its compact form for the specified
+ * {@code locale} and {@code formatStyle}.
+ *
+ * @param locale the desired locale
+ * @param formatStyle the style for formatting a number
+ * @throws NullPointerException if {@code locale} or {@code formatStyle}
+ * is {@code null}
+ * @throws IllegalArgumentException if {@code locale} isn't
+ * one of the locales returned from
+ * {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
+ * getAvailableLocales()}.
+ * @return a compact number formatter
+ *
+ * @see java.text.NumberFormat#getCompactNumberInstance(Locale,
+ * NumberFormat.Style)
+ * @since 12
+ */
+ @Override
+ public NumberFormat getCompactNumberInstance(Locale locale,
+ NumberFormat.Style formatStyle) {
+
+ Objects.requireNonNull(locale);
+ Objects.requireNonNull(formatStyle);
+
+ // Check for region override
+ Locale override = locale.getUnicodeLocaleType("nu") == null
+ ? CalendarDataUtility.findRegionOverride(locale)
+ : locale;
+
+ LocaleProviderAdapter adapter = LocaleProviderAdapter.forType(type);
+ LocaleResources resource = adapter.getLocaleResources(override);
+
+ String[] numberPatterns = resource.getNumberPatterns();
+ DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(override);
+ String[] cnPatterns = resource.getCNPatterns(formatStyle);
+
+ CompactNumberFormat format = new CompactNumberFormat(numberPatterns[0],
+ symbols, cnPatterns);
+ return format;
+ }
+
@Override
public Set<String> getAvailableLanguageTags() {
return langtags;
--- a/src/java.base/share/man/java.1 Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/man/java.1 Fri Dec 07 09:46:53 2018 -0500
@@ -1396,11 +1396,6 @@
\fB\-XX:NativeMemoryTracking\fR)\&. By default, this option is disabled and native memory tracking data is not printed\&.
.RE
.PP
-\-XX:+RelaxAccessControlCheck
-.RS 4
-Decreases the amount of access control checks in the verifier\&. By default, this option is disabled, and it is ignored (that is, treated as disabled) for classes with a recent bytecode version\&. You can enable it for classes with older versions of the bytecode\&.
-.RE
-.PP
\-XX:+ShowMessageBoxOnError
.RS 4
Enables displaying of a dialog box when the JVM experiences an irrecoverable error\&. This prevents the JVM from exiting and keeps the process active so that you can attach a debugger to it to investigate the cause of the error\&. By default, this option is disabled\&.
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. 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
@@ -36,6 +36,7 @@
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CoderResult;
import sun.nio.cs.HistoricallyNamedCharset;
+import sun.nio.cs.*;
public class IBM33722
extends Charset
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM964.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10532 +0,0 @@
-
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.CharBuffer;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM964
- extends Charset
- implements HistoricallyNamedCharset
-{
-
- public IBM964() {
- super("x-IBM964", ExtendedCharsets.aliasesFor("x-IBM964"));
- }
-
- public String historicalName() {
- return "Cp964";
- }
-
- public boolean contains(Charset cs) {
- return (cs instanceof IBM964);
- }
-
- public CharsetDecoder newDecoder() {
- return new Decoder(this);
- }
-
- public CharsetEncoder newEncoder() {
- return new Encoder(this);
- }
-
- protected static class Decoder extends CharsetDecoder {
- private final int SS2 = 0x8E;
- private final int SS3 = 0x8F;
-
- private String mappingTableG2;
-
- public Decoder(Charset cs) {
- super(cs, 1.0f, 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();
- assert (sp <= sl);
- sp = (sp <= sl ? sp : sl);
- char[] da = dst.array();
- int dp = dst.arrayOffset() + dst.position();
- int dl = dst.arrayOffset() + dst.limit();
- assert (dp <= dl);
- dp = (dp <= dl ? dp : dl);
-
- try {
- while (sp < sl) {
- int byte1, byte2;
- int inputSize = 1;
- char outputChar = '\uFFFD';
- byte1 = sa[sp] & 0xff;
-
- if (byte1 == SS2) {
- if (sl - sp < 4) {
- return CoderResult.UNDERFLOW;
- }
- byte1 = sa[sp + 1] & 0xff;
- inputSize = 2;
- if ( byte1 == 0xa2)
- mappingTableG2 = mappingTableG2a2;
- else if ( byte1 == 0xac)
- mappingTableG2 = mappingTableG2ac;
- else if ( byte1 == 0xad)
- mappingTableG2 = mappingTableG2ad;
- else
- return CoderResult.malformedForLength(2);
- byte1 = sa[sp + 2] & 0xff;
- if ( byte1 < 0xa1 || byte1 > 0xfe) {
- return CoderResult.malformedForLength(3);
- }
- byte2 = sa[sp + 3] & 0xff;
- if ( byte2 < 0xa1 || byte2 > 0xfe) {
- return CoderResult.malformedForLength(4);
- }
- inputSize = 4;
- outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
- } else if(byte1 == SS3 ) {
- return CoderResult.malformedForLength(1);
- } else if ( byte1 <= 0x9f ) { // valid single byte
- outputChar = byteToCharTable.charAt(byte1);
- } else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
- return CoderResult.malformedForLength(1);
- } else { // G1
- if (sl - sp < 2) {
- return CoderResult.UNDERFLOW;
- }
- byte2 = sa[sp + 1] & 0xff;
- inputSize = 2;
- if ( byte2 < 0xa1 || byte2 > 0xfe) {
- return CoderResult.malformedForLength(2);
- }
- outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
- }
- if (outputChar == '\uFFFD')
- return CoderResult.unmappableForLength(inputSize);
- if (dl - dp < 1)
- return CoderResult.OVERFLOW;
- da[dp++] = outputChar;
- sp += inputSize;
- }
- 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()) {
- int byte1, byte2;
- int inputSize = 1;
- char outputChar = '\uFFFD';
- byte1 = src.get() & 0xff;
-
- if (byte1 == SS2) {
- if (src.remaining() < 3)
- return CoderResult.UNDERFLOW;
- byte1 = src.get() & 0xff;
- inputSize = 2;
- if ( byte1 == 0xa2)
- mappingTableG2 = mappingTableG2a2;
- else if ( byte1 == 0xac)
- mappingTableG2 = mappingTableG2ac;
- else if ( byte1 == 0xad)
- mappingTableG2 = mappingTableG2ad;
- else
- return CoderResult.malformedForLength(2);
- byte1 = src.get() & 0xff;
- if ( byte1 < 0xa1 || byte1 > 0xfe)
- return CoderResult.malformedForLength(3);
- byte2 = src.get() & 0xff;
- if ( byte2 < 0xa1 || byte2 > 0xfe)
- return CoderResult.malformedForLength(4);
- inputSize = 4;
- outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
- } else if (byte1 == SS3 ) {
- return CoderResult.malformedForLength(1);
- } else if ( byte1 <= 0x9f ) { // valid single byte
- outputChar = byteToCharTable.charAt(byte1);
- } else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
- return CoderResult.malformedForLength(1);
- } else { // G1
- if (src.remaining() < 1)
- return CoderResult.UNDERFLOW;
- byte2 = src.get() & 0xff;
- if ( byte2 < 0xa1 || byte2 > 0xfe) {
- return CoderResult.malformedForLength(2);
- }
- inputSize = 2;
- outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
- }
-
- if (outputChar == '\uFFFD')
- return CoderResult.unmappableForLength(inputSize);
- if (!dst.hasRemaining())
- return CoderResult.OVERFLOW;
- dst.put(outputChar);
- mark += inputSize;
- }
- return CoderResult.UNDERFLOW;
- } finally {
- src.position(mark);
- }
- }
-
- protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
- if (true && src.hasArray() && dst.hasArray())
- return decodeArrayLoop(src, dst);
- else
- return decodeBufferLoop(src, dst);
- }
-
- private final static String byteToCharTable;
- private final static String mappingTableG1;
- private final static String mappingTableG2a2;
- private final static String mappingTableG2ac;
- private final static String mappingTableG2ad;
-
- static {
- byteToCharTable =
- "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
- "\u0008\u0009\n\u000B\u000C\r\u000E\u000F" +
- "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
- "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
- "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
- "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
- "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
- "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
- "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
- "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
- "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
- "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
- "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
- "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
- "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
- "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
- "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
- "\u0088\u0089\u008A\u008B\u008C\u008D\uFFFD\uFFFD" +
- "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
- "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F"
- ;
- mappingTableG1 =
- "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A" +
- "\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52" +
- "\u00B7\uFE54\uFE55\uFE56\uFE57\uFE31\u2014\uFE32" +
- "\uFE58\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35" +
- "\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39" +
- "\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D" +
- "\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41" +
- "\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFE5B" +
- "\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D" +
- "\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7" +
- "\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605" +
- "\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105" +
- "\u203E\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E" +
- "\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7" +
- "\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267" +
- "\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64\uFE65" +
- "\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F\u22BF" +
- "\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642" +
- "\u2295\u2299\u2191\u2193\u2192\u2190\u2196\u2197" +
- "\u2199\u2198\u2225\uFF5C\uFF0F\uFF3C\u2215\uFE68" +
- "\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103" +
- "\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E" +
- "\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B" +
- "\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581" +
- "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258F" +
- "\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534" +
- "\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C" +
- "\u2510\u2514\u2518\u256D\u256E\u2570\u256F\u2550" +
- "\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571" +
- "\u2572\u2573\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15" +
- "\uFF16\uFF17\uFF18\uFF19\u2160\u2161\u2162\u2163" +
- "\u2164\u2165\u2166\u2167\u2168\u2169\u3021\u3022" +
- "\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u5341" +
- "\u5344\u5345\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26" +
- "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E" +
- "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36" +
- "\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44" +
- "\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C" +
- "\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54" +
- "\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u0391\u0392" +
- "\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A" +
- "\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3" +
- "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" +
- "\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA" +
- "\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" +
- "\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u3105\u3106" +
- "\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E" +
- "\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116" +
- "\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E" +
- "\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126" +
- "\u3127\u3128\u3129\u02D9\u02C9\u02CA\u02C7\u02CB" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461" +
- "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469" +
- "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B" +
- "\u247C\u247D\u2170\u2171\u2172\u2173\u2174\u2175" +
- "\u2176\u2177\u2178\u2179\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E28\u4E36\u4E3F" +
- "\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B" +
- "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9" +
- "\u5315\u531A\u5338\u5341\u535C\u5369\u5382\u53B6" +
- "\u53C8\u53E3\u56D7\u571F\u58EB\u590A\u5915\u5927" +
- "\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E" +
- "\u5C71\u5DDB\u5DE5\u5DF1\u5DFE\u5E72\u5E7A\u5E7F" +
- "\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73\u5FC3" +
- "\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4" +
- "\u65B9\u65E0\u65E5\u66F0\u6708\u6728\u6B20\u6B62" +
- "\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14\u6C34" +
- "\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B" +
- "\u72AC\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528" +
- "\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF\u76EE" +
- "\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB" +
- "\u7AF9\u7C73\u7CF8\u7F36\u7F51\u7F8A\u7FBD\u8001" +
- "\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA\u81F3" +
- "\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D" +
- "\u866B\u8840\u884C\u8863\u897E\u898B\u89D2\u8A00" +
- "\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70\u8DB3" +
- "\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6" +
- "\u91CC\u91D1\u9577\u9580\u961C\u96B6\u96B9\u96E8" +
- "\u9752\u975E\u9762\u9769\u97CB\u97ED\u97F3\u9801" +
- "\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8" +
- "\u9ADF\u9B25\u9B2F\u9B32\u9B3C\u9B5A\u9CE5\u9E75" +
- "\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9\u9EFD" +
- "\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C" +
- "\u9FA0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2400\u2401" +
- "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409" +
- "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411" +
- "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419" +
- "\u241A\u241B\u241C\u241D\u241E\u241F\u2421\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D" +
- "\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200" +
- "\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B" +
- "\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F" +
- "\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9" +
- "\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51" +
- "\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5" +
- "\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13" +
- "\u624D\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B" +
- "\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1" +
- "\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4" +
- "\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6" +
- "\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339" +
- "\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD" +
- "\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24" +
- "\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3" +
- "\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4" +
- "\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79" +
- "\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236" +
- "\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\u4E16" +
- "\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5" +
- "\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9" +
- "\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA" +
- "\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D" +
- "\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB" +
- "\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC" +
- "\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0" +
- "\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\u592E\u5931" +
- "\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6" +
- "\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5" +
- "\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E" +
- "\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10" +
- "\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC" +
- "\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532" +
- "\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2" +
- "\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52" +
- "\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09" +
- "\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2" +
- "\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149" +
- "\u5147\u5146\u5148\u5168\u5171\u518D\u51B0\u5217" +
- "\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320" +
- "\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401" +
- "\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406" +
- "\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D" +
- "\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984" +
- "\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58" +
- "\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE" +
- "\u5E06\u5E76\u5E74\u5F0F\u5F1B\u5FD9\u5FD6\u620E" +
- "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9" +
- "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734" +
- "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57" +
- "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D" +
- "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8" +
- "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033" +
- "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC" +
- "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840" +
- "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F" +
- "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50" +
- "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46" +
- "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D" +
- "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7" +
- "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA" +
- "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E" +
- "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442" +
- "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435" +
- "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C" +
- "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D" +
- "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E" +
- "\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D" +
- "\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B" +
- "\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E" +
- "\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87" +
- "\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79" +
- "\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA" +
- "\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289" +
- "\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F" +
- "\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B" +
- "\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751" +
- "\u675C\u6756\u675E\u6749\u6746\u6760\u6753\u6757" +
- "\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89" +
- "\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68" +
- "\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86" +
- "\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D" +
- "\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C" +
- "\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0" +
- "\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098" +
- "\u809B\u809A\u80B2\u826F\u8292\u828B\u828D\u898B" +
- "\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70" +
- "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5" +
- "\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149" +
- "\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26" +
- "\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F" +
- "\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86" +
- "\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E" +
- "\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177" +
- "\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A" +
- "\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354" +
- "\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4" +
- "\u53D7\u5473\u5475\u5496\u5478\u5495\u5480\u547B" +
- "\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476" +
- "\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA" +
- "\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C" +
- "\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB" +
- "\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB" +
- "\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64" +
- "\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A" +
- "\u5C48\u5C45\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB" +
- "\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11" +
- "\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26" +
- "\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0" +
- "\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016" +
- "\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216" +
- "\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4" +
- "\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4" +
- "\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7" +
- "\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6" +
- "\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613" +
- "\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A" +
- "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C" +
- "\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F" +
- "\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A" +
- "\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3" +
- "\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE" +
- "\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9" +
- "\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1" +
- "\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\u7095" +
- "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248" +
- "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9" +
- "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A" +
- "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940" +
- "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54" +
- "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1" +
- "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D" +
- "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1" +
- "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7" +
- "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1" +
- "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580" +
- "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8" +
- "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF" +
- "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8" +
- "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA" +
- "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E" +
- "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9" +
- "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC" +
- "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7" +
- "\u54C2\u54BD\u54AA\u54C1\u54C4\u54C8\u54AF\u54AB" +
- "\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B" +
- "\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951" +
- "\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8" +
- "\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69" +
- "\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F" +
- "\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F" +
- "\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88" +
- "\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D" +
- "\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062" +
- "\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC" +
- "\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307" +
- "\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4\u6311\u6302" +
- "\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620" +
- "\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF" +
- "\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5" +
- "\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8" +
- "\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2" +
- "\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9" +
- "\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E" +
- "\u6D17\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39" +
- "\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB" +
- "\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4" +
- "\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7" +
- "\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D" +
- "\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2" +
- "\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3" +
- "\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC" +
- "\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949" +
- "\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F" +
- "\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09" +
- "\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8010\u800D" +
- "\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC" +
- "\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222" +
- "\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5" +
- "\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4" +
- "\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679" +
- "\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02" +
- "\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC" +
- "\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\u8FED\u8FEB\u8FE4" +
- "\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD" +
- "\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB" +
- "\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999" +
- "\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025" +
- "\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012" +
- "\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B" +
- "\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B" +
- "\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6" +
- "\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F" +
- "\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC" +
- "\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1" +
- "\u5509\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F" +
- "\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F" +
- "\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B" +
- "\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09" +
- "\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5" +
- "\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD" +
- "\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE" +
- "\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91" +
- "\u5F90\u6059\u6063\u6065\u6050\u6055\u606D\u6069" +
- "\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085" +
- "\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F" +
- "\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D" +
- "\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599" +
- "\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C" +
- "\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838" +
- "\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3" +
- "\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C" +
- "\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89" +
- "\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A" +
- "\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93" +
- "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A" +
- "\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9" +
- "\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8" +
- "\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE" +
- "\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7" +
- "\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B" +
- "\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728" +
- "\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\u7825" +
- "\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F" +
- "\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7" +
- "\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06" +
- "\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22" +
- "\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B" +
- "\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8004\u8018" +
- "\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0" +
- "\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD" +
- "\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A" +
- "\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A" +
- "\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339" +
- "\u8336\u8317\u8340\u8331\u8328\u8343\u8654\u868A" +
- "\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870" +
- "\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E" +
- "\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11" +
- "\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2" +
- "\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA" +
- "\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD" +
- "\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC" +
- "\u91D9\u9583\u9662\u9663\u9661\u965B\u965D\u9664" +
- "\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25" +
- "\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043" +
- "\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075" +
- "\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195" +
- "\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310" +
- "\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546" +
- "\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531" +
- "\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C" +
- "\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709" +
- "\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802" +
- "\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49" +
- "\u5A66\u5A6A\u5A40\u5A3C\u5A62\u5A5A\u5A46\u5A4A" +
- "\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09" +
- "\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E" +
- "\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24" +
- "\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7" +
- "\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C" +
- "\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0" +
- "\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4" +
- "\u60E6\u60BD\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8" +
- "\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B" +
- "\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377" +
- "\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B" +
- "\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392" +
- "\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556" +
- "\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554" +
- "\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D" +
- "\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B" +
- "\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1" +
- "\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885" +
- "\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA" +
- "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2" +
- "\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB" +
- "\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5" +
- "\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA" +
- "\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF" +
- "\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D" +
- "\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405" +
- "\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\u74F7" +
- "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4" +
- "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB" +
- "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843" +
- "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20" +
- "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92" +
- "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C" +
- "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31" +
- "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A" +
- "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124" +
- "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398" +
- "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393" +
- "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655" +
- "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB" +
- "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892" +
- "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23" +
- "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A" +
- "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66" +
- "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017" +
- "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F" +
- "\u9022\u9016\u901B\u9014\u90E8\u90ED\u90FD\u9157" +
- "\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589" +
- "\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677" +
- "\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803" +
- "\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D" +
- "\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700" +
- "\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB" +
- "\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D" +
- "\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583" +
- "\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC" +
- "\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A" +
- "\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9" +
- "\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7" +
- "\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B" +
- "\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D" +
- "\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C" +
- "\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6" +
- "\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4" +
- "\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F" +
- "\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6" +
- "\u63CD\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE" +
- "\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E" +
- "\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670" +
- "\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE" +
- "\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7" +
- "\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2" +
- "\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA" +
- "\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC" +
- "\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21" +
- "\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B" +
- "\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34" +
- "\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\u6E89" +
- "\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119" +
- "\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C" +
- "\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A" +
- "\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B" +
- "\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB" +
- "\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696" +
- "\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F" +
- "\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\u7A97\u7A96" +
- "\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54" +
- "\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50" +
- "\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62" +
- "\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085" +
- "\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E" +
- "\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8" +
- "\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4" +
- "\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA" +
- "\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B" +
- "\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE" +
- "\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60" +
- "\u8A55\u8A5E\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46" +
- "\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC" +
- "\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6" +
- "\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB" +
- "\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC" +
- "\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102" +
- "\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215" +
- "\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594" +
- "\u958F\u958B\u9591\u9593\u9592\u958E\u968A\u968E" +
- "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1" +
- "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805" +
- "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED" +
- "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5" +
- "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF" +
- "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2" +
- "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC" +
- "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5" +
- "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858" +
- "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862" +
- "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD" +
- "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79" +
- "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F" +
- "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E" +
- "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106" +
- "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D" +
- "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416" +
- "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687" +
- "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D" +
- "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A" +
- "\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963" +
- "\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2" +
- "\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5" +
- "\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C" +
- "\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169" +
- "\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165" +
- "\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345" +
- "\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441" +
- "\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0" +
- "\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE" +
- "\u76DF\u775B\u776B\u7766\u775E\u7763\u7779\u776A" +
- "\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0" +
- "\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F" +
- "\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20" +
- "\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60" +
- "\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91" +
- "\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9" +
- "\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170" +
- "\u8178\u8165\u816E\u8173\u816B\u8179\u817A\u8166" +
- "\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466" +
- "\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463" +
- "\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713" +
- "\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706" +
- "\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD" +
- "\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72" +
- "\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0" +
- "\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B" +
- "\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8" +
- "\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8" +
- "\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03" +
- "\u8F09\u8EFE\u8F0A\u8F9F\u8FB2\u904B\u904A\u9053" +
- "\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E" +
- "\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A" +
- "\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E" +
- "\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245" +
- "\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD" +
- "\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756" +
- "\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C" +
- "\u98FC\u98F4\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1" +
- "\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5" +
- "\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE" +
- "\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE" +
- "\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D" +
- "\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718" +
- "\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885" +
- "\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1" +
- "\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE" +
- "\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF" +
- "\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57" +
- "\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147" +
- "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158" +
- "\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F" +
- "\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1" +
- "\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995" +
- "\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB" +
- "\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3" +
- "\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4" +
- "\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\u6EFF" +
- "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B" +
- "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7" +
- "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292" +
- "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D" +
- "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1" +
- "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7" +
- "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31" +
- "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75" +
- "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9" +
- "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0" +
- "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5" +
- "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1" +
- "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188" +
- "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E" +
- "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2" +
- "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1" +
- "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718" +
- "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8" +
- "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3" +
- "\u8A8D\u8AA1\u8A93\u8AA4\u8AAA\u8AA5\u8AA8\u8A98" +
- "\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1" +
- "\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15" +
- "\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E" +
- "\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178" +
- "\u9177\u9174\u9278\u92AC\u9280\u9285\u9298\u9296" +
- "\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8" +
- "\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC" +
- "\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF" +
- "\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0" +
- "\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B" +
- "\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108" +
- "\u5109\u5105\u51DC\u5287\u5288\u5289\u528D\u528A" +
- "\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634" +
- "\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630" +
- "\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6" +
- "\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE" +
- "\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62" +
- "\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0" +
- "\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D" +
- "\u6155\u6182\u617C\u6170\u616B\u617E\u61A7\u6190" +
- "\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E" +
- "\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0" +
- "\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB" +
- "\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578" +
- "\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01" +
- "\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02" +
- "\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6" +
- "\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D" +
- "\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97" +
- "\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1" +
- "\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483" +
- "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626" +
- "\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C" +
- "\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5" +
- "\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B" +
- "\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7" +
- "\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB" +
- "\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9" +
- "\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\u7FE9" +
- "\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517" +
- "\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523" +
- "\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774" +
- "\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C" +
- "\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915" +
- "\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8" +
- "\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6" +
- "\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6" +
- "\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1" +
- "\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F" +
- "\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F" +
- "\u8F29\u8F26\u8F2A\u8F1C\u8F1E\u8F25\u9069\u906E" +
- "\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187" +
- "\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92E4" +
- "\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD" +
- "\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B" +
- "\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912" +
- "\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2" +
- "\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77" +
- "\u9B6F\u9D06\u9D09\u9D03\u9EA9\u9EBE\u9ECE\u58A8" +
- "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA" +
- "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669" +
- "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C" +
- "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D" +
- "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9" +
- "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5" +
- "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2" +
- "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9" +
- "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59" +
- "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47" +
- "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1" +
- "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9" +
- "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2" +
- "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4" +
- "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C" +
- "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E" +
- "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D" +
- "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9" +
- "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A" +
- "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10" +
- "\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9" +
- "\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548" +
- "\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783" +
- "\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925" +
- "\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1" +
- "\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7" +
- "\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4" +
- "\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F" +
- "\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072" +
- "\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333" +
- "\u932F\u9322\u92FC\u932B\u9304\u931A\u9310\u9326" +
- "\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA" +
- "\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B" +
- "\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D" +
- "\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A" +
- "\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28" +
- "\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8" +
- "\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5" +
- "\u568E\u5680\u5690\u5685\u5687\u568F\u58D5\u58D3" +
- "\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68" +
- "\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9" +
- "\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA" +
- "\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED" +
- "\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2" +
- "\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C" +
- "\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB" +
- "\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5" +
- "\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED" +
- "\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9" +
- "\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3" +
- "\u77AA\u77B0\u77AC\u77A7\u77AD\u77EF\u78F7\u78FA" +
- "\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07" +
- "\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE" +
- "\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37" +
- "\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34" +
- "\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC" +
- "\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA" +
- "\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209" +
- "\u8271\u85AA\u8584\u857E\u859C\u8591\u8594\u85AF" +
- "\u859B\u8587\u85A8\u858A\u85A6\u8667\u87C0\u87D1" +
- "\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB" +
- "\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17" +
- "\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41" +
- "\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8" +
- "\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45" +
- "\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139" +
- "\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A" +
- "\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A" +
- "\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8" +
- "\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935" +
- "\u9A01\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F" +
- "\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B" +
- "\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5E\u61E3" +
- "\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7" +
- "\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8" +
- "\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B" +
- "\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE" +
- "\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658" +
- "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61" +
- "\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E" +
- "\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61" +
- "\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD" +
- "\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0" +
- "\u85BA\u85B9\u87EF\u87EC\u87F2\u87E0\u8986\u89B2" +
- "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59" +
- "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D" +
- "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A" +
- "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A" +
- "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9" +
- "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D" +
- "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D" +
- "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E" +
- "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D" +
- "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u56A8\u58DE" +
- "\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6" +
- "\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA" +
- "\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018" +
- "\u7206\u720D\u7258\u72A2\u7378\u737A\u74BD\u74CA" +
- "\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1" +
- "\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40" +
- "\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7E73\u7F85\u7FB6" +
- "\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4" +
- "\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960" +
- "\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A" +
- "\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72" +
- "\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD" +
- "\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3" +
- "\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4" +
- "\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761" +
- "\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945\u9949" +
- "\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89" +
- "\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4" +
- "\u52F8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43" +
- "\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519" +
- "\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B" +
- "\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7" +
- "\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D" +
- "\u7E7C\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9" +
- "\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815" +
- "\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F" +
- "\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4" +
- "\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952" +
- "\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D" +
- "\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137" +
- "\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC" +
- "\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA" +
- "\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3" +
- "\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823" +
- "\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\u8B77" +
- "\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA" +
- "\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2" +
- "\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45" +
- "\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25" +
- "\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C" +
- "\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F" +
- "\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051" +
- "\u7058\u7380\u74E4\u758A\u766E\u766C\u79B3\u7C60" +
- "\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80" +
- "\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451" +
- "\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55" +
- "\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3" +
- "\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200" +
- "\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64" +
- "\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F" +
- "\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768" +
- "\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1" +
- "\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9" +
- "\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836" +
- "\u8839\u8862\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0" +
- "\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22" +
- "\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77" +
- "\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0" +
- "\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23" +
- "\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65" +
- "\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77" +
- "\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31" +
- "\u9E1B\u9E1E\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD"
- ;
- mappingTableG2a2 =
- "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47" +
- "\u4E8D\u56D7\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E" +
- "\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9" +
- "\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC" +
- "\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1" +
- "\u4EDD\u4EDA\u520C\u5209\u531C\u534C\u5722\u5723" +
- "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73" +
- "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\u6C36" +
- "\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A" +
- "\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00" +
- "\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04" +
- "\u4EF4\u4F12\u51B1\u5213\u5210\u52A6\u5322\u531F" +
- "\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734" +
- "\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F" +
- "\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF" +
- "\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF" +
- "\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260" +
- "\u625A\u6265\u6537\u65EF\u65EE\u673E\u6739\u6738" +
- "\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52" +
- "\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C\u7071\u725E" +
- "\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278" +
- "\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097" +
- "\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56" +
- "\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52" +
- "\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F" +
- "\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363" +
- "\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445" +
- "\u5419\u541C\u5425\u5418\u543D\u544F\u5441\u5428" +
- "\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C" +
- "\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0" +
- "\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E" +
- "\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89" +
- "\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E" +
- "\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78" +
- "\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3" +
- "\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000" +
- "\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287" +
- "\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D" +
- "\u6272\u6274\u65F0\u65F4\u65F3\u65F2\u65F5\u6745" +
- "\u6747\u6759\u6755\u674C\u6748\u675D\u674D\u675A" +
- "\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84" +
- "\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87" +
- "\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074" +
- "\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA" +
- "\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539" +
- "\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090" +
- "\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293" +
- "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1" +
- "\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D" +
- "\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76" +
- "\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A" +
- "\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92" +
- "\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235" +
- "\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C" +
- "\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488" +
- "\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D" +
- "\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7" +
- "\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776" +
- "\u5780\u5775\u577B\u5773\u5774\u5762\u5768\u577D" +
- "\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC" +
- "\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0" +
- "\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44" +
- "\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC" +
- "\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5" +
- "\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22" +
- "\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5" +
- "\u602D\u6026\u6019\u6032\u600B\u6034\u600A\u6017" +
- "\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E" +
- "\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD" +
- "\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3" +
- "\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB" +
- "\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B" +
- "\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785" +
- "\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784" +
- "\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783" +
- "\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E" +
- "\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6" +
- "\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3" +
- "\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D" +
- "\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9" +
- "\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086" +
- "\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6" +
- "\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC" +
- "\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC" +
- "\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598" +
- "\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9" +
- "\u77FB\u77FA\u77F7\u7942\u793F\u79C5\u7A78\u7A7B" +
- "\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8" +
- "\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298" +
- "\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4" +
- "\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2" +
- "\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3" +
- "\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3" +
- "\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5" +
- "\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9" +
- "\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9" +
- "\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397" +
- "\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF" +
- "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6" +
- "\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0" +
- "\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B" +
- "\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4" +
- "\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD" +
- "\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB" +
- "\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8" +
- "\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\u5CDE" +
- "\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF" +
- "\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22" +
- "\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3" +
- "\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054" +
- "\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C" +
- "\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E" +
- "\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303" +
- "\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313" +
- "\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA" +
- "\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622" +
- "\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F" +
- "\u6710\u67C1\u67F2\u67C8\u67BA\u67DC\u67BB\u67F8" +
- "\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5" +
- "\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9" +
- "\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC" +
- "\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA" +
- "\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0" +
- "\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F" +
- "\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A" +
- "\u6D11\u6D00\u6D1D\u6D42\u6D01\u6D18\u6D37\u6D03" +
- "\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09" +
- "\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4" +
- "\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273" +
- "\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6" +
- "\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6" +
- "\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6" +
- "\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7" +
- "\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A" +
- "\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812" +
- "\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A" +
- "\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6" +
- "\u79CE\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78" +
- "\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58" +
- "\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037" +
- "\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5" +
- "\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7" +
- "\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9" +
- "\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4" +
- "\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0" +
- "\u82EA\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674" +
- "\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3" +
- "\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1" +
- "\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8" +
- "\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E" +
- "\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5" +
- "\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C" +
- "\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194" +
- "\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A" +
- "\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E" +
- "\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A" +
- "\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\u550A" +
- "\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701" +
- "\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD" +
- "\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1" +
- "\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F" +
- "\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC" +
- "\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7" +
- "\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC" +
- "\u5F33\u5F30\u5F67\u605D\u605A\u6067\u6041\u60A2" +
- "\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B" +
- "\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310" +
- "\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339" +
- "\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354" +
- "\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357" +
- "\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2" +
- "\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A" +
- "\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831" +
- "\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834" +
- "\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A" +
- "\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D" +
- "\u8082\u6B88\u6BE6\u6BE4\u6BE8\u6BE3\u6BE2\u6BE7" +
- "\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92" +
- "\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F" +
- "\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F" +
- "\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84" +
- "\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3" +
- "\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE" +
- "\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE" +
- "\u70E1\u7242\u7278\u7277\u7276\u7300\u72FA\u72F4" +
- "\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5" +
- "\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB" +
- "\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF" +
- "\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB" +
- "\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D" +
- "\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719" +
- "\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F" +
- "\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831" +
- "\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB" +
- "\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD" +
- "\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8" +
- "\u7B10\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E" +
- "\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D" +
- "\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13" +
- "\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60" +
- "\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016" +
- "\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB" +
- "\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319" +
- "\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322" +
- "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316" +
- "\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C" +
- "\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652" +
- "\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697" +
- "\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7" +
- "\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844" +
- "\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F" +
- "\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B" +
- "\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1" +
- "\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC" +
- "\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5" +
- "\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F" +
- "\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF" +
- "\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053" +
- "\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A" +
- "\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064" +
- "\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B" +
- "\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575" +
- "\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562" +
- "\u5536\u5535\u5530\u5552\u5545\u550C\u5532\u5565" +
- "\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A" +
- "\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800" +
- "\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807" +
- "\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC" +
- "\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D" +
- "\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38" +
- "\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64" +
- "\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E" +
- "\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51" +
- "\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59" +
- "\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D" +
- "\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F\u5D2E" +
- "\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36" +
- "\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE" +
- "\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD" +
- "\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD" +
- "\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E" +
- "\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390" +
- "\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4" +
- "\u633B\u639F\u6378\u6385\u6381\u6391\u638D\u6370" +
- "\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662" +
- "\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE" +
- "\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874" +
- "\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA" +
- "\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889" +
- "\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36" +
- "\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C" +
- "\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9" +
- "\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF" +
- "\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA" +
- "\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9" +
- "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB" +
- "\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104" +
- "\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8" +
- "\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F" +
- "\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF" +
- "\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401" +
- "\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B" +
- "\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\u75CB" +
- "\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F" +
- "\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B" +
- "\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826" +
- "\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B" +
- "\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94" +
- "\u7A90\u7B35\u7B3B\u7B34\u7B25\u7B30\u7B22\u7B24" +
- "\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F" +
- "\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3" +
- "\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29" +
- "\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63" +
- "\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0" +
- "\u7FD1\u7FC7\u7FCF\u7FC9\u801F\u801E\u801B\u8047" +
- "\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F" +
- "\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211" +
- "\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3" +
- "\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381" +
- "\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C" +
- "\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388" +
- "\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u8659" +
- "\u8656\u86BF\u86B7\u86C2\u86C1\u86C5\u86BA\u86B0" +
- "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC" +
- "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2" +
- "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899" +
- "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982" +
- "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39" +
- "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79" +
- "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD" +
- "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C" +
- "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3" +
- "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153" +
- "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9" +
- "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588" +
- "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804" +
- "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3" +
- "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082" +
- "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591" +
- "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588" +
- "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C" +
- "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837" +
- "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825" +
- "\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838" +
- "\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A" +
- "\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95" +
- "\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9" +
- "\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA" +
- "\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30" +
- "\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51" +
- "\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59" +
- "\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40" +
- "\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9" +
- "\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\u60F2\u610A" +
- "\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1" +
- "\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A" +
- "\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3" +
- "\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5" +
- "\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3" +
- "\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9" +
- "\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C" +
- "\u659D\u659E\u65AE\u65D0\u65D2\u667C\u666C\u667B" +
- "\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3" +
- "\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6" +
- "\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1" +
- "\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6" +
- "\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A" +
- "\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1" +
- "\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B" +
- "\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0" +
- "\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49" +
- "\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41" +
- "\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B" +
- "\u6E03\u6E2E\u6E5E\u6E68\u6E5C\u6E61\u6E31\u6E28" +
- "\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65" +
- "\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66" +
- "\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E" +
- "\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A" +
- "\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B" +
- "\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332" +
- "\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430" +
- "\u742B\u7416\u741A\u7421\u742D\u7431\u7424\u7423" +
- "\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C" +
- "\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7" +
- "\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745" +
- "\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864" +
- "\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869" +
- "\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02" +
- "\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A" +
- "\u7B47\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45" +
- "\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53" +
- "\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52" +
- "\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65" +
- "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050" +
- "\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D" +
- "\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204" +
- "\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423" +
- "\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410" +
- "\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5" +
- "\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9" +
- "\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\u83D5" +
- "\u83FA\u83C7\u83D1\u83EA\u8413\u839A\u83C3\u83EC" +
- "\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE" +
- "\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD" +
- "\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848" +
- "\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE" +
- "\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995" +
- "\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39" +
- "\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48" +
- "\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA" +
- "\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8" +
- "\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9" +
- "\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6" +
- "\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1" +
- "\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C" +
- "\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100" +
- "\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160" +
- "\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C" +
- "\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202" +
- "\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D" +
- "\u958C\u9590\u9687\u967E\u9688\u9689\u9683\u9680" +
- "\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E" +
- "\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6" +
- "\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8" +
- "\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6" +
- "\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB" +
- "\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4" +
- "\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6" +
- "\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868" +
- "\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D" +
- "\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7" +
- "\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF" +
- "\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6" +
- "\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33" +
- "\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68" +
- "\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B" +
- "\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD" +
- "\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E" +
- "\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223" +
- "\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409" +
- "\u6420\u6424\u6433\u6443\u641F\u6415\u6418\u6439" +
- "\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441" +
- "\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B" +
- "\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3" +
- "\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694" +
- "\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971" +
- "\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A" +
- "\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0" +
- "\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958" +
- "\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F" +
- "\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45" +
- "\u6B43\u6B42\u6B48\u6B41\u6B9B\u6BFB\u6BFC\u6BF9" +
- "\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F" +
- "\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD" +
- "\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF" +
- "\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E" +
- "\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97" +
- "\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141" +
- "\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158" +
- "\u7143\u714B\u7170\u715F\u7150\u7153\u7144\u714D" +
- "\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C" +
- "\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A" +
- "\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E" +
- "\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD" +
- "\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7" +
- "\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED" +
- "\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760" +
- "\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D" +
- "\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885" +
- "\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B" +
- "\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12" +
- "\u7A17\u7A15\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2" +
- "\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72" +
- "\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63" +
- "\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F" +
- "\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94" +
- "\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C" +
- "\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160" +
- "\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E" +
- "\u8176\u8167\u816F\u8144\u8161\u821D\u8249\u8244" +
- "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479" +
- "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430" +
- "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507" +
- "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432" +
- "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F" +
- "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E" +
- "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B" +
- "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C" +
- "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701" +
- "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE" +
- "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5" +
- "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86" +
- "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83" +
- "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64" +
- "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91" +
- "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92" +
- "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3" +
- "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01" +
- "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F" +
- "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116" +
- "\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230" +
- "\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A" +
- "\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236" +
- "\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E" +
- "\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B" +
- "\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8" +
- "\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E" +
- "\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD" +
- "\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6" +
- "\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4" +
- "\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\u51D8\u5280" +
- "\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C" +
- "\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA" +
- "\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898" +
- "\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891" +
- "\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE" +
- "\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED" +
- "\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD" +
- "\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\u5BE3\u5C63\u5D82" +
- "\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89" +
- "\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59" +
- "\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9" +
- "\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128" +
- "\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C" +
- "\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A" +
- "\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B" +
- "\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466" +
- "\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460" +
- "\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477" +
- "\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722" +
- "\u69B1\u69B6\u69C9\u69A0\u69CE\u6996\u69B0\u69AC" +
- "\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE" +
- "\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA" +
- "\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9" +
- "\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D" +
- "\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE" +
- "\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E" +
- "\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12" +
- "\u6EED\u6F0A\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40" +
- "\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05" +
- "\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D" +
- "\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185" +
- "\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253" +
- "\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462" +
- "\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502" +
- "\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611" +
- "\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E" +
- "\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD" +
- "\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2" +
- "\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993" +
- "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F" +
- "\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C" +
- "\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E" +
- "\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF" +
- "\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1" +
- "\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC" +
- "\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9" +
- "\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\u8024" +
- "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C" +
- "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE" +
- "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD" +
- "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2" +
- "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6" +
- "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB" +
- "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740" +
- "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741" +
- "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712" +
- "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724" +
- "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA" +
- "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB" +
- "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB" +
- "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69" +
- "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D" +
- "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00" +
- "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120" +
- "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A" +
- "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A" +
- "\u92A0\u9294\u92AA\u928D\u92A6\u929A\u92AB\u9279" +
- "\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2" +
- "\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7" +
- "\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1" +
- "\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782" +
- "\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD" +
- "\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9" +
- "\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7" +
- "\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5" +
- "\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6" +
- "\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1" +
- "\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649" +
- "\u5646\u5658\u565A\u5640\u5633\u563D\u562C\u563E" +
- "\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0" +
- "\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4" +
- "\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01" +
- "\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92" +
- "\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E" +
- "\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1" +
- "\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2" +
- "\u6189\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA" +
- "\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496" +
- "\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C" +
- "\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579" +
- "\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7" +
- "\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15" +
- "\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D" +
- "\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40" +
- "\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04" +
- "\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16" +
- "\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF" +
- "\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\u6F8D" +
- "\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76" +
- "\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94" +
- "\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90" +
- "\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A" +
- "\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9" +
- "\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C" +
- "\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F" +
- "\u7360\u735D\u735B\u7361\u735A\u7359\u7362\u7487" +
- "\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C" +
- "\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D" +
- "\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E" +
- "\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF" +
- "\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9" +
- "\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39" +
- "\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE" +
- "\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB" +
- "\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA" +
- "\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC" +
- "\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8" +
- "\u8064\u8067\u81A3\u819F\u819E\u8195\u81A2\u8199" +
- "\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251" +
- "\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D" +
- "\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508" +
- "\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3" +
- "\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D" +
- "\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7" +
- "\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B" +
- "\u8519\u852F\u8662\u8756\u8763\u8764\u8777\u87E1" +
- "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751" +
- "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F" +
- "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775" +
- "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B" +
- "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909" +
- "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6" +
- "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE" +
- "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E" +
- "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD" +
- "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25" +
- "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26" +
- "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A" +
- "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17" +
- "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129" +
- "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181" +
- "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9" +
- "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD" +
- "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6" +
- "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3" +
- "\u92B5\u92E1\u9325\u92C6\u92B4\u957C\u95AC\u95AB" +
- "\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702" +
- "\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D" +
- "\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908" +
- "\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD" +
- "\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB" +
- "\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1" +
- "\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75" +
- "\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF" +
- "\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04" +
- "\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A" +
- "\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\u5673" +
- "\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B" +
- "\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6" +
- "\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16" +
- "\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9" +
- "\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD" +
- "\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7" +
- "\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u5FBB\u619D\u61A8" +
- "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\u61BF" +
- "\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD" +
- "\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C" +
- "\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD" +
- "\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67" +
- "\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51" +
- "\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50" +
- "\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56" +
- "\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7" +
- "\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD" +
- "\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4" +
- "\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA" +
- "\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2\u6FC9\u6FAB" +
- "\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8" +
- "\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF" +
- "\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E" +
- "\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F" +
- "\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580" +
- "\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632" +
- "\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B" +
- "\u77A2\u77A3\u7795\u7799\u7797\u78DD\u78E9\u78E5" +
- "\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF" +
- "\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5" +
- "\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5" +
- "\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB" +
- "\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12" +
- "\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C" +
- "\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14" +
- "\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF" +
- "\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5" +
- "\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2" +
- "\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553" +
- "\u8561\u8558\u8540\u8546\u8564\u8541\u8562\u8544" +
- "\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E" +
- "\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554" +
- "\u8565\u856C\u8663\u8665\u8664\u87A4\u879B\u878F" +
- "\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779" +
- "\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794" +
- "\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E" +
- "\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F" +
- "\u89F1\u8AE0\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14" +
- "\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF" +
- "\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1" +
- "\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E" +
- "\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30" +
- "\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37" +
- "\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135" +
- "\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E" +
- "\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B" +
- "\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB" +
- "\u931D\u92FA\u9313\u92F9\u92F7\u9334\u9302\u9324" +
- "\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\u930B" +
- "\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE" +
- "\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4" +
- "\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8" +
- "\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E" +
- "\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9" +
- "\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9" +
- "\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B" +
- "\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\u9B7D\u9B88" +
- "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18" +
- "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE" +
- "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125" +
- "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D" +
- "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6" +
- "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C" +
- "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7" +
- "\u5E6C\u5E6A\u5FBE\u61C3\u61B5\u61BC\u61E7\u61E0" +
- "\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB" +
- "\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D" +
- "\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E" +
- "\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4\u6A91" +
- "\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD" +
- "\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED" +
- "\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1" +
- "\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E" +
- "\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1" +
- "\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643" +
- "\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2" +
- "\u77B7\u77B6\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD" +
- "\u7902\u78FB\u78FC\u78FF\u78F2\u7905\u78F9\u78FE" +
- "\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54" +
- "\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00" +
- "\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09" +
- "\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10" +
- "\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38" +
- "\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B" +
- "\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4" +
- "\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7" +
- "\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F" +
- "\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A" +
- "\u859E\u8577\u857C\u8589\u85A1\u857A\u8578\u8557" +
- "\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2" +
- "\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F" +
- "\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9" +
- "\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7" +
- "\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD" +
- "\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952" +
- "\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E" +
- "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12" +
- "\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A" +
- "\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9" +
- "\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43" +
- "\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199" +
- "\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364" +
- "\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350" +
- "\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357" +
- "\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E" +
- "\u9363\u9367\u934E\u9359\u95C7\u95C0\u95C9\u95C3" +
- "\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718" +
- "\u971D\u9719\u979A\u97A1\u979C\u979E\u979D\u97D5" +
- "\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843" +
- "\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D" +
- "\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4" +
- "\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC" +
- "\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A" +
- "\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86" +
- "\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E" +
- "\u9D2F\u9D31\u9D38\u9D30\u9D45\u9D42\u9D43\u9D3E" +
- "\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D" +
- "\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22" +
- "\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697" +
- "\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0" +
- "\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA" +
- "\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8" +
- "\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8" +
- "\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7" +
- "\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C" +
- "\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB" +
- "\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203" +
- "\u71FD\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6" +
- "\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650" +
- "\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA" +
- "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD" +
- "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D" +
- "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50" +
- "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57" +
- "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2" +
- "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2" +
- "\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE" +
- "\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7" +
- "\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA" +
- "\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED" +
- "\u87D8\u87E3\u87D7\u87D9\u8801\u87F4\u87E8\u87DD" +
- "\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949" +
- "\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F" +
- "\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E" +
- "\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98" +
- "\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60" +
- "\u8E57\u8E56\u8E5E\u8E65\u8E67\u8E5B\u8E5A\u8E61" +
- "\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128" +
- "\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA" +
- "\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7" +
- "\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F" +
- "\u9380\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4" +
- "\u93A3\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2" +
- "\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE" +
- "\u97A8\u97AB\u97A4\u97AA\u97A2\u97A5\u97D7\u97D9" +
- "\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941" +
- "\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11" +
- "\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04" +
- "\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6" +
- "\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4" +
- "\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B" +
- "\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58" +
- "\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25" +
- "\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135" +
- "\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA" +
- "\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F" +
- "\u5DC3\u5E70\u5FBF\u61FB\u6507\u6510\u650D\u6509" +
- "\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0" +
- "\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB" +
- "\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027" +
- "\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017" +
- "\u7024\u701C\u720C\u720A\u7207\u7202\u7205\u72A5" +
- "\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3" +
- "\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B" +
- "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33" +
- "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75" +
- "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68" +
- "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078" +
- "\u81D7\u81D5\u820B\u8264\u8261\u8263\u85EB\u85F1" +
- "\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2" +
- "\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6" +
- "\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7" +
- "\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A" +
- "\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958" +
- "\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48" +
- "\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51" +
- "\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06" +
- "\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78" +
- "\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F" +
- "\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE" +
- "\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC" +
- "\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5" +
- "\u93C4\u93CE\u93C0\u93D2\u93A5\u93E7\u957D\u95DA" +
- "\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\u97B3" +
- "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D" +
- "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943" +
- "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B" +
- "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2" +
- "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0" +
- "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC" +
- "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81" +
- "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B" +
- "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85" +
- "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68" +
- "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D" +
- "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3" +
- "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9" +
- "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4" +
- "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF" +
- "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038" +
- "\u703F\u703A\u7039\u702A\u7040\u703B\u7033\u7041" +
- "\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA" +
- "\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925" +
- "\u7923\u7927\u7928\u7924\u7929\u79B2\u7A6E\u7A6C" +
- "\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE" +
- "\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB" +
- "\u81D9\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B" +
- "\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819" +
- "\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9" +
- "\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67" +
- "\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57" +
- "\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5" +
- "\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414" +
- "\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400" +
- "\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8" +
- "\u943C\u940A\u93FF\u93FC\u940C\u93F6\u9411\u9406" +
- "\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD" +
- "\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950" +
- "\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31" +
- "\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7" +
- "\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7" +
- "\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17" +
- "\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98" +
- "\u9D90\u9D9B\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1" +
- "\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96" +
- "\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7" +
- "\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59" +
- "\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE" +
- "\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02" +
- "\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048" +
- "\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517" +
- "\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2" +
- "\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB" +
- "\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C" +
- "\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625" +
- "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A" +
- "\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45" +
- "\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E" +
- "\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B" +
- "\u9436\u9429\u943D\u9430\u9439\u942A\u9437\u942C" +
- "\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF" +
- "\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39" +
- "\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\u9A3F\u9ACD" +
- "\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D" +
- "\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7" +
- "\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5" +
- "\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8" +
- "\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C" +
- "\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E" +
- "\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971" +
- "\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526" +
- "\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057" +
- "\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9" +
- "\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57" +
- "\u7C5C\u7C59\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F" +
- "\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632" +
- "\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF" +
- "\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F" +
- "\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97" +
- "\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F" +
- "\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A" +
- "\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C" +
- "\u9A4F\u9A48\u9A4A\u9A49\u9A52\u9A50\u9AD0\u9B19" +
- "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44" +
- "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D" +
- "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC" +
- "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5" +
- "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B" +
- "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D" +
- "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525" +
- "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A" +
- "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66" +
- "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B" +
- "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973" +
- "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98" +
- "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E" +
- "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20" +
- "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59" +
- "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8" +
- "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2" +
- "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2" +
- "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F" +
- "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D" +
- "\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060" +
- "\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A" +
- "\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B" +
- "\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD" +
- "\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747" +
- "\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66" +
- "\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06" +
- "\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0" +
- "\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8" +
- "\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8" +
- "\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\u7E98\u7E9B" +
- "\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A" +
- "\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3" +
- "\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F" +
- "\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12" +
- "\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A" +
- "\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3" +
- "\u9474\u9478\u9476\u9475\u9A60\u9B2E\u9C74\u9C73" +
- "\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\u9FA4\u7068" +
- "\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C" +
- "\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB" +
- "\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207" +
- "\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69" +
- "\u9A68\u9E19\u864B\u8B9F\u9483\u9C79\u9EB7\u7675" +
- "\u9A6B\u9C7A\u9E1D\u7069\u706A\u7229\u9EA4\u9F7E" +
- "\u9F49\u9F98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD"
- ;
- mappingTableG2ac =
- "\uE000\uE001\uE002\uE003\uE004\uE005\uE006\uE007" +
- "\uE008\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F" +
- "\uE010\uE011\uE012\uE013\uE014\uE015\uE016\uE017" +
- "\uE018\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F" +
- "\uE020\uE021\uE022\uE023\uE024\uE025\uE026\uE027" +
- "\uE028\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F" +
- "\uE030\uE031\uE032\uE033\uE034\uE035\uE036\uE037" +
- "\uE038\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F" +
- "\uE040\uE041\uE042\uE043\uE044\uE045\uE046\uE047" +
- "\uE048\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F" +
- "\uE050\uE051\uE052\uE053\uE054\uE055\uE056\uE057" +
- "\uE058\uE059\uE05A\uE05B\uE05C\uE05D\uE05E\uE05F" +
- "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067" +
- "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F" +
- "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077" +
- "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F" +
- "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087" +
- "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F" +
- "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097" +
- "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F" +
- "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7" +
- "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF" +
- "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7" +
- "\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD\uE0BE\uE0BF" +
- "\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6\uE0C7" +
- "\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE\uE0CF" +
- "\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6\uE0D7" +
- "\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE\uE0DF" +
- "\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6\uE0E7" +
- "\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE\uE0EF" +
- "\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6\uE0F7" +
- "\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE\uE0FF" +
- "\uE100\uE101\uE102\uE103\uE104\uE105\uE106\uE107" +
- "\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E\uE10F" +
- "\uE110\uE111\uE112\uE113\uE114\uE115\uE116\uE117" +
- "\uE118\uE119\uE11A\uE11B\uE11C\uE11D\uE11E\uE11F" +
- "\uE120\uE121\uE122\uE123\uE124\uE125\uE126\uE127" +
- "\uE128\uE129\uE12A\uE12B\uE12C\uE12D\uE12E\uE12F" +
- "\uE130\uE131\uE132\uE133\uE134\uE135\uE136\uE137" +
- "\uE138\uE139\uE13A\uE13B\uE13C\uE13D\uE13E\uE13F" +
- "\uE140\uE141\uE142\uE143\uE144\uE145\uE146\uE147" +
- "\uE148\uE149\uE14A\uE14B\uE14C\uE14D\uE14E\uE14F" +
- "\uE150\uE151\uE152\uE153\uE154\uE155\uE156\uE157" +
- "\uE158\uE159\uE15A\uE15B\uE15C\uE15D\uE15E\uE15F" +
- "\uE160\uE161\uE162\uE163\uE164\uE165\uE166\uE167" +
- "\uE168\uE169\uE16A\uE16B\uE16C\uE16D\uE16E\uE16F" +
- "\uE170\uE171\uE172\uE173\uE174\uE175\uE176\uE177" +
- "\uE178\uE179\uE17A\uE17B\uE17C\uE17D\uE17E\uE17F" +
- "\uE180\uE181\uE182\uE183\uE184\uE185\uE186\uE187" +
- "\uE188\uE189\uE18A\uE18B\uE18C\uE18D\uE18E\uE18F" +
- "\uE190\uE191\uE192\uE193\uE194\uE195\uE196\uE197" +
- "\uE198\uE199\uE19A\uE19B\uE19C\uE19D\uE19E\uE19F" +
- "\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4\uE1A5\uE1A6\uE1A7" +
- "\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC\uE1AD\uE1AE\uE1AF" +
- "\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4\uE1B5\uE1B6\uE1B7" +
- "\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC\uE1BD\uE1BE\uE1BF" +
- "\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4\uE1C5\uE1C6\uE1C7" +
- "\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC\uE1CD\uE1CE\uE1CF" +
- "\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4\uE1D5\uE1D6\uE1D7" +
- "\uE1D8\uE1D9\uE1DA\uE1DB\uE1DC\uE1DD\uE1DE\uE1DF" +
- "\uE1E0\uE1E1\uE1E2\uE1E3\uE1E4\uE1E5\uE1E6\uE1E7" +
- "\uE1E8\uE1E9\uE1EA\uE1EB\uE1EC\uE1ED\uE1EE\uE1EF" +
- "\uE1F0\uE1F1\uE1F2\uE1F3\uE1F4\uE1F5\uE1F6\uE1F7" +
- "\uE1F8\uE1F9\uE1FA\uE1FB\uE1FC\uE1FD\uE1FE\uE1FF" +
- "\uE200\uE201\uE202\uE203\uE204\uE205\uE206\uE207" +
- "\uE208\uE209\uE20A\uE20B\uE20C\uE20D\uE20E\uE20F" +
- "\uE210\uE211\uE212\uE213\uE214\uE215\uE216\uE217" +
- "\uE218\uE219\uE21A\uE21B\uE21C\uE21D\uE21E\uE21F" +
- "\uE220\uE221\uE222\uE223\uE224\uE225\uE226\uE227" +
- "\uE228\uE229\uE22A\uE22B\uE22C\uE22D\uE22E\uE22F" +
- "\uE230\uE231\uE232\uE233\uE234\uE235\uE236\uE237" +
- "\uE238\uE239\uE23A\uE23B\uE23C\uE23D\uE23E\uE23F" +
- "\uE240\uE241\uE242\uE243\uE244\uE245\uE246\uE247" +
- "\uE248\uE249\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F" +
- "\uE250\uE251\uE252\uE253\uE254\uE255\uE256\uE257" +
- "\uE258\uE259\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F" +
- "\uE260\uE261\uE262\uE263\uE264\uE265\uE266\uE267" +
- "\uE268\uE269\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F" +
- "\uE270\uE271\uE272\uE273\uE274\uE275\uE276\uE277" +
- "\uE278\uE279\uE27A\uE27B\uE27C\uE27D\uE27E\uE27F" +
- "\uE280\uE281\uE282\uE283\uE284\uE285\uE286\uE287" +
- "\uE288\uE289\uE28A\uE28B\uE28C\uE28D\uE28E\uE28F" +
- "\uE290\uE291\uE292\uE293\uE294\uE295\uE296\uE297" +
- "\uE298\uE299\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F" +
- "\uE2A0\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7" +
- "\uE2A8\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF" +
- "\uE2B0\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7" +
- "\uE2B8\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF" +
- "\uE2C0\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7" +
- "\uE2C8\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF" +
- "\uE2D0\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7" +
- "\uE2D8\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF" +
- "\uE2E0\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7" +
- "\uE2E8\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF" +
- "\uE2F0\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7" +
- "\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF" +
- "\uE300\uE301\uE302\uE303\uE304\uE305\uE306\uE307" +
- "\uE308\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F" +
- "\uE310\uE311\uE312\uE313\uE314\uE315\uE316\uE317" +
- "\uE318\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F" +
- "\uE320\uE321\uE322\uE323\uE324\uE325\uE326\uE327" +
- "\uE328\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F" +
- "\uE330\uE331\uE332\uE333\uE334\uE335\uE336\uE337" +
- "\uE338\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F" +
- "\uE340\uE341\uE342\uE343\uE344\uE345\uE346\uE347" +
- "\uE348\uE349\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F" +
- "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357" +
- "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F" +
- "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367" +
- "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F" +
- "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377" +
- "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F" +
- "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387" +
- "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F" +
- "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397" +
- "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F" +
- "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7" +
- "\uE3A8\uE3A9\uE3AA\uE3AB\uE3AC\uE3AD\uE3AE\uE3AF" +
- "\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6\uE3B7" +
- "\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE\uE3BF" +
- "\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6\uE3C7" +
- "\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE\uE3CF" +
- "\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6\uE3D7" +
- "\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE\uE3DF" +
- "\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6\uE3E7" +
- "\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE\uE3EF" +
- "\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6\uE3F7" +
- "\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE\uE3FF" +
- "\uE400\uE401\uE402\uE403\uE404\uE405\uE406\uE407" +
- "\uE408\uE409\uE40A\uE40B\uE40C\uE40D\uE40E\uE40F" +
- "\uE410\uE411\uE412\uE413\uE414\uE415\uE416\uE417" +
- "\uE418\uE419\uE41A\uE41B\uE41C\uE41D\uE41E\uE41F" +
- "\uE420\uE421\uE422\uE423\uE424\uE425\uE426\uE427" +
- "\uE428\uE429\uE42A\uE42B\uE42C\uE42D\uE42E\uE42F" +
- "\uE430\uE431\uE432\uE433\uE434\uE435\uE436\uE437" +
- "\uE438\uE439\uE43A\uE43B\uE43C\uE43D\uE43E\uE43F" +
- "\uE440\uE441\uE442\uE443\uE444\uE445\uE446\uE447" +
- "\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E\uE44F" +
- "\uE450\uE451\uE452\uE453\uE454\uE455\uE456\uE457" +
- "\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E\uE45F" +
- "\uE460\uE461\uE462\uE463\uE464\uE465\uE466\uE467" +
- "\uE468\uE469\uE46A\uE46B\uE46C\uE46D\uE46E\uE46F" +
- "\uE470\uE471\uE472\uE473\uE474\uE475\uE476\uE477" +
- "\uE478\uE479\uE47A\uE47B\uE47C\uE47D\uE47E\uE47F" +
- "\uE480\uE481\uE482\uE483\uE484\uE485\uE486\uE487" +
- "\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E\uE48F" +
- "\uE490\uE491\uE492\uE493\uE494\uE495\uE496\uE497" +
- "\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E\uE49F" +
- "\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7" +
- "\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF" +
- "\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7" +
- "\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF" +
- "\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7" +
- "\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF" +
- "\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7" +
- "\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF" +
- "\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7" +
- "\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF" +
- "\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7" +
- "\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF" +
- "\uE500\uE501\uE502\uE503\uE504\uE505\uE506\uE507" +
- "\uE508\uE509\uE50A\uE50B\uE50C\uE50D\uE50E\uE50F" +
- "\uE510\uE511\uE512\uE513\uE514\uE515\uE516\uE517" +
- "\uE518\uE519\uE51A\uE51B\uE51C\uE51D\uE51E\uE51F" +
- "\uE520\uE521\uE522\uE523\uE524\uE525\uE526\uE527" +
- "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F" +
- "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537" +
- "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F" +
- "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547" +
- "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F" +
- "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557" +
- "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F" +
- "\uE560\uE561\uE562\uE563\uE564\uE565\uE566\uE567" +
- "\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F" +
- "\uE570\uE571\uE572\uE573\uE574\uE575\uE576\uE577" +
- "\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F" +
- "\uE580\uE581\uE582\uE583\uE584\uE585\uE586\uE587" +
- "\uE588\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F" +
- "\uE590\uE591\uE592\uE593\uE594\uE595\uE596\uE597" +
- "\uE598\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F" +
- "\uE5A0\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7" +
- "\uE5A8\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF" +
- "\uE5B0\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7" +
- "\uE5B8\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF" +
- "\uE5C0\uE5C1\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7" +
- "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF" +
- "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7" +
- "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF" +
- "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7" +
- "\uE5E8\uE5E9\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF" +
- "\uE5F0\uE5F1\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7" +
- "\uE5F8\uE5F9\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF" +
- "\uE600\uE601\uE602\uE603\uE604\uE605\uE606\uE607" +
- "\uE608\uE609\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F" +
- "\uE610\uE611\uE612\uE613\uE614\uE615\uE616\uE617" +
- "\uE618\uE619\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F" +
- "\uE620\uE621\uE622\uE623\uE624\uE625\uE626\uE627" +
- "\uE628\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F" +
- "\uE630\uE631\uE632\uE633\uE634\uE635\uE636\uE637" +
- "\uE638\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F" +
- "\uE640\uE641\uE642\uE643\uE644\uE645\uE646\uE647" +
- "\uE648\uE649\uE64A\uE64B\uE64C\uE64D\uE64E\uE64F" +
- "\uE650\uE651\uE652\uE653\uE654\uE655\uE656\uE657" +
- "\uE658\uE659\uE65A\uE65B\uE65C\uE65D\uE65E\uE65F" +
- "\uE660\uE661\uE662\uE663\uE664\uE665\uE666\uE667" +
- "\uE668\uE669\uE66A\uE66B\uE66C\uE66D\uE66E\uE66F" +
- "\uE670\uE671\uE672\uE673\uE674\uE675\uE676\uE677" +
- "\uE678\uE679\uE67A\uE67B\uE67C\uE67D\uE67E\uE67F" +
- "\uE680\uE681\uE682\uE683\uE684\uE685\uE686\uE687" +
- "\uE688\uE689\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F" +
- "\uE690\uE691\uE692\uE693\uE694\uE695\uE696\uE697" +
- "\uE698\uE699\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F" +
- "\uE6A0\uE6A1\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6\uE6A7" +
- "\uE6A8\uE6A9\uE6AA\uE6AB\uE6AC\uE6AD\uE6AE\uE6AF" +
- "\uE6B0\uE6B1\uE6B2\uE6B3\uE6B4\uE6B5\uE6B6\uE6B7" +
- "\uE6B8\uE6B9\uE6BA\uE6BB\uE6BC\uE6BD\uE6BE\uE6BF" +
- "\uE6C0\uE6C1\uE6C2\uE6C3\uE6C4\uE6C5\uE6C6\uE6C7" +
- "\uE6C8\uE6C9\uE6CA\uE6CB\uE6CC\uE6CD\uE6CE\uE6CF" +
- "\uE6D0\uE6D1\uE6D2\uE6D3\uE6D4\uE6D5\uE6D6\uE6D7" +
- "\uE6D8\uE6D9\uE6DA\uE6DB\uE6DC\uE6DD\uE6DE\uE6DF" +
- "\uE6E0\uE6E1\uE6E2\uE6E3\uE6E4\uE6E5\uE6E6\uE6E7" +
- "\uE6E8\uE6E9\uE6EA\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF" +
- "\uE6F0\uE6F1\uE6F2\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7" +
- "\uE6F8\uE6F9\uE6FA\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF" +
- "\uE700\uE701\uE702\uE703\uE704\uE705\uE706\uE707" +
- "\uE708\uE709\uE70A\uE70B\uE70C\uE70D\uE70E\uE70F" +
- "\uE710\uE711\uE712\uE713\uE714\uE715\uE716\uE717" +
- "\uE718\uE719\uE71A\uE71B\uE71C\uE71D\uE71E\uE71F" +
- "\uE720\uE721\uE722\uE723\uE724\uE725\uE726\uE727" +
- "\uE728\uE729\uE72A\uE72B\uE72C\uE72D\uE72E\uE72F" +
- "\uE730\uE731\uE732\uE733\uE734\uE735\uE736\uE737" +
- "\uE738\uE739\uE73A\uE73B\uE73C\uE73D\uE73E\uE73F" +
- "\uE740\uE741\uE742\uE743\uE744\uE745\uE746\uE747" +
- "\uE748\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F" +
- "\uE750\uE751\uE752\uE753\uE754\uE755\uE756\uE757" +
- "\uE758\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F" +
- "\uE760\uE761\uE762\uE763\uE764\uE765\uE766\uE767" +
- "\uE768\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F" +
- "\uE770\uE771\uE772\uE773\uE774\uE775\uE776\uE777" +
- "\uE778\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE77F" +
- "\uE780\uE781\uE782\uE783\uE784\uE785\uE786\uE787" +
- "\uE788\uE789\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F" +
- "\uE790\uE791\uE792\uE793\uE794\uE795\uE796\uE797" +
- "\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F" +
- "\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4\uE7A5\uE7A6\uE7A7" +
- "\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC\uE7AD\uE7AE\uE7AF" +
- "\uE7B0\uE7B1\uE7B2\uE7B3\uE7B4\uE7B5\uE7B6\uE7B7" +
- "\uE7B8\uE7B9\uE7BA\uE7BB\uE7BC\uE7BD\uE7BE\uE7BF" +
- "\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5\uE7C6\uE7C7" +
- "\uE7C8\uE7C9\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF" +
- "\uE7D0\uE7D1\uE7D2\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7" +
- "\uE7D8\uE7D9\uE7DA\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF" +
- "\uE7E0\uE7E1\uE7E2\uE7E3\uE7E4\uE7E5\uE7E6\uE7E7" +
- "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF" +
- "\uE7F0\uE7F1\uE7F2\uE7F3\uE7F4\uE7F5\uE7F6\uE7F7" +
- "\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD\uE7FE\uE7FF" +
- "\uE800\uE801\uE802\uE803\uE804\uE805\uE806\uE807" +
- "\uE808\uE809\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F" +
- "\uE810\uE811\uE812\uE813\uE814\uE815\uE816\uE817" +
- "\uE818\uE819\uE81A\uE81B\uE81C\uE81D\uE81E\uE81F" +
- "\uE820\uE821\uE822\uE823\uE824\uE825\uE826\uE827" +
- "\uE828\uE829\uE82A\uE82B\uE82C\uE82D\uE82E\uE82F" +
- "\uE830\uE831\uE832\uE833\uE834\uE835\uE836\uE837" +
- "\uE838\uE839\uE83A\uE83B\uE83C\uE83D\uE83E\uE83F" +
- "\uE840\uE841\uE842\uE843\uE844\uE845\uE846\uE847" +
- "\uE848\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uE84F" +
- "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857" +
- "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F" +
- "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867" +
- "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F" +
- "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877" +
- "\uE878\uE879\uE87A\uE87B\uE87C\uE87D\uE87E\uE87F" +
- "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887" +
- "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F" +
- "\uE890\uE891\uE892\uE893\uE894\uE895\uE896\uE897" +
- "\uE898\uE899\uE89A\uE89B\uE89C\uE89D\uE89E\uE89F" +
- "\uE8A0\uE8A1\uE8A2\uE8A3\uE8A4\uE8A5\uE8A6\uE8A7" +
- "\uE8A8\uE8A9\uE8AA\uE8AB\uE8AC\uE8AD\uE8AE\uE8AF" +
- "\uE8B0\uE8B1\uE8B2\uE8B3\uE8B4\uE8B5\uE8B6\uE8B7" +
- "\uE8B8\uE8B9\uE8BA\uE8BB\uE8BC\uE8BD\uE8BE\uE8BF" +
- "\uE8C0\uE8C1\uE8C2\uE8C3\uE8C4\uE8C5\uE8C6\uE8C7" +
- "\uE8C8\uE8C9\uE8CA\uE8CB\uE8CC\uE8CD\uE8CE\uE8CF" +
- "\uE8D0\uE8D1\uE8D2\uE8D3\uE8D4\uE8D5\uE8D6\uE8D7" +
- "\uE8D8\uE8D9\uE8DA\uE8DB\uE8DC\uE8DD\uE8DE\uE8DF" +
- "\uE8E0\uE8E1\uE8E2\uE8E3\uE8E4\uE8E5\uE8E6\uE8E7" +
- "\uE8E8\uE8E9\uE8EA\uE8EB\uE8EC\uE8ED\uE8EE\uE8EF" +
- "\uE8F0\uE8F1\uE8F2\uE8F3\uE8F4\uE8F5\uE8F6\uE8F7" +
- "\uE8F8\uE8F9\uE8FA\uE8FB\uE8FC\uE8FD\uE8FE\uE8FF" +
- "\uE900\uE901\uE902\uE903\uE904\uE905\uE906\uE907" +
- "\uE908\uE909\uE90A\uE90B\uE90C\uE90D\uE90E\uE90F" +
- "\uE910\uE911\uE912\uE913\uE914\uE915\uE916\uE917" +
- "\uE918\uE919\uE91A\uE91B\uE91C\uE91D\uE91E\uE91F" +
- "\uE920\uE921\uE922\uE923\uE924\uE925\uE926\uE927" +
- "\uE928\uE929\uE92A\uE92B\uE92C\uE92D\uE92E\uE92F" +
- "\uE930\uE931\uE932\uE933\uE934\uE935\uE936\uE937" +
- "\uE938\uE939\uE93A\uE93B\uE93C\uE93D\uE93E\uE93F" +
- "\uE940\uE941\uE942\uE943\uE944\uE945\uE946\uE947" +
- "\uE948\uE949\uE94A\uE94B\uE94C\uE94D\uE94E\uE94F" +
- "\uE950\uE951\uE952\uE953\uE954\uE955\uE956\uE957" +
- "\uE958\uE959\uE95A\uE95B\uE95C\uE95D\uE95E\uE95F" +
- "\uE960\uE961\uE962\uE963\uE964\uE965\uE966\uE967" +
- "\uE968\uE969\uE96A\uE96B\uE96C\uE96D\uE96E\uE96F" +
- "\uE970\uE971\uE972\uE973\uE974\uE975\uE976\uE977" +
- "\uE978\uE979\uE97A\uE97B\uE97C\uE97D\uE97E\uE97F" +
- "\uE980\uE981\uE982\uE983\uE984\uE985\uE986\uE987" +
- "\uE988\uE989\uE98A\uE98B\uE98C\uE98D\uE98E\uE98F" +
- "\uE990\uE991\uE992\uE993\uE994\uE995\uE996\uE997" +
- "\uE998\uE999\uE99A\uE99B\uE99C\uE99D\uE99E\uE99F" +
- "\uE9A0\uE9A1\uE9A2\uE9A3\uE9A4\uE9A5\uE9A6\uE9A7" +
- "\uE9A8\uE9A9\uE9AA\uE9AB\uE9AC\uE9AD\uE9AE\uE9AF" +
- "\uE9B0\uE9B1\uE9B2\uE9B3\uE9B4\uE9B5\uE9B6\uE9B7" +
- "\uE9B8\uE9B9\uE9BA\uE9BB\uE9BC\uE9BD\uE9BE\uE9BF" +
- "\uE9C0\uE9C1\uE9C2\uE9C3\uE9C4\uE9C5\uE9C6\uE9C7" +
- "\uE9C8\uE9C9\uE9CA\uE9CB\uE9CC\uE9CD\uE9CE\uE9CF" +
- "\uE9D0\uE9D1\uE9D2\uE9D3\uE9D4\uE9D5\uE9D6\uE9D7" +
- "\uE9D8\uE9D9\uE9DA\uE9DB\uE9DC\uE9DD\uE9DE\uE9DF" +
- "\uE9E0\uE9E1\uE9E2\uE9E3\uE9E4\uE9E5\uE9E6\uE9E7" +
- "\uE9E8\uE9E9\uE9EA\uE9EB\uE9EC\uE9ED\uE9EE\uE9EF" +
- "\uE9F0\uE9F1\uE9F2\uE9F3\uE9F4\uE9F5\uE9F6\uE9F7" +
- "\uE9F8\uE9F9\uE9FA\uE9FB\uE9FC\uE9FD\uE9FE\uE9FF" +
- "\uEA00\uEA01\uEA02\uEA03\uEA04\uEA05\uEA06\uEA07" +
- "\uEA08\uEA09\uEA0A\uEA0B\uEA0C\uEA0D\uEA0E\uEA0F" +
- "\uEA10\uEA11\uEA12\uEA13\uEA14\uEA15\uEA16\uEA17" +
- "\uEA18\uEA19\uEA1A\uEA1B\uEA1C\uEA1D\uEA1E\uEA1F" +
- "\uEA20\uEA21\uEA22\uEA23\uEA24\uEA25\uEA26\uEA27" +
- "\uEA28\uEA29\uEA2A\uEA2B\uEA2C\uEA2D\uEA2E\uEA2F" +
- "\uEA30\uEA31\uEA32\uEA33\uEA34\uEA35\uEA36\uEA37" +
- "\uEA38\uEA39\uEA3A\uEA3B\uEA3C\uEA3D\uEA3E\uEA3F" +
- "\uEA40\uEA41\uEA42\uEA43\uEA44\uEA45\uEA46\uEA47" +
- "\uEA48\uEA49\uEA4A\uEA4B\uEA4C\uEA4D\uEA4E\uEA4F" +
- "\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57" +
- "\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E\uEA5F" +
- "\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" +
- "\uEA68\uEA69\uEA6A\uEA6B\uEA6C\uEA6D\uEA6E\uEA6F" +
- "\uEA70\uEA71\uEA72\uEA73\uEA74\uEA75\uEA76\uEA77" +
- "\uEA78\uEA79\uEA7A\uEA7B\uEA7C\uEA7D\uEA7E\uEA7F" +
- "\uEA80\uEA81\uEA82\uEA83\uEA84\uEA85\uEA86\uEA87" +
- "\uEA88\uEA89\uEA8A\uEA8B\uEA8C\uEA8D\uEA8E\uEA8F" +
- "\uEA90\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97" +
- "\uEA98\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uEA9E\uEA9F" +
- "\uEAA0\uEAA1\uEAA2\uEAA3\uEAA4\uEAA5\uEAA6\uEAA7" +
- "\uEAA8\uEAA9\uEAAA\uEAAB\uEAAC\uEAAD\uEAAE\uEAAF" +
- "\uEAB0\uEAB1\uEAB2\uEAB3\uEAB4\uEAB5\uEAB6\uEAB7" +
- "\uEAB8\uEAB9\uEABA\uEABB\uEABC\uEABD\uEABE\uEABF" +
- "\uEAC0\uEAC1\uEAC2\uEAC3\uEAC4\uEAC5\uEAC6\uEAC7" +
- "\uEAC8\uEAC9\uEACA\uEACB\uEACC\uEACD\uEACE\uEACF" +
- "\uEAD0\uEAD1\uEAD2\uEAD3\uEAD4\uEAD5\uEAD6\uEAD7" +
- "\uEAD8\uEAD9\uEADA\uEADB\uEADC\uEADD\uEADE\uEADF" +
- "\uEAE0\uEAE1\uEAE2\uEAE3\uEAE4\uEAE5\uEAE6\uEAE7" +
- "\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC\uEAED\uEAEE\uEAEF" +
- "\uEAF0\uEAF1\uEAF2\uEAF3\uEAF4\uEAF5\uEAF6\uEAF7" +
- "\uEAF8\uEAF9\uEAFA\uEAFB\uEAFC\uEAFD\uEAFE\uEAFF" +
- "\uEB00\uEB01\uEB02\uEB03\uEB04\uEB05\uEB06\uEB07" +
- "\uEB08\uEB09\uEB0A\uEB0B\uEB0C\uEB0D\uEB0E\uEB0F" +
- "\uEB10\uEB11\uEB12\uEB13\uEB14\uEB15\uEB16\uEB17" +
- "\uEB18\uEB19\uEB1A\uEB1B\uEB1C\uEB1D\uEB1E\uEB1F" +
- "\uEB20\uEB21\uEB22\uEB23\uEB24\uEB25\uEB26\uEB27" +
- "\uEB28\uEB29\uEB2A\uEB2B\uEB2C\uEB2D\uEB2E\uEB2F" +
- "\uEB30\uEB31\uEB32\uEB33\uEB34\uEB35\uEB36\uEB37" +
- "\uEB38\uEB39\uEB3A\uEB3B\uEB3C\uEB3D\uEB3E\uEB3F" +
- "\uEB40\uEB41\uEB42\uEB43\uEB44\uEB45\uEB46\uEB47" +
- "\uEB48\uEB49\uEB4A\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F" +
- "\uEB50\uEB51\uEB52\uEB53\uEB54\uEB55\uEB56\uEB57" +
- "\uEB58\uEB59\uEB5A\uEB5B\uEB5C\uEB5D\uEB5E\uEB5F" +
- "\uEB60\uEB61\uEB62\uEB63\uEB64\uEB65\uEB66\uEB67" +
- "\uEB68\uEB69\uEB6A\uEB6B\uEB6C\uEB6D\uEB6E\uEB6F" +
- "\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76\uEB77" +
- "\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D\uEB7E\uEB7F" +
- "\uEB80\uEB81\uEB82\uEB83\uEB84\uEB85\uEB86\uEB87" +
- "\uEB88\uEB89\uEB8A\uEB8B\uEB8C\uEB8D\uEB8E\uEB8F" +
- "\uEB90\uEB91\uEB92\uEB93\uEB94\uEB95\uEB96\uEB97" +
- "\uEB98\uEB99\uEB9A\uEB9B\uEB9C\uEB9D\uEB9E\uEB9F" +
- "\uEBA0\uEBA1\uEBA2\uEBA3\uEBA4\uEBA5\uEBA6\uEBA7" +
- "\uEBA8\uEBA9\uEBAA\uEBAB\uEBAC\uEBAD\uEBAE\uEBAF" +
- "\uEBB0\uEBB1\uEBB2\uEBB3\uEBB4\uEBB5\uEBB6\uEBB7" +
- "\uEBB8\uEBB9\uEBBA\uEBBB\uEBBC\uEBBD\uEBBE\uEBBF" +
- "\uEBC0\uEBC1\uEBC2\uEBC3\uEBC4\uEBC5\uEBC6\uEBC7" +
- "\uEBC8\uEBC9\uEBCA\uEBCB\uEBCC\uEBCD\uEBCE\uEBCF" +
- "\uEBD0\uEBD1\uEBD2\uEBD3\uEBD4\uEBD5\uEBD6\uEBD7" +
- "\uEBD8\uEBD9\uEBDA\uEBDB\uEBDC\uEBDD\uEBDE\uEBDF" +
- "\uEBE0\uEBE1\uEBE2\uEBE3\uEBE4\uEBE5\uEBE6\uEBE7" +
- "\uEBE8\uEBE9\uEBEA\uEBEB\uEBEC\uEBED\uEBEE\uEBEF" +
- "\uEBF0\uEBF1\uEBF2\uEBF3\uEBF4\uEBF5\uEBF6\uEBF7" +
- "\uEBF8\uEBF9\uEBFA\uEBFB\uEBFC\uEBFD\uEBFE\uEBFF" +
- "\uEC00\uEC01\uEC02\uEC03\uEC04\uEC05\uEC06\uEC07" +
- "\uEC08\uEC09\uEC0A\uEC0B\uEC0C\uEC0D\uEC0E\uEC0F" +
- "\uEC10\uEC11\uEC12\uEC13\uEC14\uEC15\uEC16\uEC17" +
- "\uEC18\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\uEC1E\uEC1F" +
- "\uEC20\uEC21\uEC22\uEC23\uEC24\uEC25\uEC26\uEC27" +
- "\uEC28\uEC29\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F" +
- "\uEC30\uEC31\uEC32\uEC33\uEC34\uEC35\uEC36\uEC37" +
- "\uEC38\uEC39\uEC3A\uEC3B\uEC3C\uEC3D\uEC3E\uEC3F" +
- "\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47" +
- "\uEC48\uEC49\uEC4A\uEC4B\uEC4C\uEC4D\uEC4E\uEC4F" +
- "\uEC50\uEC51\uEC52\uEC53\uEC54\uEC55\uEC56\uEC57" +
- "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F" +
- "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67" +
- "\uEC68\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F" +
- "\uEC70\uEC71\uEC72\uEC73\uEC74\uEC75\uEC76\uEC77" +
- "\uEC78\uEC79\uEC7A\uEC7B\uEC7C\uEC7D\uEC7E\uEC7F" +
- "\uEC80\uEC81\uEC82\uEC83\uEC84\uEC85\uEC86\uEC87" +
- "\uEC88\uEC89\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uEC8F" +
- "\uEC90\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96\uEC97" +
- "\uEC98\uEC99\uEC9A\uEC9B\uEC9C\uEC9D\uEC9E\uEC9F" +
- "\uECA0\uECA1\uECA2\uECA3\uECA4\uECA5\uECA6\uECA7" +
- "\uECA8\uECA9\uECAA\uECAB\uECAC\uECAD\uECAE\uECAF" +
- "\uECB0\uECB1\uECB2\uECB3\uECB4\uECB5\uECB6\uECB7" +
- "\uECB8\uECB9\uECBA\uECBB\uECBC\uECBD\uECBE\uECBF" +
- "\uECC0\uECC1\uECC2\uECC3\uECC4\uECC5\uECC6\uECC7" +
- "\uECC8\uECC9\uECCA\uECCB\uECCC\uECCD\uECCE\uECCF" +
- "\uECD0\uECD1\uECD2\uECD3\uECD4\uECD5\uECD6\uECD7" +
- "\uECD8\uECD9\uECDA\uECDB\uECDC\uECDD\uECDE\uECDF" +
- "\uECE0\uECE1\uECE2\uECE3\uECE4\uECE5\uECE6\uECE7" +
- "\uECE8\uECE9\uECEA\uECEB\uECEC\uECED\uECEE\uECEF" +
- "\uECF0\uECF1\uECF2\uECF3\uECF4\uECF5\uECF6\uECF7" +
- "\uECF8\uECF9\uECFA\uECFB\uECFC\uECFD\uECFE\uECFF" +
- "\uED00\uED01\uED02\uED03\uED04\uED05\uED06\uED07" +
- "\uED08\uED09\uED0A\uED0B\uED0C\uED0D\uED0E\uED0F" +
- "\uED10\uED11\uED12\uED13\uED14\uED15\uED16\uED17" +
- "\uED18\uED19\uED1A\uED1B\uED1C\uED1D\uED1E\uED1F" +
- "\uED20\uED21\uED22\uED23\uED24\uED25\uED26\uED27" +
- "\uED28\uED29\uED2A\uED2B\uED2C\uED2D\uED2E\uED2F" +
- "\uED30\uED31\uED32\uED33\uED34\uED35\uED36\uED37" +
- "\uED38\uED39\uED3A\uED3B\uED3C\uED3D\uED3E\uED3F" +
- "\uED40\uED41\uED42\uED43\uED44\uED45\uED46\uED47" +
- "\uED48\uED49\uED4A\uED4B\uED4C\uED4D\uED4E\uED4F" +
- "\uED50\uED51\uED52\uED53\uED54\uED55\uED56\uED57" +
- "\uED58\uED59\uED5A\uED5B\uED5C\uED5D\uED5E\uED5F" +
- "\uED60\uED61\uED62\uED63\uED64\uED65\uED66\uED67" +
- "\uED68\uED69\uED6A\uED6B\uED6C\uED6D\uED6E\uED6F" +
- "\uED70\uED71\uED72\uED73\uED74\uED75\uED76\uED77" +
- "\uED78\uED79\uED7A\uED7B\uED7C\uED7D\uED7E\uED7F" +
- "\uED80\uED81\uED82\uED83\uED84\uED85\uED86\uED87" +
- "\uED88\uED89\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F" +
- "\uED90\uED91\uED92\uED93\uED94\uED95\uED96\uED97" +
- "\uED98\uED99\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F" +
- "\uEDA0\uEDA1\uEDA2\uEDA3\uEDA4\uEDA5\uEDA6\uEDA7" +
- "\uEDA8\uEDA9\uEDAA\uEDAB\uEDAC\uEDAD\uEDAE\uEDAF" +
- "\uEDB0\uEDB1\uEDB2\uEDB3\uEDB4\uEDB5\uEDB6\uEDB7" +
- "\uEDB8\uEDB9\uEDBA\uEDBB\uEDBC\uEDBD\uEDBE\uEDBF" +
- "\uEDC0\uEDC1\uEDC2\uEDC3\uEDC4\uEDC5\uEDC6\uEDC7" +
- "\uEDC8\uEDC9\uEDCA\uEDCB\uEDCC\uEDCD\uEDCE\uEDCF" +
- "\uEDD0\uEDD1\uEDD2\uEDD3\uEDD4\uEDD5\uEDD6\uEDD7" +
- "\uEDD8\uEDD9\uEDDA\uEDDB\uEDDC\uEDDD\uEDDE\uEDDF" +
- "\uEDE0\uEDE1\uEDE2\uEDE3\uEDE4\uEDE5\uEDE6\uEDE7" +
- "\uEDE8\uEDE9\uEDEA\uEDEB\uEDEC\uEDED\uEDEE\uEDEF" +
- "\uEDF0\uEDF1\uEDF2\uEDF3\uEDF4\uEDF5\uEDF6\uEDF7" +
- "\uEDF8\uEDF9\uEDFA\uEDFB\uEDFC\uEDFD\uEDFE\uEDFF" +
- "\uEE00\uEE01\uEE02\uEE03\uEE04\uEE05\uEE06\uEE07" +
- "\uEE08\uEE09\uEE0A\uEE0B\uEE0C\uEE0D\uEE0E\uEE0F" +
- "\uEE10\uEE11\uEE12\uEE13\uEE14\uEE15\uEE16\uEE17" +
- "\uEE18\uEE19\uEE1A\uEE1B\uEE1C\uEE1D\uEE1E\uEE1F" +
- "\uEE20\uEE21\uEE22\uEE23\uEE24\uEE25\uEE26\uEE27" +
- "\uEE28\uEE29\uEE2A\uEE2B\uEE2C\uEE2D\uEE2E\uEE2F" +
- "\uEE30\uEE31\uEE32\uEE33\uEE34\uEE35\uEE36\uEE37" +
- "\uEE38\uEE39\uEE3A\uEE3B\uEE3C\uEE3D\uEE3E\uEE3F" +
- "\uEE40\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47" +
- "\uEE48\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F" +
- "\uEE50\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57" +
- "\uEE58\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F" +
- "\uEE60\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67" +
- "\uEE68\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F" +
- "\uEE70\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77" +
- "\uEE78\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE7F" +
- "\uEE80\uEE81\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87" +
- "\uEE88\uEE89\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F" +
- "\uEE90\uEE91\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97" +
- "\uEE98\uEE99\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F" +
- "\uEEA0\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7" +
- "\uEEA8\uEEA9\uEEAA\uEEAB\uEEAC\uEEAD\uEEAE\uEEAF" +
- "\uEEB0\uEEB1\uEEB2\uEEB3\uEEB4\uEEB5\uEEB6\uEEB7" +
- "\uEEB8\uEEB9\uEEBA\uEEBB\uEEBC\uEEBD\uEEBE\uEEBF" +
- "\uEEC0\uEEC1\uEEC2\uEEC3\uEEC4\uEEC5\uEEC6\uEEC7" +
- "\uEEC8\uEEC9\uEECA\uEECB\uEECC\uEECD\uEECE\uEECF" +
- "\uEED0\uEED1\uEED2\uEED3\uEED4\uEED5\uEED6\uEED7" +
- "\uEED8\uEED9\uEEDA\uEEDB\uEEDC\uEEDD\uEEDE\uEEDF" +
- "\uEEE0\uEEE1\uEEE2\uEEE3\uEEE4\uEEE5\uEEE6\uEEE7" +
- "\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uEEED\uEEEE\uEEEF" +
- "\uEEF0\uEEF1\uEEF2\uEEF3\uEEF4\uEEF5\uEEF6\uEEF7" +
- "\uEEF8\uEEF9\uEEFA\uEEFB\uEEFC\uEEFD\uEEFE\uEEFF" +
- "\uEF00\uEF01\uEF02\uEF03\uEF04\uEF05\uEF06\uEF07" +
- "\uEF08\uEF09\uEF0A\uEF0B\uEF0C\uEF0D\uEF0E\uEF0F" +
- "\uEF10\uEF11\uEF12\uEF13\uEF14\uEF15\uEF16\uEF17" +
- "\uEF18\uEF19\uEF1A\uEF1B\uEF1C\uEF1D\uEF1E\uEF1F" +
- "\uEF20\uEF21\uEF22\uEF23\uEF24\uEF25\uEF26\uEF27" +
- "\uEF28\uEF29\uEF2A\uEF2B\uEF2C\uEF2D\uEF2E\uEF2F" +
- "\uEF30\uEF31\uEF32\uEF33\uEF34\uEF35\uEF36\uEF37" +
- "\uEF38\uEF39\uEF3A\uEF3B\uEF3C\uEF3D\uEF3E\uEF3F" +
- "\uEF40\uEF41\uEF42\uEF43\uEF44\uEF45\uEF46\uEF47" +
- "\uEF48\uEF49\uEF4A\uEF4B\uEF4C\uEF4D\uEF4E\uEF4F" +
- "\uEF50\uEF51\uEF52\uEF53\uEF54\uEF55\uEF56\uEF57" +
- "\uEF58\uEF59\uEF5A\uEF5B\uEF5C\uEF5D\uEF5E\uEF5F" +
- "\uEF60\uEF61\uEF62\uEF63\uEF64\uEF65\uEF66\uEF67" +
- "\uEF68\uEF69\uEF6A\uEF6B\uEF6C\uEF6D\uEF6E\uEF6F" +
- "\uEF70\uEF71\uEF72\uEF73\uEF74\uEF75\uEF76\uEF77" +
- "\uEF78\uEF79\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF7F" +
- "\uEF80\uEF81\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87" +
- "\uEF88\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F" +
- "\uEF90\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97" +
- "\uEF98\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F" +
- "\uEFA0\uEFA1\uEFA2\uEFA3\uEFA4\uEFA5\uEFA6\uEFA7" +
- "\uEFA8\uEFA9\uEFAA\uEFAB\uEFAC\uEFAD\uEFAE\uEFAF" +
- "\uEFB0\uEFB1\uEFB2\uEFB3\uEFB4\uEFB5\uEFB6\uEFB7" +
- "\uEFB8\uEFB9\uEFBA\uEFBB\uEFBC\uEFBD\uEFBE\uEFBF" +
- "\uEFC0\uEFC1\uEFC2\uEFC3\uEFC4\uEFC5\uEFC6\uEFC7" +
- "\uEFC8\uEFC9\uEFCA\uEFCB\uEFCC\uEFCD\uEFCE\uEFCF" +
- "\uEFD0\uEFD1\uEFD2\uEFD3\uEFD4\uEFD5\uEFD6\uEFD7" +
- "\uEFD8\uEFD9\uEFDA\uEFDB\uEFDC\uEFDD\uEFDE\uEFDF" +
- "\uEFE0\uEFE1\uEFE2\uEFE3\uEFE4\uEFE5\uEFE6\uEFE7" +
- "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uEFED\uEFEE\uEFEF" +
- "\uEFF0\uEFF1\uEFF2\uEFF3\uEFF4\uEFF5\uEFF6\uEFF7" +
- "\uEFF8\uEFF9\uEFFA\uEFFB\uEFFC\uEFFD\uEFFE\uEFFF" +
- "\uF000\uF001\uF002\uF003\uF004\uF005\uF006\uF007" +
- "\uF008\uF009\uF00A\uF00B\uF00C\uF00D\uF00E\uF00F" +
- "\uF010\uF011\uF012\uF013\uF014\uF015\uF016\uF017" +
- "\uF018\uF019\uF01A\uF01B\uF01C\uF01D\uF01E\uF01F" +
- "\uF020\uF021\uF022\uF023\uF024\uF025\uF026\uF027" +
- "\uF028\uF029\uF02A\uF02B\uF02C\uF02D\uF02E\uF02F" +
- "\uF030\uF031\uF032\uF033\uF034\uF035\uF036\uF037" +
- "\uF038\uF039\uF03A\uF03B\uF03C\uF03D\uF03E\uF03F" +
- "\uF040\uF041\uF042\uF043\uF044\uF045\uF046\uF047" +
- "\uF048\uF049\uF04A\uF04B\uF04C\uF04D\uF04E\uF04F" +
- "\uF050\uF051\uF052\uF053\uF054\uF055\uF056\uF057" +
- "\uF058\uF059\uF05A\uF05B\uF05C\uF05D\uF05E\uF05F" +
- "\uF060\uF061\uF062\uF063\uF064\uF065\uF066\uF067" +
- "\uF068\uF069\uF06A\uF06B\uF06C\uF06D\uF06E\uF06F" +
- "\uF070\uF071\uF072\uF073\uF074\uF075\uF076\uF077" +
- "\uF078\uF079\uF07A\uF07B\uF07C\uF07D\uF07E\uF07F" +
- "\uF080\uF081\uF082\uF083\uF084\uF085\uF086\uF087" +
- "\uF088\uF089\uF08A\uF08B\uF08C\uF08D\uF08E\uF08F" +
- "\uF090\uF091\uF092\uF093\uF094\uF095\uF096\uF097" +
- "\uF098\uF099\uF09A\uF09B\uF09C\uF09D\uF09E\uF09F" +
- "\uF0A0\uF0A1\uF0A2\uF0A3\uF0A4\uF0A5\uF0A6\uF0A7" +
- "\uF0A8\uF0A9\uF0AA\uF0AB\uF0AC\uF0AD\uF0AE\uF0AF" +
- "\uF0B0\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uF0B6\uF0B7" +
- "\uF0B8\uF0B9\uF0BA\uF0BB\uF0BC\uF0BD\uF0BE\uF0BF" +
- "\uF0C0\uF0C1\uF0C2\uF0C3\uF0C4\uF0C5\uF0C6\uF0C7" +
- "\uF0C8\uF0C9\uF0CA\uF0CB\uF0CC\uF0CD\uF0CE\uF0CF" +
- "\uF0D0\uF0D1\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D7" +
- "\uF0D8\uF0D9\uF0DA\uF0DB\uF0DC\uF0DD\uF0DE\uF0DF" +
- "\uF0E0\uF0E1\uF0E2\uF0E3\uF0E4\uF0E5\uF0E6\uF0E7" +
- "\uF0E8\uF0E9\uF0EA\uF0EB\uF0EC\uF0ED\uF0EE\uF0EF" +
- "\uF0F0\uF0F1\uF0F2\uF0F3\uF0F4\uF0F5\uF0F6\uF0F7" +
- "\uF0F8\uF0F9\uF0FA\uF0FB\uF0FC\uF0FD\uF0FE\uF0FF" +
- "\uF100\uF101\uF102\uF103\uF104\uF105\uF106\uF107" +
- "\uF108\uF109\uF10A\uF10B\uF10C\uF10D\uF10E\uF10F" +
- "\uF110\uF111\uF112\uF113\uF114\uF115\uF116\uF117" +
- "\uF118\uF119\uF11A\uF11B\uF11C\uF11D\uF11E\uF11F" +
- "\uF120\uF121\uF122\uF123\uF124\uF125\uF126\uF127" +
- "\uF128\uF129\uF12A\uF12B\uF12C\uF12D\uF12E\uF12F" +
- "\uF130\uF131\uF132\uF133\uF134\uF135\uF136\uF137" +
- "\uF138\uF139\uF13A\uF13B\uF13C\uF13D\uF13E\uF13F" +
- "\uF140\uF141\uF142\uF143\uF144\uF145\uF146\uF147" +
- "\uF148\uF149\uF14A\uF14B\uF14C\uF14D\uF14E\uF14F" +
- "\uF150\uF151\uF152\uF153\uF154\uF155\uF156\uF157" +
- "\uF158\uF159\uF15A\uF15B\uF15C\uF15D\uF15E\uF15F" +
- "\uF160\uF161\uF162\uF163\uF164\uF165\uF166\uF167" +
- "\uF168\uF169\uF16A\uF16B\uF16C\uF16D\uF16E\uF16F" +
- "\uF170\uF171\uF172\uF173\uF174\uF175\uF176\uF177" +
- "\uF178\uF179\uF17A\uF17B\uF17C\uF17D\uF17E\uF17F" +
- "\uF180\uF181\uF182\uF183\uF184\uF185\uF186\uF187" +
- "\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E\uF18F" +
- "\uF190\uF191\uF192\uF193\uF194\uF195\uF196\uF197" +
- "\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E\uF19F" +
- "\uF1A0\uF1A1\uF1A2\uF1A3\uF1A4\uF1A5\uF1A6\uF1A7" +
- "\uF1A8\uF1A9\uF1AA\uF1AB\uF1AC\uF1AD\uF1AE\uF1AF" +
- "\uF1B0\uF1B1\uF1B2\uF1B3\uF1B4\uF1B5\uF1B6\uF1B7" +
- "\uF1B8\uF1B9\uF1BA\uF1BB\uF1BC\uF1BD\uF1BE\uF1BF" +
- "\uF1C0\uF1C1\uF1C2\uF1C3\uF1C4\uF1C5\uF1C6\uF1C7" +
- "\uF1C8\uF1C9\uF1CA\uF1CB\uF1CC\uF1CD\uF1CE\uF1CF" +
- "\uF1D0\uF1D1\uF1D2\uF1D3\uF1D4\uF1D5\uF1D6\uF1D7" +
- "\uF1D8\uF1D9\uF1DA\uF1DB\uF1DC\uF1DD\uF1DE\uF1DF" +
- "\uF1E0\uF1E1\uF1E2\uF1E3\uF1E4\uF1E5\uF1E6\uF1E7" +
- "\uF1E8\uF1E9\uF1EA\uF1EB\uF1EC\uF1ED\uF1EE\uF1EF" +
- "\uF1F0\uF1F1\uF1F2\uF1F3\uF1F4\uF1F5\uF1F6\uF1F7" +
- "\uF1F8\uF1F9\uF1FA\uF1FB\uF1FC\uF1FD\uF1FE\uF1FF" +
- "\uF200\uF201\uF202\uF203\uF204\uF205\uF206\uF207" +
- "\uF208\uF209\uF20A\uF20B\uF20C\uF20D\uF20E\uF20F" +
- "\uF210\uF211\uF212\uF213\uF214\uF215\uF216\uF217" +
- "\uF218\uF219\uF21A\uF21B\uF21C\uF21D\uF21E\uF21F" +
- "\uF220\uF221\uF222\uF223\uF224\uF225\uF226\uF227" +
- "\uF228\uF229\uF22A\uF22B\uF22C\uF22D\uF22E\uF22F" +
- "\uF230\uF231\uF232\uF233\uF234\uF235\uF236\uF237" +
- "\uF238\uF239\uF23A\uF23B\uF23C\uF23D\uF23E\uF23F" +
- "\uF240\uF241\uF242\uF243\uF244\uF245\uF246\uF247" +
- "\uF248\uF249\uF24A\uF24B\uF24C\uF24D\uF24E\uF24F" +
- "\uF250\uF251\uF252\uF253\uF254\uF255\uF256\uF257" +
- "\uF258\uF259\uF25A\uF25B\uF25C\uF25D\uF25E\uF25F" +
- "\uF260\uF261\uF262\uF263\uF264\uF265\uF266\uF267" +
- "\uF268\uF269\uF26A\uF26B\uF26C\uF26D\uF26E\uF26F" +
- "\uF270\uF271\uF272\uF273\uF274\uF275\uF276\uF277" +
- "\uF278\uF279\uF27A\uF27B\uF27C\uF27D\uF27E\uF27F" +
- "\uF280\uF281\uF282\uF283\uF284\uF285\uF286\uF287" +
- "\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E\uF28F" +
- "\uF290\uF291\uF292\uF293\uF294\uF295\uF296\uF297" +
- "\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E\uF29F" +
- "\uF2A0\uF2A1\uF2A2\uF2A3\uF2A4\uF2A5\uF2A6\uF2A7" +
- "\uF2A8\uF2A9\uF2AA\uF2AB\uF2AC\uF2AD\uF2AE\uF2AF" +
- "\uF2B0\uF2B1\uF2B2\uF2B3\uF2B4\uF2B5\uF2B6\uF2B7" +
- "\uF2B8\uF2B9\uF2BA\uF2BB\uF2BC\uF2BD\uF2BE\uF2BF" +
- "\uF2C0\uF2C1\uF2C2\uF2C3\uF2C4\uF2C5\uF2C6\uF2C7" +
- "\uF2C8\uF2C9\uF2CA\uF2CB\uF2CC\uF2CD\uF2CE\uF2CF" +
- "\uF2D0\uF2D1\uF2D2\uF2D3\uF2D4\uF2D5\uF2D6\uF2D7" +
- "\uF2D8\uF2D9\uF2DA\uF2DB\uF2DC\uF2DD\uF2DE\uF2DF" +
- "\uF2E0\uF2E1\uF2E2\uF2E3\uF2E4\uF2E5\uF2E6\uF2E7" +
- "\uF2E8\uF2E9\uF2EA\uF2EB\uF2EC\uF2ED\uF2EE\uF2EF" +
- "\uF2F0\uF2F1\uF2F2\uF2F3\uF2F4\uF2F5\uF2F6\uF2F7" +
- "\uF2F8\uF2F9\uF2FA\uF2FB\uF2FC\uF2FD\uF2FE\uF2FF" +
- "\uF300\uF301\uF302\uF303\uF304\uF305\uF306\uF307" +
- "\uF308\uF309\uF30A\uF30B\uF30C\uF30D\uF30E\uF30F" +
- "\uF310\uF311\uF312\uF313\uF314\uF315\uF316\uF317" +
- "\uF318\uF319\uF31A\uF31B\uF31C\uF31D\uF31E\uF31F" +
- "\uF320\uF321\uF322\uF323\uF324\uF325\uF326\uF327" +
- "\uF328\uF329\uF32A\uF32B\uF32C\uF32D\uF32E\uF32F" +
- "\uF330\uF331\uF332\uF333\uF334\uF335\uF336\uF337" +
- "\uF338\uF339\uF33A\uF33B\uF33C\uF33D\uF33E\uF33F" +
- "\uF340\uF341\uF342\uF343\uF344\uF345\uF346\uF347" +
- "\uF348\uF349\uF34A\uF34B\uF34C\uF34D\uF34E\uF34F" +
- "\uF350\uF351\uF352\uF353\uF354\uF355\uF356\uF357" +
- "\uF358\uF359\uF35A\uF35B\uF35C\uF35D\uF35E\uF35F" +
- "\uF360\uF361\uF362\uF363\uF364\uF365\uF366\uF367" +
- "\uF368\uF369\uF36A\uF36B\uF36C\uF36D\uF36E\uF36F" +
- "\uF370\uF371\uF372\uF373\uF374\uF375\uF376\uF377" +
- "\uF378\uF379\uF37A\uF37B\uF37C\uF37D\uF37E\uF37F" +
- "\uF380\uF381\uF382\uF383\uF384\uF385\uF386\uF387" +
- "\uF388\uF389\uF38A\uF38B\uF38C\uF38D\uF38E\uF38F" +
- "\uF390\uF391\uF392\uF393\uF394\uF395\uF396\uF397" +
- "\uF398\uF399\uF39A\uF39B\uF39C\uF39D\uF39E\uF39F" +
- "\uF3A0\uF3A1\uF3A2\uF3A3\uF3A4\uF3A5\uF3A6\uF3A7" +
- "\uF3A8\uF3A9\uF3AA\uF3AB\uF3AC\uF3AD\uF3AE\uF3AF" +
- "\uF3B0\uF3B1\uF3B2\uF3B3\uF3B4\uF3B5\uF3B6\uF3B7" +
- "\uF3B8\uF3B9\uF3BA\uF3BB\uF3BC\uF3BD\uF3BE\uF3BF" +
- "\uF3C0\uF3C1\uF3C2\uF3C3\uF3C4\uF3C5\uF3C6\uF3C7" +
- "\uF3C8\uF3C9\uF3CA\uF3CB\uF3CC\uF3CD\uF3CE\uF3CF" +
- "\uF3D0\uF3D1\uF3D2\uF3D3\uF3D4\uF3D5\uF3D6\uF3D7" +
- "\uF3D8\uF3D9\uF3DA\uF3DB\uF3DC\uF3DD\uF3DE\uF3DF" +
- "\uF3E0\uF3E1\uF3E2\uF3E3\uF3E4\uF3E5\uF3E6\uF3E7" +
- "\uF3E8\uF3E9\uF3EA\uF3EB\uF3EC\uF3ED\uF3EE\uF3EF" +
- "\uF3F0\uF3F1\uF3F2\uF3F3\uF3F4\uF3F5\uF3F6\uF3F7" +
- "\uF3F8\uF3F9\uF3FA\uF3FB\uF3FC\uF3FD\uF3FE\uF3FF" +
- "\uF400\uF401\uF402\uF403\uF404\uF405\uF406\uF407" +
- "\uF408\uF409\uF40A\uF40B\uF40C\uF40D\uF40E\uF40F" +
- "\uF410\uF411\uF412\uF413\uF414\uF415\uF416\uF417" +
- "\uF418\uF419\uF41A\uF41B\uF41C\uF41D\uF41E\uF41F" +
- "\uF420\uF421\uF422\uF423\uF424\uF425\uF426\uF427" +
- "\uF428\uF429\uF42A\uF42B\uF42C\uF42D\uF42E\uF42F" +
- "\uF430\uF431\uF432\uF433\uF434\uF435\uF436\uF437" +
- "\uF438\uF439\uF43A\uF43B\uF43C\uF43D\uF43E\uF43F" +
- "\uF440\uF441\uF442\uF443\uF444\uF445\uF446\uF447" +
- "\uF448\uF449\uF44A\uF44B\uF44C\uF44D\uF44E\uF44F" +
- "\uF450\uF451\uF452\uF453\uF454\uF455\uF456\uF457" +
- "\uF458\uF459\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F" +
- "\uF460\uF461\uF462\uF463\uF464\uF465\uF466\uF467" +
- "\uF468\uF469\uF46A\uF46B\uF46C\uF46D\uF46E\uF46F" +
- "\uF470\uF471\uF472\uF473\uF474\uF475\uF476\uF477" +
- "\uF478\uF479\uF47A\uF47B\uF47C\uF47D\uF47E\uF47F" +
- "\uF480\uF481\uF482\uF483\uF484\uF485\uF486\uF487" +
- "\uF488\uF489\uF48A\uF48B\uF48C\uF48D\uF48E\uF48F" +
- "\uF490\uF491\uF492\uF493\uF494\uF495\uF496\uF497" +
- "\uF498\uF499\uF49A\uF49B\uF49C\uF49D\uF49E\uF49F" +
- "\uF4A0\uF4A1\uF4A2\uF4A3\uF4A4\uF4A5\uF4A6\uF4A7" +
- "\uF4A8\uF4A9\uF4AA\uF4AB\uF4AC\uF4AD\uF4AE\uF4AF" +
- "\uF4B0\uF4B1\uF4B2\uF4B3\uF4B4\uF4B5\uF4B6\uF4B7" +
- "\uF4B8\uF4B9\uF4BA\uF4BB\uF4BC\uF4BD\uF4BE\uF4BF" +
- "\uF4C0\uF4C1\uF4C2\uF4C3\uF4C4\uF4C5\uF4C6\uF4C7" +
- "\uF4C8\uF4C9\uF4CA\uF4CB\uF4CC\uF4CD\uF4CE\uF4CF" +
- "\uF4D0\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5\uF4D6\uF4D7" +
- "\uF4D8\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD\uF4DE\uF4DF" +
- "\uF4E0\uF4E1\uF4E2\uF4E3\uF4E4\uF4E5\uF4E6\uF4E7" +
- "\uF4E8\uF4E9\uF4EA\uF4EB\uF4EC\uF4ED\uF4EE\uF4EF" +
- "\uF4F0\uF4F1\uF4F2\uF4F3\uF4F4\uF4F5\uF4F6\uF4F7" +
- "\uF4F8\uF4F9\uF4FA\uF4FB\uF4FC\uF4FD\uF4FE\uF4FF" +
- "\uF500\uF501\uF502\uF503\uF504\uF505\uF506\uF507" +
- "\uF508\uF509\uF50A\uF50B\uF50C\uF50D\uF50E\uF50F" +
- "\uF510\uF511\uF512\uF513\uF514\uF515\uF516\uF517" +
- "\uF518\uF519\uF51A\uF51B\uF51C\uF51D\uF51E\uF51F" +
- "\uF520\uF521\uF522\uF523\uF524\uF525\uF526\uF527" +
- "\uF528\uF529\uF52A\uF52B\uF52C\uF52D\uF52E\uF52F" +
- "\uF530\uF531\uF532\uF533\uF534\uF535\uF536\uF537" +
- "\uF538\uF539\uF53A\uF53B\uF53C\uF53D\uF53E\uF53F" +
- "\uF540\uF541\uF542\uF543\uF544\uF545\uF546\uF547" +
- "\uF548\uF549\uF54A\uF54B\uF54C\uF54D\uF54E\uF54F" +
- "\uF550\uF551\uF552\uF553\uF554\uF555\uF556\uF557" +
- "\uF558\uF559\uF55A\uF55B\uF55C\uF55D\uF55E\uF55F" +
- "\uF560\uF561\uF562\uF563\uF564\uF565\uF566\uF567" +
- "\uF568\uF569\uF56A\uF56B\uF56C\uF56D\uF56E\uF56F" +
- "\uF570\uF571\uF572\uF573\uF574\uF575\uF576\uF577" +
- "\uF578\uF579\uF57A\uF57B\uF57C\uF57D\uF57E\uF57F" +
- "\uF580\uF581\uF582\uF583\uF584\uF585\uF586\uF587" +
- "\uF588\uF589\uF58A\uF58B\uF58C\uF58D\uF58E\uF58F" +
- "\uF590\uF591\uF592\uF593\uF594\uF595\uF596\uF597" +
- "\uF598\uF599\uF59A\uF59B\uF59C\uF59D\uF59E\uF59F" +
- "\uF5A0\uF5A1\uF5A2\uF5A3\uF5A4\uF5A5\uF5A6\uF5A7" +
- "\uF5A8\uF5A9\uF5AA\uF5AB\uF5AC\uF5AD\uF5AE\uF5AF" +
- "\uF5B0\uF5B1\uF5B2\uF5B3\uF5B4\uF5B5\uF5B6\uF5B7" +
- "\uF5B8\uF5B9\uF5BA\uF5BB\uF5BC\uF5BD\uF5BE\uF5BF" +
- "\uF5C0\uF5C1\uF5C2\uF5C3\uF5C4\uF5C5\uF5C6\uF5C7" +
- "\uF5C8\uF5C9\uF5CA\uF5CB\uF5CC\uF5CD\uF5CE\uF5CF" +
- "\uF5D0\uF5D1\uF5D2\uF5D3\uF5D4\uF5D5\uF5D6\uF5D7" +
- "\uF5D8\uF5D9\uF5DA\uF5DB\uF5DC\uF5DD\uF5DE\uF5DF" +
- "\uF5E0\uF5E1\uF5E2\uF5E3\uF5E4\uF5E5\uF5E6\uF5E7" +
- "\uF5E8\uF5E9\uF5EA\uF5EB\uF5EC\uF5ED\uF5EE\uF5EF" +
- "\uF5F0\uF5F1\uF5F2\uF5F3\uF5F4\uF5F5\uF5F6\uF5F7" +
- "\uF5F8\uF5F9\uF5FA\uF5FB\uF5FC\uF5FD\uF5FE\uF5FF" +
- "\uF600\uF601\uF602\uF603\uF604\uF605\uF606\uF607" +
- "\uF608\uF609\uF60A\uF60B\uF60C\uF60D\uF60E\uF60F" +
- "\uF610\uF611\uF612\uF613\uF614\uF615\uF616\uF617" +
- "\uF618\uF619\uF61A\uF61B\uF61C\uF61D\uF61E\uF61F" +
- "\uF620\uF621\uF622\uF623\uF624\uF625\uF626\uF627" +
- "\uF628\uF629\uF62A\uF62B\uF62C\uF62D\uF62E\uF62F" +
- "\uF630\uF631\uF632\uF633\uF634\uF635\uF636\uF637" +
- "\uF638\uF639\uF63A\uF63B\uF63C\uF63D\uF63E\uF63F" +
- "\uF640\uF641\uF642\uF643\uF644\uF645\uF646\uF647" +
- "\uF648\uF649\uF64A\uF64B\uF64C\uF64D\uF64E\uF64F" +
- "\uF650\uF651\uF652\uF653\uF654\uF655\uF656\uF657" +
- "\uF658\uF659\uF65A\uF65B\uF65C\uF65D\uF65E\uF65F" +
- "\uF660\uF661\uF662\uF663\uF664\uF665\uF666\uF667" +
- "\uF668\uF669\uF66A\uF66B\uF66C\uF66D\uF66E\uF66F" +
- "\uF670\uF671\uF672\uF673\uF674\uF675\uF676\uF677" +
- "\uF678\uF679\uF67A\uF67B\uF67C\uF67D\uF67E\uF67F" +
- "\uF680\uF681\uF682\uF683\uF684\uF685\uF686\uF687" +
- "\uF688\uF689\uF68A\uF68B\uF68C\uF68D\uF68E\uF68F" +
- "\uF690\uF691\uF692\uF693\uF694\uF695\uF696\uF697" +
- "\uF698\uF699\uF69A\uF69B\uF69C\uF69D\uF69E\uF69F" +
- "\uF6A0\uF6A1\uF6A2\uF6A3\uF6A4\uF6A5\uF6A6\uF6A7" +
- "\uF6A8\uF6A9\uF6AA\uF6AB\uF6AC\uF6AD\uF6AE\uF6AF" +
- "\uF6B0\uF6B1\uF6B2\uF6B3\uF6B4\uF6B5\uF6B6\uF6B7" +
- "\uF6B8\uF6B9\uF6BA\uF6BB\uF6BC\uF6BD\uF6BE\uF6BF" +
- "\uF6C0\uF6C1\uF6C2\uF6C3\uF6C4\uF6C5\uF6C6\uF6C7" +
- "\uF6C8\uF6C9\uF6CA\uF6CB\uF6CC\uF6CD\uF6CE\uF6CF" +
- "\uF6D0\uF6D1\uF6D2\uF6D3\uF6D4\uF6D5\uF6D6\uF6D7" +
- "\uF6D8\uF6D9\uF6DA\uF6DB\uF6DC\uF6DD\uF6DE\uF6DF" +
- "\uF6E0\uF6E1\uF6E2\uF6E3\uF6E4\uF6E5\uF6E6\uF6E7" +
- "\uF6E8\uF6E9\uF6EA\uF6EB\uF6EC\uF6ED\uF6EE\uF6EF" +
- "\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4\uF6F5\uF6F6\uF6F7" +
- "\uF6F8\uF6F9\uF6FA\uF6FB\uF6FC\uF6FD\uF6FE\uF6FF" +
- "\uF700\uF701\uF702\uF703\uF704\uF705\uF706\uF707" +
- "\uF708\uF709\uF70A\uF70B\uF70C\uF70D\uF70E\uF70F" +
- "\uF710\uF711\uF712\uF713\uF714\uF715\uF716\uF717" +
- "\uF718\uF719\uF71A\uF71B\uF71C\uF71D\uF71E\uF71F" +
- "\uF720\uF721\uF722\uF723\uF724\uF725\uF726\uF727" +
- "\uF728\uF729\uF72A\uF72B\uF72C\uF72D\uF72E\uF72F" +
- "\uF730\uF731\uF732\uF733\uF734\uF735\uF736\uF737" +
- "\uF738\uF739\uF73A\uF73B\uF73C\uF73D\uF73E\uF73F" +
- "\uF740\uF741\uF742\uF743\uF744\uF745\uF746\uF747" +
- "\uF748\uF749\uF74A\uF74B\uF74C\uF74D\uF74E\uF74F" +
- "\uF750\uF751\uF752\uF753\uF754\uF755\uF756\uF757" +
- "\uF758\uF759\uF75A\uF75B\uF75C\uF75D\uF75E\uF75F" +
- "\uF760\uF761\uF762\uF763\uF764\uF765\uF766\uF767" +
- "\uF768\uF769\uF76A\uF76B\uF76C\uF76D\uF76E\uF76F" +
- "\uF770\uF771\uF772\uF773\uF774\uF775\uF776\uF777" +
- "\uF778\uF779\uF77A\uF77B\uF77C\uF77D\uF77E\uF77F" +
- "\uF780\uF781\uF782\uF783\uF784\uF785\uF786\uF787" +
- "\uF788\uF789\uF78A\uF78B\uF78C\uF78D\uF78E\uF78F" +
- "\uF790\uF791\uF792\uF793\uF794\uF795\uF796\uF797" +
- "\uF798\uF799\uF79A\uF79B\uF79C\uF79D\uF79E\uF79F" +
- "\uF7A0\uF7A1\uF7A2\uF7A3\uF7A4\uF7A5\uF7A6\uF7A7" +
- "\uF7A8\uF7A9\uF7AA\uF7AB\uF7AC\uF7AD\uF7AE\uF7AF" +
- "\uF7B0\uF7B1\uF7B2\uF7B3\uF7B4\uF7B5\uF7B6\uF7B7" +
- "\uF7B8\uF7B9\uF7BA\uF7BB\uF7BC\uF7BD\uF7BE\uF7BF" +
- "\uF7C0\uF7C1\uF7C2\uF7C3\uF7C4\uF7C5\uF7C6\uF7C7" +
- "\uF7C8\uF7C9\uF7CA\uF7CB\uF7CC\uF7CD\uF7CE\uF7CF" +
- "\uF7D0\uF7D1\uF7D2\uF7D3\uF7D4\uF7D5\uF7D6\uF7D7" +
- "\uF7D8\uF7D9\uF7DA\uF7DB\uF7DC\uF7DD\uF7DE\uF7DF" +
- "\uF7E0\uF7E1\uF7E2\uF7E3\uF7E4\uF7E5\uF7E6\uF7E7" +
- "\uF7E8\uF7E9\uF7EA\uF7EB\uF7EC\uF7ED\uF7EE\uF7EF" +
- "\uF7F0\uF7F1\uF7F2\uF7F3\uF7F4\uF7F5\uF7F6\uF7F7" +
- "\uF7F8\uF7F9\uF7FA\uF7FB\uF7FC\uF7FD\uF7FE\uF7FF" +
- "\uF800\uF801\uF802\uF803\uF804\uF805\uF806\uF807" +
- "\uF808\uF809\uF80A\uF80B\uF80C\uF80D\uF80E\uF80F" +
- "\uF810\uF811\uF812\uF813\uF814\uF815\uF816\uF817" +
- "\uF818\uF819\uF81A\uF81B\uF81C\uF81D\uF81E\uF81F" +
- "\uF820\uF821\uF822\uF823\uF824\uF825\uF826\uF827" +
- "\uF828\uF829\uF82A\uF82B\uF82C\uF82D\uF82E\uF82F" +
- "\uF830\uF831\uF832\uF833\uF834\uF835\uF836\uF837" +
- "\uF838\uF839\uF83A\uF83B\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD"
- ;
- mappingTableG2ad =
- "\u309B\u309C\u00A8\uFF3E\u30FD\u30FE\u309D\u309E" +
- "\u02BA\uF83E\u3005\u3006\u3007\u30FC\u2010\uFF3B" +
- "\uFF3D\u00B4\u2033\u273D\u3013\u2208\u220B\u2286" +
- "\u2287\u2282\u2283\u2227\u2228\u21D2\u21D4\u2200" +
- "\u2203\u2312\u2202\u2207\u226A\u226B\u223D\u221D" +
- "\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021" +
- "\u00B6\u25EF\u3041\u3042\u3043\u3044\u3045\u3046" +
- "\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E" +
- "\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056" +
- "\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E" +
- "\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066" +
- "\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E" +
- "\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076" +
- "\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E" +
- "\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086" +
- "\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E" +
- "\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3" +
- "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB" +
- "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3" +
- "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB" +
- "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3" +
- "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB" +
- "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3" +
- "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB" +
- "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3" +
- "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB" +
- "\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3" +
- "\u30F4\u30F5\u30F6\u0410\u0411\u0412\u0413\u0414" +
- "\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B" +
- "\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423" +
- "\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B" +
- "\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433" +
- "\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A" +
- "\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442" +
- "\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A" +
- "\u044B\u044C\u044D\u044E\u044F\u2501\u2503\u250F" +
- "\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B" +
- "\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525" +
- "\u2538\u2542\uF83F\uF840\uF841\uF842\u21E7\u21B8" +
- "\u21B9\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121" +
- "\u6491\uFA0C\u691E\uFA0D\u6EB8\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
- "\uFFFD\uFFFD\uFFFD\uFFFD"
- ;
- }
- }
-
- protected static class Encoder extends SimpleEUCEncoder {
-
- public Encoder(Charset cs) {
- super(cs);
- super.mask1 = 0xFFC0;
- super.mask2 = 0x003F;
- super.shift = 6;
- super.index1 = index1;
- super.index2 = index2;
- super.index2a = index2a;
- super.index2b = index2b;
- super.index2c = index2c;
- }
-
- private static final short index1[] =
- {
- 19535, 13095, 12408, 11748, 223, 223, 223, 223, // 0000 - 01FF
- 223, 223, 9457, 14043, 223, 223, 10349, 11067, // 0200 - 03FF
- 24969, 10729, 223, 223, 223, 223, 223, 223, // 0400 - 05FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 0600 - 07FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 0800 - 09FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 0A00 - 0BFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 0C00 - 0DFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 0E00 - 0FFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1000 - 11FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1200 - 13FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1400 - 15FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1600 - 17FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1800 - 19FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1A00 - 1BFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1C00 - 1DFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 1E00 - 1FFF
- 24401, 223, 223, 223, 24353, 12626, 9241, 8204, // 2000 - 21FF
- 10119, 9193, 16486, 223, 8250, 223, 223, 223, // 2200 - 23FF
- 9582, 9616, 223, 223, 9083, 13986, 24230, 15436, // 2400 - 25FF
- 21619, 8517, 223, 223, 226, 223, 223, 223, // 2600 - 27FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 2800 - 29FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 2A00 - 2BFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 2C00 - 2DFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 2E00 - 2FFF
- 7839, 22767, 7071, 6753, 10302, 223, 223, 223, // 3000 - 31FF
- 8269, 223, 7166, 223, 223, 223, 8124, 9301, // 3200 - 33FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3400 - 35FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3600 - 37FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3800 - 39FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3A00 - 3BFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3C00 - 3DFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 3E00 - 3FFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4000 - 41FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4200 - 43FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4400 - 45FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4600 - 47FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4800 - 49FF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4A00 - 4BFF
- 223, 223, 223, 223, 223, 223, 223, 223, // 4C00 - 4DFF
- 6625, 8699, 27828, 28393, 28329, 6879, 28265, 28014, // 4E00 - 4FFF
- 27766, 27640, 27576, 21185, 27512, 27325, 27198, 27888, // 5000 - 51FF
- 27073, 20233, 26946, 26882, 17057, 26818, 27387, 11327, // 5200 - 53FF
- 19346, 26754, 26690, 26626, 26179, 26562, 26498, 26434, // 5400 - 55FF
- 26370, 26306, 26053, 25989, 18008, 25863, 25799, 19472, // 5600 - 57FF
- 25735, 8573, 25671, 17817, 9518, 25607, 25480, 25416, // 5800 - 59FF
- 25289, 25225, 7520, 25161, 7647, 25097, 25033, 24846, // 5A00 - 5BFF
- 289, 24656, 21560, 12466, 24592, 24528, 24167, 24103, // 5C00 - 5DFF
- 13031, 24039, 23912, 156, 12969, 23848, 23784, 23720, // 5E00 - 5FFF
- 23597, 23533, 23469, 23405, 23341, 23214, 23150, 11202, // 6000 - 61FF
- 23086, 23022, 22958, 11451, 22831, 22704, 22577, 22454, // 6200 - 63FF
- 11806, 22390, 14386, 9741, 22326, 8010, 22262, 6816, // 6400 - 65FF
- 22138, 28077, 21948, 21884, 21820, 23656, 28140, 21756, // 6600 - 67FF
- 7885, 21692, 21502, 24906, 22198, 21377, 12060, 27261, // 6800 - 69FF
- 21313, 21249, 21122, 11389, 21058, 27009, 20994, 20930, // 6A00 - 6BFF
- 20866, 20739, 20675, 20489, 20425, 20361, 20297, 20170, // 6C00 - 6DFF
- 20106, 19983, 8325, 19919, 19855, 19791, 19727, 19663, // 6E00 - 6FFF
- 19599, 19283, 10665, 22513, 19159, 26116, 19095, 19031, // 7000 - 71FF
- 26242, 25543, 18967, 18903, 18839, 18775, 18711, 18647, // 7200 - 73FF
- 18583, 18519, 18455, 18391, 18327, 18263, 18199, 18135, // 7400 - 75FF
- 17945, 10475, 25352, 11139, 24719, 19219, 17881, 10181, // 7600 - 77FF
- 10243, 27134, 17691, 24782, 24464, 17627, 23975, 17502, // 7800 - 79FF
- 17438, 17374, 17310, 17246, 17121, 16998, 9678, 16934, // 7A00 - 7BFF
- 16870, 16806, 16742, 20548, 16678, 16614, 16550, 16424, // 7C00 - 7DFF
- 27448, 16297, 16204, 223, 15502, 28201, 21438, 16140, // 7E00 - 7FFF
- 16076, 17563, 24292, 7947, 15949, 17182, 15885, 15821, // 8000 - 81FF
- 15757, 15693, 15566, 15315, 15251, 15187, 23277, 15123, // 8200 - 83FF
- 22894, 14960, 27950, 14896, 14769, 14642, 14578, 14514, // 8400 - 85FF
- 14450, 14324, 20042, 14197, 14133, 13924, 22640, 13860, // 8600 - 87FF
- 13796, 13732, 13542, 13415, 22011, 22074, 20802, 13351, // 8800 - 89FF
- 13287, 13223, 20611, 13159, 12813, 12749, 12594, 223, // 8A00 - 8BFF
- 21628, 19409, 12530, 12344, 12252, 12906, 12188, 18071, // 8C00 - 8DFF
- 12124, 11998, 17754, 11934, 11870, 11707, 7203, 27702, // 8E00 - 8FFF
- 11643, 16360, 11579, 16012, 11515, 11266, 11003, 10939, // 9000 - 91FF
- 10875, 10811, 10603, 10539, 10413, 10055, 9997, 9933, // 9200 - 93FF
- 9869, 9805, 9451, 223, 223, 11077, 9387, 9147, // 9400 - 95FF
- 15059, 9019, 8955, 8891, 8827, 25925, 8763, 15629, // 9600 - 97FF
- 8637, 15378, 14069, 8453, 8389, 15023, 93, 14832, // 9800 - 99FF
- 14705, 8074, 12280, 7775, 14260, 13605, 7711, 7584, // 9A00 - 9BFF
- 12685, 7459, 223, 16233, 7395, 7331, 7267, 13668, // 9C00 - 9DFF
- 7135, 10747, 7007, 6943, 6689, 6561, 51, 223, // 9E00 - 9FFF
- 223, 223, 223, 223, 223, 223, 223, 223, // A000 - A1FF
- 223, 223, 223, 223, 223, 223, 223, 223, // A200 - A3FF
- 223, 223, 223, 223, 223, 223, 223, 223, // A400 - A5FF
- 223, 223, 223, 223, 223, 223, 223, 223, // A600 - A7FF
- 223, 223, 223, 223, 223, 223, 223, 223, // A800 - A9FF
- 223, 223, 223, 223, 223, 223, 223, 223, // AA00 - ABFF
- 223, 223, 223, 223, 223, 223, 223, 223, // AC00 - ADFF
- 223, 223, 223, 223, 223, 223, 223, 223, // AE00 - AFFF
- 223, 223, 223, 223, 223, 223, 223, 223, // B000 - B1FF
- 223, 223, 223, 223, 223, 223, 223, 223, // B200 - B3FF
- 223, 223, 223, 223, 223, 223, 223, 223, // B400 - B5FF
- 223, 223, 223, 223, 223, 223, 223, 223, // B600 - B7FF
- 223, 223, 223, 223, 223, 223, 223, 223, // B800 - B9FF
- 223, 223, 223, 223, 223, 223, 223, 223, // BA00 - BBFF
- 223, 223, 223, 223, 223, 223, 223, 223, // BC00 - BDFF
- 223, 223, 223, 223, 223, 223, 223, 223, // BE00 - BFFF
- 223, 223, 223, 223, 223, 223, 223, 223, // C000 - C1FF
- 223, 223, 223, 223, 223, 223, 223, 223, // C200 - C3FF
- 223, 223, 223, 223, 223, 223, 223, 223, // C400 - C5FF
- 223, 223, 223, 223, 223, 223, 223, 223, // C600 - C7FF
- 223, 223, 223, 223, 223, 223, 223, 223, // C800 - C9FF
- 223, 223, 223, 223, 223, 223, 223, 223, // CA00 - CBFF
- 223, 223, 223, 223, 223, 223, 223, 223, // CC00 - CDFF
- 223, 223, 223, 223, 223, 223, 223, 223, // CE00 - CFFF
- 223, 223, 223, 223, 223, 223, 223, 223, // D000 - D1FF
- 223, 223, 223, 223, 223, 223, 223, 223, // D200 - D3FF
- 223, 223, 223, 223, 223, 223, 223, 223, // D400 - D5FF
- 223, 223, 223, 223, 223, 223, 223, 223, // D600 - D7FF
- 223, 223, 223, 223, 223, 223, 223, 223, // D800 - D9FF
- 223, 223, 223, 223, 223, 223, 223, 223, // DA00 - DBFF
- 223, 223, 223, 223, 223, 223, 223, 223, // DC00 - DDFF
- 223, 223, 223, 223, 223, 223, 223, 223, // DE00 - DFFF
- 6497, 6433, 6369, 6305, 6241, 6177, 6113, 6049, // E000 - E1FF
- 5985, 5921, 5857, 5793, 5729, 5665, 5601, 5537, // E200 - E3FF
- 5473, 5409, 5345, 5281, 5217, 5153, 5089, 5025, // E400 - E5FF
- 4961, 4897, 4833, 4769, 4705, 4641, 4577, 4513, // E600 - E7FF
- 4449, 4385, 4321, 4257, 4193, 4129, 4065, 4001, // E800 - E9FF
- 3937, 3873, 3809, 3745, 3681, 3617, 3553, 3489, // EA00 - EBFF
- 3425, 3361, 3297, 3233, 3169, 3105, 3041, 2977, // EC00 - EDFF
- 2913, 2849, 2785, 2721, 2657, 2593, 2529, 2465, // EE00 - EFFF
- 2401, 2337, 2273, 2209, 2145, 2081, 2017, 1953, // F000 - F1FF
- 1889, 1825, 1761, 1697, 1633, 1569, 1505, 1441, // F200 - F3FF
- 1377, 1313, 1249, 1185, 1121, 1057, 993, 929, // F400 - F5FF
- 865, 801, 737, 673, 609, 545, 481, 417, // F600 - F7FF
- 353, 220, 223, 223, 223, 223, 223, 223, // F800 - F9FF
- 15488, 223, 223, 223, 223, 223, 223, 223, // FA00 - FBFF
- 223, 223, 223, 223, 223, 223, 223, 223, // FC00 - FDFF
- 9323, 0, 223, 223, 13478, 12876, 223, 8158,
- };
-
- private final static String index2;
- private final static String index2a;
- private final static String index2b;
- private final static String index2c;
- static {
- index2 =
- "\u0000\uA1D5\u0000\uA1D8\u0000\uA1D9\u0000\uA1DC\u0000\uA1DD" + // 0 - 4
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2A7" + // 5 - 9
- "\u0000\uA2A8\u0000\uA2AB\u0000\uA2AC\u0000\uA2A9\u0000\uA2AA" + // 10 - 14
- "\u0000\uA1BD\u0000\uA1AE\u0000\uA1AF\u0000\uA1B0\u0000\u0000" + // 15 - 19
- "\u0000\uA1B2\u0000\uA1B3\u0000\uA1B4\u0000\uA1B5\u0000\uA1B9" + // 20 - 24
- "\u0000\uA1DE\u0000\uA1DF\u0000\uA1E0\u0000\uA1E1\u0000\uA1E2" + // 25 - 29
- "\u0000\uA1E3\u0000\uA2AD\u0000\uA2AE\u0000\uA2AF\u0000\uA2BF" + // 30 - 34
- "\u0000\uA2C0\u0000\uA2C1\u0000\uA2C2\u0000\uA2C3\u0000\u0000" + // 35 - 39
- "\u0000\uA2E2\u0000\uA2EC\u0000\uA2ED\u0000\uA2EE\u0000\u0000" + // 40 - 44
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 45 - 49
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 50 - 54
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 55 - 59
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BE" + // 60 - 64
- "\u0000\u0000\u0000\u0000\u0000\uF8B2\u8EA2\uEBCD\u8EA2\uEDC3" + // 65 - 69
- "\u0000\u0000\u0000\uFCB3\u8EA2\uEEFB\u0000\u0000\u0000\u0000" + // 70 - 74
- "\u8EA2\uF2C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BF" + // 75 - 79
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1C2\u0000\u0000" + // 80 - 84
- "\u8EA2\uEEFC\u0000\u0000\u8EA2\uF1EF\u0000\u0000\u0000\u0000" + // 85 - 89
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 90 - 94
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 95 - 99
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 100 - 104
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 105 - 109
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 110 - 114
- "\u0000\uD3FB\u8EA2\uBAB4\u8EA2\uE0E1\u0000\uD3FC\u0000\u0000" + // 115 - 119
- "\u0000\u0000\u8EA2\uCFBA\u8EA2\uCFB9\u8EA2\uDBEC\u0000\u0000" + // 120 - 124
- "\u0000\u0000\u8EA2\uE0E3\u0000\u0000\u8EA2\uE0E2\u0000\u0000" + // 125 - 129
- "\u0000\uF7F6\u8EA2\uE7FD\u8EA2\uE7FE\u0000\uFAD4\u0000\u0000" + // 130 - 134
- "\u0000\u0000\u8EA2\uF2A2\u0000\uD8EB\u0000\uE3A6\u0000\uE3A5" + // 135 - 139
- "\u8EA2\uC8EA\u8EA2\uC8EC\u0000\uE7EA\u8EA2\uC8EB\u0000\uE7E9" + // 140 - 144
- "\u0000\uE7EB\u8EA2\uC8ED\u0000\u0000\u0000\u0000\u0000\u0000" + // 145 - 149
- "\u8EA2\uCFBC\u8EA2\uCFBE\u8EA2\uCFBD\u0000\u0000\u8EA2\uCFC0" + // 150 - 154
- "\u0000\u0000\u0000\u0000\u0000\uDFA1\u0000\uDFA2\u0000\u0000" + // 155 - 159
- "\u0000\uDFA3\u8EA2\uC2E3\u8EA2\uC2E5\u8EA2\uC2E7\u0000\uE3EE" + // 160 - 164
- "\u0000\uE3ED\u0000\uDEFE\u8EA2\uC2E6\u8EA2\uC2E4\u0000\u0000" + // 165 - 169
- "\u8EA2\uC9FD\u0000\u0000\u0000\u0000\u8EA2\uC9FB\u8EA2\uCAA3" + // 170 - 174
- "\u0000\uE8E0\u8EA2\uCAA4\u8EA2\uCAA1\u0000\uE8E1\u8EA2\uC9FC" + // 175 - 179
- "\u8EA2\uC9FA\u8EA2\uCAA2\u0000\uECDA\u8EA2\uD0BC\u8EA2\uC9FE" + // 180 - 184
- "\u0000\uECDC\u8EA2\uD0BD\u0000\uECDB\u0000\uECDE\u8EA2\uD0BE" + // 185 - 189
- "\u0000\uECD9\u0000\uECDD\u0000\u0000\u8EA2\uD6FD\u8EA2\uD6FB" + // 190 - 194
- "\u8EA2\uD6FA\u8EA2\uD6FC\u8EA2\uD6F9\u0000\u0000\u0000\u0000" + // 195 - 199
- "\u0000\uF8B3\u0000\u0000\u8EA2\uE8F2\u8EA2\uE8F3\u0000\u0000" + // 200 - 204
- "\u8EA2\uEBD9\u8EA2\uEDCD\u0000\uFDA2\u0000\uA7D5\u0000\u0000" + // 205 - 209
- "\u0000\uCDB7\u0000\uCAAC\u0000\u0000\u0000\u0000\u0000\uD0FA" + // 210 - 214
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC4DC\u0000\uC5BD" + // 215 - 219
- "\u8EAD\uA4BA\u8EAD\uA4BB\u8EAD\uA4BC\u0000\u0000\u0000\u0000" + // 220 - 224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 225 - 229
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 230 - 234
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 235 - 239
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 240 - 244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 245 - 249
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 250 - 254
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 255 - 259
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 260 - 264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 265 - 269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 270 - 274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 275 - 279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 280 - 284
- "\u0000\u0000\u0000\u0000\u8EAD\uA1B4\u0000\u0000\u0000\u0000" + // 285 - 289
- "\u0000\uD0EC\u0000\u0000\u8EA2\uAEEB\u0000\uD5AB\u0000\u0000" + // 290 - 294
- "\u0000\u0000\u0000\uD9F2\u0000\uD9F1\u0000\uD9F0\u0000\uDEF1" + // 295 - 299
- "\u0000\uDEF2\u8EA2\uBBBB\u0000\uE8D7\u0000\uF0D2\u0000\uC4D1" + // 300 - 304
- "\u8EA2\uA1BC\u0000\uC5B7\u8EA2\uA1D5\u0000\u0000\u0000\u0000" + // 305 - 309
- "\u8EA2\uA2B4\u0000\uC7FA\u0000\u0000\u0000\u0000\u0000\u0000" + // 310 - 314
- "\u0000\uCCFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 315 - 319
- "\u8EA2\uC2D1\u0000\u0000\u0000\u0000\u0000\uC4D2\u0000\u0000" + // 320 - 324
- "\u0000\uC5B8\u8EA2\uA2B5\u0000\u0000\u0000\u0000\u8EA2\uA3DE" + // 325 - 329
- "\u0000\u0000\u8EA2\uA3DF\u0000\u0000\u0000\uC9FC\u0000\u0000" + // 330 - 334
- "\u0000\u0000\u0000\u0000\u8EA2\uBBBC\u0000\uDEF3\u0000\u0000" + // 335 - 339
- "\u8EA2\uC2D2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3D3" + // 340 - 344
- "\u0000\uC4D3\u0000\uC4E7\u0000\uC5B9\u8EA2\uA1D6\u0000\uC6C7" + // 345 - 349
- "\u0000\u0000\u0000\uCAA2\u0000\uCAA1\u8EAC\uE2C3\u8EAC\uE2C4" + // 350 - 354
- "\u8EAC\uE2C5\u8EAC\uE2C6\u8EAC\uE2C7\u8EAC\uE2C8\u8EAC\uE2C9" + // 355 - 359
- "\u8EAC\uE2CA\u8EAC\uE2CB\u8EAC\uE2CC\u8EAC\uE2CD\u8EAC\uE2CE" + // 360 - 364
- "\u8EAC\uE2CF\u8EAC\uE2D0\u8EAC\uE2D1\u8EAC\uE2D2\u8EAC\uE2D3" + // 365 - 369
- "\u8EAC\uE2D4\u8EAC\uE2D5\u8EAC\uE2D6\u8EAC\uE2D7\u8EAC\uE2D8" + // 370 - 374
- "\u8EAC\uE2D9\u8EAC\uE2DA\u8EAC\uE2DB\u8EAC\uE2DC\u8EAC\uE2DD" + // 375 - 379
- "\u8EAC\uE2DE\u8EAC\uE2DF\u8EAC\uE2E0\u8EAC\uE2E1\u8EAC\uE2E2" + // 380 - 384
- "\u8EAC\uE2E3\u8EAC\uE2E4\u8EAC\uE2E5\u8EAC\uE2E6\u8EAC\uE2E7" + // 385 - 389
- "\u8EAC\uE2E8\u8EAC\uE2E9\u8EAC\uE2EA\u8EAC\uE2EB\u8EAC\uE2EC" + // 390 - 394
- "\u8EAC\uE2ED\u8EAC\uE2EE\u8EAC\uE2EF\u8EAC\uE2F0\u8EAC\uE2F1" + // 395 - 399
- "\u8EAC\uE2F2\u8EAC\uE2F3\u8EAC\uE2F4\u8EAC\uE2F5\u8EAC\uE2F6" + // 400 - 404
- "\u8EAC\uE2F7\u8EAC\uE2F8\u8EAC\uE2F9\u8EAC\uE2FA\u8EAC\uE2FB" + // 405 - 409
- "\u8EAC\uE2FC\u8EAC\uE2FD\u8EAC\uE2FE\u0000\u0000\u0000\u0000" + // 410 - 414
- "\u8EAD\uA1AA\u8EAD\uA4B9\u8EAC\uE1E1\u8EAC\uE1E2\u8EAC\uE1E3" + // 415 - 419
- "\u8EAC\uE1E4\u8EAC\uE1E5\u8EAC\uE1E6\u8EAC\uE1E7\u8EAC\uE1E8" + // 420 - 424
- "\u8EAC\uE1E9\u8EAC\uE1EA\u8EAC\uE1EB\u8EAC\uE1EC\u8EAC\uE1ED" + // 425 - 429
- "\u8EAC\uE1EE\u8EAC\uE1EF\u8EAC\uE1F0\u8EAC\uE1F1\u8EAC\uE1F2" + // 430 - 434
- "\u8EAC\uE1F3\u8EAC\uE1F4\u8EAC\uE1F5\u8EAC\uE1F6\u8EAC\uE1F7" + // 435 - 439
- "\u8EAC\uE1F8\u8EAC\uE1F9\u8EAC\uE1FA\u8EAC\uE1FB\u8EAC\uE1FC" + // 440 - 444
- "\u8EAC\uE1FD\u8EAC\uE1FE\u8EAC\uE2A1\u8EAC\uE2A2\u8EAC\uE2A3" + // 445 - 449
- "\u8EAC\uE2A4\u8EAC\uE2A5\u8EAC\uE2A6\u8EAC\uE2A7\u8EAC\uE2A8" + // 450 - 454
- "\u8EAC\uE2A9\u8EAC\uE2AA\u8EAC\uE2AB\u8EAC\uE2AC\u8EAC\uE2AD" + // 455 - 459
- "\u8EAC\uE2AE\u8EAC\uE2AF\u8EAC\uE2B0\u8EAC\uE2B1\u8EAC\uE2B2" + // 460 - 464
- "\u8EAC\uE2B3\u8EAC\uE2B4\u8EAC\uE2B5\u8EAC\uE2B6\u8EAC\uE2B7" + // 465 - 469
- "\u8EAC\uE2B8\u8EAC\uE2B9\u8EAC\uE2BA\u8EAC\uE2BB\u8EAC\uE2BC" + // 470 - 474
- "\u8EAC\uE2BD\u8EAC\uE2BE\u8EAC\uE2BF\u8EAC\uE2C0\u8EAC\uE2C1" + // 475 - 479
- "\u8EAC\uE2C2\u8EAC\uE1A1\u8EAC\uE1A2\u8EAC\uE1A3\u8EAC\uE1A4" + // 480 - 484
- "\u8EAC\uE1A5\u8EAC\uE1A6\u8EAC\uE1A7\u8EAC\uE1A8\u8EAC\uE1A9" + // 485 - 489
- "\u8EAC\uE1AA\u8EAC\uE1AB\u8EAC\uE1AC\u8EAC\uE1AD\u8EAC\uE1AE" + // 490 - 494
- "\u8EAC\uE1AF\u8EAC\uE1B0\u8EAC\uE1B1\u8EAC\uE1B2\u8EAC\uE1B3" + // 495 - 499
- "\u8EAC\uE1B4\u8EAC\uE1B5\u8EAC\uE1B6\u8EAC\uE1B7\u8EAC\uE1B8" + // 500 - 504
- "\u8EAC\uE1B9\u8EAC\uE1BA\u8EAC\uE1BB\u8EAC\uE1BC\u8EAC\uE1BD" + // 505 - 509
- "\u8EAC\uE1BE\u8EAC\uE1BF\u8EAC\uE1C0\u8EAC\uE1C1\u8EAC\uE1C2" + // 510 - 514
- "\u8EAC\uE1C3\u8EAC\uE1C4\u8EAC\uE1C5\u8EAC\uE1C6\u8EAC\uE1C7" + // 515 - 519
- "\u8EAC\uE1C8\u8EAC\uE1C9\u8EAC\uE1CA\u8EAC\uE1CB\u8EAC\uE1CC" + // 520 - 524
- "\u8EAC\uE1CD\u8EAC\uE1CE\u8EAC\uE1CF\u8EAC\uE1D0\u8EAC\uE1D1" + // 525 - 529
- "\u8EAC\uE1D2\u8EAC\uE1D3\u8EAC\uE1D4\u8EAC\uE1D5\u8EAC\uE1D6" + // 530 - 534
- "\u8EAC\uE1D7\u8EAC\uE1D8\u8EAC\uE1D9\u8EAC\uE1DA\u8EAC\uE1DB" + // 535 - 539
- "\u8EAC\uE1DC\u8EAC\uE1DD\u8EAC\uE1DE\u8EAC\uE1DF\u8EAC\uE1E0" + // 540 - 544
- "\u8EAC\uE0BF\u8EAC\uE0C0\u8EAC\uE0C1\u8EAC\uE0C2\u8EAC\uE0C3" + // 545 - 549
- "\u8EAC\uE0C4\u8EAC\uE0C5\u8EAC\uE0C6\u8EAC\uE0C7\u8EAC\uE0C8" + // 550 - 554
- "\u8EAC\uE0C9\u8EAC\uE0CA\u8EAC\uE0CB\u8EAC\uE0CC\u8EAC\uE0CD" + // 555 - 559
- "\u8EAC\uE0CE\u8EAC\uE0CF\u8EAC\uE0D0\u8EAC\uE0D1\u8EAC\uE0D2" + // 560 - 564
- "\u8EAC\uE0D3\u8EAC\uE0D4\u8EAC\uE0D5\u8EAC\uE0D6\u8EAC\uE0D7" + // 565 - 569
- "\u8EAC\uE0D8\u8EAC\uE0D9\u8EAC\uE0DA\u8EAC\uE0DB\u8EAC\uE0DC" + // 570 - 574
- "\u8EAC\uE0DD\u8EAC\uE0DE\u8EAC\uE0DF\u8EAC\uE0E0\u8EAC\uE0E1" + // 575 - 579
- "\u8EAC\uE0E2\u8EAC\uE0E3\u8EAC\uE0E4\u8EAC\uE0E5\u8EAC\uE0E6" + // 580 - 584
- "\u8EAC\uE0E7\u8EAC\uE0E8\u8EAC\uE0E9\u8EAC\uE0EA\u8EAC\uE0EB" + // 585 - 589
- "\u8EAC\uE0EC\u8EAC\uE0ED\u8EAC\uE0EE\u8EAC\uE0EF\u8EAC\uE0F0" + // 590 - 594
- "\u8EAC\uE0F1\u8EAC\uE0F2\u8EAC\uE0F3\u8EAC\uE0F4\u8EAC\uE0F5" + // 595 - 599
- "\u8EAC\uE0F6\u8EAC\uE0F7\u8EAC\uE0F8\u8EAC\uE0F9\u8EAC\uE0FA" + // 600 - 604
- "\u8EAC\uE0FB\u8EAC\uE0FC\u8EAC\uE0FD\u8EAC\uE0FE\u8EAC\uDFDD" + // 605 - 609
- "\u8EAC\uDFDE\u8EAC\uDFDF\u8EAC\uDFE0\u8EAC\uDFE1\u8EAC\uDFE2" + // 610 - 614
- "\u8EAC\uDFE3\u8EAC\uDFE4\u8EAC\uDFE5\u8EAC\uDFE6\u8EAC\uDFE7" + // 615 - 619
- "\u8EAC\uDFE8\u8EAC\uDFE9\u8EAC\uDFEA\u8EAC\uDFEB\u8EAC\uDFEC" + // 620 - 624
- "\u8EAC\uDFED\u8EAC\uDFEE\u8EAC\uDFEF\u8EAC\uDFF0\u8EAC\uDFF1" + // 625 - 629
- "\u8EAC\uDFF2\u8EAC\uDFF3\u8EAC\uDFF4\u8EAC\uDFF5\u8EAC\uDFF6" + // 630 - 634
- "\u8EAC\uDFF7\u8EAC\uDFF8\u8EAC\uDFF9\u8EAC\uDFFA\u8EAC\uDFFB" + // 635 - 639
- "\u8EAC\uDFFC\u8EAC\uDFFD\u8EAC\uDFFE\u8EAC\uE0A1\u8EAC\uE0A2" + // 640 - 644
- "\u8EAC\uE0A3\u8EAC\uE0A4\u8EAC\uE0A5\u8EAC\uE0A6\u8EAC\uE0A7" + // 645 - 649
- "\u8EAC\uE0A8\u8EAC\uE0A9\u8EAC\uE0AA\u8EAC\uE0AB\u8EAC\uE0AC" + // 650 - 654
- "\u8EAC\uE0AD\u8EAC\uE0AE\u8EAC\uE0AF\u8EAC\uE0B0\u8EAC\uE0B1" + // 655 - 659
- "\u8EAC\uE0B2\u8EAC\uE0B3\u8EAC\uE0B4\u8EAC\uE0B5\u8EAC\uE0B6" + // 660 - 664
- "\u8EAC\uE0B7\u8EAC\uE0B8\u8EAC\uE0B9\u8EAC\uE0BA\u8EAC\uE0BB" + // 665 - 669
- "\u8EAC\uE0BC\u8EAC\uE0BD\u8EAC\uE0BE\u8EAC\uDEFB\u8EAC\uDEFC" + // 670 - 674
- "\u8EAC\uDEFD\u8EAC\uDEFE\u8EAC\uDFA1\u8EAC\uDFA2\u8EAC\uDFA3" + // 675 - 679
- "\u8EAC\uDFA4\u8EAC\uDFA5\u8EAC\uDFA6\u8EAC\uDFA7\u8EAC\uDFA8" + // 680 - 684
- "\u8EAC\uDFA9\u8EAC\uDFAA\u8EAC\uDFAB\u8EAC\uDFAC\u8EAC\uDFAD" + // 685 - 689
- "\u8EAC\uDFAE\u8EAC\uDFAF\u8EAC\uDFB0\u8EAC\uDFB1\u8EAC\uDFB2" + // 690 - 694
- "\u8EAC\uDFB3\u8EAC\uDFB4\u8EAC\uDFB5\u8EAC\uDFB6\u8EAC\uDFB7" + // 695 - 699
- "\u8EAC\uDFB8\u8EAC\uDFB9\u8EAC\uDFBA\u8EAC\uDFBB\u8EAC\uDFBC" + // 700 - 704
- "\u8EAC\uDFBD\u8EAC\uDFBE\u8EAC\uDFBF\u8EAC\uDFC0\u8EAC\uDFC1" + // 705 - 709
- "\u8EAC\uDFC2\u8EAC\uDFC3\u8EAC\uDFC4\u8EAC\uDFC5\u8EAC\uDFC6" + // 710 - 714
- "\u8EAC\uDFC7\u8EAC\uDFC8\u8EAC\uDFC9\u8EAC\uDFCA\u8EAC\uDFCB" + // 715 - 719
- "\u8EAC\uDFCC\u8EAC\uDFCD\u8EAC\uDFCE\u8EAC\uDFCF\u8EAC\uDFD0" + // 720 - 724
- "\u8EAC\uDFD1\u8EAC\uDFD2\u8EAC\uDFD3\u8EAC\uDFD4\u8EAC\uDFD5" + // 725 - 729
- "\u8EAC\uDFD6\u8EAC\uDFD7\u8EAC\uDFD8\u8EAC\uDFD9\u8EAC\uDFDA" + // 730 - 734
- "\u8EAC\uDFDB\u8EAC\uDFDC\u8EAC\uDEBB\u8EAC\uDEBC\u8EAC\uDEBD" + // 735 - 739
- "\u8EAC\uDEBE\u8EAC\uDEBF\u8EAC\uDEC0\u8EAC\uDEC1\u8EAC\uDEC2" + // 740 - 744
- "\u8EAC\uDEC3\u8EAC\uDEC4\u8EAC\uDEC5\u8EAC\uDEC6\u8EAC\uDEC7" + // 745 - 749
- "\u8EAC\uDEC8\u8EAC\uDEC9\u8EAC\uDECA\u8EAC\uDECB\u8EAC\uDECC" + // 750 - 754
- "\u8EAC\uDECD\u8EAC\uDECE\u8EAC\uDECF\u8EAC\uDED0\u8EAC\uDED1" + // 755 - 759
- "\u8EAC\uDED2\u8EAC\uDED3\u8EAC\uDED4\u8EAC\uDED5\u8EAC\uDED6" + // 760 - 764
- "\u8EAC\uDED7\u8EAC\uDED8\u8EAC\uDED9\u8EAC\uDEDA\u8EAC\uDEDB" + // 765 - 769
- "\u8EAC\uDEDC\u8EAC\uDEDD\u8EAC\uDEDE\u8EAC\uDEDF\u8EAC\uDEE0" + // 770 - 774
- "\u8EAC\uDEE1\u8EAC\uDEE2\u8EAC\uDEE3\u8EAC\uDEE4\u8EAC\uDEE5" + // 775 - 779
- "\u8EAC\uDEE6\u8EAC\uDEE7\u8EAC\uDEE8\u8EAC\uDEE9\u8EAC\uDEEA" + // 780 - 784
- "\u8EAC\uDEEB\u8EAC\uDEEC\u8EAC\uDEED\u8EAC\uDEEE\u8EAC\uDEEF" + // 785 - 789
- "\u8EAC\uDEF0\u8EAC\uDEF1\u8EAC\uDEF2\u8EAC\uDEF3\u8EAC\uDEF4" + // 790 - 794
- "\u8EAC\uDEF5\u8EAC\uDEF6\u8EAC\uDEF7\u8EAC\uDEF8\u8EAC\uDEF9" + // 795 - 799
- "\u8EAC\uDEFA\u8EAC\uDDD9\u8EAC\uDDDA\u8EAC\uDDDB\u8EAC\uDDDC" + // 800 - 804
- "\u8EAC\uDDDD\u8EAC\uDDDE\u8EAC\uDDDF\u8EAC\uDDE0\u8EAC\uDDE1" + // 805 - 809
- "\u8EAC\uDDE2\u8EAC\uDDE3\u8EAC\uDDE4\u8EAC\uDDE5\u8EAC\uDDE6" + // 810 - 814
- "\u8EAC\uDDE7\u8EAC\uDDE8\u8EAC\uDDE9\u8EAC\uDDEA\u8EAC\uDDEB" + // 815 - 819
- "\u8EAC\uDDEC\u8EAC\uDDED\u8EAC\uDDEE\u8EAC\uDDEF\u8EAC\uDDF0" + // 820 - 824
- "\u8EAC\uDDF1\u8EAC\uDDF2\u8EAC\uDDF3\u8EAC\uDDF4\u8EAC\uDDF5" + // 825 - 829
- "\u8EAC\uDDF6\u8EAC\uDDF7\u8EAC\uDDF8\u8EAC\uDDF9\u8EAC\uDDFA" + // 830 - 834
- "\u8EAC\uDDFB\u8EAC\uDDFC\u8EAC\uDDFD\u8EAC\uDDFE\u8EAC\uDEA1" + // 835 - 839
- "\u8EAC\uDEA2\u8EAC\uDEA3\u8EAC\uDEA4\u8EAC\uDEA5\u8EAC\uDEA6" + // 840 - 844
- "\u8EAC\uDEA7\u8EAC\uDEA8\u8EAC\uDEA9\u8EAC\uDEAA\u8EAC\uDEAB" + // 845 - 849
- "\u8EAC\uDEAC\u8EAC\uDEAD\u8EAC\uDEAE\u8EAC\uDEAF\u8EAC\uDEB0" + // 850 - 854
- "\u8EAC\uDEB1\u8EAC\uDEB2\u8EAC\uDEB3\u8EAC\uDEB4\u8EAC\uDEB5" + // 855 - 859
- "\u8EAC\uDEB6\u8EAC\uDEB7\u8EAC\uDEB8\u8EAC\uDEB9\u8EAC\uDEBA" + // 860 - 864
- "\u8EAC\uDCF7\u8EAC\uDCF8\u8EAC\uDCF9\u8EAC\uDCFA\u8EAC\uDCFB" + // 865 - 869
- "\u8EAC\uDCFC\u8EAC\uDCFD\u8EAC\uDCFE\u8EAC\uDDA1\u8EAC\uDDA2" + // 870 - 874
- "\u8EAC\uDDA3\u8EAC\uDDA4\u8EAC\uDDA5\u8EAC\uDDA6\u8EAC\uDDA7" + // 875 - 879
- "\u8EAC\uDDA8\u8EAC\uDDA9\u8EAC\uDDAA\u8EAC\uDDAB\u8EAC\uDDAC" + // 880 - 884
- "\u8EAC\uDDAD\u8EAC\uDDAE\u8EAC\uDDAF\u8EAC\uDDB0\u8EAC\uDDB1" + // 885 - 889
- "\u8EAC\uDDB2\u8EAC\uDDB3\u8EAC\uDDB4\u8EAC\uDDB5\u8EAC\uDDB6" + // 890 - 894
- "\u8EAC\uDDB7\u8EAC\uDDB8\u8EAC\uDDB9\u8EAC\uDDBA\u8EAC\uDDBB" + // 895 - 899
- "\u8EAC\uDDBC\u8EAC\uDDBD\u8EAC\uDDBE\u8EAC\uDDBF\u8EAC\uDDC0" + // 900 - 904
- "\u8EAC\uDDC1\u8EAC\uDDC2\u8EAC\uDDC3\u8EAC\uDDC4\u8EAC\uDDC5" + // 905 - 909
- "\u8EAC\uDDC6\u8EAC\uDDC7\u8EAC\uDDC8\u8EAC\uDDC9\u8EAC\uDDCA" + // 910 - 914
- "\u8EAC\uDDCB\u8EAC\uDDCC\u8EAC\uDDCD\u8EAC\uDDCE\u8EAC\uDDCF" + // 915 - 919
- "\u8EAC\uDDD0\u8EAC\uDDD1\u8EAC\uDDD2\u8EAC\uDDD3\u8EAC\uDDD4" + // 920 - 924
- "\u8EAC\uDDD5\u8EAC\uDDD6\u8EAC\uDDD7\u8EAC\uDDD8\u8EAC\uDCB7" + // 925 - 929
- "\u8EAC\uDCB8\u8EAC\uDCB9\u8EAC\uDCBA\u8EAC\uDCBB\u8EAC\uDCBC" + // 930 - 934
- "\u8EAC\uDCBD\u8EAC\uDCBE\u8EAC\uDCBF\u8EAC\uDCC0\u8EAC\uDCC1" + // 935 - 939
- "\u8EAC\uDCC2\u8EAC\uDCC3\u8EAC\uDCC4\u8EAC\uDCC5\u8EAC\uDCC6" + // 940 - 944
- "\u8EAC\uDCC7\u8EAC\uDCC8\u8EAC\uDCC9\u8EAC\uDCCA\u8EAC\uDCCB" + // 945 - 949
- "\u8EAC\uDCCC\u8EAC\uDCCD\u8EAC\uDCCE\u8EAC\uDCCF\u8EAC\uDCD0" + // 950 - 954
- "\u8EAC\uDCD1\u8EAC\uDCD2\u8EAC\uDCD3\u8EAC\uDCD4\u8EAC\uDCD5" + // 955 - 959
- "\u8EAC\uDCD6\u8EAC\uDCD7\u8EAC\uDCD8\u8EAC\uDCD9\u8EAC\uDCDA" + // 960 - 964
- "\u8EAC\uDCDB\u8EAC\uDCDC\u8EAC\uDCDD\u8EAC\uDCDE\u8EAC\uDCDF" + // 965 - 969
- "\u8EAC\uDCE0\u8EAC\uDCE1\u8EAC\uDCE2\u8EAC\uDCE3\u8EAC\uDCE4" + // 970 - 974
- "\u8EAC\uDCE5\u8EAC\uDCE6\u8EAC\uDCE7\u8EAC\uDCE8\u8EAC\uDCE9" + // 975 - 979
- "\u8EAC\uDCEA\u8EAC\uDCEB\u8EAC\uDCEC\u8EAC\uDCED\u8EAC\uDCEE" + // 980 - 984
- "\u8EAC\uDCEF\u8EAC\uDCF0\u8EAC\uDCF1\u8EAC\uDCF2\u8EAC\uDCF3" + // 985 - 989
- "\u8EAC\uDCF4\u8EAC\uDCF5\u8EAC\uDCF6\u8EAC\uDBD5\u8EAC\uDBD6" + // 990 - 994
- "\u8EAC\uDBD7\u8EAC\uDBD8\u8EAC\uDBD9\u8EAC\uDBDA\u8EAC\uDBDB" + // 995 - 999
- "\u8EAC\uDBDC\u8EAC\uDBDD\u8EAC\uDBDE\u8EAC\uDBDF\u8EAC\uDBE0" + // 1000 - 1004
- "\u8EAC\uDBE1\u8EAC\uDBE2\u8EAC\uDBE3\u8EAC\uDBE4\u8EAC\uDBE5" + // 1005 - 1009
- "\u8EAC\uDBE6\u8EAC\uDBE7\u8EAC\uDBE8\u8EAC\uDBE9\u8EAC\uDBEA" + // 1010 - 1014
- "\u8EAC\uDBEB\u8EAC\uDBEC\u8EAC\uDBED\u8EAC\uDBEE\u8EAC\uDBEF" + // 1015 - 1019
- "\u8EAC\uDBF0\u8EAC\uDBF1\u8EAC\uDBF2\u8EAC\uDBF3\u8EAC\uDBF4" + // 1020 - 1024
- "\u8EAC\uDBF5\u8EAC\uDBF6\u8EAC\uDBF7\u8EAC\uDBF8\u8EAC\uDBF9" + // 1025 - 1029
- "\u8EAC\uDBFA\u8EAC\uDBFB\u8EAC\uDBFC\u8EAC\uDBFD\u8EAC\uDBFE" + // 1030 - 1034
- "\u8EAC\uDCA1\u8EAC\uDCA2\u8EAC\uDCA3\u8EAC\uDCA4\u8EAC\uDCA5" + // 1035 - 1039
- "\u8EAC\uDCA6\u8EAC\uDCA7\u8EAC\uDCA8\u8EAC\uDCA9\u8EAC\uDCAA" + // 1040 - 1044
- "\u8EAC\uDCAB\u8EAC\uDCAC\u8EAC\uDCAD\u8EAC\uDCAE\u8EAC\uDCAF" + // 1045 - 1049
- "\u8EAC\uDCB0\u8EAC\uDCB1\u8EAC\uDCB2\u8EAC\uDCB3\u8EAC\uDCB4" + // 1050 - 1054
- "\u8EAC\uDCB5\u8EAC\uDCB6\u8EAC\uDAF3\u8EAC\uDAF4\u8EAC\uDAF5" + // 1055 - 1059
- "\u8EAC\uDAF6\u8EAC\uDAF7\u8EAC\uDAF8\u8EAC\uDAF9\u8EAC\uDAFA" + // 1060 - 1064
- "\u8EAC\uDAFB\u8EAC\uDAFC\u8EAC\uDAFD\u8EAC\uDAFE\u8EAC\uDBA1" + // 1065 - 1069
- "\u8EAC\uDBA2\u8EAC\uDBA3\u8EAC\uDBA4\u8EAC\uDBA5\u8EAC\uDBA6" + // 1070 - 1074
- "\u8EAC\uDBA7\u8EAC\uDBA8\u8EAC\uDBA9\u8EAC\uDBAA\u8EAC\uDBAB" + // 1075 - 1079
- "\u8EAC\uDBAC\u8EAC\uDBAD\u8EAC\uDBAE\u8EAC\uDBAF\u8EAC\uDBB0" + // 1080 - 1084
- "\u8EAC\uDBB1\u8EAC\uDBB2\u8EAC\uDBB3\u8EAC\uDBB4\u8EAC\uDBB5" + // 1085 - 1089
- "\u8EAC\uDBB6\u8EAC\uDBB7\u8EAC\uDBB8\u8EAC\uDBB9\u8EAC\uDBBA" + // 1090 - 1094
- "\u8EAC\uDBBB\u8EAC\uDBBC\u8EAC\uDBBD\u8EAC\uDBBE\u8EAC\uDBBF" + // 1095 - 1099
- "\u8EAC\uDBC0\u8EAC\uDBC1\u8EAC\uDBC2\u8EAC\uDBC3\u8EAC\uDBC4" + // 1100 - 1104
- "\u8EAC\uDBC5\u8EAC\uDBC6\u8EAC\uDBC7\u8EAC\uDBC8\u8EAC\uDBC9" + // 1105 - 1109
- "\u8EAC\uDBCA\u8EAC\uDBCB\u8EAC\uDBCC\u8EAC\uDBCD\u8EAC\uDBCE" + // 1110 - 1114
- "\u8EAC\uDBCF\u8EAC\uDBD0\u8EAC\uDBD1\u8EAC\uDBD2\u8EAC\uDBD3" + // 1115 - 1119
- "\u8EAC\uDBD4\u8EAC\uDAB3\u8EAC\uDAB4\u8EAC\uDAB5\u8EAC\uDAB6" + // 1120 - 1124
- "\u8EAC\uDAB7\u8EAC\uDAB8\u8EAC\uDAB9\u8EAC\uDABA\u8EAC\uDABB" + // 1125 - 1129
- "\u8EAC\uDABC\u8EAC\uDABD\u8EAC\uDABE\u8EAC\uDABF\u8EAC\uDAC0" + // 1130 - 1134
- "\u8EAC\uDAC1\u8EAC\uDAC2\u8EAC\uDAC3\u8EAC\uDAC4\u8EAC\uDAC5" + // 1135 - 1139
- "\u8EAC\uDAC6\u8EAC\uDAC7\u8EAC\uDAC8\u8EAC\uDAC9\u8EAC\uDACA" + // 1140 - 1144
- "\u8EAC\uDACB\u8EAC\uDACC\u8EAC\uDACD\u8EAC\uDACE\u8EAC\uDACF" + // 1145 - 1149
- "\u8EAC\uDAD0\u8EAC\uDAD1\u8EAC\uDAD2\u8EAC\uDAD3\u8EAC\uDAD4" + // 1150 - 1154
- "\u8EAC\uDAD5\u8EAC\uDAD6\u8EAC\uDAD7\u8EAC\uDAD8\u8EAC\uDAD9" + // 1155 - 1159
- "\u8EAC\uDADA\u8EAC\uDADB\u8EAC\uDADC\u8EAC\uDADD\u8EAC\uDADE" + // 1160 - 1164
- "\u8EAC\uDADF\u8EAC\uDAE0\u8EAC\uDAE1\u8EAC\uDAE2\u8EAC\uDAE3" + // 1165 - 1169
- "\u8EAC\uDAE4\u8EAC\uDAE5\u8EAC\uDAE6\u8EAC\uDAE7\u8EAC\uDAE8" + // 1170 - 1174
- "\u8EAC\uDAE9\u8EAC\uDAEA\u8EAC\uDAEB\u8EAC\uDAEC\u8EAC\uDAED" + // 1175 - 1179
- "\u8EAC\uDAEE\u8EAC\uDAEF\u8EAC\uDAF0\u8EAC\uDAF1\u8EAC\uDAF2" + // 1180 - 1184
- "\u8EAC\uD9D1\u8EAC\uD9D2\u8EAC\uD9D3\u8EAC\uD9D4\u8EAC\uD9D5" + // 1185 - 1189
- "\u8EAC\uD9D6\u8EAC\uD9D7\u8EAC\uD9D8\u8EAC\uD9D9\u8EAC\uD9DA" + // 1190 - 1194
- "\u8EAC\uD9DB\u8EAC\uD9DC\u8EAC\uD9DD\u8EAC\uD9DE\u8EAC\uD9DF" + // 1195 - 1199
- "\u8EAC\uD9E0\u8EAC\uD9E1\u8EAC\uD9E2\u8EAC\uD9E3\u8EAC\uD9E4" + // 1200 - 1204
- "\u8EAC\uD9E5\u8EAC\uD9E6\u8EAC\uD9E7\u8EAC\uD9E8\u8EAC\uD9E9" + // 1205 - 1209
- "\u8EAC\uD9EA\u8EAC\uD9EB\u8EAC\uD9EC\u8EAC\uD9ED\u8EAC\uD9EE" + // 1210 - 1214
- "\u8EAC\uD9EF\u8EAC\uD9F0\u8EAC\uD9F1\u8EAC\uD9F2\u8EAC\uD9F3" + // 1215 - 1219
- "\u8EAC\uD9F4\u8EAC\uD9F5\u8EAC\uD9F6\u8EAC\uD9F7\u8EAC\uD9F8" + // 1220 - 1224
- "\u8EAC\uD9F9\u8EAC\uD9FA\u8EAC\uD9FB\u8EAC\uD9FC\u8EAC\uD9FD" + // 1225 - 1229
- "\u8EAC\uD9FE\u8EAC\uDAA1\u8EAC\uDAA2\u8EAC\uDAA3\u8EAC\uDAA4" + // 1230 - 1234
- "\u8EAC\uDAA5\u8EAC\uDAA6\u8EAC\uDAA7\u8EAC\uDAA8\u8EAC\uDAA9" + // 1235 - 1239
- "\u8EAC\uDAAA\u8EAC\uDAAB\u8EAC\uDAAC\u8EAC\uDAAD\u8EAC\uDAAE" + // 1240 - 1244
- "\u8EAC\uDAAF\u8EAC\uDAB0\u8EAC\uDAB1\u8EAC\uDAB2\u8EAC\uD8EF" + // 1245 - 1249
- "\u8EAC\uD8F0\u8EAC\uD8F1\u8EAC\uD8F2\u8EAC\uD8F3\u8EAC\uD8F4" + // 1250 - 1254
- "\u8EAC\uD8F5\u8EAC\uD8F6\u8EAC\uD8F7\u8EAC\uD8F8\u8EAC\uD8F9" + // 1255 - 1259
- "\u8EAC\uD8FA\u8EAC\uD8FB\u8EAC\uD8FC\u8EAC\uD8FD\u8EAC\uD8FE" + // 1260 - 1264
- "\u8EAC\uD9A1\u8EAC\uD9A2\u8EAC\uD9A3\u8EAC\uD9A4\u8EAC\uD9A5" + // 1265 - 1269
- "\u8EAC\uD9A6\u8EAC\uD9A7\u8EAC\uD9A8\u8EAC\uD9A9\u8EAC\uD9AA" + // 1270 - 1274
- "\u8EAC\uD9AB\u8EAC\uD9AC\u8EAC\uD9AD\u8EAC\uD9AE\u8EAC\uD9AF" + // 1275 - 1279
- "\u8EAC\uD9B0\u8EAC\uD9B1\u8EAC\uD9B2\u8EAC\uD9B3\u8EAC\uD9B4" + // 1280 - 1284
- "\u8EAC\uD9B5\u8EAC\uD9B6\u8EAC\uD9B7\u8EAC\uD9B8\u8EAC\uD9B9" + // 1285 - 1289
- "\u8EAC\uD9BA\u8EAC\uD9BB\u8EAC\uD9BC\u8EAC\uD9BD\u8EAC\uD9BE" + // 1290 - 1294
- "\u8EAC\uD9BF\u8EAC\uD9C0\u8EAC\uD9C1\u8EAC\uD9C2\u8EAC\uD9C3" + // 1295 - 1299
- "\u8EAC\uD9C4\u8EAC\uD9C5\u8EAC\uD9C6\u8EAC\uD9C7\u8EAC\uD9C8" + // 1300 - 1304
- "\u8EAC\uD9C9\u8EAC\uD9CA\u8EAC\uD9CB\u8EAC\uD9CC\u8EAC\uD9CD" + // 1305 - 1309
- "\u8EAC\uD9CE\u8EAC\uD9CF\u8EAC\uD9D0\u8EAC\uD8AF\u8EAC\uD8B0" + // 1310 - 1314
- "\u8EAC\uD8B1\u8EAC\uD8B2\u8EAC\uD8B3\u8EAC\uD8B4\u8EAC\uD8B5" + // 1315 - 1319
- "\u8EAC\uD8B6\u8EAC\uD8B7\u8EAC\uD8B8\u8EAC\uD8B9\u8EAC\uD8BA" + // 1320 - 1324
- "\u8EAC\uD8BB\u8EAC\uD8BC\u8EAC\uD8BD\u8EAC\uD8BE\u8EAC\uD8BF" + // 1325 - 1329
- "\u8EAC\uD8C0\u8EAC\uD8C1\u8EAC\uD8C2\u8EAC\uD8C3\u8EAC\uD8C4" + // 1330 - 1334
- "\u8EAC\uD8C5\u8EAC\uD8C6\u8EAC\uD8C7\u8EAC\uD8C8\u8EAC\uD8C9" + // 1335 - 1339
- "\u8EAC\uD8CA\u8EAC\uD8CB\u8EAC\uD8CC\u8EAC\uD8CD\u8EAC\uD8CE" + // 1340 - 1344
- "\u8EAC\uD8CF\u8EAC\uD8D0\u8EAC\uD8D1\u8EAC\uD8D2\u8EAC\uD8D3" + // 1345 - 1349
- "\u8EAC\uD8D4\u8EAC\uD8D5\u8EAC\uD8D6\u8EAC\uD8D7\u8EAC\uD8D8" + // 1350 - 1354
- "\u8EAC\uD8D9\u8EAC\uD8DA\u8EAC\uD8DB\u8EAC\uD8DC\u8EAC\uD8DD" + // 1355 - 1359
- "\u8EAC\uD8DE\u8EAC\uD8DF\u8EAC\uD8E0\u8EAC\uD8E1\u8EAC\uD8E2" + // 1360 - 1364
- "\u8EAC\uD8E3\u8EAC\uD8E4\u8EAC\uD8E5\u8EAC\uD8E6\u8EAC\uD8E7" + // 1365 - 1369
- "\u8EAC\uD8E8\u8EAC\uD8E9\u8EAC\uD8EA\u8EAC\uD8EB\u8EAC\uD8EC" + // 1370 - 1374
- "\u8EAC\uD8ED\u8EAC\uD8EE\u8EAC\uD7CD\u8EAC\uD7CE\u8EAC\uD7CF" + // 1375 - 1379
- "\u8EAC\uD7D0\u8EAC\uD7D1\u8EAC\uD7D2\u8EAC\uD7D3\u8EAC\uD7D4" + // 1380 - 1384
- "\u8EAC\uD7D5\u8EAC\uD7D6\u8EAC\uD7D7\u8EAC\uD7D8\u8EAC\uD7D9" + // 1385 - 1389
- "\u8EAC\uD7DA\u8EAC\uD7DB\u8EAC\uD7DC\u8EAC\uD7DD\u8EAC\uD7DE" + // 1390 - 1394
- "\u8EAC\uD7DF\u8EAC\uD7E0\u8EAC\uD7E1\u8EAC\uD7E2\u8EAC\uD7E3" + // 1395 - 1399
- "\u8EAC\uD7E4\u8EAC\uD7E5\u8EAC\uD7E6\u8EAC\uD7E7\u8EAC\uD7E8" + // 1400 - 1404
- "\u8EAC\uD7E9\u8EAC\uD7EA\u8EAC\uD7EB\u8EAC\uD7EC\u8EAC\uD7ED" + // 1405 - 1409
- "\u8EAC\uD7EE\u8EAC\uD7EF\u8EAC\uD7F0\u8EAC\uD7F1\u8EAC\uD7F2" + // 1410 - 1414
- "\u8EAC\uD7F3\u8EAC\uD7F4\u8EAC\uD7F5\u8EAC\uD7F6\u8EAC\uD7F7" + // 1415 - 1419
- "\u8EAC\uD7F8\u8EAC\uD7F9\u8EAC\uD7FA\u8EAC\uD7FB\u8EAC\uD7FC" + // 1420 - 1424
- "\u8EAC\uD7FD\u8EAC\uD7FE\u8EAC\uD8A1\u8EAC\uD8A2\u8EAC\uD8A3" + // 1425 - 1429
- "\u8EAC\uD8A4\u8EAC\uD8A5\u8EAC\uD8A6\u8EAC\uD8A7\u8EAC\uD8A8" + // 1430 - 1434
- "\u8EAC\uD8A9\u8EAC\uD8AA\u8EAC\uD8AB\u8EAC\uD8AC\u8EAC\uD8AD" + // 1435 - 1439
- "\u8EAC\uD8AE\u8EAC\uD6EB\u8EAC\uD6EC\u8EAC\uD6ED\u8EAC\uD6EE" + // 1440 - 1444
- "\u8EAC\uD6EF\u8EAC\uD6F0\u8EAC\uD6F1\u8EAC\uD6F2\u8EAC\uD6F3" + // 1445 - 1449
- "\u8EAC\uD6F4\u8EAC\uD6F5\u8EAC\uD6F6\u8EAC\uD6F7\u8EAC\uD6F8" + // 1450 - 1454
- "\u8EAC\uD6F9\u8EAC\uD6FA\u8EAC\uD6FB\u8EAC\uD6FC\u8EAC\uD6FD" + // 1455 - 1459
- "\u8EAC\uD6FE\u8EAC\uD7A1\u8EAC\uD7A2\u8EAC\uD7A3\u8EAC\uD7A4" + // 1460 - 1464
- "\u8EAC\uD7A5\u8EAC\uD7A6\u8EAC\uD7A7\u8EAC\uD7A8\u8EAC\uD7A9" + // 1465 - 1469
- "\u8EAC\uD7AA\u8EAC\uD7AB\u8EAC\uD7AC\u8EAC\uD7AD\u8EAC\uD7AE" + // 1470 - 1474
- "\u8EAC\uD7AF\u8EAC\uD7B0\u8EAC\uD7B1\u8EAC\uD7B2\u8EAC\uD7B3" + // 1475 - 1479
- "\u8EAC\uD7B4\u8EAC\uD7B5\u8EAC\uD7B6\u8EAC\uD7B7\u8EAC\uD7B8" + // 1480 - 1484
- "\u8EAC\uD7B9\u8EAC\uD7BA\u8EAC\uD7BB\u8EAC\uD7BC\u8EAC\uD7BD" + // 1485 - 1489
- "\u8EAC\uD7BE\u8EAC\uD7BF\u8EAC\uD7C0\u8EAC\uD7C1\u8EAC\uD7C2" + // 1490 - 1494
- "\u8EAC\uD7C3\u8EAC\uD7C4\u8EAC\uD7C5\u8EAC\uD7C6\u8EAC\uD7C7" + // 1495 - 1499
- "\u8EAC\uD7C8\u8EAC\uD7C9\u8EAC\uD7CA\u8EAC\uD7CB\u8EAC\uD7CC" + // 1500 - 1504
- "\u8EAC\uD6AB\u8EAC\uD6AC\u8EAC\uD6AD\u8EAC\uD6AE\u8EAC\uD6AF" + // 1505 - 1509
- "\u8EAC\uD6B0\u8EAC\uD6B1\u8EAC\uD6B2\u8EAC\uD6B3\u8EAC\uD6B4" + // 1510 - 1514
- "\u8EAC\uD6B5\u8EAC\uD6B6\u8EAC\uD6B7\u8EAC\uD6B8\u8EAC\uD6B9" + // 1515 - 1519
- "\u8EAC\uD6BA\u8EAC\uD6BB\u8EAC\uD6BC\u8EAC\uD6BD\u8EAC\uD6BE" + // 1520 - 1524
- "\u8EAC\uD6BF\u8EAC\uD6C0\u8EAC\uD6C1\u8EAC\uD6C2\u8EAC\uD6C3" + // 1525 - 1529
- "\u8EAC\uD6C4\u8EAC\uD6C5\u8EAC\uD6C6\u8EAC\uD6C7\u8EAC\uD6C8" + // 1530 - 1534
- "\u8EAC\uD6C9\u8EAC\uD6CA\u8EAC\uD6CB\u8EAC\uD6CC\u8EAC\uD6CD" + // 1535 - 1539
- "\u8EAC\uD6CE\u8EAC\uD6CF\u8EAC\uD6D0\u8EAC\uD6D1\u8EAC\uD6D2" + // 1540 - 1544
- "\u8EAC\uD6D3\u8EAC\uD6D4\u8EAC\uD6D5\u8EAC\uD6D6\u8EAC\uD6D7" + // 1545 - 1549
- "\u8EAC\uD6D8\u8EAC\uD6D9\u8EAC\uD6DA\u8EAC\uD6DB\u8EAC\uD6DC" + // 1550 - 1554
- "\u8EAC\uD6DD\u8EAC\uD6DE\u8EAC\uD6DF\u8EAC\uD6E0\u8EAC\uD6E1" + // 1555 - 1559
- "\u8EAC\uD6E2\u8EAC\uD6E3\u8EAC\uD6E4\u8EAC\uD6E5\u8EAC\uD6E6" + // 1560 - 1564
- "\u8EAC\uD6E7\u8EAC\uD6E8\u8EAC\uD6E9\u8EAC\uD6EA\u8EAC\uD5C9" + // 1565 - 1569
- "\u8EAC\uD5CA\u8EAC\uD5CB\u8EAC\uD5CC\u8EAC\uD5CD\u8EAC\uD5CE" + // 1570 - 1574
- "\u8EAC\uD5CF\u8EAC\uD5D0\u8EAC\uD5D1\u8EAC\uD5D2\u8EAC\uD5D3" + // 1575 - 1579
- "\u8EAC\uD5D4\u8EAC\uD5D5\u8EAC\uD5D6\u8EAC\uD5D7\u8EAC\uD5D8" + // 1580 - 1584
- "\u8EAC\uD5D9\u8EAC\uD5DA\u8EAC\uD5DB\u8EAC\uD5DC\u8EAC\uD5DD" + // 1585 - 1589
- "\u8EAC\uD5DE\u8EAC\uD5DF\u8EAC\uD5E0\u8EAC\uD5E1\u8EAC\uD5E2" + // 1590 - 1594
- "\u8EAC\uD5E3\u8EAC\uD5E4\u8EAC\uD5E5\u8EAC\uD5E6\u8EAC\uD5E7" + // 1595 - 1599
- "\u8EAC\uD5E8\u8EAC\uD5E9\u8EAC\uD5EA\u8EAC\uD5EB\u8EAC\uD5EC" + // 1600 - 1604
- "\u8EAC\uD5ED\u8EAC\uD5EE\u8EAC\uD5EF\u8EAC\uD5F0\u8EAC\uD5F1" + // 1605 - 1609
- "\u8EAC\uD5F2\u8EAC\uD5F3\u8EAC\uD5F4\u8EAC\uD5F5\u8EAC\uD5F6" + // 1610 - 1614
- "\u8EAC\uD5F7\u8EAC\uD5F8\u8EAC\uD5F9\u8EAC\uD5FA\u8EAC\uD5FB" + // 1615 - 1619
- "\u8EAC\uD5FC\u8EAC\uD5FD\u8EAC\uD5FE\u8EAC\uD6A1\u8EAC\uD6A2" + // 1620 - 1624
- "\u8EAC\uD6A3\u8EAC\uD6A4\u8EAC\uD6A5\u8EAC\uD6A6\u8EAC\uD6A7" + // 1625 - 1629
- "\u8EAC\uD6A8\u8EAC\uD6A9\u8EAC\uD6AA\u8EAC\uD4E7\u8EAC\uD4E8" + // 1630 - 1634
- "\u8EAC\uD4E9\u8EAC\uD4EA\u8EAC\uD4EB\u8EAC\uD4EC\u8EAC\uD4ED" + // 1635 - 1639
- "\u8EAC\uD4EE\u8EAC\uD4EF\u8EAC\uD4F0\u8EAC\uD4F1\u8EAC\uD4F2" + // 1640 - 1644
- "\u8EAC\uD4F3\u8EAC\uD4F4\u8EAC\uD4F5\u8EAC\uD4F6\u8EAC\uD4F7" + // 1645 - 1649
- "\u8EAC\uD4F8\u8EAC\uD4F9\u8EAC\uD4FA\u8EAC\uD4FB\u8EAC\uD4FC" + // 1650 - 1654
- "\u8EAC\uD4FD\u8EAC\uD4FE\u8EAC\uD5A1\u8EAC\uD5A2\u8EAC\uD5A3" + // 1655 - 1659
- "\u8EAC\uD5A4\u8EAC\uD5A5\u8EAC\uD5A6\u8EAC\uD5A7\u8EAC\uD5A8" + // 1660 - 1664
- "\u8EAC\uD5A9\u8EAC\uD5AA\u8EAC\uD5AB\u8EAC\uD5AC\u8EAC\uD5AD" + // 1665 - 1669
- "\u8EAC\uD5AE\u8EAC\uD5AF\u8EAC\uD5B0\u8EAC\uD5B1\u8EAC\uD5B2" + // 1670 - 1674
- "\u8EAC\uD5B3\u8EAC\uD5B4\u8EAC\uD5B5\u8EAC\uD5B6\u8EAC\uD5B7" + // 1675 - 1679
- "\u8EAC\uD5B8\u8EAC\uD5B9\u8EAC\uD5BA\u8EAC\uD5BB\u8EAC\uD5BC" + // 1680 - 1684
- "\u8EAC\uD5BD\u8EAC\uD5BE\u8EAC\uD5BF\u8EAC\uD5C0\u8EAC\uD5C1" + // 1685 - 1689
- "\u8EAC\uD5C2\u8EAC\uD5C3\u8EAC\uD5C4\u8EAC\uD5C5\u8EAC\uD5C6" + // 1690 - 1694
- "\u8EAC\uD5C7\u8EAC\uD5C8\u8EAC\uD4A7\u8EAC\uD4A8\u8EAC\uD4A9" + // 1695 - 1699
- "\u8EAC\uD4AA\u8EAC\uD4AB\u8EAC\uD4AC\u8EAC\uD4AD\u8EAC\uD4AE" + // 1700 - 1704
- "\u8EAC\uD4AF\u8EAC\uD4B0\u8EAC\uD4B1\u8EAC\uD4B2\u8EAC\uD4B3" + // 1705 - 1709
- "\u8EAC\uD4B4\u8EAC\uD4B5\u8EAC\uD4B6\u8EAC\uD4B7\u8EAC\uD4B8" + // 1710 - 1714
- "\u8EAC\uD4B9\u8EAC\uD4BA\u8EAC\uD4BB\u8EAC\uD4BC\u8EAC\uD4BD" + // 1715 - 1719
- "\u8EAC\uD4BE\u8EAC\uD4BF\u8EAC\uD4C0\u8EAC\uD4C1\u8EAC\uD4C2" + // 1720 - 1724
- "\u8EAC\uD4C3\u8EAC\uD4C4\u8EAC\uD4C5\u8EAC\uD4C6\u8EAC\uD4C7" + // 1725 - 1729
- "\u8EAC\uD4C8\u8EAC\uD4C9\u8EAC\uD4CA\u8EAC\uD4CB\u8EAC\uD4CC" + // 1730 - 1734
- "\u8EAC\uD4CD\u8EAC\uD4CE\u8EAC\uD4CF\u8EAC\uD4D0\u8EAC\uD4D1" + // 1735 - 1739
- "\u8EAC\uD4D2\u8EAC\uD4D3\u8EAC\uD4D4\u8EAC\uD4D5\u8EAC\uD4D6" + // 1740 - 1744
- "\u8EAC\uD4D7\u8EAC\uD4D8\u8EAC\uD4D9\u8EAC\uD4DA\u8EAC\uD4DB" + // 1745 - 1749
- "\u8EAC\uD4DC\u8EAC\uD4DD\u8EAC\uD4DE\u8EAC\uD4DF\u8EAC\uD4E0" + // 1750 - 1754
- "\u8EAC\uD4E1\u8EAC\uD4E2\u8EAC\uD4E3\u8EAC\uD4E4\u8EAC\uD4E5" + // 1755 - 1759
- "\u8EAC\uD4E6\u8EAC\uD3C5\u8EAC\uD3C6\u8EAC\uD3C7\u8EAC\uD3C8" + // 1760 - 1764
- "\u8EAC\uD3C9\u8EAC\uD3CA\u8EAC\uD3CB\u8EAC\uD3CC\u8EAC\uD3CD" + // 1765 - 1769
- "\u8EAC\uD3CE\u8EAC\uD3CF\u8EAC\uD3D0\u8EAC\uD3D1\u8EAC\uD3D2" + // 1770 - 1774
- "\u8EAC\uD3D3\u8EAC\uD3D4\u8EAC\uD3D5\u8EAC\uD3D6\u8EAC\uD3D7" + // 1775 - 1779
- "\u8EAC\uD3D8\u8EAC\uD3D9\u8EAC\uD3DA\u8EAC\uD3DB\u8EAC\uD3DC" + // 1780 - 1784
- "\u8EAC\uD3DD\u8EAC\uD3DE\u8EAC\uD3DF\u8EAC\uD3E0\u8EAC\uD3E1" + // 1785 - 1789
- "\u8EAC\uD3E2\u8EAC\uD3E3\u8EAC\uD3E4\u8EAC\uD3E5\u8EAC\uD3E6" + // 1790 - 1794
- "\u8EAC\uD3E7\u8EAC\uD3E8\u8EAC\uD3E9\u8EAC\uD3EA\u8EAC\uD3EB" + // 1795 - 1799
- "\u8EAC\uD3EC\u8EAC\uD3ED\u8EAC\uD3EE\u8EAC\uD3EF\u8EAC\uD3F0" + // 1800 - 1804
- "\u8EAC\uD3F1\u8EAC\uD3F2\u8EAC\uD3F3\u8EAC\uD3F4\u8EAC\uD3F5" + // 1805 - 1809
- "\u8EAC\uD3F6\u8EAC\uD3F7\u8EAC\uD3F8\u8EAC\uD3F9\u8EAC\uD3FA" + // 1810 - 1814
- "\u8EAC\uD3FB\u8EAC\uD3FC\u8EAC\uD3FD\u8EAC\uD3FE\u8EAC\uD4A1" + // 1815 - 1819
- "\u8EAC\uD4A2\u8EAC\uD4A3\u8EAC\uD4A4\u8EAC\uD4A5\u8EAC\uD4A6" + // 1820 - 1824
- "\u8EAC\uD2E3\u8EAC\uD2E4\u8EAC\uD2E5\u8EAC\uD2E6\u8EAC\uD2E7" + // 1825 - 1829
- "\u8EAC\uD2E8\u8EAC\uD2E9\u8EAC\uD2EA\u8EAC\uD2EB\u8EAC\uD2EC" + // 1830 - 1834
- "\u8EAC\uD2ED\u8EAC\uD2EE\u8EAC\uD2EF\u8EAC\uD2F0\u8EAC\uD2F1" + // 1835 - 1839
- "\u8EAC\uD2F2\u8EAC\uD2F3\u8EAC\uD2F4\u8EAC\uD2F5\u8EAC\uD2F6" + // 1840 - 1844
- "\u8EAC\uD2F7\u8EAC\uD2F8\u8EAC\uD2F9\u8EAC\uD2FA\u8EAC\uD2FB" + // 1845 - 1849
- "\u8EAC\uD2FC\u8EAC\uD2FD\u8EAC\uD2FE\u8EAC\uD3A1\u8EAC\uD3A2" + // 1850 - 1854
- "\u8EAC\uD3A3\u8EAC\uD3A4\u8EAC\uD3A5\u8EAC\uD3A6\u8EAC\uD3A7" + // 1855 - 1859
- "\u8EAC\uD3A8\u8EAC\uD3A9\u8EAC\uD3AA\u8EAC\uD3AB\u8EAC\uD3AC" + // 1860 - 1864
- "\u8EAC\uD3AD\u8EAC\uD3AE\u8EAC\uD3AF\u8EAC\uD3B0\u8EAC\uD3B1" + // 1865 - 1869
- "\u8EAC\uD3B2\u8EAC\uD3B3\u8EAC\uD3B4\u8EAC\uD3B5\u8EAC\uD3B6" + // 1870 - 1874
- "\u8EAC\uD3B7\u8EAC\uD3B8\u8EAC\uD3B9\u8EAC\uD3BA\u8EAC\uD3BB" + // 1875 - 1879
- "\u8EAC\uD3BC\u8EAC\uD3BD\u8EAC\uD3BE\u8EAC\uD3BF\u8EAC\uD3C0" + // 1880 - 1884
- "\u8EAC\uD3C1\u8EAC\uD3C2\u8EAC\uD3C3\u8EAC\uD3C4\u8EAC\uD2A3" + // 1885 - 1889
- "\u8EAC\uD2A4\u8EAC\uD2A5\u8EAC\uD2A6\u8EAC\uD2A7\u8EAC\uD2A8" + // 1890 - 1894
- "\u8EAC\uD2A9\u8EAC\uD2AA\u8EAC\uD2AB\u8EAC\uD2AC\u8EAC\uD2AD" + // 1895 - 1899
- "\u8EAC\uD2AE\u8EAC\uD2AF\u8EAC\uD2B0\u8EAC\uD2B1\u8EAC\uD2B2" + // 1900 - 1904
- "\u8EAC\uD2B3\u8EAC\uD2B4\u8EAC\uD2B5\u8EAC\uD2B6\u8EAC\uD2B7" + // 1905 - 1909
- "\u8EAC\uD2B8\u8EAC\uD2B9\u8EAC\uD2BA\u8EAC\uD2BB\u8EAC\uD2BC" + // 1910 - 1914
- "\u8EAC\uD2BD\u8EAC\uD2BE\u8EAC\uD2BF\u8EAC\uD2C0\u8EAC\uD2C1" + // 1915 - 1919
- "\u8EAC\uD2C2\u8EAC\uD2C3\u8EAC\uD2C4\u8EAC\uD2C5\u8EAC\uD2C6" + // 1920 - 1924
- "\u8EAC\uD2C7\u8EAC\uD2C8\u8EAC\uD2C9\u8EAC\uD2CA\u8EAC\uD2CB" + // 1925 - 1929
- "\u8EAC\uD2CC\u8EAC\uD2CD\u8EAC\uD2CE\u8EAC\uD2CF\u8EAC\uD2D0" + // 1930 - 1934
- "\u8EAC\uD2D1\u8EAC\uD2D2\u8EAC\uD2D3\u8EAC\uD2D4\u8EAC\uD2D5" + // 1935 - 1939
- "\u8EAC\uD2D6\u8EAC\uD2D7\u8EAC\uD2D8\u8EAC\uD2D9\u8EAC\uD2DA" + // 1940 - 1944
- "\u8EAC\uD2DB\u8EAC\uD2DC\u8EAC\uD2DD\u8EAC\uD2DE\u8EAC\uD2DF" + // 1945 - 1949
- "\u8EAC\uD2E0\u8EAC\uD2E1\u8EAC\uD2E2\u8EAC\uD1C1\u8EAC\uD1C2" + // 1950 - 1954
- "\u8EAC\uD1C3\u8EAC\uD1C4\u8EAC\uD1C5\u8EAC\uD1C6\u8EAC\uD1C7" + // 1955 - 1959
- "\u8EAC\uD1C8\u8EAC\uD1C9\u8EAC\uD1CA\u8EAC\uD1CB\u8EAC\uD1CC" + // 1960 - 1964
- "\u8EAC\uD1CD\u8EAC\uD1CE\u8EAC\uD1CF\u8EAC\uD1D0\u8EAC\uD1D1" + // 1965 - 1969
- "\u8EAC\uD1D2\u8EAC\uD1D3\u8EAC\uD1D4\u8EAC\uD1D5\u8EAC\uD1D6" + // 1970 - 1974
- "\u8EAC\uD1D7\u8EAC\uD1D8\u8EAC\uD1D9\u8EAC\uD1DA\u8EAC\uD1DB" + // 1975 - 1979
- "\u8EAC\uD1DC\u8EAC\uD1DD\u8EAC\uD1DE\u8EAC\uD1DF\u8EAC\uD1E0" + // 1980 - 1984
- "\u8EAC\uD1E1\u8EAC\uD1E2\u8EAC\uD1E3\u8EAC\uD1E4\u8EAC\uD1E5" + // 1985 - 1989
- "\u8EAC\uD1E6\u8EAC\uD1E7\u8EAC\uD1E8\u8EAC\uD1E9\u8EAC\uD1EA" + // 1990 - 1994
- "\u8EAC\uD1EB\u8EAC\uD1EC\u8EAC\uD1ED\u8EAC\uD1EE\u8EAC\uD1EF" + // 1995 - 1999
- "\u8EAC\uD1F0\u8EAC\uD1F1\u8EAC\uD1F2\u8EAC\uD1F3\u8EAC\uD1F4" + // 2000 - 2004
- "\u8EAC\uD1F5\u8EAC\uD1F6\u8EAC\uD1F7\u8EAC\uD1F8\u8EAC\uD1F9" + // 2005 - 2009
- "\u8EAC\uD1FA\u8EAC\uD1FB\u8EAC\uD1FC\u8EAC\uD1FD\u8EAC\uD1FE" + // 2010 - 2014
- "\u8EAC\uD2A1\u8EAC\uD2A2\u8EAC\uD0DF\u8EAC\uD0E0\u8EAC\uD0E1" + // 2015 - 2019
- "\u8EAC\uD0E2\u8EAC\uD0E3\u8EAC\uD0E4\u8EAC\uD0E5\u8EAC\uD0E6" + // 2020 - 2024
- "\u8EAC\uD0E7\u8EAC\uD0E8\u8EAC\uD0E9\u8EAC\uD0EA\u8EAC\uD0EB" + // 2025 - 2029
- "\u8EAC\uD0EC\u8EAC\uD0ED\u8EAC\uD0EE\u8EAC\uD0EF\u8EAC\uD0F0" + // 2030 - 2034
- "\u8EAC\uD0F1\u8EAC\uD0F2\u8EAC\uD0F3\u8EAC\uD0F4\u8EAC\uD0F5" + // 2035 - 2039
- "\u8EAC\uD0F6\u8EAC\uD0F7\u8EAC\uD0F8\u8EAC\uD0F9\u8EAC\uD0FA" + // 2040 - 2044
- "\u8EAC\uD0FB\u8EAC\uD0FC\u8EAC\uD0FD\u8EAC\uD0FE\u8EAC\uD1A1" + // 2045 - 2049
- "\u8EAC\uD1A2\u8EAC\uD1A3\u8EAC\uD1A4\u8EAC\uD1A5\u8EAC\uD1A6" + // 2050 - 2054
- "\u8EAC\uD1A7\u8EAC\uD1A8\u8EAC\uD1A9\u8EAC\uD1AA\u8EAC\uD1AB" + // 2055 - 2059
- "\u8EAC\uD1AC\u8EAC\uD1AD\u8EAC\uD1AE\u8EAC\uD1AF\u8EAC\uD1B0" + // 2060 - 2064
- "\u8EAC\uD1B1\u8EAC\uD1B2\u8EAC\uD1B3\u8EAC\uD1B4\u8EAC\uD1B5" + // 2065 - 2069
- "\u8EAC\uD1B6\u8EAC\uD1B7\u8EAC\uD1B8\u8EAC\uD1B9\u8EAC\uD1BA" + // 2070 - 2074
- "\u8EAC\uD1BB\u8EAC\uD1BC\u8EAC\uD1BD\u8EAC\uD1BE\u8EAC\uD1BF" + // 2075 - 2079
- "\u8EAC\uD1C0\u8EAC\uCFFD\u8EAC\uCFFE\u8EAC\uD0A1\u8EAC\uD0A2" + // 2080 - 2084
- "\u8EAC\uD0A3\u8EAC\uD0A4\u8EAC\uD0A5\u8EAC\uD0A6\u8EAC\uD0A7" + // 2085 - 2089
- "\u8EAC\uD0A8\u8EAC\uD0A9\u8EAC\uD0AA\u8EAC\uD0AB\u8EAC\uD0AC" + // 2090 - 2094
- "\u8EAC\uD0AD\u8EAC\uD0AE\u8EAC\uD0AF\u8EAC\uD0B0\u8EAC\uD0B1" + // 2095 - 2099
- "\u8EAC\uD0B2\u8EAC\uD0B3\u8EAC\uD0B4\u8EAC\uD0B5\u8EAC\uD0B6" + // 2100 - 2104
- "\u8EAC\uD0B7\u8EAC\uD0B8\u8EAC\uD0B9\u8EAC\uD0BA\u8EAC\uD0BB" + // 2105 - 2109
- "\u8EAC\uD0BC\u8EAC\uD0BD\u8EAC\uD0BE\u8EAC\uD0BF\u8EAC\uD0C0" + // 2110 - 2114
- "\u8EAC\uD0C1\u8EAC\uD0C2\u8EAC\uD0C3\u8EAC\uD0C4\u8EAC\uD0C5" + // 2115 - 2119
- "\u8EAC\uD0C6\u8EAC\uD0C7\u8EAC\uD0C8\u8EAC\uD0C9\u8EAC\uD0CA" + // 2120 - 2124
- "\u8EAC\uD0CB\u8EAC\uD0CC\u8EAC\uD0CD\u8EAC\uD0CE\u8EAC\uD0CF" + // 2125 - 2129
- "\u8EAC\uD0D0\u8EAC\uD0D1\u8EAC\uD0D2\u8EAC\uD0D3\u8EAC\uD0D4" + // 2130 - 2134
- "\u8EAC\uD0D5\u8EAC\uD0D6\u8EAC\uD0D7\u8EAC\uD0D8\u8EAC\uD0D9" + // 2135 - 2139
- "\u8EAC\uD0DA\u8EAC\uD0DB\u8EAC\uD0DC\u8EAC\uD0DD\u8EAC\uD0DE" + // 2140 - 2144
- "\u8EAC\uCFBD\u8EAC\uCFBE\u8EAC\uCFBF\u8EAC\uCFC0\u8EAC\uCFC1" + // 2145 - 2149
- "\u8EAC\uCFC2\u8EAC\uCFC3\u8EAC\uCFC4\u8EAC\uCFC5\u8EAC\uCFC6" + // 2150 - 2154
- "\u8EAC\uCFC7\u8EAC\uCFC8\u8EAC\uCFC9\u8EAC\uCFCA\u8EAC\uCFCB" + // 2155 - 2159
- "\u8EAC\uCFCC\u8EAC\uCFCD\u8EAC\uCFCE\u8EAC\uCFCF\u8EAC\uCFD0" + // 2160 - 2164
- "\u8EAC\uCFD1\u8EAC\uCFD2\u8EAC\uCFD3\u8EAC\uCFD4\u8EAC\uCFD5" + // 2165 - 2169
- "\u8EAC\uCFD6\u8EAC\uCFD7\u8EAC\uCFD8\u8EAC\uCFD9\u8EAC\uCFDA" + // 2170 - 2174
- "\u8EAC\uCFDB\u8EAC\uCFDC\u8EAC\uCFDD\u8EAC\uCFDE\u8EAC\uCFDF" + // 2175 - 2179
- "\u8EAC\uCFE0\u8EAC\uCFE1\u8EAC\uCFE2\u8EAC\uCFE3\u8EAC\uCFE4" + // 2180 - 2184
- "\u8EAC\uCFE5\u8EAC\uCFE6\u8EAC\uCFE7\u8EAC\uCFE8\u8EAC\uCFE9" + // 2185 - 2189
- "\u8EAC\uCFEA\u8EAC\uCFEB\u8EAC\uCFEC\u8EAC\uCFED\u8EAC\uCFEE" + // 2190 - 2194
- "\u8EAC\uCFEF\u8EAC\uCFF0\u8EAC\uCFF1\u8EAC\uCFF2\u8EAC\uCFF3" + // 2195 - 2199
- "\u8EAC\uCFF4\u8EAC\uCFF5\u8EAC\uCFF6\u8EAC\uCFF7\u8EAC\uCFF8" + // 2200 - 2204
- "\u8EAC\uCFF9\u8EAC\uCFFA\u8EAC\uCFFB\u8EAC\uCFFC\u8EAC\uCEDB" + // 2205 - 2209
- "\u8EAC\uCEDC\u8EAC\uCEDD\u8EAC\uCEDE\u8EAC\uCEDF\u8EAC\uCEE0" + // 2210 - 2214
- "\u8EAC\uCEE1\u8EAC\uCEE2\u8EAC\uCEE3\u8EAC\uCEE4\u8EAC\uCEE5" + // 2215 - 2219
- "\u8EAC\uCEE6\u8EAC\uCEE7\u8EAC\uCEE8\u8EAC\uCEE9\u8EAC\uCEEA" + // 2220 - 2224
- "\u8EAC\uCEEB\u8EAC\uCEEC\u8EAC\uCEED\u8EAC\uCEEE\u8EAC\uCEEF" + // 2225 - 2229
- "\u8EAC\uCEF0\u8EAC\uCEF1\u8EAC\uCEF2\u8EAC\uCEF3\u8EAC\uCEF4" + // 2230 - 2234
- "\u8EAC\uCEF5\u8EAC\uCEF6\u8EAC\uCEF7\u8EAC\uCEF8\u8EAC\uCEF9" + // 2235 - 2239
- "\u8EAC\uCEFA\u8EAC\uCEFB\u8EAC\uCEFC\u8EAC\uCEFD\u8EAC\uCEFE" + // 2240 - 2244
- "\u8EAC\uCFA1\u8EAC\uCFA2\u8EAC\uCFA3\u8EAC\uCFA4\u8EAC\uCFA5" + // 2245 - 2249
- "\u8EAC\uCFA6\u8EAC\uCFA7\u8EAC\uCFA8\u8EAC\uCFA9\u8EAC\uCFAA" + // 2250 - 2254
- "\u8EAC\uCFAB\u8EAC\uCFAC\u8EAC\uCFAD\u8EAC\uCFAE\u8EAC\uCFAF" + // 2255 - 2259
- "\u8EAC\uCFB0\u8EAC\uCFB1\u8EAC\uCFB2\u8EAC\uCFB3\u8EAC\uCFB4" + // 2260 - 2264
- "\u8EAC\uCFB5\u8EAC\uCFB6\u8EAC\uCFB7\u8EAC\uCFB8\u8EAC\uCFB9" + // 2265 - 2269
- "\u8EAC\uCFBA\u8EAC\uCFBB\u8EAC\uCFBC\u8EAC\uCDF9\u8EAC\uCDFA" + // 2270 - 2274
- "\u8EAC\uCDFB\u8EAC\uCDFC\u8EAC\uCDFD\u8EAC\uCDFE\u8EAC\uCEA1" + // 2275 - 2279
- "\u8EAC\uCEA2\u8EAC\uCEA3\u8EAC\uCEA4\u8EAC\uCEA5\u8EAC\uCEA6" + // 2280 - 2284
- "\u8EAC\uCEA7\u8EAC\uCEA8\u8EAC\uCEA9\u8EAC\uCEAA\u8EAC\uCEAB" + // 2285 - 2289
- "\u8EAC\uCEAC\u8EAC\uCEAD\u8EAC\uCEAE\u8EAC\uCEAF\u8EAC\uCEB0" + // 2290 - 2294
- "\u8EAC\uCEB1\u8EAC\uCEB2\u8EAC\uCEB3\u8EAC\uCEB4\u8EAC\uCEB5" + // 2295 - 2299
- "\u8EAC\uCEB6\u8EAC\uCEB7\u8EAC\uCEB8\u8EAC\uCEB9\u8EAC\uCEBA" + // 2300 - 2304
- "\u8EAC\uCEBB\u8EAC\uCEBC\u8EAC\uCEBD\u8EAC\uCEBE\u8EAC\uCEBF" + // 2305 - 2309
- "\u8EAC\uCEC0\u8EAC\uCEC1\u8EAC\uCEC2\u8EAC\uCEC3\u8EAC\uCEC4" + // 2310 - 2314
- "\u8EAC\uCEC5\u8EAC\uCEC6\u8EAC\uCEC7\u8EAC\uCEC8\u8EAC\uCEC9" + // 2315 - 2319
- "\u8EAC\uCECA\u8EAC\uCECB\u8EAC\uCECC\u8EAC\uCECD\u8EAC\uCECE" + // 2320 - 2324
- "\u8EAC\uCECF\u8EAC\uCED0\u8EAC\uCED1\u8EAC\uCED2\u8EAC\uCED3" + // 2325 - 2329
- "\u8EAC\uCED4\u8EAC\uCED5\u8EAC\uCED6\u8EAC\uCED7\u8EAC\uCED8" + // 2330 - 2334
- "\u8EAC\uCED9\u8EAC\uCEDA\u8EAC\uCDB9\u8EAC\uCDBA\u8EAC\uCDBB" + // 2335 - 2339
- "\u8EAC\uCDBC\u8EAC\uCDBD\u8EAC\uCDBE\u8EAC\uCDBF\u8EAC\uCDC0" + // 2340 - 2344
- "\u8EAC\uCDC1\u8EAC\uCDC2\u8EAC\uCDC3\u8EAC\uCDC4\u8EAC\uCDC5" + // 2345 - 2349
- "\u8EAC\uCDC6\u8EAC\uCDC7\u8EAC\uCDC8\u8EAC\uCDC9\u8EAC\uCDCA" + // 2350 - 2354
- "\u8EAC\uCDCB\u8EAC\uCDCC\u8EAC\uCDCD\u8EAC\uCDCE\u8EAC\uCDCF" + // 2355 - 2359
- "\u8EAC\uCDD0\u8EAC\uCDD1\u8EAC\uCDD2\u8EAC\uCDD3\u8EAC\uCDD4" + // 2360 - 2364
- "\u8EAC\uCDD5\u8EAC\uCDD6\u8EAC\uCDD7\u8EAC\uCDD8\u8EAC\uCDD9" + // 2365 - 2369
- "\u8EAC\uCDDA\u8EAC\uCDDB\u8EAC\uCDDC\u8EAC\uCDDD\u8EAC\uCDDE" + // 2370 - 2374
- "\u8EAC\uCDDF\u8EAC\uCDE0\u8EAC\uCDE1\u8EAC\uCDE2\u8EAC\uCDE3" + // 2375 - 2379
- "\u8EAC\uCDE4\u8EAC\uCDE5\u8EAC\uCDE6\u8EAC\uCDE7\u8EAC\uCDE8" + // 2380 - 2384
- "\u8EAC\uCDE9\u8EAC\uCDEA\u8EAC\uCDEB\u8EAC\uCDEC\u8EAC\uCDED" + // 2385 - 2389
- "\u8EAC\uCDEE\u8EAC\uCDEF\u8EAC\uCDF0\u8EAC\uCDF1\u8EAC\uCDF2" + // 2390 - 2394
- "\u8EAC\uCDF3\u8EAC\uCDF4\u8EAC\uCDF5\u8EAC\uCDF6\u8EAC\uCDF7" + // 2395 - 2399
- "\u8EAC\uCDF8\u8EAC\uCCD7\u8EAC\uCCD8\u8EAC\uCCD9\u8EAC\uCCDA" + // 2400 - 2404
- "\u8EAC\uCCDB\u8EAC\uCCDC\u8EAC\uCCDD\u8EAC\uCCDE\u8EAC\uCCDF" + // 2405 - 2409
- "\u8EAC\uCCE0\u8EAC\uCCE1\u8EAC\uCCE2\u8EAC\uCCE3\u8EAC\uCCE4" + // 2410 - 2414
- "\u8EAC\uCCE5\u8EAC\uCCE6\u8EAC\uCCE7\u8EAC\uCCE8\u8EAC\uCCE9" + // 2415 - 2419
- "\u8EAC\uCCEA\u8EAC\uCCEB\u8EAC\uCCEC\u8EAC\uCCED\u8EAC\uCCEE" + // 2420 - 2424
- "\u8EAC\uCCEF\u8EAC\uCCF0\u8EAC\uCCF1\u8EAC\uCCF2\u8EAC\uCCF3" + // 2425 - 2429
- "\u8EAC\uCCF4\u8EAC\uCCF5\u8EAC\uCCF6\u8EAC\uCCF7\u8EAC\uCCF8" + // 2430 - 2434
- "\u8EAC\uCCF9\u8EAC\uCCFA\u8EAC\uCCFB\u8EAC\uCCFC\u8EAC\uCCFD" + // 2435 - 2439
- "\u8EAC\uCCFE\u8EAC\uCDA1\u8EAC\uCDA2\u8EAC\uCDA3\u8EAC\uCDA4" + // 2440 - 2444
- "\u8EAC\uCDA5\u8EAC\uCDA6\u8EAC\uCDA7\u8EAC\uCDA8\u8EAC\uCDA9" + // 2445 - 2449
- "\u8EAC\uCDAA\u8EAC\uCDAB\u8EAC\uCDAC\u8EAC\uCDAD\u8EAC\uCDAE" + // 2450 - 2454
- "\u8EAC\uCDAF\u8EAC\uCDB0\u8EAC\uCDB1\u8EAC\uCDB2\u8EAC\uCDB3" + // 2455 - 2459
- "\u8EAC\uCDB4\u8EAC\uCDB5\u8EAC\uCDB6\u8EAC\uCDB7\u8EAC\uCDB8" + // 2460 - 2464
- "\u8EAC\uCBF5\u8EAC\uCBF6\u8EAC\uCBF7\u8EAC\uCBF8\u8EAC\uCBF9" + // 2465 - 2469
- "\u8EAC\uCBFA\u8EAC\uCBFB\u8EAC\uCBFC\u8EAC\uCBFD\u8EAC\uCBFE" + // 2470 - 2474
- "\u8EAC\uCCA1\u8EAC\uCCA2\u8EAC\uCCA3\u8EAC\uCCA4\u8EAC\uCCA5" + // 2475 - 2479
- "\u8EAC\uCCA6\u8EAC\uCCA7\u8EAC\uCCA8\u8EAC\uCCA9\u8EAC\uCCAA" + // 2480 - 2484
- "\u8EAC\uCCAB\u8EAC\uCCAC\u8EAC\uCCAD\u8EAC\uCCAE\u8EAC\uCCAF" + // 2485 - 2489
- "\u8EAC\uCCB0\u8EAC\uCCB1\u8EAC\uCCB2\u8EAC\uCCB3\u8EAC\uCCB4" + // 2490 - 2494
- "\u8EAC\uCCB5\u8EAC\uCCB6\u8EAC\uCCB7\u8EAC\uCCB8\u8EAC\uCCB9" + // 2495 - 2499
- "\u8EAC\uCCBA\u8EAC\uCCBB\u8EAC\uCCBC\u8EAC\uCCBD\u8EAC\uCCBE" + // 2500 - 2504
- "\u8EAC\uCCBF\u8EAC\uCCC0\u8EAC\uCCC1\u8EAC\uCCC2\u8EAC\uCCC3" + // 2505 - 2509
- "\u8EAC\uCCC4\u8EAC\uCCC5\u8EAC\uCCC6\u8EAC\uCCC7\u8EAC\uCCC8" + // 2510 - 2514
- "\u8EAC\uCCC9\u8EAC\uCCCA\u8EAC\uCCCB\u8EAC\uCCCC\u8EAC\uCCCD" + // 2515 - 2519
- "\u8EAC\uCCCE\u8EAC\uCCCF\u8EAC\uCCD0\u8EAC\uCCD1\u8EAC\uCCD2" + // 2520 - 2524
- "\u8EAC\uCCD3\u8EAC\uCCD4\u8EAC\uCCD5\u8EAC\uCCD6\u8EAC\uCBB5" + // 2525 - 2529
- "\u8EAC\uCBB6\u8EAC\uCBB7\u8EAC\uCBB8\u8EAC\uCBB9\u8EAC\uCBBA" + // 2530 - 2534
- "\u8EAC\uCBBB\u8EAC\uCBBC\u8EAC\uCBBD\u8EAC\uCBBE\u8EAC\uCBBF" + // 2535 - 2539
- "\u8EAC\uCBC0\u8EAC\uCBC1\u8EAC\uCBC2\u8EAC\uCBC3\u8EAC\uCBC4" + // 2540 - 2544
- "\u8EAC\uCBC5\u8EAC\uCBC6\u8EAC\uCBC7\u8EAC\uCBC8\u8EAC\uCBC9" + // 2545 - 2549
- "\u8EAC\uCBCA\u8EAC\uCBCB\u8EAC\uCBCC\u8EAC\uCBCD\u8EAC\uCBCE" + // 2550 - 2554
- "\u8EAC\uCBCF\u8EAC\uCBD0\u8EAC\uCBD1\u8EAC\uCBD2\u8EAC\uCBD3" + // 2555 - 2559
- "\u8EAC\uCBD4\u8EAC\uCBD5\u8EAC\uCBD6\u8EAC\uCBD7\u8EAC\uCBD8" + // 2560 - 2564
- "\u8EAC\uCBD9\u8EAC\uCBDA\u8EAC\uCBDB\u8EAC\uCBDC\u8EAC\uCBDD" + // 2565 - 2569
- "\u8EAC\uCBDE\u8EAC\uCBDF\u8EAC\uCBE0\u8EAC\uCBE1\u8EAC\uCBE2" + // 2570 - 2574
- "\u8EAC\uCBE3\u8EAC\uCBE4\u8EAC\uCBE5\u8EAC\uCBE6\u8EAC\uCBE7" + // 2575 - 2579
- "\u8EAC\uCBE8\u8EAC\uCBE9\u8EAC\uCBEA\u8EAC\uCBEB\u8EAC\uCBEC" + // 2580 - 2584
- "\u8EAC\uCBED\u8EAC\uCBEE\u8EAC\uCBEF\u8EAC\uCBF0\u8EAC\uCBF1" + // 2585 - 2589
- "\u8EAC\uCBF2\u8EAC\uCBF3\u8EAC\uCBF4\u8EAC\uCAD3\u8EAC\uCAD4" + // 2590 - 2594
- "\u8EAC\uCAD5\u8EAC\uCAD6\u8EAC\uCAD7\u8EAC\uCAD8\u8EAC\uCAD9" + // 2595 - 2599
- "\u8EAC\uCADA\u8EAC\uCADB\u8EAC\uCADC\u8EAC\uCADD\u8EAC\uCADE" + // 2600 - 2604
- "\u8EAC\uCADF\u8EAC\uCAE0\u8EAC\uCAE1\u8EAC\uCAE2\u8EAC\uCAE3" + // 2605 - 2609
- "\u8EAC\uCAE4\u8EAC\uCAE5\u8EAC\uCAE6\u8EAC\uCAE7\u8EAC\uCAE8" + // 2610 - 2614
- "\u8EAC\uCAE9\u8EAC\uCAEA\u8EAC\uCAEB\u8EAC\uCAEC\u8EAC\uCAED" + // 2615 - 2619
- "\u8EAC\uCAEE\u8EAC\uCAEF\u8EAC\uCAF0\u8EAC\uCAF1\u8EAC\uCAF2" + // 2620 - 2624
- "\u8EAC\uCAF3\u8EAC\uCAF4\u8EAC\uCAF5\u8EAC\uCAF6\u8EAC\uCAF7" + // 2625 - 2629
- "\u8EAC\uCAF8\u8EAC\uCAF9\u8EAC\uCAFA\u8EAC\uCAFB\u8EAC\uCAFC" + // 2630 - 2634
- "\u8EAC\uCAFD\u8EAC\uCAFE\u8EAC\uCBA1\u8EAC\uCBA2\u8EAC\uCBA3" + // 2635 - 2639
- "\u8EAC\uCBA4\u8EAC\uCBA5\u8EAC\uCBA6\u8EAC\uCBA7\u8EAC\uCBA8" + // 2640 - 2644
- "\u8EAC\uCBA9\u8EAC\uCBAA\u8EAC\uCBAB\u8EAC\uCBAC\u8EAC\uCBAD" + // 2645 - 2649
- "\u8EAC\uCBAE\u8EAC\uCBAF\u8EAC\uCBB0\u8EAC\uCBB1\u8EAC\uCBB2" + // 2650 - 2654
- "\u8EAC\uCBB3\u8EAC\uCBB4\u8EAC\uC9F1\u8EAC\uC9F2\u8EAC\uC9F3" + // 2655 - 2659
- "\u8EAC\uC9F4\u8EAC\uC9F5\u8EAC\uC9F6\u8EAC\uC9F7\u8EAC\uC9F8" + // 2660 - 2664
- "\u8EAC\uC9F9\u8EAC\uC9FA\u8EAC\uC9FB\u8EAC\uC9FC\u8EAC\uC9FD" + // 2665 - 2669
- "\u8EAC\uC9FE\u8EAC\uCAA1\u8EAC\uCAA2\u8EAC\uCAA3\u8EAC\uCAA4" + // 2670 - 2674
- "\u8EAC\uCAA5\u8EAC\uCAA6\u8EAC\uCAA7\u8EAC\uCAA8\u8EAC\uCAA9" + // 2675 - 2679
- "\u8EAC\uCAAA\u8EAC\uCAAB\u8EAC\uCAAC\u8EAC\uCAAD\u8EAC\uCAAE" + // 2680 - 2684
- "\u8EAC\uCAAF\u8EAC\uCAB0\u8EAC\uCAB1\u8EAC\uCAB2\u8EAC\uCAB3" + // 2685 - 2689
- "\u8EAC\uCAB4\u8EAC\uCAB5\u8EAC\uCAB6\u8EAC\uCAB7\u8EAC\uCAB8" + // 2690 - 2694
- "\u8EAC\uCAB9\u8EAC\uCABA\u8EAC\uCABB\u8EAC\uCABC\u8EAC\uCABD" + // 2695 - 2699
- "\u8EAC\uCABE\u8EAC\uCABF\u8EAC\uCAC0\u8EAC\uCAC1\u8EAC\uCAC2" + // 2700 - 2704
- "\u8EAC\uCAC3\u8EAC\uCAC4\u8EAC\uCAC5\u8EAC\uCAC6\u8EAC\uCAC7" + // 2705 - 2709
- "\u8EAC\uCAC8\u8EAC\uCAC9\u8EAC\uCACA\u8EAC\uCACB\u8EAC\uCACC" + // 2710 - 2714
- "\u8EAC\uCACD\u8EAC\uCACE\u8EAC\uCACF\u8EAC\uCAD0\u8EAC\uCAD1" + // 2715 - 2719
- "\u8EAC\uCAD2\u8EAC\uC9B1\u8EAC\uC9B2\u8EAC\uC9B3\u8EAC\uC9B4" + // 2720 - 2724
- "\u8EAC\uC9B5\u8EAC\uC9B6\u8EAC\uC9B7\u8EAC\uC9B8\u8EAC\uC9B9" + // 2725 - 2729
- "\u8EAC\uC9BA\u8EAC\uC9BB\u8EAC\uC9BC\u8EAC\uC9BD\u8EAC\uC9BE" + // 2730 - 2734
- "\u8EAC\uC9BF\u8EAC\uC9C0\u8EAC\uC9C1\u8EAC\uC9C2\u8EAC\uC9C3" + // 2735 - 2739
- "\u8EAC\uC9C4\u8EAC\uC9C5\u8EAC\uC9C6\u8EAC\uC9C7\u8EAC\uC9C8" + // 2740 - 2744
- "\u8EAC\uC9C9\u8EAC\uC9CA\u8EAC\uC9CB\u8EAC\uC9CC\u8EAC\uC9CD" + // 2745 - 2749
- "\u8EAC\uC9CE\u8EAC\uC9CF\u8EAC\uC9D0\u8EAC\uC9D1\u8EAC\uC9D2" + // 2750 - 2754
- "\u8EAC\uC9D3\u8EAC\uC9D4\u8EAC\uC9D5\u8EAC\uC9D6\u8EAC\uC9D7" + // 2755 - 2759
- "\u8EAC\uC9D8\u8EAC\uC9D9\u8EAC\uC9DA\u8EAC\uC9DB\u8EAC\uC9DC" + // 2760 - 2764
- "\u8EAC\uC9DD\u8EAC\uC9DE\u8EAC\uC9DF\u8EAC\uC9E0\u8EAC\uC9E1" + // 2765 - 2769
- "\u8EAC\uC9E2\u8EAC\uC9E3\u8EAC\uC9E4\u8EAC\uC9E5\u8EAC\uC9E6" + // 2770 - 2774
- "\u8EAC\uC9E7\u8EAC\uC9E8\u8EAC\uC9E9\u8EAC\uC9EA\u8EAC\uC9EB" + // 2775 - 2779
- "\u8EAC\uC9EC\u8EAC\uC9ED\u8EAC\uC9EE\u8EAC\uC9EF\u8EAC\uC9F0" + // 2780 - 2784
- "\u8EAC\uC8CF\u8EAC\uC8D0\u8EAC\uC8D1\u8EAC\uC8D2\u8EAC\uC8D3" + // 2785 - 2789
- "\u8EAC\uC8D4\u8EAC\uC8D5\u8EAC\uC8D6\u8EAC\uC8D7\u8EAC\uC8D8" + // 2790 - 2794
- "\u8EAC\uC8D9\u8EAC\uC8DA\u8EAC\uC8DB\u8EAC\uC8DC\u8EAC\uC8DD" + // 2795 - 2799
- "\u8EAC\uC8DE\u8EAC\uC8DF\u8EAC\uC8E0\u8EAC\uC8E1\u8EAC\uC8E2" + // 2800 - 2804
- "\u8EAC\uC8E3\u8EAC\uC8E4\u8EAC\uC8E5\u8EAC\uC8E6\u8EAC\uC8E7" + // 2805 - 2809
- "\u8EAC\uC8E8\u8EAC\uC8E9\u8EAC\uC8EA\u8EAC\uC8EB\u8EAC\uC8EC" + // 2810 - 2814
- "\u8EAC\uC8ED\u8EAC\uC8EE\u8EAC\uC8EF\u8EAC\uC8F0\u8EAC\uC8F1" + // 2815 - 2819
- "\u8EAC\uC8F2\u8EAC\uC8F3\u8EAC\uC8F4\u8EAC\uC8F5\u8EAC\uC8F6" + // 2820 - 2824
- "\u8EAC\uC8F7\u8EAC\uC8F8\u8EAC\uC8F9\u8EAC\uC8FA\u8EAC\uC8FB" + // 2825 - 2829
- "\u8EAC\uC8FC\u8EAC\uC8FD\u8EAC\uC8FE\u8EAC\uC9A1\u8EAC\uC9A2" + // 2830 - 2834
- "\u8EAC\uC9A3\u8EAC\uC9A4\u8EAC\uC9A5\u8EAC\uC9A6\u8EAC\uC9A7" + // 2835 - 2839
- "\u8EAC\uC9A8\u8EAC\uC9A9\u8EAC\uC9AA\u8EAC\uC9AB\u8EAC\uC9AC" + // 2840 - 2844
- "\u8EAC\uC9AD\u8EAC\uC9AE\u8EAC\uC9AF\u8EAC\uC9B0\u8EAC\uC7ED" + // 2845 - 2849
- "\u8EAC\uC7EE\u8EAC\uC7EF\u8EAC\uC7F0\u8EAC\uC7F1\u8EAC\uC7F2" + // 2850 - 2854
- "\u8EAC\uC7F3\u8EAC\uC7F4\u8EAC\uC7F5\u8EAC\uC7F6\u8EAC\uC7F7" + // 2855 - 2859
- "\u8EAC\uC7F8\u8EAC\uC7F9\u8EAC\uC7FA\u8EAC\uC7FB\u8EAC\uC7FC" + // 2860 - 2864
- "\u8EAC\uC7FD\u8EAC\uC7FE\u8EAC\uC8A1\u8EAC\uC8A2\u8EAC\uC8A3" + // 2865 - 2869
- "\u8EAC\uC8A4\u8EAC\uC8A5\u8EAC\uC8A6\u8EAC\uC8A7\u8EAC\uC8A8" + // 2870 - 2874
- "\u8EAC\uC8A9\u8EAC\uC8AA\u8EAC\uC8AB\u8EAC\uC8AC\u8EAC\uC8AD" + // 2875 - 2879
- "\u8EAC\uC8AE\u8EAC\uC8AF\u8EAC\uC8B0\u8EAC\uC8B1\u8EAC\uC8B2" + // 2880 - 2884
- "\u8EAC\uC8B3\u8EAC\uC8B4\u8EAC\uC8B5\u8EAC\uC8B6\u8EAC\uC8B7" + // 2885 - 2889
- "\u8EAC\uC8B8\u8EAC\uC8B9\u8EAC\uC8BA\u8EAC\uC8BB\u8EAC\uC8BC" + // 2890 - 2894
- "\u8EAC\uC8BD\u8EAC\uC8BE\u8EAC\uC8BF\u8EAC\uC8C0\u8EAC\uC8C1" + // 2895 - 2899
- "\u8EAC\uC8C2\u8EAC\uC8C3\u8EAC\uC8C4\u8EAC\uC8C5\u8EAC\uC8C6" + // 2900 - 2904
- "\u8EAC\uC8C7\u8EAC\uC8C8\u8EAC\uC8C9\u8EAC\uC8CA\u8EAC\uC8CB" + // 2905 - 2909
- "\u8EAC\uC8CC\u8EAC\uC8CD\u8EAC\uC8CE\u8EAC\uC7AD\u8EAC\uC7AE" + // 2910 - 2914
- "\u8EAC\uC7AF\u8EAC\uC7B0\u8EAC\uC7B1\u8EAC\uC7B2\u8EAC\uC7B3" + // 2915 - 2919
- "\u8EAC\uC7B4\u8EAC\uC7B5\u8EAC\uC7B6\u8EAC\uC7B7\u8EAC\uC7B8" + // 2920 - 2924
- "\u8EAC\uC7B9\u8EAC\uC7BA\u8EAC\uC7BB\u8EAC\uC7BC\u8EAC\uC7BD" + // 2925 - 2929
- "\u8EAC\uC7BE\u8EAC\uC7BF\u8EAC\uC7C0\u8EAC\uC7C1\u8EAC\uC7C2" + // 2930 - 2934
- "\u8EAC\uC7C3\u8EAC\uC7C4\u8EAC\uC7C5\u8EAC\uC7C6\u8EAC\uC7C7" + // 2935 - 2939
- "\u8EAC\uC7C8\u8EAC\uC7C9\u8EAC\uC7CA\u8EAC\uC7CB\u8EAC\uC7CC" + // 2940 - 2944
- "\u8EAC\uC7CD\u8EAC\uC7CE\u8EAC\uC7CF\u8EAC\uC7D0\u8EAC\uC7D1" + // 2945 - 2949
- "\u8EAC\uC7D2\u8EAC\uC7D3\u8EAC\uC7D4\u8EAC\uC7D5\u8EAC\uC7D6" + // 2950 - 2954
- "\u8EAC\uC7D7\u8EAC\uC7D8\u8EAC\uC7D9\u8EAC\uC7DA\u8EAC\uC7DB" + // 2955 - 2959
- "\u8EAC\uC7DC\u8EAC\uC7DD\u8EAC\uC7DE\u8EAC\uC7DF\u8EAC\uC7E0" + // 2960 - 2964
- "\u8EAC\uC7E1\u8EAC\uC7E2\u8EAC\uC7E3\u8EAC\uC7E4\u8EAC\uC7E5" + // 2965 - 2969
- "\u8EAC\uC7E6\u8EAC\uC7E7\u8EAC\uC7E8\u8EAC\uC7E9\u8EAC\uC7EA" + // 2970 - 2974
- "\u8EAC\uC7EB\u8EAC\uC7EC\u8EAC\uC6CB\u8EAC\uC6CC\u8EAC\uC6CD" + // 2975 - 2979
- "\u8EAC\uC6CE\u8EAC\uC6CF\u8EAC\uC6D0\u8EAC\uC6D1\u8EAC\uC6D2" + // 2980 - 2984
- "\u8EAC\uC6D3\u8EAC\uC6D4\u8EAC\uC6D5\u8EAC\uC6D6\u8EAC\uC6D7" + // 2985 - 2989
- "\u8EAC\uC6D8\u8EAC\uC6D9\u8EAC\uC6DA\u8EAC\uC6DB\u8EAC\uC6DC" + // 2990 - 2994
- "\u8EAC\uC6DD\u8EAC\uC6DE\u8EAC\uC6DF\u8EAC\uC6E0\u8EAC\uC6E1" + // 2995 - 2999
- "\u8EAC\uC6E2\u8EAC\uC6E3\u8EAC\uC6E4\u8EAC\uC6E5\u8EAC\uC6E6" + // 3000 - 3004
- "\u8EAC\uC6E7\u8EAC\uC6E8\u8EAC\uC6E9\u8EAC\uC6EA\u8EAC\uC6EB" + // 3005 - 3009
- "\u8EAC\uC6EC\u8EAC\uC6ED\u8EAC\uC6EE\u8EAC\uC6EF\u8EAC\uC6F0" + // 3010 - 3014
- "\u8EAC\uC6F1\u8EAC\uC6F2\u8EAC\uC6F3\u8EAC\uC6F4\u8EAC\uC6F5" + // 3015 - 3019
- "\u8EAC\uC6F6\u8EAC\uC6F7\u8EAC\uC6F8\u8EAC\uC6F9\u8EAC\uC6FA" + // 3020 - 3024
- "\u8EAC\uC6FB\u8EAC\uC6FC\u8EAC\uC6FD\u8EAC\uC6FE\u8EAC\uC7A1" + // 3025 - 3029
- "\u8EAC\uC7A2\u8EAC\uC7A3\u8EAC\uC7A4\u8EAC\uC7A5\u8EAC\uC7A6" + // 3030 - 3034
- "\u8EAC\uC7A7\u8EAC\uC7A8\u8EAC\uC7A9\u8EAC\uC7AA\u8EAC\uC7AB" + // 3035 - 3039
- "\u8EAC\uC7AC\u8EAC\uC5E9\u8EAC\uC5EA\u8EAC\uC5EB\u8EAC\uC5EC" + // 3040 - 3044
- "\u8EAC\uC5ED\u8EAC\uC5EE\u8EAC\uC5EF\u8EAC\uC5F0\u8EAC\uC5F1" + // 3045 - 3049
- "\u8EAC\uC5F2\u8EAC\uC5F3\u8EAC\uC5F4\u8EAC\uC5F5\u8EAC\uC5F6" + // 3050 - 3054
- "\u8EAC\uC5F7\u8EAC\uC5F8\u8EAC\uC5F9\u8EAC\uC5FA\u8EAC\uC5FB" + // 3055 - 3059
- "\u8EAC\uC5FC\u8EAC\uC5FD\u8EAC\uC5FE\u8EAC\uC6A1\u8EAC\uC6A2" + // 3060 - 3064
- "\u8EAC\uC6A3\u8EAC\uC6A4\u8EAC\uC6A5\u8EAC\uC6A6\u8EAC\uC6A7" + // 3065 - 3069
- "\u8EAC\uC6A8\u8EAC\uC6A9\u8EAC\uC6AA\u8EAC\uC6AB\u8EAC\uC6AC" + // 3070 - 3074
- "\u8EAC\uC6AD\u8EAC\uC6AE\u8EAC\uC6AF\u8EAC\uC6B0\u8EAC\uC6B1" + // 3075 - 3079
- "\u8EAC\uC6B2\u8EAC\uC6B3\u8EAC\uC6B4\u8EAC\uC6B5\u8EAC\uC6B6" + // 3080 - 3084
- "\u8EAC\uC6B7\u8EAC\uC6B8\u8EAC\uC6B9\u8EAC\uC6BA\u8EAC\uC6BB" + // 3085 - 3089
- "\u8EAC\uC6BC\u8EAC\uC6BD\u8EAC\uC6BE\u8EAC\uC6BF\u8EAC\uC6C0" + // 3090 - 3094
- "\u8EAC\uC6C1\u8EAC\uC6C2\u8EAC\uC6C3\u8EAC\uC6C4\u8EAC\uC6C5" + // 3095 - 3099
- "\u8EAC\uC6C6\u8EAC\uC6C7\u8EAC\uC6C8\u8EAC\uC6C9\u8EAC\uC6CA" + // 3100 - 3104
- "\u8EAC\uC5A9\u8EAC\uC5AA\u8EAC\uC5AB\u8EAC\uC5AC\u8EAC\uC5AD" + // 3105 - 3109
- "\u8EAC\uC5AE\u8EAC\uC5AF\u8EAC\uC5B0\u8EAC\uC5B1\u8EAC\uC5B2" + // 3110 - 3114
- "\u8EAC\uC5B3\u8EAC\uC5B4\u8EAC\uC5B5\u8EAC\uC5B6\u8EAC\uC5B7" + // 3115 - 3119
- "\u8EAC\uC5B8\u8EAC\uC5B9\u8EAC\uC5BA\u8EAC\uC5BB\u8EAC\uC5BC" + // 3120 - 3124
- "\u8EAC\uC5BD\u8EAC\uC5BE\u8EAC\uC5BF\u8EAC\uC5C0\u8EAC\uC5C1" + // 3125 - 3129
- "\u8EAC\uC5C2\u8EAC\uC5C3\u8EAC\uC5C4\u8EAC\uC5C5\u8EAC\uC5C6" + // 3130 - 3134
- "\u8EAC\uC5C7\u8EAC\uC5C8\u8EAC\uC5C9\u8EAC\uC5CA\u8EAC\uC5CB" + // 3135 - 3139
- "\u8EAC\uC5CC\u8EAC\uC5CD\u8EAC\uC5CE\u8EAC\uC5CF\u8EAC\uC5D0" + // 3140 - 3144
- "\u8EAC\uC5D1\u8EAC\uC5D2\u8EAC\uC5D3\u8EAC\uC5D4\u8EAC\uC5D5" + // 3145 - 3149
- "\u8EAC\uC5D6\u8EAC\uC5D7\u8EAC\uC5D8\u8EAC\uC5D9\u8EAC\uC5DA" + // 3150 - 3154
- "\u8EAC\uC5DB\u8EAC\uC5DC\u8EAC\uC5DD\u8EAC\uC5DE\u8EAC\uC5DF" + // 3155 - 3159
- "\u8EAC\uC5E0\u8EAC\uC5E1\u8EAC\uC5E2\u8EAC\uC5E3\u8EAC\uC5E4" + // 3160 - 3164
- "\u8EAC\uC5E5\u8EAC\uC5E6\u8EAC\uC5E7\u8EAC\uC5E8\u8EAC\uC4C7" + // 3165 - 3169
- "\u8EAC\uC4C8\u8EAC\uC4C9\u8EAC\uC4CA\u8EAC\uC4CB\u8EAC\uC4CC" + // 3170 - 3174
- "\u8EAC\uC4CD\u8EAC\uC4CE\u8EAC\uC4CF\u8EAC\uC4D0\u8EAC\uC4D1" + // 3175 - 3179
- "\u8EAC\uC4D2\u8EAC\uC4D3\u8EAC\uC4D4\u8EAC\uC4D5\u8EAC\uC4D6" + // 3180 - 3184
- "\u8EAC\uC4D7\u8EAC\uC4D8\u8EAC\uC4D9\u8EAC\uC4DA\u8EAC\uC4DB" + // 3185 - 3189
- "\u8EAC\uC4DC\u8EAC\uC4DD\u8EAC\uC4DE\u8EAC\uC4DF\u8EAC\uC4E0" + // 3190 - 3194
- "\u8EAC\uC4E1\u8EAC\uC4E2\u8EAC\uC4E3\u8EAC\uC4E4\u8EAC\uC4E5" + // 3195 - 3199
- "\u8EAC\uC4E6\u8EAC\uC4E7\u8EAC\uC4E8\u8EAC\uC4E9\u8EAC\uC4EA" + // 3200 - 3204
- "\u8EAC\uC4EB\u8EAC\uC4EC\u8EAC\uC4ED\u8EAC\uC4EE\u8EAC\uC4EF" + // 3205 - 3209
- "\u8EAC\uC4F0\u8EAC\uC4F1\u8EAC\uC4F2\u8EAC\uC4F3\u8EAC\uC4F4" + // 3210 - 3214
- "\u8EAC\uC4F5\u8EAC\uC4F6\u8EAC\uC4F7\u8EAC\uC4F8\u8EAC\uC4F9" + // 3215 - 3219
- "\u8EAC\uC4FA\u8EAC\uC4FB\u8EAC\uC4FC\u8EAC\uC4FD\u8EAC\uC4FE" + // 3220 - 3224
- "\u8EAC\uC5A1\u8EAC\uC5A2\u8EAC\uC5A3\u8EAC\uC5A4\u8EAC\uC5A5" + // 3225 - 3229
- "\u8EAC\uC5A6\u8EAC\uC5A7\u8EAC\uC5A8\u8EAC\uC3E5\u8EAC\uC3E6" + // 3230 - 3234
- "\u8EAC\uC3E7\u8EAC\uC3E8\u8EAC\uC3E9\u8EAC\uC3EA\u8EAC\uC3EB" + // 3235 - 3239
- "\u8EAC\uC3EC\u8EAC\uC3ED\u8EAC\uC3EE\u8EAC\uC3EF\u8EAC\uC3F0" + // 3240 - 3244
- "\u8EAC\uC3F1\u8EAC\uC3F2\u8EAC\uC3F3\u8EAC\uC3F4\u8EAC\uC3F5" + // 3245 - 3249
- "\u8EAC\uC3F6\u8EAC\uC3F7\u8EAC\uC3F8\u8EAC\uC3F9\u8EAC\uC3FA" + // 3250 - 3254
- "\u8EAC\uC3FB\u8EAC\uC3FC\u8EAC\uC3FD\u8EAC\uC3FE\u8EAC\uC4A1" + // 3255 - 3259
- "\u8EAC\uC4A2\u8EAC\uC4A3\u8EAC\uC4A4\u8EAC\uC4A5\u8EAC\uC4A6" + // 3260 - 3264
- "\u8EAC\uC4A7\u8EAC\uC4A8\u8EAC\uC4A9\u8EAC\uC4AA\u8EAC\uC4AB" + // 3265 - 3269
- "\u8EAC\uC4AC\u8EAC\uC4AD\u8EAC\uC4AE\u8EAC\uC4AF\u8EAC\uC4B0" + // 3270 - 3274
- "\u8EAC\uC4B1\u8EAC\uC4B2\u8EAC\uC4B3\u8EAC\uC4B4\u8EAC\uC4B5" + // 3275 - 3279
- "\u8EAC\uC4B6\u8EAC\uC4B7\u8EAC\uC4B8\u8EAC\uC4B9\u8EAC\uC4BA" + // 3280 - 3284
- "\u8EAC\uC4BB\u8EAC\uC4BC\u8EAC\uC4BD\u8EAC\uC4BE\u8EAC\uC4BF" + // 3285 - 3289
- "\u8EAC\uC4C0\u8EAC\uC4C1\u8EAC\uC4C2\u8EAC\uC4C3\u8EAC\uC4C4" + // 3290 - 3294
- "\u8EAC\uC4C5\u8EAC\uC4C6\u8EAC\uC3A5\u8EAC\uC3A6\u8EAC\uC3A7" + // 3295 - 3299
- "\u8EAC\uC3A8\u8EAC\uC3A9\u8EAC\uC3AA\u8EAC\uC3AB\u8EAC\uC3AC" + // 3300 - 3304
- "\u8EAC\uC3AD\u8EAC\uC3AE\u8EAC\uC3AF\u8EAC\uC3B0\u8EAC\uC3B1" + // 3305 - 3309
- "\u8EAC\uC3B2\u8EAC\uC3B3\u8EAC\uC3B4\u8EAC\uC3B5\u8EAC\uC3B6" + // 3310 - 3314
- "\u8EAC\uC3B7\u8EAC\uC3B8\u8EAC\uC3B9\u8EAC\uC3BA\u8EAC\uC3BB" + // 3315 - 3319
- "\u8EAC\uC3BC\u8EAC\uC3BD\u8EAC\uC3BE\u8EAC\uC3BF\u8EAC\uC3C0" + // 3320 - 3324
- "\u8EAC\uC3C1\u8EAC\uC3C2\u8EAC\uC3C3\u8EAC\uC3C4\u8EAC\uC3C5" + // 3325 - 3329
- "\u8EAC\uC3C6\u8EAC\uC3C7\u8EAC\uC3C8\u8EAC\uC3C9\u8EAC\uC3CA" + // 3330 - 3334
- "\u8EAC\uC3CB\u8EAC\uC3CC\u8EAC\uC3CD\u8EAC\uC3CE\u8EAC\uC3CF" + // 3335 - 3339
- "\u8EAC\uC3D0\u8EAC\uC3D1\u8EAC\uC3D2\u8EAC\uC3D3\u8EAC\uC3D4" + // 3340 - 3344
- "\u8EAC\uC3D5\u8EAC\uC3D6\u8EAC\uC3D7\u8EAC\uC3D8\u8EAC\uC3D9" + // 3345 - 3349
- "\u8EAC\uC3DA\u8EAC\uC3DB\u8EAC\uC3DC\u8EAC\uC3DD\u8EAC\uC3DE" + // 3350 - 3354
- "\u8EAC\uC3DF\u8EAC\uC3E0\u8EAC\uC3E1\u8EAC\uC3E2\u8EAC\uC3E3" + // 3355 - 3359
- "\u8EAC\uC3E4\u8EAC\uC2C3\u8EAC\uC2C4\u8EAC\uC2C5\u8EAC\uC2C6" + // 3360 - 3364
- "\u8EAC\uC2C7\u8EAC\uC2C8\u8EAC\uC2C9\u8EAC\uC2CA\u8EAC\uC2CB" + // 3365 - 3369
- "\u8EAC\uC2CC\u8EAC\uC2CD\u8EAC\uC2CE\u8EAC\uC2CF\u8EAC\uC2D0" + // 3370 - 3374
- "\u8EAC\uC2D1\u8EAC\uC2D2\u8EAC\uC2D3\u8EAC\uC2D4\u8EAC\uC2D5" + // 3375 - 3379
- "\u8EAC\uC2D6\u8EAC\uC2D7\u8EAC\uC2D8\u8EAC\uC2D9\u8EAC\uC2DA" + // 3380 - 3384
- "\u8EAC\uC2DB\u8EAC\uC2DC\u8EAC\uC2DD\u8EAC\uC2DE\u8EAC\uC2DF" + // 3385 - 3389
- "\u8EAC\uC2E0\u8EAC\uC2E1\u8EAC\uC2E2\u8EAC\uC2E3\u8EAC\uC2E4" + // 3390 - 3394
- "\u8EAC\uC2E5\u8EAC\uC2E6\u8EAC\uC2E7\u8EAC\uC2E8\u8EAC\uC2E9" + // 3395 - 3399
- "\u8EAC\uC2EA\u8EAC\uC2EB\u8EAC\uC2EC\u8EAC\uC2ED\u8EAC\uC2EE" + // 3400 - 3404
- "\u8EAC\uC2EF\u8EAC\uC2F0\u8EAC\uC2F1\u8EAC\uC2F2\u8EAC\uC2F3" + // 3405 - 3409
- "\u8EAC\uC2F4\u8EAC\uC2F5\u8EAC\uC2F6\u8EAC\uC2F7\u8EAC\uC2F8" + // 3410 - 3414
- "\u8EAC\uC2F9\u8EAC\uC2FA\u8EAC\uC2FB\u8EAC\uC2FC\u8EAC\uC2FD" + // 3415 - 3419
- "\u8EAC\uC2FE\u8EAC\uC3A1\u8EAC\uC3A2\u8EAC\uC3A3\u8EAC\uC3A4" + // 3420 - 3424
- "\u8EAC\uC1E1\u8EAC\uC1E2\u8EAC\uC1E3\u8EAC\uC1E4\u8EAC\uC1E5" + // 3425 - 3429
- "\u8EAC\uC1E6\u8EAC\uC1E7\u8EAC\uC1E8\u8EAC\uC1E9\u8EAC\uC1EA" + // 3430 - 3434
- "\u8EAC\uC1EB\u8EAC\uC1EC\u8EAC\uC1ED\u8EAC\uC1EE\u8EAC\uC1EF" + // 3435 - 3439
- "\u8EAC\uC1F0\u8EAC\uC1F1\u8EAC\uC1F2\u8EAC\uC1F3\u8EAC\uC1F4" + // 3440 - 3444
- "\u8EAC\uC1F5\u8EAC\uC1F6\u8EAC\uC1F7\u8EAC\uC1F8\u8EAC\uC1F9" + // 3445 - 3449
- "\u8EAC\uC1FA\u8EAC\uC1FB\u8EAC\uC1FC\u8EAC\uC1FD\u8EAC\uC1FE" + // 3450 - 3454
- "\u8EAC\uC2A1\u8EAC\uC2A2\u8EAC\uC2A3\u8EAC\uC2A4\u8EAC\uC2A5" + // 3455 - 3459
- "\u8EAC\uC2A6\u8EAC\uC2A7\u8EAC\uC2A8\u8EAC\uC2A9\u8EAC\uC2AA" + // 3460 - 3464
- "\u8EAC\uC2AB\u8EAC\uC2AC\u8EAC\uC2AD\u8EAC\uC2AE\u8EAC\uC2AF" + // 3465 - 3469
- "\u8EAC\uC2B0\u8EAC\uC2B1\u8EAC\uC2B2\u8EAC\uC2B3\u8EAC\uC2B4" + // 3470 - 3474
- "\u8EAC\uC2B5\u8EAC\uC2B6\u8EAC\uC2B7\u8EAC\uC2B8\u8EAC\uC2B9" + // 3475 - 3479
- "\u8EAC\uC2BA\u8EAC\uC2BB\u8EAC\uC2BC\u8EAC\uC2BD\u8EAC\uC2BE" + // 3480 - 3484
- "\u8EAC\uC2BF\u8EAC\uC2C0\u8EAC\uC2C1\u8EAC\uC2C2\u8EAC\uC1A1" + // 3485 - 3489
- "\u8EAC\uC1A2\u8EAC\uC1A3\u8EAC\uC1A4\u8EAC\uC1A5\u8EAC\uC1A6" + // 3490 - 3494
- "\u8EAC\uC1A7\u8EAC\uC1A8\u8EAC\uC1A9\u8EAC\uC1AA\u8EAC\uC1AB" + // 3495 - 3499
- "\u8EAC\uC1AC\u8EAC\uC1AD\u8EAC\uC1AE\u8EAC\uC1AF\u8EAC\uC1B0" + // 3500 - 3504
- "\u8EAC\uC1B1\u8EAC\uC1B2\u8EAC\uC1B3\u8EAC\uC1B4\u8EAC\uC1B5" + // 3505 - 3509
- "\u8EAC\uC1B6\u8EAC\uC1B7\u8EAC\uC1B8\u8EAC\uC1B9\u8EAC\uC1BA" + // 3510 - 3514
- "\u8EAC\uC1BB\u8EAC\uC1BC\u8EAC\uC1BD\u8EAC\uC1BE\u8EAC\uC1BF" + // 3515 - 3519
- "\u8EAC\uC1C0\u8EAC\uC1C1\u8EAC\uC1C2\u8EAC\uC1C3\u8EAC\uC1C4" + // 3520 - 3524
- "\u8EAC\uC1C5\u8EAC\uC1C6\u8EAC\uC1C7\u8EAC\uC1C8\u8EAC\uC1C9" + // 3525 - 3529
- "\u8EAC\uC1CA\u8EAC\uC1CB\u8EAC\uC1CC\u8EAC\uC1CD\u8EAC\uC1CE" + // 3530 - 3534
- "\u8EAC\uC1CF\u8EAC\uC1D0\u8EAC\uC1D1\u8EAC\uC1D2\u8EAC\uC1D3" + // 3535 - 3539
- "\u8EAC\uC1D4\u8EAC\uC1D5\u8EAC\uC1D6\u8EAC\uC1D7\u8EAC\uC1D8" + // 3540 - 3544
- "\u8EAC\uC1D9\u8EAC\uC1DA\u8EAC\uC1DB\u8EAC\uC1DC\u8EAC\uC1DD" + // 3545 - 3549
- "\u8EAC\uC1DE\u8EAC\uC1DF\u8EAC\uC1E0\u8EAC\uC0BF\u8EAC\uC0C0" + // 3550 - 3554
- "\u8EAC\uC0C1\u8EAC\uC0C2\u8EAC\uC0C3\u8EAC\uC0C4\u8EAC\uC0C5" + // 3555 - 3559
- "\u8EAC\uC0C6\u8EAC\uC0C7\u8EAC\uC0C8\u8EAC\uC0C9\u8EAC\uC0CA" + // 3560 - 3564
- "\u8EAC\uC0CB\u8EAC\uC0CC\u8EAC\uC0CD\u8EAC\uC0CE\u8EAC\uC0CF" + // 3565 - 3569
- "\u8EAC\uC0D0\u8EAC\uC0D1\u8EAC\uC0D2\u8EAC\uC0D3\u8EAC\uC0D4" + // 3570 - 3574
- "\u8EAC\uC0D5\u8EAC\uC0D6\u8EAC\uC0D7\u8EAC\uC0D8\u8EAC\uC0D9" + // 3575 - 3579
- "\u8EAC\uC0DA\u8EAC\uC0DB\u8EAC\uC0DC\u8EAC\uC0DD\u8EAC\uC0DE" + // 3580 - 3584
- "\u8EAC\uC0DF\u8EAC\uC0E0\u8EAC\uC0E1\u8EAC\uC0E2\u8EAC\uC0E3" + // 3585 - 3589
- "\u8EAC\uC0E4\u8EAC\uC0E5\u8EAC\uC0E6\u8EAC\uC0E7\u8EAC\uC0E8" + // 3590 - 3594
- "\u8EAC\uC0E9\u8EAC\uC0EA\u8EAC\uC0EB\u8EAC\uC0EC\u8EAC\uC0ED" + // 3595 - 3599
- "\u8EAC\uC0EE\u8EAC\uC0EF\u8EAC\uC0F0\u8EAC\uC0F1\u8EAC\uC0F2" + // 3600 - 3604
- "\u8EAC\uC0F3\u8EAC\uC0F4\u8EAC\uC0F5\u8EAC\uC0F6\u8EAC\uC0F7" + // 3605 - 3609
- "\u8EAC\uC0F8\u8EAC\uC0F9\u8EAC\uC0FA\u8EAC\uC0FB\u8EAC\uC0FC" + // 3610 - 3614
- "\u8EAC\uC0FD\u8EAC\uC0FE\u8EAC\uBFDD\u8EAC\uBFDE\u8EAC\uBFDF" + // 3615 - 3619
- "\u8EAC\uBFE0\u8EAC\uBFE1\u8EAC\uBFE2\u8EAC\uBFE3\u8EAC\uBFE4" + // 3620 - 3624
- "\u8EAC\uBFE5\u8EAC\uBFE6\u8EAC\uBFE7\u8EAC\uBFE8\u8EAC\uBFE9" + // 3625 - 3629
- "\u8EAC\uBFEA\u8EAC\uBFEB\u8EAC\uBFEC\u8EAC\uBFED\u8EAC\uBFEE" + // 3630 - 3634
- "\u8EAC\uBFEF\u8EAC\uBFF0\u8EAC\uBFF1\u8EAC\uBFF2\u8EAC\uBFF3" + // 3635 - 3639
- "\u8EAC\uBFF4\u8EAC\uBFF5\u8EAC\uBFF6\u8EAC\uBFF7\u8EAC\uBFF8" + // 3640 - 3644
- "\u8EAC\uBFF9\u8EAC\uBFFA\u8EAC\uBFFB\u8EAC\uBFFC\u8EAC\uBFFD" + // 3645 - 3649
- "\u8EAC\uBFFE\u8EAC\uC0A1\u8EAC\uC0A2\u8EAC\uC0A3\u8EAC\uC0A4" + // 3650 - 3654
- "\u8EAC\uC0A5\u8EAC\uC0A6\u8EAC\uC0A7\u8EAC\uC0A8\u8EAC\uC0A9" + // 3655 - 3659
- "\u8EAC\uC0AA\u8EAC\uC0AB\u8EAC\uC0AC\u8EAC\uC0AD\u8EAC\uC0AE" + // 3660 - 3664
- "\u8EAC\uC0AF\u8EAC\uC0B0\u8EAC\uC0B1\u8EAC\uC0B2\u8EAC\uC0B3" + // 3665 - 3669
- "\u8EAC\uC0B4\u8EAC\uC0B5\u8EAC\uC0B6\u8EAC\uC0B7\u8EAC\uC0B8" + // 3670 - 3674
- "\u8EAC\uC0B9\u8EAC\uC0BA\u8EAC\uC0BB\u8EAC\uC0BC\u8EAC\uC0BD" + // 3675 - 3679
- "\u8EAC\uC0BE\u8EAC\uBEFB\u8EAC\uBEFC\u8EAC\uBEFD\u8EAC\uBEFE" + // 3680 - 3684
- "\u8EAC\uBFA1\u8EAC\uBFA2\u8EAC\uBFA3\u8EAC\uBFA4\u8EAC\uBFA5" + // 3685 - 3689
- "\u8EAC\uBFA6\u8EAC\uBFA7\u8EAC\uBFA8\u8EAC\uBFA9\u8EAC\uBFAA" + // 3690 - 3694
- "\u8EAC\uBFAB\u8EAC\uBFAC\u8EAC\uBFAD\u8EAC\uBFAE\u8EAC\uBFAF" + // 3695 - 3699
- "\u8EAC\uBFB0\u8EAC\uBFB1\u8EAC\uBFB2\u8EAC\uBFB3\u8EAC\uBFB4" + // 3700 - 3704
- "\u8EAC\uBFB5\u8EAC\uBFB6\u8EAC\uBFB7\u8EAC\uBFB8\u8EAC\uBFB9" + // 3705 - 3709
- "\u8EAC\uBFBA\u8EAC\uBFBB\u8EAC\uBFBC\u8EAC\uBFBD\u8EAC\uBFBE" + // 3710 - 3714
- "\u8EAC\uBFBF\u8EAC\uBFC0\u8EAC\uBFC1\u8EAC\uBFC2\u8EAC\uBFC3" + // 3715 - 3719
- "\u8EAC\uBFC4\u8EAC\uBFC5\u8EAC\uBFC6\u8EAC\uBFC7\u8EAC\uBFC8" + // 3720 - 3724
- "\u8EAC\uBFC9\u8EAC\uBFCA\u8EAC\uBFCB\u8EAC\uBFCC\u8EAC\uBFCD" + // 3725 - 3729
- "\u8EAC\uBFCE\u8EAC\uBFCF\u8EAC\uBFD0\u8EAC\uBFD1\u8EAC\uBFD2" + // 3730 - 3734
- "\u8EAC\uBFD3\u8EAC\uBFD4\u8EAC\uBFD5\u8EAC\uBFD6\u8EAC\uBFD7" + // 3735 - 3739
- "\u8EAC\uBFD8\u8EAC\uBFD9\u8EAC\uBFDA\u8EAC\uBFDB\u8EAC\uBFDC" + // 3740 - 3744
- "\u8EAC\uBEBB\u8EAC\uBEBC\u8EAC\uBEBD\u8EAC\uBEBE\u8EAC\uBEBF" + // 3745 - 3749
- "\u8EAC\uBEC0\u8EAC\uBEC1\u8EAC\uBEC2\u8EAC\uBEC3\u8EAC\uBEC4" + // 3750 - 3754
- "\u8EAC\uBEC5\u8EAC\uBEC6\u8EAC\uBEC7\u8EAC\uBEC8\u8EAC\uBEC9" + // 3755 - 3759
- "\u8EAC\uBECA\u8EAC\uBECB\u8EAC\uBECC\u8EAC\uBECD\u8EAC\uBECE" + // 3760 - 3764
- "\u8EAC\uBECF\u8EAC\uBED0\u8EAC\uBED1\u8EAC\uBED2\u8EAC\uBED3" + // 3765 - 3769
- "\u8EAC\uBED4\u8EAC\uBED5\u8EAC\uBED6\u8EAC\uBED7\u8EAC\uBED8" + // 3770 - 3774
- "\u8EAC\uBED9\u8EAC\uBEDA\u8EAC\uBEDB\u8EAC\uBEDC\u8EAC\uBEDD" + // 3775 - 3779
- "\u8EAC\uBEDE\u8EAC\uBEDF\u8EAC\uBEE0\u8EAC\uBEE1\u8EAC\uBEE2" + // 3780 - 3784
- "\u8EAC\uBEE3\u8EAC\uBEE4\u8EAC\uBEE5\u8EAC\uBEE6\u8EAC\uBEE7" + // 3785 - 3789
- "\u8EAC\uBEE8\u8EAC\uBEE9\u8EAC\uBEEA\u8EAC\uBEEB\u8EAC\uBEEC" + // 3790 - 3794
- "\u8EAC\uBEED\u8EAC\uBEEE\u8EAC\uBEEF\u8EAC\uBEF0\u8EAC\uBEF1" + // 3795 - 3799
- "\u8EAC\uBEF2\u8EAC\uBEF3\u8EAC\uBEF4\u8EAC\uBEF5\u8EAC\uBEF6" + // 3800 - 3804
- "\u8EAC\uBEF7\u8EAC\uBEF8\u8EAC\uBEF9\u8EAC\uBEFA\u8EAC\uBDD9" + // 3805 - 3809
- "\u8EAC\uBDDA\u8EAC\uBDDB\u8EAC\uBDDC\u8EAC\uBDDD\u8EAC\uBDDE" + // 3810 - 3814
- "\u8EAC\uBDDF\u8EAC\uBDE0\u8EAC\uBDE1\u8EAC\uBDE2\u8EAC\uBDE3" + // 3815 - 3819
- "\u8EAC\uBDE4\u8EAC\uBDE5\u8EAC\uBDE6\u8EAC\uBDE7\u8EAC\uBDE8" + // 3820 - 3824
- "\u8EAC\uBDE9\u8EAC\uBDEA\u8EAC\uBDEB\u8EAC\uBDEC\u8EAC\uBDED" + // 3825 - 3829
- "\u8EAC\uBDEE\u8EAC\uBDEF\u8EAC\uBDF0\u8EAC\uBDF1\u8EAC\uBDF2" + // 3830 - 3834
- "\u8EAC\uBDF3\u8EAC\uBDF4\u8EAC\uBDF5\u8EAC\uBDF6\u8EAC\uBDF7" + // 3835 - 3839
- "\u8EAC\uBDF8\u8EAC\uBDF9\u8EAC\uBDFA\u8EAC\uBDFB\u8EAC\uBDFC" + // 3840 - 3844
- "\u8EAC\uBDFD\u8EAC\uBDFE\u8EAC\uBEA1\u8EAC\uBEA2\u8EAC\uBEA3" + // 3845 - 3849
- "\u8EAC\uBEA4\u8EAC\uBEA5\u8EAC\uBEA6\u8EAC\uBEA7\u8EAC\uBEA8" + // 3850 - 3854
- "\u8EAC\uBEA9\u8EAC\uBEAA\u8EAC\uBEAB\u8EAC\uBEAC\u8EAC\uBEAD" + // 3855 - 3859
- "\u8EAC\uBEAE\u8EAC\uBEAF\u8EAC\uBEB0\u8EAC\uBEB1\u8EAC\uBEB2" + // 3860 - 3864
- "\u8EAC\uBEB3\u8EAC\uBEB4\u8EAC\uBEB5\u8EAC\uBEB6\u8EAC\uBEB7" + // 3865 - 3869
- "\u8EAC\uBEB8\u8EAC\uBEB9\u8EAC\uBEBA\u8EAC\uBCF7\u8EAC\uBCF8" + // 3870 - 3874
- "\u8EAC\uBCF9\u8EAC\uBCFA\u8EAC\uBCFB\u8EAC\uBCFC\u8EAC\uBCFD" + // 3875 - 3879
- "\u8EAC\uBCFE\u8EAC\uBDA1\u8EAC\uBDA2\u8EAC\uBDA3\u8EAC\uBDA4" + // 3880 - 3884
- "\u8EAC\uBDA5\u8EAC\uBDA6\u8EAC\uBDA7\u8EAC\uBDA8\u8EAC\uBDA9" + // 3885 - 3889
- "\u8EAC\uBDAA\u8EAC\uBDAB\u8EAC\uBDAC\u8EAC\uBDAD\u8EAC\uBDAE" + // 3890 - 3894
- "\u8EAC\uBDAF\u8EAC\uBDB0\u8EAC\uBDB1\u8EAC\uBDB2\u8EAC\uBDB3" + // 3895 - 3899
- "\u8EAC\uBDB4\u8EAC\uBDB5\u8EAC\uBDB6\u8EAC\uBDB7\u8EAC\uBDB8" + // 3900 - 3904
- "\u8EAC\uBDB9\u8EAC\uBDBA\u8EAC\uBDBB\u8EAC\uBDBC\u8EAC\uBDBD" + // 3905 - 3909
- "\u8EAC\uBDBE\u8EAC\uBDBF\u8EAC\uBDC0\u8EAC\uBDC1\u8EAC\uBDC2" + // 3910 - 3914
- "\u8EAC\uBDC3\u8EAC\uBDC4\u8EAC\uBDC5\u8EAC\uBDC6\u8EAC\uBDC7" + // 3915 - 3919
- "\u8EAC\uBDC8\u8EAC\uBDC9\u8EAC\uBDCA\u8EAC\uBDCB\u8EAC\uBDCC" + // 3920 - 3924
- "\u8EAC\uBDCD\u8EAC\uBDCE\u8EAC\uBDCF\u8EAC\uBDD0\u8EAC\uBDD1" + // 3925 - 3929
- "\u8EAC\uBDD2\u8EAC\uBDD3\u8EAC\uBDD4\u8EAC\uBDD5\u8EAC\uBDD6" + // 3930 - 3934
- "\u8EAC\uBDD7\u8EAC\uBDD8\u8EAC\uBCB7\u8EAC\uBCB8\u8EAC\uBCB9" + // 3935 - 3939
- "\u8EAC\uBCBA\u8EAC\uBCBB\u8EAC\uBCBC\u8EAC\uBCBD\u8EAC\uBCBE" + // 3940 - 3944
- "\u8EAC\uBCBF\u8EAC\uBCC0\u8EAC\uBCC1\u8EAC\uBCC2\u8EAC\uBCC3" + // 3945 - 3949
- "\u8EAC\uBCC4\u8EAC\uBCC5\u8EAC\uBCC6\u8EAC\uBCC7\u8EAC\uBCC8" + // 3950 - 3954
- "\u8EAC\uBCC9\u8EAC\uBCCA\u8EAC\uBCCB\u8EAC\uBCCC\u8EAC\uBCCD" + // 3955 - 3959
- "\u8EAC\uBCCE\u8EAC\uBCCF\u8EAC\uBCD0\u8EAC\uBCD1\u8EAC\uBCD2" + // 3960 - 3964
- "\u8EAC\uBCD3\u8EAC\uBCD4\u8EAC\uBCD5\u8EAC\uBCD6\u8EAC\uBCD7" + // 3965 - 3969
- "\u8EAC\uBCD8\u8EAC\uBCD9\u8EAC\uBCDA\u8EAC\uBCDB\u8EAC\uBCDC" + // 3970 - 3974
- "\u8EAC\uBCDD\u8EAC\uBCDE\u8EAC\uBCDF\u8EAC\uBCE0\u8EAC\uBCE1" + // 3975 - 3979
- "\u8EAC\uBCE2\u8EAC\uBCE3\u8EAC\uBCE4\u8EAC\uBCE5\u8EAC\uBCE6" + // 3980 - 3984
- "\u8EAC\uBCE7\u8EAC\uBCE8\u8EAC\uBCE9\u8EAC\uBCEA\u8EAC\uBCEB" + // 3985 - 3989
- "\u8EAC\uBCEC\u8EAC\uBCED\u8EAC\uBCEE\u8EAC\uBCEF\u8EAC\uBCF0" + // 3990 - 3994
- "\u8EAC\uBCF1\u8EAC\uBCF2\u8EAC\uBCF3\u8EAC\uBCF4\u8EAC\uBCF5" + // 3995 - 3999
- "\u8EAC\uBCF6\u8EAC\uBBD5\u8EAC\uBBD6\u8EAC\uBBD7\u8EAC\uBBD8" + // 4000 - 4004
- "\u8EAC\uBBD9\u8EAC\uBBDA\u8EAC\uBBDB\u8EAC\uBBDC\u8EAC\uBBDD" + // 4005 - 4009
- "\u8EAC\uBBDE\u8EAC\uBBDF\u8EAC\uBBE0\u8EAC\uBBE1\u8EAC\uBBE2" + // 4010 - 4014
- "\u8EAC\uBBE3\u8EAC\uBBE4\u8EAC\uBBE5\u8EAC\uBBE6\u8EAC\uBBE7" + // 4015 - 4019
- "\u8EAC\uBBE8\u8EAC\uBBE9\u8EAC\uBBEA\u8EAC\uBBEB\u8EAC\uBBEC" + // 4020 - 4024
- "\u8EAC\uBBED\u8EAC\uBBEE\u8EAC\uBBEF\u8EAC\uBBF0\u8EAC\uBBF1" + // 4025 - 4029
- "\u8EAC\uBBF2\u8EAC\uBBF3\u8EAC\uBBF4\u8EAC\uBBF5\u8EAC\uBBF6" + // 4030 - 4034
- "\u8EAC\uBBF7\u8EAC\uBBF8\u8EAC\uBBF9\u8EAC\uBBFA\u8EAC\uBBFB" + // 4035 - 4039
- "\u8EAC\uBBFC\u8EAC\uBBFD\u8EAC\uBBFE\u8EAC\uBCA1\u8EAC\uBCA2" + // 4040 - 4044
- "\u8EAC\uBCA3\u8EAC\uBCA4\u8EAC\uBCA5\u8EAC\uBCA6\u8EAC\uBCA7" + // 4045 - 4049
- "\u8EAC\uBCA8\u8EAC\uBCA9\u8EAC\uBCAA\u8EAC\uBCAB\u8EAC\uBCAC" + // 4050 - 4054
- "\u8EAC\uBCAD\u8EAC\uBCAE\u8EAC\uBCAF\u8EAC\uBCB0\u8EAC\uBCB1" + // 4055 - 4059
- "\u8EAC\uBCB2\u8EAC\uBCB3\u8EAC\uBCB4\u8EAC\uBCB5\u8EAC\uBCB6" + // 4060 - 4064
- "\u8EAC\uBAF3\u8EAC\uBAF4\u8EAC\uBAF5\u8EAC\uBAF6\u8EAC\uBAF7" + // 4065 - 4069
- "\u8EAC\uBAF8\u8EAC\uBAF9\u8EAC\uBAFA\u8EAC\uBAFB\u8EAC\uBAFC" + // 4070 - 4074
- "\u8EAC\uBAFD\u8EAC\uBAFE\u8EAC\uBBA1\u8EAC\uBBA2\u8EAC\uBBA3" + // 4075 - 4079
- "\u8EAC\uBBA4\u8EAC\uBBA5\u8EAC\uBBA6\u8EAC\uBBA7\u8EAC\uBBA8" + // 4080 - 4084
- "\u8EAC\uBBA9\u8EAC\uBBAA\u8EAC\uBBAB\u8EAC\uBBAC\u8EAC\uBBAD" + // 4085 - 4089
- "\u8EAC\uBBAE\u8EAC\uBBAF\u8EAC\uBBB0\u8EAC\uBBB1\u8EAC\uBBB2" + // 4090 - 4094
- "\u8EAC\uBBB3\u8EAC\uBBB4\u8EAC\uBBB5\u8EAC\uBBB6\u8EAC\uBBB7" + // 4095 - 4099
- "\u8EAC\uBBB8\u8EAC\uBBB9\u8EAC\uBBBA\u8EAC\uBBBB\u8EAC\uBBBC" + // 4100 - 4104
- "\u8EAC\uBBBD\u8EAC\uBBBE\u8EAC\uBBBF\u8EAC\uBBC0\u8EAC\uBBC1" + // 4105 - 4109
- "\u8EAC\uBBC2\u8EAC\uBBC3\u8EAC\uBBC4\u8EAC\uBBC5\u8EAC\uBBC6" + // 4110 - 4114
- "\u8EAC\uBBC7\u8EAC\uBBC8\u8EAC\uBBC9\u8EAC\uBBCA\u8EAC\uBBCB" + // 4115 - 4119
- "\u8EAC\uBBCC\u8EAC\uBBCD\u8EAC\uBBCE\u8EAC\uBBCF\u8EAC\uBBD0" + // 4120 - 4124
- "\u8EAC\uBBD1\u8EAC\uBBD2\u8EAC\uBBD3\u8EAC\uBBD4\u8EAC\uBAB3" + // 4125 - 4129
- "\u8EAC\uBAB4\u8EAC\uBAB5\u8EAC\uBAB6\u8EAC\uBAB7\u8EAC\uBAB8" + // 4130 - 4134
- "\u8EAC\uBAB9\u8EAC\uBABA\u8EAC\uBABB\u8EAC\uBABC\u8EAC\uBABD" + // 4135 - 4139
- "\u8EAC\uBABE\u8EAC\uBABF\u8EAC\uBAC0\u8EAC\uBAC1\u8EAC\uBAC2" + // 4140 - 4144
- "\u8EAC\uBAC3\u8EAC\uBAC4\u8EAC\uBAC5\u8EAC\uBAC6\u8EAC\uBAC7" + // 4145 - 4149
- "\u8EAC\uBAC8\u8EAC\uBAC9\u8EAC\uBACA\u8EAC\uBACB\u8EAC\uBACC" + // 4150 - 4154
- "\u8EAC\uBACD\u8EAC\uBACE\u8EAC\uBACF\u8EAC\uBAD0\u8EAC\uBAD1" + // 4155 - 4159
- "\u8EAC\uBAD2\u8EAC\uBAD3\u8EAC\uBAD4\u8EAC\uBAD5\u8EAC\uBAD6" + // 4160 - 4164
- "\u8EAC\uBAD7\u8EAC\uBAD8\u8EAC\uBAD9\u8EAC\uBADA\u8EAC\uBADB" + // 4165 - 4169
- "\u8EAC\uBADC\u8EAC\uBADD\u8EAC\uBADE\u8EAC\uBADF\u8EAC\uBAE0" + // 4170 - 4174
- "\u8EAC\uBAE1\u8EAC\uBAE2\u8EAC\uBAE3\u8EAC\uBAE4\u8EAC\uBAE5" + // 4175 - 4179
- "\u8EAC\uBAE6\u8EAC\uBAE7\u8EAC\uBAE8\u8EAC\uBAE9\u8EAC\uBAEA" + // 4180 - 4184
- "\u8EAC\uBAEB\u8EAC\uBAEC\u8EAC\uBAED\u8EAC\uBAEE\u8EAC\uBAEF" + // 4185 - 4189
- "\u8EAC\uBAF0\u8EAC\uBAF1\u8EAC\uBAF2\u8EAC\uB9D1\u8EAC\uB9D2" + // 4190 - 4194
- "\u8EAC\uB9D3\u8EAC\uB9D4\u8EAC\uB9D5\u8EAC\uB9D6\u8EAC\uB9D7" + // 4195 - 4199
- "\u8EAC\uB9D8\u8EAC\uB9D9\u8EAC\uB9DA\u8EAC\uB9DB\u8EAC\uB9DC" + // 4200 - 4204
- "\u8EAC\uB9DD\u8EAC\uB9DE\u8EAC\uB9DF\u8EAC\uB9E0\u8EAC\uB9E1" + // 4205 - 4209
- "\u8EAC\uB9E2\u8EAC\uB9E3\u8EAC\uB9E4\u8EAC\uB9E5\u8EAC\uB9E6" + // 4210 - 4214
- "\u8EAC\uB9E7\u8EAC\uB9E8\u8EAC\uB9E9\u8EAC\uB9EA\u8EAC\uB9EB" + // 4215 - 4219
- "\u8EAC\uB9EC\u8EAC\uB9ED\u8EAC\uB9EE\u8EAC\uB9EF\u8EAC\uB9F0" + // 4220 - 4224
- "\u8EAC\uB9F1\u8EAC\uB9F2\u8EAC\uB9F3\u8EAC\uB9F4\u8EAC\uB9F5" + // 4225 - 4229
- "\u8EAC\uB9F6\u8EAC\uB9F7\u8EAC\uB9F8\u8EAC\uB9F9\u8EAC\uB9FA" + // 4230 - 4234
- "\u8EAC\uB9FB\u8EAC\uB9FC\u8EAC\uB9FD\u8EAC\uB9FE\u8EAC\uBAA1" + // 4235 - 4239
- "\u8EAC\uBAA2\u8EAC\uBAA3\u8EAC\uBAA4\u8EAC\uBAA5\u8EAC\uBAA6" + // 4240 - 4244
- "\u8EAC\uBAA7\u8EAC\uBAA8\u8EAC\uBAA9\u8EAC\uBAAA\u8EAC\uBAAB" + // 4245 - 4249
- "\u8EAC\uBAAC\u8EAC\uBAAD\u8EAC\uBAAE\u8EAC\uBAAF\u8EAC\uBAB0" + // 4250 - 4254
- "\u8EAC\uBAB1\u8EAC\uBAB2\u8EAC\uB8EF\u8EAC\uB8F0\u8EAC\uB8F1" + // 4255 - 4259
- "\u8EAC\uB8F2\u8EAC\uB8F3\u8EAC\uB8F4\u8EAC\uB8F5\u8EAC\uB8F6" + // 4260 - 4264
- "\u8EAC\uB8F7\u8EAC\uB8F8\u8EAC\uB8F9\u8EAC\uB8FA\u8EAC\uB8FB" + // 4265 - 4269
- "\u8EAC\uB8FC\u8EAC\uB8FD\u8EAC\uB8FE\u8EAC\uB9A1\u8EAC\uB9A2" + // 4270 - 4274
- "\u8EAC\uB9A3\u8EAC\uB9A4\u8EAC\uB9A5\u8EAC\uB9A6\u8EAC\uB9A7" + // 4275 - 4279
- "\u8EAC\uB9A8\u8EAC\uB9A9\u8EAC\uB9AA\u8EAC\uB9AB\u8EAC\uB9AC" + // 4280 - 4284
- "\u8EAC\uB9AD\u8EAC\uB9AE\u8EAC\uB9AF\u8EAC\uB9B0\u8EAC\uB9B1" + // 4285 - 4289
- "\u8EAC\uB9B2\u8EAC\uB9B3\u8EAC\uB9B4\u8EAC\uB9B5\u8EAC\uB9B6" + // 4290 - 4294
- "\u8EAC\uB9B7\u8EAC\uB9B8\u8EAC\uB9B9\u8EAC\uB9BA\u8EAC\uB9BB" + // 4295 - 4299
- "\u8EAC\uB9BC\u8EAC\uB9BD\u8EAC\uB9BE\u8EAC\uB9BF\u8EAC\uB9C0" + // 4300 - 4304
- "\u8EAC\uB9C1\u8EAC\uB9C2\u8EAC\uB9C3\u8EAC\uB9C4\u8EAC\uB9C5" + // 4305 - 4309
- "\u8EAC\uB9C6\u8EAC\uB9C7\u8EAC\uB9C8\u8EAC\uB9C9\u8EAC\uB9CA" + // 4310 - 4314
- "\u8EAC\uB9CB\u8EAC\uB9CC\u8EAC\uB9CD\u8EAC\uB9CE\u8EAC\uB9CF" + // 4315 - 4319
- "\u8EAC\uB9D0\u8EAC\uB8AF\u8EAC\uB8B0\u8EAC\uB8B1\u8EAC\uB8B2" + // 4320 - 4324
- "\u8EAC\uB8B3\u8EAC\uB8B4\u8EAC\uB8B5\u8EAC\uB8B6\u8EAC\uB8B7" + // 4325 - 4329
- "\u8EAC\uB8B8\u8EAC\uB8B9\u8EAC\uB8BA\u8EAC\uB8BB\u8EAC\uB8BC" + // 4330 - 4334
- "\u8EAC\uB8BD\u8EAC\uB8BE\u8EAC\uB8BF\u8EAC\uB8C0\u8EAC\uB8C1" + // 4335 - 4339
- "\u8EAC\uB8C2\u8EAC\uB8C3\u8EAC\uB8C4\u8EAC\uB8C5\u8EAC\uB8C6" + // 4340 - 4344
- "\u8EAC\uB8C7\u8EAC\uB8C8\u8EAC\uB8C9\u8EAC\uB8CA\u8EAC\uB8CB" + // 4345 - 4349
- "\u8EAC\uB8CC\u8EAC\uB8CD\u8EAC\uB8CE\u8EAC\uB8CF\u8EAC\uB8D0" + // 4350 - 4354
- "\u8EAC\uB8D1\u8EAC\uB8D2\u8EAC\uB8D3\u8EAC\uB8D4\u8EAC\uB8D5" + // 4355 - 4359
- "\u8EAC\uB8D6\u8EAC\uB8D7\u8EAC\uB8D8\u8EAC\uB8D9\u8EAC\uB8DA" + // 4360 - 4364
- "\u8EAC\uB8DB\u8EAC\uB8DC\u8EAC\uB8DD\u8EAC\uB8DE\u8EAC\uB8DF" + // 4365 - 4369
- "\u8EAC\uB8E0\u8EAC\uB8E1\u8EAC\uB8E2\u8EAC\uB8E3\u8EAC\uB8E4" + // 4370 - 4374
- "\u8EAC\uB8E5\u8EAC\uB8E6\u8EAC\uB8E7\u8EAC\uB8E8\u8EAC\uB8E9" + // 4375 - 4379
- "\u8EAC\uB8EA\u8EAC\uB8EB\u8EAC\uB8EC\u8EAC\uB8ED\u8EAC\uB8EE" + // 4380 - 4384
- "\u8EAC\uB7CD\u8EAC\uB7CE\u8EAC\uB7CF\u8EAC\uB7D0\u8EAC\uB7D1" + // 4385 - 4389
- "\u8EAC\uB7D2\u8EAC\uB7D3\u8EAC\uB7D4\u8EAC\uB7D5\u8EAC\uB7D6" + // 4390 - 4394
- "\u8EAC\uB7D7\u8EAC\uB7D8\u8EAC\uB7D9\u8EAC\uB7DA\u8EAC\uB7DB" + // 4395 - 4399
- "\u8EAC\uB7DC\u8EAC\uB7DD\u8EAC\uB7DE\u8EAC\uB7DF\u8EAC\uB7E0" + // 4400 - 4404
- "\u8EAC\uB7E1\u8EAC\uB7E2\u8EAC\uB7E3\u8EAC\uB7E4\u8EAC\uB7E5" + // 4405 - 4409
- "\u8EAC\uB7E6\u8EAC\uB7E7\u8EAC\uB7E8\u8EAC\uB7E9\u8EAC\uB7EA" + // 4410 - 4414
- "\u8EAC\uB7EB\u8EAC\uB7EC\u8EAC\uB7ED\u8EAC\uB7EE\u8EAC\uB7EF" + // 4415 - 4419
- "\u8EAC\uB7F0\u8EAC\uB7F1\u8EAC\uB7F2\u8EAC\uB7F3\u8EAC\uB7F4" + // 4420 - 4424
- "\u8EAC\uB7F5\u8EAC\uB7F6\u8EAC\uB7F7\u8EAC\uB7F8\u8EAC\uB7F9" + // 4425 - 4429
- "\u8EAC\uB7FA\u8EAC\uB7FB\u8EAC\uB7FC\u8EAC\uB7FD\u8EAC\uB7FE" + // 4430 - 4434
- "\u8EAC\uB8A1\u8EAC\uB8A2\u8EAC\uB8A3\u8EAC\uB8A4\u8EAC\uB8A5" + // 4435 - 4439
- "\u8EAC\uB8A6\u8EAC\uB8A7\u8EAC\uB8A8\u8EAC\uB8A9\u8EAC\uB8AA" + // 4440 - 4444
- "\u8EAC\uB8AB\u8EAC\uB8AC\u8EAC\uB8AD\u8EAC\uB8AE\u8EAC\uB6EB" + // 4445 - 4449
- "\u8EAC\uB6EC\u8EAC\uB6ED\u8EAC\uB6EE\u8EAC\uB6EF\u8EAC\uB6F0" + // 4450 - 4454
- "\u8EAC\uB6F1\u8EAC\uB6F2\u8EAC\uB6F3\u8EAC\uB6F4\u8EAC\uB6F5" + // 4455 - 4459
- "\u8EAC\uB6F6\u8EAC\uB6F7\u8EAC\uB6F8\u8EAC\uB6F9\u8EAC\uB6FA" + // 4460 - 4464
- "\u8EAC\uB6FB\u8EAC\uB6FC\u8EAC\uB6FD\u8EAC\uB6FE\u8EAC\uB7A1" + // 4465 - 4469
- "\u8EAC\uB7A2\u8EAC\uB7A3\u8EAC\uB7A4\u8EAC\uB7A5\u8EAC\uB7A6" + // 4470 - 4474
- "\u8EAC\uB7A7\u8EAC\uB7A8\u8EAC\uB7A9\u8EAC\uB7AA\u8EAC\uB7AB" + // 4475 - 4479
- "\u8EAC\uB7AC\u8EAC\uB7AD\u8EAC\uB7AE\u8EAC\uB7AF\u8EAC\uB7B0" + // 4480 - 4484
- "\u8EAC\uB7B1\u8EAC\uB7B2\u8EAC\uB7B3\u8EAC\uB7B4\u8EAC\uB7B5" + // 4485 - 4489
- "\u8EAC\uB7B6\u8EAC\uB7B7\u8EAC\uB7B8\u8EAC\uB7B9\u8EAC\uB7BA" + // 4490 - 4494
- "\u8EAC\uB7BB\u8EAC\uB7BC\u8EAC\uB7BD\u8EAC\uB7BE\u8EAC\uB7BF" + // 4495 - 4499
- "\u8EAC\uB7C0\u8EAC\uB7C1\u8EAC\uB7C2\u8EAC\uB7C3\u8EAC\uB7C4" + // 4500 - 4504
- "\u8EAC\uB7C5\u8EAC\uB7C6\u8EAC\uB7C7\u8EAC\uB7C8\u8EAC\uB7C9" + // 4505 - 4509
- "\u8EAC\uB7CA\u8EAC\uB7CB\u8EAC\uB7CC\u8EAC\uB6AB\u8EAC\uB6AC" + // 4510 - 4514
- "\u8EAC\uB6AD\u8EAC\uB6AE\u8EAC\uB6AF\u8EAC\uB6B0\u8EAC\uB6B1" + // 4515 - 4519
- "\u8EAC\uB6B2\u8EAC\uB6B3\u8EAC\uB6B4\u8EAC\uB6B5\u8EAC\uB6B6" + // 4520 - 4524
- "\u8EAC\uB6B7\u8EAC\uB6B8\u8EAC\uB6B9\u8EAC\uB6BA\u8EAC\uB6BB" + // 4525 - 4529
- "\u8EAC\uB6BC\u8EAC\uB6BD\u8EAC\uB6BE\u8EAC\uB6BF\u8EAC\uB6C0" + // 4530 - 4534
- "\u8EAC\uB6C1\u8EAC\uB6C2\u8EAC\uB6C3\u8EAC\uB6C4\u8EAC\uB6C5" + // 4535 - 4539
- "\u8EAC\uB6C6\u8EAC\uB6C7\u8EAC\uB6C8\u8EAC\uB6C9\u8EAC\uB6CA" + // 4540 - 4544
- "\u8EAC\uB6CB\u8EAC\uB6CC\u8EAC\uB6CD\u8EAC\uB6CE\u8EAC\uB6CF" + // 4545 - 4549
- "\u8EAC\uB6D0\u8EAC\uB6D1\u8EAC\uB6D2\u8EAC\uB6D3\u8EAC\uB6D4" + // 4550 - 4554
- "\u8EAC\uB6D5\u8EAC\uB6D6\u8EAC\uB6D7\u8EAC\uB6D8\u8EAC\uB6D9" + // 4555 - 4559
- "\u8EAC\uB6DA\u8EAC\uB6DB\u8EAC\uB6DC\u8EAC\uB6DD\u8EAC\uB6DE" + // 4560 - 4564
- "\u8EAC\uB6DF\u8EAC\uB6E0\u8EAC\uB6E1\u8EAC\uB6E2\u8EAC\uB6E3" + // 4565 - 4569
- "\u8EAC\uB6E4\u8EAC\uB6E5\u8EAC\uB6E6\u8EAC\uB6E7\u8EAC\uB6E8" + // 4570 - 4574
- "\u8EAC\uB6E9\u8EAC\uB6EA\u8EAC\uB5C9\u8EAC\uB5CA\u8EAC\uB5CB" + // 4575 - 4579
- "\u8EAC\uB5CC\u8EAC\uB5CD\u8EAC\uB5CE\u8EAC\uB5CF\u8EAC\uB5D0" + // 4580 - 4584
- "\u8EAC\uB5D1\u8EAC\uB5D2\u8EAC\uB5D3\u8EAC\uB5D4\u8EAC\uB5D5" + // 4585 - 4589
- "\u8EAC\uB5D6\u8EAC\uB5D7\u8EAC\uB5D8\u8EAC\uB5D9\u8EAC\uB5DA" + // 4590 - 4594
- "\u8EAC\uB5DB\u8EAC\uB5DC\u8EAC\uB5DD\u8EAC\uB5DE\u8EAC\uB5DF" + // 4595 - 4599
- "\u8EAC\uB5E0\u8EAC\uB5E1\u8EAC\uB5E2\u8EAC\uB5E3\u8EAC\uB5E4" + // 4600 - 4604
- "\u8EAC\uB5E5\u8EAC\uB5E6\u8EAC\uB5E7\u8EAC\uB5E8\u8EAC\uB5E9" + // 4605 - 4609
- "\u8EAC\uB5EA\u8EAC\uB5EB\u8EAC\uB5EC\u8EAC\uB5ED\u8EAC\uB5EE" + // 4610 - 4614
- "\u8EAC\uB5EF\u8EAC\uB5F0\u8EAC\uB5F1\u8EAC\uB5F2\u8EAC\uB5F3" + // 4615 - 4619
- "\u8EAC\uB5F4\u8EAC\uB5F5\u8EAC\uB5F6\u8EAC\uB5F7\u8EAC\uB5F8" + // 4620 - 4624
- "\u8EAC\uB5F9\u8EAC\uB5FA\u8EAC\uB5FB\u8EAC\uB5FC\u8EAC\uB5FD" + // 4625 - 4629
- "\u8EAC\uB5FE\u8EAC\uB6A1\u8EAC\uB6A2\u8EAC\uB6A3\u8EAC\uB6A4" + // 4630 - 4634
- "\u8EAC\uB6A5\u8EAC\uB6A6\u8EAC\uB6A7\u8EAC\uB6A8\u8EAC\uB6A9" + // 4635 - 4639
- "\u8EAC\uB6AA\u8EAC\uB4E7\u8EAC\uB4E8\u8EAC\uB4E9\u8EAC\uB4EA" + // 4640 - 4644
- "\u8EAC\uB4EB\u8EAC\uB4EC\u8EAC\uB4ED\u8EAC\uB4EE\u8EAC\uB4EF" + // 4645 - 4649
- "\u8EAC\uB4F0\u8EAC\uB4F1\u8EAC\uB4F2\u8EAC\uB4F3\u8EAC\uB4F4" + // 4650 - 4654
- "\u8EAC\uB4F5\u8EAC\uB4F6\u8EAC\uB4F7\u8EAC\uB4F8\u8EAC\uB4F9" + // 4655 - 4659
- "\u8EAC\uB4FA\u8EAC\uB4FB\u8EAC\uB4FC\u8EAC\uB4FD\u8EAC\uB4FE" + // 4660 - 4664
- "\u8EAC\uB5A1\u8EAC\uB5A2\u8EAC\uB5A3\u8EAC\uB5A4\u8EAC\uB5A5" + // 4665 - 4669
- "\u8EAC\uB5A6\u8EAC\uB5A7\u8EAC\uB5A8\u8EAC\uB5A9\u8EAC\uB5AA" + // 4670 - 4674
- "\u8EAC\uB5AB\u8EAC\uB5AC\u8EAC\uB5AD\u8EAC\uB5AE\u8EAC\uB5AF" + // 4675 - 4679
- "\u8EAC\uB5B0\u8EAC\uB5B1\u8EAC\uB5B2\u8EAC\uB5B3\u8EAC\uB5B4" + // 4680 - 4684
- "\u8EAC\uB5B5\u8EAC\uB5B6\u8EAC\uB5B7\u8EAC\uB5B8\u8EAC\uB5B9" + // 4685 - 4689
- "\u8EAC\uB5BA\u8EAC\uB5BB\u8EAC\uB5BC\u8EAC\uB5BD\u8EAC\uB5BE" + // 4690 - 4694
- "\u8EAC\uB5BF\u8EAC\uB5C0\u8EAC\uB5C1\u8EAC\uB5C2\u8EAC\uB5C3" + // 4695 - 4699
- "\u8EAC\uB5C4\u8EAC\uB5C5\u8EAC\uB5C6\u8EAC\uB5C7\u8EAC\uB5C8" + // 4700 - 4704
- "\u8EAC\uB4A7\u8EAC\uB4A8\u8EAC\uB4A9\u8EAC\uB4AA\u8EAC\uB4AB" + // 4705 - 4709
- "\u8EAC\uB4AC\u8EAC\uB4AD\u8EAC\uB4AE\u8EAC\uB4AF\u8EAC\uB4B0" + // 4710 - 4714
- "\u8EAC\uB4B1\u8EAC\uB4B2\u8EAC\uB4B3\u8EAC\uB4B4\u8EAC\uB4B5" + // 4715 - 4719
- "\u8EAC\uB4B6\u8EAC\uB4B7\u8EAC\uB4B8\u8EAC\uB4B9\u8EAC\uB4BA" + // 4720 - 4724
- "\u8EAC\uB4BB\u8EAC\uB4BC\u8EAC\uB4BD\u8EAC\uB4BE\u8EAC\uB4BF" + // 4725 - 4729
- "\u8EAC\uB4C0\u8EAC\uB4C1\u8EAC\uB4C2\u8EAC\uB4C3\u8EAC\uB4C4" + // 4730 - 4734
- "\u8EAC\uB4C5\u8EAC\uB4C6\u8EAC\uB4C7\u8EAC\uB4C8\u8EAC\uB4C9" + // 4735 - 4739
- "\u8EAC\uB4CA\u8EAC\uB4CB\u8EAC\uB4CC\u8EAC\uB4CD\u8EAC\uB4CE" + // 4740 - 4744
- "\u8EAC\uB4CF\u8EAC\uB4D0\u8EAC\uB4D1\u8EAC\uB4D2\u8EAC\uB4D3" + // 4745 - 4749
- "\u8EAC\uB4D4\u8EAC\uB4D5\u8EAC\uB4D6\u8EAC\uB4D7\u8EAC\uB4D8" + // 4750 - 4754
- "\u8EAC\uB4D9\u8EAC\uB4DA\u8EAC\uB4DB\u8EAC\uB4DC\u8EAC\uB4DD" + // 4755 - 4759
- "\u8EAC\uB4DE\u8EAC\uB4DF\u8EAC\uB4E0\u8EAC\uB4E1\u8EAC\uB4E2" + // 4760 - 4764
- "\u8EAC\uB4E3\u8EAC\uB4E4\u8EAC\uB4E5\u8EAC\uB4E6\u8EAC\uB3C5" + // 4765 - 4769
- "\u8EAC\uB3C6\u8EAC\uB3C7\u8EAC\uB3C8\u8EAC\uB3C9\u8EAC\uB3CA" + // 4770 - 4774
- "\u8EAC\uB3CB\u8EAC\uB3CC\u8EAC\uB3CD\u8EAC\uB3CE\u8EAC\uB3CF" + // 4775 - 4779
- "\u8EAC\uB3D0\u8EAC\uB3D1\u8EAC\uB3D2\u8EAC\uB3D3\u8EAC\uB3D4" + // 4780 - 4784
- "\u8EAC\uB3D5\u8EAC\uB3D6\u8EAC\uB3D7\u8EAC\uB3D8\u8EAC\uB3D9" + // 4785 - 4789
- "\u8EAC\uB3DA\u8EAC\uB3DB\u8EAC\uB3DC\u8EAC\uB3DD\u8EAC\uB3DE" + // 4790 - 4794
- "\u8EAC\uB3DF\u8EAC\uB3E0\u8EAC\uB3E1\u8EAC\uB3E2\u8EAC\uB3E3" + // 4795 - 4799
- "\u8EAC\uB3E4\u8EAC\uB3E5\u8EAC\uB3E6\u8EAC\uB3E7\u8EAC\uB3E8" + // 4800 - 4804
- "\u8EAC\uB3E9\u8EAC\uB3EA\u8EAC\uB3EB\u8EAC\uB3EC\u8EAC\uB3ED" + // 4805 - 4809
- "\u8EAC\uB3EE\u8EAC\uB3EF\u8EAC\uB3F0\u8EAC\uB3F1\u8EAC\uB3F2" + // 4810 - 4814
- "\u8EAC\uB3F3\u8EAC\uB3F4\u8EAC\uB3F5\u8EAC\uB3F6\u8EAC\uB3F7" + // 4815 - 4819
- "\u8EAC\uB3F8\u8EAC\uB3F9\u8EAC\uB3FA\u8EAC\uB3FB\u8EAC\uB3FC" + // 4820 - 4824
- "\u8EAC\uB3FD\u8EAC\uB3FE\u8EAC\uB4A1\u8EAC\uB4A2\u8EAC\uB4A3" + // 4825 - 4829
- "\u8EAC\uB4A4\u8EAC\uB4A5\u8EAC\uB4A6\u8EAC\uB2E3\u8EAC\uB2E4" + // 4830 - 4834
- "\u8EAC\uB2E5\u8EAC\uB2E6\u8EAC\uB2E7\u8EAC\uB2E8\u8EAC\uB2E9" + // 4835 - 4839
- "\u8EAC\uB2EA\u8EAC\uB2EB\u8EAC\uB2EC\u8EAC\uB2ED\u8EAC\uB2EE" + // 4840 - 4844
- "\u8EAC\uB2EF\u8EAC\uB2F0\u8EAC\uB2F1\u8EAC\uB2F2\u8EAC\uB2F3" + // 4845 - 4849
- "\u8EAC\uB2F4\u8EAC\uB2F5\u8EAC\uB2F6\u8EAC\uB2F7\u8EAC\uB2F8" + // 4850 - 4854
- "\u8EAC\uB2F9\u8EAC\uB2FA\u8EAC\uB2FB\u8EAC\uB2FC\u8EAC\uB2FD" + // 4855 - 4859
- "\u8EAC\uB2FE\u8EAC\uB3A1\u8EAC\uB3A2\u8EAC\uB3A3\u8EAC\uB3A4" + // 4860 - 4864
- "\u8EAC\uB3A5\u8EAC\uB3A6\u8EAC\uB3A7\u8EAC\uB3A8\u8EAC\uB3A9" + // 4865 - 4869
- "\u8EAC\uB3AA\u8EAC\uB3AB\u8EAC\uB3AC\u8EAC\uB3AD\u8EAC\uB3AE" + // 4870 - 4874
- "\u8EAC\uB3AF\u8EAC\uB3B0\u8EAC\uB3B1\u8EAC\uB3B2\u8EAC\uB3B3" + // 4875 - 4879
- "\u8EAC\uB3B4\u8EAC\uB3B5\u8EAC\uB3B6\u8EAC\uB3B7\u8EAC\uB3B8" + // 4880 - 4884
- "\u8EAC\uB3B9\u8EAC\uB3BA\u8EAC\uB3BB\u8EAC\uB3BC\u8EAC\uB3BD" + // 4885 - 4889
- "\u8EAC\uB3BE\u8EAC\uB3BF\u8EAC\uB3C0\u8EAC\uB3C1\u8EAC\uB3C2" + // 4890 - 4894
- "\u8EAC\uB3C3\u8EAC\uB3C4\u8EAC\uB2A3\u8EAC\uB2A4\u8EAC\uB2A5" + // 4895 - 4899
- "\u8EAC\uB2A6\u8EAC\uB2A7\u8EAC\uB2A8\u8EAC\uB2A9\u8EAC\uB2AA" + // 4900 - 4904
- "\u8EAC\uB2AB\u8EAC\uB2AC\u8EAC\uB2AD\u8EAC\uB2AE\u8EAC\uB2AF" + // 4905 - 4909
- "\u8EAC\uB2B0\u8EAC\uB2B1\u8EAC\uB2B2\u8EAC\uB2B3\u8EAC\uB2B4" + // 4910 - 4914
- "\u8EAC\uB2B5\u8EAC\uB2B6\u8EAC\uB2B7\u8EAC\uB2B8\u8EAC\uB2B9" + // 4915 - 4919
- "\u8EAC\uB2BA\u8EAC\uB2BB\u8EAC\uB2BC\u8EAC\uB2BD\u8EAC\uB2BE" + // 4920 - 4924
- "\u8EAC\uB2BF\u8EAC\uB2C0\u8EAC\uB2C1\u8EAC\uB2C2\u8EAC\uB2C3" + // 4925 - 4929
- "\u8EAC\uB2C4\u8EAC\uB2C5\u8EAC\uB2C6\u8EAC\uB2C7\u8EAC\uB2C8" + // 4930 - 4934
- "\u8EAC\uB2C9\u8EAC\uB2CA\u8EAC\uB2CB\u8EAC\uB2CC\u8EAC\uB2CD" + // 4935 - 4939
- "\u8EAC\uB2CE\u8EAC\uB2CF\u8EAC\uB2D0\u8EAC\uB2D1\u8EAC\uB2D2" + // 4940 - 4944
- "\u8EAC\uB2D3\u8EAC\uB2D4\u8EAC\uB2D5\u8EAC\uB2D6\u8EAC\uB2D7" + // 4945 - 4949
- "\u8EAC\uB2D8\u8EAC\uB2D9\u8EAC\uB2DA\u8EAC\uB2DB\u8EAC\uB2DC" + // 4950 - 4954
- "\u8EAC\uB2DD\u8EAC\uB2DE\u8EAC\uB2DF\u8EAC\uB2E0\u8EAC\uB2E1" + // 4955 - 4959
- "\u8EAC\uB2E2\u8EAC\uB1C1\u8EAC\uB1C2\u8EAC\uB1C3\u8EAC\uB1C4" + // 4960 - 4964
- "\u8EAC\uB1C5\u8EAC\uB1C6\u8EAC\uB1C7\u8EAC\uB1C8\u8EAC\uB1C9" + // 4965 - 4969
- "\u8EAC\uB1CA\u8EAC\uB1CB\u8EAC\uB1CC\u8EAC\uB1CD\u8EAC\uB1CE" + // 4970 - 4974
- "\u8EAC\uB1CF\u8EAC\uB1D0\u8EAC\uB1D1\u8EAC\uB1D2\u8EAC\uB1D3" + // 4975 - 4979
- "\u8EAC\uB1D4\u8EAC\uB1D5\u8EAC\uB1D6\u8EAC\uB1D7\u8EAC\uB1D8" + // 4980 - 4984
- "\u8EAC\uB1D9\u8EAC\uB1DA\u8EAC\uB1DB\u8EAC\uB1DC\u8EAC\uB1DD" + // 4985 - 4989
- "\u8EAC\uB1DE\u8EAC\uB1DF\u8EAC\uB1E0\u8EAC\uB1E1\u8EAC\uB1E2" + // 4990 - 4994
- "\u8EAC\uB1E3\u8EAC\uB1E4\u8EAC\uB1E5\u8EAC\uB1E6\u8EAC\uB1E7" + // 4995 - 4999
- "\u8EAC\uB1E8\u8EAC\uB1E9\u8EAC\uB1EA\u8EAC\uB1EB\u8EAC\uB1EC" + // 5000 - 5004
- "\u8EAC\uB1ED\u8EAC\uB1EE\u8EAC\uB1EF\u8EAC\uB1F0\u8EAC\uB1F1" + // 5005 - 5009
- "\u8EAC\uB1F2\u8EAC\uB1F3\u8EAC\uB1F4\u8EAC\uB1F5\u8EAC\uB1F6" + // 5010 - 5014
- "\u8EAC\uB1F7\u8EAC\uB1F8\u8EAC\uB1F9\u8EAC\uB1FA\u8EAC\uB1FB" + // 5015 - 5019
- "\u8EAC\uB1FC\u8EAC\uB1FD\u8EAC\uB1FE\u8EAC\uB2A1\u8EAC\uB2A2" + // 5020 - 5024
- "\u8EAC\uB0DF\u8EAC\uB0E0\u8EAC\uB0E1\u8EAC\uB0E2\u8EAC\uB0E3" + // 5025 - 5029
- "\u8EAC\uB0E4\u8EAC\uB0E5\u8EAC\uB0E6\u8EAC\uB0E7\u8EAC\uB0E8" + // 5030 - 5034
- "\u8EAC\uB0E9\u8EAC\uB0EA\u8EAC\uB0EB\u8EAC\uB0EC\u8EAC\uB0ED" + // 5035 - 5039
- "\u8EAC\uB0EE\u8EAC\uB0EF\u8EAC\uB0F0\u8EAC\uB0F1\u8EAC\uB0F2" + // 5040 - 5044
- "\u8EAC\uB0F3\u8EAC\uB0F4\u8EAC\uB0F5\u8EAC\uB0F6\u8EAC\uB0F7" + // 5045 - 5049
- "\u8EAC\uB0F8\u8EAC\uB0F9\u8EAC\uB0FA\u8EAC\uB0FB\u8EAC\uB0FC" + // 5050 - 5054
- "\u8EAC\uB0FD\u8EAC\uB0FE\u8EAC\uB1A1\u8EAC\uB1A2\u8EAC\uB1A3" + // 5055 - 5059
- "\u8EAC\uB1A4\u8EAC\uB1A5\u8EAC\uB1A6\u8EAC\uB1A7\u8EAC\uB1A8" + // 5060 - 5064
- "\u8EAC\uB1A9\u8EAC\uB1AA\u8EAC\uB1AB\u8EAC\uB1AC\u8EAC\uB1AD" + // 5065 - 5069
- "\u8EAC\uB1AE\u8EAC\uB1AF\u8EAC\uB1B0\u8EAC\uB1B1\u8EAC\uB1B2" + // 5070 - 5074
- "\u8EAC\uB1B3\u8EAC\uB1B4\u8EAC\uB1B5\u8EAC\uB1B6\u8EAC\uB1B7" + // 5075 - 5079
- "\u8EAC\uB1B8\u8EAC\uB1B9\u8EAC\uB1BA\u8EAC\uB1BB\u8EAC\uB1BC" + // 5080 - 5084
- "\u8EAC\uB1BD\u8EAC\uB1BE\u8EAC\uB1BF\u8EAC\uB1C0\u8EAC\uAFFD" + // 5085 - 5089
- "\u8EAC\uAFFE\u8EAC\uB0A1\u8EAC\uB0A2\u8EAC\uB0A3\u8EAC\uB0A4" + // 5090 - 5094
- "\u8EAC\uB0A5\u8EAC\uB0A6\u8EAC\uB0A7\u8EAC\uB0A8\u8EAC\uB0A9" + // 5095 - 5099
- "\u8EAC\uB0AA\u8EAC\uB0AB\u8EAC\uB0AC\u8EAC\uB0AD\u8EAC\uB0AE" + // 5100 - 5104
- "\u8EAC\uB0AF\u8EAC\uB0B0\u8EAC\uB0B1\u8EAC\uB0B2\u8EAC\uB0B3" + // 5105 - 5109
- "\u8EAC\uB0B4\u8EAC\uB0B5\u8EAC\uB0B6\u8EAC\uB0B7\u8EAC\uB0B8" + // 5110 - 5114
- "\u8EAC\uB0B9\u8EAC\uB0BA\u8EAC\uB0BB\u8EAC\uB0BC\u8EAC\uB0BD" + // 5115 - 5119
- "\u8EAC\uB0BE\u8EAC\uB0BF\u8EAC\uB0C0\u8EAC\uB0C1\u8EAC\uB0C2" + // 5120 - 5124
- "\u8EAC\uB0C3\u8EAC\uB0C4\u8EAC\uB0C5\u8EAC\uB0C6\u8EAC\uB0C7" + // 5125 - 5129
- "\u8EAC\uB0C8\u8EAC\uB0C9\u8EAC\uB0CA\u8EAC\uB0CB\u8EAC\uB0CC" + // 5130 - 5134
- "\u8EAC\uB0CD\u8EAC\uB0CE\u8EAC\uB0CF\u8EAC\uB0D0\u8EAC\uB0D1" + // 5135 - 5139
- "\u8EAC\uB0D2\u8EAC\uB0D3\u8EAC\uB0D4\u8EAC\uB0D5\u8EAC\uB0D6" + // 5140 - 5144
- "\u8EAC\uB0D7\u8EAC\uB0D8\u8EAC\uB0D9\u8EAC\uB0DA\u8EAC\uB0DB" + // 5145 - 5149
- "\u8EAC\uB0DC\u8EAC\uB0DD\u8EAC\uB0DE\u8EAC\uAFBD\u8EAC\uAFBE" + // 5150 - 5154
- "\u8EAC\uAFBF\u8EAC\uAFC0\u8EAC\uAFC1\u8EAC\uAFC2\u8EAC\uAFC3" + // 5155 - 5159
- "\u8EAC\uAFC4\u8EAC\uAFC5\u8EAC\uAFC6\u8EAC\uAFC7\u8EAC\uAFC8" + // 5160 - 5164
- "\u8EAC\uAFC9\u8EAC\uAFCA\u8EAC\uAFCB\u8EAC\uAFCC\u8EAC\uAFCD" + // 5165 - 5169
- "\u8EAC\uAFCE\u8EAC\uAFCF\u8EAC\uAFD0\u8EAC\uAFD1\u8EAC\uAFD2" + // 5170 - 5174
- "\u8EAC\uAFD3\u8EAC\uAFD4\u8EAC\uAFD5\u8EAC\uAFD6\u8EAC\uAFD7" + // 5175 - 5179
- "\u8EAC\uAFD8\u8EAC\uAFD9\u8EAC\uAFDA\u8EAC\uAFDB\u8EAC\uAFDC" + // 5180 - 5184
- "\u8EAC\uAFDD\u8EAC\uAFDE\u8EAC\uAFDF\u8EAC\uAFE0\u8EAC\uAFE1" + // 5185 - 5189
- "\u8EAC\uAFE2\u8EAC\uAFE3\u8EAC\uAFE4\u8EAC\uAFE5\u8EAC\uAFE6" + // 5190 - 5194
- "\u8EAC\uAFE7\u8EAC\uAFE8\u8EAC\uAFE9\u8EAC\uAFEA\u8EAC\uAFEB" + // 5195 - 5199
- "\u8EAC\uAFEC\u8EAC\uAFED\u8EAC\uAFEE\u8EAC\uAFEF\u8EAC\uAFF0" + // 5200 - 5204
- "\u8EAC\uAFF1\u8EAC\uAFF2\u8EAC\uAFF3\u8EAC\uAFF4\u8EAC\uAFF5" + // 5205 - 5209
- "\u8EAC\uAFF6\u8EAC\uAFF7\u8EAC\uAFF8\u8EAC\uAFF9\u8EAC\uAFFA" + // 5210 - 5214
- "\u8EAC\uAFFB\u8EAC\uAFFC\u8EAC\uAEDB\u8EAC\uAEDC\u8EAC\uAEDD" + // 5215 - 5219
- "\u8EAC\uAEDE\u8EAC\uAEDF\u8EAC\uAEE0\u8EAC\uAEE1\u8EAC\uAEE2" + // 5220 - 5224
- "\u8EAC\uAEE3\u8EAC\uAEE4\u8EAC\uAEE5\u8EAC\uAEE6\u8EAC\uAEE7" + // 5225 - 5229
- "\u8EAC\uAEE8\u8EAC\uAEE9\u8EAC\uAEEA\u8EAC\uAEEB\u8EAC\uAEEC" + // 5230 - 5234
- "\u8EAC\uAEED\u8EAC\uAEEE\u8EAC\uAEEF\u8EAC\uAEF0\u8EAC\uAEF1" + // 5235 - 5239
- "\u8EAC\uAEF2\u8EAC\uAEF3\u8EAC\uAEF4\u8EAC\uAEF5\u8EAC\uAEF6" + // 5240 - 5244
- "\u8EAC\uAEF7\u8EAC\uAEF8\u8EAC\uAEF9\u8EAC\uAEFA\u8EAC\uAEFB" + // 5245 - 5249
- "\u8EAC\uAEFC\u8EAC\uAEFD\u8EAC\uAEFE\u8EAC\uAFA1\u8EAC\uAFA2" + // 5250 - 5254
- "\u8EAC\uAFA3\u8EAC\uAFA4\u8EAC\uAFA5\u8EAC\uAFA6\u8EAC\uAFA7" + // 5255 - 5259
- "\u8EAC\uAFA8\u8EAC\uAFA9\u8EAC\uAFAA\u8EAC\uAFAB\u8EAC\uAFAC" + // 5260 - 5264
- "\u8EAC\uAFAD\u8EAC\uAFAE\u8EAC\uAFAF\u8EAC\uAFB0\u8EAC\uAFB1" + // 5265 - 5269
- "\u8EAC\uAFB2\u8EAC\uAFB3\u8EAC\uAFB4\u8EAC\uAFB5\u8EAC\uAFB6" + // 5270 - 5274
- "\u8EAC\uAFB7\u8EAC\uAFB8\u8EAC\uAFB9\u8EAC\uAFBA\u8EAC\uAFBB" + // 5275 - 5279
- "\u8EAC\uAFBC\u8EAC\uADF9\u8EAC\uADFA\u8EAC\uADFB\u8EAC\uADFC" + // 5280 - 5284
- "\u8EAC\uADFD\u8EAC\uADFE\u8EAC\uAEA1\u8EAC\uAEA2\u8EAC\uAEA3" + // 5285 - 5289
- "\u8EAC\uAEA4\u8EAC\uAEA5\u8EAC\uAEA6\u8EAC\uAEA7\u8EAC\uAEA8" + // 5290 - 5294
- "\u8EAC\uAEA9\u8EAC\uAEAA\u8EAC\uAEAB\u8EAC\uAEAC\u8EAC\uAEAD" + // 5295 - 5299
- "\u8EAC\uAEAE\u8EAC\uAEAF\u8EAC\uAEB0\u8EAC\uAEB1\u8EAC\uAEB2" + // 5300 - 5304
- "\u8EAC\uAEB3\u8EAC\uAEB4\u8EAC\uAEB5\u8EAC\uAEB6\u8EAC\uAEB7" + // 5305 - 5309
- "\u8EAC\uAEB8\u8EAC\uAEB9\u8EAC\uAEBA\u8EAC\uAEBB\u8EAC\uAEBC" + // 5310 - 5314
- "\u8EAC\uAEBD\u8EAC\uAEBE\u8EAC\uAEBF\u8EAC\uAEC0\u8EAC\uAEC1" + // 5315 - 5319
- "\u8EAC\uAEC2\u8EAC\uAEC3\u8EAC\uAEC4\u8EAC\uAEC5\u8EAC\uAEC6" + // 5320 - 5324
- "\u8EAC\uAEC7\u8EAC\uAEC8\u8EAC\uAEC9\u8EAC\uAECA\u8EAC\uAECB" + // 5325 - 5329
- "\u8EAC\uAECC\u8EAC\uAECD\u8EAC\uAECE\u8EAC\uAECF\u8EAC\uAED0" + // 5330 - 5334
- "\u8EAC\uAED1\u8EAC\uAED2\u8EAC\uAED3\u8EAC\uAED4\u8EAC\uAED5" + // 5335 - 5339
- "\u8EAC\uAED6\u8EAC\uAED7\u8EAC\uAED8\u8EAC\uAED9\u8EAC\uAEDA" + // 5340 - 5344
- "\u8EAC\uADB9\u8EAC\uADBA\u8EAC\uADBB\u8EAC\uADBC\u8EAC\uADBD" + // 5345 - 5349
- "\u8EAC\uADBE\u8EAC\uADBF\u8EAC\uADC0\u8EAC\uADC1\u8EAC\uADC2" + // 5350 - 5354
- "\u8EAC\uADC3\u8EAC\uADC4\u8EAC\uADC5\u8EAC\uADC6\u8EAC\uADC7" + // 5355 - 5359
- "\u8EAC\uADC8\u8EAC\uADC9\u8EAC\uADCA\u8EAC\uADCB\u8EAC\uADCC" + // 5360 - 5364
- "\u8EAC\uADCD\u8EAC\uADCE\u8EAC\uADCF\u8EAC\uADD0\u8EAC\uADD1" + // 5365 - 5369
- "\u8EAC\uADD2\u8EAC\uADD3\u8EAC\uADD4\u8EAC\uADD5\u8EAC\uADD6" + // 5370 - 5374
- "\u8EAC\uADD7\u8EAC\uADD8\u8EAC\uADD9\u8EAC\uADDA\u8EAC\uADDB" + // 5375 - 5379
- "\u8EAC\uADDC\u8EAC\uADDD\u8EAC\uADDE\u8EAC\uADDF\u8EAC\uADE0" + // 5380 - 5384
- "\u8EAC\uADE1\u8EAC\uADE2\u8EAC\uADE3\u8EAC\uADE4\u8EAC\uADE5" + // 5385 - 5389
- "\u8EAC\uADE6\u8EAC\uADE7\u8EAC\uADE8\u8EAC\uADE9\u8EAC\uADEA" + // 5390 - 5394
- "\u8EAC\uADEB\u8EAC\uADEC\u8EAC\uADED\u8EAC\uADEE\u8EAC\uADEF" + // 5395 - 5399
- "\u8EAC\uADF0\u8EAC\uADF1\u8EAC\uADF2\u8EAC\uADF3\u8EAC\uADF4" + // 5400 - 5404
- "\u8EAC\uADF5\u8EAC\uADF6\u8EAC\uADF7\u8EAC\uADF8\u8EAC\uACD7" + // 5405 - 5409
- "\u8EAC\uACD8\u8EAC\uACD9\u8EAC\uACDA\u8EAC\uACDB\u8EAC\uACDC" + // 5410 - 5414
- "\u8EAC\uACDD\u8EAC\uACDE\u8EAC\uACDF\u8EAC\uACE0\u8EAC\uACE1" + // 5415 - 5419
- "\u8EAC\uACE2\u8EAC\uACE3\u8EAC\uACE4\u8EAC\uACE5\u8EAC\uACE6" + // 5420 - 5424
- "\u8EAC\uACE7\u8EAC\uACE8\u8EAC\uACE9\u8EAC\uACEA\u8EAC\uACEB" + // 5425 - 5429
- "\u8EAC\uACEC\u8EAC\uACED\u8EAC\uACEE\u8EAC\uACEF\u8EAC\uACF0" + // 5430 - 5434
- "\u8EAC\uACF1\u8EAC\uACF2\u8EAC\uACF3\u8EAC\uACF4\u8EAC\uACF5" + // 5435 - 5439
- "\u8EAC\uACF6\u8EAC\uACF7\u8EAC\uACF8\u8EAC\uACF9\u8EAC\uACFA" + // 5440 - 5444
- "\u8EAC\uACFB\u8EAC\uACFC\u8EAC\uACFD\u8EAC\uACFE\u8EAC\uADA1" + // 5445 - 5449
- "\u8EAC\uADA2\u8EAC\uADA3\u8EAC\uADA4\u8EAC\uADA5\u8EAC\uADA6" + // 5450 - 5454
- "\u8EAC\uADA7\u8EAC\uADA8\u8EAC\uADA9\u8EAC\uADAA\u8EAC\uADAB" + // 5455 - 5459
- "\u8EAC\uADAC\u8EAC\uADAD\u8EAC\uADAE\u8EAC\uADAF\u8EAC\uADB0" + // 5460 - 5464
- "\u8EAC\uADB1\u8EAC\uADB2\u8EAC\uADB3\u8EAC\uADB4\u8EAC\uADB5" + // 5465 - 5469
- "\u8EAC\uADB6\u8EAC\uADB7\u8EAC\uADB8\u8EAC\uABF5\u8EAC\uABF6" + // 5470 - 5474
- "\u8EAC\uABF7\u8EAC\uABF8\u8EAC\uABF9\u8EAC\uABFA\u8EAC\uABFB" + // 5475 - 5479
- "\u8EAC\uABFC\u8EAC\uABFD\u8EAC\uABFE\u8EAC\uACA1\u8EAC\uACA2" + // 5480 - 5484
- "\u8EAC\uACA3\u8EAC\uACA4\u8EAC\uACA5\u8EAC\uACA6\u8EAC\uACA7" + // 5485 - 5489
- "\u8EAC\uACA8\u8EAC\uACA9\u8EAC\uACAA\u8EAC\uACAB\u8EAC\uACAC" + // 5490 - 5494
- "\u8EAC\uACAD\u8EAC\uACAE\u8EAC\uACAF\u8EAC\uACB0\u8EAC\uACB1" + // 5495 - 5499
- "\u8EAC\uACB2\u8EAC\uACB3\u8EAC\uACB4\u8EAC\uACB5\u8EAC\uACB6" + // 5500 - 5504
- "\u8EAC\uACB7\u8EAC\uACB8\u8EAC\uACB9\u8EAC\uACBA\u8EAC\uACBB" + // 5505 - 5509
- "\u8EAC\uACBC\u8EAC\uACBD\u8EAC\uACBE\u8EAC\uACBF\u8EAC\uACC0" + // 5510 - 5514
- "\u8EAC\uACC1\u8EAC\uACC2\u8EAC\uACC3\u8EAC\uACC4\u8EAC\uACC5" + // 5515 - 5519
- "\u8EAC\uACC6\u8EAC\uACC7\u8EAC\uACC8\u8EAC\uACC9\u8EAC\uACCA" + // 5520 - 5524
- "\u8EAC\uACCB\u8EAC\uACCC\u8EAC\uACCD\u8EAC\uACCE\u8EAC\uACCF" + // 5525 - 5529
- "\u8EAC\uACD0\u8EAC\uACD1\u8EAC\uACD2\u8EAC\uACD3\u8EAC\uACD4" + // 5530 - 5534
- "\u8EAC\uACD5\u8EAC\uACD6\u8EAC\uABB5\u8EAC\uABB6\u8EAC\uABB7" + // 5535 - 5539
- "\u8EAC\uABB8\u8EAC\uABB9\u8EAC\uABBA\u8EAC\uABBB\u8EAC\uABBC" + // 5540 - 5544
- "\u8EAC\uABBD\u8EAC\uABBE\u8EAC\uABBF\u8EAC\uABC0\u8EAC\uABC1" + // 5545 - 5549
- "\u8EAC\uABC2\u8EAC\uABC3\u8EAC\uABC4\u8EAC\uABC5\u8EAC\uABC6" + // 5550 - 5554
- "\u8EAC\uABC7\u8EAC\uABC8\u8EAC\uABC9\u8EAC\uABCA\u8EAC\uABCB" + // 5555 - 5559
- "\u8EAC\uABCC\u8EAC\uABCD\u8EAC\uABCE\u8EAC\uABCF\u8EAC\uABD0" + // 5560 - 5564
- "\u8EAC\uABD1\u8EAC\uABD2\u8EAC\uABD3\u8EAC\uABD4\u8EAC\uABD5" + // 5565 - 5569
- "\u8EAC\uABD6\u8EAC\uABD7\u8EAC\uABD8\u8EAC\uABD9\u8EAC\uABDA" + // 5570 - 5574
- "\u8EAC\uABDB\u8EAC\uABDC\u8EAC\uABDD\u8EAC\uABDE\u8EAC\uABDF" + // 5575 - 5579
- "\u8EAC\uABE0\u8EAC\uABE1\u8EAC\uABE2\u8EAC\uABE3\u8EAC\uABE4" + // 5580 - 5584
- "\u8EAC\uABE5\u8EAC\uABE6\u8EAC\uABE7\u8EAC\uABE8\u8EAC\uABE9" + // 5585 - 5589
- "\u8EAC\uABEA\u8EAC\uABEB\u8EAC\uABEC\u8EAC\uABED\u8EAC\uABEE" + // 5590 - 5594
- "\u8EAC\uABEF\u8EAC\uABF0\u8EAC\uABF1\u8EAC\uABF2\u8EAC\uABF3" + // 5595 - 5599
- "\u8EAC\uABF4\u8EAC\uAAD3\u8EAC\uAAD4\u8EAC\uAAD5\u8EAC\uAAD6" + // 5600 - 5604
- "\u8EAC\uAAD7\u8EAC\uAAD8\u8EAC\uAAD9\u8EAC\uAADA\u8EAC\uAADB" + // 5605 - 5609
- "\u8EAC\uAADC\u8EAC\uAADD\u8EAC\uAADE\u8EAC\uAADF\u8EAC\uAAE0" + // 5610 - 5614
- "\u8EAC\uAAE1\u8EAC\uAAE2\u8EAC\uAAE3\u8EAC\uAAE4\u8EAC\uAAE5" + // 5615 - 5619
- "\u8EAC\uAAE6\u8EAC\uAAE7\u8EAC\uAAE8\u8EAC\uAAE9\u8EAC\uAAEA" + // 5620 - 5624
- "\u8EAC\uAAEB\u8EAC\uAAEC\u8EAC\uAAED\u8EAC\uAAEE\u8EAC\uAAEF" + // 5625 - 5629
- "\u8EAC\uAAF0\u8EAC\uAAF1\u8EAC\uAAF2\u8EAC\uAAF3\u8EAC\uAAF4" + // 5630 - 5634
- "\u8EAC\uAAF5\u8EAC\uAAF6\u8EAC\uAAF7\u8EAC\uAAF8\u8EAC\uAAF9" + // 5635 - 5639
- "\u8EAC\uAAFA\u8EAC\uAAFB\u8EAC\uAAFC\u8EAC\uAAFD\u8EAC\uAAFE" + // 5640 - 5644
- "\u8EAC\uABA1\u8EAC\uABA2\u8EAC\uABA3\u8EAC\uABA4\u8EAC\uABA5" + // 5645 - 5649
- "\u8EAC\uABA6\u8EAC\uABA7\u8EAC\uABA8\u8EAC\uABA9\u8EAC\uABAA" + // 5650 - 5654
- "\u8EAC\uABAB\u8EAC\uABAC\u8EAC\uABAD\u8EAC\uABAE\u8EAC\uABAF" + // 5655 - 5659
- "\u8EAC\uABB0\u8EAC\uABB1\u8EAC\uABB2\u8EAC\uABB3\u8EAC\uABB4" + // 5660 - 5664
- "\u8EAC\uA9F1\u8EAC\uA9F2\u8EAC\uA9F3\u8EAC\uA9F4\u8EAC\uA9F5" + // 5665 - 5669
- "\u8EAC\uA9F6\u8EAC\uA9F7\u8EAC\uA9F8\u8EAC\uA9F9\u8EAC\uA9FA" + // 5670 - 5674
- "\u8EAC\uA9FB\u8EAC\uA9FC\u8EAC\uA9FD\u8EAC\uA9FE\u8EAC\uAAA1" + // 5675 - 5679
- "\u8EAC\uAAA2\u8EAC\uAAA3\u8EAC\uAAA4\u8EAC\uAAA5\u8EAC\uAAA6" + // 5680 - 5684
- "\u8EAC\uAAA7\u8EAC\uAAA8\u8EAC\uAAA9\u8EAC\uAAAA\u8EAC\uAAAB" + // 5685 - 5689
- "\u8EAC\uAAAC\u8EAC\uAAAD\u8EAC\uAAAE\u8EAC\uAAAF\u8EAC\uAAB0" + // 5690 - 5694
- "\u8EAC\uAAB1\u8EAC\uAAB2\u8EAC\uAAB3\u8EAC\uAAB4\u8EAC\uAAB5" + // 5695 - 5699
- "\u8EAC\uAAB6\u8EAC\uAAB7\u8EAC\uAAB8\u8EAC\uAAB9\u8EAC\uAABA" + // 5700 - 5704
- "\u8EAC\uAABB\u8EAC\uAABC\u8EAC\uAABD\u8EAC\uAABE\u8EAC\uAABF" + // 5705 - 5709
- "\u8EAC\uAAC0\u8EAC\uAAC1\u8EAC\uAAC2\u8EAC\uAAC3\u8EAC\uAAC4" + // 5710 - 5714
- "\u8EAC\uAAC5\u8EAC\uAAC6\u8EAC\uAAC7\u8EAC\uAAC8\u8EAC\uAAC9" + // 5715 - 5719
- "\u8EAC\uAACA\u8EAC\uAACB\u8EAC\uAACC\u8EAC\uAACD\u8EAC\uAACE" + // 5720 - 5724
- "\u8EAC\uAACF\u8EAC\uAAD0\u8EAC\uAAD1\u8EAC\uAAD2\u8EAC\uA9B1" + // 5725 - 5729
- "\u8EAC\uA9B2\u8EAC\uA9B3\u8EAC\uA9B4\u8EAC\uA9B5\u8EAC\uA9B6" + // 5730 - 5734
- "\u8EAC\uA9B7\u8EAC\uA9B8\u8EAC\uA9B9\u8EAC\uA9BA\u8EAC\uA9BB" + // 5735 - 5739
- "\u8EAC\uA9BC\u8EAC\uA9BD\u8EAC\uA9BE\u8EAC\uA9BF\u8EAC\uA9C0" + // 5740 - 5744
- "\u8EAC\uA9C1\u8EAC\uA9C2\u8EAC\uA9C3\u8EAC\uA9C4\u8EAC\uA9C5" + // 5745 - 5749
- "\u8EAC\uA9C6\u8EAC\uA9C7\u8EAC\uA9C8\u8EAC\uA9C9\u8EAC\uA9CA" + // 5750 - 5754
- "\u8EAC\uA9CB\u8EAC\uA9CC\u8EAC\uA9CD\u8EAC\uA9CE\u8EAC\uA9CF" + // 5755 - 5759
- "\u8EAC\uA9D0\u8EAC\uA9D1\u8EAC\uA9D2\u8EAC\uA9D3\u8EAC\uA9D4" + // 5760 - 5764
- "\u8EAC\uA9D5\u8EAC\uA9D6\u8EAC\uA9D7\u8EAC\uA9D8\u8EAC\uA9D9" + // 5765 - 5769
- "\u8EAC\uA9DA\u8EAC\uA9DB\u8EAC\uA9DC\u8EAC\uA9DD\u8EAC\uA9DE" + // 5770 - 5774
- "\u8EAC\uA9DF\u8EAC\uA9E0\u8EAC\uA9E1\u8EAC\uA9E2\u8EAC\uA9E3" + // 5775 - 5779
- "\u8EAC\uA9E4\u8EAC\uA9E5\u8EAC\uA9E6\u8EAC\uA9E7\u8EAC\uA9E8" + // 5780 - 5784
- "\u8EAC\uA9E9\u8EAC\uA9EA\u8EAC\uA9EB\u8EAC\uA9EC\u8EAC\uA9ED" + // 5785 - 5789
- "\u8EAC\uA9EE\u8EAC\uA9EF\u8EAC\uA9F0\u8EAC\uA8CF\u8EAC\uA8D0" + // 5790 - 5794
- "\u8EAC\uA8D1\u8EAC\uA8D2\u8EAC\uA8D3\u8EAC\uA8D4\u8EAC\uA8D5" + // 5795 - 5799
- "\u8EAC\uA8D6\u8EAC\uA8D7\u8EAC\uA8D8\u8EAC\uA8D9\u8EAC\uA8DA" + // 5800 - 5804
- "\u8EAC\uA8DB\u8EAC\uA8DC\u8EAC\uA8DD\u8EAC\uA8DE\u8EAC\uA8DF" + // 5805 - 5809
- "\u8EAC\uA8E0\u8EAC\uA8E1\u8EAC\uA8E2\u8EAC\uA8E3\u8EAC\uA8E4" + // 5810 - 5814
- "\u8EAC\uA8E5\u8EAC\uA8E6\u8EAC\uA8E7\u8EAC\uA8E8\u8EAC\uA8E9" + // 5815 - 5819
- "\u8EAC\uA8EA\u8EAC\uA8EB\u8EAC\uA8EC\u8EAC\uA8ED\u8EAC\uA8EE" + // 5820 - 5824
- "\u8EAC\uA8EF\u8EAC\uA8F0\u8EAC\uA8F1\u8EAC\uA8F2\u8EAC\uA8F3" + // 5825 - 5829
- "\u8EAC\uA8F4\u8EAC\uA8F5\u8EAC\uA8F6\u8EAC\uA8F7\u8EAC\uA8F8" + // 5830 - 5834
- "\u8EAC\uA8F9\u8EAC\uA8FA\u8EAC\uA8FB\u8EAC\uA8FC\u8EAC\uA8FD" + // 5835 - 5839
- "\u8EAC\uA8FE\u8EAC\uA9A1\u8EAC\uA9A2\u8EAC\uA9A3\u8EAC\uA9A4" + // 5840 - 5844
- "\u8EAC\uA9A5\u8EAC\uA9A6\u8EAC\uA9A7\u8EAC\uA9A8\u8EAC\uA9A9" + // 5845 - 5849
- "\u8EAC\uA9AA\u8EAC\uA9AB\u8EAC\uA9AC\u8EAC\uA9AD\u8EAC\uA9AE" + // 5850 - 5854
- "\u8EAC\uA9AF\u8EAC\uA9B0\u8EAC\uA7ED\u8EAC\uA7EE\u8EAC\uA7EF" + // 5855 - 5859
- "\u8EAC\uA7F0\u8EAC\uA7F1\u8EAC\uA7F2\u8EAC\uA7F3\u8EAC\uA7F4" + // 5860 - 5864
- "\u8EAC\uA7F5\u8EAC\uA7F6\u8EAC\uA7F7\u8EAC\uA7F8\u8EAC\uA7F9" + // 5865 - 5869
- "\u8EAC\uA7FA\u8EAC\uA7FB\u8EAC\uA7FC\u8EAC\uA7FD\u8EAC\uA7FE" + // 5870 - 5874
- "\u8EAC\uA8A1\u8EAC\uA8A2\u8EAC\uA8A3\u8EAC\uA8A4\u8EAC\uA8A5" + // 5875 - 5879
- "\u8EAC\uA8A6\u8EAC\uA8A7\u8EAC\uA8A8\u8EAC\uA8A9\u8EAC\uA8AA" + // 5880 - 5884
- "\u8EAC\uA8AB\u8EAC\uA8AC\u8EAC\uA8AD\u8EAC\uA8AE\u8EAC\uA8AF" + // 5885 - 5889
- "\u8EAC\uA8B0\u8EAC\uA8B1\u8EAC\uA8B2\u8EAC\uA8B3\u8EAC\uA8B4" + // 5890 - 5894
- "\u8EAC\uA8B5\u8EAC\uA8B6\u8EAC\uA8B7\u8EAC\uA8B8\u8EAC\uA8B9" + // 5895 - 5899
- "\u8EAC\uA8BA\u8EAC\uA8BB\u8EAC\uA8BC\u8EAC\uA8BD\u8EAC\uA8BE" + // 5900 - 5904
- "\u8EAC\uA8BF\u8EAC\uA8C0\u8EAC\uA8C1\u8EAC\uA8C2\u8EAC\uA8C3" + // 5905 - 5909
- "\u8EAC\uA8C4\u8EAC\uA8C5\u8EAC\uA8C6\u8EAC\uA8C7\u8EAC\uA8C8" + // 5910 - 5914
- "\u8EAC\uA8C9\u8EAC\uA8CA\u8EAC\uA8CB\u8EAC\uA8CC\u8EAC\uA8CD" + // 5915 - 5919
- "\u8EAC\uA8CE\u8EAC\uA7AD\u8EAC\uA7AE\u8EAC\uA7AF\u8EAC\uA7B0" + // 5920 - 5924
- "\u8EAC\uA7B1\u8EAC\uA7B2\u8EAC\uA7B3\u8EAC\uA7B4\u8EAC\uA7B5" + // 5925 - 5929
- "\u8EAC\uA7B6\u8EAC\uA7B7\u8EAC\uA7B8\u8EAC\uA7B9\u8EAC\uA7BA" + // 5930 - 5934
- "\u8EAC\uA7BB\u8EAC\uA7BC\u8EAC\uA7BD\u8EAC\uA7BE\u8EAC\uA7BF" + // 5935 - 5939
- "\u8EAC\uA7C0\u8EAC\uA7C1\u8EAC\uA7C2\u8EAC\uA7C3\u8EAC\uA7C4" + // 5940 - 5944
- "\u8EAC\uA7C5\u8EAC\uA7C6\u8EAC\uA7C7\u8EAC\uA7C8\u8EAC\uA7C9" + // 5945 - 5949
- "\u8EAC\uA7CA\u8EAC\uA7CB\u8EAC\uA7CC\u8EAC\uA7CD\u8EAC\uA7CE" + // 5950 - 5954
- "\u8EAC\uA7CF\u8EAC\uA7D0\u8EAC\uA7D1\u8EAC\uA7D2\u8EAC\uA7D3" + // 5955 - 5959
- "\u8EAC\uA7D4\u8EAC\uA7D5\u8EAC\uA7D6\u8EAC\uA7D7\u8EAC\uA7D8" + // 5960 - 5964
- "\u8EAC\uA7D9\u8EAC\uA7DA\u8EAC\uA7DB\u8EAC\uA7DC\u8EAC\uA7DD" + // 5965 - 5969
- "\u8EAC\uA7DE\u8EAC\uA7DF\u8EAC\uA7E0\u8EAC\uA7E1\u8EAC\uA7E2" + // 5970 - 5974
- "\u8EAC\uA7E3\u8EAC\uA7E4\u8EAC\uA7E5\u8EAC\uA7E6\u8EAC\uA7E7" + // 5975 - 5979
- "\u8EAC\uA7E8\u8EAC\uA7E9\u8EAC\uA7EA\u8EAC\uA7EB\u8EAC\uA7EC" + // 5980 - 5984
- "\u8EAC\uA6CB\u8EAC\uA6CC\u8EAC\uA6CD\u8EAC\uA6CE\u8EAC\uA6CF" + // 5985 - 5989
- "\u8EAC\uA6D0\u8EAC\uA6D1\u8EAC\uA6D2\u8EAC\uA6D3\u8EAC\uA6D4" + // 5990 - 5994
- "\u8EAC\uA6D5\u8EAC\uA6D6\u8EAC\uA6D7\u8EAC\uA6D8\u8EAC\uA6D9" + // 5995 - 5999
- "\u8EAC\uA6DA\u8EAC\uA6DB\u8EAC\uA6DC\u8EAC\uA6DD\u8EAC\uA6DE" + // 6000 - 6004
- "\u8EAC\uA6DF\u8EAC\uA6E0\u8EAC\uA6E1\u8EAC\uA6E2\u8EAC\uA6E3" + // 6005 - 6009
- "\u8EAC\uA6E4\u8EAC\uA6E5\u8EAC\uA6E6\u8EAC\uA6E7\u8EAC\uA6E8" + // 6010 - 6014
- "\u8EAC\uA6E9\u8EAC\uA6EA\u8EAC\uA6EB\u8EAC\uA6EC\u8EAC\uA6ED" + // 6015 - 6019
- "\u8EAC\uA6EE\u8EAC\uA6EF\u8EAC\uA6F0\u8EAC\uA6F1\u8EAC\uA6F2" + // 6020 - 6024
- "\u8EAC\uA6F3\u8EAC\uA6F4\u8EAC\uA6F5\u8EAC\uA6F6\u8EAC\uA6F7" + // 6025 - 6029
- "\u8EAC\uA6F8\u8EAC\uA6F9\u8EAC\uA6FA\u8EAC\uA6FB\u8EAC\uA6FC" + // 6030 - 6034
- "\u8EAC\uA6FD\u8EAC\uA6FE\u8EAC\uA7A1\u8EAC\uA7A2\u8EAC\uA7A3" + // 6035 - 6039
- "\u8EAC\uA7A4\u8EAC\uA7A5\u8EAC\uA7A6\u8EAC\uA7A7\u8EAC\uA7A8" + // 6040 - 6044
- "\u8EAC\uA7A9\u8EAC\uA7AA\u8EAC\uA7AB\u8EAC\uA7AC\u8EAC\uA5E9" + // 6045 - 6049
- "\u8EAC\uA5EA\u8EAC\uA5EB\u8EAC\uA5EC\u8EAC\uA5ED\u8EAC\uA5EE" + // 6050 - 6054
- "\u8EAC\uA5EF\u8EAC\uA5F0\u8EAC\uA5F1\u8EAC\uA5F2\u8EAC\uA5F3" + // 6055 - 6059
- "\u8EAC\uA5F4\u8EAC\uA5F5\u8EAC\uA5F6\u8EAC\uA5F7\u8EAC\uA5F8" + // 6060 - 6064
- "\u8EAC\uA5F9\u8EAC\uA5FA\u8EAC\uA5FB\u8EAC\uA5FC\u8EAC\uA5FD" + // 6065 - 6069
- "\u8EAC\uA5FE\u8EAC\uA6A1\u8EAC\uA6A2\u8EAC\uA6A3\u8EAC\uA6A4" + // 6070 - 6074
- "\u8EAC\uA6A5\u8EAC\uA6A6\u8EAC\uA6A7\u8EAC\uA6A8\u8EAC\uA6A9" + // 6075 - 6079
- "\u8EAC\uA6AA\u8EAC\uA6AB\u8EAC\uA6AC\u8EAC\uA6AD\u8EAC\uA6AE" + // 6080 - 6084
- "\u8EAC\uA6AF\u8EAC\uA6B0\u8EAC\uA6B1\u8EAC\uA6B2\u8EAC\uA6B3" + // 6085 - 6089
- "\u8EAC\uA6B4\u8EAC\uA6B5\u8EAC\uA6B6\u8EAC\uA6B7\u8EAC\uA6B8" + // 6090 - 6094
- "\u8EAC\uA6B9\u8EAC\uA6BA\u8EAC\uA6BB\u8EAC\uA6BC\u8EAC\uA6BD" + // 6095 - 6099
- "\u8EAC\uA6BE\u8EAC\uA6BF\u8EAC\uA6C0\u8EAC\uA6C1\u8EAC\uA6C2" + // 6100 - 6104
- "\u8EAC\uA6C3\u8EAC\uA6C4\u8EAC\uA6C5\u8EAC\uA6C6\u8EAC\uA6C7" + // 6105 - 6109
- "\u8EAC\uA6C8\u8EAC\uA6C9\u8EAC\uA6CA\u8EAC\uA5A9\u8EAC\uA5AA" + // 6110 - 6114
- "\u8EAC\uA5AB\u8EAC\uA5AC\u8EAC\uA5AD\u8EAC\uA5AE\u8EAC\uA5AF" + // 6115 - 6119
- "\u8EAC\uA5B0\u8EAC\uA5B1\u8EAC\uA5B2\u8EAC\uA5B3\u8EAC\uA5B4" + // 6120 - 6124
- "\u8EAC\uA5B5\u8EAC\uA5B6\u8EAC\uA5B7\u8EAC\uA5B8\u8EAC\uA5B9" + // 6125 - 6129
- "\u8EAC\uA5BA\u8EAC\uA5BB\u8EAC\uA5BC\u8EAC\uA5BD\u8EAC\uA5BE" + // 6130 - 6134
- "\u8EAC\uA5BF\u8EAC\uA5C0\u8EAC\uA5C1\u8EAC\uA5C2\u8EAC\uA5C3" + // 6135 - 6139
- "\u8EAC\uA5C4\u8EAC\uA5C5\u8EAC\uA5C6\u8EAC\uA5C7\u8EAC\uA5C8" + // 6140 - 6144
- "\u8EAC\uA5C9\u8EAC\uA5CA\u8EAC\uA5CB\u8EAC\uA5CC\u8EAC\uA5CD" + // 6145 - 6149
- "\u8EAC\uA5CE\u8EAC\uA5CF\u8EAC\uA5D0\u8EAC\uA5D1\u8EAC\uA5D2" + // 6150 - 6154
- "\u8EAC\uA5D3\u8EAC\uA5D4\u8EAC\uA5D5\u8EAC\uA5D6\u8EAC\uA5D7" + // 6155 - 6159
- "\u8EAC\uA5D8\u8EAC\uA5D9\u8EAC\uA5DA\u8EAC\uA5DB\u8EAC\uA5DC" + // 6160 - 6164
- "\u8EAC\uA5DD\u8EAC\uA5DE\u8EAC\uA5DF\u8EAC\uA5E0\u8EAC\uA5E1" + // 6165 - 6169
- "\u8EAC\uA5E2\u8EAC\uA5E3\u8EAC\uA5E4\u8EAC\uA5E5\u8EAC\uA5E6" + // 6170 - 6174
- "\u8EAC\uA5E7\u8EAC\uA5E8\u8EAC\uA4C7\u8EAC\uA4C8\u8EAC\uA4C9" + // 6175 - 6179
- "\u8EAC\uA4CA\u8EAC\uA4CB\u8EAC\uA4CC\u8EAC\uA4CD\u8EAC\uA4CE" + // 6180 - 6184
- "\u8EAC\uA4CF\u8EAC\uA4D0\u8EAC\uA4D1\u8EAC\uA4D2\u8EAC\uA4D3" + // 6185 - 6189
- "\u8EAC\uA4D4\u8EAC\uA4D5\u8EAC\uA4D6\u8EAC\uA4D7\u8EAC\uA4D8" + // 6190 - 6194
- "\u8EAC\uA4D9\u8EAC\uA4DA\u8EAC\uA4DB\u8EAC\uA4DC\u8EAC\uA4DD" + // 6195 - 6199
- "\u8EAC\uA4DE\u8EAC\uA4DF\u8EAC\uA4E0\u8EAC\uA4E1\u8EAC\uA4E2" + // 6200 - 6204
- "\u8EAC\uA4E3\u8EAC\uA4E4\u8EAC\uA4E5\u8EAC\uA4E6\u8EAC\uA4E7" + // 6205 - 6209
- "\u8EAC\uA4E8\u8EAC\uA4E9\u8EAC\uA4EA\u8EAC\uA4EB\u8EAC\uA4EC" + // 6210 - 6214
- "\u8EAC\uA4ED\u8EAC\uA4EE\u8EAC\uA4EF\u8EAC\uA4F0\u8EAC\uA4F1" + // 6215 - 6219
- "\u8EAC\uA4F2\u8EAC\uA4F3\u8EAC\uA4F4\u8EAC\uA4F5\u8EAC\uA4F6" + // 6220 - 6224
- "\u8EAC\uA4F7\u8EAC\uA4F8\u8EAC\uA4F9\u8EAC\uA4FA\u8EAC\uA4FB" + // 6225 - 6229
- "\u8EAC\uA4FC\u8EAC\uA4FD\u8EAC\uA4FE\u8EAC\uA5A1\u8EAC\uA5A2" + // 6230 - 6234
- "\u8EAC\uA5A3\u8EAC\uA5A4\u8EAC\uA5A5\u8EAC\uA5A6\u8EAC\uA5A7" + // 6235 - 6239
- "\u8EAC\uA5A8\u8EAC\uA3E5\u8EAC\uA3E6\u8EAC\uA3E7\u8EAC\uA3E8" + // 6240 - 6244
- "\u8EAC\uA3E9\u8EAC\uA3EA\u8EAC\uA3EB\u8EAC\uA3EC\u8EAC\uA3ED" + // 6245 - 6249
- "\u8EAC\uA3EE\u8EAC\uA3EF\u8EAC\uA3F0\u8EAC\uA3F1\u8EAC\uA3F2" + // 6250 - 6254
- "\u8EAC\uA3F3\u8EAC\uA3F4\u8EAC\uA3F5\u8EAC\uA3F6\u8EAC\uA3F7" + // 6255 - 6259
- "\u8EAC\uA3F8\u8EAC\uA3F9\u8EAC\uA3FA\u8EAC\uA3FB\u8EAC\uA3FC" + // 6260 - 6264
- "\u8EAC\uA3FD\u8EAC\uA3FE\u8EAC\uA4A1\u8EAC\uA4A2\u8EAC\uA4A3" + // 6265 - 6269
- "\u8EAC\uA4A4\u8EAC\uA4A5\u8EAC\uA4A6\u8EAC\uA4A7\u8EAC\uA4A8" + // 6270 - 6274
- "\u8EAC\uA4A9\u8EAC\uA4AA\u8EAC\uA4AB\u8EAC\uA4AC\u8EAC\uA4AD" + // 6275 - 6279
- "\u8EAC\uA4AE\u8EAC\uA4AF\u8EAC\uA4B0\u8EAC\uA4B1\u8EAC\uA4B2" + // 6280 - 6284
- "\u8EAC\uA4B3\u8EAC\uA4B4\u8EAC\uA4B5\u8EAC\uA4B6\u8EAC\uA4B7" + // 6285 - 6289
- "\u8EAC\uA4B8\u8EAC\uA4B9\u8EAC\uA4BA\u8EAC\uA4BB\u8EAC\uA4BC" + // 6290 - 6294
- "\u8EAC\uA4BD\u8EAC\uA4BE\u8EAC\uA4BF\u8EAC\uA4C0\u8EAC\uA4C1" + // 6295 - 6299
- "\u8EAC\uA4C2\u8EAC\uA4C3\u8EAC\uA4C4\u8EAC\uA4C5\u8EAC\uA4C6" + // 6300 - 6304
- "\u8EAC\uA3A5\u8EAC\uA3A6\u8EAC\uA3A7\u8EAC\uA3A8\u8EAC\uA3A9" + // 6305 - 6309
- "\u8EAC\uA3AA\u8EAC\uA3AB\u8EAC\uA3AC\u8EAC\uA3AD\u8EAC\uA3AE" + // 6310 - 6314
- "\u8EAC\uA3AF\u8EAC\uA3B0\u8EAC\uA3B1\u8EAC\uA3B2\u8EAC\uA3B3" + // 6315 - 6319
- "\u8EAC\uA3B4\u8EAC\uA3B5\u8EAC\uA3B6\u8EAC\uA3B7\u8EAC\uA3B8" + // 6320 - 6324
- "\u8EAC\uA3B9\u8EAC\uA3BA\u8EAC\uA3BB\u8EAC\uA3BC\u8EAC\uA3BD" + // 6325 - 6329
- "\u8EAC\uA3BE\u8EAC\uA3BF\u8EAC\uA3C0\u8EAC\uA3C1\u8EAC\uA3C2" + // 6330 - 6334
- "\u8EAC\uA3C3\u8EAC\uA3C4\u8EAC\uA3C5\u8EAC\uA3C6\u8EAC\uA3C7" + // 6335 - 6339
- "\u8EAC\uA3C8\u8EAC\uA3C9\u8EAC\uA3CA\u8EAC\uA3CB\u8EAC\uA3CC" + // 6340 - 6344
- "\u8EAC\uA3CD\u8EAC\uA3CE\u8EAC\uA3CF\u8EAC\uA3D0\u8EAC\uA3D1" + // 6345 - 6349
- "\u8EAC\uA3D2\u8EAC\uA3D3\u8EAC\uA3D4\u8EAC\uA3D5\u8EAC\uA3D6" + // 6350 - 6354
- "\u8EAC\uA3D7\u8EAC\uA3D8\u8EAC\uA3D9\u8EAC\uA3DA\u8EAC\uA3DB" + // 6355 - 6359
- "\u8EAC\uA3DC\u8EAC\uA3DD\u8EAC\uA3DE\u8EAC\uA3DF\u8EAC\uA3E0" + // 6360 - 6364
- "\u8EAC\uA3E1\u8EAC\uA3E2\u8EAC\uA3E3\u8EAC\uA3E4\u8EAC\uA2C3" + // 6365 - 6369
- "\u8EAC\uA2C4\u8EAC\uA2C5\u8EAC\uA2C6\u8EAC\uA2C7\u8EAC\uA2C8" + // 6370 - 6374
- "\u8EAC\uA2C9\u8EAC\uA2CA\u8EAC\uA2CB\u8EAC\uA2CC\u8EAC\uA2CD" + // 6375 - 6379
- "\u8EAC\uA2CE\u8EAC\uA2CF\u8EAC\uA2D0\u8EAC\uA2D1\u8EAC\uA2D2" + // 6380 - 6384
- "\u8EAC\uA2D3\u8EAC\uA2D4\u8EAC\uA2D5\u8EAC\uA2D6\u8EAC\uA2D7" + // 6385 - 6389
- "\u8EAC\uA2D8\u8EAC\uA2D9\u8EAC\uA2DA\u8EAC\uA2DB\u8EAC\uA2DC" + // 6390 - 6394
- "\u8EAC\uA2DD\u8EAC\uA2DE\u8EAC\uA2DF\u8EAC\uA2E0\u8EAC\uA2E1" + // 6395 - 6399
- "\u8EAC\uA2E2\u8EAC\uA2E3\u8EAC\uA2E4\u8EAC\uA2E5\u8EAC\uA2E6" + // 6400 - 6404
- "\u8EAC\uA2E7\u8EAC\uA2E8\u8EAC\uA2E9\u8EAC\uA2EA\u8EAC\uA2EB" + // 6405 - 6409
- "\u8EAC\uA2EC\u8EAC\uA2ED\u8EAC\uA2EE\u8EAC\uA2EF\u8EAC\uA2F0" + // 6410 - 6414
- "\u8EAC\uA2F1\u8EAC\uA2F2\u8EAC\uA2F3\u8EAC\uA2F4\u8EAC\uA2F5" + // 6415 - 6419
- "\u8EAC\uA2F6\u8EAC\uA2F7\u8EAC\uA2F8\u8EAC\uA2F9\u8EAC\uA2FA" + // 6420 - 6424
- "\u8EAC\uA2FB\u8EAC\uA2FC\u8EAC\uA2FD\u8EAC\uA2FE\u8EAC\uA3A1" + // 6425 - 6429
- "\u8EAC\uA3A2\u8EAC\uA3A3\u8EAC\uA3A4\u8EAC\uA1E1\u8EAC\uA1E2" + // 6430 - 6434
- "\u8EAC\uA1E3\u8EAC\uA1E4\u8EAC\uA1E5\u8EAC\uA1E6\u8EAC\uA1E7" + // 6435 - 6439
- "\u8EAC\uA1E8\u8EAC\uA1E9\u8EAC\uA1EA\u8EAC\uA1EB\u8EAC\uA1EC" + // 6440 - 6444
- "\u8EAC\uA1ED\u8EAC\uA1EE\u8EAC\uA1EF\u8EAC\uA1F0\u8EAC\uA1F1" + // 6445 - 6449
- "\u8EAC\uA1F2\u8EAC\uA1F3\u8EAC\uA1F4\u8EAC\uA1F5\u8EAC\uA1F6" + // 6450 - 6454
- "\u8EAC\uA1F7\u8EAC\uA1F8\u8EAC\uA1F9\u8EAC\uA1FA\u8EAC\uA1FB" + // 6455 - 6459
- "\u8EAC\uA1FC\u8EAC\uA1FD\u8EAC\uA1FE\u8EAC\uA2A1\u8EAC\uA2A2" + // 6460 - 6464
- "\u8EAC\uA2A3\u8EAC\uA2A4\u8EAC\uA2A5\u8EAC\uA2A6\u8EAC\uA2A7" + // 6465 - 6469
- "\u8EAC\uA2A8\u8EAC\uA2A9\u8EAC\uA2AA\u8EAC\uA2AB\u8EAC\uA2AC" + // 6470 - 6474
- "\u8EAC\uA2AD\u8EAC\uA2AE\u8EAC\uA2AF\u8EAC\uA2B0\u8EAC\uA2B1" + // 6475 - 6479
- "\u8EAC\uA2B2\u8EAC\uA2B3\u8EAC\uA2B4\u8EAC\uA2B5\u8EAC\uA2B6" + // 6480 - 6484
- "\u8EAC\uA2B7\u8EAC\uA2B8\u8EAC\uA2B9\u8EAC\uA2BA\u8EAC\uA2BB" + // 6485 - 6489
- "\u8EAC\uA2BC\u8EAC\uA2BD\u8EAC\uA2BE\u8EAC\uA2BF\u8EAC\uA2C0" + // 6490 - 6494
- "\u8EAC\uA2C1\u8EAC\uA2C2\u8EAC\uA1A1\u8EAC\uA1A2\u8EAC\uA1A3" + // 6495 - 6499
- "\u8EAC\uA1A4\u8EAC\uA1A5\u8EAC\uA1A6\u8EAC\uA1A7\u8EAC\uA1A8" + // 6500 - 6504
- "\u8EAC\uA1A9\u8EAC\uA1AA\u8EAC\uA1AB\u8EAC\uA1AC\u8EAC\uA1AD" + // 6505 - 6509
- "\u8EAC\uA1AE\u8EAC\uA1AF\u8EAC\uA1B0\u8EAC\uA1B1\u8EAC\uA1B2" + // 6510 - 6514
- "\u8EAC\uA1B3\u8EAC\uA1B4\u8EAC\uA1B5\u8EAC\uA1B6\u8EAC\uA1B7" + // 6515 - 6519
- "\u8EAC\uA1B8\u8EAC\uA1B9\u8EAC\uA1BA\u8EAC\uA1BB\u8EAC\uA1BC" + // 6520 - 6524
- "\u8EAC\uA1BD\u8EAC\uA1BE\u8EAC\uA1BF\u8EAC\uA1C0\u8EAC\uA1C1" + // 6525 - 6529
- "\u8EAC\uA1C2\u8EAC\uA1C3\u8EAC\uA1C4\u8EAC\uA1C5\u8EAC\uA1C6" + // 6530 - 6534
- "\u8EAC\uA1C7\u8EAC\uA1C8\u8EAC\uA1C9\u8EAC\uA1CA\u8EAC\uA1CB" + // 6535 - 6539
- "\u8EAC\uA1CC\u8EAC\uA1CD\u8EAC\uA1CE\u8EAC\uA1CF\u8EAC\uA1D0" + // 6540 - 6544
- "\u8EAC\uA1D1\u8EAC\uA1D2\u8EAC\uA1D3\u8EAC\uA1D4\u8EAC\uA1D5" + // 6545 - 6549
- "\u8EAC\uA1D6\u8EAC\uA1D7\u8EAC\uA1D8\u8EAC\uA1D9\u8EAC\uA1DA" + // 6550 - 6554
- "\u8EAC\uA1DB\u8EAC\uA1DC\u8EAC\uA1DD\u8EAC\uA1DE\u8EAC\uA1DF" + // 6555 - 6559
- "\u8EAC\uA1E0\u8EA2\uE8E4\u8EA2\uE8E5\u8EA2\uEEF9\u8EA2\uF0AD" + // 6560 - 6564
- "\u0000\u0000\u0000\u0000\u8EA2\uF0F8\u8EA2\uF1D5\u8EA2\uF2A9" + // 6565 - 6569
- "\u8EA2\uF2C3\u0000\uEBFD\u0000\uF6BA\u8EA2\uE5B5\u8EA2\uE8E6" + // 6570 - 6574
- "\u8EA2\uEDC0\u8EA2\uF0AE\u0000\u0000\u0000\u0000\u0000\uF0AF" + // 6575 - 6579
- "\u0000\u0000\u8EA2\uE1C1\u8EA2\uE5B6\u8EA2\uE8E7\u8EA2\uE8E8" + // 6580 - 6584
- "\u8EA2\uE8E9\u8EA2\uEBCC\u0000\u0000\u8EA2\uEBC8\u0000\uFBD4" + // 6585 - 6589
- "\u8EA2\uEBCB\u8EA2\uEBCA\u0000\uFADF\u8EA2\uEBC9\u0000\uFAE1" + // 6590 - 6594
- "\u0000\u0000\u0000\uFAE0\u8EA2\uEDC2\u8EA2\uEDC1\u0000\uFBD5" + // 6595 - 6599
- "\u0000\uFBD6\u0000\u0000\u0000\u0000\u0000\uFCB2\u8EA2\uEEFA" + // 6600 - 6604
- "\u0000\uFCB1\u0000\u0000\u8EA2\uF0B1\u8EA2\uF0B2\u8EA2\uF0B0" + // 6605 - 6609
- "\u8EA2\uF0AF\u0000\uFDA1\u0000\u0000\u8EA2\uF0F9\u8EA2\uF0FA" + // 6610 - 6614
- "\u8EA2\uF0FB\u0000\uFCFE\u8EA2\uF1D6\u8EA2\uF1D9\u8EA2\uF1D8" + // 6615 - 6619
- "\u8EA2\uF1D7\u0000\u0000\u0000\u0000\u8EA2\uF2C2\u0000\u0000" + // 6620 - 6624
- "\u0000\uC4A1\u0000\uC4A3\u0000\u0000\u0000\uC4A4\u0000\u0000" + // 6625 - 6629
- "\u0000\u0000\u0000\u0000\u8EA2\uA1A6\u0000\uC4B7\u0000\uC4B5" + // 6630 - 6634
- "\u0000\uC4B8\u0000\uC4B6\u8EA2\uA1A7\u0000\uC4E2\u8EA2\uA1AF" + // 6635 - 6639
- "\u8EA2\uA1AD\u0000\uC4E1\u0000\uC4E0\u0000\u0000\u0000\u0000" + // 6640 - 6644
- "\u0000\uC5E2\u0000\uC5E1\u0000\uC5E0\u0000\u0000\u0000\uC5E3" + // 6645 - 6649
- "\u0000\uC5DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 6650 - 6654
- "\u0000\uC7A2\u0000\uC7A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 6655 - 6659
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBE4\u0000\u0000" + // 6660 - 6664
- "\u0000\uA7A2\u0000\u0000\u0000\u0000\u0000\uC4B9\u0000\u0000" + // 6665 - 6669
- "\u0000\uC4E3\u8EA2\uA1B0\u0000\u0000\u0000\uC4E4\u8EA2\uA1C3" + // 6670 - 6674
- "\u0000\uC8EB\u8EA2\uA5B1\u0000\u0000\u0000\u0000\u0000\uA7A3" + // 6675 - 6679
- "\u0000\u0000\u0000\uC4BA\u0000\uC4E5\u0000\u0000\u0000\uC5E4" + // 6680 - 6684
- "\u8EA2\uA1C4\u0000\u0000\u0000\u0000\u0000\uA7A4\u8EA2\uE5AE" + // 6685 - 6689
- "\u8EA2\uE5AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 6690 - 6694
- "\u8EA2\uF0A8\u0000\uFCFD\u0000\u0000\u8EA2\uF1D4\u8EA2\uF1EE" + // 6695 - 6699
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7EF\u8EA2\uD6BD" + // 6700 - 6704
- "\u8EA2\uD6BE\u0000\u0000\u8EA2\uDCC3\u0000\uE7F0\u0000\u0000" + // 6705 - 6709
- "\u0000\uF8A9\u8EA2\uE5AF\u0000\u0000\u8EA2\uEDBD\u0000\uFBD3" + // 6710 - 6714
- "\u8EA2\uEDBE\u8EA2\uEDBC\u8EA2\uF0A9\u0000\u0000\u8EA2\uF0F7" + // 6715 - 6719
- "\u0000\u0000\u0000\uE7F1\u0000\u0000\u8EA2\uE1C0\u8EA2\uE1BF" + // 6720 - 6724
- "\u8EA2\uE1BE\u8EA2\uE5B0\u0000\u0000\u0000\u0000\u8EA2\uE5B4" + // 6725 - 6729
- "\u8EA2\uE5B3\u8EA2\uE5B2\u8EA2\uE5B1\u0000\uF8AA\u8EA2\uE8E3" + // 6730 - 6734
- "\u8EA2\uEBC7\u0000\uFADE\u8EA2\uEBC6\u8EA2\uEDBF\u8EA2\uEEF8" + // 6735 - 6739
- "\u8EA2\uEEF7\u0000\uFCB0\u8EA2\uEEF6\u8EA2\uF0AC\u8EA2\uF0AB" + // 6740 - 6744
- "\u8EA2\uF0AA\u0000\u0000\u0000\u0000\u0000\uEBFC\u0000\u0000" + // 6745 - 6749
- "\u8EA2\uDCC4\u0000\uF6B9\u0000\u0000\u8EAD\uA2E7\u8EAD\uA2E8" + // 6750 - 6754
- "\u8EAD\uA2E9\u8EAD\uA2EA\u8EAD\uA2EB\u8EAD\uA2EC\u8EAD\uA2ED" + // 6755 - 6759
- "\u8EAD\uA2EE\u8EAD\uA2EF\u8EAD\uA2F0\u8EAD\uA2F1\u8EAD\uA2F2" + // 6760 - 6764
- "\u8EAD\uA2F3\u8EAD\uA2F4\u8EAD\uA2F5\u8EAD\uA2F6\u8EAD\uA2F7" + // 6765 - 6769
- "\u8EAD\uA2F8\u8EAD\uA2F9\u8EAD\uA2FA\u8EAD\uA2FB\u8EAD\uA2FC" + // 6770 - 6774
- "\u8EAD\uA2FD\u8EAD\uA2FE\u8EAD\uA3A1\u8EAD\uA3A2\u8EAD\uA3A3" + // 6775 - 6779
- "\u8EAD\uA3A4\u8EAD\uA3A5\u8EAD\uA3A6\u8EAD\uA3A7\u8EAD\uA3A8" + // 6780 - 6784
- "\u8EAD\uA3A9\u8EAD\uA3AA\u8EAD\uA3AB\u8EAD\uA3AC\u8EAD\uA3AD" + // 6785 - 6789
- "\u8EAD\uA3AE\u8EAD\uA3AF\u8EAD\uA3B0\u8EAD\uA3B1\u8EAD\uA3B2" + // 6790 - 6794
- "\u8EAD\uA3B3\u8EAD\uA3B4\u8EAD\uA3B5\u8EAD\uA3B6\u8EAD\uA3B7" + // 6795 - 6799
- "\u8EAD\uA3B8\u8EAD\uA3B9\u8EAD\uA3BA\u8EAD\uA3BB\u8EAD\uA3BC" + // 6800 - 6804
- "\u8EAD\uA3BD\u8EAD\uA3BE\u8EAD\uA3BF\u0000\u0000\u0000\u0000" + // 6805 - 6809
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1AE\u8EAD\uA1A5" + // 6810 - 6814
- "\u8EAD\uA1A6\u0000\u0000\u0000\uD5E9\u8EA2\uAFD4\u8EA2\uAFD2" + // 6815 - 6819
- "\u8EA2\uAFD3\u0000\uD5EA\u8EA2\uAFD1\u0000\u0000\u0000\u0000" + // 6820 - 6824
- "\u0000\u0000\u0000\u0000\u0000\uDBA1\u0000\uDBA2\u8EA2\uB5EA" + // 6825 - 6829
- "\u0000\uDBA3\u0000\uDAFE\u8EA2\uBCC2\u0000\u0000\u8EA2\uBCC3" + // 6830 - 6834
- "\u8EA2\uC3C4\u0000\u0000\u0000\u0000\u0000\uE9A2\u0000\uE9A1" + // 6835 - 6839
- "\u0000\u0000\u0000\u0000\u8EA2\uDCFC\u8EA2\uE1E5\u0000\u0000" + // 6840 - 6844
- "\u8EA2\uE5D5\u8EA2\uE5D4\u8EA2\uE8FB\u0000\uA7E6\u8EA2\uA1BE" + // 6845 - 6849
- "\u0000\uD1CD\u0000\u0000\u0000\u0000\u0000\uC5CA\u0000\uC6D9" + // 6850 - 6854
- "\u0000\u0000\u0000\uC8AF\u0000\uC8AE\u0000\u0000\u0000\u0000" + // 6855 - 6859
- "\u0000\uC8B0\u0000\uC8B1\u8EA2\uA2CF\u8EA2\uA2CE\u8EA2\uA4B9" + // 6860 - 6864
- "\u0000\uCAD4\u8EA2\uA4BC\u8EA2\uA4BB\u8EA2\uA4BA\u8EA2\uA4BD" + // 6865 - 6869
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDF6" + // 6870 - 6874
- "\u8EA2\uA7AA\u8EA2\uA7A6\u8EA2\uA7AF\u0000\u0000\u0000\u0000" + // 6875 - 6879
- "\u8EA2\uA3A6\u0000\u0000\u0000\uC8FB\u0000\u0000\u0000\u0000" + // 6880 - 6884
- "\u0000\uC8FE\u0000\uC8EF\u0000\uC9A9\u8EA2\uA2FD\u0000\u0000" + // 6885 - 6889
- "\u0000\u0000\u8EA2\uA5BD\u0000\uC8ED\u0000\uC9A5\u0000\uC8EE" + // 6890 - 6894
- "\u0000\uC8F6\u0000\uC8F7\u8EA2\uA3A4\u8EA2\uA2FE\u0000\uC8FC" + // 6895 - 6899
- "\u0000\uC8F4\u8EA2\uA2FA\u0000\uC8F0\u8EA2\uA3A7\u0000\uC9A7" + // 6900 - 6904
- "\u0000\uC9AA\u0000\uC8F3\u0000\uC9A2\u0000\uC9A8\u0000\uC8F1" + // 6905 - 6909
- "\u8EA2\uA3A5\u0000\uC9A3\u8EA2\uA3AB\u8EA2\uA2FC\u0000\uC9A1" + // 6910 - 6914
- "\u8EA2\uA3A1\u0000\u0000\u0000\u0000\u8EA2\uA3A3\u0000\u0000" + // 6915 - 6919
- "\u0000\uCBF9\u8EA2\uA5BF\u8EA2\uA5CB\u0000\uCBF1\u0000\u0000" + // 6920 - 6924
- "\u8EA2\uA5CC\u0000\uCBEC\u0000\uCBF6\u0000\u0000\u0000\u0000" + // 6925 - 6929
- "\u0000\uCBEF\u8EA2\uA5B9\u0000\uCBF7\u8EA2\uA5B8\u8EA2\uA5BC" + // 6930 - 6934
- "\u8EA2\uA5C3\u8EA2\uA5C1\u0000\uCCA1\u0000\uCBFA\u8EA2\uA5B3" + // 6935 - 6939
- "\u8EA2\uA5B5\u0000\uCBFC\u0000\uCBF0\u8EA2\uE8E1\u0000\u0000" + // 6940 - 6944
- "\u8EA2\uF0A4\u0000\uE3A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 6945 - 6949
- "\u0000\u0000\u8EA2\uE1BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 6950 - 6954
- "\u0000\uFDB1\u0000\uE3A8\u0000\uF0AD\u0000\uF6B4\u8EA2\uF0A5" + // 6955 - 6959
- "\u0000\uE3A9\u0000\u0000\u8EA2\uD6BC\u0000\uF3BD\u8EA2\uDCC0" + // 6960 - 6964
- "\u8EA2\uDCC1\u0000\u0000\u0000\uF3BC\u0000\u0000\u8EA2\uE1BB" + // 6965 - 6969
- "\u0000\uF6B8\u0000\uF6B6\u0000\uF6B7\u0000\uF6B5\u8EA2\uE5AC" + // 6970 - 6974
- "\u0000\uF8A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBC3" + // 6975 - 6979
- "\u8EA2\uEBC2\u8EA2\uEBC5\u8EA2\uEBC4\u0000\uFADD\u0000\u0000" + // 6980 - 6984
- "\u0000\u0000\u8EA2\uEDB9\u0000\u0000\u8EA2\uEDBB\u8EA2\uEDBA" + // 6985 - 6989
- "\u0000\uFBD2\u8EA2\uEEF5\u0000\u0000\u8EA2\uF0A6\u8EA2\uF0A7" + // 6990 - 6994
- "\u0000\uFCDC\u8EA2\uF1D3\u8EA2\uF1ED\u0000\uFDC2\u0000\u0000" + // 6995 - 6999
- "\u8EA2\uC1D5\u8EA2\uDCC2\u8EA2\uE1BC\u8EA2\uE8E2\u8EA2\uC8F5" + // 7000 - 7004
- "\u0000\u0000\u8EA2\uE1BD\u8EA2\uC8F4\u0000\u0000\u0000\uE7EE" + // 7005 - 7009
- "\u8EA2\uD6BB\u0000\u0000\u0000\u0000\u8EA2\uDCBC\u8EA2\uDCBD" + // 7010 - 7014
- "\u8EA2\uDCBB\u8EA2\uE1B7\u8EA2\uE1B6\u0000\uF6B3\u8EA2\uE5AB" + // 7015 - 7019
- "\u8EA2\uE1B8\u8EA2\uE5AA\u0000\u0000\u0000\u0000\u8EA2\uE8E0" + // 7020 - 7024
- "\u0000\uF9DD\u0000\uF9DF\u8EA2\uE8DF\u0000\u0000\u0000\u0000" + // 7025 - 7029
- "\u0000\uF9DE\u0000\u0000\u8EA2\uEBBF\u8EA2\uEBC1\u8EA2\uEBC0" + // 7030 - 7034
- "\u8EA2\uEDB8\u0000\uFBD1\u0000\u0000\u0000\uFCDB\u8EA2\uF0F6" + // 7035 - 7039
- "\u8EA2\uF1D2\u0000\u0000\u0000\u0000\u8EA2\uF2C1\u0000\uDEA7" + // 7040 - 7044
- "\u0000\u0000\u8EA2\uCFCD\u0000\u0000\u0000\uF0AB\u0000\u0000" + // 7045 - 7049
- "\u0000\u0000\u0000\u0000\u8EA2\uDCBF\u8EA2\uDCBE\u0000\u0000" + // 7050 - 7054
- "\u8EA2\uE1B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E0" + // 7055 - 7059
- "\u0000\uFADC\u8EA2\uEEF4\u8EA2\uF2B9\u0000\u0000\u0000\u0000" + // 7060 - 7064
- "\u0000\u0000\u0000\uDEA8\u0000\uEBFB\u0000\u0000\u0000\uF0AC" + // 7065 - 7069
- "\u0000\u0000\u8EAD\uA2B4\u8EAD\uA2B5\u8EAD\uA2B6\u8EAD\uA2B7" + // 7070 - 7074
- "\u8EAD\uA2B8\u8EAD\uA2B9\u8EAD\uA2BA\u8EAD\uA2BB\u8EAD\uA2BC" + // 7075 - 7079
- "\u8EAD\uA2BD\u8EAD\uA2BE\u8EAD\uA2BF\u8EAD\uA2C0\u8EAD\uA2C1" + // 7080 - 7084
- "\u8EAD\uA2C2\u8EAD\uA2C3\u8EAD\uA2C4\u8EAD\uA2C5\u8EAD\uA2C6" + // 7085 - 7089
- "\u8EAD\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7090 - 7094
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1A1\u8EAD\uA1A2" + // 7095 - 7099
- "\u8EAD\uA1A7\u8EAD\uA1A8\u0000\u0000\u0000\u0000\u8EAD\uA2C8" + // 7100 - 7104
- "\u8EAD\uA2C9\u8EAD\uA2CA\u8EAD\uA2CB\u8EAD\uA2CC\u8EAD\uA2CD" + // 7105 - 7109
- "\u8EAD\uA2CE\u8EAD\uA2CF\u8EAD\uA2D0\u8EAD\uA2D1\u8EAD\uA2D2" + // 7110 - 7114
- "\u8EAD\uA2D3\u8EAD\uA2D4\u8EAD\uA2D5\u8EAD\uA2D6\u8EAD\uA2D7" + // 7115 - 7119
- "\u8EAD\uA2D8\u8EAD\uA2D9\u8EAD\uA2DA\u8EAD\uA2DB\u8EAD\uA2DC" + // 7120 - 7124
- "\u8EAD\uA2DD\u8EAD\uA2DE\u8EAD\uA2DF\u8EAD\uA2E0\u8EAD\uA2E1" + // 7125 - 7129
- "\u8EAD\uA2E2\u8EAD\uA2E3\u8EAD\uA2E4\u8EAD\uA2E5\u8EAD\uA2E6" + // 7130 - 7134
- "\u8EA2\uF0F0\u8EA2\uF0F1\u8EA2\uF0EA\u8EA2\uF0ED\u8EA2\uF0F5" + // 7135 - 7139
- "\u8EA2\uF0EF\u8EA2\uF0EE\u8EA2\uF0EC\u0000\u0000\u8EA2\uF0F2" + // 7140 - 7144
- "\u0000\u0000\u8EA2\uF1CC\u0000\u0000\u8EA2\uF1CD\u0000\u0000" + // 7145 - 7149
- "\u8EA2\uF1CF\u8EA2\uF1CE\u8EA2\uF1D1\u8EA2\uF1D0\u8EA2\uF1EC" + // 7150 - 7154
- "\u8EA2\uF1EB\u8EA2\uF2A7\u0000\u0000\u8EA2\uF2A8\u0000\u0000" + // 7155 - 7159
- "\u8EA2\uF2B4\u0000\uFDC5\u0000\uFDC9\u0000\u0000\u8EA2\uF2BD" + // 7160 - 7164
- "\u0000\uFDCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7165 - 7169
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7170 - 7174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7175 - 7179
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7180 - 7184
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7185 - 7189
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7190 - 7194
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7195 - 7199
- "\u0000\u0000\u0000\uA2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 7200 - 7204
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7205 - 7209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7210 - 7214
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7215 - 7219
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7220 - 7224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7225 - 7229
- "\u0000\uCBD0\u0000\uE2CB\u0000\u0000\u0000\u0000\u0000\uE7A8" + // 7230 - 7234
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBBE\u0000\u0000" + // 7235 - 7239
- "\u0000\u0000\u0000\uF2D6\u0000\u0000\u0000\uF2D5\u0000\u0000" + // 7240 - 7244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9B0\u0000\uFAA9" + // 7245 - 7249
- "\u0000\uFBB3\u0000\uCBD1\u0000\uD8C9\u0000\uE7A9\u0000\u0000" + // 7250 - 7254
- "\u8EA2\uE7C7\u0000\uA8E3\u0000\u0000\u0000\u0000\u0000\u0000" + // 7255 - 7259
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7260 - 7264
- "\u0000\u0000\u8EA2\uA5A6\u8EA2\uE8CB\u8EA2\uE8C6\u8EA2\uE8D9" + // 7265 - 7269
- "\u0000\u0000\u8EA2\uE8C8\u8EA2\uE8D6\u8EA2\uE8CD\u8EA2\uE8DD" + // 7270 - 7274
- "\u8EA2\uE8C9\u0000\uF9D8\u8EA2\uE8C7\u8EA2\uE8CE\u8EA2\uE8CF" + // 7275 - 7279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBAD\u0000\u0000" + // 7280 - 7284
- "\u8EA2\uEBAB\u0000\u0000\u8EA2\uEBB0\u0000\u0000\u8EA2\uEBBC" + // 7285 - 7289
- "\u8EA2\uEBB3\u8EA2\uEBAC\u8EA2\uEBA8\u8EA2\uEBB5\u8EA2\uEBAE" + // 7290 - 7294
- "\u8EA2\uEBB1\u8EA2\uEBAA\u8EA2\uEBB8\u8EA2\uEBA7\u8EA2\uEBAF" + // 7295 - 7299
- "\u8EA2\uEBB4\u8EA2\uEBB6\u8EA2\uEBB9\u8EA2\uEBA9\u0000\u0000" + // 7300 - 7304
- "\u8EA2\uEBBD\u8EA2\uEBBE\u8EA2\uEBB7\u8EA2\uEBBB\u8EA2\uEBB2" + // 7305 - 7309
- "\u0000\u0000\u8EA2\uEDAF\u8EA2\uEDB2\u0000\u0000\u0000\uFBCD" + // 7310 - 7314
- "\u0000\u0000\u8EA2\uEDB1\u8EA2\uEDB6\u8EA2\uEDB4\u0000\uFBCE" + // 7315 - 7319
- "\u8EA2\uEDAB\u8EA2\uEDA1\u8EA2\uECFE\u0000\uFBD0\u8EA2\uEDAD" + // 7320 - 7324
- "\u8EA2\uEDAE\u8EA2\uEDAA\u8EA2\uEDA2\u0000\u0000\u8EA2\uEDA7" + // 7325 - 7329
- "\u8EA2\uEBBA\u8EA2\uE1B2\u8EA2\uE1A5\u8EA2\uE1AE\u8EA2\uE1AF" + // 7330 - 7334
- "\u0000\u0000\u8EA2\uE1AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 7335 - 7339
- "\u0000\u0000\u8EA2\uE4FC\u8EA2\uE4FE\u8EA2\uE5A3\u0000\u0000" + // 7340 - 7344
- "\u0000\u0000\u8EA2\uE4FB\u0000\u0000\u0000\uF8A5\u8EA2\uE5A5" + // 7345 - 7349
- "\u8EA2\uE4FA\u8EA2\uE5A6\u0000\u0000\u8EA2\uE5A2\u8EA2\uE5A4" + // 7350 - 7354
- "\u8EA2\uE5A8\u8EA2\uE5A1\u8EA2\uE5A9\u8EA2\uE4FD\u8EA2\uE4F9" + // 7355 - 7359
- "\u0000\uF8A6\u0000\u0000\u8EA2\uE5A7\u0000\uF8A7\u0000\uF9D9" + // 7360 - 7364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7365 - 7369
- "\u8EA2\uE1A6\u8EA2\uE8DE\u8EA2\uE8D5\u0000\uF9DB\u8EA2\uE8D1" + // 7370 - 7374
- "\u0000\uF9DC\u0000\u0000\u0000\u0000\u8EA2\uE8DA\u8EA2\uE8D4" + // 7375 - 7379
- "\u8EA2\uE8CA\u0000\uF9DA\u8EA2\uE8D7\u8EA2\uE8D2\u8EA2\uE8D3" + // 7380 - 7384
- "\u0000\u0000\u8EA2\uE8C5\u8EA2\uE8CC\u8EA2\uE8DB\u0000\u0000" + // 7385 - 7389
- "\u8EA2\uE8D8\u0000\u0000\u8EA2\uE8D0\u0000\u0000\u8EA2\uE8DC" + // 7390 - 7394
- "\u8EA2\uD6B5\u0000\u0000\u0000\u0000\u0000\uF0AA\u8EA2\uD6BA" + // 7395 - 7399
- "\u8EA2\uD6B9\u0000\uF0A8\u8EA2\uD6B4\u8EA2\uD6B8\u0000\uF0A9" + // 7400 - 7404
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7405 - 7409
- "\u0000\u0000\u8EA2\uDCB8\u0000\u0000\u0000\uF3BA\u0000\u0000" + // 7410 - 7414
- "\u8EA2\uDCB3\u0000\uF3B6\u0000\u0000\u8EA2\uDCB0\u8EA2\uDCB6" + // 7415 - 7419
- "\u8EA2\uDCB9\u0000\u0000\u0000\uF3BB\u0000\u0000\u8EA2\uDCB5" + // 7420 - 7424
- "\u8EA2\uDCB2\u8EA2\uDCBA\u8EA2\uDCB1\u0000\u0000\u8EA2\uDCB7" + // 7425 - 7429
- "\u0000\uF3B7\u0000\u0000\u8EA2\uDCAF\u0000\uF3B8\u0000\u0000" + // 7430 - 7434
- "\u0000\uF3B9\u8EA2\uDCB4\u0000\u0000\u0000\u0000\u0000\u0000" + // 7435 - 7439
- "\u8EA2\uE1B5\u8EA2\uE1A8\u8EA2\uE1A9\u8EA2\uE1AC\u8EA2\uE1AA" + // 7440 - 7444
- "\u0000\u0000\u8EA2\uE1A4\u0000\u0000\u0000\u0000\u8EA2\uE1A7" + // 7445 - 7449
- "\u8EA2\uE1B1\u8EA2\uE1AB\u0000\u0000\u0000\u0000\u0000\uF6B1" + // 7450 - 7454
- "\u0000\u0000\u8EA2\uE1B3\u8EA2\uE1B0\u0000\uF6B2\u8EA2\uEAFE" + // 7455 - 7459
- "\u8EA2\uEEDD\u0000\u0000\u0000\u0000\u8EA2\uEEDA\u0000\u0000" + // 7460 - 7464
- "\u8EA2\uEED7\u0000\u0000\u8EA2\uEED8\u0000\uFCAA\u8EA2\uEFE8" + // 7465 - 7469
- "\u8EA2\uEFEA\u8EA2\uEFED\u8EA2\uEFE9\u8EA2\uEFEE\u0000\u0000" + // 7470 - 7474
- "\u8EA2\uEFE7\u0000\u0000\u8EA2\uEFE5\u0000\u0000\u0000\uFCD7" + // 7475 - 7479
- "\u8EA2\uEFEB\u0000\uFCD9\u0000\uFCD8\u8EA2\uEFE6\u8EA2\uEFEC" + // 7480 - 7484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF0E8" + // 7485 - 7489
- "\u0000\uFCF8\u8EA2\uF0E9\u0000\u0000\u8EA2\uF0E7\u8EA2\uF0E4" + // 7490 - 7494
- "\u0000\u0000\u0000\u0000\u8EA2\uF0E6\u8EA2\uF0E5\u8EA2\uF1C9" // 7495 - 7499
- ;
-
- index2a =
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1CB" + // 7500 - 7504
- "\u8EA2\uF1CA\u0000\u0000\u0000\u0000\u8EA2\uF1E9\u0000\u0000" + // 7505 - 7509
- "\u8EA2\uF1E8\u8EA2\uF1E7\u8EA2\uF1EA\u0000\u0000\u0000\uFDC0" + // 7510 - 7514
- "\u0000\uFDC1\u8EA2\uF2B8\u8EA2\uF2BC\u0000\u0000\u0000\u0000" + // 7515 - 7519
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBAA\u8EA2\uBBA7" + // 7520 - 7524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7525 - 7529
- "\u8EA2\uBBA8\u8EA2\uBBAB\u8EA2\uBBAF\u0000\u0000\u8EA2\uB4E6" + // 7530 - 7534
- "\u8EA2\uBBB1\u8EA2\uC2CD\u0000\u0000\u0000\uDEE8\u8EA2\uBBB2" + // 7535 - 7539
- "\u8EA2\uBAF8\u8EA2\uBBA4\u0000\u0000\u8EA2\uBBA9\u0000\u0000" + // 7540 - 7544
- "\u0000\u0000\u0000\uDEE6\u0000\uDEE9\u8EA2\uBBB0\u8EA2\uBBB3" + // 7545 - 7549
- "\u8EA2\uBAFC\u8EA2\uBAF9\u0000\u0000\u0000\u0000\u8EA2\uBAFB" + // 7550 - 7554
- "\u0000\u0000\u0000\u0000\u8EA2\uBBA2\u8EA2\uBAFE\u0000\uDEEA" + // 7555 - 7559
- "\u0000\u0000\u8EA2\uBBAC\u0000\u0000\u0000\u0000\u8EA2\uBBA3" + // 7560 - 7564
- "\u0000\u0000\u8EA2\uBBA5\u8EA2\uBAF7\u8EA2\uC2C1\u8EA2\uC2BF" + // 7565 - 7569
- "\u0000\uE3E8\u0000\uE3E6\u8EA2\uC2C9\u8EA2\uC2C0\u8EA2\uC2CA" + // 7570 - 7574
- "\u8EA2\uC2C6\u8EA2\uC2BE\u8EA2\uC2CC\u8EA2\uC2BD\u8EA2\uC2C4" + // 7575 - 7579
- "\u0000\uE3E5\u0000\uE3E4\u0000\uE3E3\u8EA2\uC2C2\u0000\uF8A4" + // 7580 - 7584
- "\u8EA2\uE4F1\u0000\u0000\u8EA2\uE4EF\u8EA2\uE4F6\u0000\u0000" + // 7585 - 7589
- "\u8EA2\uE4EE\u8EA2\uE4ED\u0000\uF8A3\u0000\uF8A1\u0000\uF7FE" + // 7590 - 7594
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7595 - 7599
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F4\u8EA2\uE8BC" + // 7600 - 7604
- "\u8EA2\uE8C2\u0000\uF9D6\u8EA2\uE8BD\u0000\u0000\u8EA2\uE8C0" + // 7605 - 7609
- "\u8EA2\uE8C4\u0000\uF9D7\u8EA2\uE8BF\u0000\u0000\u8EA2\uE8B7" + // 7610 - 7614
- "\u0000\u0000\u8EA2\uE8B6\u8EA2\uE8C3\u8EA2\uE8BA\u0000\u0000" + // 7615 - 7619
- "\u8EA2\uE8B8\u8EA2\uE8C1\u8EA2\uE8B9\u0000\uF9D5\u0000\uF9D4" + // 7620 - 7624
- "\u0000\u0000\u8EA2\uE8B4\u8EA2\uE8B5\u8EA2\uE8BE\u0000\u0000" + // 7625 - 7629
- "\u0000\u0000\u0000\u0000\u8EA2\uE8BB\u0000\u0000\u0000\u0000" + // 7630 - 7634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFA" + // 7635 - 7639
- "\u8EA2\uEAFD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7640 - 7644
- "\u0000\uF8A2\u0000\u0000\u0000\u0000\u8EA2\uD0A6\u8EA2\uD0A4" + // 7645 - 7649
- "\u8EA2\uD0A2\u0000\u0000\u8EA2\uD0A8\u0000\u0000\u8EA2\uD0A7" + // 7650 - 7654
- "\u0000\uECCD\u0000\uECC8\u0000\u0000\u0000\uECCA\u0000\uECCC" + // 7655 - 7659
- "\u0000\u0000\u0000\u0000\u8EA2\uD0A9\u8EA2\uD6E1\u0000\u0000" + // 7660 - 7664
- "\u0000\u0000\u8EA2\uD6E0\u8EA2\uD6DF\u0000\u0000\u8EA2\uD6E2" + // 7665 - 7669
- "\u8EA2\uD6DB\u0000\u0000\u8EA2\uD6DC\u8EA2\uD6E4\u8EA2\uD6DD" + // 7670 - 7674
- "\u0000\u0000\u0000\uF0CE\u8EA2\uD6E6\u0000\u0000\u8EA2\uD6E5" + // 7675 - 7679
- "\u8EA2\uD6DE\u0000\u0000\u8EA2\uDCDD\u0000\uF3D1\u8EA2\uDCDB" + // 7680 - 7684
- "\u8EA2\uDCE0\u8EA2\uDCDF\u8EA2\uD6E3\u0000\u0000\u0000\uF3D0" + // 7685 - 7689
- "\u0000\u0000\u8EA2\uDCDE\u8EA2\uDCDA\u8EA2\uDCE2\u8EA2\uDCE1" + // 7690 - 7694
- "\u0000\uF3CF\u0000\u0000\u8EA2\uDCDC\u0000\u0000\u0000\uF0CF" + // 7695 - 7699
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C0\u0000\u0000" + // 7700 - 7704
- "\u0000\u0000\u0000\u0000\u8EA2\uE1CD\u8EA2\uE5C6\u8EA2\uE5C7" + // 7705 - 7709
- "\u8EA2\uE5C8\u8EA2\uDCA1\u0000\u0000\u8EA2\uDCA7\u0000\u0000" + // 7710 - 7714
- "\u0000\u0000\u8EA2\uDCA2\u8EA2\uE0FE\u8EA2\uDCA3\u8EA2\uDCAE" + // 7715 - 7719
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7720 - 7724
- "\u0000\u0000\u0000\u0000\u8EA2\uDCAA\u0000\uF3B5\u8EA2\uDCA9" + // 7725 - 7729
- "\u8EA2\uDCA8\u0000\u0000\u8EA2\uDCAC\u0000\u0000\u0000\u0000" + // 7730 - 7734
- "\u0000\u0000\u0000\u0000\u8EA2\uE0F6\u8EA2\uE0F9\u0000\u0000" + // 7735 - 7739
- "\u0000\u0000\u8EA2\uE0F8\u0000\u0000\u8EA2\uE1A2\u8EA2\uE0FB" + // 7740 - 7744
- "\u8EA2\uE1A1\u0000\u0000\u8EA2\uE0FD\u8EA2\uE0FC\u8EA2\uE0FA" + // 7745 - 7749
- "\u0000\u0000\u8EA2\uE0F7\u0000\u0000\u0000\uF6AF\u0000\uF6AE" + // 7750 - 7754
- "\u0000\u0000\u0000\uF6B0\u0000\uF6AD\u8EA2\uE1A3\u0000\u0000" + // 7755 - 7759
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F2" + // 7760 - 7764
- "\u8EA2\uE4F5\u0000\u0000\u8EA2\uE4F3\u8EA2\uE4F7\u0000\u0000" + // 7765 - 7769
- "\u0000\u0000\u0000\u0000\u8EA2\uE4F8\u0000\u0000\u8EA2\uE4F0" + // 7770 - 7774
- "\u8EA2\uE4E3\u0000\uF7F8\u8EA2\uE8AE\u0000\u0000\u0000\u0000" + // 7775 - 7779
- "\u0000\u0000\u8EA2\uEAF4\u8EA2\uEAF2\u0000\u0000\u0000\u0000" + // 7780 - 7784
- "\u8EA2\uEAF3\u0000\u0000\u0000\u0000\u8EA2\uECEE\u0000\u0000" + // 7785 - 7789
- "\u0000\uFBC8\u8EA2\uEED1\u0000\uFCD6\u0000\uFCA8\u0000\uFCD4" + // 7790 - 7794
- "\u0000\uFCD5\u8EA2\uF0E2\u0000\uFDAF\u0000\u0000\u0000\uD8ED" + // 7795 - 7799
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4E4\u0000\u0000" + // 7800 - 7804
- "\u0000\u0000\u8EA2\uB3CC\u0000\u0000\u0000\uE7EC\u0000\u0000" + // 7805 - 7809
- "\u8EA2\uCFC3\u0000\u0000\u0000\u0000\u0000\uEBF5\u8EA2\uCFC4" + // 7810 - 7814
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5FD\u8EA2\uD5FC" + // 7815 - 7819
- "\u0000\uF3B3\u0000\uF0A1\u0000\uF0A2\u0000\u0000\u8EA2\uD6A2" + // 7820 - 7824
- "\u8EA2\uD6A1\u8EA2\uD5FE\u0000\u0000\u0000\u0000\u8EA2\uDBFA" + // 7825 - 7829
- "\u8EA2\uDBFD\u0000\u0000\u8EA2\uDBFC\u8EA2\uDBFB\u0000\uF3B2" + // 7830 - 7834
- "\u8EA2\uE0F4\u8EA2\uE0F2\u8EA2\uE0F1\u0000\u0000\u0000\uA1A1" + // 7835 - 7839
- "\u0000\uA1A3\u0000\uA1A4\u0000\uA1F1\u0000\u0000\u8EAD\uA1AB" + // 7840 - 7844
- "\u8EAD\uA1AC\u8EAD\uA1AD\u0000\uA1D2\u0000\uA1D3\u0000\uA1CE" + // 7845 - 7849
- "\u0000\uA1CF\u0000\uA1D6\u0000\uA1D7\u0000\uA1DA\u0000\uA1DB" + // 7850 - 7854
- "\u0000\uA1CA\u0000\uA1CB\u0000\uA2E5\u8EAD\uA1B5\u0000\uA1C6" + // 7855 - 7859
- "\u0000\uA1C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7860 - 7864
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E8\u0000\uA1E9" + // 7865 - 7869
- "\u0000\u0000\u0000\u0000\u0000\uA4B5\u0000\uA4B6\u0000\uA4B7" + // 7870 - 7874
- "\u0000\uA4B8\u0000\uA4B9\u0000\uA4BA\u0000\uA4BB\u0000\uA4BC" + // 7875 - 7879
- "\u0000\uA4BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7880 - 7884
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7885 - 7889
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7890 - 7894
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7895 - 7899
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAFEE\u0000\uD6AE" + // 7900 - 7904
- "\u8EA2\uAFEF\u0000\u0000\u8EA2\uAFE3\u0000\uD6A3\u0000\uD6AF" + // 7905 - 7909
- "\u0000\u0000\u8EA2\uAFDC\u0000\u0000\u8EA2\uAFE5\u8EA2\uAFED" + // 7910 - 7914
- "\u0000\u0000\u8EA2\uAFDB\u8EA2\uAFF6\u0000\uD5F7\u0000\u0000" + // 7915 - 7919
- "\u0000\u0000\u0000\u0000\u8EA2\uAFF5\u8EA2\uAFF0\u0000\u0000" + // 7920 - 7924
- "\u8EA2\uAFF1\u0000\uD6A1\u0000\uD6AC\u8EA2\uAFE7\u0000\u0000" + // 7925 - 7929
- "\u8EA2\uAFE8\u8EA2\uAFF2\u8EA2\uAFE9\u0000\u0000\u8EA2\uAFE4" + // 7930 - 7934
- "\u8EA2\uAFDE\u8EA2\uAFDF\u8EA2\uAFEC\u8EA2\uAFE6\u0000\u0000" + // 7935 - 7939
- "\u0000\u0000\u0000\uD5F8\u0000\uD5FC\u8EA2\uAFF4\u8EA2\uAFE0" + // 7940 - 7944
- "\u0000\uD6AA\u0000\uD6A6\u0000\u0000\u0000\u0000\u8EA2\uACFC" + // 7945 - 7949
- "\u0000\uD3AA\u0000\uD3AB\u8EA2\uACFE\u0000\u0000\u8EA2\uACF8" + // 7950 - 7954
- "\u8EA2\uACFB\u8EA2\uADA6\u8EA2\uADA4\u0000\u0000\u0000\uD3AC" + // 7955 - 7959
- "\u8EA2\uADAA\u0000\uD3AF\u8EA2\uADA7\u8EA2\uACFD\u8EA2\uACFA" + // 7960 - 7964
- "\u0000\u0000\u0000\u0000\u8EA2\uBFAE\u8EA2\uADA5\u0000\uD3A7" + // 7965 - 7969
- "\u8EA2\uADA8\u8EA2\uACF7\u8EA2\uADA2\u0000\uD3A9\u0000\uD3AE" + // 7970 - 7974
- "\u8EA2\uADA3\u0000\uD3B2\u0000\uD3B0\u0000\u0000\u8EA2\uACF9" + // 7975 - 7979
- "\u0000\uD3AD\u0000\u0000\u8EA2\uADA1\u0000\uD3B1\u0000\uD3A8" + // 7980 - 7984
- "\u8EA2\uADA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7985 - 7989
- "\u0000\u0000\u0000\u0000\u0000\uD7DE\u0000\u0000\u0000\uD7E7" + // 7990 - 7994
- "\u0000\uD7DC\u0000\uD7DA\u8EA2\uB2AE\u0000\uD7E2\u0000\uD7DF" + // 7995 - 7999
- "\u8EA2\uB2B0\u0000\u0000\u0000\u0000\u0000\uD7E1\u8EA2\uB2AF" + // 8000 - 8004
- "\u8EA2\uB2AD\u8EA2\uB2B2\u0000\uD7E6\u0000\uD7E4\u8EA2\uBFAD" + // 8005 - 8009
- "\u0000\u0000\u8EA2\uAAE8\u0000\u0000\u8EA2\uAAE9\u0000\u0000" + // 8010 - 8014
- "\u0000\uD1CA\u8EA2\uAFD0\u0000\u0000\u0000\uD5E6\u0000\uD5E7" + // 8015 - 8019
- "\u8EA2\uAFCF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8020 - 8024
- "\u0000\uDAF7\u0000\u0000\u0000\uDAF3\u0000\u0000\u8EA2\uB5E9" + // 8025 - 8029
- "\u0000\uDAFA\u0000\uDAF9\u0000\uDAF2\u0000\uDAF5\u0000\uDAF8" + // 8030 - 8034
- "\u0000\uDAF4\u0000\u0000\u0000\u0000\u8EA2\uBCBB\u0000\uDAF1" + // 8035 - 8039
- "\u0000\uDFD4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD6" + // 8040 - 8044
- "\u0000\uDFD7\u8EA2\uBCBA\u8EA2\uBCBD\u0000\uDFD5\u8EA2\uBCB8" + // 8045 - 8049
- "\u8EA2\uBCBC\u0000\u0000\u8EA2\uBCB9\u0000\u0000\u0000\uE4B9" + // 8050 - 8054
- "\u0000\u0000\u0000\u0000\u8EA2\uC3C2\u0000\u0000\u0000\u0000" + // 8055 - 8059
- "\u0000\uE8FD\u8EA2\uCADB\u0000\uF0EC\u0000\uEDAE\u8EA2\uD0E4" + // 8060 - 8064
- "\u0000\uEDAF\u0000\uEDB0\u8EA2\uD0E6\u8EA2\uD0E5\u8EA2\uD0E7" + // 8065 - 8069
- "\u8EA2\uD7BC\u0000\u0000\u0000\u0000\u8EA2\uD7BB\u0000\uFBC6" + // 8070 - 8074
- "\u8EA2\uECEB\u8EA2\uECEA\u0000\uFBC5\u8EA2\uECE9\u0000\uFBC4" + // 8075 - 8079
- "\u8EA2\uECE8\u0000\u0000\u8EA2\uEECC\u8EA2\uEECE\u8EA2\uEECD" + // 8080 - 8084
- "\u0000\u0000\u8EA2\uEECA\u0000\uFCA7\u8EA2\uEEC7\u8EA2\uEECB" + // 8085 - 8089
- "\u8EA2\uEED0\u0000\u0000\u8EA2\uEECF\u8EA2\uEEC8\u8EA2\uEEC9" + // 8090 - 8094
- "\u0000\uFCA6\u8EA2\uEFE0\u0000\uFCD3\u0000\u0000\u8EA2\uEFE1" + // 8095 - 8099
- "\u0000\uFCD1\u0000\uFCD2\u0000\u0000\u0000\u0000\u8EA2\uF0E1" + // 8100 - 8104
- "\u0000\uFCF5\u8EA2\uF1E5\u0000\u0000\u0000\uFDB7\u0000\u0000" + // 8105 - 8109
- "\u8EA2\uF2A3\u0000\uFDB8\u8EA2\uF2A4\u8EA2\uF2A5\u8EA2\uF2B3" + // 8110 - 8114
- "\u8EA2\uF2B2\u0000\uFDC7\u8EA2\uF2BB\u0000\u0000\u0000\u0000" + // 8115 - 8119
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8120 - 8124
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8125 - 8129
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8130 - 8134
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2F5\u0000\uA2F6" + // 8135 - 8139
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8140 - 8144
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8145 - 8149
- "\u0000\u0000\u0000\u0000\u0000\uA2F0\u0000\uA2F1\u0000\uA2F2" + // 8150 - 8154
- "\u0000\u0000\u0000\u0000\u0000\uA2F4\u0000\u0000\u0000\u0000" + // 8155 - 8159
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8160 - 8164
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8165 - 8169
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8170 - 8174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8175 - 8179
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8180 - 8184
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8185 - 8189
- "\u0000\uA2E6\u0000\uA2E7\u8EAD\uA4C0\u0000\uA2A4\u8EAD\uA4C1" + // 8190 - 8194
- "\u0000\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8195 - 8199
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8200 - 8204
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8205 - 8209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8210 - 8214
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8215 - 8219
- "\u0000\u0000\u0000\u0000\u8EAD\uA1BE\u0000\u0000\u8EAD\uA1BF" + // 8220 - 8224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8225 - 8229
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8230 - 8234
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8235 - 8239
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4BD\u0000\u0000" + // 8240 - 8244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8245 - 8249
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8250 - 8254
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8255 - 8259
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8260 - 8264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1C2\u0000\u0000" + // 8265 - 8269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8270 - 8274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8275 - 8279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8280 - 8284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8285 - 8289
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8290 - 8294
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8295 - 8299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8300 - 8304
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8305 - 8309
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8310 - 8314
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C4\u0000\u0000" + // 8315 - 8319
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8320 - 8324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8325 - 8329
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDB1\u0000\uE0C6" + // 8330 - 8334
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4C7\u8EA2\uC4C6" + // 8335 - 8339
- "\u8EA2\uC4AC\u0000\uE4E3\u0000\u0000\u8EA2\uC4C5\u8EA2\uC4AF" + // 8340 - 8344
- "\u8EA2\uC4B0\u0000\u0000\u0000\uE4ED\u8EA2\uC4CE\u0000\uE4E8" + // 8345 - 8349
- "\u8EA2\uC4C4\u0000\u0000\u8EA2\uC4A9\u0000\uE4EE\u0000\uE4E4" + // 8350 - 8354
- "\u8EA2\uC4B8\u8EA2\uC4AE\u8EA2\uC4B1\u8EA2\uC4C9\u0000\uE4DE" + // 8355 - 8359
- "\u8EA2\uC4D0\u8EA2\uC4C8\u0000\uE4E7\u8EA2\uC4BD\u0000\uE4F2" + // 8360 - 8364
- "\u0000\u0000\u0000\u0000\u0000\uE4F1\u0000\uE4EB\u0000\u0000" + // 8365 - 8369
- "\u0000\u0000\u8EA2\uC4CF\u0000\uE4DF\u8EA2\uC4BB\u8EA2\uC4B2" + // 8370 - 8374
- "\u8EA2\uC4BF\u8EA2\uC4CB\u0000\uE4F3\u0000\u0000\u0000\uE4E1" + // 8375 - 8379
- "\u8EA2\uC4BA\u8EAD\uA4CB\u8EA2\uC4B3\u0000\uE4EA\u0000\u0000" + // 8380 - 8384
- "\u0000\uE4E9\u8EA2\uC4B6\u8EA2\uC4C0\u8EA2\uC4CA\u8EA2\uCFB7" + // 8385 - 8389
- "\u0000\u0000\u8EA2\uCFB6\u0000\uEBEE\u0000\u0000\u0000\uEBEF" + // 8390 - 8394
- "\u0000\u0000\u8EA2\uCFB8\u8EA2\uD5E8\u0000\uEBF1\u0000\uEFF2" + // 8395 - 8399
- "\u0000\u0000\u0000\uEBF0\u0000\u0000\u0000\u0000\u0000\u0000" + // 8400 - 8404
- "\u0000\uF3A7\u8EA2\uD5EA\u0000\uEFF4\u0000\uEFF3\u8EA2\uD5EB" + // 8405 - 8409
- "\u8EA2\uD5EE\u8EA2\uD5EC\u8EA2\uD5ED\u0000\uEFF5\u0000\u0000" + // 8410 - 8414
- "\u0000\uF3AC\u0000\uF3AA\u0000\u0000\u0000\u0000\u0000\uF3A9" + // 8415 - 8419
- "\u8EA2\uDBE9\u0000\u0000\u0000\uF3AB\u0000\u0000\u0000\u0000" + // 8420 - 8424
- "\u8EA2\uDBE8\u8EA2\uE0D7\u0000\u0000\u8EA2\uDBEA\u0000\uF3A8" + // 8425 - 8429
- "\u8EA2\uDBEB\u8EA2\uE0DA\u8EA2\uE0D8\u8EA2\uE0D9\u8EA2\uE0DE" + // 8430 - 8434
- "\u0000\uF7F5\u8EA2\uE0DD\u8EA2\uE0E0\u8EA2\uE0DF\u8EA2\uE0DC" + // 8435 - 8439
- "\u8EA2\uE0DB\u0000\u0000\u0000\uF6AA\u0000\u0000\u0000\u0000" + // 8440 - 8444
- "\u0000\u0000\u0000\u0000\u8EA2\uE4D8\u0000\u0000\u8EA2\uE4D7" + // 8445 - 8449
- "\u0000\uF7F4\u0000\uF7F2\u0000\uF7F3\u8EA2\uECE3\u8EA2\uEAE0" + // 8450 - 8454
- "\u8EA2\uEAE1\u0000\u0000\u0000\uFAD1\u0000\u0000\u8EA2\uECE2" + // 8455 - 8459
- "\u0000\u0000\u0000\u0000\u8EA2\uECE1\u0000\u0000\u8EA2\uEEC4" + // 8460 - 8464
- "\u8EA2\uF1FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8465 - 8469
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8470 - 8474
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8475 - 8479
- "\u0000\uD3F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FA" + // 8480 - 8484
- "\u0000\u0000\u0000\u0000\u0000\uD8EA\u8EA2\uB3CB\u0000\u0000" + // 8485 - 8489
- "\u8EA2\uBAB3\u0000\u0000\u0000\uE2FD\u0000\u0000\u0000\uE3A2" + // 8490 - 8494
- "\u0000\uE2FE\u8EA2\uC1D3\u0000\u0000\u0000\uE3A4\u0000\u0000" + // 8495 - 8499
- "\u0000\uE3A1\u0000\u0000\u0000\u0000\u0000\uE3A3\u0000\u0000" + // 8500 - 8504
- "\u0000\uE7E6\u0000\u0000\u8EA2\uC8E8\u0000\u0000\u0000\u0000" + // 8505 - 8509
- "\u8EA2\uC8E9\u8EA2\uD5E9\u0000\u0000\u0000\uE7E5\u0000\uE7E7" + // 8510 - 8514
- "\u0000\uE7E8\u0000\u0000\u0000\uA2D1\u0000\u0000\u0000\uA2D2" + // 8515 - 8519
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8520 - 8524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8525 - 8529
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8530 - 8534
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8535 - 8539
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8540 - 8544
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8545 - 8549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8550 - 8554
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CE" + // 8555 - 8559
- "\u0000\u0000\u0000\u0000\u8EAD\uA1CD\u0000\u0000\u8EAD\uA1CC" + // 8560 - 8564
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8565 - 8569
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8570 - 8574
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8575 - 8579
- "\u0000\u0000\u8EA2\uBAE9\u8EA2\uC2AE\u0000\uE3DB\u0000\uE3DE" + // 8580 - 8584
- "\u0000\uE3D9\u8EA2\uC2AD\u8EA2\uC2B1\u8EA2\uC2AC\u0000\u0000" + // 8585 - 8589
- "\u0000\uE3D3\u0000\uE3DD\u8EA2\uC2A9\u0000\uE3D7\u8EA2\uC2B0" + // 8590 - 8594
- "\u0000\u0000\u0000\uE3D5\u0000\uE3D4\u8EA2\uC2B3\u0000\uE3D6" + // 8595 - 8599
- "\u8EA2\uC2B5\u0000\u0000\u8EA2\uC2B2\u0000\uE3D2\u0000\u0000" + // 8600 - 8604
- "\u0000\u0000\u0000\u0000\u0000\uE3DC\u8EA2\uC2B7\u8EA2\uC2AB" + // 8605 - 8609
- "\u8EA2\uC2B4\u0000\u0000\u0000\u0000\u8EA2\uC2AA\u0000\u0000" + // 8610 - 8614
- "\u0000\u0000\u0000\uE3D8\u0000\u0000\u0000\uE3DA\u0000\u0000" + // 8615 - 8619
- "\u8EA2\uC2AF\u0000\u0000\u8EA2\uC2B8\u0000\u0000\u0000\u0000" + // 8620 - 8624
- "\u8EA2\uC9C4\u0000\uE8B8\u8EA2\uC9CA\u0000\u0000\u0000\u0000" + // 8625 - 8629
- "\u0000\uE8BD\u8EA2\uC9C6\u8EA2\uC9CD\u8EA2\uC9BE\u0000\uE8BF" + // 8630 - 8634
- "\u0000\uE8B9\u8EA2\uC9C3\u8EA2\uEFDF\u0000\uD3F7\u0000\uDEA1" + // 8635 - 8639
- "\u0000\uDEA2\u8EA2\uBAB2\u0000\uE2FA\u0000\uE2FB\u8EA2\uC1D1" + // 8640 - 8644
- "\u0000\uE2FC\u0000\u0000\u0000\uE7E2\u0000\u0000\u0000\uE7E4" + // 8645 - 8649
- "\u8EA2\uC8E5\u8EA2\uC8E6\u8EA2\uC8E4\u0000\uE7DF\u0000\uE7E0" + // 8650 - 8654
- "\u0000\uE7E3\u0000\uE7E1\u0000\u0000\u0000\u0000\u8EA2\uCFB3" + // 8655 - 8659
- "\u0000\uEBEA\u0000\uEBEB\u0000\u0000\u0000\u0000\u8EA2\uD5E5" + // 8660 - 8664
- "\u0000\uEFF0\u8EA2\uD5E0\u8EA2\uD5DF\u0000\u0000\u8EA2\uD5E4" + // 8665 - 8669
- "\u0000\uEFEE\u0000\u0000\u0000\u0000\u0000\uF3A6\u0000\u0000" + // 8670 - 8674
- "\u8EA2\uD5E1\u8EA2\uD5E6\u8EA2\uD5E3\u8EA2\uD5E2\u0000\u0000" + // 8675 - 8679
- "\u0000\uEFEF\u0000\u0000\u0000\uF3A4\u0000\u0000\u8EA2\uDBE6" + // 8680 - 8684
- "\u0000\uF2FE\u0000\u0000\u8EA2\uDBE7\u0000\u0000\u0000\u0000" + // 8685 - 8689
- "\u8EA2\uDBE5\u0000\u0000\u0000\uF3A3\u0000\uF3A1\u0000\uF3A5" + // 8690 - 8694
- "\u0000\u0000\u0000\uF3A2\u0000\u0000\u0000\u0000\u0000\u0000" + // 8695 - 8699
- "\u0000\u0000\u8EA2\uA1A1\u0000\uC4A5\u0000\u0000\u0000\uC4BC" + // 8700 - 8704
- "\u0000\u0000\u8EA2\uA1A8\u0000\uC4BD\u0000\u0000\u0000\u0000" + // 8705 - 8709
- "\u0000\uC4E6\u0000\u0000\u0000\uC5E5\u0000\uC5E7\u0000\uC5E6" + // 8710 - 8714
- "\u0000\u0000\u0000\u0000\u0000\uC7A4\u0000\uC7A5\u0000\u0000" + // 8715 - 8719
- "\u0000\u0000\u0000\uCBE5\u0000\u0000\u0000\uD3FD\u0000\uC4A2" + // 8720 - 8724
- "\u0000\u0000\u0000\u0000\u8EA2\uA1A2\u0000\uC4A6\u0000\uC4BF" + // 8725 - 8729
- "\u0000\uC4BE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8730 - 8734
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8735 - 8739
- "\u0000\uC7A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8740 - 8744
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8745 - 8749
- "\u0000\uCBE6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8750 - 8754
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8755 - 8759
- "\u0000\u0000\u0000\uD8F1\u8EA2\uB3CE\u8EA2\uCFAB\u8EA2\uCFAF" + // 8760 - 8764
- "\u8EA2\uCFAC\u8EA2\uCFAA\u8EA2\uCFAE\u0000\uEBE8\u0000\u0000" + // 8765 - 8769
- "\u0000\u0000\u8EA2\uD5DC\u0000\u0000\u8EA2\uD5DA\u0000\uEFEC" + // 8770 - 8774
- "\u0000\u0000\u0000\uEFEB\u8EA2\uD5DB\u0000\uEFED\u0000\u0000" + // 8775 - 8779
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBE2\u0000\u0000" + // 8780 - 8784
- "\u0000\u0000\u8EA2\uDBE1\u0000\uF2FD\u8EA2\uDBE0\u8EA2\uE0C9" + // 8785 - 8789
- "\u0000\u0000\u8EA2\uE0CB\u8EA2\uE0CD\u8EA2\uE0CC\u0000\u0000" + // 8790 - 8794
- "\u0000\uF6A6\u8EA2\uE0CA\u8EA2\uE4CB\u0000\uF7E8\u8EA2\uE4C9" + // 8795 - 8799
- "\u8EA2\uE4CC\u0000\uF7E9\u0000\u0000\u8EA2\uE4C7\u0000\u0000" + // 8800 - 8804
- "\u8EA2\uE4CA\u8EA2\uE4C8\u8EA2\uE4C5\u0000\uF7EA\u8EA2\uE4C6" + // 8805 - 8809
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7EC" + // 8810 - 8814
- "\u0000\u0000\u0000\u0000\u8EA2\uE7EE\u8EA2\uE7ED\u0000\u0000" + // 8815 - 8819
- "\u8EA2\uEAD8\u0000\u0000\u8EA2\uEAD9\u0000\u0000\u0000\u0000" + // 8820 - 8824
- "\u0000\u0000\u8EA2\uECDE\u0000\uEBE6\u0000\u0000\u8EA2\uD5D8" + // 8825 - 8829
- "\u0000\u0000\u0000\uEFE6\u8EA2\uD5D6\u0000\uEFE7\u0000\uEFE8" + // 8830 - 8834
- "\u8EA2\uD5D7\u0000\uEFE9\u0000\u0000\u8EA2\uDBDD\u0000\u0000" + // 8835 - 8839
- "\u0000\uF2F7\u0000\uF2F4\u0000\uF2F9\u8EA2\uDBDF\u0000\uF2F5" + // 8840 - 8844
- "\u8EA2\uDBDE\u0000\uF2F8\u0000\u0000\u0000\u0000\u0000\uF2F6" + // 8845 - 8849
- "\u0000\u0000\u8EA2\uE0C6\u8EA2\uE0C8\u0000\u0000\u0000\u0000" + // 8850 - 8854
- "\u0000\uF6A4\u8EA2\uE0C7\u0000\uF6A5\u8EA2\uE0C5\u8EA2\uE0C4" + // 8855 - 8859
- "\u0000\u0000\u8EA2\uE4C3\u8EA2\uE4C2\u0000\uF7E7\u8EA2\uE4C4" + // 8860 - 8864
- "\u8EA2\uE7EB\u0000\uF9C7\u8EA2\uE7EA\u8EA2\uE7E7\u0000\uF9C6" + // 8865 - 8869
- "\u8EA2\uE7E8\u8EA2\uE7E9\u0000\u0000\u8EA2\uEAD6\u8EA2\uEAD7" + // 8870 - 8874
- "\u0000\uFAD0\u0000\u0000\u0000\uFBBF\u0000\u0000\u0000\u0000" + // 8875 - 8879
- "\u8EA2\uECDC\u0000\u0000\u0000\u0000\u0000\uFBBD\u0000\uFBBE" + // 8880 - 8884
- "\u8EA2\uECDD\u0000\u0000\u0000\u0000\u0000\uFBFE\u0000\uFCA1" + // 8885 - 8889
- "\u8EA2\uEEC0\u0000\uDDFA\u0000\uE2F2\u8EA2\uC1C9\u8EA2\uC1CB" + // 8890 - 8894
- "\u0000\uE2F4\u0000\uE2F3\u0000\uE2F5\u0000\uE2F6\u8EA2\uC1CA" + // 8895 - 8899
- "\u0000\uE7D6\u0000\uE7D7\u0000\uE7D5\u0000\uEBE4\u0000\uE7D4" + // 8900 - 8904
- "\u8EA2\uC8DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBE5" + // 8905 - 8909
- "\u8EA2\uD5D5\u8EA2\uDBDC\u0000\uF2F3\u0000\uF6A3\u8EA2\uE4BC" + // 8910 - 8914
- "\u8EA2\uE4C0\u0000\uF7E4\u8EA2\uE4BD\u0000\uF7E5\u0000\uF7E3" + // 8915 - 8919
- "\u8EA2\uE4C1\u0000\uF7E6\u8EA2\uE4BF\u0000\u0000\u8EA2\uE7E6" + // 8920 - 8924
- "\u0000\uF7E2\u0000\uF9C5\u0000\u0000\u8EA2\uF0DB\u0000\u0000" + // 8925 - 8929
- "\u0000\u0000\u0000\uCFE4\u0000\uDDFC\u0000\uDDFB\u0000\u0000" + // 8930 - 8934
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2F7\u8EA2\uC1CD" + // 8935 - 8939
- "\u8EA2\uC1CC\u0000\uE2F8\u0000\u0000\u0000\u0000\u8EA2\uC8DF" + // 8940 - 8944
- "\u0000\uE7DB\u0000\uE7D8\u8EA2\uC8DE\u0000\uE7DA\u8EA2\uC8DC" + // 8945 - 8949
- "\u0000\uE7D9\u0000\u0000\u8EA2\uC8DD\u0000\u0000\u8EA2\uCFA5" + // 8950 - 8954
- "\u8EA2\uC1C8\u0000\u0000\u0000\u0000\u8EA2\uC1C7\u0000\uE2F1" + // 8955 - 8959
- "\u0000\uE2ED\u0000\uE2EE\u8EA2\uC1C3\u8EA2\uC1C5\u8EA2\uC1C6" + // 8960 - 8964
- "\u0000\uE2E9\u0000\uE2EB\u0000\u0000\u0000\uE2EF\u0000\uE2EA" + // 8965 - 8969
- "\u0000\u0000\u0000\u0000\u8EA2\uC8D9\u8EA2\uC8D7\u8EA2\uC8D8" + // 8970 - 8974
- "\u0000\uE7D2\u0000\uE7D3\u0000\u0000\u8EA2\uC8DA\u0000\uE7D1" + // 8975 - 8979
- "\u0000\uEBE1\u0000\u0000\u0000\uEBE3\u0000\uEBE2\u0000\u0000" + // 8980 - 8984
- "\u8EA2\uCFA3\u0000\u0000\u0000\u0000\u8EA2\uCFA4\u8EA2\uD5D4" + // 8985 - 8989
- "\u0000\u0000\u8EA2\uD5D3\u0000\u0000\u0000\u0000\u0000\uF2F0" + // 8990 - 8994
- "\u0000\uF2F1\u8EA2\uDBDB\u0000\uF2F2\u0000\u0000\u8EA2\uE0C3" + // 8995 - 8999
- "\u0000\u0000\u8EA2\uE0C1\u0000\u0000\u8EA2\uE0C2\u0000\uF6A1" + // 9000 - 9004
- "\u0000\u0000\u8EA2\uE4BB\u0000\uF9C4\u0000\u0000\u0000\uA8EC" + // 9005 - 9009
- "\u0000\u0000\u0000\uF6A2\u0000\uCFE3\u0000\u0000\u0000\uD8E9" + // 9010 - 9014
- "\u8EA2\uB3CA\u0000\u0000\u0000\u0000\u8EA2\uBAB0\u0000\uCFDE" + // 9015 - 9019
- "\u0000\u0000\u0000\uCFE2\u8EA2\uA8FC\u0000\uCFE1\u0000\u0000" + // 9020 - 9024
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADE7" + // 9025 - 9029
- "\u0000\uD3EF\u0000\uD3F0\u0000\uD3F1\u8EA2\uADE8\u8EA2\uADE4" + // 9030 - 9034
- "\u0000\uD3EE\u8EA2\uADE5\u0000\u0000\u8EA2\uADE6\u8EA2\uADE3" + // 9035 - 9039
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8E7\u0000\u0000" + // 9040 - 9044
- "\u0000\u0000\u0000\uD8E4\u8EA2\uB3C8\u0000\uD8E5\u0000\uD8E8" + // 9045 - 9049
- "\u8EA2\uB3C9\u0000\u0000\u0000\uD8E3\u0000\uD8E1\u0000\uD8E2" + // 9050 - 9054
- "\u0000\uD8E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9055 - 9059
- "\u0000\u0000\u0000\uDDF1\u8EA2\uBAAD\u0000\uDDF9\u8EA2\uBAAC" + // 9060 - 9064
- "\u0000\u0000\u8EA2\uBAAF\u0000\uDDF5\u8EA2\uBAAE\u0000\uE2F0" + // 9065 - 9069
- "\u0000\uDDF3\u0000\uDDF6\u0000\uDDF2\u0000\uDDF7\u0000\uDDF8" + // 9070 - 9074
- "\u0000\uDDF4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAAB" + // 9075 - 9079
- "\u0000\uE2EC\u8EA2\uC1C4\u0000\u0000\u0000\uA3B9\u8EAD\uA4A4" + // 9080 - 9084
- "\u0000\uA3BA\u8EAD\uA4A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 9085 - 9089
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9090 - 9094
- "\u0000\uA3BC\u0000\u0000\u0000\u0000\u8EAD\uA4A6\u0000\uA3BD" + // 9095 - 9099
- "\u0000\u0000\u0000\u0000\u8EAD\uA4A7\u0000\uA3BE\u0000\u0000" + // 9100 - 9104
- "\u0000\u0000\u8EAD\uA4A9\u0000\uA3BF\u0000\u0000\u0000\u0000" + // 9105 - 9109
- "\u8EAD\uA4A8\u0000\uA3B7\u8EAD\uA4B4\u0000\u0000\u0000\u0000" + // 9110 - 9114
- "\u8EAD\uA4AF\u0000\u0000\u0000\u0000\u8EAD\uA4AA\u0000\uA3B6" + // 9115 - 9119
- "\u8EAD\uA4B6\u0000\u0000\u0000\u0000\u8EAD\uA4B1\u0000\u0000" + // 9120 - 9124
- "\u0000\u0000\u8EAD\uA4AC\u0000\uA3B5\u0000\u0000\u0000\u0000" + // 9125 - 9129
- "\u8EAD\uA4B0\u8EAD\uA4B5\u0000\u0000\u0000\u0000\u8EAD\uA4AB" + // 9130 - 9134
- "\u0000\uA3B4\u0000\u0000\u0000\u0000\u8EAD\uA4B2\u8EAD\uA4B7" + // 9135 - 9139
- "\u0000\u0000\u0000\u0000\u8EAD\uA4AD\u0000\uA3B3\u0000\u0000" + // 9140 - 9144
- "\u0000\u0000\u8EAD\uA4B3\u8EA2\uE0BC\u0000\u0000\u0000\u0000" + // 9145 - 9149
- "\u8EA2\uE0BE\u0000\u0000\u8EA2\uE0BF\u0000\uF5FE\u8EA2\uE0BB" + // 9150 - 9154
- "\u0000\uF5FD\u8EA2\uE0BD\u0000\uF5FA\u0000\uF5FB\u0000\uF5FC" + // 9155 - 9159
- "\u8EA2\uDBD3\u0000\u0000\u0000\u0000\u0000\uF7E0\u8EA2\uE4BA" + // 9160 - 9164
- "\u8EA2\uE4B8\u8EA2\uE4B9\u0000\uF7DE\u0000\uF7E1\u0000\uF7DF" + // 9165 - 9169
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7E4\u8EA2\uE7E5" + // 9170 - 9174
- "\u0000\uF9C3\u0000\u0000\u8EA2\uEAD3\u8EA2\uEAD5\u8EA2\uEAD4" + // 9175 - 9179
- "\u0000\uFACF\u0000\uFBBC\u8EA2\uECDB\u8EA2\uECDA\u8EA2\uECD9" + // 9180 - 9184
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9185 - 9189
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9190 - 9194
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9195 - 9199
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9200 - 9204
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9205 - 9209
- "\u0000\u0000\u0000\uA2BD\u0000\u0000\u0000\u0000\u0000\u0000" + // 9210 - 9214
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9215 - 9219
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9220 - 9224
- "\u0000\uA2BB\u0000\uA2BE\u0000\u0000\u0000\u0000\u0000\u0000" + // 9225 - 9229
- "\u0000\u0000\u0000\uA2B9\u0000\uA2BA\u0000\u0000\u0000\u0000" + // 9230 - 9234
- "\u8EAD\uA1C5\u8EAD\uA1C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 9235 - 9239
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9240 - 9244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9245 - 9249
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9250 - 9254
- "\u0000\u0000\u0000\u0000\u0000\uA2D8\u0000\uA2D5\u0000\uA2D7" + // 9255 - 9259
- "\u0000\uA2D6\u0000\u0000\u0000\u0000\u0000\uA2D9\u0000\uA2DA" + // 9260 - 9264
- "\u0000\uA2DC\u0000\uA2DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 9265 - 9269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9270 - 9274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9275 - 9279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9280 - 9284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9285 - 9289
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9290 - 9294
- "\u0000\u0000\u0000\u0000\u8EAD\uA4BE\u8EAD\uA4BF\u0000\u0000" + // 9295 - 9299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9300 - 9304
- "\u0000\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9305 - 9309
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9310 - 9314
- "\u0000\uA2F3\u0000\u0000\u0000\u0000\u0000\uA2CC\u0000\uA2CB" + // 9315 - 9319
- "\u0000\u0000\u0000\u0000\u0000\uA2EF\u0000\u0000\u0000\u0000" + // 9320 - 9324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9325 - 9329
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9330 - 9334
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9335 - 9339
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9340 - 9344
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9345 - 9349
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9350 - 9354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9355 - 9359
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9360 - 9364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9365 - 9369
- "\u0000\u0000\u0000\uA1AB\u0000\uA1B6\u0000\uA1B8\u0000\uA1BA" + // 9370 - 9374
- "\u0000\uA1BC\u0000\uA1C0\u0000\uA1C1\u0000\uA1C4\u0000\uA1C5" + // 9375 - 9379
- "\u0000\uA1C8\u0000\uA1C9\u0000\uA1CC\u0000\uA1CD\u0000\uA1D0" + // 9380 - 9384
- "\u0000\uA1D1\u0000\uA1D4\u0000\uCFDC\u0000\u0000\u0000\uD3ED" + // 9385 - 9389
- "\u0000\uD8E0\u0000\u0000\u0000\u0000\u8EA2\uBAA9\u0000\u0000" + // 9390 - 9394
- "\u8EA2\uBAAA\u0000\uDDF0\u0000\u0000\u0000\uE2E4\u8EA2\uC1C1" + // 9395 - 9399
- "\u8EA2\uC1C0\u0000\uE2E8\u0000\uE2E3\u8EA2\uC1C2\u0000\uE2E5" + // 9400 - 9404
- "\u0000\uE2E7\u0000\uE2E6\u0000\uE2E2\u0000\u0000\u0000\u0000" + // 9405 - 9409
- "\u0000\u0000\u0000\uE7D0\u0000\u0000\u0000\u0000\u8EA2\uC8D6" + // 9410 - 9414
- "\u8EA2\uC8D4\u0000\u0000\u8EA2\uC8D5\u8EA2\uC8D3\u0000\u0000" + // 9415 - 9419
- "\u0000\uEBDB\u0000\u0000\u0000\uEBDE\u0000\uEBE0\u0000\uEBDF" + // 9420 - 9424
- "\u0000\u0000\u0000\u0000\u0000\uEBDC\u0000\uEBDD\u0000\u0000" + // 9425 - 9429
- "\u8EA2\uD5D0\u8EA2\uD5CF\u0000\uEFE4\u8EA2\uD5D1\u0000\u0000" + // 9430 - 9434
- "\u8EA2\uD5D2\u0000\uEFE5\u0000\u0000\u0000\u0000\u0000\u0000" + // 9435 - 9439
- "\u8EA2\uDBD9\u8EA2\uDBD7\u8EA2\uE0C0\u0000\u0000\u8EA2\uDBD5" + // 9440 - 9444
- "\u8EA2\uDBD6\u0000\uF2EF\u8EA2\uDBD2\u8EA2\uDBDA\u8EA2\uDBD4" + // 9445 - 9449
- "\u8EA2\uDBD8\u8EA2\uF2B0\u8EA2\uF2B1\u8EA2\uF2AF\u8EA2\uF2B7" + // 9450 - 9454
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9455 - 9459
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9460 - 9464
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9465 - 9469
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9470 - 9474
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9475 - 9479
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9480 - 9484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9485 - 9489
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9490 - 9494
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9495 - 9499
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9500 - 9504
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9505 - 9509
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9510 - 9514
- "\u8EAD\uA1A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9515 - 9519
- "\u0000\u0000\u8EA2\uA1BA\u0000\u0000\u0000\u0000\u8EA2\uA3D0" + // 9520 - 9524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA7C2\u0000\u0000" + // 9525 - 9529
- "\u8EA2\uA6A3\u8EA2\uA9E1\u8EA2\uAEDB\u0000\uD4EE\u0000\u0000" + // 9530 - 9534
- "\u0000\u0000\u8EA2\uE5C5\u0000\u0000\u0000\uFAE7\u0000\uC4CA" + // 9535 - 9539
- "\u0000\uC6C0\u8EA2\uA1D1\u0000\u0000\u0000\uC7E8\u0000\uC7E9" + // 9540 - 9544
- "\u0000\u0000\u0000\uCCDF\u0000\u0000\u0000\u0000\u0000\u0000" + // 9545 - 9549
- "\u0000\uD9DC\u0000\u0000\u0000\uE8C2\u0000\u0000\u0000\uE8C3" + // 9550 - 9554
- "\u0000\uE8C1\u0000\u0000\u0000\uC4CB\u0000\u0000\u0000\uC5B2" + // 9555 - 9559
- "\u0000\uC5B4\u0000\uC5B3\u8EA2\uA1BB\u0000\uC5B5\u0000\uC6C1" + // 9560 - 9564
- "\u8EA2\uA1D2\u0000\u0000\u0000\uC6C2\u0000\u0000\u0000\u0000" + // 9565 - 9569
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7EA\u0000\uC7EB" + // 9570 - 9574
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2AB\u0000\u0000" + // 9575 - 9579
- "\u0000\uC9E8\u0000\u0000\u0000\uC2A1\u0000\uC2A2\u0000\uC2A3" + // 9580 - 9584
- "\u0000\uC2A4\u0000\uC2A5\u0000\uC2A6\u0000\uC2A7\u0000\uC2A8" + // 9585 - 9589
- "\u0000\uC2A9\u0000\uC2AA\u0000\uC2AB\u0000\uC2AC\u0000\uC2AD" + // 9590 - 9594
- "\u0000\uC2AE\u0000\uC2AF\u0000\uC2B0\u0000\uC2B1\u0000\uC2B2" + // 9595 - 9599
- "\u0000\uC2B3\u0000\uC2B4\u0000\uC2B5\u0000\uC2B6\u0000\uC2B7" + // 9600 - 9604
- "\u0000\uC2B8\u0000\uC2B9\u0000\uC2BA\u0000\uC2BB\u0000\uC2BC" + // 9605 - 9609
- "\u0000\uC2BD\u0000\uC2BE\u0000\uC2BF\u0000\uC2C0\u0000\u0000" + // 9610 - 9614
- "\u0000\uC2C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9615 - 9619
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9620 - 9624
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9625 - 9629
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9630 - 9634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9635 - 9639
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9640 - 9644
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6A1\u0000\uA6A2" + // 9645 - 9649
- "\u0000\uA6A3\u0000\uA6A4\u0000\uA6A5\u0000\uA6A6\u0000\uA6A7" + // 9650 - 9654
- "\u0000\uA6A8\u0000\uA6A9\u0000\uA6AA\u0000\u0000\u0000\u0000" + // 9655 - 9659
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9660 - 9664
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6AB\u0000\uA6AC" + // 9665 - 9669
- "\u0000\uA6AD\u0000\uA6AE\u0000\uA6AF\u0000\uA6B0\u0000\uA6B1" + // 9670 - 9674
- "\u0000\uA6B2\u0000\uA6B3\u0000\uA6B4\u0000\u0000\u0000\u0000" + // 9675 - 9679
- "\u8EA2\uCCE4\u0000\u0000\u0000\uEAB1\u8EA2\uCCDF\u0000\u0000" + // 9680 - 9684
- "\u0000\uEAB0\u8EA2\uCCD5\u0000\u0000\u8EA2\uCCD7\u0000\uEAA9" + // 9685 - 9689
- "\u8EA2\uCCDC\u8EA2\uCCDB\u8EA2\uCCDE\u0000\uEAAE\u8EA2\uCCD9" + // 9690 - 9694
- "\u8EA2\uCCD8\u0000\u0000\u0000\u0000\u0000\uEAAD\u0000\uEAA8" + // 9695 - 9699
- "\u8EA2\uCCDA\u0000\uEAAB\u8EA2\uCCE0\u8EA2\uCCE2\u0000\u0000" + // 9700 - 9704
- "\u8EA2\uCCDD\u8EA2\uCCD6\u0000\uEAAC\u0000\u0000\u0000\u0000" + // 9705 - 9709
- "\u0000\uEEB4\u0000\uEAA7\u0000\u0000\u0000\u0000\u8EA2\uCCE3" + // 9710 - 9714
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9715 - 9719
- "\u0000\u0000\u0000\u0000\u8EA2\uD2E1\u0000\uEEAD\u0000\u0000" + // 9720 - 9724
- "\u8EA2\uD2E3\u0000\u0000\u0000\uEEAE\u0000\u0000\u0000\u0000" + // 9725 - 9729
- "\u0000\uEEB0\u8EA2\uD2E6\u0000\u0000\u8EA2\uD2DE\u0000\uEAAF" + // 9730 - 9734
- "\u8EA2\uD2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9735 - 9739
- "\u8EA2\uD2E0\u0000\u0000\u0000\uF0DF\u0000\uF0E6\u8EA2\uD7B6" + // 9740 - 9744
- "\u0000\uF0E4\u0000\uF0DE\u0000\u0000\u0000\uF0E5\u0000\u0000" + // 9745 - 9749
- "\u8EA2\uD7B3\u0000\uF3E4\u0000\uF0E0\u0000\u0000\u0000\uF0E7" + // 9750 - 9754
- "\u0000\uF3E3\u8EA2\uD7B2\u8EA2\uD7B1\u0000\u0000\u0000\uF0E9" + // 9755 - 9759
- "\u0000\u0000\u0000\uF0EA\u0000\u0000\u8EA2\uD7B0\u8EA2\uD7AF" + // 9760 - 9764
- "\u0000\uF3E5\u8EA2\uD7B9\u0000\uF0E3\u8EA2\uD7B7\u0000\u0000" + // 9765 - 9769
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3E6\u0000\u0000" + // 9770 - 9774
- "\u0000\uF3EB\u8EA2\uDCF5\u8EA2\uDCF7\u0000\u0000\u0000\uF3E8" + // 9775 - 9779
- "\u0000\u0000\u8EA2\uDCF8\u8EA2\uDCF4\u0000\u0000\u8EA2\uDCF6" + // 9780 - 9784
- "\u0000\uF3E9\u0000\uF3EC\u0000\u0000\u8EA2\uDCF3\u0000\uF3E7" + // 9785 - 9789
- "\u0000\uF3EA\u0000\uF6C5\u8EA2\uD7B8\u0000\uF6C4\u0000\u0000" + // 9790 - 9794
- "\u0000\u0000\u0000\uF6CA\u8EA2\uE1E0\u0000\u0000\u0000\uF6C8" + // 9795 - 9799
- "\u0000\uF6C9\u8EA2\uE1E3\u8EA2\uE1DF\u0000\uF6C6\u8EA2\uE1DD" + // 9800 - 9804
- "\u8EA2\uECD7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBFB" + // 9805 - 9809
- "\u8EA2\uEEBC\u8EA2\uEEBF\u8EA2\uEEBB\u8EA2\uEEBD\u8EA2\uEEBE" + // 9810 - 9814
- "\u8EA2\uEEB8\u8EA2\uEEB9\u8EA2\uEEB6\u0000\u0000\u0000\u0000" + // 9815 - 9819
- "\u8EA2\uEEBA\u8EA2\uEEB7\u0000\uFBFC\u0000\uFBFD\u0000\u0000" + // 9820 - 9824
- "\u0000\u0000\u8EA2\uEFD9\u0000\u0000\u8EA2\uEFDB\u0000\u0000" + // 9825 - 9829
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFDA" + // 9830 - 9834
- "\u8EA2\uEFDC\u0000\u0000\u0000\uFCCC\u0000\u0000\u8EA2\uEFD8" + // 9835 - 9839
- "\u0000\uFCCB\u0000\uFCCD\u0000\u0000\u0000\u0000\u0000\u0000" + // 9840 - 9844
- "\u8EA2\uF0D9\u8EA2\uF0DA\u0000\uFCEF\u8EA2\uF0D8\u0000\u0000" + // 9845 - 9849
- "\u8EA2\uF1C2\u8EA2\uF1C1\u8EA2\uF1C3\u0000\uFDAC\u8EA2\uF1C4" + // 9850 - 9854
- "\u0000\uFDAB\u8EA2\uF1C5\u8EA2\uF1E1\u8EA2\uF1E4\u8EA2\uF1E3" + // 9855 - 9859
- "\u0000\uFDB5\u8EA2\uF1E2\u0000\u0000\u0000\u0000\u0000\u0000" + // 9860 - 9864
- "\u0000\uFDBF\u0000\uFDBD\u0000\uFDBE\u0000\uFDC4\u8EA2\uEAC2" + // 9865 - 9869
- "\u0000\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000\u0000" + // 9870 - 9874
- "\u8EA2\uEAD2\u8EA2\uEAC4\u0000\u0000\u8EA2\uEAC9\u8EA2\uEACC" + // 9875 - 9879
- "\u8EA2\uEAB5\u8EA2\uEACF\u8EA2\uEAC0\u8EA2\uEAC5\u8EA2\uEAB9" + // 9880 - 9884
- "\u8EA2\uEABD\u8EA2\uEAD1\u8EA2\uEAC7\u8EA2\uEAB6\u8EA2\uEABA" + // 9885 - 9889
- "\u8EA2\uEABC\u8EA2\uEAC6\u0000\u0000\u0000\uFACC\u8EA2\uEABF" + // 9890 - 9894
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9895 - 9899
- "\u0000\u0000\u8EA2\uEAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 9900 - 9904
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEABE" + // 9905 - 9909
- "\u8EA2\uECD0\u8EA2\uECD4\u0000\uFBBB\u8EA2\uECD6\u0000\u0000" + // 9910 - 9914
- "\u0000\uFBB5\u0000\u0000\u8EA2\uECD2\u8EA2\uECD8\u0000\uFBBA" + // 9915 - 9919
- "\u0000\uFBB6\u0000\u0000\u0000\uFBB7\u8EA2\uECCF\u8EA2\uECD5" + // 9920 - 9924
- "\u0000\uFBB9\u8EA2\uECD3\u0000\uFBB8\u8EA2\uECCE\u8EA2\uEACB" + // 9925 - 9929
- "\u8EA2\uECD1\u0000\u0000\u8EA2\uECCD\u8EA2\uE7DF\u0000\u0000" + // 9930 - 9934
- "\u8EA2\uE7CF\u0000\uF9B8\u8EA2\uE7DD\u0000\u0000\u0000\u0000" + // 9935 - 9939
- "\u8EA2\uE7CD\u0000\uF9B9\u0000\u0000\u8EA2\uE7D8\u0000\u0000" + // 9940 - 9944
- "\u8EA2\uE7D4\u0000\uF9BE\u8EA2\uE7DE\u8EA2\uE7CE\u8EA2\uE7D1" + // 9945 - 9949
- "\u0000\uF9B6\u8EA2\uE7E0\u0000\u0000\u8EA2\uE7D9\u8EA2\uE7DC" + // 9950 - 9954
- "\u0000\uF9BC\u0000\uF9C1\u0000\uF9BF\u8EA2\uE7D5\u8EA2\uE7D0" + // 9955 - 9959
- "\u0000\u0000\u0000\uF9BA\u0000\uF9BB\u8EA2\uE7CC\u0000\uF9B7" + // 9960 - 9964
- "\u0000\u0000\u0000\uF9B5\u0000\uF9BD\u8EA2\uE7DB\u0000\uF9C0" + // 9965 - 9969
- "\u0000\u0000\u8EA2\uE7D7\u8EA2\uE7E2\u0000\uF9C2\u0000\u0000" + // 9970 - 9974
- "\u0000\u0000\u0000\u0000\u8EA2\uE7D3\u0000\u0000\u8EA2\uE7DA" + // 9975 - 9979
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9980 - 9984
- "\u0000\u0000\u8EA2\uEAC1\u8EA2\uEAD0\u8EA2\uEAC3\u8EA2\uEACA" + // 9985 - 9989
- "\u8EA2\uE7D2\u8EA2\uEAC8\u8EA2\uEAB7\u8EA2\uEACE\u0000\uFACE" + // 9990 - 9994
- "\u8EA2\uEABB\u8EA2\uEACD\u8EA2\uE4AF\u0000\u0000\u0000\uF5ED" + // 9995 - 9999
- "\u8EA2\uDFFA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10000 - 10004
- "\u8EA2\uE4AC\u8EA2\uE4A5\u0000\uF7D4\u0000\u0000\u8EA2\uE3FE" + // 10005 - 10009
- "\u8EA2\uE4B0\u8EA2\uE4A7\u8EA2\uE0AA\u0000\u0000\u8EA2\uE4B2" + // 10010 - 10014
- "\u8EA2\uE4A1\u0000\u0000\u0000\uF7D3\u8EA2\uE4AB\u0000\uF7D5" + // 10015 - 10019
- "\u0000\uF7DD\u0000\uF7DB\u8EA2\uE4AD\u0000\uF7DC\u8EA2\uE4A3" + // 10020 - 10024
- "\u0000\u0000\u8EA2\uE4A4\u8EA2\uE4A9\u8EA2\uE4AE\u0000\u0000" + // 10025 - 10029
- "\u8EA2\uDFF9\u0000\uF7D6\u8EA2\uE4B7\u8EA2\uE4B4\u8EA2\uE7E1" + // 10030 - 10034
- "\u8EA2\uE4AA\u8EA2\uE4A6\u8EA2\uE4B5\u8EA2\uE7D6\u8EA2\uE4A8" + // 10035 - 10039
- "\u0000\u0000\u0000\uF7D9\u0000\u0000\u0000\uF7D8\u8EA2\uDFFB" + // 10040 - 10044
- "\u0000\uF7DA\u8EA2\uE4B1\u8EA2\uE4B3\u0000\uF7D7\u8EA2\uE4B6" + // 10045 - 10049
- "\u8EA2\uE3FD\u0000\u0000\u8EA2\uE4A2\u0000\u0000\u0000\u0000" + // 10050 - 10054
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10055 - 10059
- "\u0000\u0000\u8EA2\uDBB8\u8EA2\uDFFE\u0000\u0000\u8EA2\uE0A5" + // 10060 - 10064
- "\u0000\uF5F0\u0000\uF5F2\u8EA2\uE0AB\u0000\uF5EC\u8EA2\uE0B9" + // 10065 - 10069
- "\u8EA2\uE0B1\u8EA2\uE0A6\u8EA2\uE0A7\u8EA2\uE0B0\u0000\u0000" + // 10070 - 10074
- "\u0000\uF5F9\u8EA2\uE0AF\u8EA2\uDFFD\u8EA2\uE0AE\u8EA2\uE0A2" + // 10075 - 10079
- "\u8EA2\uE0BA\u0000\uF5F8\u0000\uF5F6\u8EA2\uE0A3\u0000\u0000" + // 10080 - 10084
- "\u8EA2\uE0B6\u0000\u0000\u8EA2\uE0A8\u8EA2\uE0B5\u0000\u0000" + // 10085 - 10089
- "\u8EA2\uE0B7\u8EA2\uDFFC\u0000\uF5F1\u0000\u0000\u8EA2\uE0B8" + // 10090 - 10094
- "\u0000\u0000\u0000\u0000\u8EA2\uE0AC\u0000\u0000\u0000\uF5F5" + // 10095 - 10099
- "\u8EA2\uE0A9\u0000\u0000\u0000\u0000\u0000\uF5F7\u8EA2\uE0B2" + // 10100 - 10104
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF5EF\u8EA2\uE0A4" + // 10105 - 10109
- "\u8EA2\uE0B3\u0000\u0000\u8EA2\uE0AD\u8EA2\uDBB1\u8EA2\uE0B4" + // 10110 - 10114
- "\u8EA2\uE0A1\u0000\u0000\u0000\uF5F4\u0000\u0000\u8EAD\uA1C0" + // 10115 - 10119
- "\u0000\u0000\u8EAD\uA1C3\u8EAD\uA1C1\u0000\u0000\u0000\u0000" + // 10120 - 10124
- "\u0000\u0000\u8EAD\uA1C4\u8EAD\uA1B6\u0000\u0000\u0000\u0000" + // 10125 - 10129
- "\u8EAD\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10130 - 10134
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10135 - 10139
- "\u0000\uA2E1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10140 - 10144
- "\u0000\uA2B5\u0000\u0000\u0000\u0000\u8EAD\uA1C8\u0000\uA2BC" + // 10145 - 10149
- "\u0000\uA2C9\u0000\uA2C8\u0000\u0000\u0000\u0000\u0000\u0000" + // 10150 - 10154
- "\u0000\u0000\u0000\uA2DD\u0000\u0000\u8EAD\uA1BC\u8EAD\uA1BD" + // 10155 - 10159
- "\u0000\uA2C5\u0000\uA2C6\u0000\uA2CD\u8EAD\uA1C9\u0000\u0000" + // 10160 - 10164
- "\u0000\uA2CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10165 - 10169
- "\u0000\u0000\u0000\uA2D0\u0000\uA2CF\u0000\u0000\u0000\u0000" + // 10170 - 10174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C4" + // 10175 - 10179
- "\u8EAD\uA1C7\u0000\u0000\u0000\u0000\u8EA2\uE2C1\u0000\u0000" + // 10180 - 10184
- "\u8EA2\uE6A7\u0000\u0000\u0000\u0000\u0000\uF8D4\u0000\u0000" + // 10185 - 10189
- "\u8EA2\uE6A5\u8EA2\uE6A6\u0000\u0000\u8EA2\uE9C3\u8EA2\uE9C6" + // 10190 - 10194
- "\u8EA2\uE9C4\u8EA2\uE9C5\u8EA2\uEBEE\u0000\u0000\u0000\u0000" + // 10195 - 10199
- "\u0000\uFAFA\u8EA2\uEFBA\u8EA2\uF0C2\u0000\u0000\u0000\uFCE3" + // 10200 - 10204
- "\u8EA2\uF1A8\u8EA2\uF1A9\u0000\uFDB3\u0000\uC6F9\u0000\uD2E4" + // 10205 - 10209
- "\u0000\u0000\u8EA2\uBEC7\u0000\u0000\u8EA2\uC5C9\u0000\u0000" + // 10210 - 10214
- "\u0000\uC6FA\u0000\uCBB2\u0000\u0000\u0000\uCFA1\u0000\u0000" + // 10215 - 10219
- "\u8EA2\uACCA\u8EA2\uACCB\u0000\uD6FB\u0000\u0000\u0000\u0000" + // 10220 - 10224
- "\u8EA2\uBEC8\u0000\uE0FB\u0000\uE5CE\u0000\uF4CC\u8EA2\uDDEE" + // 10225 - 10229
- "\u8EA2\uE6A8\u8EA2\uE9C7\u0000\uC6FB\u0000\u0000\u0000\u0000" + // 10230 - 10234
- "\u0000\u0000\u8EA2\uA8C1\u8EA2\uA8BC\u8EA2\uA8BE\u8EA2\uA8C0" + // 10235 - 10239
- "\u8EA2\uA8BF\u8EA2\uA8BD\u0000\uCFA2\u0000\u0000\u0000\u0000" + // 10240 - 10244
- "\u0000\uD2E5\u8EA2\uACD4\u0000\u0000\u8EA2\uACCF\u8EA2\uACCC" + // 10245 - 10249
- "\u0000\u0000\u0000\u0000\u8EA2\uACD3\u0000\u0000\u0000\u0000" + // 10250 - 10254
- "\u0000\uD2E7\u0000\uD2E8\u8EA2\uACD2\u8EA2\uACD1\u8EA2\uACD0" + // 10255 - 10259
- "\u8EA2\uACCD\u8EA2\uACCE\u8EA2\uACD5\u0000\uD2E6\u0000\u0000" + // 10260 - 10264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10265 - 10269
- "\u0000\u0000\u0000\u0000\u0000\uD7A1\u0000\u0000\u0000\uD7A7" + // 10270 - 10274
- "\u0000\uD7A6\u8EA2\uB1C4\u8EA2\uB1BE\u8EA2\uB1BC\u0000\u0000" + // 10275 - 10279
- "\u0000\uD7A4\u8EA2\uB7DC\u0000\uD6FD\u8EA2\uB1C1\u8EA2\uB1C5" + // 10280 - 10284
- "\u8EA2\uB1C7\u8EA2\uB1C3\u8EA2\uB1BD\u0000\uD7A5\u8EA2\uB1C2" + // 10285 - 10289
- "\u8EA2\uB1C0\u0000\uD6FC\u8EA2\uB1C8\u0000\uD7A8\u8EA2\uB1C6" + // 10290 - 10294
- "\u0000\uD7A2\u8EA2\uB1BF\u0000\u0000\u0000\uD7A3\u0000\uD6FE" + // 10295 - 10299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10300 - 10304
- "\u0000\u0000\u0000\u0000\u0000\uA5C7\u0000\uA5C8\u0000\uA5C9" + // 10305 - 10309
- "\u0000\uA5CA\u0000\uA5CB\u0000\uA5CC\u0000\uA5CD\u0000\uA5CE" + // 10310 - 10314
- "\u0000\uA5CF\u0000\uA5D0\u0000\uA5D1\u0000\uA5D2\u0000\uA5D3" + // 10315 - 10319
- "\u0000\uA5D4\u0000\uA5D5\u0000\uA5D6\u0000\uA5D7\u0000\uA5D8" + // 10320 - 10324
- "\u0000\uA5D9\u0000\uA5DA\u0000\uA5DB\u0000\uA5DC\u0000\uA5DD" + // 10325 - 10329
- "\u0000\uA5DE\u0000\uA5DF\u0000\uA5E0\u0000\uA5E1\u0000\uA5E2" + // 10330 - 10334
- "\u0000\uA5E3\u0000\uA5E4\u0000\uA5E5\u0000\uA5E6\u0000\uA5E7" + // 10335 - 10339
- "\u0000\uA5E8\u0000\uA5E9\u0000\uA5EA\u0000\uA5EB\u0000\u0000" + // 10340 - 10344
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10345 - 10349
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10350 - 10354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10355 - 10359
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10360 - 10364
- "\u0000\u0000\u0000\uA4F5\u0000\uA4F6\u0000\uA4F7\u0000\uA4F8" + // 10365 - 10369
- "\u0000\uA4F9\u0000\uA4FA\u0000\uA4FB\u0000\uA4FC\u0000\uA4FD" + // 10370 - 10374
- "\u0000\uA4FE\u0000\uA5A1\u0000\uA5A2\u0000\uA5A3\u0000\uA5A4" + // 10375 - 10379
- "\u0000\uA5A5\u0000\uA5A6\u0000\uA5A7\u0000\u0000\u0000\uA5A8" + // 10380 - 10384
- "\u0000\uA5A9\u0000\uA5AA\u0000\uA5AB\u0000\uA5AC\u0000\uA5AD" + // 10385 - 10389
- "\u0000\uA5AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10390 - 10394
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5AF\u0000\uA5B0" + // 10395 - 10399
- "\u0000\uA5B1\u0000\uA5B2\u0000\uA5B3\u0000\uA5B4\u0000\uA5B5" + // 10400 - 10404
- "\u0000\uA5B6\u0000\uA5B7\u0000\uA5B8\u0000\uA5B9\u0000\uA5BA" + // 10405 - 10409
- "\u0000\uA5BB\u0000\uA5BC\u0000\uA5BD\u8EA2\uDBCF\u8EA2\uDBB7" + // 10410 - 10414
- "\u8EA2\uDBC3\u0000\u0000\u0000\uF2E7\u0000\u0000\u8EA2\uDBAF" + // 10415 - 10419
- "\u0000\u0000\u8EA2\uDBAD\u8EA2\uDBCE\u0000\u0000\u8EA2\uDBCC" + // 10420 - 10424
- "\u8EA2\uDBCB\u8EA2\uDBBB\u8EA2\uDBBA\u8EA2\uDBB0\u0000\uF2E9" + // 10425 - 10429
- "\u0000\u0000\u8EA2\uDBB6\u8EA2\uDBBF\u8EA2\uDBCA\u0000\uF2EC" + // 10430 - 10434
- "\u8EA2\uDBD1\u0000\u0000\u0000\uF5F3\u0000\uF2EE\u0000\uF2E8" + // 10435 - 10439
- "\u8EA2\uDBB4\u0000\u0000\u8EA2\uDBBD\u8EA2\uDBAC\u8EA2\uDBAE" + // 10440 - 10444
- "\u0000\uF2DF\u0000\uF2EB\u0000\uF2E4\u8EA2\uDBB5\u8EA2\uDBC4" + // 10445 - 10449
- "\u8EA2\uD5CB\u0000\uF2EA\u8EA2\uDBAB\u0000\uF5EE\u8EA2\uDBC6" + // 10450 - 10454
- "\u8EA2\uDBC9\u0000\uF2E6\u0000\u0000\u8EA2\uDBB9\u0000\uF2ED" + // 10455 - 10459
- "\u0000\uF2E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2E2" + // 10460 - 10464
- "\u8EA2\uDBC2\u8EA2\uDBC8\u0000\uF2E0\u0000\u0000\u8EA2\uDBB2" + // 10465 - 10469
- "\u8EA2\uDBC7\u0000\u0000\u0000\u0000\u8EA2\uDBB3\u0000\u0000" + // 10470 - 10474
- "\u0000\u0000\u0000\u0000\u0000\uF4C3\u8EA2\uDDE0\u0000\u0000" + // 10475 - 10479
- "\u0000\u0000\u0000\uF4C2\u8EA2\uDDE3\u8EA2\uDDE1\u8EA2\uDDE2" + // 10480 - 10484
- "\u0000\u0000\u0000\u0000\u0000\uF4C4\u0000\u0000\u0000\u0000" + // 10485 - 10489
- "\u0000\u0000\u8EA2\uE2BA\u0000\u0000\u0000\uF6EB\u8EA2\uE2BB" + // 10490 - 10494
- "\u0000\u0000\u0000\u0000\u0000\uF6E9\u8EA2\uE2BC\u0000\uF6EA" + // 10495 - 10499
- "\u8EA2\uE2B9\u8EA2\uE2BD\u0000\u0000\u8EA2\uE2B7\u0000\u0000" + // 10500 - 10504
- "\u0000\u0000\u0000\uF8D2\u8EA2\uE6A4\u0000\uF8D3\u0000\uF9FA" + // 10505 - 10509
- "\u0000\u0000\u8EA2\uE2B8\u0000\uF9FB\u0000\u0000\u0000\u0000" + // 10510 - 10514
- "\u0000\u0000\u0000\uFAF9\u8EA2\uEBED\u0000\u0000\u0000\uFBEA" + // 10515 - 10519
- "\u8EA2\uEDE2\u0000\uFBE9\u0000\u0000\u8EA2\uEFB9\u0000\uFCE1" + // 10520 - 10524
- "\u0000\uFCE2\u0000\u0000\u0000\u0000\u8EA2\uF2BA\u0000\uA8AA" + // 10525 - 10529
- "\u0000\u0000\u0000\uD2D4\u8EA2\uACC0\u0000\u0000\u0000\uE0F4" + // 10530 - 10534
- "\u0000\uE0F5\u0000\uC6F5\u0000\uC8CB\u8EA2\uA2E7\u8EA2\uD5AF" + // 10535 - 10539
- "\u0000\uEFDD\u8EA2\uD5BB\u8EA2\uD5AD\u8EA2\uD5AE\u0000\uEFD8" + // 10540 - 10544
- "\u8EA2\uD5CC\u0000\uEFE1\u8EA2\uD5BE\u8EA2\uD5C3\u8EA2\uD5BD" + // 10545 - 10549
- "\u8EA2\uDBBC\u8EA2\uD5B9\u8EA2\uD5C1\u8EA2\uD5BF\u8EA2\uD5B2" + // 10550 - 10554
- "\u8EA2\uD5AC\u8EA2\uD5C7\u0000\uEFE0\u8EA2\uD5C8\u0000\u0000" + // 10555 - 10559
- "\u8EA2\uD5C2\u0000\u0000\u8EA2\uD5B7\u8EA2\uD5B5\u8EA2\uD5B0" + // 10560 - 10564
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5B8\u8EA2\uD5C5" + // 10565 - 10569
- "\u8EA2\uD5B4\u8EA2\uD5C4\u8EA2\uD5CA\u0000\u0000\u0000\u0000" + // 10570 - 10574
- "\u0000\uEFDC\u0000\u0000\u8EA2\uD5C0\u8EA2\uD5C6\u8EA2\uD5BC" + // 10575 - 10579
- "\u8EA2\uD5B6\u0000\uEFDB\u0000\u0000\u0000\u0000\u0000\u0000" + // 10580 - 10584
- "\u8EA2\uCEEE\u8EA2\uD5BA\u0000\uEFE2\u8EA2\uD5B3\u0000\u0000" + // 10585 - 10589
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBC1" + // 10590 - 10594
- "\u0000\uF2E1\u8EA2\uDBC0\u8EA2\uDBBE\u8EA2\uDBD0\u0000\uF2E5" + // 10595 - 10599
- "\u0000\u0000\u8EA2\uDBCD\u8EA2\uDBC5\u0000\uEBD1\u0000\u0000" + // 10600 - 10604
- "\u8EA2\uCEF0\u8EA2\uC8BC\u0000\u0000\u0000\uEBD2\u8EA2\uCEF7" + // 10605 - 10609
- "\u8EA2\uCEFC\u8EA2\uCEF4\u0000\u0000\u8EA2\uCEF6\u8EA2\uCFA1" + // 10610 - 10614
- "\u8EA2\uCEF8\u8EA2\uCEE6\u8EA2\uCEEF\u0000\u0000\u0000\u0000" + // 10615 - 10619
- "\u0000\uEBDA\u0000\u0000\u0000\uEBD6\u8EA2\uCEE4\u8EA2\uCEF1" + // 10620 - 10624
- "\u0000\uEBD4\u8EA2\uCEEB\u0000\uEBD3\u8EA2\uCEF9\u8EA2\uCEE8" + // 10625 - 10629
- "\u8EA2\uCEE1\u0000\uEBD7\u8EA2\uCEFE\u0000\u0000\u0000\u0000" + // 10630 - 10634
- "\u8EA2\uCEE3\u8EA2\uCEF5\u8EA2\uCEF2\u8EA2\uCEED\u8EA2\uCEDF" + // 10635 - 10639
- "\u8EA2\uCEDE\u8EA2\uCEE7\u8EA2\uCEFA\u0000\uEBD8\u8EA2\uCEFD" + // 10640 - 10644
- "\u8EA2\uCEE5\u8EA2\uCEE9\u0000\uEBD0\u0000\u0000\u0000\u0000" + // 10645 - 10649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFE3\u0000\uEFDE" + // 10650 - 10654
- "\u8EA2\uD5CD\u8EA2\uD5C9\u8EA2\uD5B1\u0000\uEFDA\u0000\u0000" + // 10655 - 10659
- "\u0000\u0000\u0000\u0000\u0000\uEFD9\u0000\uEFDF\u0000\u0000" + // 10660 - 10664
- "\u0000\u0000\u0000\u0000\u8EA2\uA7F8\u8EA2\uA7FA\u8EA2\uA7F5" + // 10665 - 10669
- "\u8EA2\uA7F2\u8EA2\uA7F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 10670 - 10674
- "\u0000\uCEE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEE3" + // 10675 - 10679
- "\u0000\u0000\u0000\u0000\u8EA2\uA7F6\u0000\uCEE4\u8EA2\uA7F3" + // 10680 - 10684
- "\u8EA2\uA7F0\u0000\uCEE2\u8EA2\uA7F7\u0000\u0000\u8EA2\uA7F1" + // 10685 - 10689
- "\u0000\uCEE6\u8EA2\uA7F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 10690 - 10694
- "\u0000\u0000\u8EA2\uABEF\u0000\u0000\u8EA2\uABF3\u0000\u0000" + // 10695 - 10699
- "\u0000\u0000\u0000\uD2BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 10700 - 10704
- "\u0000\u0000\u8EA2\uABF6\u0000\u0000\u0000\uD2B2\u0000\uD2B5" + // 10705 - 10709
- "\u0000\uD2B7\u0000\uD2B9\u0000\uD2B6\u8EA2\uABF2\u8EA2\uABF1" + // 10710 - 10714
- "\u0000\u0000\u0000\uD2B4\u8EA2\uABF4\u8EA2\uABF5\u0000\u0000" + // 10715 - 10719
- "\u8EA2\uABEE\u0000\uD2B8\u0000\u0000\u0000\uD2B3\u0000\u0000" + // 10720 - 10724
- "\u0000\u0000\u0000\u0000\u8EA2\uABF0\u0000\u0000\u8EAD\uA3F2" + // 10725 - 10729
- "\u8EAD\uA3F3\u8EAD\uA3F4\u8EAD\uA3F5\u8EAD\uA3F6\u8EAD\uA3F7" + // 10730 - 10734
- "\u8EAD\uA3F8\u8EAD\uA3F9\u8EAD\uA3FA\u8EAD\uA3FB\u8EAD\uA3FC" + // 10735 - 10739
- "\u8EAD\uA3FD\u8EAD\uA3FE\u8EAD\uA4A1\u8EAD\uA4A2\u8EAD\uA4A3" + // 10740 - 10744
- "\u0000\u0000\u8EAD\uA3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 10745 - 10749
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10750 - 10754
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10755 - 10759
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10760 - 10764
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10765 - 10769
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10770 - 10774
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10775 - 10779
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10780 - 10784
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10785 - 10789
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10790 - 10794
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10795 - 10799
- "\u0000\uDEA5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADB" + // 10800 - 10804
- "\u8EA2\uEDB7\u0000\u0000\u0000\uFCFB\u0000\uFCFC\u0000\u0000" + // 10805 - 10809
- "\u0000\uDEA6\u0000\uE7C3\u0000\u0000\u0000\u0000\u0000\u0000" + // 10810 - 10814
- "\u0000\u0000\u0000\uE7CC\u8EA2\uC8BF\u0000\u0000\u8EA2\uC8B4" + // 10815 - 10819
- "\u0000\uE7CA\u8EA2\uC8BE\u0000\uE7C6\u8EA2\uC8D0\u0000\uE7CB" + // 10820 - 10824
- "\u8EA2\uC8CE\u8EA2\uC8C2\u8EA2\uC8CC\u0000\uE7C8\u8EA2\uC8B5" + // 10825 - 10829
- "\u8EA2\uC8CF\u8EA2\uC8CA\u0000\u0000\u8EA2\uC8D1\u0000\uE7C0" + // 10830 - 10834
- "\u0000\u0000\u0000\u0000\u0000\uE7CF\u0000\uE7C5\u0000\u0000" + // 10835 - 10839
- "\u0000\u0000\u8EA2\uC8BB\u0000\u0000\u8EA2\uC8C3\u8EA2\uC8C7" + // 10840 - 10844
- "\u0000\u0000\u8EA2\uC8CB\u0000\uE7C7\u8EA2\uC8BA\u8EA2\uC8B8" + // 10845 - 10849
- "\u8EA2\uC8C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10850 - 10854
- "\u8EA2\uC8C1\u8EA2\uC8C0\u0000\u0000\u8EA2\uC8C5\u8EA2\uC8C8" + // 10855 - 10859
- "\u0000\u0000\u8EA2\uC8CD\u0000\u0000\u0000\u0000\u0000\u0000" + // 10860 - 10864
- "\u8EA2\uCEE0\u0000\u0000\u0000\uEBCF\u8EA2\uCEEA\u8EA2\uCEE2" + // 10865 - 10869
- "\u0000\uEBD5\u0000\uEBD9\u8EA2\uCEF3\u8EA2\uCEFB\u8EA2\uCEEC" + // 10870 - 10874
- "\u8EA2\uC1B1\u8EA2\uC1A9\u8EA2\uC1B8\u8EA2\uC1AC\u8EA2\uC1B6" + // 10875 - 10879
- "\u8EA2\uC1BD\u8EA2\uC1B5\u0000\uE2E0\u0000\u0000\u0000\uE2DC" + // 10880 - 10884
- "\u8EA2\uC1AA\u0000\u0000\u8EA2\uC1B0\u0000\uE2DE\u0000\u0000" + // 10885 - 10889
- "\u8EA2\uC1AF\u0000\uE2DF\u0000\uE2E1\u8EA2\uC1B2\u0000\u0000" + // 10890 - 10894
- "\u0000\uE2D9\u0000\uE2DA\u8EA2\uC1BE\u8EA2\uC1BC\u0000\u0000" + // 10895 - 10899
- "\u8EA2\uC1BB\u8EA2\uC1AD\u0000\u0000\u8EA2\uC1B9\u0000\u0000" + // 10900 - 10904
- "\u0000\uE2DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10905 - 10909
- "\u0000\uE2DB\u8EA2\uC1BA\u8EA2\uC1AB\u8EA2\uC1AE\u8EA2\uC1B7" + // 10910 - 10914
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10915 - 10919
- "\u8EA2\uCFA2\u8EA2\uC8BD\u0000\u0000\u8EA2\uC8B6\u8EA2\uC8C9" + // 10920 - 10924
- "\u8EA2\uC8D2\u8EA2\uC8B9\u0000\uE7C9\u0000\u0000\u8EA2\uC8C6" + // 10925 - 10929
- "\u0000\uE7BF\u0000\uE7C1\u0000\uE7CD\u8EA2\uC8B7\u0000\u0000" + // 10930 - 10934
- "\u0000\u0000\u0000\uE7C2\u0000\uE7C4\u0000\uE7CE\u0000\uFCEE" + // 10935 - 10939
- "\u0000\uFDAA\u8EA2\uF0D7\u8EA2\uF1E0\u0000\u0000\u0000\uFDBC" + // 10940 - 10944
- "\u0000\uCBDD\u0000\uCFD9\u0000\u0000\u0000\uE7BE\u0000\u0000" + // 10945 - 10949
- "\u0000\uFACB\u0000\uCBDE\u0000\uD3EC\u0000\uDDE9\u0000\uE2D8" + // 10950 - 10954
- "\u0000\uF7D2\u0000\uCFDA\u0000\u0000\u8EA2\uADE2\u8EA2\uADE1" + // 10955 - 10959
- "\u8EA2\uB3C5\u0000\u0000\u0000\uD8DD\u0000\uD8DB\u0000\uD8DF" + // 10960 - 10964
- "\u8EA2\uB3C7\u0000\u0000\u0000\uD8DE\u0000\uD8DC\u0000\u0000" + // 10965 - 10969
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB3C6\u0000\uDDEC" + // 10970 - 10974
- "\u8EA2\uBAA1\u0000\u0000\u0000\uDDEB\u0000\uDDED\u8EA2\uBAA6" + // 10975 - 10979
- "\u0000\uDDEF\u8EA2\uBAA3\u8EA2\uBAA4\u8EA2\uB9FA\u0000\uDDEE" + // 10980 - 10984
- "\u8EA2\uBAA7\u0000\u0000\u0000\u0000\u8EA2\uB9FC\u0000\u0000" + // 10985 - 10989
- "\u8EA2\uB9FD\u8EA2\uB9FB\u0000\uDDEA\u0000\u0000\u8EA2\uBAA5" + // 10990 - 10994
- "\u8EA2\uB9FE\u8EA2\uBAA2\u0000\u0000\u0000\u0000\u0000\u0000" + // 10995 - 10999
- "\u8EA2\uC1B4\u0000\u0000\u8EA2\uC1B3\u8EA2\uD5AB\u8EA2\uD5A8" + // 11000 - 11004
- "\u8EA2\uD5A9\u0000\uEFD7\u8EA2\uD5AA\u8EA2\uD5A5\u8EA2\uD5A6" + // 11005 - 11009
- "\u0000\uEFD4\u0000\u0000\u0000\uEFD5\u8EA2\uD5A7\u0000\uEFD6" + // 11010 - 11014
- "\u0000\u0000\u8EA2\uDBA9\u0000\u0000\u8EA2\uDBAA\u8EA2\uDBA7" + // 11015 - 11019
- "\u8EA2\uDBA8\u0000\uF2DE\u8EA2\uDBA6\u0000\u0000\u0000\u0000" + // 11020 - 11024
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDFF4\u8EA2\uDFF1" + // 11025 - 11029
- "\u8EA2\uDFF3\u0000\uF5EB\u8EA2\uDFF7\u0000\uF5EA\u8EA2\uDFF5" + // 11030 - 11034
- "\u8EA2\uDFF8\u8EA2\uDFF6\u8EA2\uDFF2\u0000\uF5E9\u0000\u0000" + // 11035 - 11039
- "\u8EA2\uE3F9\u0000\u0000\u8EA2\uE3FA\u8EA2\uE3F8\u0000\u0000" + // 11040 - 11044
- "\u8EA2\uE3FC\u0000\uF7D0\u0000\uF7D1\u8EA2\uE7CB\u0000\uF9B4" + // 11045 - 11049
- "\u8EA2\uE3FB\u8EA2\uE7CA\u0000\uF9B3\u8EA2\uEAB3\u8EA2\uEAB4" + // 11050 - 11054
- "\u0000\uFACA\u8EA2\uEAB2\u0000\u0000\u8EA2\uEAB1\u0000\u0000" + // 11055 - 11059
- "\u8EA2\uECCC\u0000\uFBB4\u0000\u0000\u8EA2\uEFD7\u8EA2\uF0D6" + // 11060 - 11064
- "\u8EA2\uF0D5\u0000\u0000\u0000\uA5BE\u0000\uA5BF\u0000\u0000" + // 11065 - 11069
- "\u0000\uA5C0\u0000\uA5C1\u0000\uA5C2\u0000\uA5C3\u0000\uA5C4" + // 11070 - 11074
- "\u0000\uA5C5\u0000\uA5C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 11075 - 11079
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11080 - 11084
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11085 - 11089
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11090 - 11094
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11095 - 11099
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11100 - 11104
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11105 - 11109
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11110 - 11114
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11115 - 11119
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11120 - 11124
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11125 - 11129
- "\u0000\u0000\u0000\u0000\u0000\uCFDB\u0000\u0000\u0000\u0000" + // 11130 - 11134
- "\u8EA2\uBAA8\u8EA2\uC1BF\u8EA2\uD5CE\u8EA2\uE7E3\u0000\u0000" + // 11135 - 11139
- "\u0000\u0000\u0000\uCEFC\u0000\uD2DA\u8EA2\uACC1\u0000\uD2DB" + // 11140 - 11144
- "\u0000\uD2D9\u0000\u0000\u0000\uD2D8\u8EA2\uB1AF\u0000\uD6F4" + // 11145 - 11149
- "\u0000\u0000\u0000\u0000\u0000\uD6F5\u0000\uD6F6\u0000\u0000" + // 11150 - 11154
- "\u0000\u0000\u0000\u0000\u0000\uDCB5\u8EA2\uB7CA\u0000\uDCB4" + // 11155 - 11159
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11160 - 11164
- "\u8EA2\uBEBD\u0000\uDCB6\u0000\uE0F9\u8EA2\uC5BD\u0000\uE5C0" + // 11165 - 11169
- "\u0000\uE5C1\u0000\u0000\u0000\uE9F0\u0000\u0000\u0000\uE9F1" + // 11170 - 11174
- "\u0000\uEDF5\u0000\uF1CE\u8EA2\uD8E1\u0000\uF1CD\u0000\u0000" + // 11175 - 11179
- "\u8EA2\uDDE5\u0000\uF4C5\u0000\u0000\u8EA2\uE2C0\u8EA2\uE9C2" + // 11180 - 11184
- "\u0000\uC6F8\u0000\uCBB1\u8EA2\uA8BA\u8EA2\uA8B9\u0000\uCEFD" + // 11185 - 11189
- "\u8EA2\uA8B8\u0000\uCEFE\u8EA2\uA8BB\u0000\u0000\u8EA2\uACC7" + // 11190 - 11194
- "\u0000\uD2DE\u0000\uD2DD\u8EA2\uACC9\u8EA2\uACC8\u0000\uD2E2" + // 11195 - 11199
- "\u0000\u0000\u0000\uD2E1\u0000\u0000\u8EA2\uD7A9\u0000\uF3DD" + // 11200 - 11204
- "\u8EA2\uDCEA\u0000\u0000\u8EA2\uD7A6\u8EA2\uD7A8\u0000\uF3DE" + // 11205 - 11209
- "\u0000\uF0DC\u0000\uF3DC\u0000\uF0DB\u0000\uF3E0\u8EA2\uD7AA" + // 11210 - 11214
- "\u0000\uF0D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11215 - 11219
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1DB" + // 11220 - 11224
- "\u0000\u0000\u8EA2\uE1D3\u0000\u0000\u0000\u0000\u0000\u0000" + // 11225 - 11229
- "\u0000\u0000\u0000\u0000\u8EA2\uDCF2\u8EA2\uE1D4\u8EA2\uDCEE" + // 11230 - 11234
- "\u0000\u0000\u0000\u0000\u0000\uF6C2\u8EA2\uDCF0\u8EA2\uDCEF" + // 11235 - 11239
- "\u0000\uF3DF\u8EA2\uDCED\u8EA2\uDCF1\u8EA2\uE1DC\u8EA2\uE1D8" + // 11240 - 11244
- "\u8EA2\uE1DA\u0000\u0000\u8EA2\uE1D5\u8EA2\uE1D6\u0000\u0000" + // 11245 - 11249
- "\u8EA2\uE1D9\u8EA2\uE1D7\u0000\uF8B4\u0000\u0000\u0000\u0000" + // 11250 - 11254
- "\u0000\uF8B7\u0000\uF8B6\u0000\uF8B5\u0000\uF9EC\u8EA2\uE8F6" + // 11255 - 11259
- "\u0000\uF9ED\u8EA2\uE5CC\u0000\uFAEA\u8EA2\uEBDA\u0000\uFAEB" + // 11260 - 11264
- "\u0000\uFBE0\u8EA2\uE7C8\u8EA2\uEAB0\u0000\u0000\u8EA2\uEAAF" + // 11265 - 11269
- "\u8EA2\uECCA\u8EA2\uECCB\u8EA2\uECC9\u8EA2\uEEB5\u0000\uFBFA" + // 11270 - 11274
- "\u0000\uCBDC\u0000\uD3EB\u0000\uD3EA\u0000\uD8DA\u0000\uD8D9" + // 11275 - 11279
- "\u8EA2\uB3C3\u8EA2\uB3C4\u8EA2\uB3C2\u0000\u0000\u0000\uD8D8" + // 11280 - 11284
- "\u8EA2\uB9F8\u0000\u0000\u8EA2\uB9F9\u8EA2\uB9F5\u0000\uDDE8" + // 11285 - 11289
- "\u8EA2\uB9F6\u0000\u0000\u8EA2\uB9F7\u0000\u0000\u0000\u0000" + // 11290 - 11294
- "\u0000\u0000\u0000\u0000\u8EA2\uC1A6\u8EA2\uC1A8\u8EA2\uC1A4" + // 11295 - 11299
- "\u8EA2\uC1A7\u0000\uE2D6\u8EA2\uC1A5\u0000\uE2D7\u0000\u0000" + // 11300 - 11304
- "\u0000\u0000\u8EA2\uC2F9\u0000\uE7BD\u0000\uE7BC\u0000\u0000" + // 11305 - 11309
- "\u0000\uE7BB\u0000\u0000\u8EA2\uC8B2\u8EA2\uC8B3\u0000\u0000" + // 11310 - 11314
- "\u0000\u0000\u8EA2\uCEDB\u8EA2\uCEDD\u0000\uEBCE\u0000\uEBCB" + // 11315 - 11319
- "\u0000\u0000\u0000\uEBCD\u0000\uEBCC\u8EA2\uCEDC\u8EA2\uCEDA" + // 11320 - 11324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11325 - 11329
- "\u0000\uD9B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11330 - 11334
- "\u0000\uC4B4\u0000\uC4C6\u0000\uC5AF\u0000\uC5AE\u0000\u0000" + // 11335 - 11339
- "\u0000\uC5B0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11340 - 11344
- "\u0000\u0000\u0000\u0000\u0000\uCCBE\u0000\u0000\u0000\uCCBD" + // 11345 - 11349
- "\u0000\uCCBF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0B5" + // 11350 - 11354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4D1\u0000\u0000" + // 11355 - 11359
- "\u8EA2\uD6C6\u0000\uF6BB\u0000\uC4C7\u0000\uC6AC\u0000\uC6BB" + // 11360 - 11364
- "\u0000\uC6B6\u0000\u0000\u0000\uC6B1\u0000\uC6B0\u0000\uC6B7" + // 11365 - 11369
- "\u0000\uC6B5\u0000\uC6AE\u0000\uC6BC\u0000\uC6AF\u0000\uC6AB" + // 11370 - 11374
- "\u0000\uC6BA\u0000\uC6B9\u0000\uC6B8\u0000\uC6AD\u0000\u0000" + // 11375 - 11379
- "\u0000\uC6B4\u0000\u0000\u0000\u0000\u0000\uC6B3\u0000\u0000" + // 11380 - 11384
- "\u0000\u0000\u0000\uC6BD\u0000\uC6B2\u0000\u0000\u0000\u0000" + // 11385 - 11389
- "\u0000\u0000\u0000\uF6D3\u0000\uF6D0\u0000\u0000\u8EA2\uE1E9" + // 11390 - 11394
- "\u8EA2\uE1ED\u8EA2\uE1F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11395 - 11399
- "\u8EA2\uE5DC\u8EA2\uE5D9\u8EA2\uE5E2\u0000\u0000\u8EA2\uE5E1" + // 11400 - 11404
- "\u8EA2\uE5DF\u8EA2\uE5DA\u0000\u0000\u0000\uF8BF\u0000\u0000" + // 11405 - 11409
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE5DB" + // 11410 - 11414
- "\u0000\uF8BE\u0000\uF3F6\u8EA2\uE5DE\u0000\uF8BD\u8EA2\uE5E3" + // 11415 - 11419
- "\u8EA2\uE5DD\u8EA2\uE5D8\u8EA2\uE1EC\u0000\u0000\u0000\u0000" + // 11420 - 11424
- "\u0000\u0000\u0000\uF8BC\u0000\u0000\u8EA2\uE5D7\u8EA2\uE9A4" + // 11425 - 11429
- "\u0000\u0000\u8EA2\uE9A3\u8EA2\uE5E0\u0000\uF9F3\u0000\u0000" + // 11430 - 11434
- "\u8EA2\uE9A7\u8EA2\uE9A8\u8EA2\uE9A2\u8EA2\uE9A6\u0000\u0000" + // 11435 - 11439
- "\u8EA2\uE9A1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11440 - 11444
- "\u8EA2\uEBDF\u8EA2\uE9A5\u0000\uFAF2\u0000\uFAF0\u8EA2\uEBDD" + // 11445 - 11449
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDDA\u0000\u0000" + // 11450 - 11454
- "\u0000\uCDD8\u0000\u0000\u0000\uCDF0\u0000\uCDE8\u0000\uCDE2" + // 11455 - 11459
- "\u0000\uCDD6\u8EA2\uA6F8\u0000\uCDE1\u0000\uCDD7\u0000\uCDE9" + // 11460 - 11464
- "\u0000\uCDF2\u8EA2\uAAD5\u0000\uCDE6\u8EA2\uA6F4\u0000\uCDDC" + // 11465 - 11469
- "\u0000\uCDDF\u0000\uCDE0\u0000\u0000\u0000\uCDEE\u0000\uCDEF" + // 11470 - 11474
- "\u0000\uCDED\u0000\uCDE7\u0000\uCDEB\u0000\uCDDD\u0000\uD1B8" + // 11475 - 11479
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11480 - 11484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11485 - 11489
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAADB" + // 11490 - 11494
- "\u0000\uD1C4\u0000\uD1BC\u0000\uD1BE\u0000\uD1C3\u8EA2\uAAE7" + // 11495 - 11499
- "\u0000\uD1C1\u8EA2\uAFB3\u0000\uD5D3\u0000\uD1C6\u8EA2\uAAD8" + // 11500 - 11504
- "\u8EA2\uAAE0\u0000\uD1C2\u8EA2\uAADF\u8EA2\uAADC\u8EA2\uAAE4" + // 11505 - 11509
- "\u8EA2\uAAE6\u0000\uD1BB\u0000\uD1BF\u0000\uD1C5\u0000\uD5D5" + // 11510 - 11514
- "\u8EA2\uC0FE\u8EA2\uC0FD\u0000\uE2D2\u8EA2\uC1A3\u8EA2\uC0F7" + // 11515 - 11519
- "\u8EA2\uC1A2\u8EA2\uC0F5\u8EA2\uC1A1\u8EA2\uC0FA\u0000\uE2D4" + // 11520 - 11524
- "\u0000\u0000\u8EA2\uC8B0\u0000\u0000\u8EA2\uC8AB\u8EA2\uC8B1" + // 11525 - 11529
- "\u8EA2\uC8AC\u8EA2\uC8AA\u8EA2\uC8AD\u0000\uE7B9\u0000\u0000" + // 11530 - 11534
- "\u8EA2\uC8AF\u0000\u0000\u8EA2\uC8AE\u0000\uE7BA\u0000\uEBC9" + // 11535 - 11539
- "\u0000\uEBC8\u8EA2\uCED6\u8EA2\uCED9\u8EA2\uCED1\u8EA2\uCED5" + // 11540 - 11544
- "\u0000\uEBCA\u8EA2\uCED4\u8EA2\uCED2\u8EA2\uCED8\u8EA2\uCED3" + // 11545 - 11549
- "\u8EA2\uCED0\u8EA2\uCED7\u0000\u0000\u8EA2\uD5A3\u0000\uEFD2" + // 11550 - 11554
- "\u8EA2\uE3F4\u8EA2\uD4FE\u8EA2\uD5A1\u8EA2\uD4FD\u8EA2\uC0F6" + // 11555 - 11559
- "\u0000\uEFD1\u8EA2\uD5A4\u8EA2\uD4FC\u0000\uEFD0\u0000\uEFD3" + // 11560 - 11564
- "\u8EA2\uD5A2\u8EA2\uDBA3\u0000\uF2DD\u8EA2\uDBA4\u8EA2\uDBA5" + // 11565 - 11569
- "\u0000\u0000\u8EA2\uDFF0\u0000\uF5E8\u8EA2\uE3F5\u8EA2\uE3F6" + // 11570 - 11574
- "\u0000\u0000\u0000\u0000\u8EA2\uE3F7\u8EA2\uE7C9\u0000\uF5E7" + // 11575 - 11579
- "\u0000\uF5E5\u0000\uF5E6\u0000\uF7CE\u0000\uF5E4\u8EA2\uDFEE" + // 11580 - 11584
- "\u8EA2\uDBA1\u0000\uF7CD\u0000\uF7CF\u0000\u0000\u0000\uF9B1" + // 11585 - 11589
- "\u0000\uF9B2\u0000\u0000\u8EA2\uEAAE\u0000\u0000\u0000\uFCCA" + // 11590 - 11594
- "\u0000\uFCC9\u0000\uCBD7\u0000\u0000\u0000\u0000\u8EA2\uA2F5" + // 11595 - 11599
- "\u0000\uD8D4\u0000\u0000\u8EA2\uA2F2\u8EA2\uA2F3\u8EA2\uA2F1" + // 11600 - 11604
- "\u0000\u0000\u8EA2\uA2F4\u0000\u0000\u0000\u0000\u8EA2\uA5AA" + // 11605 - 11609
- "\u8EA2\uA5A7\u8EA2\uA5AC\u8EA2\uA5A8\u0000\uCBD8\u0000\uCBDB" + // 11610 - 11614
- "\u0000\u0000\u8EA2\uA5A9\u0000\uCBDA\u8EA2\uA5AB\u0000\u0000" + // 11615 - 11619
- "\u0000\u0000\u0000\uCBD9\u0000\u0000\u0000\u0000\u0000\u0000" + // 11620 - 11624
- "\u0000\u0000\u8EA2\uA8F5\u8EA2\uA8F7\u0000\uCFD7\u8EA2\uA8F3" + // 11625 - 11629
- "\u8EA2\uA8F6\u8EA2\uA8F4\u0000\uCFD5\u0000\uCFD8\u0000\u0000" + // 11630 - 11634
- "\u0000\uCFD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11635 - 11639
- "\u8EA2\uADD9\u8EA2\uADDD\u8EA2\uADDA\u0000\uD8CD\u0000\uD8CA" + // 11640 - 11644
- "\u8EA2\uB3B0\u0000\uD8D0\u8EA2\uB3B3\u0000\uD8D2\u0000\uD8CB" + // 11645 - 11649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB9E6" + // 11650 - 11654
- "\u8EA2\uB9E9\u0000\uDDD6\u0000\u0000\u0000\uDDE0\u0000\uDDDC" + // 11655 - 11659
- "\u8EA2\uB9E7\u0000\u0000\u0000\u0000\u0000\uDDE4\u0000\uDDDD" + // 11660 - 11664
- "\u0000\uDDE2\u0000\uDDD8\u0000\u0000\u0000\uDDD5\u0000\uDDD7" + // 11665 - 11669
- "\u0000\uDDE3\u8EA2\uB9E8\u0000\uDDDB\u0000\uDDDE\u0000\uDDDA" + // 11670 - 11674
- "\u0000\uDDDF\u8EA2\uB9EA\u0000\uDDE1\u0000\uDDD9\u8EA2\uB9E5" + // 11675 - 11679
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11680 - 11684
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0F2\u0000\uE2CC" + // 11685 - 11689
- "\u8EA2\uC0F4\u0000\u0000\u0000\uE2CE\u0000\uE2D0\u0000\u0000" + // 11690 - 11694
- "\u8EA2\uC0F3\u0000\uE2CD\u0000\uE2D1\u0000\u0000\u0000\uE2CF" + // 11695 - 11699
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AF\u8EA2\uC8A9" + // 11700 - 11704
- "\u0000\uE7B7\u8EA2\uC8A6\u8EA2\uDFED\u0000\u0000\u0000\uF5DF" + // 11705 - 11709
- "\u8EA2\uDFEC\u0000\uF5DD\u0000\uF5E0\u8EA2\uE3F0\u8EA2\uE3F1" + // 11710 - 11714
- "\u8EA2\uE3F2\u0000\uF7CB\u0000\u0000\u8EA2\uE3F3\u0000\u0000" + // 11715 - 11719
- "\u0000\uF7CC\u0000\uF9AF\u8EA2\uE7C4\u8EA2\uE7C5\u8EA2\uE7C3" + // 11720 - 11724
- "\u8EA2\uE7C2\u8EA2\uE7C6\u0000\uF9AE\u8EA2\uEAAB\u8EA2\uEAA9" + // 11725 - 11729
- "\u8EA2\uEAAA\u8EA2\uEAAC\u8EA2\uEAA8\u8EA2\uEAAD\u8EA2\uECC7" + // 11730 - 11734
- "\u0000\u0000\u8EA2\uECC8\u8EA2\uECC6\u0000\uFBB2\u8EA2\uEEB3" + // 11735 - 11739
- "\u0000\uFBF9\u8EA2\uEEB4\u8EA2\uEFD6\u8EA2\uEFD5\u0000\u0000" + // 11740 - 11744
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11745 - 11749
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11750 - 11754
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11755 - 11759
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11760 - 11764
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11765 - 11769
- "\u0000\u0000\u0000\uA2B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 11770 - 11774
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11775 - 11779
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11780 - 11784
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11785 - 11789
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11790 - 11794
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11795 - 11799
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2B3\u0000\u0000" + // 11800 - 11804
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11805 - 11809
- "\u0000\u0000\u0000\u0000\u0000\uE4B8\u0000\u0000\u0000\u0000" + // 11810 - 11814
- "\u8EA2\uC3A4\u8EA2\uC3B7\u8EA2\uC3BC\u8EA2\uC3B0\u0000\uE4B4" + // 11815 - 11819
- "\u8EA2\uC3C1\u0000\uE4B1\u8EA2\uC3A2\u0000\u0000\u8EA2\uC3A3" + // 11820 - 11824
- "\u0000\uE4AA\u0000\uE4B3\u8EA2\uC3AA\u0000\uE4B6\u0000\uE4B7" + // 11825 - 11829
- "\u8EA2\uC3AB\u0000\u0000\u8EA2\uC3B8\u8EA2\uC3BE\u0000\uE4B2" + // 11830 - 11834
- "\u0000\u0000\u0000\uE4AC\u8EA2\uC3A9\u8EA2\uC3A5\u8EA2\uC3C0" + // 11835 - 11839
- "\u8EA2\uC3AE\u8EA2\uC3AF\u8EA2\uC3A6\u8EA2\uC3BA\u8EA2\uC3B1" + // 11840 - 11844
- "\u8EA2\uC3BB\u8EA2\uC3B3\u0000\u0000\u0000\uE4AD\u8EA2\uCAC0" + // 11845 - 11849
- "\u0000\uE4B0\u0000\uE4AE\u8EA2\uC3BF\u8EA2\uC3B6\u8EA2\uC3B2" + // 11850 - 11854
- "\u0000\u0000\u0000\u0000\u8EA2\uC3A7\u0000\uE8FA\u8EA2\uC3B5" + // 11855 - 11859
- "\u0000\uE4B5\u8EA2\uC3AD\u0000\u0000\u8EA2\uC3AC\u0000\u0000" + // 11860 - 11864
- "\u0000\u0000\u0000\u0000\u0000\uE4AF\u0000\uE4AB\u8EA2\uCAD5" + // 11865 - 11869
- "\u8EA2\uC7FD\u8EA2\uC7FC\u8EA2\uC8A3\u0000\uE7A4\u0000\u0000" + // 11870 - 11874
- "\u8EA2\uC7FE\u8EA2\uC7FA\u8EA2\uC8A1\u8EA2\uC8A2\u0000\uE7A5" + // 11875 - 11879
- "\u0000\uE7A7\u8EA2\uC8A4\u0000\u0000\u8EA2\uCECF\u8EA2\uCECE" + // 11880 - 11884
- "\u0000\u0000\u8EA2\uCECC\u8EA2\uCECD\u0000\uEBBB\u0000\uEBBD" + // 11885 - 11889
- "\u0000\uEBBA\u0000\uEBBC\u8EA2\uD4F5\u8EA2\uD4F6\u8EA2\uD4F1" + // 11890 - 11894
- "\u0000\u0000\u8EA2\uD4F2\u0000\uEFC3\u0000\uEFC8\u0000\uEFC2" + // 11895 - 11899
- "\u0000\uEFC9\u0000\uEFC4\u8EA2\uD4F3\u0000\u0000\u0000\u0000" + // 11900 - 11904
- "\u8EA2\uD4F4\u8EA2\uD4F0\u0000\uEFCA\u0000\uEFC6\u0000\u0000" + // 11905 - 11909
- "\u0000\u0000\u0000\uEFC5\u0000\uEFC7\u0000\u0000\u8EA2\uD4EF" + // 11910 - 11914
- "\u0000\u0000\u8EA2\uDAF6\u0000\uF2D2\u0000\u0000\u0000\u0000" + // 11915 - 11919
- "\u8EA2\uDAF8\u0000\uF2D4\u8EA2\uDAFB\u8EA2\uDAF7\u8EA2\uDAF5" + // 11920 - 11924
- "\u8EA2\uDAFA\u0000\uF2D3\u8EA2\uDAF9\u0000\u0000\u0000\uF2D1" + // 11925 - 11929
- "\u0000\u0000\u0000\u0000\u0000\uF5DE\u0000\uF5E1\u0000\uF7CA" + // 11930 - 11934
- "\u0000\u0000\u8EA2\uE7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11935 - 11939
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1FA\u0000\uCBCF" + // 11940 - 11944
- "\u0000\uCFD1\u0000\uD3DC\u0000\uD3DB\u0000\u0000\u0000\uD8C8" + // 11945 - 11949
- "\u0000\u0000\u8EA2\uB3AC\u0000\uD8C6\u8EA2\uB3AD\u0000\uD8C7" + // 11950 - 11954
- "\u0000\u0000\u0000\u0000\u8EA2\uB9E2\u8EA2\uB9DE\u0000\u0000" + // 11955 - 11959
- "\u0000\u0000\u0000\uDDD3\u8EA2\uB9E1\u8EA2\uB9E0\u8EA2\uB9DF" + // 11960 - 11964
- "\u0000\uDDD4\u8EA2\uB9E3\u8EA2\uB9E4\u0000\u0000\u0000\u0000" + // 11965 - 11969
- "\u0000\u0000\u8EA2\uC0E8\u8EA2\uC0E6\u8EA2\uC0EA\u8EA2\uC0EB" + // 11970 - 11974
- "\u8EA2\uC0F1\u0000\u0000\u8EA2\uC0ED\u8EA2\uC0EF\u0000\u0000" + // 11975 - 11979
- "\u8EA2\uC0E7\u8EA2\uC0E2\u0000\u0000\u8EA2\uC0EE\u0000\u0000" + // 11980 - 11984
- "\u0000\u0000\u8EA2\uC0F0\u8EA2\uC0E9\u8EA2\uC0EC\u8EA2\uC0E3" + // 11985 - 11989
- "\u0000\uE2C9\u8EA2\uC0E5\u8EA2\uC0E4\u0000\uE2C8\u0000\uE2CA" + // 11990 - 11994
- "\u0000\u0000\u0000\uE7A6\u8EA2\uC7FB\u8EA2\uDAEC\u8EA2\uDAF1" + // 11995 - 11999
- "\u0000\uF2CE\u0000\u0000\u0000\uF2CB\u8EA2\uDAED\u0000\u0000" + // 12000 - 12004
- "\u8EA2\uDFEB\u0000\uF5DB\u0000\uF5D9\u0000\uF5DC\u0000\uF5DA" + // 12005 - 12009
- "\u8EA2\uDFEA\u8EA2\uDFE7\u8EA2\uDFE6\u0000\u0000\u8EA2\uDFE9" + // 12010 - 12014
- "\u0000\u0000\u0000\u0000\u8EA2\uDFE8\u8EA2\uE3EF\u0000\uF7C9" + // 12015 - 12019
- "\u8EA2\uE3E6\u8EA2\uE3E5\u0000\u0000\u0000\uF7C4\u8EA2\uE3EB" + // 12020 - 12024
- "\u8EA2\uE3EA\u8EA2\uE3E2\u8EA2\uE3ED\u8EA2\uE3E7\u0000\uF7C8" + // 12025 - 12029
- "\u8EA2\uE3E4\u8EA2\uE3EC\u8EA2\uE3E3\u0000\uF7C5\u0000\uF7C7" + // 12030 - 12034
- "\u8EA2\uE3E8\u0000\uF7C6\u8EA2\uE3E9\u0000\u0000\u8EA2\uE3EE" + // 12035 - 12039
- "\u8EA2\uE7BE\u0000\u0000\u0000\uF9AB\u8EA2\uE7BB\u0000\u0000" + // 12040 - 12044
- "\u8EA2\uE7BF\u0000\u0000\u0000\u0000\u0000\uF9A8\u8EA2\uE7BD" + // 12045 - 12049
- "\u0000\uF9AD\u0000\u0000\u0000\uF9AA\u0000\u0000\u8EA2\uE7BC" + // 12050 - 12054
- "\u0000\u0000\u0000\uF9AC\u8EA2\uE7C0\u0000\uF9A7\u0000\u0000" + // 12055 - 12059
- "\u0000\u0000\u0000\u0000\u0000\uE4CD\u8EA2\uC5AC\u0000\u0000" + // 12060 - 12064
- "\u0000\u0000\u0000\uE4D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 12065 - 12069
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCAF0\u8EA2\uCAEE" + // 12070 - 12074
- "\u0000\u0000\u8EA2\uCBA6\u8EA2\uCAEC\u0000\u0000\u8EA2\uCAFE" + // 12075 - 12079
- "\u0000\uE4C5\u0000\uE9A8\u8EA2\uCAE8\u8EA2\uCBA5\u0000\u0000" + // 12080 - 12084
- "\u8EA2\uCAED\u8EA2\uCAFB\u0000\uE9AD\u0000\uE9A6\u0000\u0000" + // 12085 - 12089
- "\u8EA2\uCBA3\u0000\u0000\u8EA2\uCAE6\u8EA2\uCBA2\u0000\u0000" + // 12090 - 12094
- "\u0000\uE9B8\u8EA2\uCAF7\u8EA2\uCBA9\u0000\uE9B6\u8EA2\uCAEF" + // 12095 - 12099
- "\u0000\uE9A7\u8EA2\uCAF1\u8EA2\uCBA1\u0000\uE9B0\u8EA2\uCAEA" + // 12100 - 12104
- "\u0000\uE9B4\u0000\uE9AA\u8EA2\uCAF3\u8EA2\uCAE9\u8EA2\uCAE3" + // 12105 - 12109
- "\u0000\u0000\u8EA2\uCAFD\u0000\uE9B1\u8EA2\uCBA8\u8EA2\uCAE4" + // 12110 - 12114
- "\u0000\uE9AE\u0000\u0000\u8EA2\uCAF9\u0000\u0000\u0000\uE9AF" + // 12115 - 12119
- "\u8EA2\uCAEB\u8EA2\uCAF6\u8EA2\uCAF2\u8EA2\uCAF4\u8EA2\uCECA" + // 12120 - 12124
- "\u0000\u0000\u8EA2\uCEC0\u8EA2\uCEC5\u8EA2\uCECB\u8EA2\uCEC8" + // 12125 - 12129
- "\u8EA2\uCEC7\u8EA2\uCEC6\u0000\u0000\u8EA2\uCEBF\u8EA2\uCEC4" + // 12130 - 12134
- "\u0000\u0000\u0000\u0000\u8EA2\uCEC2\u0000\u0000\u0000\uEFBC" + // 12135 - 12139
- "\u0000\uEFB9\u8EA2\uD4E4\u8EA2\uD4E9\u8EA2\uD4EB\u8EA2\uD4E8" + // 12140 - 12144
- "\u8EA2\uD4E1\u8EA2\uD4E3\u8EA2\uD4ED\u8EA2\uD4EA\u8EA2\uD4E5" + // 12145 - 12149
- "\u8EA2\uD4EE\u8EA2\uD4E2\u8EA2\uD4EC\u0000\uEFBA\u0000\uEFC0" + // 12150 - 12154
- "\u0000\uEFBE\u8EA2\uD4DC\u0000\uEFBF\u0000\uEFBB\u8EA2\uD4DD" + // 12155 - 12159
- "\u8EA2\uD4DF\u8EA2\uD4DE\u8EA2\uD4E6\u8EA2\uD4E7\u0000\u0000" + // 12160 - 12164
- "\u0000\uEFBD\u0000\u0000\u0000\uEFB8\u0000\u0000\u0000\u0000" + // 12165 - 12169
- "\u8EA2\uD4E0\u0000\u0000\u8EA2\uDAF2\u0000\uF2CC\u0000\u0000" + // 12170 - 12174
- "\u8EA2\uDAE9\u0000\uF2CD\u0000\uF2D0\u8EA2\uDAEE\u0000\u0000" + // 12175 - 12179
- "\u8EA2\uDAEB\u0000\uF2CF\u0000\u0000\u0000\u0000\u8EA2\uDAEF" + // 12180 - 12184
- "\u8EA2\uDAF0\u8EA2\uDAEA\u8EA2\uDAF3\u8EA2\uC0D4\u0000\uE2BF" + // 12185 - 12189
- "\u0000\u0000\u0000\u0000\u8EA2\uC0D3\u0000\uE2BE\u0000\u0000" + // 12190 - 12194
- "\u0000\u0000\u0000\u0000\u8EA2\uC0D5\u0000\uE2BD\u0000\u0000" + // 12195 - 12199
- "\u8EA2\uC7E5\u8EA2\uC7E8\u8EA2\uC7E6\u8EA2\uC7E7\u8EA2\uC7EB" + // 12200 - 12204
- "\u8EA2\uC7E4\u8EA2\uC7EC\u8EA2\uC7E9\u8EA2\uC7EA\u0000\uEBB8" + // 12205 - 12209
- "\u8EA2\uCEBE\u0000\u0000\u0000\u0000\u0000\uEBB7\u0000\u0000" + // 12210 - 12214
- "\u8EA2\uD4DB\u8EA2\uD4D9\u0000\u0000\u0000\u0000\u0000\uEFB6" + // 12215 - 12219
- "\u8EA2\uD4D8\u8EA2\uD4DA\u0000\u0000\u0000\uEFB7\u0000\u0000" + // 12220 - 12224
- "\u8EA2\uDAE7\u0000\u0000\u8EA2\uDAE8\u0000\uF5D8\u0000\u0000" + // 12225 - 12229
- "\u8EA2\uE7B8\u8EA2\uE7BA\u8EA2\uE7B7\u8EA2\uE7B9\u8EA2\uEAA4" + // 12230 - 12234
- "\u8EA2\uECC3\u0000\u0000\u0000\u0000\u8EA2\uF1DE\u0000\uCBCD" + // 12235 - 12239
- "\u0000\uD3DA\u8EA2\uB3A9\u8EA2\uB3AB\u8EA2\uB3AA\u0000\u0000" + // 12240 - 12244
- "\u8EA2\uB9DB\u0000\uDDD2\u0000\u0000\u8EA2\uB9D9\u0000\u0000" + // 12245 - 12249
- "\u0000\uDDD1\u8EA2\uB9DC\u8EA2\uE3E1\u0000\u0000\u8EA2\uE3E0" + // 12250 - 12254
- "\u0000\u0000\u8EA2\uE3DF\u0000\uF7C3\u8EA2\uE7B4\u8EA2\uE7B5" + // 12255 - 12259
- "\u0000\uF9A5\u8EA2\uE7B6\u0000\uF9A6\u0000\u0000\u0000\u0000" + // 12260 - 12264
- "\u0000\uFAC5\u0000\u0000\u0000\uFAC4\u8EA2\uECC1\u0000\u0000" + // 12265 - 12269
- "\u0000\u0000\u0000\uFBAE\u8EA2\uECC2\u8EA2\uEEAB\u0000\uFBF5" + // 12270 - 12274
- "\u0000\uFBF6\u0000\u0000\u8EA2\uEFD3\u0000\u0000\u0000\uFCED" + // 12275 - 12279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12280 - 12284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12285 - 12289
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12290 - 12294
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12295 - 12299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12300 - 12304
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12305 - 12309
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12310 - 12314
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12315 - 12319
- "\u0000\uD8EC\u0000\u0000\u0000\u0000\u8EA2\uC8EF\u0000\u0000" + // 12320 - 12324
- "\u8EA2\uC8EE\u0000\u0000\u0000\uEBF3\u0000\uEBF4\u8EA2\uCFC2" + // 12325 - 12329
- "\u0000\u0000\u8EA2\uD5FB\u8EA2\uDBF8\u0000\u0000\u0000\u0000" + // 12330 - 12334
- "\u0000\uEFFE\u0000\uF3B0\u8EA2\uDBF6\u0000\u0000\u8EA2\uDBF9" + // 12335 - 12339
- "\u0000\uF3B1\u0000\u0000\u8EA2\uE0F0\u8EA2\uDBF7\u0000\uE2B7" + // 12340 - 12344
- "\u0000\uE2B5\u0000\uE6F6\u0000\uE6F5\u0000\uE6F3\u0000\uE6F7" + // 12345 - 12349
- "\u0000\u0000\u0000\uE6F1\u0000\uE6F2\u0000\u0000\u0000\uE6F0" + // 12350 - 12354
- "\u0000\u0000\u8EA2\uC7E1\u0000\u0000\u0000\u0000\u8EA2\uCEBC" + // 12355 - 12359
- "\u0000\u0000\u0000\uEBB4\u0000\uEBB5\u0000\uEBB3\u0000\u0000" + // 12360 - 12364
- "\u8EA2\uCEBB\u0000\u0000\u8EA2\uCEBD\u0000\u0000\u8EA2\uD4D3" + // 12365 - 12369
- "\u8EA2\uD4D5\u0000\u0000\u0000\uEFB2\u8EA2\uD4D6\u0000\uEFAB" + // 12370 - 12374
- "\u8EA2\uD4D2\u0000\uEFAA\u0000\uEFB4\u0000\uEFB0\u0000\uEFB1" + // 12375 - 12379
- "\u0000\uEFAD\u8EA2\uD4D1\u0000\uEFAC\u8EA2\uD4D7\u8EA2\uD4D4" + // 12380 - 12384
- "\u0000\u0000\u0000\uEFB3\u0000\u0000\u0000\uEFAE\u0000\uEFAF" + // 12385 - 12389
- "\u8EA2\uDAE1\u0000\u0000\u8EA2\uDAE3\u8EA2\uDAE2\u0000\u0000" + // 12390 - 12394
- "\u8EA2\uDAE4\u0000\uF2CA\u8EA2\uDAE0\u0000\u0000\u0000\u0000" + // 12395 - 12399
- "\u0000\uF5D6\u8EA2\uDFE4\u0000\uF5D3\u0000\uF5D7\u0000\uF5D5" + // 12400 - 12404
- "\u0000\uF5D4\u8EA2\uE3DE\u0000\u0000\u0000\u0080\u0000\u0081" + // 12405 - 12409
- "\u0000\u0082\u0000\u0083\u0000\u0084\u0000\u0085\u0000\u0086" + // 12410 - 12414
- "\u0000\u0087\u0000\u0088\u0000\u0089\u0000\u008A\u0000\u008B" + // 12415 - 12419
- "\u0000\u008C\u0000\u008D\u0000\u0000\u0000\u0000\u0000\u0090" + // 12420 - 12424
- "\u0000\u0091\u0000\u0092\u0000\u0093\u0000\u0094\u0000\u0095" + // 12425 - 12429
- "\u0000\u0096\u0000\u0097\u0000\u0098\u0000\u0099\u0000\u009A" + // 12430 - 12434
- "\u0000\u009B\u0000\u009C\u0000\u009D\u0000\u009E\u0000\u009F" + // 12435 - 12439
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12440 - 12444
- "\u0000\u0000\u0000\u0000\u0000\uA1F0\u8EAD\uA1A3\u0000\u0000" + // 12445 - 12449
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12450 - 12454
- "\u0000\u0000\u0000\uA2F8\u0000\uA2B4\u0000\u0000\u0000\u0000" + // 12455 - 12459
- "\u8EAD\uA1B2\u0000\u0000\u8EAD\uA1D1\u0000\uA1B1\u0000\u0000" + // 12460 - 12464
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12465 - 12469
- "\u0000\u0000\u0000\u0000\u8EA2\uAAAC\u8EA2\uAAA5\u8EA2\uAAAB" + // 12470 - 12474
- "\u8EA2\uAAA4\u8EA2\uAAA6\u8EA2\uA9FE\u8EA2\uA9FC\u0000\u0000" + // 12475 - 12479
- "\u8EA2\uAAAD\u8EA2\uAAAA\u8EA2\uA9FA\u0000\u0000\u0000\uD0F2" + // 12480 - 12484
- "\u8EA2\uAAA8\u8EA2\uAAA9\u0000\u0000\u8EA2\uAAA7\u8EA2\uA9FD" + // 12485 - 12489
- "\u8EA2\uA9FB\u0000\uD0F1\u8EA2\uAAA3\u8EA2\uAAA1\u0000\u0000" + // 12490 - 12494
- "\u0000\u0000\u8EA2\uAAA2\u8EA2\uAAAE\u0000\u0000\u0000\u0000" + // 12495 - 12499
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12500 - 12504
- "\u0000\u0000\u0000\uD5B3\u0000\u0000\u0000\uD5B2\u0000\u0000" + // 12505 - 12509
- "\u8EA2\uAEEE\u0000\uD5AF\u8EA2\uAEF0\u0000\u0000\u0000\uD5B4" + // 12510 - 12514
- "\u8EA2\uAEF1\u0000\u0000\u0000\u0000\u0000\uD5B7\u0000\u0000" + // 12515 - 12519
- "\u0000\uD5B5\u8EA2\uAEF2\u8EA2\uAAAF\u8EA2\uAEF4\u0000\u0000" + // 12520 - 12524
- "\u0000\uD5B1\u0000\u0000\u0000\uD5B0\u0000\u0000\u8EA2\uAEEF" + // 12525 - 12529
- "\u8EA2\uC0CD\u8EA2\uC0CC\u0000\uE2B0\u0000\u0000\u8EA2\uC7DF" + // 12530 - 12534
- "\u8EA2\uC7E0\u8EA2\uC7DE\u0000\u0000\u0000\u0000\u0000\uE6EF" + // 12535 - 12539
- "\u0000\uE6EE\u0000\u0000\u0000\uEBB2\u0000\uEBB1\u0000\u0000" + // 12540 - 12544
- "\u8EA2\uD4D0\u8EA2\uDADF\u8EA2\uDADD\u8EA2\uDADE\u0000\uF2C9" + // 12545 - 12549
- "\u8EA2\uDFE3\u8EA2\uDFE2\u0000\u0000\u8EA2\uE3DD\u8EA2\uE3DC" + // 12550 - 12554
- "\u8EA2\uE3DB\u8EA2\uE7B3\u0000\u0000\u8EA2\uF1F8\u0000\uCBCA" + // 12555 - 12559
- "\u0000\uD3D6\u0000\u0000\u0000\uD3D7\u0000\uD8C2\u0000\uD8C3" + // 12560 - 12564
- "\u8EA2\uB3A6\u8EA2\uB3A5\u8EA2\uB9D5\u0000\u0000\u0000\uDDCE" + // 12565 - 12569
- "\u0000\uDDCC\u0000\uDDC9\u0000\uDDCD\u0000\uDDCB\u0000\uDDCA" + // 12570 - 12574
- "\u0000\u0000\u0000\u0000\u0000\uE2B1\u8EA2\uC0D0\u0000\u0000" + // 12575 - 12579
- "\u0000\uE6F4\u0000\uE2B3\u0000\uE2B8\u8EA2\uC0D2\u0000\uE2BA" + // 12580 - 12584
- "\u0000\uE2B9\u0000\uE2BC\u8EA2\uC0D1\u8EA2\uC0CE\u0000\uE2B6" + // 12585 - 12589
- "\u0000\uE2B2\u0000\uE2B4\u8EA2\uC0CF\u0000\uE2BB\u0000\uFBF4" + // 12590 - 12594
- "\u0000\u0000\u8EA2\uEEA7\u0000\u0000\u8EA2\uEEA6\u8EA2\uEEA9" + // 12595 - 12599
- "\u8EA2\uEEA8\u0000\u0000\u8EA2\uEFD1\u0000\u0000\u0000\uFCC8" + // 12600 - 12604
- "\u8EA2\uEFD0\u8EA2\uEFCE\u0000\u0000\u8EA2\uEFCF\u0000\u0000" + // 12605 - 12609
- "\u0000\u0000\u0000\u0000\u0000\uFCEA\u0000\uFCE9\u8EA2\uF0CF" + // 12610 - 12614
- "\u8EA2\uF0D0\u0000\uFCEB\u0000\u0000\u8EA2\uF1BC\u8EA2\uF1BD" + // 12615 - 12619
- "\u0000\uFDB4\u0000\u0000\u0000\uFDBA\u0000\u0000\u8EA2\uF1F7" + // 12620 - 12624
- "\u8EA2\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12625 - 12629
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12630 - 12634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12635 - 12639
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12640 - 12644
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12645 - 12649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12650 - 12654
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA4AB\u0000\uA4AC" + // 12655 - 12659
- "\u0000\uA4AD\u0000\uA4AE\u0000\uA4AF\u0000\uA4B0\u0000\uA4B1" + // 12660 - 12664
- "\u0000\uA4B2\u0000\uA4B3\u0000\uA4B4\u0000\u0000\u0000\u0000" + // 12665 - 12669
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6B5" + // 12670 - 12674
- "\u0000\uA6B6\u0000\uA6B7\u0000\uA6B8\u0000\uA6B9\u0000\uA6BA" + // 12675 - 12679
- "\u0000\uA6BB\u0000\uA6BC\u0000\uA6BD\u0000\uA6BE\u0000\u0000" + // 12680 - 12684
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12685 - 12689
- "\u8EA2\uEAFB\u8EA2\uEBA3\u8EA2\uEBA1\u8EA2\uEAF9\u8EA2\uEBA6" + // 12690 - 12694
- "\u0000\u0000\u8EA2\uEAF8\u0000\u0000\u0000\uFADA\u8EA2\uEBA2" + // 12695 - 12699
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFC\u0000\uFAD9" + // 12700 - 12704
- "\u8EA2\uEBA5\u0000\u0000\u0000\u0000\u8EA2\uEBA4\u0000\u0000" + // 12705 - 12709
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECF7\u8EA2\uECF6" + // 12710 - 12714
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECFD\u0000\u0000" + // 12715 - 12719
- "\u8EA2\uECF9\u8EA2\uECFC\u0000\uFBCC\u0000\u0000\u0000\u0000" + // 12720 - 12724
- "\u8EA2\uECFA\u8EA2\uECFB\u0000\u0000\u8EA2\uECF5\u8EA2\uECF8" + // 12725 - 12729
- "\u0000\uFBCB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB" + // 12730 - 12734
- "\u8EA2\uEEE1\u8EA2\uEEDC\u8EA2\uEEE0\u0000\u0000\u8EA2\uEEE3" + // 12735 - 12739
- "\u8EA2\uEEDF\u0000\u0000\u8EA2\uEEDB\u0000\u0000\u0000\uFCAD" + // 12740 - 12744
- "\u8EA2\uEEDE\u8EA2\uEEE2\u0000\uFCAC\u8EA2\uEED9\u8EA2\uE7A6" + // 12745 - 12749
- "\u0000\uF8FA\u8EA2\uE7AD\u0000\u0000\u0000\u0000\u8EA2\uECBE" + // 12750 - 12754
- "\u0000\uF9A3\u8EA2\uE3CB\u8EA2\uE7A4\u0000\uF8FD\u8EA2\uE7A5" + // 12755 - 12759
- "\u8EA2\uE7AA\u0000\u0000\u0000\u0000\u0000\uF9A1\u0000\uF9A2" + // 12760 - 12764
- "\u8EA2\uE7A3\u8EA2\uE7AC\u8EA2\uE7AE\u8EA2\uE7A7\u8EA2\uE7A9" + // 12765 - 12769
- "\u8EA2\uE7AB\u8EA2\uE7A8\u8EA2\uE7AF\u0000\uF8FC\u0000\uF9A4" + // 12770 - 12774
- "\u0000\uF8FE\u0000\u0000\u0000\uF8FB\u8EA2\uE9FC\u0000\u0000" + // 12775 - 12779
- "\u0000\uFAC2\u8EA2\uE9FA\u0000\u0000\u0000\u0000\u8EA2\uE9FE" + // 12780 - 12784
- "\u0000\u0000\u8EA2\uEAA1\u0000\uFAC0\u8EA2\uEAA2\u8EA2\uE9FD" + // 12785 - 12789
- "\u0000\u0000\u8EA2\uE9FB\u0000\uFAC3\u0000\uFABF\u8EA2\uEAA3" + // 12790 - 12794
- "\u0000\u0000\u0000\uFAC1\u0000\uFABE\u0000\u0000\u0000\u0000" + // 12795 - 12799
- "\u0000\u0000\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\uFBAC" + // 12800 - 12804
- "\u8EA2\uECBD\u8EA2\uECBC\u8EA2\uECBF\u8EA2\uECC0\u0000\u0000" + // 12805 - 12809
- "\u0000\uFBAD\u8EA2\uEEA5\u8EA2\uEEAA\u0000\uF2BB\u0000\uF2C0" + // 12810 - 12814
- "\u0000\uF2C1\u0000\u0000\u0000\uF5CE\u8EA2\uDFD0\u8EA2\uDFD9" + // 12815 - 12819
- "\u8EA2\uDFD6\u8EA2\uDFD8\u0000\u0000\u0000\uF5CB\u8EA2\uDFD1" + // 12820 - 12824
- "\u0000\u0000\u8EA2\uDFD7\u0000\uF5C7\u8EA2\uDFD3\u0000\uF5CF" + // 12825 - 12829
- "\u8EA2\uDFCF\u8EA2\uDFD4\u8EA2\uDFDB\u8EA2\uDAD2\u8EA2\uDFD5" + // 12830 - 12834
- "\u8EA2\uDFCE\u0000\uF5C8\u8EA2\uDFCD\u0000\uF5C9\u8EA2\uDFDC" + // 12835 - 12839
- "\u0000\uF5CA\u8EA2\uDFDA\u0000\uF5CD\u8EA2\uDFCC\u0000\u0000" + // 12840 - 12844
- "\u0000\uF5CC\u0000\u0000\u8EA2\uDFD2\u8EA2\uE3C7\u8EA2\uE3D5" + // 12845 - 12849
- "\u8EA2\uE3D0\u8EA2\uE3D2\u8EA2\uE3C6\u0000\uF7BE\u0000\u0000" + // 12850 - 12854
- "\u8EA2\uE3C5\u0000\uF7C1\u0000\uF7C0\u0000\u0000\u8EA2\uE3D4" + // 12855 - 12859
- "\u8EA2\uE3CC\u8EA2\uE3C9\u8EA2\uE3CF\u0000\u0000\u8EA2\uE3C8" + // 12860 - 12864
- "\u0000\u0000\u8EA2\uE3CA\u8EA2\uE3D3\u8EA2\uE3D1\u0000\u0000" + // 12865 - 12869
- "\u0000\uF7BF\u8EA2\uE3D8\u8EA2\uE3D6\u8EA2\uE3CD\u8EA2\uE3D7" + // 12870 - 12874
- "\u8EA2\uE3CE\u0000\u0000\u0000\uA4DB\u0000\uA4DC\u0000\uA4DD" + // 12875 - 12879
- "\u0000\uA4DE\u0000\uA4DF\u0000\uA4E0\u0000\uA4E1\u0000\uA4E2" + // 12880 - 12884
- "\u0000\uA4E3\u0000\uA4E4\u0000\uA4E5\u0000\uA4E6\u0000\uA4E7" + // 12885 - 12889
- "\u0000\uA4E8\u0000\uA4E9\u0000\uA4EA\u0000\uA4EB\u0000\uA4EC" + // 12890 - 12894
- "\u0000\uA4ED\u0000\uA4EE\u0000\uA4EF\u0000\uA4F0\u0000\uA4F1" + // 12895 - 12899
- "\u0000\uA4F2\u0000\uA4F3\u0000\uA4F4\u0000\uA1C2\u0000\uA2DE" + // 12900 - 12904
- "\u0000\uA1C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12905 - 12909
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12910 - 12914
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12915 - 12919
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12920 - 12924
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12925 - 12929
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12930 - 12934
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12935 - 12939
- "\u0000\u0000\u0000\u0000\u0000\uCBCB\u0000\u0000\u0000\uDDD0" + // 12940 - 12944
- "\u0000\uDDCF\u8EA2\uC7E2\u8EA2\uC7E3\u0000\u0000\u0000\uEBB6" + // 12945 - 12949
- "\u8EA2\uDAE5\u0000\uEFB5\u8EA2\uDAE6\u8EA2\uDFE5\u0000\uCBCC" + // 12950 - 12954
- "\u0000\u0000\u8EA2\uADD3\u0000\uD3D9\u0000\uD3D8\u0000\u0000" + // 12955 - 12959
- "\u8EA2\uB3A7\u0000\uD8C4\u8EA2\uB3A8\u8EA2\uB9D8\u0000\u0000" + // 12960 - 12964
- "\u8EA2\uB9D7\u0000\u0000\u8EA2\uB9D6\u0000\u0000\u0000\u0000" + // 12965 - 12969
- "\u0000\uC6CF\u8EA2\uA2BD\u0000\u0000\u0000\uCAAD\u8EA2\uA3F2" + // 12970 - 12974
- "\u0000\u0000\u8EA2\uAABC\u0000\uD0FB\u0000\u0000\u0000\uE8E2" + // 12975 - 12979
- "\u0000\uC4DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8A2" + // 12980 - 12984
- "\u0000\u0000\u0000\u0000\u0000\uE3EF\u0000\uC4DE\u0000\uC5BE" + // 12985 - 12989
- "\u0000\uC5BF\u0000\u0000\u0000\uC6D1\u0000\uC6D0\u0000\u0000" + // 12990 - 12994
- "\u8EA2\uA2BE\u0000\uC8A3\u0000\u0000\u8EA2\uA3F3\u0000\u0000" + // 12995 - 12999
- "\u0000\uCAAE\u0000\u0000\u0000\u0000\u8EA2\uA6D2\u8EA2\uA6D3" + // 13000 - 13004
- "\u8EA2\uA6D4\u0000\u0000\u0000\uCDB8\u0000\uCDB9\u8EA2\uA6D1" + // 13005 - 13009
- "\u0000\uCDBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0FC" + // 13010 - 13014
- "\u8EA2\uAABD\u0000\u0000\u8EA2\uAEFC\u0000\uD5BE\u0000\u0000" + // 13015 - 13019
- "\u8EA2\uAEFB\u0000\u0000\u0000\uDAAF\u8EA2\uB5B0\u0000\uDAB0" + // 13020 - 13024
- "\u8EA2\uB5B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFA4" + // 13025 - 13029
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC6CB\u0000\uC6CC" + // 13030 - 13034
- "\u8EA2\uA1D9\u0000\u0000\u0000\uC7FD\u0000\u0000\u0000\u0000" + // 13035 - 13039
- "\u0000\u0000\u8EA2\uA3EB\u0000\u0000\u0000\uCAA8\u0000\u0000" + // 13040 - 13044
- "\u8EA2\uA3EC\u0000\u0000\u0000\u0000\u0000\uCDB0\u0000\u0000" + // 13045 - 13049
- "\u0000\u0000\u8EA2\uA6CF\u0000\uCDAE\u0000\uCDAD\u8EA2\uA6CE" + // 13050 - 13054
- "\u0000\uCDAB\u8EA2\uA6D0\u0000\uCDAC\u0000\uCDAF\u0000\u0000" + // 13055 - 13059
- "\u0000\uD0F4\u0000\u0000\u0000\uD0F6\u8EA2\uAAB4\u8EA2\uAAB1" + // 13060 - 13064
- "\u8EA2\uAAB2\u8EA2\uAAB3\u8EA2\uAAB5\u0000\uD0F5\u0000\u0000" + // 13065 - 13069
- "\u0000\u0000\u8EA2\uAEF6\u8EA2\uAEF5\u0000\u0000\u0000\uD5BA" + // 13070 - 13074
- "\u0000\u0000\u0000\uD5B9\u0000\u0000\u0000\u0000\u0000\u0000" + // 13075 - 13079
- "\u0000\u0000\u0000\u0000\u0000\uDAA8\u8EA2\uB5AA\u0000\u0000" + // 13080 - 13084
- "\u0000\uDAA7\u0000\uDAA9\u0000\uDAA6\u0000\u0000\u0000\u0000" + // 13085 - 13089
- "\u0000\u0000\u0000\u0000\u0000\uDEFA\u8EA2\uB5A9\u0000\u0000" + // 13090 - 13094
- "\u0000\u0040\u0000\u0041\u0000\u0042\u0000\u0043\u0000\u0044" + // 13095 - 13099
- "\u0000\u0045\u0000\u0046\u0000\u0047\u0000\u0048\u0000\u0049" + // 13100 - 13104
- "\u0000\u004A\u0000\u004B\u0000\u004C\u0000\u004D\u0000\u004E" + // 13105 - 13109
- "\u0000\u004F\u0000\u0050\u0000\u0051\u0000\u0052\u0000\u0053" + // 13110 - 13114
- "\u0000\u0054\u0000\u0055\u0000\u0056\u0000\u0057\u0000\u0058" + // 13115 - 13119
- "\u0000\u0059\u0000\u005A\u0000\u005B\u0000\\\u0000\u005D" + // 13120 - 13124
- "\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0062" + // 13125 - 13129
- "\u0000\u0063\u0000\u0064\u0000\u0065\u0000\u0066\u0000\u0067" + // 13130 - 13134
- "\u0000\u0068\u0000\u0069\u0000\u006A\u0000\u006B\u0000\u006C" + // 13135 - 13139
- "\u0000\u006D\u0000\u006E\u0000\u006F\u0000\u0070\u0000\u0071" + // 13140 - 13144
- "\u0000\u0072\u0000\u0073\u0000\u0074\u0000\u0075\u0000\u0076" + // 13145 - 13149
- "\u0000\u0077\u0000\u0078\u0000\u0079\u0000\u007A\u0000\u007B" + // 13150 - 13154
- "\u0000\u007C\u0000\u007D\u0000\u007E\u0000\u007F\u8EA2\uD4C7" + // 13155 - 13159
- "\u0000\u0000\u0000\uEEFD\u8EA2\uD4CA\u0000\uEEF7\u8EA2\uD4C8" + // 13160 - 13164
- "\u8EA2\uD4BE\u0000\uEEF6\u8EA2\uDAD6\u0000\uEEFC\u0000\u0000" + // 13165 - 13169
- "\u0000\uEEF9\u0000\u0000\u0000\uEFA3\u0000\u0000\u8EA2\uD4BD" + // 13170 - 13174
- "\u0000\u0000\u8EA2\uD4C1\u0000\uEEF5\u8EA2\uD4C0\u8EA2\uD4C2" + // 13175 - 13179
- "\u8EA2\uD4C3\u0000\uEFA2\u8EA2\uD4C5\u8EA2\uD4C9\u8EA2\uD4CD" + // 13180 - 13184
- "\u0000\u0000\u0000\uEFA6\u0000\uF2BC\u8EA2\uDAD1\u8EA2\uDAD7" + // 13185 - 13189
- "\u8EA2\uDAD4\u8EA2\uDACC\u8EA2\uDAD8\u8EA2\uDACD\u0000\u0000" + // 13190 - 13194
- "\u8EA2\uDAD3\u0000\u0000\u0000\uF2B7\u0000\uF2BD\u8EA2\uDAD9" + // 13195 - 13199
- "\u0000\u0000\u0000\u0000\u0000\uF2B9\u0000\u0000\u0000\uF2C3" + // 13200 - 13204
- "\u0000\uF2BE\u8EA2\uDADB\u8EA2\uDAD5\u0000\uF2BA\u8EA2\uDACE" + // 13205 - 13209
- "\u0000\uF2C4\u8EA2\uDACF\u8EA2\uDAD0\u0000\uF2C5\u0000\uF2C2" + // 13210 - 13214
- "\u0000\uEEFA\u0000\u0000\u0000\uF2B8\u8EA2\uDADC\u0000\uF2C6" + // 13215 - 13219
- "\u0000\u0000\u0000\uF2BF\u8EA2\uDADA\u8EA2\uC0C0\u0000\uE2A6" + // 13220 - 13224
- "\u0000\u0000\u0000\u0000\u8EA2\uC0C3\u8EA2\uC0C4\u0000\uE2AA" + // 13225 - 13229
- "\u0000\u0000\u8EA2\uC0C6\u0000\u0000\u8EA2\uC0C8\u0000\u0000" + // 13230 - 13234
- "\u8EA2\uC0C9\u8EA2\uC0BD\u8EA2\uC0BC\u8EA2\uC0CA\u0000\uE2A9" + // 13235 - 13239
- "\u8EA2\uC0C7\u8EA2\uC0C5\u0000\u0000\u0000\uE2A7\u0000\uE2A3" + // 13240 - 13244
- "\u0000\uE2AE\u8EA2\uC0C1\u8EA2\uC0C2\u8EA2\uC0BF\u0000\u0000" + // 13245 - 13249
- "\u0000\uE2A8\u0000\u0000\u0000\u0000\u0000\uE2A4\u0000\u0000" + // 13250 - 13254
- "\u0000\uE2A2\u8EA2\uC7CE\u0000\uE6E6\u0000\uE6E1\u0000\u0000" + // 13255 - 13259
- "\u0000\u0000\u0000\uE6DC\u0000\u0000\u0000\uE6EC\u0000\uE6DD" + // 13260 - 13264
- "\u0000\u0000\u0000\uE6D9\u0000\uE6E8\u0000\uE6E5\u0000\uE6E7" + // 13265 - 13269
- "\u0000\u0000\u0000\uE6DE\u0000\uE6E3\u0000\uE6DA\u0000\uE6DB" + // 13270 - 13274
- "\u8EA2\uC7D6\u8EA2\uC7D3\u8EA2\uC7CB\u8EA2\uC7D0\u0000\u0000" + // 13275 - 13279
- "\u0000\uE6E9\u8EA2\uC7D7\u0000\uE6EA\u0000\uE6E0\u0000\u0000" + // 13280 - 13284
- "\u0000\u0000\u8EA2\uC7CD\u0000\uCBC6\u0000\u0000\u0000\uD3D4" + // 13285 - 13289
- "\u0000\uD3D5\u8EA2\uADD1\u0000\u0000\u0000\u0000\u8EA2\uADD2" + // 13290 - 13294
- "\u0000\uD3D3\u0000\u0000\u0000\uD8B9\u0000\u0000\u0000\uD8B7" + // 13295 - 13299
- "\u0000\u0000\u0000\uD8B6\u0000\uD8BD\u0000\uD8B5\u0000\uD8BE" + // 13300 - 13304
- "\u8EA2\uB3A1\u0000\uD8BB\u0000\u0000\u0000\uD8B8\u0000\uD8BC" + // 13305 - 13309
- "\u0000\uD8BA\u0000\uD8B4\u0000\u0000\u0000\u0000\u0000\uDDC5" + // 13310 - 13314
- "\u0000\u0000\u0000\uDDBF\u8EA2\uB9CF\u0000\uDDC4\u0000\u0000" + // 13315 - 13319
- "\u0000\u0000\u0000\uDDC6\u0000\uDDC0\u0000\u0000\u0000\uDDC1" + // 13320 - 13324
- "\u0000\u0000\u8EA2\uB9CD\u0000\u0000\u0000\u0000\u0000\uDDBE" + // 13325 - 13329
- "\u0000\u0000\u8EA2\uB9CE\u0000\uDDC3\u0000\u0000\u0000\u0000" + // 13330 - 13334
- "\u8EA2\uB9CC\u0000\uDDC2\u0000\u0000\u0000\u0000\u0000\uE2AB" + // 13335 - 13339
- "\u0000\u0000\u0000\uE2AD\u0000\u0000\u0000\u0000\u8EA2\uC0BE" + // 13340 - 13344
- "\u0000\uE2AC\u0000\uE2A1\u0000\uE2A5\u0000\u0000\u0000\uE6EB" + // 13345 - 13349
- "\u8EA2\uC7CF\u0000\uFDA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 13350 - 13354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13355 - 13359
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13360 - 13364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC5" + // 13365 - 13369
- "\u8EA2\uADD0\u0000\uD3D2\u8EA2\uB9CB\u8EA2\uB9C9\u0000\u0000" + // 13370 - 13374
- "\u0000\u0000\u8EA2\uB9CA\u8EA2\uC0BA\u8EA2\uC0BB\u8EA2\uC7C9" + // 13375 - 13379
- "\u8EA2\uC0B9\u0000\u0000\u8EA2\uC7C3\u8EA2\uC7C7\u8EA2\uC7C6" + // 13380 - 13384
- "\u8EA2\uC7C8\u0000\uE6D8\u8EA2\uC7C5\u8EA2\uC7C4\u8EA2\uC7CA" + // 13385 - 13389
- "\u0000\u0000\u8EA2\uCEB1\u8EA2\uCEAF\u0000\u0000\u8EA2\uCEB0" + // 13390 - 13394
- "\u8EA2\uD4BC\u8EA2\uD4BA\u0000\u0000\u0000\u0000\u8EA2\uD4BB" + // 13395 - 13399
- "\u8EA2\uDACB\u8EA2\uDFCA\u8EA2\uDFCB\u0000\uF7BD\u0000\u0000" + // 13400 - 13404
- "\u8EA2\uE7A2\u8EA2\uE9F9\u0000\uFABD\u0000\u0000\u8EA2\uECBB" + // 13405 - 13409
- "\u8EA2\uEEA4\u0000\uFBF3\u0000\u0000\u8EA2\uEFCD\u8EA2\uF1BB" + // 13410 - 13414
- "\u8EA2\uC0AD\u0000\uE1FA\u0000\uE1FB\u0000\u0000\u0000\u0000" + // 13415 - 13419
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0B5" + // 13420 - 13424
- "\u0000\uE6D4\u8EA2\uC7B9\u8EA2\uC7BF\u8EA2\uC7BA\u8EA2\uC7BB" + // 13425 - 13429
- "\u0000\u0000\u8EA2\uC7C0\u0000\u0000\u0000\uE6D6\u0000\u0000" + // 13430 - 13434
- "\u0000\uE6CE\u0000\uE6D5\u8EA2\uC7B8\u8EA2\uC0AA\u0000\uE6D1" + // 13435 - 13439
- "\u0000\uE6CF\u8EA2\uC7BE\u8EA2\uC7BD\u0000\uE6D0\u0000\uE6D2" + // 13440 - 13444
- "\u8EA2\uC7BC\u0000\uE6CD\u0000\u0000\u0000\uE6D3\u0000\u0000" + // 13445 - 13449
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDFD" + // 13450 - 13454
- "\u0000\uEAFC\u0000\u0000\u0000\u0000\u8EA2\uCEAA\u8EA2\uCEA9" + // 13455 - 13459
- "\u0000\u0000\u8EA2\uCEA4\u0000\uEAFE\u8EA2\uCEA8\u8EA2\uCDFE" + // 13460 - 13464
- "\u8EA2\uCEA1\u0000\uEAF6\u0000\uEAF8\u0000\u0000\u8EA2\uCEA6" + // 13465 - 13469
- "\u8EA2\uCDFC\u0000\uEAFA\u0000\uEAF9\u8EA2\uCEA2\u8EA2\uCEA7" + // 13470 - 13474
- "\u8EA2\uCEA5\u0000\uEAFB\u8EA2\uCEA3\u0000\u0000\u0000\uA1AA" + // 13475 - 13479
- "\u8EAD\uA4C3\u0000\uA1EC\u0000\uA2E3\u0000\uA2E8\u0000\uA1ED" + // 13480 - 13484
- "\u8EAD\uA4C2\u0000\uA1BE\u0000\uA1BF\u0000\uA1EE\u0000\uA2B0" + // 13485 - 13489
- "\u0000\uA1A2\u0000\uA2B1\u0000\uA1A5\u0000\uA2DF\u0000\uA4A1" + // 13490 - 13494
- "\u0000\uA4A2\u0000\uA4A3\u0000\uA4A4\u0000\uA4A5\u0000\uA4A6" + // 13495 - 13499
- "\u0000\uA4A7\u0000\uA4A8\u0000\uA4A9\u0000\uA4AA\u0000\uA1A8" + // 13500 - 13504
- "\u0000\uA1A7\u0000\uA2B6\u0000\uA2B8\u0000\uA2B7\u0000\uA1A9" + // 13505 - 13509
- "\u0000\uA2E9\u0000\uA4C1\u0000\uA4C2\u0000\uA4C3\u0000\uA4C4" + // 13510 - 13514
- "\u0000\uA4C5\u0000\uA4C6\u0000\uA4C7\u0000\uA4C8\u0000\uA4C9" + // 13515 - 13519
- "\u0000\uA4CA\u0000\uA4CB\u0000\uA4CC\u0000\uA4CD\u0000\uA4CE" + // 13520 - 13524
- "\u0000\uA4CF\u0000\uA4D0\u0000\uA4D1\u0000\uA4D2\u0000\uA4D3" + // 13525 - 13529
- "\u0000\uA4D4\u0000\uA4D5\u0000\uA4D6\u0000\uA4D7\u0000\uA4D8" + // 13530 - 13534
- "\u0000\uA4D9\u0000\uA4DA\u8EAD\uA1B0\u0000\uA2E0\u8EAD\uA1B1" + // 13535 - 13539
- "\u8EAD\uA1A4\u0000\uA2A5\u8EA2\uB2F7\u0000\uD8B0\u0000\uD8B1" + // 13540 - 13544
- "\u8EA2\uB2FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13545 - 13549
- "\u0000\uDDB6\u8EA2\uB9B5\u0000\u0000\u0000\uDDBB\u8EA2\uB9C5" + // 13550 - 13554
- "\u0000\uDDBA\u8EA2\uB9C7\u0000\u0000\u0000\u0000\u8EA2\uB9BB" + // 13555 - 13559
- "\u0000\uDDB8\u8EA2\uB9C6\u0000\u0000\u8EA2\uB9B6\u0000\uDDB9" + // 13560 - 13564
- "\u8EA2\uB9C2\u8EA2\uB9BE\u8EA2\uB9C0\u8EA2\uB9BA\u8EA2\uB9C1" + // 13565 - 13569
- "\u0000\u0000\u0000\u0000\u0000\uDDB5\u8EA2\uB9BD\u0000\u0000" + // 13570 - 13574
- "\u8EA2\uB9BC\u8EA2\uB9B8\u0000\u0000\u8EA2\uB9C3\u0000\u0000" + // 13575 - 13579
- "\u0000\u0000\u8EA2\uB9BF\u8EA2\uB9B7\u0000\u0000\u8EA2\uB9B9" + // 13580 - 13584
- "\u0000\uDDB7\u8EA2\uB9C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 13585 - 13589
- "\u0000\u0000\u0000\uE1FC\u8EA2\uC0B3\u0000\u0000\u0000\u0000" + // 13590 - 13594
- "\u0000\u0000\u8EA2\uC0AF\u8EA2\uC0B1\u8EA2\uC0AC\u8EA2\uC0AB" + // 13595 - 13599
- "\u8EA2\uC0A9\u0000\u0000\u8EA2\uC0B0\u8EA2\uC0B2\u8EA2\uC0AE" + // 13600 - 13604
- "\u0000\u0000\u0000\uEBF6\u0000\uEBF7\u8EA2\uD6A4\u0000\uF0A5" + // 13605 - 13609
- "\u0000\uF0A4\u8EA2\uD6A3\u0000\u0000\u8EA2\uE0F5\u0000\u0000" + // 13610 - 13614
- "\u8EA2\uE4EA\u8EA2\uE4EC\u8EA2\uE4EB\u0000\uF7FD\u0000\uF7FC" + // 13615 - 13619
- "\u0000\uF7FB\u0000\u0000\u0000\uFBCA\u8EA2\uECF4\u0000\u0000" + // 13620 - 13624
- "\u0000\uFBC9\u8EA2\uEED6\u8EA2\uEED5\u0000\u0000\u0000\uFCF7" + // 13625 - 13629
- "\u8EA2\uF0E3\u0000\uDEA3\u8EA2\uC8F0\u0000\u0000\u0000\u0000" + // 13630 - 13634
- "\u0000\u0000\u8EA2\uCFC9\u8EA2\uCFC7\u8EA2\uCFC8\u0000\u0000" + // 13635 - 13639
- "\u0000\u0000\u8EA2\uD6AD\u0000\u0000\u8EA2\uD6A8\u8EA2\uD6A5" + // 13640 - 13644
- "\u8EA2\uD6AC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6AE" + // 13645 - 13649
- "\u0000\u0000\u0000\u0000\u0000\uF0A7\u8EA2\uD6AB\u8EA2\uD6A7" + // 13650 - 13654
- "\u0000\u0000\u0000\u0000\u8EA2\uD6A6\u8EA2\uD6AA\u8EA2\uD6A9" + // 13655 - 13659
- "\u0000\uF0A6\u0000\u0000\u0000\u0000\u8EA2\uDCAB\u8EA2\uDCA6" + // 13660 - 13664
- "\u8EA2\uDCA4\u8EA2\uDCAD\u8EA2\uDCA5\u0000\u0000\u8EA2\uEDA3" + // 13665 - 13669
- "\u0000\uFBCF\u8EA2\uEDA9\u0000\u0000\u8EA2\uEDA8\u0000\u0000" + // 13670 - 13674
- "\u8EA2\uEDA4\u8EA2\uEDB0\u0000\u0000\u8EA2\uEDA5\u8EA2\uEEE8" + // 13675 - 13679
- "\u8EA2\uEDB3\u8EA2\uEDB5\u8EA2\uEDAC\u8EA2\uEDA6\u8EA2\uEEE9" + // 13680 - 13684
- "\u8EA2\uEEEB\u8EA2\uEEE5\u0000\uFCAE\u0000\u0000\u8EA2\uEEF2" + // 13685 - 13689
- "\u8EA2\uEEF0\u0000\uFCAF\u8EA2\uEEEF\u8EA2\uEEEE\u8EA2\uEEE7" + // 13690 - 13694
- "\u8EA2\uEEE4\u8EA2\uEEEA\u8EA2\uEEF3\u8EA2\uEEE6\u8EA2\uEEEC" + // 13695 - 13699
- "\u0000\u0000\u8EA2\uEFF7\u8EA2\uEFFC\u8EA2\uEFF2\u8EA2\uEFF5" + // 13700 - 13704
- "\u0000\uFCDA\u8EA2\uEFF9\u0000\u0000\u8EA2\uF0A2\u8EA2\uEEED" + // 13705 - 13709
- "\u0000\u0000\u8EA2\uEFF3\u8EA2\uEFFD\u8EA2\uF0A3\u8EA2\uEFF8" + // 13710 - 13714
- "\u8EA2\uEFF1\u8EA2\uEFFB\u0000\u0000\u8EA2\uEFFA\u8EA2\uF0A1" + // 13715 - 13719
- "\u8EA2\uEFFE\u8EA2\uEEF1\u8EA2\uEFF6\u8EA2\uEFF0\u8EA2\uEFF4" + // 13720 - 13724
- "\u0000\uFCF9\u0000\uFCFA\u8EA2\uEFEF\u0000\u0000\u8EA2\uF0F4" + // 13725 - 13729
- "\u8EA2\uF0EB\u8EA2\uF0F3\u0000\uC8E6\u8EA2\uADCB\u0000\u0000" + // 13730 - 13734
- "\u8EA2\uB2F1\u8EA2\uB2F2\u0000\u0000\u0000\u0000\u0000\u0000" + // 13735 - 13739
- "\u8EA2\uC0A6\u0000\u0000\u8EA2\uECB6\u8EA2\uF0CE\u0000\uC8E7" + // 13740 - 13744
- "\u0000\uD3CF\u8EA2\uADCC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13745 - 13749
- "\u8EA2\uB9B4\u0000\uDDB4\u0000\u0000\u8EA2\uC0A8\u8EA2\uC0A7" + // 13750 - 13754
- "\u0000\uE1F9\u0000\u0000\u0000\uE6CC\u8EA2\uD4AA\u0000\uEEEC" + // 13755 - 13759
- "\u0000\u0000\u0000\uEEED\u0000\u0000\u0000\u0000\u0000\u0000" + // 13760 - 13764
- "\u0000\uF2AF\u0000\uFCE8\u0000\uC8E8\u0000\u0000\u0000\u0000" + // 13765 - 13769
- "\u0000\u0000\u8EA2\uADCD\u0000\uCFD0\u8EA2\uADCF\u8EA2\uADCE" + // 13770 - 13774
- "\u0000\uD3D0\u0000\u0000\u8EA2\uB2F3\u0000\u0000\u8EA2\uB2FA" + // 13775 - 13779
- "\u0000\uD8AE\u8EA2\uB2F8\u8EA2\uB2F6\u0000\u0000\u8EA2\uB2FD" + // 13780 - 13784
- "\u8EA2\uB2F4\u8EA2\uB2F5\u0000\uD8AF\u0000\u0000\u0000\uD8B3" + // 13785 - 13789
- "\u0000\u0000\u0000\u0000\u8EA2\uB2FE\u0000\uD8B2\u8EA2\uB2FC" + // 13790 - 13794
- "\u8EA2\uB2F9\u8EA2\uE6E6\u8EA2\uE3B9\u8EA2\uE6F3\u8EA2\uE6E8" + // 13795 - 13799
- "\u0000\u0000\u0000\uF8F2\u8EA2\uE6EE\u0000\u0000\u8EA2\uE6F0" + // 13800 - 13804
- "\u8EA2\uE6EB\u8EA2\uE6F2\u8EA2\uE6ED\u8EA2\uE6EC\u0000\uF8F3" + // 13805 - 13809
- "\u0000\u0000\u0000\u0000\u8EA2\uE9F1\u8EA2\uE9F2\u0000\u0000" + // 13810 - 13814
- "\u8EA2\uE9F4\u0000\uFAB9\u0000\uFABA\u8EA2\uE9F5\u8EA2\uE9F3" + // 13815 - 13819
- "\u0000\u0000\u8EA2\uE9F0\u0000\u0000\u8EA2\uECB1\u8EA2\uECB4" + // 13820 - 13824
- "\u8EA2\uECB0\u0000\u0000\u0000\uFBA7\u8EA2\uECB2\u0000\uFBA6" + // 13825 - 13829
- "\u0000\uFBA5\u0000\uFBA4\u8EA2\uECB3\u8EA2\uEDFE\u8EA2\uEDFC" + // 13830 - 13834
- "\u0000\u0000\u8EA2\uEDFB\u8EA2\uECAF\u8EA2\uEDFD\u8EA2\uECB5" + // 13835 - 13839
- "\u8EA2\uEDFA\u0000\u0000\u8EA2\uEFC8\u8EA2\uEFA6\u8EA2\uEFC6" + // 13840 - 13844
- "\u0000\uFCC7\u8EA2\uEFC7\u8EA2\uEFC9\u0000\u0000\u8EA2\uF0CD" + // 13845 - 13849
- "\u0000\uFCE6\u8EA2\uF0CC\u8EA2\uF0CB\u0000\uFCE7\u0000\u0000" + // 13850 - 13854
- "\u0000\uFDA7\u8EA2\uF1DD\u8EA2\uF1F5\u8EA2\uF1F4\u8EA2\uF1F6" + // 13855 - 13859
- "\u0000\uF5B7\u0000\u0000\u8EA2\uDFB2\u8EA2\uDFB1\u8EA2\uDFB6" + // 13860 - 13864
- "\u8EA2\uDFA9\u0000\uF5BB\u0000\u0000\u0000\uF5BF\u8EA2\uDFB0" + // 13865 - 13869
- "\u8EA2\uDFB7\u0000\uF5C0\u8EA2\uDFB3\u0000\u0000\u0000\u0000" + // 13870 - 13874
- "\u0000\u0000\u0000\u0000\u0000\uF5B8\u0000\uF5BA\u8EA2\uE3B3" + // 13875 - 13879
- "\u8EA2\uE3B1\u0000\u0000\u0000\u0000\u8EA2\uE3B7\u8EA2\uE3B5" + // 13880 - 13884
- "\u8EA2\uE3B8\u0000\u0000\u8EA2\uE3AA\u8EA2\uE3B2\u8EA2\uE3BC" + // 13885 - 13889
- "\u8EA2\uDFBD\u8EA2\uE3AE\u0000\uF7BA\u8EA2\uD3EC\u8EA2\uE3A9" + // 13890 - 13894
- "\u8EA2\uE3B6\u8EA2\uE3B0\u8EA2\uE3AD\u8EA2\uE3A8\u8EA2\uE3A7" + // 13895 - 13899
- "\u8EA2\uE3BB\u0000\u0000\u8EA2\uE3AC\u8EA2\uE3AB\u0000\uF7B8" + // 13900 - 13904
- "\u8EA2\uE3B4\u0000\u0000\u0000\uF7B7\u0000\u0000\u0000\u0000" + // 13905 - 13909
- "\u0000\uF7B9\u8EA2\uE3AF\u8EA2\uE3BA\u0000\u0000\u8EA2\uE6E9" + // 13910 - 13914
- "\u8EA2\uE6EA\u0000\u0000\u0000\uF8F4\u8EA2\uE6E7\u0000\uF8F1" + // 13915 - 13919
- "\u8EA2\uE6EF\u0000\u0000\u0000\uF8F5\u8EA2\uE6F1\u8EA2\uCDE0" + // 13920 - 13924
- "\u8EA2\uCDE8\u8EA2\uCDF4\u8EA2\uCDE6\u0000\u0000\u0000\u0000" + // 13925 - 13929
- "\u8EA2\uCDEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13930 - 13934
- "\u0000\u0000\u0000\uEEEA\u8EA2\uC7B0\u8EA2\uD3F9\u8EA2\uD4A4" + // 13935 - 13939
- "\u8EA2\uD3F8\u8EA2\uD3F4\u8EA2\uD3F1\u0000\uEEEB\u8EA2\uD3EF" + // 13940 - 13944
- "\u0000\uEAF3\u8EA2\uD3E8\u0000\uEEE9\u8EA2\uD3EE\u0000\uEEE8" + // 13945 - 13949
- "\u8EA2\uD3F3\u8EA2\uD3F0\u8EA2\uD4A2\u8EA2\uD3FB\u8EA2\uD3F5" + // 13950 - 13954
- "\u8EA2\uD3FA\u0000\uEEE4\u8EA2\uD3F2\u8EA2\uD4A7\u8EA2\uD3E9" + // 13955 - 13959
- "\u8EA2\uD3EA\u8EA2\uD4A3\u0000\uEEE5\u8EA2\uD4A8\u0000\uEEE7" + // 13960 - 13964
- "\u8EA2\uD4A9\u8EA2\uD3F7\u8EA2\uCDDF\u8EA2\uD3FD\u8EA2\uD3F6" + // 13965 - 13969
- "\u8EA2\uD4A1\u8EA2\uD3FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13970 - 13974
- "\u8EA2\uD3ED\u0000\uEEE2\u8EA2\uD4A6\u0000\uEEE3\u8EA2\uD3EB" + // 13975 - 13979
- "\u0000\uEEE6\u8EA2\uDAB2\u8EA2\uD3FE\u8EA2\uD4A5\u0000\u0000" + // 13980 - 13984
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4B8\u0000\u0000" + // 13985 - 13989
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13990 - 13994
- "\u0000\u0000\u0000\u0000\u8EAD\uA4AE\u0000\u0000\u0000\u0000" + // 13995 - 13999
- "\u0000\u0000\u0000\u0000\u0000\uA3C4\u0000\u0000\u0000\u0000" + // 14000 - 14004
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14005 - 14009
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14010 - 14014
- "\u0000\u0000\u0000\uA3C5\u0000\u0000\u0000\u0000\u0000\uA3C7" + // 14015 - 14019
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14020 - 14024
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3C6\u0000\u0000" + // 14025 - 14029
- "\u0000\u0000\u0000\uA3C0\u0000\uA3C1\u0000\uA3C3\u0000\uA3C2" + // 14030 - 14034
- "\u0000\uA3CC\u0000\uA3CD\u0000\uA3CE\u0000\uA1BB\u0000\u0000" + // 14035 - 14039
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14040 - 14044
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14045 - 14049
- "\u0000\uA5EF\u0000\u0000\u0000\uA5ED\u0000\uA5EE\u0000\uA5F0" + // 14050 - 14054
- "\u0000\u0000\u0000\uA2A6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14055 - 14059
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14060 - 14064
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5EC\u0000\u0000" + // 14065 - 14069
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14070 - 14074
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14075 - 14079
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14080 - 14084
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14085 - 14089
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14090 - 14094
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14095 - 14099
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14100 - 14104
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F8" + // 14105 - 14109
- "\u8EA2\uC1D2\u0000\u0000\u0000\u0000\u8EA2\uC8E7\u8EA2\uCFB4" + // 14110 - 14114
- "\u8EA2\uCFB5\u0000\uEBEC\u0000\u0000\u0000\uEBED\u8EA2\uD5E7" + // 14115 - 14119
- "\u0000\uEFF1\u0000\u0000\u0000\u0000\u0000\uF6A9\u0000\u0000" + // 14120 - 14124
- "\u8EA2\uE4D5\u0000\u0000\u0000\uF7F1\u8EA2\uE7F8\u0000\uF9CE" + // 14125 - 14129
- "\u8EA2\uE7F7\u8EA2\uE7F9\u8EA2\uE7F6\u0000\uE6C5\u8EA2\uC7B4" + // 14130 - 14134
- "\u0000\uE6C8\u0000\uE6C9\u8EA2\uC7AA\u8EA2\uC7B7\u0000\uE6CA" + // 14135 - 14139
- "\u0000\uE6C4\u0000\uE6C3\u8EA2\uC7B3\u0000\uE6CB\u8EA2\uC7A9" + // 14140 - 14144
- "\u8EA2\uC7AC\u8EA2\uC7B6\u8EA2\uC7B2\u0000\u0000\u0000\u0000" + // 14145 - 14149
- "\u8EA2\uCDFB\u8EA2\uCDF0\u0000\uE6C2\u0000\u0000\u0000\u0000" + // 14150 - 14154
- "\u0000\u0000\u0000\u0000\u0000\uEAF2\u8EA2\uCDE4\u8EA2\uCDF9" + // 14155 - 14159
- "\u8EA2\uCDE5\u0000\uEAED\u0000\u0000\u8EA2\uCDE2\u0000\u0000" + // 14160 - 14164
- "\u8EA2\uCDEB\u8EA2\uCDE3\u0000\uEAEF\u8EA2\uCDDD\u8EA2\uCDF8" + // 14165 - 14169
- "\u0000\uEAF0\u8EA2\uCDF5\u8EA2\uCDF6\u8EA2\uCDDE\u0000\uEAF5" + // 14170 - 14174
- "\u8EA2\uCDED\u0000\u0000\u8EA2\uCDE7\u8EA2\uCDEE\u8EA2\uCDE1" + // 14175 - 14179
- "\u0000\u0000\u8EA2\uCDFA\u8EA2\uCDF2\u8EA2\uCDEC\u8EA2\uCDDC" + // 14180 - 14184
- "\u0000\uEAF1\u8EA2\uCDF3\u0000\u0000\u0000\uEAF4\u8EA2\uCDF7" + // 14185 - 14189
- "\u0000\u0000\u8EA2\uCDF1\u0000\uEAEE\u8EA2\uCDEF\u0000\u0000" + // 14190 - 14194
- "\u8EA2\uCDE9\u0000\uEAEC\u0000\uDDAB\u8EA2\uB9A5\u8EA2\uB9A4" + // 14195 - 14199
- "\u8EA2\uB9B1\u0000\uDDAD\u8EA2\uB9A6\u0000\uDDAF\u0000\uDDAA" + // 14200 - 14204
- "\u8EA2\uB9A9\u0000\uDDB3\u0000\u0000\u0000\uDDB0\u8EA2\uB9AD" + // 14205 - 14209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1F7\u8EA2\uC0A5" + // 14210 - 14214
- "\u0000\u0000\u8EA2\uBFF8\u0000\uE1F4\u0000\u0000\u8EA2\uC7AE" + // 14215 - 14219
- "\u8EA2\uC0A3\u8EA2\uBFF5\u0000\uE1F2\u8EA2\uBFFA\u0000\uE1F5" + // 14220 - 14224
- "\u8EA2\uBFFE\u8EA2\uBFFC\u0000\uE1F8\u0000\uE1F1\u0000\u0000" + // 14225 - 14229
- "\u0000\u0000\u8EA2\uBFF6\u8EA2\uBFF9\u0000\uE1F6\u0000\u0000" + // 14230 - 14234
- "\u8EA2\uBFF7\u0000\u0000\u8EA2\uC0A4\u8EA2\uC0A2\u8EA2\uBFFB" + // 14235 - 14239
- "\u8EA2\uBFFD\u8EA2\uC0A1\u0000\uE1F3\u0000\u0000\u0000\u0000" + // 14240 - 14244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14245 - 14249
- "\u8EA2\uC7AF\u8EA2\uC7B5\u8EA2\uC7AB\u8EA2\uC7B1\u0000\uE6C1" + // 14250 - 14254
- "\u8EA2\uC7AD\u0000\uE6C7\u0000\u0000\u0000\u0000\u0000\uE6C6" + // 14255 - 14259
- "\u0000\u0000\u8EA2\uE0F3\u0000\u0000\u0000\uF7F9\u8EA2\uE4E6" + // 14260 - 14264
- "\u8EA2\uE4E7\u0000\uF7FA\u0000\u0000\u8EA2\uE4E5\u0000\u0000" + // 14265 - 14269
- "\u8EA2\uE8B0\u8EA2\uE8AF\u8EA2\uE8B2\u0000\uF9D3\u8EA2\uE8B1" + // 14270 - 14274
- "\u0000\u0000\u8EA2\uEAF5\u8EA2\uEAF7\u8EA2\uEAF6\u0000\u0000" + // 14275 - 14279
- "\u0000\u0000\u8EA2\uECEF\u8EA2\uECF2\u8EA2\uECF0\u8EA2\uECF1" + // 14280 - 14284
- "\u8EA2\uEED2\u0000\uFCA9\u0000\u0000\u0000\u0000\u0000\u0000" + // 14285 - 14289
- "\u8EA2\uEFE2\u8EA2\uEFE3\u8EA2\uEFE4\u0000\u0000\u0000\uFCF6" + // 14290 - 14294
- "\u0000\uFDB0\u8EA2\uF2A6\u0000\uD8EE\u0000\u0000\u0000\uF0A3" + // 14295 - 14299
- "\u0000\uF3B4\u8EA2\uE4E8\u0000\u0000\u8EA2\uEED3\u0000\u0000" + // 14300 - 14304
- "\u0000\u0000\u8EA2\uF1E6\u8EA2\uB3CD\u0000\u0000\u0000\uFDC8" + // 14305 - 14309
- "\u0000\uD8EF\u8EA2\uDBFE\u0000\u0000\u8EA2\uE4E9\u0000\u0000" + // 14310 - 14314
- "\u8EA2\uE8B3\u0000\u0000\u0000\u0000\u8EA2\uECF3\u8EA2\uEED4" + // 14315 - 14319
- "\u0000\uD8F0\u0000\u0000\u8EA2\uCFC5\u8EA2\uCFC6\u8EA2\uEFC0" + // 14320 - 14324
- "\u0000\u0000\u0000\u0000\u8EA2\uF0CA\u0000\u0000\u0000\u0000" + // 14325 - 14329
- "\u8EA2\uF1B4\u8EA2\uF1B5\u8EA2\uF1B6\u0000\u0000\u0000\u0000" + // 14330 - 14334
- "\u8EA2\uF2B5\u8EA2\uF2AD\u8EA2\uA2EF\u0000\uCFCD\u0000\u0000" + // 14335 - 14339
- "\u0000\uD3CB\u0000\u0000\u8EA2\uB2DA\u8EA2\uB2D9\u0000\uD8A5" + // 14340 - 14344
- "\u0000\uDDA8\u8EA2\uB9A1\u0000\u0000\u0000\u0000\u8EA2\uB8FE" + // 14345 - 14349
- "\u0000\u0000\u0000\uE1F0\u0000\uE6BF\u0000\u0000\u0000\uE6BE" + // 14350 - 14354
- "\u0000\uE6C0\u0000\u0000\u8EA2\uCDDB\u8EA2\uD3E7\u8EA2\uDAA5" + // 14355 - 14359
- "\u8EA2\uDAA7\u8EA2\uDAA6\u0000\u0000\u0000\uF5B6\u8EA2\uDFA5" + // 14360 - 14364
- "\u8EA2\uE3A6\u8EA2\uF1F3\u0000\uC8E5\u0000\u0000\u8EA2\uA8E9" + // 14365 - 14369
- "\u8EA2\uA8EA\u8EA2\uA8E8\u8EA2\uA8E7\u0000\uCFCE\u0000\u0000" + // 14370 - 14374
- "\u8EA2\uADCA\u8EA2\uADC8\u0000\u0000\u0000\u0000\u8EA2\uADC7" + // 14375 - 14379
- "\u0000\u0000\u0000\uD3CC\u0000\uD3CE\u0000\uD3CD\u8EA2\uADC9" + // 14380 - 14384
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCACD\u0000\u0000" + // 14385 - 14389
- "\u0000\u0000\u8EA2\uD0D8\u0000\u0000\u0000\uE8F1\u0000\uECFC" + // 14390 - 14394
- "\u8EA2\uD7B5\u8EA2\uD0DD\u8EA2\uD0DC\u8EA2\uD0DE\u0000\u0000" + // 14395 - 14399
- "\u0000\u0000\u8EA2\uD0DB\u0000\uECFD\u8EAD\uA4C7\u0000\uEDA5" + // 14400 - 14404
- "\u0000\uEDA2\u0000\u0000\u0000\uEDA3\u8EA2\uD0D6\u8EA2\uD0D9" + // 14405 - 14409
- "\u8EA2\uD0E3\u0000\uEDAB\u0000\uEDA9\u0000\u0000\u8EA2\uD0DA" + // 14410 - 14414
- "\u8EA2\uBBFD\u0000\uECFA\u8EA2\uD0E0\u8EA2\uD0D7\u0000\u0000" + // 14415 - 14419
- "\u0000\uEDAC\u8EA2\uD0DF\u0000\uE8F4\u0000\uEDA1\u8EA2\uCACB" + // 14420 - 14424
- "\u0000\u0000\u0000\u0000\u0000\uEDA4\u0000\u0000\u0000\uEDA8" + // 14425 - 14429
- "\u0000\uEDAA\u0000\uEDA7\u0000\uEDA6\u0000\u0000\u0000\uECFE" + // 14430 - 14434
- "\u8EA2\uD0E2\u0000\uECFB\u0000\uEDAD\u0000\u0000\u0000\u0000" + // 14435 - 14439
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14440 - 14444
- "\u0000\uF0E1\u0000\uF0E2\u8EA2\uD7B4\u0000\uF0EB\u0000\uF0E8" + // 14445 - 14449
- "\u8EA2\uE9E9\u8EA2\uE9E6\u0000\u0000\u0000\u0000\u8EA2\uE9EB" + // 14450 - 14454
- "\u8EA2\uE9ED\u0000\uFAB5\u0000\uFAB7\u0000\u0000\u8EA2\uE9EC" + // 14455 - 14459
- "\u0000\uFAB8\u0000\uFAB6\u8EA2\uE9EE\u0000\u0000\u0000\u0000" + // 14460 - 14464
- "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000\u0000\u0000" + // 14465 - 14469
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBA1\u8EA2\uECA1" + // 14470 - 14474
- "\u8EA2\uECA7\u0000\uFBA3\u8EA2\uE9E8\u8EA2\uECA6\u0000\u0000" + // 14475 - 14479
- "\u8EA2\uECAD\u8EA2\uECA4\u8EA2\uECAB\u8EA2\uECAA\u8EA2\uE9E4" + // 14480 - 14484
- "\u8EA2\uECA5\u8EA2\uE3A2\u8EA2\uECAE\u8EA2\uECA3\u8EA2\uECA8" + // 14485 - 14489
- "\u0000\u0000\u8EA2\uECAC\u8EA2\uECA2\u0000\u0000\u8EA2\uEDF7" + // 14490 - 14494
- "\u0000\uFBA2\u8EA2\uECA9\u0000\u0000\u0000\u0000\u8EA2\uEFC3" + // 14495 - 14499
- "\u8EA2\uEDF8\u8EA2\uEDF6\u8EA2\uEDF4\u8EA2\uEDF5\u8EA2\uEDF9" + // 14500 - 14504
- "\u0000\u0000\u0000\uFCC5\u8EA2\uEFC1\u8EA2\uEFBF\u8EA2\uEFC4" + // 14505 - 14509
- "\u8EA2\uEFC2\u0000\u0000\u8EA2\uEFC5\u0000\uFCC6\u8EA2\uE2F0" + // 14510 - 14514
- "\u0000\u0000\u8EA2\uE2F2\u8EA2\uE2F1\u8EA2\uE2F7\u8EA2\uE2FC" + // 14515 - 14519
- "\u8EA2\uE2EF\u8EA2\uE2F6\u8EA2\uE2FB\u0000\uF7B3\u0000\u0000" + // 14520 - 14524
- "\u8EA2\uE2F9\u0000\u0000\u0000\uF7B1\u8EA2\uE2FA\u0000\uF7AF" + // 14525 - 14529
- "\u0000\uF7B2\u8EA2\uE6E0\u8EA2\uE3A1\u0000\u0000\u0000\u0000" + // 14530 - 14534
- "\u0000\uF8ED\u0000\u0000\u8EA2\uE6D8\u8EA2\uE6DC\u8EA2\uE6D4" + // 14535 - 14539
- "\u8EA2\uE6D7\u0000\u0000\u8EA2\uE6DF\u0000\uF8EB\u8EA2\uE6E4" + // 14540 - 14544
- "\u8EA2\uE6DD\u0000\u0000\u8EA2\uE6D5\u8EA2\uE6E5\u8EA2\uE6DE" + // 14545 - 14549
- "\u0000\uF8EE\u0000\uF8EF\u8EA2\uE6E2\u0000\u0000\u8EA2\uE6D6" + // 14550 - 14554
- "\u0000\uF8EA\u0000\uF8EC\u8EA2\uE6D1\u8EA2\uE6D9\u8EA2\uE6D3" + // 14555 - 14559
- "\u0000\u0000\u8EA2\uE6E3\u8EA2\uE6E1\u8EA2\uE6D2\u8EA2\uE6DA" + // 14560 - 14564
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9EA\u0000\uF8F0" + // 14565 - 14569
- "\u8EA2\uE6DB\u0000\uFAB2\u0000\uFAB4\u0000\uFAB1\u0000\u0000" + // 14570 - 14574
- "\u8EA2\uE9EF\u8EA2\uE9E7\u8EA2\uE9E5\u8EA2\uDEE1\u8EA2\uDEF9" + // 14575 - 14579
- "\u8EA2\uDEFB\u8EA2\uDEE0\u0000\uF5AB\u8EA2\uDEFD\u8EA2\uDEF5" + // 14580 - 14584
- "\u0000\uF5B2\u8EA2\uDEFC\u8EA2\uDEEE\u0000\uF5B4\u8EA2\uDEE6" + // 14585 - 14589
- "\u8EA2\uD9FD\u8EA2\uDEF6\u8EA2\uDEF3\u8EA2\uDEE2\u8EA2\uDFA3" + // 14590 - 14594
- "\u0000\uF5AE\u0000\u0000\u0000\u0000\u0000\uF5AF\u8EA2\uDEE4" + // 14595 - 14599
- "\u8EA2\uDEF4\u0000\u0000\u8EA2\uDFA2\u8EA2\uDEF7\u8EA2\uDEEA" + // 14600 - 14604
- "\u0000\uF5B1\u0000\uF5AD\u8EA2\uDEF8\u8EA2\uDEEB\u8EA2\uDFA4" + // 14605 - 14609
- "\u8EA2\uDEE5\u8EA2\uDEEF\u8EA2\uDEFA\u8EA2\uDEE7\u8EA2\uDEE9" + // 14610 - 14614
- "\u0000\u0000\u0000\uF5B5\u8EA2\uDEE3\u0000\uF5B3\u0000\uF7B0" + // 14615 - 14619
- "\u0000\uF5AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14620 - 14624
- "\u0000\uF5B0\u0000\uF7B4\u8EA2\uE2FD\u0000\u0000\u8EA2\uE2F3" + // 14625 - 14629
- "\u8EA2\uE2EE\u8EA2\uE2F4\u8EA2\uE2FE\u8EA2\uE3A4\u8EA2\uE3A3" + // 14630 - 14634
- "\u0000\uF7B6\u0000\uF7B5\u0000\u0000\u0000\u0000\u8EA2\uE2F5" + // 14635 - 14639
- "\u8EA2\uE3A5\u8EA2\uE2F8\u8EA2\uD9EB\u8EA2\uD9EE\u0000\u0000" + // 14640 - 14644
- "\u0000\uF2A5\u8EA2\uD9F0\u8EA2\uD9E5\u8EA2\uD9EC\u8EA2\uD9F2" + // 14645 - 14649
- "\u0000\uF2A2\u0000\uF2A6\u0000\uF1FE\u0000\u0000\u0000\u0000" + // 14650 - 14654
- "\u8EA2\uD9E7\u8EA2\uD9F7\u0000\u0000\u0000\u0000\u8EA2\uD9F1" + // 14655 - 14659
- "\u0000\u0000\u8EA2\uD9E8\u8EA2\uDAA2\u8EA2\uD9FA\u8EA2\uD9E4" + // 14660 - 14664
- "\u8EA2\uDEF2\u8EA2\uD9EA\u0000\uF2A1\u0000\u0000\u8EA2\uD9F5" + // 14665 - 14669
- "\u0000\u0000\u8EA2\uDAA1\u0000\uF2A9\u0000\u0000\u8EA2\uD9FC" + // 14670 - 14674
- "\u8EA2\uD9E9\u8EA2\uD9EF\u8EA2\uD9F3\u8EA2\uD9ED\u8EA2\uDAA3" + // 14675 - 14679
- "\u8EA2\uD9FE\u8EA2\uD9FB\u0000\uF2A3\u0000\uF2A4\u0000\uF2A8" + // 14680 - 14684
- "\u8EA2\uD9E6\u8EA2\uDAA4\u0000\uF2A7\u8EA2\uD9F8\u0000\u0000" + // 14685 - 14689
- "\u0000\u0000\u8EA2\uD9F6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14690 - 14694
- "\u8EA2\uD9F9\u8EA2\uDFA1\u8EA2\uDEEC\u8EA2\uDEF1\u8EA2\uDEFE" + // 14695 - 14699
- "\u8EA2\uDEF0\u8EA2\uDEE8\u8EA2\uDEED\u0000\u0000\u0000\uF5AC" + // 14700 - 14704
- "\u0000\u0000\u0000\uF6AB\u8EA2\uE0E4\u8EA2\uE0EF\u8EA2\uE4DD" + // 14705 - 14709
- "\u8EA2\uE4E0\u8EA2\uE4E2\u8EA2\uE4E1\u0000\u0000\u8EA2\uE4DB" + // 14710 - 14714
- "\u8EA2\uE4DF\u8EA2\uE4DA\u0000\u0000\u8EA2\uE4DC\u0000\uF7F7" + // 14715 - 14719
- "\u8EA2\uE4D9\u0000\u0000\u8EA2\uE4DE\u0000\u0000\u0000\u0000" + // 14720 - 14724
- "\u8EA2\uE8AD\u8EA2\uE8A2\u0000\uF9D1\u0000\u0000\u0000\u0000" + // 14725 - 14729
- "\u0000\uF9D2\u8EA2\uE8A1\u8EA2\uE8A6\u8EA2\uE8AC\u8EA2\uE8A4" + // 14730 - 14734
- "\u8EA2\uE8AB\u0000\u0000\u8EA2\uE8A8\u0000\u0000\u8EA2\uE8A7" + // 14735 - 14739
- "\u8EA2\uE8AA\u8EA2\uE8A5\u8EA2\uE8A3\u0000\u0000\u8EA2\uE8A9" + // 14740 - 14744
- "\u0000\u0000\u8EA2\uEAEE\u8EA2\uEAEC\u0000\uFAD5\u8EA2\uEAEB" + // 14745 - 14749
- "\u8EA2\uEAF1\u8EA2\uEAEF\u0000\u0000\u0000\uFAD6\u8EA2\uEAEA" + // 14750 - 14754
- "\u8EA2\uEAE8\u0000\u0000\u8EA2\uEAE9\u0000\uFAD8\u8EA2\uEAED" + // 14755 - 14759
- "\u0000\uFAD7\u8EA2\uEAF0\u8EA2\uECE6\u8EA2\uECEC\u0000\u0000" + // 14760 - 14764
- "\u0000\u0000\u8EA2\uECE7\u0000\uFBC7\u8EA2\uECED\u8EA2\uD3B8" + // 14765 - 14769
- "\u0000\u0000\u8EA2\uD3D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14770 - 14774
- "\u0000\uEEE0\u8EA2\uC6E2\u8EA2\uD3C4\u8EA2\uD3BB\u8EA2\uD3BE" + // 14775 - 14779
- "\u8EA2\uD3E4\u8EA2\uD3C5\u8EA2\uD3BC\u8EA2\uD3BA\u8EA2\uD3B7" + // 14780 - 14784
- "\u0000\u0000\u0000\uEED9\u8EA2\uD3CE\u0000\uEED8\u0000\uEEDC" + // 14785 - 14789
- "\u8EA2\uD3C9\u8EA2\uD3D1\u0000\uEED2\u8EA2\uD3E1\u8EA2\uD3E5" + // 14790 - 14794
- "\u0000\uEED4\u0000\u0000\u8EA2\uD3C0\u8EA2\uD3D4\u8EA2\uD3D8" + // 14795 - 14799
- "\u8EA2\uD3BD\u8EA2\uD3E2\u0000\uEEDB\u0000\u0000\u0000\uEEDA" + // 14800 - 14804
- "\u8EA2\uD3B5\u0000\uEEDE\u8EA2\uD3DB\u8EA2\uD3BF\u8EA2\uD3D3" + // 14805 - 14809
- "\u8EA2\uD3B9\u8EA2\uD3C7\u8EA2\uD3C2\u0000\uEED6\u0000\uEED7" + // 14810 - 14814
- "\u8EA2\uD3D5\u8EA2\uD3E6\u8EA2\uD3E3\u8EA2\uD3DA\u0000\u0000" + // 14815 - 14819
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14820 - 14824
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3B6\u0000\u0000" + // 14825 - 14829
- "\u0000\uEED3\u8EA2\uD9F4\u0000\u0000\u0000\uEBF2\u8EA2\uCFBF" + // 14830 - 14834
- "\u8EA2\uCFBB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFC1" + // 14835 - 14839
- "\u0000\u0000\u8EA2\uD5F5\u0000\u0000\u8EA2\uD5F8\u8EA2\uD5FA" + // 14840 - 14844
- "\u8EA2\uD5F0\u8EA2\uD5F4\u8EA2\uD5F1\u0000\uEFF7\u0000\uEFFA" + // 14845 - 14849
- "\u0000\uEFFC\u8EA2\uD5F2\u8EA2\uD5F3\u0000\uEFFB\u8EA2\uD5F6" + // 14850 - 14854
- "\u8EA2\uD5F9\u8EA2\uD5F7\u0000\uEFFD\u0000\u0000\u0000\uEFF9" + // 14855 - 14859
- "\u8EA2\uD5EF\u0000\uEFF6\u0000\u0000\u0000\uEFF8\u0000\u0000" + // 14860 - 14864
- "\u0000\u0000\u0000\uF3AE\u8EA2\uDBF2\u8EA2\uDBF0\u8EA2\uDBEF" + // 14865 - 14869
- "\u0000\u0000\u8EA2\uDBF5\u0000\u0000\u8EA2\uDBF4\u8EA2\uDBF3" + // 14870 - 14874
- "\u0000\u0000\u8EA2\uDBEE\u0000\uF3AD\u8EA2\uDBED\u0000\u0000" + // 14875 - 14879
- "\u8EA2\uDBF1\u0000\uF3AF\u0000\u0000\u0000\u0000\u8EA2\uE0E6" + // 14880 - 14884
- "\u0000\u0000\u8EA2\uE0EA\u8EA2\uE0E7\u8EA2\uE0E9\u8EA2\uE0E8" + // 14885 - 14889
- "\u8EA2\uE0E5\u8EA2\uE0EB\u8EA2\uE0EE\u8EA2\uE0EC\u8EA2\uE0ED" + // 14890 - 14894
- "\u0000\uF6AC\u0000\uEAE6\u8EA2\uCDBF\u8EA2\uCDB9\u0000\u0000" + // 14895 - 14899
- "\u0000\uEADF\u8EA2\uC6F9\u0000\uEADE\u8EA2\uCDCA\u0000\u0000" + // 14900 - 14904
- "\u0000\uEADC\u0000\uEAEB\u0000\uEAE4\u8EA2\uCDCB\u8EA2\uCDC0" + // 14905 - 14909
- "\u8EA2\uCDB8\u8EA2\uCDD3\u8EA2\uCDC4\u0000\uEAEA\u8EA2\uCDD7" + // 14910 - 14914
- "\u0000\uEAE7\u8EA2\uCDD6\u0000\u0000\u8EA2\uCDD0\u8EA2\uCDD5" + // 14915 - 14919
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDD8\u0000\u0000" + // 14920 - 14924
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14925 - 14929
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14930 - 14934
- "\u8EA2\uD3DC\u8EA2\uD3DD\u8EA2\uD3D0\u8EA2\uD3CF\u8EA2\uD3CB" + // 14935 - 14939
- "\u0000\uEEDD\u0000\u0000\u0000\uEED5\u8EA2\uD3DF\u8EA2\uD3DE" + // 14940 - 14944
- "\u8EA2\uC6CE\u8EA2\uD3C8\u8EA2\uD3CC\u8EA2\uD3C6\u0000\u0000" + // 14945 - 14949
- "\u8EA2\uD3D9\u8EA2\uD3CA\u0000\u0000\u8EA2\uD3E0\u8EA2\uD3C3" + // 14950 - 14954
- "\u8EA2\uD3C1\u8EA2\uD3CD\u8EA2\uD3D7\u8EA2\uD3D2\u0000\uEEDF" + // 14955 - 14959
- "\u8EA2\uC6D7\u0000\u0000\u8EA2\uC6F0\u8EA2\uC6E8\u8EA2\uC7A3" + // 14960 - 14964
- "\u8EA2\uC6EB\u0000\uE6BD\u8EA2\uC6FC\u0000\u0000\u0000\uE6B4" + // 14965 - 14969
- "\u0000\u0000\u8EA2\uC6EE\u8EA2\uC6F6\u8EA2\uC6DB\u8EA2\uC6F5" + // 14970 - 14974
- "\u0000\u0000\u8EA2\uC7A8\u8EA2\uC6D6\u8EA2\uC6F7\u0000\u0000" + // 14975 - 14979
- "\u8EA2\uC7A6\u0000\u0000\u8EA2\uC6D0\u0000\uE1E1\u0000\u0000" + // 14980 - 14984
- "\u8EA2\uC6DE\u8EA2\uC6DD\u0000\uE6B6\u0000\u0000\u8EA2\uC6E1" + // 14985 - 14989
- "\u8EA2\uC6E3\u8EA2\uC6F2\u8EA2\uC7A5\u0000\uE6B9\u0000\u0000" + // 14990 - 14994
- "\u0000\uE6BA\u0000\u0000\u8EA2\uC6D5\u0000\uE6B2\u8EA2\uC6D9" // 14995 - 14999
- ;
-
- index2b =
- "\u8EA2\uC7A1\u0000\uE6BB\u0000\u0000\u0000\uE6B3\u0000\uE6B5" + // 15000 - 15004
- "\u0000\uE6BC\u8EA2\uC7A7\u8EA2\uC6F8\u8EA2\uC6F3\u0000\u0000" + // 15005 - 15009
- "\u0000\u0000\u8EA2\uC6E0\u8EA2\uC6DF\u0000\uE6B1\u8EA2\uC6D1" + // 15010 - 15014
- "\u0000\uE6AE\u8EA2\uC6E9\u8EA2\uC6D2\u8EA2\uC6E7\u0000\u0000" + // 15015 - 15019
- "\u0000\u0000\u8EA2\uC6DC\u8EA2\uC7A2\u0000\u0000\u8EA2\uE4D6" + // 15020 - 15024
- "\u0000\u0000\u8EA2\uE7FC\u0000\u0000\u0000\uF9CF\u0000\u0000" + // 15025 - 15029
- "\u8EA2\uE7FB\u8EA2\uE7FA\u0000\uF9D0\u0000\u0000\u8EA2\uEAE6" + // 15030 - 15034
- "\u8EA2\uEAE5\u0000\u0000\u8EA2\uEAE3\u0000\u0000\u8EA2\uEAE2" + // 15035 - 15039
- "\u0000\uFAD3\u0000\uFAD2\u8EA2\uEAE7\u8EA2\uEEC5\u0000\uFCA5" + // 15040 - 15044
- "\u8EA2\uECE5\u0000\uFBC3\u8EA2\uECE4\u8EA2\uEAE4\u0000\u0000" + // 15045 - 15049
- "\u8EA2\uEEC6\u0000\uFCD0\u0000\u0000\u0000\uFDAE\u8EA2\uF1C8" + // 15050 - 15054
- "\u0000\u0000\u8EA2\uF2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 15055 - 15059
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15060 - 15064
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15065 - 15069
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15070 - 15074
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15075 - 15079
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15080 - 15084
- "\u0000\u0000\u0000\u0000\u0000\uCFDD\u0000\u0000\u8EA2\uA1E9" + // 15085 - 15089
- "\u0000\u0000\u8EA2\uA2F8\u0000\uC8EA\u8EA2\uA2F6\u8EA2\uA2F9" + // 15090 - 15094
- "\u8EA2\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5AE" + // 15095 - 15099
- "\u0000\u0000\u0000\uCBE2\u0000\u0000\u0000\uCBE3\u8EA2\uA5B0" + // 15100 - 15104
- "\u0000\uCBE0\u8EA2\uA5AF\u8EA2\uA5AD\u0000\uCBE1\u0000\uCBDF" + // 15105 - 15109
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15110 - 15114
- "\u0000\u0000\u8EA2\uA8F8\u8EA2\uA8FB\u0000\uCFE0\u8EA2\uA8FA" + // 15115 - 15119
- "\u8EA2\uA8F9\u0000\u0000\u0000\uCFDF\u8EA2\uBFC5\u0000\uE1DD" + // 15120 - 15124
- "\u8EA2\uBFE2\u8EA2\uBFEB\u8EA2\uBFEE\u0000\uE1DB\u8EA2\uBFCD" + // 15125 - 15129
- "\u8EA2\uBFE6\u8EA2\uBFCE\u8EA2\uBFDC\u0000\uE1E8\u8EA2\uBFD8" + // 15130 - 15134
- "\u0000\uE1E5\u0000\u0000\u8EA2\uBFD9\u8EA2\uBFC2\u0000\u0000" + // 15135 - 15139
- "\u8EA2\uBFE7\u0000\u0000\u0000\u0000\u0000\uE1EE\u8EA2\uBFE4" + // 15140 - 15144
- "\u8EA2\uBFDA\u8EA2\uBFF0\u8EA2\uBFD5\u8EA2\uC6ED\u0000\u0000" + // 15145 - 15149
- "\u8EA2\uBFF3\u0000\uE1EC\u8EA2\uBFD3\u8EA2\uBFDF\u0000\uE1EF" + // 15150 - 15154
- "\u0000\uE1DA\u8EA2\uBFD7\u8EA2\uBFF1\u8EA2\uBFD0\u8EA2\uBFC9" + // 15155 - 15159
- "\u8EA2\uBFD4\u0000\u0000\u8EA2\uBFC8\u8EA2\uBFC6\u0000\uE1D6" + // 15160 - 15164
- "\u8EA2\uBFE8\u8EA2\uBFCF\u8EA2\uBFEC\u0000\u0000\u8EA2\uBFED" + // 15165 - 15169
- "\u0000\uE1DE\u0000\uE1E3\u0000\uE1DF\u0000\uE1E7\u8EA2\uBFE3" + // 15170 - 15174
- "\u0000\uE1E0\u8EA2\uBFDB\u8EA2\uBFCB\u0000\u0000\u0000\uE1D8" + // 15175 - 15179
- "\u8EA2\uBFC3\u8EA2\uBFE5\u8EA2\uBFEF\u8EA2\uBFCA\u0000\uE1E6" + // 15180 - 15184
- "\u8EA2\uBFF4\u8EA2\uBFD6\u0000\uD8A1\u8EA2\uB2BF\u8EA2\uB2C3" + // 15185 - 15189
- "\u0000\uD8A4\u8EA2\uB2B9\u8EA2\uB2D1\u0000\u0000\u8EA2\uB2D0" + // 15190 - 15194
- "\u8EA2\uB2D8\u0000\uD7F7\u0000\uD7F4\u8EA2\uB2D6\u8EA2\uB2D2" + // 15195 - 15199
- "\u8EA2\uB2C9\u8EA2\uB2C4\u0000\uD7FA\u0000\uD7F6\u8EA2\uB2BB" + // 15200 - 15204
- "\u0000\uD7F2\u8EA2\uB2D3\u0000\uD7F3\u0000\u0000\u8EA2\uB2BD" + // 15205 - 15209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15210 - 15214
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15215 - 15219
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15220 - 15224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15225 - 15229
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15230 - 15234
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8E2\u8EA2\uB8E4" + // 15235 - 15239
- "\u8EA2\uB8E9\u8EA2\uB8FD\u0000\uDDA3\u0000\uDCF7\u0000\u0000" + // 15240 - 15244
- "\u8EA2\uB8E1\u0000\uDDA4\u0000\uDDA5\u8EA2\uB8EC\u8EA2\uB8F3" + // 15245 - 15249
- "\u8EA2\uB8F9\u8EA2\uADB3\u0000\uD3C2\u0000\uD3BD\u0000\uD3B6" + // 15250 - 15254
- "\u0000\uD3BB\u0000\uD3B7\u0000\uD3CA\u8EA2\uADB1\u8EA2\uB2C7" + // 15255 - 15259
- "\u0000\uD3BE\u0000\u0000\u0000\u0000\u8EA2\uADBD\u8EA2\uA9C2" + // 15260 - 15264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15265 - 15269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB2CA\u0000\uD7FE" + // 15270 - 15274
- "\u0000\u0000\u8EA2\uB2BA\u0000\u0000\u8EA2\uB2C5\u8EA2\uB2C1" + // 15275 - 15279
- "\u0000\u0000\u8EA2\uB2D4\u0000\u0000\u8EA2\uB2CC\u0000\u0000" + // 15280 - 15284
- "\u8EA2\uB2C2\u0000\u0000\u8EA2\uB2CB\u8EA2\uB2BC\u8EA2\uB2C0" + // 15285 - 15289
- "\u8EA2\uB2D7\u0000\uD8A3\u8EA2\uB2CF\u8EA2\uB2C6\u0000\uD7F1" + // 15290 - 15294
- "\u8EA2\uB2D5\u8EA2\uB2B8\u0000\u0000\u8EA2\uB2CE\u0000\u0000" + // 15295 - 15299
- "\u0000\uD8A2\u0000\uD7FB\u8EA2\uB2B7\u0000\uD7F9\u0000\uD7F8" + // 15300 - 15304
- "\u0000\uD7FD\u8EA2\uB2CD\u0000\uD7F5\u0000\uD7FC\u8EA2\uADB5" + // 15305 - 15309
- "\u8EA2\uBFC1\u8EA2\uB2C8\u0000\u0000\u0000\u0000\u8EA2\uB2BE" + // 15310 - 15314
- "\u8EA2\uA8D3\u0000\u0000\u8EA2\uA8E2\u8EA2\uA8E4\u0000\u0000" + // 15315 - 15319
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15320 - 15324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15325 - 15329
- "\u0000\u0000\u0000\u0000\u0000\uD3C5\u0000\uD3BF\u0000\uD3C7" + // 15330 - 15334
- "\u0000\uD3C4\u8EA2\uADB4\u8EA2\uADB7\u0000\uD3C0\u0000\u0000" + // 15335 - 15339
- "\u8EA2\uADAE\u0000\u0000\u0000\uD3B9\u0000\uD3C3\u0000\u0000" + // 15340 - 15344
- "\u0000\uD3C6\u0000\uD3C8\u8EA2\uADC3\u8EA2\uADBA\u0000\u0000" + // 15345 - 15349
- "\u0000\uD3B8\u8EA2\uADC2\u0000\uD3BC\u0000\uD3BA\u0000\uD3B5" + // 15350 - 15354
- "\u8EA2\uADB2\u0000\u0000\u8EA2\uADC1\u8EA2\uADB6\u8EA2\uADB9" + // 15355 - 15359
- "\u8EA2\uADC6\u0000\u0000\u0000\uD3C9\u8EA2\uADC0\u0000\uD3C1" + // 15360 - 15364
- "\u8EA2\uADBB\u8EA2\uADC5\u8EA2\uADB8\u8EA2\uADBC\u8EA2\uADBF" + // 15365 - 15369
- "\u0000\u0000\u0000\u0000\u8EA2\uADB0\u8EA2\uADC4\u8EA2\uADBE" + // 15370 - 15374
- "\u0000\u0000\u0000\u0000\u8EA2\uADAF\u0000\u0000\u8EA2\uE0D1" + // 15375 - 15379
- "\u0000\u0000\u8EA2\uE0D6\u8EA2\uE0D2\u8EA2\uE0D5\u0000\uF6A8" + // 15380 - 15384
- "\u0000\u0000\u8EA2\uDEC1\u8EA2\uE0D4\u8EA2\uE0D3\u0000\u0000" + // 15385 - 15389
- "\u0000\uF7EE\u0000\uF7EC\u0000\uF7EF\u0000\uF7ED\u8EA2\uE4D2" + // 15390 - 15394
- "\u8EA2\uE4D3\u8EA2\uE4D4\u0000\uF7F0\u0000\u0000\u0000\u0000" + // 15395 - 15399
- "\u0000\u0000\u8EA2\uE7F5\u0000\uF9CC\u8EA2\uE7F3\u0000\u0000" + // 15400 - 15404
- "\u0000\uF9CD\u8EA2\uE7F2\u8EA2\uE7F4\u0000\uF9CB\u8EA2\uEADF" + // 15405 - 15409
- "\u8EA2\uEADC\u0000\u0000\u8EA2\uEADD\u8EA2\uEADE\u8EA2\uECE0" + // 15410 - 15414
- "\u0000\uFBC2\u0000\u0000\u0000\uFBC1\u0000\u0000\u8EA2\uEEC3" + // 15415 - 15419
- "\u8EA2\uEEC2\u0000\uFCA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 15420 - 15424
- "\u0000\uFCCF\u0000\uFCF4\u0000\uFDAD\u8EA2\uF1C7\u8EA2\uF1FC" + // 15425 - 15429
- "\u8EA2\uF1FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15430 - 15434
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15435 - 15439
- "\u0000\u0000\u0000\u0000\u0000\uA1FA\u0000\uA1F9\u0000\u0000" + // 15440 - 15444
- "\u0000\u0000\u0000\u0000\u0000\uA1F2\u0000\u0000\u0000\u0000" + // 15445 - 15449
- "\u0000\uA1F6\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 15450 - 15454
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15455 - 15459
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15460 - 15464
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15465 - 15469
- "\u0000\uA3C8\u0000\uA3C9\u0000\uA3CB\u0000\uA3CA\u0000\u0000" + // 15470 - 15474
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15475 - 15479
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1D2\u0000\u0000" + // 15480 - 15484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15485 - 15489
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15490 - 15494
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15495 - 15499
- "\u8EAD\uA4C8\u8EAD\uA4CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 15500 - 15504
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15505 - 15509
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15510 - 15514
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15515 - 15519
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15520 - 15524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15525 - 15529
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15530 - 15534
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15535 - 15539
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15540 - 15544
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15545 - 15549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15550 - 15554
- "\u0000\u0000\u0000\uC8CF\u0000\u0000\u0000\uD2FE\u8EA2\uB0D2" + // 15555 - 15559
- "\u0000\uD7CD\u0000\u0000\u0000\u0000\u0000\uDCDF\u8EA2\uBFA2" + // 15560 - 15564
- "\u8EA2\uBFA3\u8EA2\uA2EC\u0000\u0000\u0000\u0000\u8EA2\uA5A2" + // 15565 - 15569
- "\u8EA2\uA5A3\u8EA2\uA4FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 15570 - 15574
- "\u0000\u0000\u8EA2\uA5A1\u0000\uCBC2\u0000\u0000\u0000\uCBC3" + // 15575 - 15579
- "\u8EA2\uA4FC\u8EA2\uA4FA\u8EA2\uA4F9\u8EA2\uA4FD\u0000\uCBC1" + // 15580 - 15584
- "\u8EA2\uA4FE\u8EA2\uADAD\u0000\u0000\u0000\u0000\u0000\u0000" + // 15585 - 15589
- "\u8EA2\uA8D6\u0000\uCFBF\u8EA2\uA8D5\u8EA2\uA8D7\u0000\u0000" + // 15590 - 15594
- "\u0000\uCFBE\u8EA2\uA8DC\u0000\uCFC2\u8EA2\uA8D2\u8EA2\uA8E0" + // 15595 - 15599
- "\u8EA2\uA8E6\u0000\uCFC9\u8EA2\uA8E3\u0000\uCFC6\u0000\u0000" + // 15600 - 15604
- "\u8EA2\uA8D9\u8EA2\uA8DF\u8EA2\uA8E1\u0000\u0000\u8EA2\uA8D4" + // 15605 - 15609
- "\u0000\uCFC5\u0000\uCFC0\u8EA2\uA8DA\u0000\uCFC7\u0000\uCFCA" + // 15610 - 15614
- "\u0000\uCFC4\u0000\u0000\u0000\uCFBD\u8EA2\uA8DE\u8EA2\uA8D8" + // 15615 - 15619
- "\u8EA2\uA8E5\u0000\uCFCC\u0000\uCFC8\u0000\uCFC3\u8EA2\uA8DD" + // 15620 - 15624
- "\u0000\uD7F0\u8EA2\uA8DB\u0000\uCFC1\u0000\uCFCB\u0000\u0000" + // 15625 - 15629
- "\u0000\uFCA3\u0000\u0000\u0000\uFCA2\u8EA2\uEFDD\u8EA2\uEFDE" + // 15630 - 15634
- "\u0000\uFCF3\u8EA2\uF0DF\u0000\u0000\u0000\uFDB6\u0000\u0000" + // 15635 - 15639
- "\u0000\uD3F4\u0000\uE2F9\u8EA2\uCFB2\u8EA2\uCFB1\u8EA2\uD5DE" + // 15640 - 15644
- "\u8EA2\uD5DD\u0000\u0000\u0000\u0000\u0000\uF6A7\u8EA2\uE0CF" + // 15645 - 15649
- "\u8EA2\uE0CE\u8EA2\uE4CF\u8EA2\uE4CD\u8EA2\uE4D0\u8EA2\uE4CE" + // 15650 - 15654
- "\u0000\u0000\u0000\u0000\u0000\uF9C9\u8EA2\uE7EF\u8EA2\uE7F0" + // 15655 - 15659
- "\u8EA2\uE7F1\u0000\u0000\u8EA2\uECDF\u0000\u0000\u8EA2\uEEC1" + // 15660 - 15664
- "\u0000\u0000\u8EA2\uF0E0\u0000\u0000\u0000\u0000\u0000\u0000" + // 15665 - 15669
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F5" + // 15670 - 15674
- "\u0000\u0000\u0000\u0000\u8EA2\uDBE3\u8EA2\uE0D0\u0000\u0000" + // 15675 - 15679
- "\u0000\uD3F6\u0000\u0000\u0000\u0000\u0000\uEBE9\u0000\u0000" + // 15680 - 15684
- "\u8EA2\uDBE4\u0000\uF7EB\u8EA2\uE4D1\u0000\uF9CA\u0000\u0000" + // 15685 - 15689
- "\u8EA2\uEADA\u8EA2\uEADB\u0000\uFBC0\u8EA2\uC6CB\u0000\u0000" + // 15690 - 15694
- "\u8EA2\uC6CC\u0000\u0000\u8EA2\uC6CA\u8EA2\uC6CD\u0000\u0000" + // 15695 - 15699
- "\u0000\uE6AC\u0000\u0000\u8EA2\uC6C9\u0000\u0000\u0000\uEADB" + // 15700 - 15704
- "\u0000\u0000\u0000\u0000\u8EA2\uD3B3\u8EA2\uD3AF\u8EA2\uD3B2" + // 15705 - 15709
- "\u8EA2\uD3B4\u8EA2\uD3B1\u8EA2\uD3B0\u0000\u0000\u8EA2\uD9E1" + // 15710 - 15714
- "\u8EA2\uD9E2\u8EA2\uD9E3\u0000\uF1FC\u0000\uF1FD\u8EA2\uDEDE" + // 15715 - 15719
- "\u8EA2\uDEDD\u8EA2\uDEDF\u0000\u0000\u8EA2\uE2ED\u8EA2\uE2EC" + // 15720 - 15724
- "\u0000\u0000\u8EA2\uE6CF\u0000\u0000\u8EA2\uE6D0\u8EA2\uE6CE" + // 15725 - 15729
- "\u0000\u0000\u0000\uFAB0\u0000\u0000\u8EA2\uE9E2\u8EA2\uE9E3" + // 15730 - 15734
- "\u0000\u0000\u8EA2\uEDF3\u8EA2\uEFBE\u8EA2\uF0C9\u0000\uC8E2" + // 15735 - 15739
- "\u0000\uCBC0\u0000\u0000\u0000\uF5A9\u0000\uC8E3\u0000\u0000" + // 15740 - 15744
- "\u8EA2\uB8DC\u8EA2\uBFC0\u0000\u0000\u0000\uFCEC\u8EA2\uA2EA" + // 15745 - 15749
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2EB\u8EA2\uA2ED" + // 15750 - 15754
- "\u0000\uC8E4\u8EA2\uA2EE\u0000\uD7EA\u8EA2\uB2B4\u0000\uDCEF" + // 15755 - 15759
- "\u0000\u0000\u8EA2\uBFBC\u0000\uE6AB\u0000\u0000\u0000\uEAD8" + // 15760 - 15764
- "\u0000\uF1FB\u0000\uF5A8\u0000\uF7AE\u8EA2\uE6CD\u0000\uC8DF" + // 15765 - 15769
- "\u0000\uCFBC\u0000\u0000\u0000\u0000\u0000\uD7EB\u8EA2\uB8D6" + // 15770 - 15774
- "\u0000\uE1D4\u0000\u0000\u0000\uEAD9\u8EA2\uCDB2\u8EA2\uD3AE" + // 15775 - 15779
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8E0" + // 15780 - 15784
- "\u0000\uE1D5\u8EA2\uC6C8\u0000\uEADA\u0000\uC8E1\u8EA2\uA8D1" + // 15785 - 15789
- "\u8EA2\uADAC\u0000\uD3B4\u0000\u0000\u0000\u0000\u8EA2\uB2B6" + // 15790 - 15794
- "\u0000\u0000\u0000\u0000\u0000\uD7EE\u0000\u0000\u0000\uD7EC" + // 15795 - 15799
- "\u0000\uD7ED\u0000\uD7EF\u0000\u0000\u0000\u0000\u8EA2\uB2B5" + // 15800 - 15804
- "\u0000\u0000\u0000\u0000\u8EA2\uB8DB\u8EA2\uB8D8\u8EA2\uB8DA" + // 15805 - 15809
- "\u0000\uDCF0\u0000\uDCF2\u0000\uDCF1\u8EA2\uB8D7\u0000\uDCF3" + // 15810 - 15814
- "\u8EA2\uB8D9\u0000\u0000\u8EA2\uBFBD\u8EA2\uBFBE\u0000\u0000" + // 15815 - 15819
- "\u8EA2\uBFBF\u0000\uF5A2\u0000\u0000\u0000\uF5A1\u0000\uF4FD" + // 15820 - 15824
- "\u8EA2\uDED6\u8EA2\uDED9\u0000\uF4FC\u8EA2\uDEDA\u0000\u0000" + // 15825 - 15829
- "\u0000\uF5A5\u8EA2\uDED8\u0000\u0000\u8EA2\uDED7\u0000\uF7AC" + // 15830 - 15834
- "\u0000\u0000\u0000\uF7AD\u8EA2\uE2EB\u8EA2\uE2E9\u8EA2\uE2EA" + // 15835 - 15839
- "\u0000\u0000\u0000\u0000\u8EA2\uE6CC\u0000\u0000\u8EA2\uE6CB" + // 15840 - 15844
- "\u0000\uF8E9\u8EA2\uE9E1\u0000\uFAAF\u8EA2\uE9E0\u0000\u0000" + // 15845 - 15849
- "\u8EA2\uEBFE\u8EA2\uEDF2\u0000\uFBF0\u8EA2\uF1B2\u8EA2\uF1B3" + // 15850 - 15854
- "\u0000\uFCC4\u0000\uC8DB\u0000\u0000\u0000\uCFBA\u8EA2\uBFB7" + // 15855 - 15859
- "\u0000\uEAD6\u0000\uF5A7\u8EA2\uDEDC\u0000\uC8DC\u0000\u0000" + // 15860 - 15864
- "\u0000\uD7E9\u0000\uD7E8\u8EA2\uBFB8\u0000\u0000\u0000\u0000" + // 15865 - 15869
- "\u0000\u0000\u8EA2\uD9E0\u0000\uC8DD\u0000\uD3B3\u0000\u0000" + // 15870 - 15874
- "\u0000\u0000\u8EA2\uBFB9\u8EA2\uBFBA\u8EA2\uBFBB\u0000\uEAD7" + // 15875 - 15879
- "\u0000\uF1FA\u0000\uC8DE\u0000\u0000\u0000\uCFBB\u8EA2\uADAB" + // 15880 - 15884
- "\u0000\uEAD0\u0000\u0000\u0000\uEAD5\u8EA2\uCDAD\u0000\u0000" + // 15885 - 15889
- "\u0000\u0000\u8EA2\uCDAC\u8EA2\uCDAE\u0000\uEAD2\u8EA2\uCDAB" + // 15890 - 15894
- "\u0000\uEAD3\u8EA2\uCDB1\u8EA2\uCDB0\u8EA2\uCDAF\u0000\u0000" + // 15895 - 15899
- "\u0000\uEAD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15900 - 15904
- "\u0000\u0000\u8EA2\uD3AA\u0000\u0000\u8EA2\uD3AD\u0000\uEED1" + // 15905 - 15909
- "\u8EA2\uD3AC\u0000\uEED0\u0000\uEECC\u0000\uEECD\u0000\uEECE" + // 15910 - 15914
- "\u8EA2\uD3A9\u8EA2\uD3A8\u0000\uEECF\u0000\u0000\u8EA2\uD3AB" + // 15915 - 15919
- "\u8EA2\uD3A7\u0000\u0000\u0000\u0000\u8EA2\uD9D5\u8EA2\uD9DF" + // 15920 - 15924
- "\u0000\uF1F9\u0000\uF1F8\u0000\u0000\u8EA2\uD9D9\u8EA2\uD9DB" + // 15925 - 15929
- "\u0000\u0000\u8EA2\uD9D6\u0000\u0000\u8EA2\uD9DA\u8EA2\uD9D4" + // 15930 - 15934
- "\u8EA2\uD9DD\u0000\uF1F7\u8EA2\uD9DC\u8EA2\uD9D8\u0000\u0000" + // 15935 - 15939
- "\u8EA2\uD9DE\u0000\u0000\u8EA2\uD9D7\u0000\uF4FE\u8EA2\uDED5" + // 15940 - 15944
- "\u8EA2\uDEDB\u0000\uF5A4\u0000\uF5A6\u0000\uF5A3\u8EA2\uB2B3" + // 15945 - 15949
- "\u8EA2\uB2B1\u0000\uD7DB\u0000\u0000\u0000\u0000\u0000\uD7DD" + // 15950 - 15954
- "\u0000\uD7E0\u0000\u0000\u0000\uD7E3\u0000\u0000\u0000\uD7E5" + // 15955 - 15959
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15960 - 15964
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15965 - 15969
- "\u8EA2\uB8D2\u0000\uDCE9\u0000\u0000\u8EA2\uB8C9\u8EA2\uB8CB" + // 15970 - 15974
- "\u0000\u0000\u8EA2\uB8CC\u0000\u0000\u8EA2\uB8D4\u8EA2\uB8D0" + // 15975 - 15979
- "\u8EA2\uB8CE\u0000\u0000\u8EA2\uB8D1\u8EA2\uB8D5\u0000\uDCEA" + // 15980 - 15984
- "\u0000\uDCEE\u8EA2\uB8CA\u0000\u0000\u8EA2\uB8D3\u0000\u0000" + // 15985 - 15989
- "\u0000\uDCEC\u0000\u0000\u0000\uDCEB\u8EA2\uB8CF\u8EA2\uB8CD" + // 15990 - 15994
- "\u0000\u0000\u0000\uDCE8\u0000\uDCED\u0000\u0000\u0000\u0000" + // 15995 - 15999
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16000 - 16004
- "\u0000\u0000\u0000\uE1CE\u8EA2\uBFB6\u0000\u0000\u0000\u0000" + // 16005 - 16009
- "\u8EA2\uBFB4\u0000\uE1D0\u0000\u0000\u0000\uD3E8\u0000\u0000" + // 16010 - 16014
- "\u0000\uD3E9\u0000\u0000\u8EA2\uADDC\u0000\u0000\u8EA2\uADDE" + // 16015 - 16019
- "\u8EA2\uADE0\u0000\u0000\u0000\uD3E6\u8EA2\uADDF\u0000\u0000" + // 16020 - 16024
- "\u0000\u0000\u0000\uD3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 16025 - 16029
- "\u0000\u0000\u0000\u0000\u8EA2\uB9F1\u8EA2\uADDB\u8EA2\uB3B6" + // 16030 - 16034
- "\u8EA2\uB3BF\u8EA2\uB3BD\u8EA2\uB3B8\u8EA2\uB3B9\u8EA2\uB3BE" + // 16035 - 16039
- "\u8EA2\uB3C0\u0000\uD8D6\u0000\u0000\u8EA2\uB3BB\u8EA2\uB3B7" + // 16040 - 16044
- "\u0000\uD8D5\u0000\uD8D7\u8EA2\uB3BA\u8EA2\uB3C1\u8EA2\uB3BC" + // 16045 - 16049
- "\u0000\u0000\u0000\u0000\u0000\uDDE5\u8EA2\uB9F4\u8EA2\uB9EC" + // 16050 - 16054
- "\u8EA2\uB9F2\u8EA2\uB9F3\u0000\uDDE6\u0000\u0000\u8EA2\uB9EB" + // 16055 - 16059
- "\u8EA2\uB9ED\u8EA2\uADD8\u8EA2\uB9EF\u8EA2\uB9F0\u8EA2\uB9EE" + // 16060 - 16064
- "\u0000\uE2D3\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0FB" + // 16065 - 16069
- "\u8EA2\uDBA2\u8EA2\uC0FC\u8EA2\uC0F9\u0000\uDDE7\u0000\uE2D5" + // 16070 - 16074
- "\u8EA2\uC0F8\u0000\uFAAE\u0000\uC8D2\u0000\u0000\u0000\uC8D3" + // 16075 - 16079
- "\u0000\uD7D3\u0000\uCFAF\u0000\uD7D2\u8EA2\uACF2\u0000\u0000" + // 16080 - 16084
- "\u0000\u0000\u0000\u0000\u0000\uE1C6\u0000\uC8D4\u0000\uD3A4" + // 16085 - 16089
- "\u8EA2\uACF3\u8EA2\uACF4\u0000\uD3A3\u0000\uD3A5\u0000\uC8D5" + // 16090 - 16094
- "\u0000\u0000\u8EA2\uACF5\u0000\uD7D5\u8EA2\uB2AA\u0000\uD7D7" + // 16095 - 16099
- "\u0000\uD7D4\u0000\uD7D6\u0000\u0000\u8EA2\uB8C5\u0000\uDCE5" + // 16100 - 16104
- "\u0000\u0000\u8EA2\uB8C4\u8EA2\uB8C3\u0000\u0000\u8EA2\uC6B8" + // 16105 - 16109
- "\u0000\u0000\u0000\u0000\u8EA2\uCDA8\u0000\u0000\u0000\uEECB" + // 16110 - 16114
- "\u0000\u0000\u0000\uF1F6\u8EA2\uD9D2\u8EA2\uD9D1\u0000\u0000" + // 16115 - 16119
- "\u8EA2\uDED4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBFD" + // 16120 - 16124
- "\u0000\u0000\u0000\u0000\u0000\uC8D6\u8EA2\uA4F3\u8EA2\uA8CA" + // 16125 - 16129
- "\u0000\uD3A6\u8EA2\uACF6\u0000\u0000\u8EA2\uB2AC\u0000\u0000" + // 16130 - 16134
- "\u0000\u0000\u0000\u0000\u0000\uD7D8\u8EA2\uB2AB\u0000\uD7D9" + // 16135 - 16139
- "\u8EA2\uB2A9\u0000\uD7D1\u8EA2\uB2A8\u8EA2\uB2A7\u0000\u0000" + // 16140 - 16144
- "\u0000\uD7D0\u0000\u0000\u8EA2\uB8C0\u0000\u0000\u8EA2\uB8C2" + // 16145 - 16149
- "\u8EA2\uB8BB\u8EA2\uB8BC\u0000\uDCE2\u8EA2\uB8BD\u0000\uDCE3" + // 16150 - 16154
- "\u8EA2\uB8C1\u8EA2\uB8BE\u8EA2\uB8BF\u0000\uDCE4\u0000\u0000" + // 16155 - 16159
- "\u0000\uE1C4\u0000\uE1C5\u0000\u0000\u8EA2\uBFA9\u0000\u0000" + // 16160 - 16164
- "\u0000\u0000\u0000\u0000\u8EA2\uC6B6\u8EA2\uC6B7\u0000\u0000" + // 16165 - 16169
- "\u8EA2\uCDA7\u0000\uEACB\u0000\uEAC9\u0000\uEACA\u8EA2\uCDA4" + // 16170 - 16174
- "\u8EA2\uCDA5\u0000\u0000\u8EA2\uCDA6\u8EA2\uD3A3\u0000\u0000" + // 16175 - 16179
- "\u8EA2\uD3A4\u0000\uEECA\u8EA2\uD3A1\u8EA2\uD2FE\u8EA2\uD3A2" + // 16180 - 16184
- "\u8EA2\uD2FD\u0000\uF1F5\u8EA2\uD9D0\u0000\uF1F3\u0000\uF1F4" + // 16185 - 16189
- "\u8EA2\uDED3\u0000\uF4F5\u8EA2\uDED2\u8EA2\uE1B4\u0000\u0000" + // 16190 - 16194
- "\u8EA2\uE2E6\u8EA2\uE2E7\u0000\uF7A8\u0000\u0000\u0000\uF7A9" + // 16195 - 16199
- "\u0000\uF4F6\u8EA2\uE6C8\u8EA2\uE6C9\u8EA2\uE9DE\u8EA2\uE9DC" + // 16200 - 16204
- "\u8EA2\uE9DB\u0000\uFAAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 16205 - 16209
- "\u8EA2\uEBF9\u8EA2\uEBF6\u8EA2\uEBF7\u0000\u0000\u8EA2\uEBF5" + // 16210 - 16214
- "\u8EA2\uEBF8\u0000\uFAFD\u8EA2\uEBFA\u0000\u0000\u0000\uFAFC" + // 16215 - 16219
- "\u0000\u0000\u8EA2\uEDEF\u0000\u0000\u0000\uFCC1\u0000\uFCC3" + // 16220 - 16224
- "\u8EA2\uEFBD\u0000\uFCC2\u8EA2\uF0C7\u8EA2\uF1AF\u8EA2\uF1B1" + // 16225 - 16229
- "\u8EA2\uF1AE\u8EA2\uF1B0\u0000\uFDB9\u0000\u0000\u0000\u0000" + // 16230 - 16234
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16235 - 16239
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16240 - 16244
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16245 - 16249
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16250 - 16254
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16255 - 16259
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16260 - 16264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16265 - 16269
- "\u0000\uDEA4\u8EA2\uC1D4\u8EA2\uC8F3\u0000\u0000\u0000\uE7ED" + // 16270 - 16274
- "\u8EA2\uC8F1\u0000\u0000\u0000\u0000\u8EA2\uC8F2\u0000\u0000" + // 16275 - 16279
- "\u0000\u0000\u0000\u0000\u8EA2\uCFCA\u8EA2\uCFCB\u0000\uEBFA" + // 16280 - 16284
- "\u0000\uEBF8\u8EA2\uCFCC\u0000\uEBF9\u8EA2\uD6B3\u0000\u0000" + // 16285 - 16289
- "\u8EA2\uD6B6\u8EA2\uD6B0\u8EA2\uD6B7\u8EA2\uD6AF\u8EA2\uD6B1" + // 16290 - 16294
- "\u0000\u0000\u8EA2\uD6B2\u8EA2\uDEC5\u0000\uF4ED\u8EA2\uDEBF" + // 16295 - 16299
- "\u0000\uF4E8\u8EA2\uDECC\u0000\uF4EC\u0000\uF4E5\u8EA2\uDEC6" + // 16300 - 16304
- "\u0000\uF4F0\u8EA2\uDEC4\u0000\u0000\u0000\u0000\u8EA2\uDEC8" + // 16305 - 16309
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2DA\u8EA2\uE2E0" + // 16310 - 16314
- "\u0000\uF7A5\u8EA2\uE2E3\u0000\uF6FE\u0000\uF7A1\u8EA2\uE2DB" + // 16315 - 16319
- "\u8EA2\uE2E2\u8EA2\uE2DD\u0000\uF7A6\u0000\uF7A3\u0000\u0000" + // 16320 - 16324
- "\u8EA2\uE2D9\u0000\u0000\u0000\uF7A2\u8EA2\uE2DF\u8EA2\uE2E1" + // 16325 - 16329
- "\u0000\uF7A4\u8EA2\uE2DE\u8EA2\uE2DC\u0000\u0000\u0000\u0000" + // 16330 - 16334
- "\u0000\u0000\u0000\u0000\u8EA2\uE6C2\u0000\uF8E2\u0000\uF8E3" + // 16335 - 16339
- "\u0000\uF8DF\u0000\u0000\u0000\uF8E0\u0000\u0000\u8EA2\uE6BE" + // 16340 - 16344
- "\u8EA2\uE6BC\u0000\u0000\u8EA2\uE6C0\u0000\uF8E4\u8EA2\uE6C1" + // 16345 - 16349
- "\u8EA2\uE6BA\u8EA2\uE6B9\u8EA2\uE6BD\u8EA2\uE6BB\u0000\uF8E1" + // 16350 - 16354
- "\u8EA2\uE6BF\u8EA2\uE9D9\u0000\uFAAB\u0000\uFAAA\u8EA2\uE9DA" + // 16355 - 16359
- "\u0000\u0000\u0000\uE7B8\u0000\uE7AD\u0000\u0000\u8EA2\uC8A7" + // 16360 - 16364
- "\u0000\u0000\u0000\u0000\u0000\uE7B2\u0000\u0000\u8EA2\uC8A8" + // 16365 - 16369
- "\u0000\uE7AB\u0000\uE7AA\u0000\u0000\u0000\uE7B5\u0000\uE7B4" + // 16370 - 16374
- "\u0000\uE7B3\u0000\uE7B1\u0000\uE7B6\u8EA2\uC8A5\u0000\uE7AC" + // 16375 - 16379
- "\u0000\uE7AE\u0000\uE7B0\u0000\u0000\u0000\u0000\u0000\uEBC0" + // 16380 - 16384
- "\u0000\uEBC3\u0000\u0000\u0000\uEBC7\u0000\uEBC1\u0000\uEBC6" + // 16385 - 16389
- "\u0000\uEBC4\u0000\u0000\u0000\uEBBF\u0000\u0000\u0000\uEBC5" + // 16390 - 16394
- "\u0000\uEBC2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD4FA" + // 16395 - 16399
- "\u0000\uEFCD\u0000\uEFCB\u0000\u0000\u8EA2\uD4FB\u0000\u0000" + // 16400 - 16404
- "\u0000\uEFCE\u0000\uEFCC\u8EA2\uD4F9\u8EA2\uD4F8\u0000\u0000" + // 16405 - 16409
- "\u0000\uF2DA\u8EA2\uD4F7\u0000\uF2D8\u0000\uF2D7\u8EA2\uDAFC" + // 16410 - 16414
- "\u0000\uEFCF\u0000\uF2D9\u8EA2\uDAFD\u0000\uF2DC\u8EA2\uDAFE" + // 16415 - 16419
- "\u0000\uF2DB\u0000\uF5E3\u8EA2\uDFEF\u0000\uF5E2\u8EA2\uCCEF" + // 16420 - 16424
- "\u8EA2\uCCEE\u8EA2\uCCEB\u0000\u0000\u8EA2\uCCF3\u8EA2\uCCF0" + // 16425 - 16429
- "\u8EA2\uCCF4\u0000\uEAC6\u0000\u0000\u8EA2\uCDA2\u0000\uEABB" + // 16430 - 16434
- "\u8EA2\uCCF5\u8EA2\uCCF6\u0000\u0000\u8EA2\uCCF2\u0000\u0000" + // 16435 - 16439
- "\u0000\u0000\u0000\u0000\u0000\uEAC5\u0000\u0000\u0000\u0000" + // 16440 - 16444
- "\u0000\u0000\u0000\u0000\u8EA2\uD2EF\u0000\uEEBB\u0000\uEEC4" + // 16445 - 16449
- "\u0000\uEEC0\u8EA2\uD2EC\u0000\u0000\u0000\uEEBD\u0000\uEEC1" + // 16450 - 16454
- "\u8EA2\uD2F8\u0000\uEEB7\u8EA2\uD2F0\u0000\u0000\u0000\uEEBF" + // 16455 - 16459
- "\u0000\u0000\u0000\u0000\u8EA2\uD2F3\u8EA2\uD2EE\u0000\uEEBE" + // 16460 - 16464
- "\u0000\uEEC2\u8EA2\uD2ED\u0000\u0000\u0000\uEEBC\u0000\u0000" + // 16465 - 16469
- "\u8EA2\uD2F7\u0000\uEEB9\u8EA2\uD2F6\u8EA2\uD2F5\u0000\uEEC5" + // 16470 - 16474
- "\u8EA2\uD0BB\u0000\uEEB8\u0000\u0000\u8EA2\uD2F4\u8EA2\uD2EB" + // 16475 - 16479
- "\u0000\u0000\u0000\uEEC6\u8EA2\uD2F2\u0000\uEEBA\u0000\u0000" + // 16480 - 16484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1BA\u8EAD\uA1BB" + // 16485 - 16489
- "\u0000\u0000\u0000\u0000\u8EAD\uA1B8\u8EAD\uA1B9\u0000\u0000" + // 16490 - 16494
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16495 - 16499
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16500 - 16504
- "\u0000\u0000\u0000\u0000\u0000\uA2D3\u0000\u0000\u0000\u0000" + // 16505 - 16509
- "\u0000\u0000\u0000\uA2D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16510 - 16514
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16515 - 16519
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C7\u0000\u0000" + // 16520 - 16524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16525 - 16529
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16530 - 16534
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16535 - 16539
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16540 - 16544
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2CA" + // 16545 - 16549
- "\u8EA2\uC5FE\u0000\uE5F1\u0000\u0000\u8EA2\uC6A7\u8EA2\uC6AB" + // 16550 - 16554
- "\u8EA2\uC6A3\u8EA2\uC5FD\u0000\u0000\u8EA2\uC5FC\u0000\u0000" + // 16555 - 16559
- "\u0000\u0000\u0000\u0000\u8EA2\uC6A9\u8EA2\uC6A1\u8EA2\uC6A5" + // 16560 - 16564
- "\u0000\uE5F2\u0000\u0000\u0000\uE5F0\u8EA2\uC6AD\u0000\uE5EE" + // 16565 - 16569
- "\u8EA2\uC6AA\u0000\u0000\u8EA2\uCCF9\u0000\u0000\u0000\u0000" + // 16570 - 16574
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB7\u8EA2\uCCF1" + // 16575 - 16579
- "\u0000\uEEC3\u8EA2\uCCFB\u0000\uEABA\u8EA2\uCDA1\u0000\uEAC0" + // 16580 - 16584
- "\u8EA2\uCCEC\u0000\u0000\u0000\u0000\u8EA2\uCCFC\u8EA2\uCCE9" + // 16585 - 16589
- "\u0000\u0000\u8EA2\uCCFE\u8EA2\uCCED\u0000\u0000\u0000\uEAC7" + // 16590 - 16594
- "\u0000\uEAC4\u8EA2\uCCFD\u8EA2\uCCF7\u0000\uEAB6\u0000\uEABE" + // 16595 - 16599
- "\u0000\uEABD\u0000\u0000\u0000\uEABC\u0000\uEAC2\u0000\u0000" + // 16600 - 16604
- "\u8EA2\uCCEA\u0000\uEAC3\u8EA2\uCCF8\u0000\uEABF\u0000\uEAB5" + // 16605 - 16609
- "\u8EA2\uCCFA\u0000\uEAB8\u0000\uEAB9\u0000\uEAC1\u0000\uDCD7" + // 16610 - 16614
- "\u8EA2\uB8AF\u0000\uDCDC\u0000\uDCD2\u0000\uDCDA\u8EA2\uB8AC" + // 16615 - 16619
- "\u0000\uDCD1\u8EA2\uB8B0\u0000\u0000\u0000\u0000\u8EA2\uB8B3" + // 16620 - 16624
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFA1\u8EA2\uBEF6" + // 16625 - 16629
- "\u0000\uE1B8\u8EA2\uBEFD\u8EA2\uBEFA\u8EA2\uBEF2\u8EA2\uBEFB" + // 16630 - 16634
- "\u0000\uE1BA\u8EA2\uBEF3\u0000\u0000\u8EA2\uBEEF\u0000\u0000" + // 16635 - 16639
- "\u0000\u0000\u0000\uE5F3\u8EA2\uBEF8\u0000\u0000\u0000\uE1B7" + // 16640 - 16644
- "\u8EA2\uBEFE\u0000\u0000\u0000\uE1BE\u0000\uE1C0\u8EA2\uBEF1" + // 16645 - 16649
- "\u0000\u0000\u0000\u0000\u0000\uE1BF\u8EA2\uBEF4\u0000\uE1B9" + // 16650 - 16654
- "\u8EA2\uBEFC\u8EA2\uBEF5\u8EA2\uBEF9\u0000\u0000\u8EA2\uBEF7" + // 16655 - 16659
- "\u0000\uE1BC\u8EA2\uBEF0\u0000\uE1C1\u0000\uDCD3\u0000\uE1BD" + // 16660 - 16664
- "\u0000\uE1C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16665 - 16669
- "\u0000\u0000\u0000\uE5EF\u8EA2\uC6A4\u8EA2\uC6A6\u8EA2\uC6A8" + // 16670 - 16674
- "\u8EA2\uC6AC\u0000\u0000\u8EA2\uC6A2\u0000\uD2F9\u8EA2\uACED" + // 16675 - 16679
- "\u0000\uD2F7\u8EA2\uACEB\u0000\uD2FC\u0000\uD2F8\u0000\uD2FD" + // 16680 - 16684
- "\u0000\uD2FB\u8EA2\uACEC\u0000\uD2FA\u0000\uD7C2\u0000\uD7C1" + // 16685 - 16689
- "\u8EA2\uB1FC\u0000\uD7CA\u8EA2\uB1F5\u8EA2\uB1FB\u0000\uD7C6" + // 16690 - 16694
- "\u8EA2\uB1F4\u8EA2\uB1FA\u8EA2\uB1F8\u0000\uD7C5\u0000\uD7C7" + // 16695 - 16699
- "\u8EA2\uB1F7\u0000\uD7C0\u8EA2\uB1F6\u0000\uD7CB\u0000\uD7C8" + // 16700 - 16704
- "\u0000\uD7CC\u0000\uD7C9\u8EA2\uB1F3\u8EA2\uB1F2\u8EA2\uB1F9" + // 16705 - 16709
- "\u0000\uD7C3\u0000\uD7BF\u0000\uD7C4\u0000\u0000\u0000\u0000" + // 16710 - 16714
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8B5\u8EA2\uB8AE" + // 16715 - 16719
- "\u0000\u0000\u0000\uE1BB\u8EA2\uB8AD\u0000\u0000\u0000\uDCD4" + // 16720 - 16724
- "\u0000\uDCDB\u0000\uDCD8\u0000\uDCDE\u0000\uDCDD\u0000\uDCD9" + // 16725 - 16729
- "\u0000\u0000\u8EA2\uB8A7\u8EA2\uB8AA\u0000\u0000\u8EA2\uB8A9" + // 16730 - 16734
- "\u0000\uDCD5\u8EA2\uB8AB\u8EA2\uB8B4\u0000\uDCD6\u8EA2\uB8A8" + // 16735 - 16739
- "\u8EA2\uB8B1\u8EA2\uB8B2\u8EA2\uACE9\u8EA2\uACEA\u0000\u0000" + // 16740 - 16744
- "\u0000\u0000\u8EA2\uB1EB\u8EA2\uB1F1\u0000\u0000\u0000\u0000" + // 16745 - 16749
- "\u8EA2\uB1EF\u0000\uD7BE\u8EA2\uB1ED\u0000\u0000\u8EA2\uB1EE" + // 16750 - 16754
- "\u8EA2\uB1F0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1EC" + // 16755 - 16759
- "\u0000\uDCCE\u0000\u0000\u8EA2\uB8A3\u0000\uDCD0\u8EA2\uB8A5" + // 16760 - 16764
- "\u0000\uDCCF\u8EA2\uB8A4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16765 - 16769
- "\u0000\u0000\u0000\u0000\u8EA2\uBEEC\u0000\uE1B5\u0000\u0000" + // 16770 - 16774
- "\u8EA2\uBEEE\u8EA2\uBEEB\u8EA2\uB8A6\u0000\u0000\u0000\uE1B6" + // 16775 - 16779
- "\u0000\u0000\u0000\u0000\u8EA2\uBEED\u0000\u0000\u0000\u0000" + // 16780 - 16784
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5FB" + // 16785 - 16789
- "\u0000\u0000\u0000\uE5EB\u8EA2\uC5F9\u0000\uE5EC\u8EA2\uC5FA" + // 16790 - 16794
- "\u0000\uE5ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB2" + // 16795 - 16799
- "\u8EA2\uCCE8\u8EA2\uCCE5\u8EA2\uCCE7\u0000\uEAB3\u0000\uEAB4" + // 16800 - 16804
- "\u8EA2\uCCE6\u0000\uF8DE\u0000\u0000\u0000\u0000\u0000\uFAA5" + // 16805 - 16809
- "\u0000\u0000\u8EA2\uE9D7\u0000\u0000\u8EA2\uE9D6\u8EA2\uE9D4" + // 16810 - 16814
- "\u8EA2\uE9D3\u8EA2\uE9D5\u0000\u0000\u0000\uFAA4\u0000\uFAA6" + // 16815 - 16819
- "\u0000\u0000\u0000\u0000\u0000\uFAFB\u0000\u0000\u0000\u0000" + // 16820 - 16824
- "\u8EA2\uEBF3\u8EA2\uEBF2\u0000\u0000\u0000\u0000\u8EA2\uEDE8" + // 16825 - 16829
- "\u0000\u0000\u8EA2\uEDEA\u8EA2\uEDEC\u8EA2\uEDEB\u8EA2\uEDE9" + // 16830 - 16834
- "\u0000\u0000\u0000\u0000\u0000\uFBED\u0000\uFBEC\u0000\u0000" + // 16835 - 16839
- "\u0000\u0000\u0000\uFCBF\u0000\uFCBE\u0000\uFCC0\u8EA2\uEFBC" + // 16840 - 16844
- "\u8EA2\uEFBB\u0000\u0000\u8EA2\uF1AB\u8EA2\uF0C6\u8EA2\uF1AC" + // 16845 - 16849
- "\u0000\uFDA5\u0000\u0000\u0000\uFDA6\u8EA2\uF1DC\u0000\u0000" + // 16850 - 16854
- "\u0000\u0000\u0000\uFDCB\u0000\uC8CD\u0000\u0000\u8EA2\uA8C8" + // 16855 - 16859
- "\u0000\u0000\u0000\u0000\u8EA2\uACE6\u8EA2\uACE7\u8EA2\uACE5" + // 16860 - 16864
- "\u0000\u0000\u0000\u0000\u0000\uD2F6\u0000\u0000\u8EA2\uACE8" + // 16865 - 16869
- "\u8EA2\uDEAA\u8EA2\uDEB4\u8EA2\uDEB1\u8EA2\uDEB3\u0000\u0000" + // 16870 - 16874
- "\u8EA2\uDEA7\u8EA2\uDEB7\u0000\uF4D6\u0000\u0000\u8EA2\uDEB2" + // 16875 - 16879
- "\u8EA2\uDEBB\u8EA2\uDEAF\u0000\uF4DA\u0000\uF4D7\u8EA2\uDEAD" + // 16880 - 16884
- "\u8EA2\uDEA8\u8EA2\uDEBA\u0000\uF1DF\u0000\u0000\u0000\u0000" + // 16885 - 16889
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16890 - 16894
- "\u8EA2\uE2CF\u0000\u0000\u0000\u0000\u8EA2\uE2CD\u8EA2\uE2D3" + // 16895 - 16899
- "\u0000\uF6FA\u8EA2\uE2D1\u8EA2\uE2D0\u0000\uF6FC\u8EA2\uE2D6" + // 16900 - 16904
- "\u0000\uF6FB\u0000\u0000\u8EA2\uE2D7\u8EA2\uE2D4\u0000\uF6F8" + // 16905 - 16909
- "\u8EA2\uE2D5\u8EA2\uE2CE\u0000\uF6F9\u0000\uF6F7\u8EA2\uE6B5" + // 16910 - 16914
- "\u8EA2\uE2D2\u0000\u0000\u0000\u0000\u8EA2\uE2D8\u0000\u0000" + // 16915 - 16919
- "\u0000\u0000\u8EA2\uE6B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 16920 - 16924
- "\u0000\uF8DD\u0000\uF8DB\u8EA2\uE6B4\u0000\u0000\u8EA2\uE6B6" + // 16925 - 16929
- "\u8EA2\uE6B3\u0000\uF8DC\u0000\uF8D9\u0000\uF8DA\u0000\uE5E7" + // 16930 - 16934
- "\u0000\uEEB3\u0000\u0000\u0000\u0000\u0000\uEEAF\u0000\u0000" + // 16935 - 16939
- "\u0000\uEEB1\u0000\uEEB2\u0000\u0000\u0000\uF1E0\u8EA2\uD2E5" + // 16940 - 16944
- "\u8EA2\uD2DF\u0000\uEEB5\u0000\u0000\u8EA2\uD2E2\u0000\u0000" + // 16945 - 16949
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9AC" + // 16950 - 16954
- "\u8EA2\uD9A7\u0000\u0000\u0000\u0000\u8EA2\uD9B1\u0000\uF1DE" + // 16955 - 16959
- "\u8EA2\uD9A9\u0000\uF1E2\u8EA2\uD9AF\u8EA2\uD9A6\u8EA2\uD9A3" + // 16960 - 16964
- "\u8EA2\uD9B2\u0000\uF4DB\u0000\uF1E3\u8EA2\uD9AE\u8EA2\uD9A4" + // 16965 - 16969
- "\u0000\uF1E1\u8EA2\uD9A8\u0000\uF1E5\u8EA2\uD9A5\u8EA2\uD9AA" + // 16970 - 16974
- "\u0000\uF1E4\u8EA2\uD9AD\u8EA2\uD9B0\u0000\u0000\u0000\u0000" + // 16975 - 16979
- "\u0000\u0000\u0000\u0000\u8EA2\uDEB8\u8EA2\uDEB9\u8EA2\uDEA9" + // 16980 - 16984
- "\u8EA2\uDEB0\u8EA2\uDEAE\u0000\u0000\u0000\u0000\u0000\uF4D9" + // 16985 - 16989
- "\u8EA2\uDEB5\u8EA2\uD9AB\u0000\u0000\u8EA2\uDEAC\u0000\u0000" + // 16990 - 16994
- "\u8EA2\uDEB6\u0000\uF4D8\u8EA2\uDEAB\u8EA2\uBEE8\u0000\u0000" + // 16995 - 16999
- "\u0000\u0000\u0000\u0000\u8EA2\uBEE4\u8EA2\uBEEA\u0000\uE1AD" + // 17000 - 17004
- "\u8EA2\uBEE3\u8EA2\uBEE5\u0000\uE1AB\u8EA2\uBEE2\u0000\uE1B2" + // 17005 - 17009
- "\u8EA2\uBEE6\u0000\uE1B1\u8EA2\uBEE7\u0000\uE1B3\u0000\uE1AE" + // 17010 - 17014
- "\u0000\uE1B4\u0000\uE1AF\u0000\u0000\u0000\uE1B0\u0000\u0000" + // 17015 - 17019
- "\u0000\uE1AC\u0000\u0000\u8EA2\uBEE9\u0000\u0000\u0000\u0000" + // 17020 - 17024
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17025 - 17029
- "\u0000\uE5E8\u8EA2\uC5F5\u0000\u0000\u8EA2\uC5F8\u8EA2\uC5EC" + // 17030 - 17034
- "\u8EA2\uC5F1\u8EA2\uC5EB\u0000\uE5EA\u0000\u0000\u8EA2\uC5EF" + // 17035 - 17039
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5ED\u0000\uE5E9" + // 17040 - 17044
- "\u0000\u0000\u8EA2\uC5F4\u8EA2\uC5F3\u8EA2\uC5F0\u8EA2\uC5F2" + // 17045 - 17049
- "\u8EA2\uC5EE\u0000\uEAAA\u8EA2\uC5F7\u0000\uE5E6\u8EA2\uC5F6" + // 17050 - 17054
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17055 - 17059
- "\u0000\u0000\u0000\u0000\u0000\uC5FD\u0000\uC5FE\u0000\u0000" + // 17060 - 17064
- "\u0000\uC7CA\u8EA2\uA3B3\u8EA2\uA5D6\u8EA2\uA5D7\u0000\u0000" + // 17065 - 17069
- "\u0000\uD0B1\u8EA2\uAEB1\u0000\uD9B1\u0000\uD9B0\u8EA2\uBAC7" + // 17070 - 17074
- "\u8EA2\uBAC6\u0000\u0000\u0000\u0000\u0000\uC4B1\u0000\uC5A7" + // 17075 - 17079
- "\u0000\uC6A1\u0000\u0000\u0000\uD9B2\u8EA2\uA1A4\u0000\u0000" + // 17080 - 17084
- "\u8EA2\uA1CD\u0000\uC6A2\u0000\u0000\u8EA2\uA2A2\u0000\uC7CC" + // 17085 - 17089
- "\u0000\uC7CB\u8EA2\uA2A1\u0000\uC9BA\u0000\u0000\u0000\u0000" + // 17090 - 17094
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4CD" + // 17095 - 17099
- "\u0000\u0000\u0000\u0000\u8EA2\uB3F2\u0000\u0000\u0000\uE3BE" + // 17100 - 17104
- "\u8EA2\uC9AC\u0000\uE8A4\u0000\u0000\u0000\u0000\u8EA2\uD6C5" + // 17105 - 17109
- "\u0000\u0000\u0000\u0000\u8EA2\uE8EA\u0000\uA7B7\u0000\uC5A8" + // 17110 - 17114
- "\u0000\u0000\u0000\u0000\u8EA2\uA5D8\u8EA2\uA9B6\u0000\uD9B5" + // 17115 - 17119
- "\u0000\uD9B3\u8EA2\uACE3\u8EA2\uACE4\u0000\u0000\u0000\u0000" + // 17120 - 17124
- "\u8EA2\uB1E2\u8EA2\uB1E4\u0000\uD7BC\u0000\u0000\u8EA2\uB1E6" + // 17125 - 17129
- "\u8EA2\uB1E9\u8EA2\uB1E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17130 - 17134
- "\u8EA2\uB1E8\u8EA2\uB1E5\u8EA2\uB1E1\u0000\uD7BD\u8EA2\uB1EA" + // 17135 - 17139
- "\u8EA2\uB1E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17140 - 17144
- "\u8EA2\uB7F6\u0000\uDCCB\u8EA2\uB8A1\u0000\uDCC8\u0000\u0000" + // 17145 - 17149
- "\u8EA2\uB7F8\u0000\uDCCC\u0000\u0000\u0000\uDCC6\u0000\u0000" + // 17150 - 17154
- "\u8EA2\uB7F3\u8EA2\uB8A2\u8EA2\uB7F4\u8EA2\uB7F1\u0000\uDCCA" + // 17155 - 17159
- "\u0000\u0000\u0000\uDCC7\u0000\u0000\u8EA2\uB7F7\u8EA2\uB7FA" + // 17160 - 17164
- "\u0000\uDCC9\u8EA2\uB7FB\u0000\uDCCD\u8EA2\uB7FC\u8EA2\uB7F2" + // 17165 - 17169
- "\u8EA2\uB7F9\u8EA2\uB7FD\u8EA2\uB7F5\u8EA2\uB7F0\u8EA2\uB7EE" + // 17170 - 17174
- "\u0000\u0000\u0000\u0000\u8EA2\uB7FE\u0000\u0000\u0000\u0000" + // 17175 - 17179
- "\u8EA2\uB7EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17180 - 17184
- "\u8EA2\uBFAF\u8EA2\uC6C6\u0000\u0000\u0000\uE1CF\u8EA2\uBFB3" + // 17185 - 17189
- "\u0000\u0000\u0000\u0000\u8EA2\uBFB0\u0000\uE1CB\u0000\uE1D1" + // 17190 - 17194
- "\u8EA2\uBFB5\u0000\uE1CD\u8EA2\uBFB2\u0000\uEACF\u0000\uE1CC" + // 17195 - 17199
- "\u8EA2\uBFB1\u0000\uE1D2\u0000\uE1CA\u0000\uE1C9\u0000\u0000" + // 17200 - 17204
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6BE" + // 17205 - 17209
- "\u8EA2\uC6BC\u0000\u0000\u8EA2\uC6C2\u0000\u0000\u8EA2\uC6BA" + // 17210 - 17214
- "\u8EA2\uC6C7\u8EA2\uC6BF\u0000\u0000\u8EA2\uC6B9\u0000\uE6A4" + // 17215 - 17219
- "\u0000\uE6AA\u8EA2\uC6C4\u0000\u0000\u8EA2\uC6BD\u0000\u0000" + // 17220 - 17224
- "\u0000\uE6A7\u0000\u0000\u0000\u0000\u0000\uE6A5\u8EA2\uC6C5" + // 17225 - 17229
- "\u0000\uE6A2\u0000\uE6A1\u8EA2\uC6C0\u0000\uE6A6\u0000\uE1D3" + // 17230 - 17234
- "\u0000\u0000\u8EA2\uC6C3\u8EA2\uC6BB\u0000\uE6A3\u0000\uE6A8" + // 17235 - 17239
- "\u0000\uE6A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17240 - 17244
- "\u0000\uEAD4\u8EA2\uDEA5\u8EA2\uDEA6\u0000\u0000\u0000\u0000" + // 17245 - 17249
- "\u0000\uF6F5\u0000\uF6F6\u0000\u0000\u0000\uFAA2\u0000\u0000" + // 17250 - 17254
- "\u0000\u0000\u0000\uFCBD\u0000\uC7A1\u0000\u0000\u0000\u0000" + // 17255 - 17259
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uACE2\u0000\u0000" + // 17260 - 17264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17265 - 17269
- "\u8EA2\uB1E0\u0000\uD7BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 17270 - 17274
- "\u0000\u0000\u0000\u0000\u0000\uDDFE\u0000\uDDFD\u0000\u0000" + // 17275 - 17279
- "\u0000\u0000\u0000\uE1AA\u8EA2\uBEE1\u0000\uE1A9\u8EA2\uBEE0" + // 17280 - 17284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5EA" + // 17285 - 17289
- "\u0000\u0000\u0000\uEAA5\u8EA2\uCCD4\u0000\uEAA6\u0000\u0000" + // 17290 - 17294
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17295 - 17299
- "\u0000\uFAA3\u8EA2\uE9D2\u0000\u0000\u0000\uC8CC\u0000\uCFAA" + // 17300 - 17304
- "\u8EA2\uA8C7\u0000\u0000\u0000\uD2F5\u0000\u0000\u0000\uD2F4" + // 17305 - 17309
- "\u8EA2\uACE0\u0000\uD2F3\u0000\u0000\u0000\u0000\u0000\uD7B9" + // 17310 - 17314
- "\u8EA2\uB1DB\u8EA2\uB1D9\u8EA2\uB1DF\u0000\uD7BA\u8EA2\uB1DA" + // 17315 - 17319
- "\u8EA2\uB1DE\u8EA2\uB1DC\u8EA2\uB1DD\u0000\u0000\u0000\u0000" + // 17320 - 17324
- "\u8EA2\uB7EB\u8EA2\uB7ED\u0000\u0000\u0000\uDCC4\u0000\u0000" + // 17325 - 17329
- "\u8EA2\uB7EC\u0000\uDCC5\u0000\uE1A8\u0000\uE1A7\u0000\uE1A6" + // 17330 - 17334
- "\u8EA2\uBEDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17335 - 17339
- "\u8EA2\uC5E9\u0000\uE5E4\u0000\uE5E5\u0000\u0000\u8EA2\uC5E8" + // 17340 - 17344
- "\u8EA2\uC5E7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17345 - 17349
- "\u8EA2\uCCD1\u0000\uEAA4\u0000\uEAA3\u8EA2\uCCD2\u8EA2\uCCD3" + // 17350 - 17354
- "\u0000\u0000\u0000\uEEAC\u0000\uEEAB\u0000\u0000\u8EA2\uD9A1" + // 17355 - 17359
- "\u8EA2\uD2DB\u8EA2\uD2DD\u8EA2\uD2DC\u8EA2\uD8FE\u8EA2\uD8FC" + // 17360 - 17364
- "\u8EA2\uD9A2\u8EA2\uD8FD\u0000\u0000\u0000\uF1DD\u0000\u0000" + // 17365 - 17369
- "\u0000\u0000\u0000\u0000\u8EA2\uDEA4\u0000\uF4D5\u0000\uEEA7" + // 17370 - 17374
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD8F9\u0000\u0000" + // 17375 - 17379
- "\u0000\uF1DA\u8EA2\uD8FB\u8EA2\uD8FA\u0000\u0000\u8EA2\uCCCC" + // 17380 - 17384
- "\u0000\uF1DC\u0000\uF1DB\u0000\uF1D8\u0000\uF1D9\u0000\u0000" + // 17385 - 17389
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEA2" + // 17390 - 17394
- "\u0000\u0000\u8EA2\uDDFE\u0000\uF4D4\u8EA2\uDEA1\u0000\u0000" + // 17395 - 17399
- "\u8EA2\uDEA3\u8EA2\uDDFD\u8EA2\uDDFC\u0000\u0000\u0000\u0000" + // 17400 - 17404
- "\u8EA2\uE2CC\u0000\uF6F4\u0000\uF6F2\u0000\uF6F3\u0000\u0000" + // 17405 - 17409
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE6B0\u8EA2\uE6B1" + // 17410 - 17414
- "\u0000\uF8D8\u0000\u0000\u0000\uF8D7\u8EA2\uE9D0\u8EA2\uE9D1" + // 17415 - 17419
- "\u8EA2\uE9CF\u0000\u0000\u8EA2\uEDE6\u8EA2\uEDE7\u0000\u0000" + // 17420 - 17424
- "\u0000\u0000\u0000\uC6FE\u8EA2\uA2E8\u0000\uCBB6\u0000\u0000" + // 17425 - 17429
- "\u8EA2\uA8C5\u0000\uCFA9\u0000\uCFA8\u8EA2\uA8C6\u0000\u0000" + // 17430 - 17434
- "\u0000\u0000\u8EA2\uACE1\u0000\uD2F2\u0000\uE1A5\u0000\u0000" + // 17435 - 17439
- "\u8EA2\uBEDA\u8EA2\uBEDC\u8EA2\uBEDE\u0000\uE1A4\u0000\u0000" + // 17440 - 17444
- "\u0000\u0000\u0000\uE1A2\u0000\u0000\u8EA2\uBEDB\u0000\uE1A3" + // 17445 - 17449
- "\u8EA2\uBEDD\u0000\uE1A1\u0000\u0000\u0000\u0000\u8EA2\uC5E6" + // 17450 - 17454
- "\u8EA2\uC5DD\u8EA2\uC5E0\u8EA2\uC5E4\u0000\uE5E1\u8EA2\uC5E2" + // 17455 - 17459
- "\u0000\u0000\u8EA2\uC5E1\u8EA2\uC5DE\u8EA2\uC5DF\u0000\uE5DF" + // 17460 - 17464
- "\u8EA2\uC5E5\u0000\uE5DE\u0000\u0000\u0000\uE5E3\u0000\uE5E2" + // 17465 - 17469
- "\u0000\uE5E0\u0000\u0000\u8EA2\uC5E3\u0000\u0000\u0000\u0000" + // 17470 - 17474
- "\u0000\u0000\u8EA2\uCCD0\u0000\u0000\u8EA2\uCCCF\u0000\u0000" + // 17475 - 17479
- "\u0000\u0000\u8EA2\uCCCB\u0000\u0000\u0000\u0000\u0000\uEAA1" + // 17480 - 17484
- "\u8EA2\uCCCE\u8EA2\uCCCD\u0000\uEAA2\u0000\u0000\u0000\u0000" + // 17485 - 17489
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEEA9\u0000\u0000" + // 17490 - 17494
- "\u8EA2\uD2DA\u0000\u0000\u0000\uEEAA\u0000\uEEA6\u0000\uEEA8" + // 17495 - 17499
- "\u0000\u0000\u0000\uEEA5\u0000\uCBB4\u0000\uCBB3\u0000\u0000" + // 17500 - 17504
- "\u0000\u0000\u0000\u0000\u8EA2\uA8C4\u0000\u0000\u0000\u0000" + // 17505 - 17509
- "\u0000\uCFA7\u0000\uCFA6\u0000\u0000\u0000\uD2F1\u0000\u0000" + // 17510 - 17514
- "\u8EA2\uACDC\u8EA2\uACDF\u8EA2\uACDD\u0000\u0000\u0000\uD2EF" + // 17515 - 17519
- "\u0000\uD2F0\u0000\u0000\u0000\u0000\u8EA2\uACDB\u8EA2\uACDE" + // 17520 - 17524
- "\u0000\u0000\u0000\uD7B8\u0000\u0000\u0000\u0000\u0000\u0000" + // 17525 - 17529
- "\u8EA2\uB1D6\u8EA2\uB1D8\u8EA2\uB1D7\u0000\uD7B5\u8EA2\uB1D2" + // 17530 - 17534
- "\u0000\u0000\u0000\u0000\u0000\uD7B3\u0000\uD7B2\u0000\u0000" + // 17535 - 17539
- "\u0000\uD7B6\u0000\uD7B4\u0000\u0000\u0000\uD7B7\u8EA2\uB1D5" + // 17540 - 17544
- "\u8EA2\uB1D0\u8EA2\uB1D1\u8EA2\uB1D4\u8EA2\uB1D3\u0000\u0000" + // 17545 - 17549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17550 - 17554
- "\u0000\u0000\u8EA2\uB7E9\u8EA2\uB7EA\u8EA2\uB7E8\u0000\u0000" + // 17555 - 17559
- "\u8EA2\uB7E7\u0000\uDCC3\u0000\u0000\u0000\u0000\u0000\u0000" + // 17560 - 17564
- "\u0000\u0000\u8EA2\uB8C7\u0000\u0000\u0000\u0000\u0000\uDCE7" + // 17565 - 17569
- "\u8EA2\uB8C6\u8EA2\uB8C8\u0000\u0000\u0000\uDCE6\u0000\u0000" + // 17570 - 17574
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFAB\u8EA2\uBFAC" + // 17575 - 17579
- "\u8EA2\uBFAA\u0000\uE1C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17580 - 17584
- "\u0000\uE5FB\u0000\u0000\u0000\uE5FC\u0000\u0000\u0000\uEACD" + // 17585 - 17589
- "\u0000\u0000\u8EA2\uCDAA\u8EA2\uCDA9\u0000\uEACC\u0000\u0000" + // 17590 - 17594
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3A5" + // 17595 - 17599
- "\u0000\u0000\u0000\u0000\u8EA2\uD3A6\u0000\u0000\u0000\u0000" + // 17600 - 17604
- "\u0000\u0000\u0000\u0000\u8EA2\uD9D3\u0000\u0000\u0000\u0000" + // 17605 - 17609
- "\u0000\uF4FA\u0000\uF4F9\u0000\uF4F7\u0000\uF4F8\u0000\uF4FB" + // 17610 - 17614
- "\u0000\u0000\u8EA2\uE2E8\u0000\uF7AB\u0000\uF7AA\u8EA2\uE6CA" + // 17615 - 17619
- "\u8EA2\uE9DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF" + // 17620 - 17624
- "\u0000\uFBEE\u0000\uC8D7\u0000\uCFA4\u0000\uCFA5\u8EA2\uA8C2" + // 17625 - 17629
- "\u0000\u0000\u8EA2\uACDA\u8EA2\uACD9\u0000\uD2E9\u0000\uD2EC" + // 17630 - 17634
- "\u0000\uD2EB\u0000\uD2EA\u8EA2\uACD6\u8EA2\uACD8\u8EA2\uACD7" + // 17635 - 17639
- "\u0000\u0000\u0000\u0000\u8EA2\uB1CB\u0000\uD7AA\u8EA2\uB1CF" + // 17640 - 17644
- "\u8EA2\uB1CE\u8EA2\uB1CD\u8EA2\uB1C9\u0000\uD7A9\u0000\uD7AD" + // 17645 - 17649
- "\u0000\uD7B0\u0000\u0000\u0000\u0000\u0000\uD7B1\u8EA2\uB1CA" + // 17650 - 17654
- "\u8EA2\uB1CC\u0000\uD7AF\u0000\uD7AE\u0000\uD7AC\u0000\uD7AB" + // 17655 - 17659
- "\u8EA2\uB7E5\u0000\u0000\u8EA2\uB7E3\u8EA2\uB7DF\u0000\uDCC0" + // 17660 - 17664
- "\u0000\u0000\u8EA2\uB7E0\u0000\uDCC1\u8EA2\uB7E1\u8EA2\uB7E2" + // 17665 - 17669
- "\u8EA2\uB7E4\u0000\u0000\u0000\uDCC2\u0000\u0000\u0000\u0000" + // 17670 - 17674
- "\u8EA2\uBED9\u0000\u0000\u8EA2\uBED8\u8EA2\uBED7\u8EA2\uBED6" + // 17675 - 17679
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5DC" + // 17680 - 17684
- "\u0000\uE5D9\u0000\u0000\u8EA2\uC5D9\u8EA2\uC5DB\u0000\u0000" + // 17685 - 17689
- "\u0000\uE5DA\u8EA2\uC5D6\u0000\u0000\u0000\u0000\u8EA2\uC5D3" + // 17690 - 17694
- "\u8EA2\uC5CE\u8EA2\uC5D0\u8EA2\uC5D1\u8EA2\uC5CA\u0000\u0000" + // 17695 - 17699
- "\u0000\uE5D4\u0000\u0000\u0000\u0000\u0000\uE5D3\u0000\u0000" + // 17700 - 17704
- "\u0000\uE5CF\u8EA2\uC5CD\u0000\u0000\u0000\uE5D6\u0000\u0000" + // 17705 - 17709
- "\u0000\uE5D7\u8EA2\uC5CC\u8EA2\uC5CF\u8EA2\uC5D7\u0000\uE5D1" + // 17710 - 17714
- "\u0000\uE5D2\u8EA2\uC5D5\u8EA2\uC5CB\u0000\u0000\u0000\u0000" + // 17715 - 17719
- "\u0000\u0000\u8EA2\uCCBA\u0000\uE9F7\u8EA2\uCCBC\u8EA2\uC5D2" + // 17720 - 17724
- "\u8EA2\uCCBE\u0000\uE9FB\u8EA2\uCCBF\u8EA2\uCCBB\u0000\u0000" + // 17725 - 17729
- "\u0000\uE9F8\u8EA2\uCCB7\u0000\uE9FA\u8EA2\uCCB4\u8EA2\uCCB9" + // 17730 - 17734
- "\u8EA2\uCCBD\u8EA2\uCCB6\u0000\u0000\u0000\u0000\u0000\uE5D0" + // 17735 - 17739
- "\u0000\u0000\u8EA2\uCCB3\u0000\uE9F9\u8EA2\uCCB5\u0000\u0000" + // 17740 - 17744
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDFD" + // 17745 - 17749
- "\u8EA2\uD2C9\u0000\uEEA3\u0000\u0000\u0000\uEEA1\u0000\u0000" + // 17750 - 17754
- "\u0000\uFAC7\u0000\uFAC9\u0000\u0000\u8EA2\uEAA7\u0000\uFAC8" + // 17755 - 17759
- "\u8EA2\uEAA5\u0000\uF9A9\u8EA2\uEAA6\u0000\uFAC6\u0000\uFBAF" + // 17760 - 17764
- "\u0000\uFBB1\u8EA2\uECC5\u0000\uFBB0\u8EA2\uECC4\u0000\u0000" + // 17765 - 17769
- "\u8EA2\uEEB0\u0000\uFBF7\u8EA2\uEEAF\u0000\uFBF8\u8EA2\uEEAD" + // 17770 - 17774
- "\u8EA2\uEEAC\u8EA2\uEEB1\u8EA2\uEEB2\u8EA2\uEFD4\u0000\u0000" + // 17775 - 17779
- "\u8EA2\uEEAE\u0000\u0000\u0000\u0000\u8EA2\uF0D4\u8EA2\uF0D1" + // 17780 - 17784
- "\u8EA2\uF0D2\u8EA2\uF0D3\u0000\uFDA9\u0000\u0000\u8EA2\uF1C0" + // 17785 - 17789
- "\u8EA2\uF1BF\u8EA2\uF1BE\u8EA2\uF1DF\u0000\u0000\u8EA2\uF2AE" + // 17790 - 17794
- "\u8EA2\uF1F9\u0000\uFDBB\u0000\uCBCE\u0000\uD8C5\u0000\u0000" + // 17795 - 17799
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7A3" + // 17800 - 17804
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17805 - 17809
- "\u0000\u0000\u0000\u0000\u0000\uEFC1\u0000\u0000\u0000\u0000" + // 17810 - 17814
- "\u8EA2\uDAF4\u0000\u0000\u0000\u0000\u0000\uF0C9\u8EA2\uD6D8" + // 17815 - 17819
- "\u0000\u0000\u0000\u0000\u0000\uF0CC\u8EA2\uD6DA\u0000\uF0CB" + // 17820 - 17824
- "\u8EA2\uD6D3\u8EA2\uD6D5\u0000\u0000\u0000\u0000\u0000\u0000" + // 17825 - 17829
- "\u0000\u0000\u0000\uF3CE\u8EA2\uDCD8\u0000\u0000\u0000\uF3CD" + // 17830 - 17834
- "\u8EA2\uDCD9\u0000\uF3CC\u8EA2\uDCD7\u0000\uF3CB\u8EA2\uDCD6" + // 17835 - 17839
- "\u0000\u0000\u0000\uF6BF\u0000\uF6BE\u8EA2\uE5C2\u8EA2\uE5C4" + // 17840 - 17844
- "\u0000\u0000\u8EA2\uE5C3\u0000\uF8AE\u0000\uF8AF\u0000\u0000" + // 17845 - 17849
- "\u0000\u0000\u0000\uF8B0\u8EA2\uE8EE\u0000\uF9E6\u0000\u0000" + // 17850 - 17854
- "\u0000\u0000\u8EA2\uEFA2\u8EA2\uEFA1\u0000\uFCDE\u0000\u0000" + // 17855 - 17859
- "\u0000\uC4C9\u0000\uC5B1\u0000\u0000\u0000\u0000\u0000\uC9E7" + // 17860 - 17864
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9E0" + // 17865 - 17869
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE2" + // 17870 - 17874
- "\u0000\uDEE3\u0000\u0000\u8EA2\uC2B9\u0000\uE8C0\u8EA2\uC9D0" + // 17875 - 17879
- "\u8EA2\uCFFA\u8EA2\uCCAF\u8EA2\uCCAA\u8EA2\uCCAD\u8EA2\uCCB2" + // 17880 - 17884
- "\u0000\uE9F2\u8EA2\uCCAC\u0000\u0000\u0000\uEDF7\u8EA2\uD2C7" + // 17885 - 17889
- "\u8EA2\uD2C6\u0000\u0000\u0000\uEDFA\u0000\uEDF8\u8EA2\uD2C4" + // 17890 - 17894
- "\u0000\uEDF6\u8EA2\uD2C5\u0000\u0000\u0000\uEDF9\u0000\u0000" + // 17895 - 17899
- "\u0000\u0000\u0000\u0000\u8EA2\uD8E9\u0000\u0000\u8EA2\uD8EB" + // 17900 - 17904
- "\u0000\u0000\u8EA2\uD8EA\u8EA2\uD8E2\u8EA2\uD8E6\u8EA2\uD8E5" + // 17905 - 17909
- "\u8EA2\uD8E3\u0000\uF1D0\u0000\uF1D1\u0000\uF1CF\u8EA2\uD8E4" + // 17910 - 17914
- "\u8EA2\uD8E7\u8EA2\uD8E8\u0000\u0000\u0000\uF1D2\u0000\u0000" + // 17915 - 17919
- "\u0000\uF4CA\u8EA2\uDDED\u0000\u0000\u0000\uF4C7\u8EA2\uDDE7" + // 17920 - 17924
- "\u0000\uF4C9\u0000\uF4CB\u0000\u0000\u0000\u0000\u0000\uF4C8" + // 17925 - 17929
- "\u8EA2\uDDEC\u8EA2\uDDE8\u0000\uF4C6\u8EA2\uDDEB\u8EA2\uDDE6" + // 17930 - 17934
- "\u8EA2\uDDEA\u8EA2\uDDE9\u0000\u0000\u0000\u0000\u8EA2\uE2C2" + // 17935 - 17939
- "\u0000\uF6EE\u0000\uF6EF\u0000\uF6EC\u0000\u0000\u0000\uF6ED" + // 17940 - 17944
- "\u0000\uE5B7\u0000\uE5B9\u0000\u0000\u8EA2\uC5AF\u0000\u0000" + // 17945 - 17949
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCA3\u0000\uE9EE" + // 17950 - 17954
- "\u8EA2\uCCA7\u0000\uE9ED\u8EA2\uCCA4\u0000\uE9EC\u0000\u0000" + // 17955 - 17959
- "\u8EA2\uC5AE\u8EA2\uC5B5\u8EA2\uCCA6\u0000\u0000\u0000\uE9EF" + // 17960 - 17964
- "\u8EA2\uCCA8\u8EA2\uCCA5\u8EA2\uCCA2\u0000\u0000\u0000\u0000" + // 17965 - 17969
- "\u8EA2\uD2B9\u8EA2\uD2BD\u8EA2\uD2BF\u8EA2\uD2BB\u8EA2\uD2BA" + // 17970 - 17974
- "\u8EA2\uD2B8\u0000\uEDEE\u0000\uEDEC\u0000\uEDF1\u0000\uEDF2" + // 17975 - 17979
- "\u8EA2\uD2BC\u0000\uEDEF\u8EA2\uD2B7\u0000\uEDF0\u0000\uE9EB" + // 17980 - 17984
- "\u8EA2\uD2BE\u0000\uEDED\u0000\u0000\u0000\u0000\u0000\u0000" + // 17985 - 17989
- "\u8EA2\uD8D8\u0000\u0000\u8EA2\uD8D7\u8EA2\uD8DF\u8EA2\uD8D9" + // 17990 - 17994
- "\u8EA2\uD8DE\u8EA2\uD8DB\u0000\uF1CA\u8EA2\uD8DD\u0000\u0000" + // 17995 - 17999
- "\u0000\u0000\u0000\uF1CB\u0000\u0000\u0000\uF1CC\u0000\u0000" + // 18000 - 18004
- "\u8EA2\uD8DC\u8EA2\uD8DA\u0000\u0000\u0000\u0000\u8EA2\uAECA" + // 18005 - 18009
- "\u8EA2\uAECB\u0000\uD4E7\u0000\uD4E8\u0000\u0000\u0000\u0000" + // 18010 - 18014
- "\u8EA2\uB4AF\u0000\uD9CE\u0000\uD9D0\u8EA2\uB4AE\u0000\uD9CF" + // 18015 - 18019
- "\u8EA2\uBAE0\u0000\uDED8\u0000\u0000\u0000\u0000\u0000\u0000" + // 18020 - 18024
- "\u0000\u0000\u0000\uE3D0\u0000\uE3D1\u8EA2\uC2A8\u0000\u0000" + // 18025 - 18029
- "\u0000\uE8B7\u0000\u0000\u0000\uE8B6\u0000\u0000\u8EA2\uCFF0" + // 18030 - 18034
- "\u8EA2\uD6D2\u8EA2\uD6D1\u0000\u0000\u8EA2\uF1DA\u0000\uC4C8" + // 18035 - 18039
- "\u8EA2\uA1B9\u0000\u0000\u8EA2\uA1CF\u8EA2\uA1D0\u0000\u0000" + // 18040 - 18044
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7E3\u0000\uC7E7" + // 18045 - 18049
- "\u8EA2\uA2A9\u0000\u0000\u0000\uC7E5\u0000\uC7E4\u8EA2\uA2A8" + // 18050 - 18054
- "\u0000\uC7E6\u0000\uC7E2\u0000\u0000\u0000\u0000\u0000\uC7E1" + // 18055 - 18059
- "\u8EA2\uA2AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18060 - 18064
- "\u0000\u0000\u0000\u0000\u0000\uC9E6\u0000\u0000\u0000\u0000" + // 18065 - 18069
- "\u0000\uC9E3\u0000\u0000\u8EA2\uB9DD\u8EA2\uB9DA\u0000\u0000" + // 18070 - 18074
- "\u0000\u0000\u8EA2\uC0E1\u0000\uE2C7\u8EA2\uC0D9\u8EA2\uC0DF" + // 18075 - 18079
- "\u0000\u0000\u0000\u0000\u0000\uE2C2\u0000\uE2C5\u8EA2\uC0D8" + // 18080 - 18084
- "\u0000\uE2C0\u8EA2\uC0DC\u8EA2\uC7F2\u0000\uE2C4\u0000\u0000" + // 18085 - 18089
- "\u8EA2\uC0D7\u0000\u0000\u8EA2\uC0DD\u8EA2\uC0DA\u8EA2\uC0E0" + // 18090 - 18094
- "\u8EA2\uC0D6\u8EA2\uC0DE\u0000\uE2C3\u0000\uE2C6\u8EA2\uC0DB" + // 18095 - 18099
- "\u0000\uE2C1\u0000\u0000\u0000\uE6F9\u8EA2\uC7EE\u0000\uE6F8" + // 18100 - 18104
- "\u8EA2\uC7F5\u8EA2\uC7F4\u0000\uE7A1\u0000\u0000\u0000\uE7A2" + // 18105 - 18109
- "\u8EA2\uC7F6\u0000\uE6FA\u8EA2\uC7F3\u0000\uE6FE\u8EA2\uC7F8" + // 18110 - 18114
- "\u8EA2\uC7EF\u0000\u0000\u8EA2\uC7F1\u0000\uE6FB\u8EA2\uC7ED" + // 18115 - 18119
- "\u8EA2\uC7F0\u8EA2\uC7F7\u0000\uE6FC\u8EA2\uC7F9\u0000\u0000" + // 18120 - 18124
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6FD" + // 18125 - 18129
- "\u0000\u0000\u0000\uEBB9\u8EA2\uCEC3\u8EA2\uCEC9\u8EA2\uCEC1" + // 18130 - 18134
- "\u8EA2\uB1AA\u8EA2\uB1A7\u0000\uD6F0\u0000\u0000\u8EA2\uB1A9" + // 18135 - 18139
- "\u0000\uD6E9\u0000\u0000\u0000\uD6EA\u0000\u0000\u0000\u0000" + // 18140 - 18144
- "\u0000\uDCB1\u8EA2\uB7C4\u8EA2\uB7C5\u0000\uDCB2\u8EA2\uB7C1" + // 18145 - 18149
- "\u8EA2\uB7C3\u8EA2\uB7C7\u8EA2\uB7C6\u8EA2\uB7C2\u0000\u0000" + // 18150 - 18154
- "\u0000\uDCAE\u0000\uDCAF\u0000\u0000\u8EA2\uBEBA\u0000\uE0F1" + // 18155 - 18159
- "\u0000\uE0F0\u8EA2\uBEB4\u0000\uE0EE\u0000\u0000\u8EA2\uBEB7" + // 18160 - 18164
- "\u0000\uE0F2\u8EA2\uBEB8\u0000\uE0F3\u8EA2\uBEB5\u0000\uE0ED" + // 18165 - 18169
- "\u0000\uE0EF\u8EA2\uBEB9\u0000\u0000\u8EA2\uBEB6\u8EA2\uBEB3" + // 18170 - 18174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18175 - 18179
- "\u8EA2\uC5B8\u0000\u0000\u8EA2\uC5AD\u0000\uE5B8\u0000\uE5BB" + // 18180 - 18184
- "\u0000\uE5BA\u0000\uE5BF\u0000\uE5BE\u8EA2\uC5B9\u8EA2\uC5B7" + // 18185 - 18189
- "\u8EA2\uC5B0\u8EA2\uC5B4\u8EA2\uC5B3\u0000\uE5BC\u8EA2\uC5B6" + // 18190 - 18194
- "\u8EA2\uC5B2\u8EA2\uC5BA\u8EA2\uC5B1\u0000\uE5BD\u8EA2\uD8D6" + // 18195 - 18199
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDDF\u0000\u0000" + // 18200 - 18204
- "\u0000\uF8D1\u0000\uF8D0\u0000\u0000\u0000\u0000\u0000\uFBE8" + // 18205 - 18209
- "\u0000\uC6F4\u8EA2\uA8B5\u0000\u0000\u0000\u0000\u0000\uDCAD" + // 18210 - 18214
- "\u8EA2\uCCA1\u0000\uE9EA\u0000\uA8A9\u0000\u0000\u8EA2\uA4EF" + // 18215 - 18219
- "\u8EA2\uA4F0\u0000\u0000\u0000\u0000\u8EA2\uA8B6\u0000\uCEF9" + // 18220 - 18224
- "\u0000\uCEFA\u0000\u0000\u0000\u0000\u0000\uCEF8\u0000\u0000" + // 18225 - 18229
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD2D2\u0000\uD2D3" + // 18230 - 18234
- "\u0000\uD2D0\u0000\uD2D1\u0000\u0000\u8EA2\uACBE\u0000\u0000" + // 18235 - 18239
- "\u0000\u0000\u8EA2\uACBF\u0000\uD2CF\u0000\u0000\u0000\u0000" + // 18240 - 18244
- "\u0000\u0000\u0000\u0000\u8EA2\uB1A6\u0000\u0000\u0000\uD6EB" + // 18245 - 18249
- "\u0000\uD6EC\u0000\u0000\u0000\uDCB0\u8EA2\uB1AC\u0000\u0000" + // 18250 - 18254
- "\u0000\uD6F1\u0000\uD6EF\u8EA2\uB1AD\u8EA2\uB1A8\u0000\uD6EE" + // 18255 - 18259
- "\u0000\uD6ED\u0000\uD6E8\u8EA2\uB1AB\u8EA2\uA8B3\u0000\u0000" + // 18260 - 18264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18265 - 18269
- "\u8EA2\uACBC\u8EA2\uACBD\u0000\u0000\u0000\u0000\u0000\uD2CE" + // 18270 - 18274
- "\u0000\uD2CC\u0000\u0000\u0000\uD2CD\u0000\uD2CB\u0000\u0000" + // 18275 - 18279
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E3\u0000\u0000" + // 18280 - 18284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E7\u0000\uD6E6" + // 18285 - 18289
- "\u8EA2\uB1A4\u0000\uD6E5\u0000\uD6E4\u0000\u0000\u8EA2\uB1A5" + // 18290 - 18294
- "\u0000\u0000\u0000\u0000\u0000\uDCAB\u8EA2\uB7C0\u8EA2\uB7BF" + // 18295 - 18299
- "\u0000\uDCA9\u0000\uDCAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18300 - 18304
- "\u0000\uE0EC\u0000\uE0EB\u8EA2\uBEB2\u0000\u0000\u0000\u0000" + // 18305 - 18309
- "\u8EA2\uBEB1\u0000\uDCAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 18310 - 18314
- "\u0000\u0000\u0000\u0000\u0000\uE5B5\u8EA2\uC5AB\u0000\uE5B6" + // 18315 - 18319
- "\u8EA2\uC5AA\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCBFE" + // 18320 - 18324
- "\u8EA2\uD2B6\u0000\uEDEB\u8EA2\uCBFB\u0000\u0000\u8EA2\uCBFC" + // 18325 - 18329
- "\u8EA2\uCBFD\u0000\uE9E9\u0000\u0000\u0000\u0000\u8EA2\uD2B5" + // 18330 - 18334
- "\u8EA2\uD2B4\u0000\u0000\u0000\u0000\u8EA2\uD8D5\u0000\uF1C8" + // 18335 - 18339
- "\u0000\uF1C9\u0000\u0000\u8EA2\uDDDE\u8EA2\uDDDB\u8EA2\uDDDC" + // 18340 - 18344
- "\u8EA2\uDDDD\u8EA2\uE2B6\u8EA2\uE2B5\u0000\uF6E8\u8EA2\uE6A3" + // 18345 - 18349
- "\u8EA2\uEBEC\u0000\uC6EC\u0000\u0000\u0000\uD2C9\u0000\u0000" + // 18350 - 18354
- "\u0000\uDCA7\u8EA2\uC5A9\u0000\u0000\u0000\uC6ED\u0000\u0000" + // 18355 - 18359
- "\u8EA2\uB1A3\u0000\uDCA8\u0000\u0000\u0000\u0000\u0000\uE0E9" + // 18360 - 18364
- "\u0000\uE0EA\u0000\u0000\u0000\uC6EE\u0000\uC6EF\u8EA2\uA2E6" + // 18365 - 18369
- "\u0000\uCBAD\u0000\uCBAC\u0000\uD2CA\u8EA2\uACBB\u8EA2\uBEB0" + // 18370 - 18374
- "\u0000\uC6F0\u0000\uC6F1\u0000\uC6F2\u0000\uC6F3\u0000\u0000" + // 18375 - 18379
- "\u0000\u0000\u0000\u0000\u0000\uCBAE\u0000\uCBAF\u8EA2\uA4EE" + // 18380 - 18384
- "\u8EA2\uA4ED\u0000\u0000\u0000\u0000\u0000\uCEF7\u8EA2\uA8B4" + // 18385 - 18389
- "\u8EA2\uA8B2\u8EA2\uE2AE\u8EA2\uE2B0\u8EA2\uE2B4\u8EA2\uE6A2" + // 18390 - 18394
- "\u0000\u0000\u8EA2\uE5FE\u0000\u0000\u0000\u0000\u0000\u0000" + // 18395 - 18399
- "\u0000\u0000\u0000\uF8CE\u8EA2\uE5FD\u0000\u0000\u0000\u0000" + // 18400 - 18404
- "\u0000\u0000\u0000\uF9F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 18405 - 18409
- "\u0000\u0000\u0000\uFAF8\u8EA2\uEDDF\u0000\uFAF7\u8EA2\uEDE1" + // 18410 - 18414
- "\u8EA2\uEDDE\u8EA2\uEDE0\u0000\uFCBC\u8EA2\uF0C0\u0000\uC6EA" + // 18415 - 18419
- "\u8EA2\uA8B0\u8EA2\uB0FD\u8EA2\uB0FE\u0000\uDCA4\u8EA2\uC5A5" + // 18420 - 18424
- "\u0000\uF1C7\u0000\uF8CF\u0000\uFBE7\u8EA2\uF0C1\u0000\uC6EB" + // 18425 - 18429
- "\u0000\u0000\u8EA2\uA8B1\u0000\uA3A2\u0000\u0000\u0000\u0000" + // 18430 - 18434
- "\u8EA2\uACB9\u0000\u0000\u8EA2\uACBA\u0000\u0000\u0000\u0000" + // 18435 - 18439
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1A1\u8EA2\uB1A2" + // 18440 - 18444
- "\u0000\uDCA5\u0000\uDCA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 18445 - 18449
- "\u8EA2\uBEAF\u0000\u0000\u8EA2\uC5A8\u8EA2\uC5A7\u8EA2\uC5A6" + // 18450 - 18454
- "\u0000\uEDEA\u8EA2\uD2AE\u0000\u0000\u0000\uEDE8\u0000\u0000" + // 18455 - 18459
- "\u8EA2\uD2B0\u8EA2\uD2AD\u8EA2\uD2AA\u8EA2\uD2B1\u8EA2\uD2AB" + // 18460 - 18464
- "\u8EA2\uD2AC\u0000\uEDE7\u0000\u0000\u0000\u0000\u0000\u0000" + // 18465 - 18469
- "\u0000\u0000\u8EA2\uDDD5\u0000\u0000\u8EA2\uD8D2\u0000\u0000" + // 18470 - 18474
- "\u8EA2\uD8D1\u8EA2\uD8D3\u0000\u0000\u8EA2\uDDD2\u0000\uF1C4" + // 18475 - 18479
- "\u0000\u0000\u8EA2\uD8CF\u0000\u0000\u0000\uF1C2\u0000\u0000" + // 18480 - 18484
- "\u0000\uF1C6\u0000\uF1C5\u8EA2\uD8D0\u8EA2\uD8D4\u0000\u0000" + // 18485 - 18489
- "\u0000\uF1C3\u0000\u0000\u8EA2\uDDD9\u0000\uF4C0\u0000\uF6E6" + // 18490 - 18494
- "\u0000\uF4C1\u0000\uF4BE\u8EA2\uDDD6\u8EA2\uDDD4\u0000\u0000" + // 18495 - 18499
- "\u8EA2\uDDD7\u0000\u0000\u8EA2\uDDDA\u0000\uF4BF\u8EA2\uDDD8" + // 18500 - 18504
- "\u8EA2\uDDD3\u0000\u0000\u0000\u0000\u8EA2\uE2AF\u8EA2\uE2B2" + // 18505 - 18509
- "\u8EA2\uE6A1\u8EA2\uE2AD\u0000\u0000\u8EA2\uE9BE\u8EA2\uE2B3" + // 18510 - 18514
- "\u0000\u0000\u0000\uF8CD\u8EA2\uE2B1\u0000\uF6E7\u8EA2\uC4FB" + // 18515 - 18519
- "\u0000\uE5B0\u8EA2\uC5A1\u0000\u0000\u8EA2\uC4F5\u0000\u0000" + // 18520 - 18524
- "\u8EA2\uC5A2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F6" + // 18525 - 18529
- "\u8EA2\uC4F7\u0000\u0000\u8EA2\uC5A3\u8EA2\uC4FE\u8EA2\uC4FC" + // 18530 - 18534
- "\u8EA2\uC4FD\u8EA2\uC4F9\u8EA2\uC4F8\u0000\u0000\u8EA2\uC5A4" + // 18535 - 18539
- "\u0000\uE5AD\u0000\u0000\u8EA2\uC4FA\u0000\u0000\u0000\uE5B2" + // 18540 - 18544
- "\u0000\uE5AC\u0000\uE5B3\u0000\uE5B4\u0000\u0000\u0000\uE5AF" + // 18545 - 18549
- "\u0000\uE5AE\u0000\u0000\u0000\u0000\u8EA2\uCBF4\u0000\uE9E5" + // 18550 - 18554
- "\u0000\uE9E4\u0000\u0000\u0000\u0000\u8EA2\uCBF9\u0000\u0000" + // 18555 - 18559
- "\u0000\uEDE6\u0000\uE9E6\u0000\u0000\u0000\u0000\u0000\uE9E8" + // 18560 - 18564
- "\u8EA2\uCBFA\u0000\uE5AB\u0000\uE9E7\u8EA2\uCBF6\u8EA2\uCBF8" + // 18565 - 18569
- "\u8EA2\uCBF5\u0000\u0000\u8EA2\uCBF7\u0000\u0000\u0000\u0000" + // 18570 - 18574
- "\u0000\u0000\u8EA2\uD2B3\u0000\u0000\u0000\u0000\u8EA2\uD2B2" + // 18575 - 18579
- "\u8EA2\uD2AF\u0000\uEDE9\u8EA2\uD8CE\u8EA2\uB7B7\u8EA2\uB7B4" + // 18580 - 18584
- "\u0000\u0000\u0000\uDBFE\u8EA2\uB7B3\u0000\uDBFC\u0000\uDCA1" + // 18585 - 18589
- "\u8EA2\uB7B6\u8EA2\uB7BE\u0000\uD6DE\u0000\uDBFD\u8EA2\uB7BC" + // 18590 - 18594
- "\u8EA2\uB7BB\u0000\uDCA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18595 - 18599
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18600 - 18604
- "\u8EA2\uBEA4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEA5" + // 18605 - 18609
- "\u0000\uE0E6\u0000\u0000\u8EA2\uBEAB\u0000\u0000\u0000\u0000" + // 18610 - 18614
- "\u8EA2\uBEAD\u8EA2\uBEA6\u0000\uE0E0\u8EA2\uBEAA\u8EA2\uBEA9" + // 18615 - 18619
- "\u0000\uE0E1\u0000\uE0E7\u0000\u0000\u0000\uE0E8\u8EA2\uBEAC" + // 18620 - 18624
- "\u0000\uE0DE\u8EA2\uBEA3\u8EA2\uBEA1\u8EA2\uBEA7\u8EA2\uBDFE" + // 18625 - 18629
- "\u0000\uE0E5\u8EA2\uBEA2\u8EA2\uBEA8\u8EA2\uBEAE\u0000\uE0DF" + // 18630 - 18634
- "\u0000\uE0E4\u0000\uE0E2\u0000\uE0E3\u0000\u0000\u0000\u0000" + // 18635 - 18639
- "\u0000\u0000\u0000\uE0DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 18640 - 18644
- "\u0000\u0000\u0000\uE5B1\u0000\uD2C7\u0000\u0000\u8EA2\uACAA" + // 18645 - 18649
- "\u8EA2\uACB5\u0000\u0000\u8EA2\uACAC\u8EA2\uACB6\u8EA2\uACB3" + // 18650 - 18654
- "\u8EA2\uACAB\u0000\u0000\u0000\uD2C3\u8EA2\uACB8\u8EA2\uACA9" + // 18655 - 18659
- "\u0000\uD2C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18660 - 18664
- "\u8EA2\uB0F5\u8EA2\uB0EC\u8EA2\uB0F7\u0000\u0000\u8EA2\uB0EF" + // 18665 - 18669
- "\u8EA2\uB0FA\u8EA2\uB0FB\u8EA2\uB0ED\u8EA2\uB0F9\u8EA2\uB0F6" + // 18670 - 18674
- "\u8EA2\uB0F4\u8EA2\uB0F8\u0000\uD6E2\u0000\u0000\u0000\uD6E0" + // 18675 - 18679
- "\u0000\u0000\u0000\u0000\u8EA2\uB0F2\u0000\u0000\u8EA2\uB0EE" + // 18680 - 18684
- "\u0000\u0000\u8EA2\uB0F1\u8EA2\uB0FC\u8EA2\uB0F3\u0000\uD6E1" + // 18685 - 18689
- "\u8EA2\uACB1\u0000\u0000\u0000\uD6DD\u0000\uD6DF\u0000\u0000" + // 18690 - 18694
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7BD" + // 18695 - 18699
- "\u8EA2\uB7B2\u8EA2\uB7B0\u0000\u0000\u8EA2\uB7B1\u0000\u0000" + // 18700 - 18704
- "\u8EA2\uB7B8\u0000\u0000\u8EA2\uB7B9\u8EA2\uB7B5\u0000\uDCA2" + // 18705 - 18709
- "\u8EA2\uB7BA\u0000\uFBE6\u8EA2\uEFB7\u8EA2\uEFB6\u8EA2\uEFB8" + // 18710 - 18714
- "\u0000\uC6E8\u8EA2\uACA8\u0000\uD6DC\u0000\uDBFB\u8EA2\uB7AF" + // 18715 - 18719
- "\u0000\uC6E9\u8EA2\uA1E6\u0000\uC5DE\u0000\u0000\u0000\u0000" + // 18720 - 18724
- "\u8EA2\uA2E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4EC" + // 18725 - 18729
- "\u8EA2\uA4EA\u8EA2\uA4EB\u8EA2\uA4E8\u0000\uCBAB\u8EA2\uA4E9" + // 18730 - 18734
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18735 - 18739
- "\u8EA2\uA8AF\u0000\u0000\u0000\uCEF4\u8EA2\uA8AD\u8EA2\uA8A9" + // 18740 - 18744
- "\u8EA2\uA8AC\u0000\u0000\u8EA2\uA8A8\u0000\uCEF6\u8EA2\uA8AB" + // 18745 - 18749
- "\u0000\u0000\u0000\uCEF3\u0000\uCEF2\u0000\u0000\u0000\uCEF5" + // 18750 - 18754
- "\u8EA2\uA8AE\u8EA2\uA8AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18755 - 18759
- "\u0000\u0000\u0000\uD2C5\u0000\uD2C8\u8EA2\uACB0\u8EA2\uACAF" + // 18760 - 18764
- "\u8EA2\uACAE\u0000\uD2C2\u8EA2\uACB7\u8EA2\uACAD\u0000\u0000" + // 18765 - 18769
- "\u0000\uD2C4\u8EA2\uB0F0\u0000\u0000\u8EA2\uACB4\u8EA2\uACB2" + // 18770 - 18774
- "\u8EA2\uC4F2\u0000\u0000\u8EA2\uC4EF\u8EA2\uCBF0\u0000\uE9E2" + // 18775 - 18779
- "\u0000\uE5A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F4" + // 18780 - 18784
- "\u8EA2\uC4F3\u0000\u0000\u8EA2\uCBF3\u8EA2\uCBF1\u0000\uEDE4" + // 18785 - 18789
- "\u0000\u0000\u0000\uE9E3\u8EA2\uCBF2\u8EA2\uD1FE\u0000\u0000" + // 18790 - 18794
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDE5\u8EA2\uD1FD" + // 18795 - 18799
- "\u8EA2\uD2A8\u8EA2\uD2A7\u8EA2\uD2A5\u0000\u0000\u8EA2\uD2A4" + // 18800 - 18804
- "\u8EA2\uD2A1\u8EA2\uD2A2\u8EA2\uD2A3\u8EA2\uD2A6\u8EA2\uD2A9" + // 18805 - 18809
- "\u0000\u0000\u0000\u0000\u8EA2\uD8CB\u8EA2\uD8C8\u8EA2\uD8C9" + // 18810 - 18814
- "\u0000\uF1C1\u8EA2\uD8C7\u8EA2\uD8CD\u8EA2\uD8CC\u8EA2\uD8CA" + // 18815 - 18819
- "\u0000\u0000\u8EA2\uDDD0\u8EA2\uDDD1\u0000\uF4BC\u0000\u0000" + // 18820 - 18824
- "\u0000\uF4BD\u8EA2\uDDCF\u0000\u0000\u0000\uF6E5\u8EA2\uE2AC" + // 18825 - 18829
- "\u0000\uF6E4\u0000\uF8CB\u0000\u0000\u0000\uF8CC\u0000\uF9F8" + // 18830 - 18834
- "\u8EA2\uE9BD\u8EA2\uE9BC\u8EA2\uEBEB\u8EA2\uEDDD\u8EA2\uB0E4" + // 18835 - 18839
- "\u8EA2\uB0EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18840 - 18844
- "\u0000\u0000\u8EA2\uB7A7\u8EA2\uB7AB\u0000\u0000\u8EA2\uB7AA" + // 18845 - 18849
- "\u8EA2\uBDF2\u8EA2\uBDFD\u0000\u0000\u0000\u0000\u8EA2\uB7AD" + // 18850 - 18854
- "\u0000\u0000\u8EA2\uB7A8\u8EA2\uBDF1\u0000\uDBF9\u0000\u0000" + // 18855 - 18859
- "\u0000\u0000\u0000\uDBF8\u8EA2\uB7A6\u8EA2\uB7A9\u0000\uDBFA" + // 18860 - 18864
- "\u0000\u0000\u0000\uDBF7\u0000\uDBF6\u8EA2\uB7A5\u8EA2\uB7AE" + // 18865 - 18869
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF4\u8EA2\uBDFB" + // 18870 - 18874
- "\u0000\u0000\u0000\uE0DA\u8EA2\uBDFA\u8EA2\uBDF7\u0000\u0000" + // 18875 - 18879
- "\u0000\uE0DC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF9" + // 18880 - 18884
- "\u0000\u0000\u0000\u0000\u8EA2\uBDF3\u8EA2\uBDF5\u8EA2\uBDF8" + // 18885 - 18889
- "\u8EA2\uBDF6\u0000\uE0DB\u8EA2\uBDFC\u0000\uE0D9\u0000\uE5A7" + // 18890 - 18894
- "\u0000\u0000\u0000\u0000\u8EA2\uC4F1\u8EA2\uC4F0\u8EA2\uC4EE" + // 18895 - 18899
- "\u0000\u0000\u0000\uE5AA\u0000\uE5A9\u0000\uCEED\u8EA2\uA4E5" + // 18900 - 18904
- "\u0000\uCBAA\u8EA2\uA4E3\u0000\uCBA9\u8EA2\uA4E7\u8EA2\uA4E4" + // 18905 - 18909
- "\u0000\u0000\u0000\u0000\u8EA2\uA8A1\u8EA2\uABFE\u8EA2\uA7FD" + // 18910 - 18914
- "\u8EA2\uA8A6\u0000\u0000\u0000\uCEEE\u0000\u0000\u0000\uCEF1" + // 18915 - 18919
- "\u8EA2\uA8A7\u8EA2\uA8A3\u0000\u0000\u8EA2\uA8A4\u0000\u0000" + // 18920 - 18924
- "\u8EA2\uA7FC\u0000\uCEF0\u8EA2\uA7FE\u0000\uCEEF\u8EA2\uA8A5" + // 18925 - 18929
- "\u0000\u0000\u8EA2\uA8A2\u0000\u0000\u0000\u0000\u8EA2\uACA4" + // 18930 - 18934
- "\u0000\uD2C0\u0000\uD2C1\u0000\u0000\u8EA2\uACA7\u8EA2\uACA1" + // 18935 - 18939
- "\u0000\u0000\u8EA2\uACA6\u0000\u0000\u8EA2\uACA2\u0000\uD2BF" + // 18940 - 18944
- "\u8EA2\uACA5\u8EA2\uACA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18945 - 18949
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0E9" + // 18950 - 18954
- "\u8EA2\uB0E6\u0000\u0000\u8EA2\uB0E8\u0000\uD6DB\u0000\uD6DA" + // 18955 - 18959
- "\u0000\uD6D8\u8EA2\uB0E5\u8EA2\uB0EA\u0000\uD6D7\u0000\uD6D9" + // 18960 - 18964
- "\u8EA2\uB0E7\u8EA2\uB7AC\u0000\uE0D8\u0000\uDBF5\u0000\u0000" + // 18965 - 18969
- "\u0000\u0000\u0000\uE0D7\u8EA2\uBDEF\u8EA2\uBDEE\u0000\u0000" + // 18970 - 18974
- "\u8EA2\uBDEC\u8EA2\uBDED\u0000\u0000\u8EA2\uBDF0\u8EA2\uC4EA" + // 18975 - 18979
- "\u8EA2\uC4E9\u8EA2\uC4ED\u0000\u0000\u8EA2\uC4EC\u8EA2\uC4EB" + // 18980 - 18984
- "\u0000\uE9E0\u8EA2\uCBEF\u0000\u0000\u8EA2\uCBEE\u0000\uE9E1" + // 18985 - 18989
- "\u8EA2\uCBED\u8EA2\uD1FB\u0000\u0000\u8EA2\uD1FC\u0000\uEDE3" + // 18990 - 18994
- "\u0000\u0000\u8EA2\uD8C5\u8EA2\uD8C6\u0000\u0000\u0000\u0000" + // 18995 - 18999
- "\u8EA2\uE5FC\u0000\uF8CA\u8EA2\uE5FB\u8EA2\uE5FA\u8EA2\uE5F8" + // 19000 - 19004
- "\u8EA2\uE5F9\u0000\uFAF6\u8EA2\uE9BB\u8EA2\uEDDC\u8EA2\uF1A7" + // 19005 - 19009
- "\u0000\u0000\u0000\uC5DD\u0000\u0000\u8EA2\uA1E4\u0000\uC6E7" + // 19010 - 19014
- "\u8EA2\uA1E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2E3" + // 19015 - 19019
- "\u8EA2\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19020 - 19024
- "\u8EA2\uA4E6\u0000\u0000\u0000\u0000\u8EA2\uA4E2\u0000\u0000" + // 19025 - 19029
- "\u8EA2\uA4E1\u8EA2\uD8B8\u8EA2\uD8B9\u8EA2\uD8B4\u0000\uF1BF" + // 19030 - 19034
- "\u0000\uF1C0\u8EA2\uD8B3\u8EA2\uD8C2\u8EA2\uD8BD\u0000\uF1B9" + // 19035 - 19039
- "\u0000\uF1B6\u8EA2\uD8BC\u8EA2\uD8BA\u0000\u0000\u0000\u0000" + // 19040 - 19044
- "\u0000\uF1BC\u8EA2\uD8BE\u0000\uF1B7\u0000\u0000\u0000\uF1B8" + // 19045 - 19049
- "\u0000\u0000\u8EA2\uD8BB\u0000\uF1BA\u8EA2\uD8B7\u0000\u0000" + // 19050 - 19054
- "\u8EA2\uD8C0\u0000\uF1BD\u8EA2\uD8C3\u8EA2\uD8C4\u0000\uF1BE" + // 19055 - 19059
- "\u0000\u0000\u0000\u0000\u0000\uF4B2\u0000\uF4B9\u8EA2\uDDC8" + // 19060 - 19064
- "\u8EA2\uDDCE\u0000\u0000\u8EA2\uDDCC\u0000\uF4B5\u0000\uF4B4" + // 19065 - 19069
- "\u0000\uF4B1\u8EA2\uDDCA\u0000\u0000\u0000\u0000\u0000\u0000" + // 19070 - 19074
- "\u0000\uF4B7\u0000\uF4B6\u0000\uF4B3\u0000\u0000\u8EA2\uDDCD" + // 19075 - 19079
- "\u8EA2\uDDC9\u8EA2\uDDCB\u0000\u0000\u0000\uF4B8\u0000\u0000" + // 19080 - 19084
- "\u0000\u0000\u0000\u0000\u0000\uF6E3\u8EA2\uE2A9\u0000\u0000" + // 19085 - 19089
- "\u0000\uF6E0\u0000\uF6E1\u8EA2\uE2AB\u0000\uF6E2\u8EA2\uE2A8" + // 19090 - 19094
- "\u8EA2\uCBE3\u8EA2\uCBE9\u8EA2\uCBE5\u0000\u0000\u0000\uE9DD" + // 19095 - 19099
- "\u8EA2\uCBE4\u8EA2\uCBE8\u8EA2\uCBE0\u0000\u0000\u8EA2\uCBE2" + // 19100 - 19104
- "\u0000\uE9DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19105 - 19109
- "\u8EA2\uCBE6\u8EA2\uCBE1\u0000\u0000\u0000\uE9DE\u0000\u0000" + // 19110 - 19114
- "\u0000\uE9D9\u0000\u0000\u0000\u0000\u8EA2\uCBEA\u0000\u0000" + // 19115 - 19119
- "\u0000\uE9DA\u8EA2\uD1EF\u8EA2\uD1EC\u8EA2\uD1F8\u8EA2\uD1F2" + // 19120 - 19124
- "\u8EA2\uD1F4\u0000\uEDDE\u8EA2\uD1EE\u8EA2\uD1F6\u0000\u0000" + // 19125 - 19129
- "\u0000\u0000\u8EA2\uD1F5\u8EA2\uD1F3\u0000\u0000\u8EA2\uD1F9" + // 19130 - 19134
- "\u0000\uEDE1\u8EA2\uD1F0\u8EA2\uD1F7\u0000\u0000\u0000\uEDDF" + // 19135 - 19139
- "\u0000\u0000\u0000\u0000\u8EA2\uD1EB\u8EA2\uD1ED\u0000\uEDE0" + // 19140 - 19144
- "\u8EA2\uD1EA\u8EA2\uD1FA\u0000\u0000\u8EA2\uD1F1\u0000\u0000" + // 19145 - 19149
- "\u0000\u0000\u8EA2\uD8B6\u0000\uF1BB\u0000\u0000\u0000\u0000" + // 19150 - 19154
- "\u8EA2\uD8C1\u8EA2\uD8BF\u0000\uF1B5\u8EA2\uD8B5\u8EA2\uB6F9" + // 19155 - 19159
- "\u0000\u0000\u8EA2\uB6FD\u0000\u0000\u8EA2\uB6F2\u0000\u0000" + // 19160 - 19164
- "\u8EA2\uB6F7\u0000\u0000\u0000\u0000\u0000\uDBEF\u0000\uDBF0" + // 19165 - 19169
- "\u8EA2\uB6FC\u8EA2\uB6F0\u8EA2\uB6EC\u8EA2\uB6FE\u0000\u0000" + // 19170 - 19174
- "\u8EA2\uB6F4\u0000\u0000\u0000\u0000\u8EA2\uB6F8\u0000\u0000" + // 19175 - 19179
- "\u0000\u0000\u0000\u0000\u8EA2\uB6EE\u0000\u0000\u0000\uE0CE" + // 19180 - 19184
- "\u0000\uE0CF\u8EA2\uBDE9\u0000\uE0D5\u0000\u0000\u8EA2\uBDDD" + // 19185 - 19189
- "\u8EA2\uBDE6\u8EA2\uBDDC\u0000\uE0D2\u8EA2\uBDE4\u8EA2\uBDE2" + // 19190 - 19194
- "\u0000\u0000\u8EA2\uBDE3\u0000\uE0D0\u0000\u0000\u8EA2\uBDE7" + // 19195 - 19199
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19200 - 19204
- "\u8EA2\uBDE0\u8EA2\uBDDE\u0000\uE0D1\u8EA2\uBDE1\u8EA2\uBDE5" + // 19205 - 19209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0D3\u0000\u0000" + // 19210 - 19214
- "\u0000\u0000\u0000\u0000\u8EA2\uBDE8\u0000\u0000\u0000\u0000" + // 19215 - 19219
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEC0\u8EA2\uBEC2" + // 19220 - 19224
- "\u8EA2\uBEBE\u8EA2\uBEBF\u0000\u0000\u0000\u0000\u8EA2\uBEC3" + // 19225 - 19229
- "\u8EA2\uBEC5\u8EA2\uBEC6\u8EA2\uBEC1\u8EA2\uBEC4\u0000\uE0FA" + // 19230 - 19234
- "\u0000\u0000\u0000\u0000\u8EA2\uC5C1\u0000\u0000\u8EA2\uC5C6" + // 19235 - 19239
- "\u8EA2\uC5BE\u8EA2\uC5C2\u0000\u0000\u0000\u0000\u8EA2\uC5C7" + // 19240 - 19244
- "\u8EA2\uC5C3\u0000\uE5C2\u0000\uE5CA\u0000\u0000\u0000\uE5C5" + // 19245 - 19249
- "\u8EA2\uC5BF\u8EA2\uC5C0\u0000\uE9F5\u0000\uE5CD\u0000\uE5C6" + // 19250 - 19254
- "\u0000\u0000\u0000\uE5CB\u0000\uE5C4\u8EA2\uC5C5\u0000\uE5CC" + // 19255 - 19259
- "\u8EA2\uC5C4\u0000\uE5C8\u0000\uE5C3\u0000\uE5C9\u8EA2\uC5C8" + // 19260 - 19264
- "\u8EA2\uCCAE\u8EA2\uCCB0\u0000\u0000\u0000\u0000\u0000\u0000" + // 19265 - 19269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19270 - 19274
- "\u0000\u0000\u0000\uE5C7\u0000\u0000\u0000\u0000\u8EA2\uCCAB" + // 19275 - 19279
- "\u0000\uE9F3\u8EA2\uCCB1\u0000\uE9F4\u8EA2\uE9B5\u8EA2\uE9B8" + // 19280 - 19284
- "\u8EA2\uE9AF\u8EA2\uEBE1\u8EA2\uEBE2\u8EA2\uEBE6\u8EA2\uEBE7" + // 19285 - 19289
- "\u0000\u0000\u8EA2\uEBE4\u8EA2\uEBE5\u8EA2\uEBE3\u0000\u0000" + // 19290 - 19294
- "\u0000\uFAF4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19295 - 19299
- "\u0000\uFBE4\u8EA2\uEDD9\u0000\u0000\u0000\u0000\u8EA2\uEDD6" + // 19300 - 19304
- "\u8EA2\uEDD7\u8EA2\uEDD8\u0000\uFBE5\u0000\u0000\u8EA2\uEFB4" + // 19305 - 19309
- "\u8EA2\uEFB3\u0000\u0000\u8EA2\uF0BD\u0000\uFCE0\u8EA2\uF0BB" + // 19310 - 19314
- "\u8EA2\uF0BE\u8EA2\uF0BC\u8EA2\uF1A5\u0000\uFDA4\u0000\uFDB2" + // 19315 - 19319
- "\u8EA2\uF1F1\u8EA2\uF1DB\u0000\u0000\u8EA2\uF1F0\u8EA2\uF2BE" + // 19320 - 19324
- "\u8EA2\uF2BF\u0000\uC5D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 19325 - 19329
- "\u0000\u0000\u0000\uC8C8\u8EA2\uA2E1\u0000\u0000\u0000\u0000" + // 19330 - 19334
- "\u8EA2\uA4DE\u0000\u0000\u0000\uCBA2\u0000\u0000\u0000\uCBA5" + // 19335 - 19339
- "\u0000\u0000\u8EA2\uA4DF\u0000\u0000\u0000\uCBA3\u0000\uCBA4" + // 19340 - 19344
- "\u0000\u0000\u0000\u0000\u0000\uC7D4\u0000\u0000\u0000\uC7DA" + // 19345 - 19349
- "\u0000\uC7D6\u0000\u0000\u0000\uC7DC\u8EA2\uA2A5\u0000\uC7D9" + // 19350 - 19354
- "\u0000\uC7CF\u0000\uC7D2\u0000\uC7D5\u0000\uC7D1\u0000\uC7D8" + // 19355 - 19359
- "\u0000\uC7DB\u0000\uC7D0\u0000\uC7D3\u0000\uC7D7\u0000\uC7DD" + // 19360 - 19364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19365 - 19369
- "\u8EA2\uA3C0\u8EA2\uA3BD\u0000\u0000\u0000\uC9C9\u8EA2\uA3BE" + // 19370 - 19374
- "\u0000\uC9BD\u0000\uC9BF\u0000\uC9D7\u0000\uC9D2\u0000\u0000" + // 19375 - 19379
- "\u0000\u0000\u0000\u0000\u8EA2\uA3C5\u8EA2\uA3BF\u0000\uC9C1" + // 19380 - 19384
- "\u0000\uC9C3\u8EA2\uA3C4\u0000\uC9CA\u8EA2\uA3BA\u0000\uC9D6" + // 19385 - 19389
- "\u0000\uC9D8\u0000\uC9BE\u0000\uC9CF\u0000\u0000\u8EA2\uA3B8" + // 19390 - 19394
- "\u0000\uC9D5\u0000\u0000\u0000\uC9C6\u0000\u0000\u0000\uC9D0" + // 19395 - 19399
- "\u0000\uC9D1\u8EA2\uA3B9\u0000\uC9CE\u0000\uC9CC\u0000\u0000" + // 19400 - 19404
- "\u0000\uC9CD\u0000\uC9D3\u8EA2\uA3C1\u0000\uC9C0\u0000\u0000" + // 19405 - 19409
- "\u0000\uF5D0\u8EA2\uE3D9\u8EA2\uE7B0\u0000\u0000\u8EA2\uEFD2" + // 19410 - 19414
- "\u0000\uCBC8\u8EA2\uB3A2\u0000\uD8BF\u0000\uDDC7\u8EA2\uC7DA" + // 19415 - 19419
- "\u8EA2\uC7D9\u0000\uEFA7\u8EA2\uD4CF\u0000\uEFA8\u8EA2\uDFDD" + // 19420 - 19424
- "\u0000\uF7C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC3" + // 19425 - 19429
- "\u0000\uCBC9\u8EA2\uA8EB\u8EA2\uB3A3\u0000\u0000\u0000\u0000" + // 19430 - 19434
- "\u0000\uDDC8\u0000\u0000\u8EA2\uB9D2\u8EA2\uB9D3\u0000\u0000" + // 19435 - 19439
- "\u8EA2\uC0CB\u0000\u0000\u0000\uE2AF\u0000\uE6ED\u0000\u0000" + // 19440 - 19444
- "\u8EA2\uC7DC\u8EA2\uC7DB\u8EA2\uC7DD\u0000\u0000\u8EA2\uCEB9" + // 19445 - 19449
- "\u8EA2\uCEBA\u0000\uEBB0\u0000\uF2C7\u0000\uEFA9\u0000\uF2C8" + // 19450 - 19454
- "\u0000\u0000\u8EA2\uDFE1\u8EA2\uDFDE\u8EA2\uDFE0\u8EA2\uDFDF" + // 19455 - 19459
- "\u0000\uF5D2\u0000\u0000\u8EA2\uE3DA\u8EA2\uE7B2\u8EA2\uE7B1" + // 19460 - 19464
- "\u8EA2\uA5A4\u0000\uD8C1\u0000\uD8C0\u8EA2\uB3A4\u0000\u0000" + // 19465 - 19469
- "\u8EA2\uB9D4\u0000\u0000\u0000\u0000\u8EA2\uAEDA\u0000\uD4E9" + // 19470 - 19474
- "\u0000\uD4EC\u0000\u0000\u0000\u0000\u8EA2\uAED1\u8EA2\uAED7" + // 19475 - 19479
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4EB\u8EA2\uAECC" + // 19480 - 19484
- "\u0000\u0000\u0000\uD0D2\u8EA2\uB4BD\u8EA2\uAED8\u0000\u0000" + // 19485 - 19489
- "\u8EA2\uAECF\u0000\u0000\u0000\uD4EA\u8EA2\uAECE\u0000\u0000" + // 19490 - 19494
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19495 - 19499
- "\u8EA2\uB4B4\u0000\u0000\u0000\u0000\u0000\uD9D1\u0000\uD9D5" + // 19500 - 19504
- "\u8EA2\uB4C4\u8EA2\uB4B2\u8EA2\uB4C0\u0000\uD9D6\u8EA2\uB4C2" + // 19505 - 19509
- "\u0000\u0000\u8EA2\uB4C8\u0000\u0000\u8EA2\uB4CC\u0000\u0000" + // 19510 - 19514
- "\u0000\u0000\u8EA2\uB4C3\u8EA2\uB4B7\u8EA2\uB4BF\u0000\u0000" + // 19515 - 19519
- "\u8EA2\uB4CD\u8EA2\uB4CB\u8EA2\uB4C1\u8EA2\uB4BC\u8EA2\uB4B5" + // 19520 - 19524
- "\u8EA2\uBAE8\u8EA2\uB4B3\u0000\uD9DA\u8EA2\uB4BA\u0000\uD9DB" + // 19525 - 19529
- "\u0000\uD9D7\u8EA2\uB4B0\u8EA2\uB4C6\u8EA2\uB4B8\u0000\u0000" + // 19530 - 19534
- "\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004" + // 19535 - 19539
- "\u0000\u0005\u0000\u0006\u0000\u0007\u0000\u0008\u0000\u0009" + // 19540 - 19544
- "\u0000\n\u0000\u000B\u0000\u000C\u0000\r\u0000\u000E" + // 19545 - 19549
- "\u0000\u000F\u0000\u0010\u0000\u0011\u0000\u0012\u0000\u0013" + // 19550 - 19554
- "\u0000\u0014\u0000\u0015\u0000\u0016\u0000\u0017\u0000\u0018" + // 19555 - 19559
- "\u0000\u0019\u0000\u001A\u0000\u001B\u0000\u001C\u0000\u001D" + // 19560 - 19564
- "\u0000\u001E\u0000\u001F\u0000\u0020\u0000\u0021\u0000\"" + // 19565 - 19569
- "\u0000\u0023\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027" + // 19570 - 19574
- "\u0000\u0028\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C" + // 19575 - 19579
- "\u0000\u002D\u0000\u002E\u0000\u002F\u0000\u0030\u0000\u0031" + // 19580 - 19584
- "\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035\u0000\u0036" + // 19585 - 19589
- "\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u003A\u0000\u003B" + // 19590 - 19594
- "\u0000\u003C\u0000\u003D\u0000\u003E\u0000\u003F\u8EA2\uE2A1" + // 19595 - 19599
- "\u8EA2\uE1FA\u0000\u0000\u0000\u0000\u8EA2\uD8A3\u8EA2\uE1FB" + // 19600 - 19604
- "\u0000\uF6DC\u8EA2\uE1F7\u0000\u0000\u0000\uF6D9\u8EA2\uE2A6" + // 19605 - 19609
- "\u0000\uF6DA\u8EA2\uE1F8\u8EA2\uE1F9\u8EA2\uE1FD\u0000\uF6DF" + // 19610 - 19614
- "\u0000\u0000\u0000\uF6DE\u0000\u0000\u0000\u0000\u8EA2\uE1FC" + // 19615 - 19619
- "\u0000\uF8C5\u8EA2\uE5EA\u8EA2\uE5F0\u0000\uF8C6\u8EA2\uE5E7" + // 19620 - 19624
- "\u0000\uF8C3\u0000\uF8C0\u8EA2\uE5F2\u0000\uF8C4\u0000\u0000" + // 19625 - 19629
- "\u0000\uF8C1\u8EA2\uE5E9\u8EA2\uE5EC\u8EA2\uE5ED\u8EA2\uE5EE" + // 19630 - 19634
- "\u8EA2\uE5F1\u0000\u0000\u8EA2\uE2A3\u8EA2\uE5E8\u0000\uF8C2" + // 19635 - 19639
- "\u8EA2\uE5EF\u8EA2\uE9B4\u8EA2\uE5EB\u0000\u0000\u0000\u0000" + // 19640 - 19644
- "\u0000\u0000\u8EA2\uE9AB\u0000\uF9F5\u8EA2\uE9AE\u0000\uF9F6" + // 19645 - 19649
- "\u8EA2\uE9B7\u8EA2\uE9AD\u8EA2\uE9AA\u0000\u0000\u8EA2\uE9AC" + // 19650 - 19654
- "\u8EA2\uE9B0\u8EA2\uE9B3\u8EA2\uE9B2\u8EA2\uE9B6\u8EA2\uE9A9" + // 19655 - 19659
- "\u0000\u0000\u0000\uF9F4\u8EA2\uE9B1\u0000\uF1AF\u0000\uF1AC" + // 19660 - 19664
- "\u0000\uF1A7\u0000\uF1AA\u8EA2\uD7FC\u0000\u0000\u8EA2\uD1C6" + // 19665 - 19669
- "\u8EA2\uD7F7\u8EA2\uD7FA\u8EA2\uD8AD\u8EA2\uD8A1\u8EA2\uD7F5" + // 19670 - 19674
- "\u8EA2\uDDBA\u8EA2\uD8AF\u8EA2\uD7F9\u8EA2\uD8A9\u0000\u0000" + // 19675 - 19679
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDBD\u0000\uF4AE" + // 19680 - 19684
- "\u0000\u0000\u0000\u0000\u0000\uF4A2\u0000\u0000\u0000\u0000" + // 19685 - 19689
- "\u0000\uF4A6\u8EA2\uDDBF\u8EA2\uDDC5\u8EA2\uDDC3\u0000\uF4A4" + // 19690 - 19694
- "\u0000\uF4A5\u0000\uF4AC\u8EA2\uDDC6\u8EA2\uDDBE\u0000\uF4A7" + // 19695 - 19699
- "\u0000\u0000\u8EA2\uDDC2\u8EA2\uDDC1\u8EA2\uDDC7\u0000\uF4AD" + // 19700 - 19704
- "\u0000\u0000\u0000\uF4A8\u0000\uF4AB\u8EA2\uDDC0\u0000\uF4AF" + // 19705 - 19709
- "\u0000\uF4A9\u0000\uF4B0\u0000\uF4A3\u8EA2\uDDC4\u0000\u0000" + // 19710 - 19714
- "\u8EA2\uDDBC\u0000\u0000\u0000\u0000\u8EA2\uE2A5\u0000\u0000" + // 19715 - 19719
- "\u0000\u0000\u0000\uF6DD\u8EA2\uE2A2\u8EA2\uE2A4\u0000\u0000" + // 19720 - 19724
- "\u0000\uF6DB\u8EA2\uE1FE\u0000\uF4AA\u0000\u0000\u8EA2\uD1D2" + // 19725 - 19729
- "\u0000\u0000\u0000\uEDCB\u8EA2\uD1CD\u0000\uEDCF\u8EA2\uD1C5" + // 19730 - 19734
- "\u0000\uE9D2\u8EA2\uD1C9\u0000\u0000\u8EA2\uD1E2\u8EA2\uD1CA" + // 19735 - 19739
- "\u8EA2\uD1C8\u0000\uEDD4\u0000\u0000\u8EA2\uD1E0\u0000\u0000" + // 19740 - 19744
- "\u8EA2\uD1C7\u8EA2\uD1D9\u8EA2\uD1D8\u8EA2\uD1E5\u8EA2\uD1CF" + // 19745 - 19749
- "\u0000\uEDD8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19750 - 19754
- "\u0000\u0000\u0000\u0000\u8EA2\uD7FE\u0000\u0000\u0000\uF1B3" + // 19755 - 19759
- "\u0000\uF1A9\u8EA2\uD8AC\u8EA2\uD7F6\u0000\uF1AB\u8EA2\uD8A4" + // 19760 - 19764
- "\u0000\uF1B2\u0000\uF1AD\u8EA2\uD8A2\u8EA2\uDDBB\u8EA2\uD8A8" + // 19765 - 19769
- "\u8EA2\uD8AE\u8EA2\uD8A7\u8EA2\uD7F4\u8EA2\uD8A5\u8EA2\uD8B0" + // 19770 - 19774
- "\u8EA2\uD8B2\u0000\uF1A8\u8EA2\uD8B1\u0000\uF1AE\u0000\uF1B4" + // 19775 - 19779
- "\u0000\u0000\u0000\uF1B1\u0000\u0000\u8EA2\uD8AB\u0000\uF1B0" + // 19780 - 19784
- "\u8EA2\uD8A6\u0000\u0000\u8EA2\uD7F8\u8EA2\uD7FD\u0000\u0000" + // 19785 - 19789
- "\u8EA2\uD8AA\u8EA2\uCBCC\u8EA2\uD1C2\u0000\u0000\u8EA2\uCBD3" + // 19790 - 19794
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19795 - 19799
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19800 - 19804
- "\u8EA2\uCBBE\u8EA2\uD1CC\u8EA2\uD1D6\u0000\uEDCC\u8EA2\uD1D5" + // 19805 - 19809
- "\u8EA2\uD1E1\u0000\uEDCE\u8EA2\uD1D3\u0000\u0000\u8EA2\uD1D7" + // 19810 - 19814
- "\u0000\uEDD9\u0000\u0000\u8EA2\uD1CE\u0000\uEDD1\u0000\u0000" + // 19815 - 19819
- "\u8EA2\uD1DA\u8EA2\uD7FB\u0000\uEDDD\u0000\uEDDC\u8EA2\uD1DC" + // 19820 - 19824
- "\u8EA2\uD1CB\u8EA2\uD1E6\u0000\uEDD7\u0000\u0000\u0000\uEDCD" + // 19825 - 19829
- "\u8EA2\uD1DF\u0000\u0000\u8EA2\uD1E3\u8EA2\uD1E8\u8EA2\uD1DD" + // 19830 - 19834
- "\u8EA2\uD1D1\u0000\uEDD0\u0000\uEDD3\u0000\uEDDB\u0000\uEDD6" + // 19835 - 19839
- "\u0000\u0000\u8EA2\uD1D4\u8EA2\uCBC8\u0000\u0000\u0000\u0000" + // 19840 - 19844
- "\u8EA2\uD1D0\u8EA2\uD1E7\u0000\uEDD2\u0000\u0000\u0000\uEDD5" + // 19845 - 19849
- "\u8EA2\uD1E9\u0000\uEDCA\u8EA2\uD1DE\u8EA2\uD1C4\u8EA2\uD1E4" + // 19850 - 19854
- "\u8EA2\uD1DB\u0000\uE9D5\u0000\uE9C6\u8EA2\uCBB7\u0000\u0000" + // 19855 - 19859
- "\u8EA2\uCBD4\u0000\uE9CA\u8EA2\uCBD1\u8EA2\uCBDE\u8EA2\uCBBD" + // 19860 - 19864
- "\u8EA2\uCBC6\u0000\u0000\u0000\u0000\u8EA2\uCBDC\u8EA2\uCBD2" + // 19865 - 19869
- "\u0000\uE9C5\u0000\u0000\u0000\u0000\u8EA2\uCBC4\u0000\uE9BF" + // 19870 - 19874
- "\u0000\uE9BD\u0000\uE9CF\u0000\u0000\u0000\u0000\u8EA2\uCBC2" + // 19875 - 19879
- "\u8EA2\uCBBF\u8EA2\uCBC0\u0000\u0000\u8EA2\uCBD8\u0000\u0000" + // 19880 - 19884
- "\u8EA2\uCBDD\u8EA2\uCBDB\u0000\uE9C3\u8EA2\uCBDF\u0000\uE9C7" + // 19885 - 19889
- "\u0000\uE9CE\u0000\u0000\u8EA2\uCBB8\u8EA2\uD1C3\u8EA2\uCBC1" + // 19890 - 19894
- "\u0000\u0000\u0000\uE9C1\u0000\uE9D3\u0000\uE9D0\u0000\uE9C4" + // 19895 - 19899
- "\u8EA2\uCBCB\u8EA2\uCBBC\u0000\uE9D1\u8EA2\uCBCD\u0000\uE9CB" + // 19900 - 19904
- "\u0000\uE9CD\u0000\uE9BC\u0000\u0000\u8EA2\uCBCF\u8EA2\uCBC7" + // 19905 - 19909
- "\u8EA2\uCBBA\u0000\uE9CC\u8EA2\uCBD7\u8EA2\uCBDA\u8EA2\uCBC3" + // 19910 - 19914
- "\u8EA2\uCBCE\u0000\u0000\u0000\uE9C2\u0000\uEDC9\u8EA2\uC4AD" + // 19915 - 19919
- "\u8EA2\uC4B7\u0000\uE4E2\u8EA2\uC4C1\u0000\uE4EF\u0000\uE4E6" + // 19920 - 19924
- "\u8EA2\uC4B4\u0000\uE4E5\u8EA2\uC4AB\u8EA2\uC4B9\u8EA2\uC4CD" + // 19925 - 19929
- "\u0000\uE0C5\u0000\uE9D7\u8EA2\uC4BC\u8EA2\uCBB4\u8EA2\uC4BE" + // 19930 - 19934
- "\u8EA2\uC4CC\u0000\uE4EC\u8EA2\uC4B5\u0000\uE4E0\u0000\uE4F0" + // 19935 - 19939
- "\u0000\uEDDA\u8EA2\uC4AA\u0000\u0000\u8EA2\uC4C3\u0000\u0000" + // 19940 - 19944
- "\u0000\u0000\u0000\u0000\u8EA2\uC4C2\u0000\u0000\u0000\u0000" + // 19945 - 19949
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19950 - 19954
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19955 - 19959
- "\u0000\u0000\u0000\u0000\u8EA2\uCBD0\u0000\uE9D4\u8EA2\uCBC5" + // 19960 - 19964
- "\u8EA2\uCBCA\u0000\uE9C9\u0000\u0000\u8EA2\uCBB6\u0000\uE9D6" + // 19965 - 19969
- "\u0000\u0000\u0000\uE9C0\u8EA2\uCBB5\u8EA2\uCBD6\u0000\uE9D8" + // 19970 - 19974
- "\u8EA2\uCBB9\u8EA2\uCBC9\u0000\u0000\u8EA2\uCBBB\u8EA2\uCBD9" + // 19975 - 19979
- "\u8EA2\uCBD5\u0000\uE9BE\u0000\uE9C8\u8EA2\uBDBE\u8EA2\uBDB8" + // 19980 - 19984
- "\u0000\u0000\u0000\uE0C2\u0000\uE0CA\u8EA2\uBDB4\u8EA2\uBDAD" + // 19985 - 19989
- "\u8EA2\uBDAE\u0000\u0000\u8EA2\uBDB0\u0000\uE0B1\u8EA2\uBDBD" + // 19990 - 19994
- "\u0000\u0000\u0000\uE0BF\u0000\uE0C8\u0000\u0000\u0000\u0000" + // 19995 - 19999
- "\u8EA2\uBDBF\u8EA2\uBDD7\u8EA2\uBDCF\u0000\uE0AD\u8EA2\uBDD5" + // 20000 - 20004
- "\u0000\uE0B9\u0000\u0000\u0000\uE0B7\u0000\u0000\u8EA2\uBDDB" + // 20005 - 20009
- "\u0000\uE0B6\u8EA2\uBDC5\u8EA2\uBDB9\u8EA2\uBDC3\u0000\uE0CD" + // 20010 - 20014
- "\u8EA2\uBDC9\u8EA2\uBDC6\u8EA2\uBDB5\u0000\uE0C9\u8EA2\uBDD3" + // 20015 - 20019
- "\u8EA2\uBDD0\u8EA2\uBDD8\u0000\uE0B0\u8EA2\uBDC4\u0000\uE0CC" + // 20020 - 20024
- "\u0000\u0000\u8EA2\uBDCB\u0000\u0000\u0000\u0000\u0000\uE0BA" + // 20025 - 20029
- "\u0000\uE0BD\u0000\u0000\u8EA2\uBDCA\u0000\uE0CB\u8EA2\uBDBA" + // 20030 - 20034
- "\u8EA2\uB6C8\u0000\u0000\u0000\u0000\u8EA2\uBDD4\u8EA2\uBDD2" + // 20035 - 20039
- "\u8EA2\uBDD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20040 - 20044
- "\u0000\u0000\u0000\u0000\u8EA2\uB2E6\u8EA2\uB2E3\u8EA2\uB2E1" + // 20045 - 20049
- "\u0000\u0000\u0000\u0000\u0000\uD8A6\u8EA2\uB2E4\u0000\uD8AB" + // 20050 - 20054
- "\u8EA2\uB2DE\u8EA2\uB2ED\u0000\u0000\u8EA2\uB2EF\u8EA2\uB2DF" + // 20055 - 20059
- "\u0000\u0000\u0000\uD8A8\u8EA2\uB2F0\u8EA2\uB2EB\u8EA2\uB2DD" + // 20060 - 20064
- "\u8EA2\uB2E2\u8EA2\uB2EC\u8EA2\uB2E8\u8EA2\uB2E5\u0000\u0000" + // 20065 - 20069
- "\u0000\uD8AD\u8EA2\uB2EE\u8EA2\uB2E0\u0000\u0000\u0000\u0000" + // 20070 - 20074
- "\u8EA2\uB2E9\u8EA2\uB2DB\u0000\uD8AC\u0000\uD8A9\u8EA2\uB2E7" + // 20075 - 20079
- "\u0000\u0000\u8EA2\uB2EA\u8EA2\uB2DC\u0000\uD8AA\u0000\uD8A7" + // 20080 - 20084
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDDB2" + // 20085 - 20089
- "\u8EA2\uB9A8\u0000\uDDB1\u0000\u0000\u8EA2\uB9AB\u8EA2\uB9AE" + // 20090 - 20094
- "\u0000\uDDAE\u0000\uDDAC\u8EA2\uB9A3\u8EA2\uB9AC\u8EA2\uB9AA" + // 20095 - 20099
- "\u8EA2\uB9A7\u8EA2\uB9AF\u8EA2\uB9B0\u8EA2\uB9B2\u8EA2\uB9B3" + // 20100 - 20104
- "\u8EA2\uB9A2\u8EA2\uB6CF\u0000\u0000\u0000\u0000\u8EA2\uBDC1" + // 20105 - 20109
- "\u0000\u0000\u0000\uDBD2\u0000\u0000\u0000\u0000\u0000\u0000" + // 20110 - 20114
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20115 - 20119
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20120 - 20124
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20125 - 20129
- "\u0000\u0000\u0000\uE0C7\u0000\uDBDF\u0000\uE0B5\u8EA2\uBDBB" + // 20130 - 20134
- "\u0000\uE0C3\u0000\u0000\u8EA2\uBDAF\u0000\uE0B2\u0000\uE0AE" + // 20135 - 20139
- "\u8EA2\uBDCD\u0000\uE0B4\u0000\uE0B8\u0000\uE0B3\u0000\uE0BC" + // 20140 - 20144
- "\u8EA2\uBDD1\u8EA2\uBDC8\u0000\u0000\u0000\u0000\u8EA2\uBDB6" + // 20145 - 20149
- "\u0000\uE0C1\u0000\uE0BB\u8EA2\uBDC2\u0000\uE0AB\u8EA2\uBDCE" + // 20150 - 20154
- "\u8EA2\uBDC7\u0000\uE0AF\u8EA2\uBDBC\u0000\uE0BE\u8EA2\uBDD9" + // 20155 - 20159
- "\u8EA2\uBDDA\u0000\u0000\u0000\uE0AC\u8EA2\uBDCC\u0000\uE0C0" + // 20160 - 20164
- "\u8EA2\uBDC0\u8EA2\uBDB2\u8EA2\uBDB3\u0000\uE0C4\u8EA2\uBDB7" + // 20165 - 20169
- "\u8EA2\uB6C4\u0000\u0000\u8EA2\uB6E0\u0000\u0000\u0000\uDBE9" + // 20170 - 20174
- "\u0000\uDBDD\u0000\uDBE8\u0000\uDBD3\u8EA2\uB6D0\u8EA2\uB6E2" + // 20175 - 20179
- "\u8EA2\uB6DA\u0000\uDBD4\u0000\uDBCE\u8EA2\uB6E8\u0000\u0000" + // 20180 - 20184
- "\u8EA2\uB6E1\u8EA2\uB6E3\u0000\uDBD6\u0000\uDBDE\u8EA2\uB6E5" + // 20185 - 20189
- "\u8EA2\uB6CE\u8EA2\uB6DF\u8EA2\uB6D3\u8EA2\uB6E7\u0000\uDBE3" + // 20190 - 20194
- "\u0000\uDBCB\u0000\uDBE1\u8EA2\uB6D8\u8EA2\uB6D6\u8EA2\uB6D7" + // 20195 - 20199
- "\u0000\uDBD8\u8EA2\uB6D2\u8EA2\uB6D1\u0000\uDBCD\u8EA2\uB6CB" + // 20200 - 20204
- "\u8EA2\uB6E9\u0000\uDBCF\u8EA2\uB6D5\u0000\uDBED\u0000\u0000" + // 20205 - 20209
- "\u0000\uDBE7\u8EA2\uB6CA\u0000\uDBE4\u0000\uDBE2\u0000\uDBEB" + // 20210 - 20214
- "\u8EA2\uB6DC\u0000\uDBE6\u8EA2\uB0B5\u8EA2\uB6DD\u0000\uDBE5" + // 20215 - 20219
- "\u8EA2\uB6E4\u0000\uDBCA\u8EA2\uB6D9\u0000\uDBDC\u8EA2\uB6CD" + // 20220 - 20224
- "\u0000\uDBDB\u0000\u0000\u0000\uDBD9\u0000\uDBD1\u0000\uDBD0" + // 20225 - 20229
- "\u8EA2\uBDAC\u8EA2\uB6E6\u0000\u0000\u0000\u0000\u0000\uCCB2" + // 20230 - 20234
- "\u0000\u0000\u0000\uD0A7\u8EA2\uA9B2\u0000\u0000\u8EA2\uA5D3" + // 20235 - 20239
- "\u0000\uD0AC\u0000\u0000\u8EA2\uA9B3\u0000\uD0A8\u0000\uD0AB" + // 20240 - 20244
- "\u0000\uD0AA\u0000\uD0A9\u0000\uD0A6\u0000\u0000\u0000\u0000" + // 20245 - 20249
- "\u0000\u0000\u8EA2\uAEAB\u0000\u0000\u0000\uD4CA\u8EA2\uAEAE" + // 20250 - 20254
- "\u0000\uD4C8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEAA" + // 20255 - 20259
- "\u0000\uD4CB\u0000\uD4C9\u0000\uD4CC\u8EA2\uAEAC\u8EA2\uAEAD" + // 20260 - 20264
- "\u0000\u0000\u8EA2\uAEA9\u8EA2\uAEAF\u0000\u0000\u0000\u0000" + // 20265 - 20269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEB7" + // 20270 - 20274
- "\u0000\uD9AA\u8EA2\uB3EC\u8EA2\uB3EE\u8EA2\uB3ED\u8EA2\uB3EF" + // 20275 - 20279
- "\u0000\uD9AB\u0000\u0000\u0000\u0000\u0000\uDEB4\u0000\u0000" + // 20280 - 20284
- "\u0000\uDEB5\u0000\uDEB6\u0000\u0000\u0000\uE3B7\u8EA2\uC1EC" + // 20285 - 20289
- "\u0000\u0000\u8EA2\uC1EB\u8EA2\uC1ED\u8EA2\uC1EE\u0000\uE3B8" + // 20290 - 20294
- "\u0000\u0000\u0000\uE3B6\u8EA2\uB0C5\u0000\u0000\u8EA2\uB0BF" + // 20295 - 20299
- "\u8EA2\uB0C8\u8EA2\uB0C6\u0000\uD6CC\u8EA2\uB0B7\u0000\uD6BD" + // 20300 - 20304
- "\u0000\uD6BC\u0000\uD6C4\u0000\uD6CA\u8EA2\uB0C3\u0000\uD6C9" + // 20305 - 20309
- "\u8EA2\uB0B4\u0000\uDBC8\u0000\u0000\u8EA2\uB0CC\u8EA2\uB0B3" + // 20310 - 20314
- "\u8EA2\uB0AE\u0000\uD6C2\u0000\uD6CE\u0000\uD6BB\u0000\u0000" + // 20315 - 20319
- "\u8EA2\uB0BB\u8EA2\uB0C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 20320 - 20324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20325 - 20329
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20330 - 20334
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDBEA" + // 20335 - 20339
- "\u8EA2\uB6C5\u8EA2\uB6C9\u0000\u0000\u0000\uDBD7\u0000\uDBD5" + // 20340 - 20344
- "\u0000\u0000\u0000\u0000\u0000\uDBCC\u8EA2\uB6C7\u8EA2\uB6C6" + // 20345 - 20349
- "\u0000\uDBE0\u0000\u0000\u8EA2\uB6CC\u0000\uDBDA\u0000\u0000" + // 20350 - 20354
- "\u8EA2\uB6DE\u8EA2\uB6EA\u0000\uDBC9\u8EA2\uB6DB\u8EA2\uB6D4" + // 20355 - 20359
- "\u0000\uDBEC\u8EA2\uABE6\u0000\uD1FC\u8EA2\uABE0\u0000\u0000" + // 20360 - 20364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20365 - 20369
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20370 - 20374
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20375 - 20379
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20380 - 20384
- "\u8EA2\uB0AF\u0000\uD6C1\u0000\uD6C6\u0000\u0000\u0000\u0000" + // 20385 - 20389
- "\u0000\u0000\u8EA2\uB0B8\u8EA2\uB0BE\u8EA2\uB0BA\u8EA2\uB0AD" + // 20390 - 20394
- "\u8EA2\uB0B0\u8EA2\uB0A9\u8EA2\uB0AA\u0000\uD6CD\u0000\uD6BE" + // 20395 - 20399
- "\u8EA2\uB0B9\u8EA2\uB0C2\u0000\uD6C8\u0000\uD6BA\u0000\u0000" + // 20400 - 20404
- "\u0000\uD6C3\u8EA2\uB0B1\u0000\uD6C5\u8EA2\uB0B2\u8EA2\uB0BC" + // 20405 - 20409
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6C7\u8EA2\uB0CB" + // 20410 - 20414
- "\u8EA2\uB0AB\u0000\uD6C0\u0000\uD6BF\u0000\uD6CB\u8EA2\uB0A8" + // 20415 - 20419
- "\u8EA2\uB0C9\u8EA2\uB0BD\u8EA2\uB0CA\u8EA2\uB0C4\u8EA2\uB0B6" + // 20420 - 20424
- "\u8EA2\uABDE\u8EA2\uABE1\u0000\u0000\u8EA2\uABE4\u8EA2\uABD9" + // 20425 - 20429
- "\u0000\u0000\u0000\u0000\u8EA2\uABE7\u8EA2\uABEA\u8EA2\uABEC" + // 20430 - 20434
- "\u8EA2\uABD6\u0000\uD1F9\u0000\uD1FE\u8EA2\uB0AC\u0000\uD2B0" + // 20435 - 20439
- "\u8EA2\uABE5\u8EA2\uABED\u8EA2\uABDD\u8EA2\uABD5\u0000\u0000" + // 20440 - 20444
- "\u0000\u0000\u0000\u0000\u8EA2\uB0C7\u0000\uD2A3\u8EA2\uABE2" + // 20445 - 20449
- "\u8EA2\uABDA\u8EA2\uABDC\u0000\uD2A8\u0000\u0000\u8EA2\uABDF" + // 20450 - 20454
- "\u0000\uD2A2\u8EA2\uABD2\u8EA2\uABE8\u0000\u0000\u8EA2\uABEB" + // 20455 - 20459
- "\u0000\u0000\u0000\u0000\u0000\uD1FD\u0000\u0000\u0000\uD2AB" + // 20460 - 20464
- "\u8EA2\uABCF\u0000\uD2AD\u0000\uD1FB\u0000\uD2B1\u8EA2\uABE9" + // 20465 - 20469
- "\u8EA2\uABD1\u0000\uD2AE\u8EA2\uB0C1\u8EA2\uA7E8\u0000\uD2A1" + // 20470 - 20474
- "\u0000\uD1FA\u8EA2\uABD8\u8EA2\uABD0\u0000\uD2AF\u0000\uD2A7" + // 20475 - 20479
- "\u8EA2\uABE3\u0000\uD2AC\u0000\uD2AA\u8EA2\uABDB\u0000\uD2A4" + // 20480 - 20484
- "\u8EA2\uABD3\u0000\uD2A5\u0000\uD2A6\u8EA2\uABD4\u8EA2\uA7E7" + // 20485 - 20489
- "\u0000\uCED3\u8EA2\uA7DA\u8EA2\uA7DC\u0000\uCED1\u0000\uCED6" + // 20490 - 20494
- "\u8EA2\uA7DD\u8EA2\uA7EA\u0000\u0000\u0000\uD1F8\u0000\uCEDC" + // 20495 - 20499
- "\u0000\u0000\u0000\uCEC6\u8EA2\uA7E9\u0000\u0000\u8EA2\uA7ED" + // 20500 - 20504
- "\u8EA2\uA7D9\u8EA2\uA7EF\u8EA2\uA7E0\u0000\uCECF\u8EA2\uA7D5" + // 20505 - 20509
- "\u0000\uCECE\u0000\uCEE0\u0000\uCED5\u0000\u0000\u8EA2\uA7D3" + // 20510 - 20514
- "\u8EA2\uABD7\u0000\uCEDB\u0000\uCEDF\u8EA2\uA7E1\u8EA2\uA7E6" + // 20515 - 20519
- "\u0000\u0000\u0000\uCEE1\u0000\uCEDA\u0000\uCECC\u0000\uCEC2" + // 20520 - 20524
- "\u0000\u0000\u0000\uCEC7\u0000\u0000\u8EA2\uA7D7\u0000\uCEC3" + // 20525 - 20529
- "\u8EA2\uA7EE\u0000\u0000\u8EA2\uA7D1\u8EA2\uA7D0\u8EA2\uA7DE" + // 20530 - 20534
- "\u8EA2\uA7D2\u0000\uCEDE\u0000\uD6B9\u0000\uCED7\u8EA2\uA7DF" + // 20535 - 20539
- "\u0000\uCEC4\u0000\u0000\u0000\uD2A9\u0000\u0000\u0000\u0000" + // 20540 - 20544
- "\u0000\u0000\u8EA2\uA7EC\u0000\u0000\u0000\u0000\u0000\u0000" + // 20545 - 20549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2E7\u0000\u0000" + // 20550 - 20554
- "\u0000\u0000\u8EA2\uD2E8\u0000\u0000\u0000\uEEB6\u8EA2\uD2EA" + // 20555 - 20559
- "\u8EA2\uD2E9\u0000\u0000\u0000\uA3A3\u0000\u0000\u8EA2\uD9B6" + // 20560 - 20564
- "\u8EA2\uD9B7\u8EA2\uD9B3\u0000\u0000\u8EA2\uD9B4\u0000\uF1E6" + // 20565 - 20569
- "\u0000\uF1E7\u8EA2\uD9B5\u0000\u0000\u0000\uF4E1\u0000\u0000" + // 20570 - 20574
- "\u0000\u0000\u0000\uF4DD\u0000\uF4E2\u0000\uF4DE\u0000\uF4E0" + // 20575 - 20579
- "\u0000\uF4DC\u0000\u0000\u0000\uF4DF\u0000\u0000\u0000\u0000" + // 20580 - 20584
- "\u0000\u0000\u0000\u0000\u0000\uF6FD\u8EA2\uDEBC\u0000\u0000" + // 20585 - 20589
- "\u8EA2\uE6B8\u0000\u0000\u8EA2\uE6B7\u0000\u0000\u8EA2\uE9D8" + // 20590 - 20594
- "\u0000\uFAA7\u0000\uFAA8\u8EA2\uEDEE\u8EA2\uEBF4\u0000\u0000" + // 20595 - 20599
- "\u8EA2\uEDED\u0000\u0000\u8EA2\uF1AD\u8EA2\uF1F2\u0000\uC8CE" + // 20600 - 20604
- "\u0000\u0000\u0000\u0000\u0000\uCBB7\u0000\u0000\u8EA2\uA8C9" + // 20605 - 20609
- "\u0000\uCFAB\u0000\u0000\u8EA2\uC7D5\u8EA2\uC7D1\u8EA2\uC7D4" + // 20610 - 20614
- "\u8EA2\uC7D2\u0000\uE6E4\u8EA2\uC7CC\u0000\uE6DF\u0000\u0000" + // 20615 - 20619
- "\u0000\u0000\u0000\u0000\u8EA2\uCEB4\u0000\uEBA2\u0000\uEBA5" + // 20620 - 20624
- "\u0000\u0000\u8EA2\uCEB6\u0000\u0000\u0000\uEBAD\u8EA2\uCEB5" + // 20625 - 20629
- "\u0000\uEBA7\u0000\u0000\u0000\uEEF8\u8EA2\uCEB7\u0000\u0000" + // 20630 - 20634
- "\u0000\uEBAC\u8EA2\uCEB3\u0000\uEBAE\u0000\u0000\u0000\u0000" + // 20635 - 20639
- "\u0000\u0000\u0000\uEBA3\u0000\u0000\u0000\uE6E2\u0000\uEBA6" + // 20640 - 20644
- "\u0000\u0000\u0000\uEBA4\u0000\uEBA8\u0000\uEBAA\u0000\uEBA1" + // 20645 - 20649
- "\u0000\uEBAF\u0000\uEBAB\u0000\u0000\u0000\uEBA9\u8EA2\uCEB2" + // 20650 - 20654
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFA1" + // 20655 - 20659
- "\u0000\u0000\u0000\uEEFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 20660 - 20664
- "\u0000\uEFA4\u0000\u0000\u8EA2\uD4BF\u0000\uEFA5\u8EA2\uD4CB" + // 20665 - 20669
- "\u8EA2\uD4C4\u0000\uEEF4\u8EA2\uD4CC\u8EA2\uD4C6\u0000\uEEFE" + // 20670 - 20674
- "\u8EA2\uA7E5\u0000\uCAE8\u0000\uCBA1\u0000\uCAF6\u8EA2\uA4CE" + // 20675 - 20679
- "\u0000\uCAEB\u0000\uCAFA\u8EA2\uA4D6\u0000\uCAE9\u0000\uCAEA" + // 20680 - 20684
- "\u8EA2\uA7E3\u8EA2\uA4CF\u0000\uCAF1\u0000\uCAFC\u8EA2\uA4DD" + // 20685 - 20689
- "\u8EA2\uA4D0\u0000\uCAEF\u0000\u0000\u0000\uCAF4\u8EA2\uA7CF" + // 20690 - 20694
- "\u0000\uCAFD\u8EA2\uA4D7\u0000\uCAF3\u0000\u0000\u0000\uCAFE" + // 20695 - 20699
- "\u0000\uCAE7\u8EA2\uA4D4\u0000\uCAEC\u8EA2\uA4D8\u8EA2\uA7E4" + // 20700 - 20704
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20705 - 20709
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20710 - 20714
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCECD\u0000\uCEDD" + // 20715 - 20719
- "\u8EA2\uA7D6\u0000\uCED4\u0000\u0000\u8EA2\uA7EB\u0000\uCEC5" + // 20720 - 20724
- "\u0000\u0000\u0000\uCEC8\u8EA2\uA7E2\u0000\u0000\u8EA2\uA7D4" + // 20725 - 20729
- "\u8EA2\uA7D8\u0000\uCED0\u0000\uCED2\u8EA2\uA7DB\u0000\uCED9" + // 20730 - 20734
- "\u0000\uCECB\u0000\uCEC9\u0000\uCECA\u0000\uCED8\u0000\uC6E5" + // 20735 - 20739
- "\u0000\uC6E4\u0000\uCAE5\u8EA2\uA1E1\u0000\u0000\u0000\u0000" + // 20740 - 20744
- "\u8EA2\uA2D9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2DD" + // 20745 - 20749
- "\u8EA2\uA2DF\u8EA2\uA2E0\u0000\uC8C6\u0000\uC8C7\u8EA2\uA2DC" + // 20750 - 20754
- "\u0000\uC8C2\u0000\u0000\u8EA2\uA2DA\u0000\u0000\u8EA2\uA2DE" + // 20755 - 20759
- "\u0000\uC8C3\u0000\u0000\u0000\uC8BE\u0000\u0000\u0000\uC8BF" + // 20760 - 20764
- "\u0000\u0000\u0000\uC8C5\u8EA2\uA2DB\u0000\uC8BD\u0000\uCAE6" + // 20765 - 20769
- "\u0000\uC8C0\u0000\uC8C1\u0000\uC8C4\u0000\u0000\u0000\u0000" + // 20770 - 20774
- "\u0000\u0000\u8EA2\uA4DB\u8EA2\uA4D9\u8EA2\uA4CC\u0000\uCAF2" + // 20775 - 20779
- "\u8EA2\uA4D3\u0000\uCAED\u8EA2\uA4CD\u0000\u0000\u8EA2\uA4D5" + // 20780 - 20784
- "\u0000\u0000\u8EA2\uA4D2\u0000\uCAF0\u8EA2\uA4D1\u0000\uCAF7" + // 20785 - 20789
- "\u8EA2\uA4DA\u0000\uCAF9\u0000\u0000\u0000\uCAFB\u0000\u0000" + // 20790 - 20794
- "\u8EA2\uA4CB\u0000\u0000\u0000\uCAEE\u8EA2\uA4DC\u0000\u0000" + // 20795 - 20799
- "\u0000\uCAF5\u0000\uCAF8\u0000\u0000\u0000\uD3D1\u8EA2\uB9C8" + // 20800 - 20804
- "\u0000\uE1FD\u0000\u0000\u8EA2\uC7C1\u0000\uF7BB\u0000\u0000" + // 20805 - 20809
- "\u8EA2\uE6FD\u0000\u0000\u0000\u0000\u0000\uCBC4\u0000\u0000" + // 20810 - 20814
- "\u0000\u0000\u0000\u0000\u0000\uDDBD\u0000\u0000\u0000\u0000" + // 20815 - 20819
- "\u0000\u0000\u0000\uDDBC\u0000\u0000\u8EA2\uC0B6\u0000\uE1FE" + // 20820 - 20824
- "\u8EA2\uC0B8\u8EA2\uC0B7\u0000\u0000\u0000\u0000\u8EA2\uC7C2" + // 20825 - 20829
- "\u0000\uE6D7\u8EA2\uCEAB\u8EA2\uCEAE\u8EA2\uCEAD\u0000\u0000" + // 20830 - 20834
- "\u8EA2\uCEAC\u8EA2\uD4B7\u8EA2\uD4B9\u8EA2\uD4B8\u0000\u0000" + // 20835 - 20839
- "\u0000\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2B5" + // 20840 - 20844
- "\u0000\u0000\u0000\uF5C6\u8EA2\uDFC7\u8EA2\uDFC9\u8EA2\uDFC8" + // 20845 - 20849
- "\u0000\u0000\u0000\u0000\u0000\uF7BC\u0000\u0000\u0000\u0000" + // 20850 - 20854
- "\u0000\u0000\u8EA2\uE7A1\u8EA2\uE6FE\u0000\u0000\u8EA2\uE9F8" + // 20855 - 20859
- "\u0000\uFABC\u0000\u0000\u0000\u0000\u0000\uFBAA\u8EA2\uEEA3" + // 20860 - 20864
- "\u8EA2\uEEA2\u8EA2\uD1BF\u8EA2\uD1BE\u8EA2\uD1C1\u8EA2\uD7F2" + // 20865 - 20869
- "\u8EA2\uD7F1\u0000\uF1A6\u8EA2\uD7F3\u0000\u0000\u0000\uF4A1" + // 20870 - 20874
- "\u8EA2\uDDB9\u0000\u0000\u8EA2\uE1F6\u8EA2\uE5E6\u8EA2\uEDD5" + // 20875 - 20879
- "\u0000\u0000\u0000\uC5D4\u0000\uC6E2\u0000\uC6E1\u0000\u0000" + // 20880 - 20884
- "\u0000\uCEC0\u8EA2\uA1C1\u8EA2\uA1DF\u0000\uC8BC\u0000\u0000" + // 20885 - 20889
- "\u8EA2\uA2D8\u8EA2\uA4C9\u8EA2\uA4CA\u0000\uCEC1\u0000\u0000" + // 20890 - 20894
- "\u8EA2\uA7CE\u0000\u0000\u0000\uD1F7\u8EA2\uABCD\u8EA2\uABCE" + // 20895 - 20899
- "\u0000\u0000\u0000\uD6B4\u0000\uD6B8\u8EA2\uB0A7\u0000\uD6B7" + // 20900 - 20904
- "\u0000\uD6B5\u0000\uD6B6\u0000\u0000\u8EA2\uB6C3\u0000\uDBC7" + // 20905 - 20909
- "\u0000\uE0AA\u0000\u0000\u0000\uE0A8\u0000\uE0A9\u8EA2\uBDAB" + // 20910 - 20914
- "\u0000\u0000\u0000\u0000\u0000\uE9BB\u0000\uC5D5\u0000\u0000" + // 20915 - 20919
- "\u8EA2\uA1E0\u0000\u0000\u0000\uC6E3\u0000\u0000\u0000\u0000" + // 20920 - 20924
- "\u8EA2\uA1E3\u0000\u0000\u0000\u0000\u0000\uC6E6\u8EA2\uA1E2" + // 20925 - 20929
- "\u0000\uE4DA\u0000\u0000\u0000\u0000\u8EA2\uCBB1\u8EA2\uCBB2" + // 20930 - 20934
- "\u0000\uEDC7\u0000\uEDC8\u8EA2\uD7F0\u8EA2\uD7EF\u8EA2\uE1F5" + // 20935 - 20939
- "\u8EA2\uEFB2\u0000\uC5D1\u8EA2\uA1C0\u0000\uC6E0\u0000\u0000" + // 20940 - 20944
- "\u0000\uCAE4\u8EA2\uA4C8\u0000\u0000\u0000\uD1F5\u0000\uE4DC" + // 20945 - 20949
- "\u0000\uC5D2\u0000\u0000\u8EA2\uABCA\u0000\uD1F6\u8EA2\uABCB" + // 20950 - 20954
- "\u0000\u0000\u0000\uF3FE\u0000\uC5D3\u0000\u0000\u0000\u0000" + // 20955 - 20959
- "\u8EA2\uA7CD\u0000\u0000\u8EA2\uABCC\u0000\u0000\u8EA2\uB0A5" + // 20960 - 20964
- "\u8EA2\uB0A4\u8EA2\uB0A2\u0000\u0000\u8EA2\uB0A1\u8EA2\uB0A6" + // 20965 - 20969
- "\u8EA2\uB0A3\u0000\u0000\u0000\u0000\u0000\uDBC5\u0000\uDBC6" + // 20970 - 20974
- "\u0000\u0000\u0000\u0000\u0000\uE0A7\u8EA2\uBDA8\u0000\u0000" + // 20975 - 20979
- "\u8EA2\uBDA9\u8EA2\uBDAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 20980 - 20984
- "\u8EA2\uC4A7\u8EA2\uC4A8\u8EA2\uC4A6\u0000\u0000\u8EA2\uC4A4" + // 20985 - 20989
- "\u8EA2\uC4A5\u0000\uE4DD\u8EA2\uCBB3\u8EA2\uD1C0\u8EA2\uA7CB" + // 20990 - 20994
- "\u0000\u0000\u8EA2\uABC7\u0000\uD1F2\u8EA2\uABC8\u0000\u0000" + // 20995 - 20999
- "\u0000\uD1F3\u0000\u0000\u8EA2\uAFFE\u0000\uD6B2\u0000\uD6B1" + // 21000 - 21004
- "\u0000\u0000\u8EA2\uB6C2\u8EA2\uB6C0\u8EA2\uB6C1\u8EA2\uB6BF" + // 21005 - 21009
- "\u0000\u0000\u8EA2\uB6BE\u0000\u0000\u0000\u0000\u8EA2\uBDA3" + // 21010 - 21014
- "\u8EA2\uBDA6\u0000\uE0A5\u8EA2\uBDA4\u0000\uE0A4\u8EA2\uBDA5" + // 21015 - 21019
- "\u0000\u0000\u8EA2\uC4A3\u0000\u0000\u0000\u0000\u8EA2\uCBAE" + // 21020 - 21024
- "\u8EA2\uCBAF\u8EA2\uCBB0\u0000\u0000\u8EA2\uD1BC\u8EA2\uD1BB" + // 21025 - 21029
- "\u0000\uEDC6\u8EA2\uD1BA\u8EA2\uD1BD\u8EA2\uD7EC\u0000\u0000" + // 21030 - 21034
- "\u0000\u0000\u8EA2\uD7ED\u8EA2\uD7EE\u0000\u0000\u8EA2\uDDB8" + // 21035 - 21039
- "\u0000\uF3FD\u0000\uF6D8\u8EA2\uE5E5\u0000\u0000\u0000\uFAF3" + // 21040 - 21044
- "\u8EA2\uA1BF\u0000\u0000\u0000\uD1F4\u8EA2\uABC9\u0000\uD6B3" + // 21045 - 21049
- "\u0000\u0000\u0000\u0000\u0000\uDBC4\u0000\u0000\u0000\uE0A6" + // 21050 - 21054
- "\u8EA2\uBDA7\u0000\u0000\u0000\uE4DB\u8EA2\uEBE0\u0000\u0000" + // 21055 - 21059
- "\u8EA2\uEBDC\u8EA2\uEBDE\u0000\uFAF1\u0000\u0000\u0000\u0000" + // 21060 - 21064
- "\u0000\u0000\u8EA2\uEDD3\u8EA2\uEDD4\u0000\uFBE2\u8EA2\uEDD2" + // 21065 - 21069
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFB1\u0000\uFCBB" + // 21070 - 21074
- "\u8EA2\uEFAF\u8EA2\uEFB0\u8EA2\uF0BA\u0000\u0000\u0000\u0000" + // 21075 - 21079
- "\u0000\uFDA3\u8EA2\uF1A3\u8EA2\uF1A1\u8EA2\uF1A2\u8EA2\uF1A4" + // 21080 - 21084
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF2AB\u0000\u0000" + // 21085 - 21089
- "\u0000\uC5CE\u0000\uC8B9\u0000\u0000\u0000\uCEBC\u0000\u0000" + // 21090 - 21094
- "\u8EA2\uA7CA\u0000\u0000\u0000\u0000\u8EA2\uABC6\u0000\u0000" + // 21095 - 21099
- "\u0000\u0000\u0000\u0000\u8EA2\uAFF7\u8EA2\uAFF9\u0000\u0000" + // 21100 - 21104
- "\u8EA2\uAFF8\u0000\u0000\u8EA2\uAFFA\u0000\uDBC3\u8EA2\uB6BB" + // 21105 - 21109
- "\u8EA2\uAFFB\u0000\u0000\u8EA2\uB6BA\u8EA2\uB6BC\u8EA2\uB6BD" + // 21110 - 21114
- "\u8EA2\uBCFD\u0000\uE0A2\u8EA2\uBCFE\u8EA2\uBDA2\u0000\uE0A3" + // 21115 - 21119
- "\u0000\uE0A1\u8EA2\uBDA1\u0000\uF3F1\u8EA2\uDDA2\u0000\u0000" + // 21120 - 21124
- "\u8EA2\uDDAD\u0000\uF3F3\u8EA2\uDDB4\u0000\u0000\u8EA2\uDDA9" + // 21125 - 21129
- "\u0000\u0000\u8EA2\uDDA4\u0000\u0000\u0000\u0000\u8EA2\uDDB5" + // 21130 - 21134
- "\u8EA2\uDCFE\u8EA2\uDDAB\u0000\u0000\u0000\uF3FA\u8EA2\uDDB0" + // 21135 - 21139
- "\u8EA2\uDDB6\u8EA2\uDDAA\u0000\uF3F2\u8EA2\uDDAC\u8EA2\uDDA1" + // 21140 - 21144
- "\u0000\uF3F9\u0000\u0000\u0000\u0000\u8EA2\uDDB3\u8EA2\uDDA6" + // 21145 - 21149
- "\u0000\uF3F5\u0000\u0000\u8EA2\uDDA8\u8EA2\uDDA5\u0000\uF3FB" + // 21150 - 21154
- "\u8EA2\uDDA7\u0000\uF3F4\u0000\uF3F7\u8EA2\uDDAF\u8EA2\uDDA3" + // 21155 - 21159
- "\u8EA2\uDDB2\u0000\u0000\u8EA2\uDDAE\u0000\u0000\u0000\u0000" + // 21160 - 21164
- "\u0000\u0000\u0000\uF6CF\u8EA2\uE1F3\u0000\uF6D4\u0000\uF6D5" + // 21165 - 21169
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6CE\u8EA2\uE1F2" + // 21170 - 21174
- "\u0000\u0000\u8EA2\uE1EF\u8EA2\uE1F0\u0000\uF6D2\u8EA2\uE1EA" + // 21175 - 21179
- "\u8EA2\uE1EE\u0000\uF6D1\u0000\u0000\u8EA2\uE1EB\u0000\u0000" + // 21180 - 21184
- "\u0000\u0000\u8EA2\uC1E3\u8EA2\uC1E1\u0000\u0000\u8EA2\uC1DD" + // 21185 - 21189
- "\u0000\uE3AF\u8EA2\uC1DB\u0000\uE3B5\u8EA2\uC1E0\u8EA2\uC1E7" + // 21190 - 21194
- "\u8EA2\uC1DE\u8EA2\uC1E6\u0000\u0000\u0000\u0000\u0000\uE7FC" + // 21195 - 21199
- "\u0000\uE7F9\u0000\u0000\u0000\uE7FA\u0000\u0000\u8EA2\uC9A1" + // 21200 - 21204
- "\u8EA2\uC8F7\u0000\uE7F8\u0000\uE7F5\u8EA2\uC8F8\u0000\u0000" + // 21205 - 21209
- "\u0000\u0000\u0000\uE7F7\u8EA2\uC8FB\u0000\u0000\u8EA2\uC8FD" + // 21210 - 21214
- "\u0000\u0000\u0000\u0000\u8EA2\uC9A6\u0000\u0000\u0000\u0000" + // 21215 - 21219
- "\u8EA2\uC9A5\u8EA2\uC8FE\u0000\uE7F4\u8EA2\uC8F6\u0000\uE7F2" + // 21220 - 21224
- "\u8EA2\uC8F9\u0000\uE7FD\u8EA2\uC8FC\u0000\u0000\u8EA2\uC9A2" + // 21225 - 21229
- "\u0000\uE7F6\u0000\uE7F3\u8EA2\uC9A4\u8EA2\uC9A3\u0000\uE7FB" + // 21230 - 21234
- "\u0000\u0000\u8EA2\uC8FA\u0000\u0000\u0000\uECA3\u8EA2\uCFD4" + // 21235 - 21239
- "\u0000\u0000\u8EA2\uCFD1\u0000\uECA4\u0000\u0000\u0000\uECA2" + // 21240 - 21244
- "\u0000\u0000\u8EA2\uCFD8\u8EA2\uCFD5\u8EA2\uCFCE\u8EA2\uD1A8" + // 21245 - 21249
- "\u8EA2\uD7D9\u0000\u0000\u0000\u0000\u0000\uF0FA\u0000\u0000" + // 21250 - 21254
- "\u8EA2\uD7E8\u0000\uF0FE\u0000\uF1A3\u8EA2\uD7CB\u0000\u0000" + // 21255 - 21259
- "\u0000\uF0FD\u0000\u0000\u8EA2\uD7E6\u8EA2\uD7E7\u8EA2\uD7DD" + // 21260 - 21264
- "\u8EA2\uD7DC\u8EA2\uD7D4\u0000\u0000\u0000\u0000\u8EA2\uD7DE" + // 21265 - 21269
- "\u8EA2\uD7E5\u8EA2\uD7E4\u0000\u0000\u0000\uF0F8\u0000\uF0F6" + // 21270 - 21274
- "\u8EA2\uD7D6\u8EA2\uD7D3\u0000\u0000\u8EA2\uD7D0\u8EA2\uD7E3" + // 21275 - 21279
- "\u0000\uF1A2\u8EA2\uD7E1\u0000\uF0FC\u0000\uF0FB\u0000\u0000" + // 21280 - 21284
- "\u8EA2\uD7DB\u0000\u0000\u8EA2\uD7CA\u8EA2\uD7CC\u8EA2\uD7CE" + // 21285 - 21289
- "\u8EA2\uD7E0\u8EA2\uD7DA\u0000\uF0F7\u0000\u0000\u8EA2\uD7D1" + // 21290 - 21294
- "\u0000\u0000\u8EA2\uD7DF\u0000\u0000\u0000\u0000\u0000\u0000" + // 21295 - 21299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7D2\u0000\u0000" + // 21300 - 21304
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21305 - 21309
- "\u0000\u0000\u0000\uF3F8\u8EA2\uDDB1\u8EA2\uD0F1\u0000\uEDB8" + // 21310 - 21314
- "\u0000\uEDC0\u0000\u0000\u8EA2\uD1B0\u0000\uEDC1\u8EA2\uD0F2" + // 21315 - 21319
- "\u8EA2\uD1B6\u8EA2\uD1A9\u8EA2\uD1AF\u0000\uEDBE\u0000\u0000" + // 21320 - 21324
- "\u0000\u0000\u8EA2\uD1AC\u0000\u0000\u8EA2\uD1B3\u0000\u0000" + // 21325 - 21329
- "\u0000\uEDC3\u0000\u0000\u0000\uEDBD\u8EA2\uD1A5\u8EA2\uD0F6" + // 21330 - 21334
- "\u8EA2\uD1B8\u8EA2\uD0F3\u8EA2\uD1B1\u0000\uEDBA\u0000\u0000" + // 21335 - 21339
- "\u8EA2\uD0FD\u0000\u0000\u8EA2\uD0FE\u0000\uEDB9\u0000\uEDB6" + // 21340 - 21344
- "\u8EA2\uD0F9\u0000\uEDBC\u0000\u0000\u0000\uEDB5\u0000\u0000" + // 21345 - 21349
- "\u8EA2\uD1B2\u8EA2\uD1B5\u8EA2\uD1A2\u8EA2\uD7D5\u0000\u0000" + // 21350 - 21354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21355 - 21359
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7CD\u0000\u0000" + // 21360 - 21364
- "\u8EA2\uD7C9\u0000\uF1A1\u0000\u0000\u0000\u0000\u0000\uF0F4" + // 21365 - 21369
- "\u0000\uF0F9\u0000\uF0F5\u8EA2\uD7D7\u8EA2\uD7E2\u0000\uF0F3" + // 21370 - 21374
- "\u8EA2\uD7CF\u8EA2\uD7D8\u8EA2\uC3E8\u8EA2\uC3ED\u8EA2\uC3D9" + // 21375 - 21379
- "\u0000\u0000\u8EA2\uC3EA\u8EA2\uC3D6\u0000\u0000\u0000\u0000" + // 21380 - 21384
- "\u8EA2\uC3DD\u8EA2\uC3DE\u0000\uE4CE\u8EA2\uC3F1\u8EA2\uC3EF" + // 21385 - 21389
- "\u0000\u0000\u8EA2\uC3D2\u8EA2\uC3F4\u0000\u0000\u8EA2\uC3F5" + // 21390 - 21394
- "\u8EA2\uC3F7\u0000\uE4D2\u0000\uE4CA\u0000\u0000\u8EA2\uB5FA" + // 21395 - 21399
- "\u8EA2\uC3DA\u8EA2\uC3EC\u8EA2\uC3DB\u0000\uE4C7\u0000\uE4D7" + // 21400 - 21404
- "\u8EA2\uC3F3\u0000\uE4D5\u0000\uE4D1\u8EA2\uC3D0\u0000\uE4C9" + // 21405 - 21409
- "\u0000\u0000\u8EA2\uC3D3\u0000\uE4D6\u0000\u0000\u8EA2\uC3E3" + // 21410 - 21414
- "\u8EA2\uC3CF\u0000\u0000\u0000\uE4CF\u8EA2\uC3E7\u8EA2\uC3D7" + // 21415 - 21419
- "\u0000\uE4D0\u8EA2\uC3E0\u0000\uE4C6\u0000\uDFFD\u8EA2\uC3E9" + // 21420 - 21424
- "\u8EA2\uBCE2\u8EA2\uC3D4\u0000\u0000\u0000\u0000\u8EA2\uC3EE" + // 21425 - 21429
- "\u0000\uE4CB\u8EA2\uC3EB\u0000\uE4C8\u8EA2\uC3E5\u0000\uE4D3" + // 21430 - 21434
- "\u8EA2\uC3DC\u8EA2\uC3F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21435 - 21439
- "\u0000\u0000\u8EA2\uE6C5\u0000\u0000\u0000\uF8E5\u8EA2\uE6C6" + // 21440 - 21444
- "\u8EA2\uEDF1\u0000\uFCE5\u8EA2\uF0C8\u0000\uC8D0\u0000\uCFAE" + // 21445 - 21449
- "\u0000\uCFAD\u8EA2\uACF0\u0000\uD3A1\u0000\u0000\u0000\u0000" + // 21450 - 21454
- "\u8EA2\uACEF\u8EA2\uB2A6\u0000\u0000\u0000\uD7CF\u8EA2\uB8B7" + // 21455 - 21459
- "\u8EA2\uB2A5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCE1" + // 21460 - 21464
- "\u8EA2\uB8BA\u8EA2\uB8B8\u8EA2\uB8B9\u0000\uDCE0\u0000\u0000" + // 21465 - 21469
- "\u8EA2\uBFA7\u8EA2\uBFA8\u8EA2\uBFA6\u0000\u0000\u0000\uE5FA" + // 21470 - 21474
- "\u8EA2\uC6B4\u8EA2\uC6B3\u8EA2\uC6B5\u0000\uE5F9\u0000\uE5F8" + // 21475 - 21479
- "\u0000\u0000\u0000\u0000\u8EA2\uD2FA\u8EA2\uD2FC\u0000\u0000" + // 21480 - 21484
- "\u0000\uEEC9\u8EA2\uD2FB\u8EA2\uD9CF\u0000\uF1F2\u8EA2\uE2E5" + // 21485 - 21489
- "\u0000\u0000\u8EA2\uE2E4\u0000\uF8E6\u8EA2\uE6C7\u0000\uF8E8" + // 21490 - 21494
- "\u0000\uF8E7\u8EA2\uE9DD\u8EA2\uEBFC\u0000\uFAFE\u0000\uC8D1" + // 21495 - 21499
- "\u8EA2\uACF1\u0000\uD3A2\u8EA2\uB6AB\u0000\uDBAD\u0000\uDBC2" + // 21500 - 21504
- "\u0000\uDBB8\u0000\u0000\u0000\uDBBC\u0000\uDBBB\u8EA2\uB5F3" + // 21505 - 21509
- "\u0000\u0000\u8EA2\uB6B2\u8EA2\uB6B8\u8EA2\uB6B0\u8EA2\uB6B7" + // 21510 - 21514
- "\u0000\u0000\u0000\u0000\u8EA2\uB6A4\u8EA2\uB5F4\u8EA2\uB6B6" + // 21515 - 21519
- "\u8EA2\uB6A6\u0000\uDBB0\u0000\uDBBD\u0000\u0000\u8EA2\uB6AF" + // 21520 - 21524
- "\u0000\uDBB6\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB6AE" + // 21525 - 21529
- "\u8EA2\uB5F5\u0000\uDBBE\u0000\u0000\u0000\uDBC0\u8EA2\uB6B1" + // 21530 - 21534
- "\u0000\uDBC1\u0000\uDBAF\u8EA2\uB5FC\u8EA2\uB6B3\u0000\u0000" + // 21535 - 21539
- "\u0000\u0000\u0000\uDBB5\u0000\uDBBF\u8EA2\uB5FE\u8EA2\uB6AA" + // 21540 - 21544
- "\u8EA2\uB5F9\u8EA2\uB5FD\u0000\uDBBA\u8EA2\uB5F8\u0000\uDBAE" + // 21545 - 21549
- "\u0000\uDBB7\u0000\uDBB4\u8EA2\uB6A3\u0000\uD6A2\u8EA2\uBCE3" + // 21550 - 21554
- "\u0000\uDBB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21555 - 21559
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21560 - 21564
- "\u0000\u0000\u8EA2\uA3E7\u0000\u0000\u8EA2\uA3E2\u8EA2\uA3E4" + // 21565 - 21569
- "\u8EA2\uA3E6\u8EA2\uA3E3\u0000\uCAA6\u8EA2\uA3E0\u0000\u0000" + // 21570 - 21574
- "\u8EA2\uA3E1\u0000\uCAA3\u0000\uCAA4\u8EA2\uA3E5\u8EA2\uA3E8" + // 21575 - 21579
- "\u0000\uCAA5\u8EA2\uA3E9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21580 - 21584
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6C9" + // 21585 - 21589
- "\u0000\u0000\u8EA2\uA6C3\u8EA2\uA6BE\u0000\uCDA5\u8EA2\uA6C6" + // 21590 - 21594
- "\u8EA2\uA6C4\u8EA2\uA6BD\u8EA2\uA6CA\u8EA2\uA6CD\u8EA2\uA6C8" + // 21595 - 21599
- "\u8EA2\uA6C1\u0000\uCDA7\u8EA2\uA6C7\u0000\uCDA8\u8EA2\uA6C2" + // 21600 - 21604
- "\u8EA2\uA6C5\u8EA2\uA6BC\u8EA2\uA6C0\u8EA2\uA6CC\u0000\uCDA9" + // 21605 - 21609
- "\u0000\u0000\u0000\uCDAA\u0000\u0000\u8EA2\uA6BF\u8EA2\uA6CB" + // 21610 - 21614
- "\u0000\uCDA4\u0000\uCDA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 21615 - 21619
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1F8" + // 21620 - 21624
- "\u0000\uA1F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21625 - 21629
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21630 - 21634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21635 - 21639
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21640 - 21644
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21645 - 21649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21650 - 21654
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21655 - 21659
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21660 - 21664
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21665 - 21669
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21670 - 21674
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21675 - 21679
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC7\u0000\u0000" + // 21680 - 21684
- "\u8EA2\uB9D0\u0000\u0000\u8EA2\uB9D1\u8EA2\uC7D8\u8EA2\uCEB8" + // 21685 - 21689
- "\u8EA2\uD4CE\u0000\uF5D1\u0000\uD6A9\u0000\uD6B0\u0000\uD5FD" + // 21690 - 21694
- "\u0000\uD6AB\u8EA2\uAFEB\u0000\uD6AD\u0000\uD5FA\u0000\u0000" + // 21695 - 21699
- "\u0000\uD5F9\u8EA2\uAFDD\u0000\u0000\u8EA2\uAFE1\u0000\uD6A4" + // 21700 - 21704
- "\u8EA2\uAFF3\u8EA2\uAFEA\u8EA2\uAFE2\u0000\uD6A8\u0000\uD6A5" + // 21705 - 21709
- "\u0000\u0000\u0000\uD5FB\u0000\uD5FE\u0000\u0000\u0000\u0000" + // 21710 - 21714
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21715 - 21719
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21720 - 21724
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21725 - 21729
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21730 - 21734
- "\u8EA2\uB6A8\u0000\u0000\u8EA2\uB5F6\u8EA2\uB5F7\u8EA2\uB5FB" + // 21735 - 21739
- "\u0000\u0000\u8EA2\uB6AC\u8EA2\uB6A9\u0000\u0000\u8EA2\uB6A2" + // 21740 - 21744
- "\u8EA2\uB6A1\u0000\uDBB3\u8EA2\uB6A5\u8EA2\uB6B4\u8EA2\uB5F2" + // 21745 - 21749
- "\u0000\u0000\u8EA2\uB6B5\u8EA2\uB6A7\u8EA2\uB6B9\u8EA2\uB6AD" + // 21750 - 21754
- "\u0000\uDBB2\u8EA2\uABA6\u8EA2\uAAFC\u8EA2\uABB3\u8EA2\uABC3" + // 21755 - 21759
- "\u0000\uD1E3\u8EA2\uABA8\u8EA2\uABBA\u0000\u0000\u8EA2\uAAFE" + // 21760 - 21764
- "\u8EA2\uABC1\u8EA2\uABC2\u8EA2\uABC5\u8EA2\uABBC\u8EA2\uABAD" + // 21765 - 21769
- "\u8EA2\uABB5\u0000\uD1E9\u0000\uD1DC\u0000\uD1E4\u0000\uD1F0" + // 21770 - 21774
- "\u0000\uD1D9\u0000\uD1DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 21775 - 21779
- "\u8EA2\uABA5\u0000\uD1ED\u0000\uD1E6\u8EA2\uABBF\u8EA2\uABA2" + // 21780 - 21784
- "\u0000\uD1EF\u0000\uD1EA\u8EA2\uABAB\u0000\u0000\u0000\u0000" + // 21785 - 21789
- "\u0000\uD1EE\u8EA2\uABB2\u8EA2\uABAA\u0000\uD1E7\u8EA2\uABBE" + // 21790 - 21794
- "\u8EA2\uABB6\u0000\u0000\u0000\uD1E1\u8EA2\uABC4\u8EA2\uABA9" + // 21795 - 21799
- "\u0000\uD1DD\u8EA2\uABBB\u8EA2\uABB1\u0000\uD1E2\u8EA2\uABB7" + // 21800 - 21804
- "\u0000\uD1DA\u8EA2\uAAFD\u0000\uD1EB\u0000\uD6A7\u0000\uD1E0" + // 21805 - 21809
- "\u8EA2\uABB0\u8EA2\uABAF\u8EA2\uABA4\u0000\u0000\u8EA2\uABC0" + // 21810 - 21814
- "\u0000\u0000\u8EA2\uABB9\u0000\u0000\u0000\u0000\u0000\uD1D8" + // 21815 - 21819
- "\u0000\uDEB2\u8EA2\uBCCC\u0000\u0000\u0000\uE4C4\u8EA2\uCAE1" + // 21820 - 21824
- "\u8EA2\uCAE0\u0000\u0000\u0000\u0000\u0000\uC5CC\u0000\uC8B4" + // 21825 - 21829
- "\u8EA2\uA7B3\u0000\uCEA5\u0000\u0000\u0000\uCEA4\u0000\u0000" + // 21830 - 21834
- "\u8EA2\uAAFA\u8EA2\uAAFB\u0000\u0000\u8EA2\uAFD9\u8EA2\uAFDA" + // 21835 - 21839
- "\u0000\uD5F4\u0000\uD5F5\u0000\u0000\u0000\uD5F6\u8EA2\uB5F1" + // 21840 - 21844
- "\u0000\u0000\u0000\u0000\u0000\uDBAC\u0000\u0000\u0000\uDFE7" + // 21845 - 21849
- "\u0000\u0000\u0000\uDFE6\u8EA2\uC3CE\u8EA2\uC6C1\u8EA2\uCAE2" + // 21850 - 21854
- "\u8EA2\uD7C8\u0000\u0000\u0000\u0000\u0000\uF6CD\u0000\uF9F2" + // 21855 - 21859
- "\u0000\uC5CD\u0000\u0000\u0000\uC6DC\u0000\uC6DD\u0000\uC6DB" + // 21860 - 21864
- "\u0000\uC6DE\u0000\uC6DA\u0000\u0000\u0000\u0000\u0000\uC8B7" + // 21865 - 21869
- "\u0000\u0000\u8EA2\uA2D7\u0000\uC8B6\u0000\uC8B8\u0000\u0000" + // 21870 - 21874
- "\u0000\u0000\u8EA2\uA2D2\u8EA2\uA2D1\u8EA2\uA2D4\u8EA2\uA2D3" + // 21875 - 21879
- "\u8EA2\uA2D6\u0000\uC8B5\u8EA2\uA2D0\u8EA2\uA2D5\u8EA2\uD7C0" + // 21880 - 21884
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0F0\u0000\u0000" + // 21885 - 21889
- "\u0000\uF0ED\u0000\uF0F1\u8EA2\uD7BE\u0000\uF0EE\u8EA2\uD7C1" + // 21890 - 21894
- "\u8EA2\uD7C2\u8EA2\uD7C7\u0000\u0000\u0000\u0000\u8EA2\uD7C3" + // 21895 - 21899
- "\u0000\u0000\u0000\u0000\u8EA2\uDCFD\u0000\u0000\u0000\u0000" + // 21900 - 21904
- "\u0000\u0000\u0000\uF3F0\u0000\u0000\u8EA2\uE1E8\u0000\uF3EF" + // 21905 - 21909
- "\u8EA2\uE1E6\u8EA2\uE1E7\u0000\uF6CC\u0000\uF8BB\u8EA2\uE5D6" + // 21910 - 21914
- "\u0000\u0000\u0000\uF8BA\u0000\u0000\u0000\u0000\u8EA2\uE8FD" + // 21915 - 21919
- "\u8EA2\uE8FE\u0000\u0000\u0000\uF9F1\u0000\u0000\u8EA2\uE8FC" + // 21920 - 21924
- "\u0000\uFAEF\u0000\u0000\u8EA2\uEFAE\u0000\uFCBA\u8EA2\uF0B8" + // 21925 - 21929
- "\u8EA2\uF0B9\u0000\u0000\u0000\uC5CB\u0000\u0000\u0000\uC8B2" + // 21930 - 21934
- "\u0000\uC8B3\u0000\uCAD5\u0000\u0000\u8EA2\uA7B2\u0000\uD1D7" + // 21935 - 21939
- "\u0000\uD5F3\u0000\uDBAA\u0000\u0000\u0000\u0000\u0000\uD9B7" + // 21940 - 21944
- "\u0000\u0000\u0000\uDFE4\u0000\uDFE5\u8EA2\uBCC7\u0000\u0000" + // 21945 - 21949
- "\u0000\u0000\u0000\u0000\u0000\uE4C1\u0000\u0000\u8EA2\uC3C5" + // 21950 - 21954
- "\u0000\uE4BE\u0000\uE4BF\u0000\uE4BD\u8EA2\uC3CA\u8EA2\uC3C9" + // 21955 - 21959
- "\u8EA2\uC3C6\u0000\uE4C3\u0000\u0000\u0000\u0000\u8EA2\uC3C8" + // 21960 - 21964
- "\u0000\uDFE0\u0000\u0000\u0000\u0000\u8EA2\uC3CC\u8EA2\uC3C7" + // 21965 - 21969
- "\u0000\uE4C0\u0000\uE4BC\u0000\uE4C2\u8EA2\uC3CB\u0000\u0000" + // 21970 - 21974
- "\u0000\u0000\u0000\u0000\u0000\uE9A5\u0000\u0000\u8EA2\uCADF" + // 21975 - 21979
- "\u8EA2\uCADE\u8EA2\uCADD\u0000\uE9A3\u0000\u0000\u0000\u0000" + // 21980 - 21984
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE9A4\u8EA2\uD0EC" + // 21985 - 21989
- "\u8EA2\uD0EF\u0000\uEDB2\u0000\u0000\u0000\u0000\u0000\uEDB1" + // 21990 - 21994
- "\u8EA2\uD0F0\u8EA2\uD0EB\u0000\uEDB4\u8EA2\uD0ED\u0000\u0000" + // 21995 - 21999
- "\u0000\uEDB3\u8EA2\uD0EA\u0000\u0000\u8EA2\uD0EE\u0000\uF0F2" + // 22000 - 22004
- "\u0000\uF0EF\u8EA2\uD7C6\u8EA2\uD7C5\u0000\u0000\u8EA2\uD7C4" + // 22005 - 22009
- "\u8EA2\uD7BF\u0000\u0000\u8EA2\uC0B4\u0000\uEAF7\u0000\u0000" + // 22010 - 22014
- "\u0000\u0000\u8EA2\uD4AB\u8EA2\uD4B2\u0000\uEEEF\u0000\u0000" + // 22015 - 22019
- "\u8EA2\uD4B6\u0000\uEEF3\u8EA2\uD4AE\u8EA2\uD4AC\u0000\u0000" + // 22020 - 22024
- "\u8EA2\uD4B5\u0000\u0000\u0000\uEEEE\u8EA2\uD4B4\u0000\uEEF0" + // 22025 - 22029
- "\u0000\uEEF1\u8EA2\uD4AD\u0000\uEEF2\u8EA2\uD4B3\u8EA2\uD4AF" + // 22030 - 22034
- "\u8EA2\uD4B0\u8EA2\uD4B1\u0000\uEAFD\u0000\u0000\u0000\u0000" + // 22035 - 22039
- "\u0000\u0000\u8EA2\uDABE\u8EA2\uDACA\u0000\u0000\u0000\uF2B4" + // 22040 - 22044
- "\u8EA2\uDAC5\u8EA2\uDAC7\u0000\u0000\u0000\uF2B2\u8EA2\uDABF" + // 22045 - 22049
- "\u8EA2\uDAC3\u0000\u0000\u8EA2\uDAC6\u0000\uF2B0\u0000\uF2B3" + // 22050 - 22054
- "\u8EA2\uDAC9\u8EA2\uDAC1\u8EA2\uDAC2\u8EA2\uDAC8\u8EA2\uDAC0" + // 22055 - 22059
- "\u8EA2\uDAC4\u0000\uF2B1\u8EA2\uDFC0\u0000\u0000\u8EA2\uDFBF" + // 22060 - 22064
- "\u0000\uF5C2\u8EA2\uDFC5\u0000\uF5C4\u0000\u0000\u0000\u0000" + // 22065 - 22069
- "\u0000\uF5C1\u8EA2\uDFC1\u0000\uF5C5\u8EA2\uDFC2\u0000\u0000" + // 22070 - 22074
- "\u8EA2\uDFC3\u8EA2\uDFC6\u0000\u0000\u0000\uF5C3\u0000\u0000" + // 22075 - 22079
- "\u8EA2\uE3C1\u0000\u0000\u0000\u0000\u8EA2\uE3C4\u0000\u0000" + // 22080 - 22084
- "\u8EA2\uE3BE\u8EA2\uE3C0\u0000\u0000\u0000\u0000\u8EA2\uE3BF" + // 22085 - 22089
- "\u8EA2\uE3C2\u8EA2\uE3C3\u8EA2\uDFC4\u8EA2\uE3BD\u0000\u0000" + // 22090 - 22094
- "\u0000\u0000\u0000\uF8F8\u8EA2\uE6F7\u8EA2\uE6FA\u8EA2\uE6FC" + // 22095 - 22099
- "\u8EA2\uE6F5\u8EA2\uE6F6\u8EA2\uE6F9\u8EA2\uE6FB\u0000\uF8F9" + // 22100 - 22104
- "\u0000\uF8F7\u0000\uF8F6\u8EA2\uE6F8\u8EA2\uE6F4\u8EA2\uE9F6" + // 22105 - 22109
- "\u0000\uFABB\u0000\u0000\u8EA2\uE9F7\u0000\u0000\u0000\u0000" + // 22110 - 22114
- "\u8EA2\uECB8\u0000\uFBA8\u8EA2\uECBA\u0000\uFBA9\u8EA2\uECB7" + // 22115 - 22119
- "\u8EA2\uECB9\u0000\uFBF2\u0000\u0000\u8EA2\uEEA1\u0000\uFBF1" + // 22120 - 22124
- "\u8EA2\uEFCC\u8EA2\uEFCB\u0000\u0000\u8EA2\uEFCA\u0000\u0000" + // 22125 - 22129
- "\u0000\u0000\u8EA2\uF1B7\u8EA2\uF1B8\u8EA2\uF1BA\u8EA2\uF1B9" + // 22130 - 22134
- "\u0000\u0000\u8EA2\uA2F0\u0000\uC8E9\u0000\uCDFD\u0000\u0000" + // 22135 - 22139
- "\u0000\uCDFB\u8EA2\uA7AB\u8EA2\uA7A7\u8EA2\uA7AE\u0000\uCDFA" + // 22140 - 22144
- "\u0000\uCEA3\u8EA2\uA7A9\u8EA2\uA7A5\u0000\uCEA2\u8EA2\uA7AC" + // 22145 - 22149
- "\u0000\uCDF9\u8EA2\uA7AD\u0000\uCDFC\u0000\uCDFE\u8EA2\uA7B1" + // 22150 - 22154
- "\u8EA2\uA7B0\u8EA2\uA7A8\u0000\uCDF8\u0000\uCDF7\u0000\uCEA1" + // 22155 - 22159
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22160 - 22164
- "\u0000\u0000\u8EA2\uAAF0\u8EA2\uAAF6\u0000\u0000\u0000\uD1D3" + // 22165 - 22169
- "\u0000\uD1D0\u8EA2\uAAED\u8EA2\uAAF2\u0000\u0000\u0000\uD1D6" + // 22170 - 22174
- "\u0000\uD1CE\u8EA2\uAAF1\u0000\uD1D1\u0000\uD1D4\u0000\u0000" + // 22175 - 22179
- "\u0000\u0000\u8EA2\uAAF4\u0000\u0000\u0000\uD1CF\u8EA2\uAAF9" + // 22180 - 22184
- "\u0000\uD1D2\u0000\u0000\u0000\uD1D5\u8EA2\uAAEE\u8EA2\uAAF3" + // 22185 - 22189
- "\u8EA2\uAAF7\u8EA2\uAAEF\u8EA2\uAAEC\u0000\u0000\u0000\u0000" + // 22190 - 22194
- "\u8EA2\uAAF8\u8EA2\uAAF5\u0000\u0000\u0000\u0000\u0000\u0000" + // 22195 - 22199
- "\u0000\u0000\u0000\u0000\u8EA2\uBCCF\u0000\uDFED\u8EA2\uBCF7" + // 22200 - 22204
- "\u8EA2\uBCDF\u8EA2\uBCE1\u0000\u0000\u8EA2\uBCEE\u8EA2\uBCED" + // 22205 - 22209
- "\u8EA2\uBCCD\u0000\uDFF8\u0000\uDFFA\u8EA2\uBCD5\u8EA2\uBCDC" + // 22210 - 22214
- "\u8EA2\uBCE4\u0000\uDFF9\u8EA2\uBCDB\u8EA2\uBCE7\u8EA2\uBCFA" + // 22215 - 22219
- "\u0000\u0000\u8EA2\uBCEF\u0000\u0000\u0000\u0000\u0000\u0000" + // 22220 - 22224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C9\u0000\u0000" + // 22225 - 22229
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22230 - 22234
- "\u8EA2\uBCFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22235 - 22239
- "\u8EA2\uBCD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22240 - 22244
- "\u8EA2\uC3F8\u0000\uE4CC\u0000\u0000\u8EA2\uC3F6\u8EA2\uC3E1" + // 22245 - 22249
- "\u8EA2\uC3E6\u8EA2\uC3DF\u0000\u0000\u8EA2\uC3F2\u8EA2\uC3D1" + // 22250 - 22254
- "\u8EA2\uC3D8\u0000\u0000\u8EA2\uC3F0\u8EA2\uC3FA\u8EA2\uC3E2" + // 22255 - 22259
- "\u0000\u0000\u8EA2\uC3D5\u8EA2\uDCFA\u8EA2\uDCF9\u0000\uF3ED" + // 22260 - 22264
- "\u0000\uF3EE\u8EA2\uE5D3\u0000\u0000\u0000\u0000\u0000\uC5C6" + // 22265 - 22269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBCBE" + // 22270 - 22274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD9\u0000\uDFD8" + // 22275 - 22279
- "\u8EA2\uC3C3\u0000\u0000\u8EA2\uE1E4\u0000\uFAEE\u8EA2\uEFAD" + // 22280 - 22284
- "\u0000\uC5C7\u0000\u0000\u0000\uD5E8\u0000\u0000\u0000\uDAFC" + // 22285 - 22289
- "\u0000\uDAFB\u8EA2\uBCBF\u8EA2\uBCC0\u0000\uE4BA\u8EA2\uCADC" + // 22290 - 22294
- "\u0000\uE8FE\u8EA2\uD7BD\u0000\u0000\u0000\uC5C8\u0000\uC6D8" + // 22295 - 22299
- "\u0000\u0000\u0000\uCDF4\u8EA2\uA7A3\u0000\u0000\u8EA2\uAAEA" + // 22300 - 22304
- "\u0000\uD1CB\u0000\uDAFD\u0000\u0000\u8EA2\uBCC1\u0000\uDFDA" + // 22305 - 22309
- "\u0000\uE4BB\u0000\u0000\u8EA2\uD0E8\u8EA2\uD0E9\u0000\u0000" + // 22310 - 22314
- "\u0000\u0000\u8EA2\uDCFB\u0000\uF6CB\u8EA2\uF0FE\u0000\uC5C9" + // 22315 - 22319
- "\u0000\u0000\u8EA2\uA7A4\u0000\uCDF5\u0000\uD1CC\u0000\u0000" + // 22320 - 22324
- "\u8EA2\uAAEB\u0000\uF8B8\u8EA2\uE1E1\u0000\u0000\u8EA2\uE1E2" + // 22325 - 22329
- "\u8EA2\uE1DE\u0000\u0000\u0000\uF6C7\u8EA2\uE5CD\u0000\u0000" + // 22330 - 22334
- "\u8EA2\uE5D0\u0000\u0000\u0000\u0000\u8EA2\uE5D1\u8EA2\uE5CF" + // 22335 - 22339
- "\u8EA2\uE5D2\u0000\uF8B9\u8EA2\uE5CE\u0000\u0000\u0000\u0000" + // 22340 - 22344
- "\u8EA2\uE8FA\u0000\uF9EF\u8EA2\uE8F9\u8EA2\uE8F8\u8EA2\uE8F7" + // 22345 - 22349
- "\u0000\uF9EE\u0000\uF9F0\u0000\u0000\u8EA2\uEBDB\u0000\uFAED" + // 22350 - 22354
- "\u0000\uFAEC\u0000\u0000\u0000\u0000\u8EA2\uEDCF\u8EA2\uEDCE" + // 22355 - 22359
- "\u8EA2\uEDD1\u0000\uFCB7\u0000\uFBE1\u8EA2\uEFAC\u8EA2\uEDD0" + // 22360 - 22364
- "\u0000\u0000\u0000\u0000\u8EA2\uEFAB\u0000\uFCB9\u0000\uFCB8" + // 22365 - 22369
- "\u0000\uFCDF\u8EA2\uF0B7\u8EA2\uF0FD\u0000\uC5C5\u0000\u0000" + // 22370 - 22374
- "\u0000\u0000\u8EA2\uBCB7\u8EA2\uD7BA\u0000\uA7E1\u0000\u0000" + // 22375 - 22379
- "\u0000\uC8AD\u8EA2\uA2CD\u0000\uCAD3\u0000\uCAD1\u0000\u0000" + // 22380 - 22384
- "\u0000\uCAD2\u0000\u0000\u8EA2\uA7A2\u0000\uCDF3\u0000\uD1C9" + // 22385 - 22389
- "\u8EA2\uC3B9\u8EA2\uC3B4\u0000\u0000\u8EA2\uC3A8\u0000\u0000" + // 22390 - 22394
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22395 - 22399
- "\u0000\u0000\u8EA2\uCAD0\u0000\u0000\u8EA2\uCAC1\u8EA2\uCACC" + // 22400 - 22404
- "\u0000\u0000\u8EA2\uCAD3\u0000\uE8F8\u0000\uDFD1\u8EA2\uCAD1" + // 22405 - 22409
- "\u0000\uE8F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8F2" + // 22410 - 22414
- "\u8EA2\uCAD8\u0000\u0000\u8EA2\uCAC2\u8EA2\uCACF\u8EA2\uCAC3" + // 22415 - 22419
- "\u8EA2\uCACE\u0000\uE8F6\u8EA2\uCAD2\u8EA2\uBCA7\u0000\u0000" + // 22420 - 22424
- "\u0000\u0000\u0000\u0000\u8EA2\uCAD9\u8EA2\uCACA\u0000\uE8F9" + // 22425 - 22429
- "\u8EA2\uD0E1\u0000\uECF7\u0000\u0000\u8EA2\uCAD7\u8EA2\uCAD6" + // 22430 - 22434
- "\u0000\uE8FB\u8EA2\uD0D4\u0000\uECF8\u8EA2\uD0D5\u0000\u0000" + // 22435 - 22439
- "\u8EA2\uCAC6\u8EA2\uCAC7\u8EA2\uCAC4\u8EA2\uCAC9\u8EA2\uCAC5" + // 22440 - 22444
- "\u8EA2\uCADA\u0000\uE8F5\u0000\uECF9\u0000\uE8F7\u0000\uE8FC" + // 22445 - 22449
- "\u0000\u0000\u8EA2\uCAC8\u0000\u0000\u8EA2\uCAD4\u0000\uDFC1" + // 22450 - 22454
- "\u0000\u0000\u8EA2\uBCAF\u8EA2\uBBFC\u8EA2\uBCAC\u8EA2\uC2FD" + // 22455 - 22459
- "\u0000\uDFC4\u8EA2\uBCB0\u8EA2\uBCB3\u0000\uDFC3\u8EA2\uBCA1" + // 22460 - 22464
- "\u8EA2\uBCB2\u8EA2\uBCB1\u0000\uDFC5\u8EA2\uBBF8\u0000\uDFC0" + // 22465 - 22469
- "\u0000\uDFC8\u0000\u0000\u0000\uDFC6\u8EA2\uBCAE\u0000\u0000" + // 22470 - 22474
- "\u8EA2\uBCA4\u0000\uDFCA\u8EA2\uBCB5\u8EA2\uBCAD\u8EA2\uBCB6" + // 22475 - 22479
- "\u0000\uDFD2\u0000\uDFD0\u8EA2\uBCAB\u8EA2\uBCAA\u0000\u0000" + // 22480 - 22484
- "\u8EA2\uBCA8\u8EA2\uBCA2\u0000\uDFC9\u0000\u0000\u0000\uDFC7" + // 22485 - 22489
- "\u8EA2\uAFBB\u8EA2\uBBF9\u0000\u0000\u8EA2\uC3BD\u8EA2\uBBFA" + // 22490 - 22494
- "\u0000\uDFC2\u0000\uDFCF\u8EA2\uC3A1\u0000\u0000\u0000\uDFCB" // 22495 - 22499
- ;
-
- index2c =
- "\u0000\uDFCC\u8EA2\uBBFB\u8EA2\uBCB4\u8EA2\uC2FE\u8EA2\uBCA5" + // 22500 - 22504
- "\u8EA2\uBBFE\u0000\uDFCE\u8EA2\uBCA6\u8EA2\uBCA3\u0000\u0000" + // 22505 - 22509
- "\u0000\u0000\u0000\uDFD3\u0000\u0000\u0000\u0000\u0000\u0000" + // 22510 - 22514
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0DA\u8EA2\uB0DB" + // 22515 - 22519
- "\u8EA2\uB0DC\u0000\uD6D3\u0000\u0000\u0000\uD6CF\u8EA2\uB0D1" + // 22520 - 22524
- "\u0000\u0000\u8EA2\uB0D9\u8EA2\uB0DE\u0000\uD6D4\u0000\u0000" + // 22525 - 22529
- "\u8EA2\uB0CF\u8EA2\uB0D5\u8EA2\uB0CE\u8EA2\uB0D8\u0000\u0000" + // 22530 - 22534
- "\u0000\u0000\u8EA2\uB0D4\u0000\uD6D0\u0000\uD6D2\u8EA2\uB0DD" + // 22535 - 22539
- "\u0000\u0000\u8EA2\uB0CD\u8EA2\uB0D0\u8EA2\uB0D6\u0000\u0000" + // 22540 - 22544
- "\u8EA2\uB0D7\u8EA2\uB0DF\u8EA2\uB0D3\u0000\u0000\u0000\uD6D1" + // 22545 - 22549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22550 - 22554
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22555 - 22559
- "\u0000\uDBF2\u8EA2\uB6F1\u0000\u0000\u0000\u0000\u8EA2\uB6F3" + // 22560 - 22564
- "\u8EA2\uB6EF\u0000\u0000\u8EA2\uB6FB\u8EA2\uB6ED\u8EA2\uB6FA" + // 22565 - 22569
- "\u0000\uDBEE\u8EA2\uB6EB\u8EA2\uBDDF\u8EA2\uB6F5\u0000\uDBF1" + // 22570 - 22574
- "\u0000\u0000\u8EA2\uB6F6\u0000\uDAEC\u8EA2\uB5E5\u8EA2\uB5CD" + // 22575 - 22579
- "\u0000\uDAE1\u0000\uDAE5\u8EA2\uB5E4\u0000\u0000\u8EA2\uB5D7" + // 22580 - 22584
- "\u0000\uDAE6\u0000\uDAE0\u8EA2\uB5CC\u0000\u0000\u0000\uDFBF" + // 22585 - 22589
- "\u8EA2\uB5E7\u8EA2\uB5D5\u0000\uDAEB\u8EA2\uB5D8\u8EA2\uB5E6" + // 22590 - 22594
- "\u0000\uDAEA\u0000\u0000\u8EA2\uBBF5\u0000\u0000\u0000\uDAD7" + // 22595 - 22599
- "\u8EA2\uB5D3\u0000\uDADC\u0000\uDAE7\u0000\u0000\u0000\uDAE2" + // 22600 - 22604
- "\u8EA2\uB5DC\u8EA2\uB5D2\u8EA2\uB5D0\u8EA2\uB5E2\u0000\uDAD4" + // 22605 - 22609
- "\u0000\uDAE8\u0000\uDAD8\u0000\uDFBE\u8EA2\uB5E0\u0000\uDAD9" + // 22610 - 22614
- "\u0000\u0000\u0000\uDAD5\u0000\uDAE4\u0000\uDADF\u0000\uDADD" + // 22615 - 22619
- "\u8EA2\uB5D4\u0000\uDAE9\u8EA2\uB5D1\u8EA2\uB5DE\u8EA2\uB5DA" + // 22620 - 22624
- "\u8EA2\uBBF7\u8EA2\uBBF6\u0000\u0000\u0000\u0000\u0000\u0000" + // 22625 - 22629
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22630 - 22634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5CF\u8EA2\uBCA9" + // 22635 - 22639
- "\u0000\u0000\u8EA2\uDAAF\u0000\uEEE1\u0000\uF2AA\u8EA2\uDAB9" + // 22640 - 22644
- "\u8EA2\uDAB5\u0000\u0000\u8EA2\uDAB3\u8EA2\uDAAE\u8EA2\uDABD" + // 22645 - 22649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2AE\u0000\u0000" + // 22650 - 22654
- "\u8EA2\uDAAA\u8EA2\uDAB6\u8EA2\uDAB7\u8EA2\uDAAD\u8EA2\uDAAC" + // 22655 - 22659
- "\u8EA2\uDABA\u0000\u0000\u8EA2\uDAB0\u8EA2\uDAAB\u8EA2\uDAB1" + // 22660 - 22664
- "\u0000\u0000\u8EA2\uDABC\u8EA2\uDAA9\u8EA2\uDABB\u8EA2\uDAB8" + // 22665 - 22669
- "\u0000\uF2AC\u0000\uF2AB\u0000\u0000\u0000\u0000\u0000\uF2AD" + // 22670 - 22674
- "\u8EA2\uDAB4\u8EA2\uDAA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 22675 - 22679
- "\u0000\u0000\u0000\u0000\u8EA2\uDFA7\u0000\uF5BC\u8EA2\uDFAB" + // 22680 - 22684
- "\u8EA2\uDFA8\u8EA2\uDFAF\u8EA2\uDFB5\u8EA2\uDFAA\u0000\u0000" + // 22685 - 22689
- "\u8EA2\uDFBE\u0000\uF5B9\u8EA2\uDFB8\u8EA2\uDFAD\u8EA2\uDFB9" + // 22690 - 22694
- "\u8EA2\uDFB4\u8EA2\uDFBB\u8EA2\uDFAC\u0000\uF5BE\u0000\uF5BD" + // 22695 - 22699
- "\u8EA2\uDFAE\u8EA2\uDFBC\u8EA2\uDFA6\u8EA2\uDFBA\u8EA2\uAFCD" + // 22700 - 22704
- "\u8EA2\uAFC1\u0000\uD5DA\u8EA2\uAFBA\u8EA2\uAFB7\u8EA2\uAFB8" + // 22705 - 22709
- "\u0000\uD5DB\u8EA2\uAFC7\u8EA2\uAFCE\u0000\uD5DD\u8EA2\uAFBE" + // 22710 - 22714
- "\u8EA2\uAFBD\u0000\uD5E5\u0000\uD5E4\u0000\uD5D6\u0000\uD5DC" + // 22715 - 22719
- "\u0000\uD5DF\u8EA2\uAFCA\u0000\u0000\u0000\u0000\u8EA2\uAFC4" + // 22720 - 22724
- "\u0000\uD5D9\u8EA2\uAFB5\u8EA2\uAFCC\u8EA2\uAFC3\u8EA2\uAFC5" + // 22725 - 22729
- "\u8EA2\uAFC9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22730 - 22734
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22735 - 22739
- "\u0000\u0000\u8EA2\uB5CB\u0000\u0000\u0000\uDADB\u0000\uDAEF" + // 22740 - 22744
- "\u0000\uDAEE\u0000\u0000\u0000\uDAE3\u0000\u0000\u8EA2\uB5DD" + // 22745 - 22749
- "\u8EA2\uB5D9\u8EA2\uB5D6\u8EA2\uB5E8\u0000\uDADE\u0000\uDAD6" + // 22750 - 22754
- "\u0000\u0000\u0000\u0000\u8EA2\uB5DB\u0000\uDFCD\u0000\uDADA" + // 22755 - 22759
- "\u8EA2\uB5E3\u0000\u0000\u0000\uDAF0\u0000\uDAED\u8EA2\uB5DF" + // 22760 - 22764
- "\u8EA2\uB5CE\u0000\u0000\u0000\u0000\u8EAD\uA1D3\u8EAD\uA1D4" + // 22765 - 22769
- "\u8EAD\uA1D5\u8EAD\uA1D6\u8EAD\uA1D7\u8EAD\uA1D8\u8EAD\uA1D9" + // 22770 - 22774
- "\u8EAD\uA1DA\u8EAD\uA1DB\u8EAD\uA1DC\u8EAD\uA1DD\u8EAD\uA1DE" + // 22775 - 22779
- "\u8EAD\uA1DF\u8EAD\uA1E0\u8EAD\uA1E1\u8EAD\uA1E2\u8EAD\uA1E3" + // 22780 - 22784
- "\u8EAD\uA1E4\u8EAD\uA1E5\u8EAD\uA1E6\u8EAD\uA1E7\u8EAD\uA1E8" + // 22785 - 22789
- "\u8EAD\uA1E9\u8EAD\uA1EA\u8EAD\uA1EB\u8EAD\uA1EC\u8EAD\uA1ED" + // 22790 - 22794
- "\u8EAD\uA1EE\u8EAD\uA1EF\u8EAD\uA1F0\u8EAD\uA1F1\u8EAD\uA1F2" + // 22795 - 22799
- "\u8EAD\uA1F3\u8EAD\uA1F4\u8EAD\uA1F5\u8EAD\uA1F6\u8EAD\uA1F7" + // 22800 - 22804
- "\u8EAD\uA1F8\u8EAD\uA1F9\u8EAD\uA1FA\u8EAD\uA1FB\u8EAD\uA1FC" + // 22805 - 22809
- "\u8EAD\uA1FD\u8EAD\uA1FE\u8EAD\uA2A1\u8EAD\uA2A2\u8EAD\uA2A3" + // 22810 - 22814
- "\u8EAD\uA2A4\u8EAD\uA2A5\u8EAD\uA2A6\u8EAD\uA2A7\u8EAD\uA2A8" + // 22815 - 22819
- "\u8EAD\uA2A9\u8EAD\uA2AA\u8EAD\uA2AB\u8EAD\uA2AC\u8EAD\uA2AD" + // 22820 - 22824
- "\u8EAD\uA2AE\u8EAD\uA2AF\u8EAD\uA2B0\u8EAD\uA2B1\u8EAD\uA2B2" + // 22825 - 22829
- "\u8EAD\uA2B3\u8EA2\uAAE1\u0000\uD1BD\u0000\uD1C8\u8EA2\uAADA" + // 22830 - 22834
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD1C0\u0000\uD5D4" + // 22835 - 22839
- "\u0000\uD1BA\u0000\u0000\u8EA2\uAAD7\u8EA2\uAADE\u8EA2\uAAD6" + // 22840 - 22844
- "\u8EA2\uAAD9\u8EA2\uAADD\u8EA2\uAFB4\u0000\uD1C7\u0000\u0000" + // 22845 - 22849
- "\u8EA2\uAAE2\u8EA2\uAAE3\u8EA2\uAAE5\u0000\uD1B9\u0000\u0000" + // 22850 - 22854
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22855 - 22859
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22860 - 22864
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22865 - 22869
- "\u0000\u0000\u0000\uD5E3\u8EA2\uAFC0\u0000\uD5E1\u0000\uD5E2" + // 22870 - 22874
- "\u8EA2\uAFB6\u8EA2\uAFC6\u0000\u0000\u0000\uD5D8\u0000\u0000" + // 22875 - 22879
- "\u0000\u0000\u8EA2\uB5CA\u8EA2\uAFC8\u8EA2\uAFC2\u0000\u0000" + // 22880 - 22884
- "\u8EA2\uAFB9\u0000\u0000\u8EA2\uAFCB\u8EA2\uAFBC\u0000\uD5DE" + // 22885 - 22889
- "\u8EA2\uB5E1\u8EA2\uAFBF\u0000\uD5E0\u0000\uD5D7\u0000\u0000" + // 22890 - 22894
- "\u8EA2\uBFD2\u0000\u0000\u0000\uE1D7\u0000\uE1EB\u0000\u0000" + // 22895 - 22899
- "\u8EA2\uBFE1\u0000\uE1ED\u0000\u0000\u8EA2\uBFDD\u0000\uE1E2" + // 22900 - 22904
- "\u0000\uE1DC\u0000\uE1E4\u0000\uE1D9\u0000\uE1EA\u8EA2\uBFDE" + // 22905 - 22909
- "\u8EA2\uBFCC\u8EA2\uBFE0\u8EA2\uBFC7\u8EA2\uBFE9\u0000\u0000" + // 22910 - 22914
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22915 - 22919
- "\u0000\u0000\u8EA2\uBFF2\u0000\u0000\u0000\u0000\u0000\u0000" + // 22920 - 22924
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFC4" + // 22925 - 22929
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22930 - 22934
- "\u8EA2\uC6EC\u0000\u0000\u8EA2\uC7A4\u0000\uE5DC\u8EA2\uC6F1" + // 22935 - 22939
- "\u0000\u0000\u8EA2\uC6EF\u8EA2\uC6DA\u0000\uE6B0\u8EA2\uC6EA" + // 22940 - 22944
- "\u8EA2\uC6FE\u8EA2\uC6E6\u0000\uE6B8\u8EA2\uC6FD\u8EA2\uC6E4" + // 22945 - 22949
- "\u0000\uE1E9\u8EA2\uC6F4\u8EA2\uC6E5\u8EA2\uC6FB\u0000\uE6B7" + // 22950 - 22954
- "\u0000\uE6AF\u0000\u0000\u8EA2\uC6CF\u0000\uCAC0\u8EA2\uA4B3" + // 22955 - 22959
- "\u0000\u0000\u8EA2\uA4A9\u0000\uCABD\u0000\u0000\u0000\uCAD0" + // 22960 - 22964
- "\u8EA2\uA4AE\u8EA2\uA4B4\u0000\uCAC2\u0000\uCAC4\u0000\u0000" + // 22965 - 22969
- "\u8EA2\uA4AA\u0000\u0000\u8EA2\uA4AB\u8EA2\uA4AC\u0000\u0000" + // 22970 - 22974
- "\u0000\uCACF\u0000\uCAC9\u0000\uCACE\u8EA2\uA4AD\u0000\uCACD" + // 22975 - 22979
- "\u0000\uCABF\u0000\uCABE\u0000\uCACB\u0000\u0000\u0000\u0000" + // 22980 - 22984
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22985 - 22989
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22990 - 22994
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDE3\u8EA2\uA6FD" + // 22995 - 22999
- "\u8EA2\uA6F6\u0000\uCDDE\u0000\uCDF1\u8EA2\uA6F2\u8EA2\uA6F9" + // 23000 - 23004
- "\u8EA2\uA6FB\u8EA2\uA6FE\u0000\uCDEC\u0000\u0000\u8EA2\uA6FA" + // 23005 - 23009
- "\u8EA2\uA6F3\u0000\uCDEA\u8EA2\uA6F7\u0000\u0000\u8EA2\uA7A1" + // 23010 - 23014
- "\u0000\uCDDB\u0000\u0000\u8EA2\uA6FC\u0000\uCDE5\u0000\uCDE4" + // 23015 - 23019
- "\u8EA2\uA6F5\u0000\uCDD9\u0000\uCDD4\u0000\uD1B7\u8EA2\uAAD3" + // 23020 - 23024
- "\u8EA2\uAAD4\u0000\u0000\u0000\u0000\u8EA2\uAFB2\u0000\uD5D2" + // 23025 - 23029
- "\u0000\uDAD3\u0000\uDFBD\u8EA2\uBBF4\u0000\uC5C3\u0000\u0000" + // 23030 - 23034
- "\u0000\uC4DF\u0000\uC5C4\u0000\u0000\u8EA2\uA1DE\u0000\uC6D7" + // 23035 - 23039
- "\u0000\uC6D6\u0000\uC6D4\u0000\uC6D5\u0000\u0000\u0000\u0000" + // 23040 - 23044
- "\u0000\u0000\u0000\uC8AC\u8EA2\uA2C9\u8EA2\uA2CB\u0000\uC8AB" + // 23045 - 23049
- "\u8EA2\uA2C3\u0000\u0000\u8EA2\uA2C4\u0000\u0000\u8EA2\uA2CA" + // 23050 - 23054
- "\u8EA2\uA2C6\u8EA2\uA2C8\u0000\uC8AA\u8EA2\uA2C5\u8EA2\uA2CC" + // 23055 - 23059
- "\u8EA2\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23060 - 23064
- "\u0000\u0000\u0000\u0000\u0000\uCAC3\u0000\uCACC\u0000\uCACA" + // 23065 - 23069
- "\u8EA2\uA4B2\u8EA2\uA4AF\u8EA2\uA4B7\u0000\uCAC8\u8EA2\uA4B8" + // 23070 - 23074
- "\u0000\u0000\u0000\uCAC1\u8EA2\uA4B5\u0000\u0000\u0000\uCAC7" + // 23075 - 23079
- "\u8EA2\uA4B1\u8EA2\uA4B0\u0000\uCAC5\u8EA2\uA4B6\u0000\uCAC6" + // 23080 - 23084
- "\u0000\uCDD5\u0000\uFCB6\u8EA2\uEFA8\u0000\u0000\u8EA2\uEFA9" + // 23085 - 23089
- "\u8EA2\uEFAA\u0000\u0000\u0000\u0000\u8EA2\uF2AA\u0000\uC5C1" + // 23090 - 23094
- "\u8EA2\uA1DD\u0000\uC6D3\u0000\u0000\u0000\uC8A7\u0000\uC8A8" + // 23095 - 23099
- "\u0000\uC8A6\u0000\u0000\u0000\uC8A9\u0000\uCABC\u0000\uCABB" + // 23100 - 23104
- "\u0000\u0000\u8EA2\uA6F0\u0000\uCDD1\u0000\uCDD0\u0000\u0000" + // 23105 - 23109
- "\u0000\u0000\u8EA2\uAFB1\u0000\uDAD1\u0000\uDAD2\u0000\u0000" + // 23110 - 23114
- "\u0000\u0000\u0000\u0000\u0000\uDFBC\u8EA2\uC2F8\u0000\uE4A8" + // 23115 - 23119
- "\u0000\uE4A9\u8EA2\uC2FA\u8EA2\uC2FC\u8EA2\uC2FB\u0000\u0000" + // 23120 - 23124
- "\u8EA2\uCABE\u0000\u0000\u8EA2\uCABD\u0000\uE8F0\u8EA2\uCABF" + // 23125 - 23129
- "\u0000\u0000\u8EA2\uD0D3\u0000\uECF6\u0000\u0000\u0000\uF0DD" + // 23130 - 23134
- "\u0000\u0000\u0000\uF3E1\u0000\uF6C3\u0000\uF3E2\u0000\u0000" + // 23135 - 23139
- "\u0000\uC5C2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4A8" + // 23140 - 23144
- "\u0000\u0000\u0000\u0000\u8EA2\uA6F1\u0000\uCDD3\u0000\uCDD2" + // 23145 - 23149
- "\u8EA2\uCAB3\u0000\u0000\u0000\uECE8\u8EA2\uD0C2\u0000\u0000" + // 23150 - 23154
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD0C7" + // 23155 - 23159
- "\u0000\uF0D7\u8EA2\uD0C1\u8EA2\uD7AE\u8EA2\uD0D0\u0000\uECF0" + // 23160 - 23164
- "\u0000\u0000\u0000\uECEE\u0000\uF0D5\u8EA2\uD0CD\u8EA2\uD0C9" + // 23165 - 23169
- "\u0000\uECF4\u0000\u0000\u8EA2\uD7A5\u0000\u0000\u0000\u0000" + // 23170 - 23174
- "\u0000\u0000\u0000\uECF2\u8EA2\uD0C8\u0000\u0000\u8EA2\uD7A3" + // 23175 - 23179
- "\u0000\u0000\u8EA2\uD0CC\u0000\u0000\u8EA2\uD0CF\u8EA2\uD0C6" + // 23180 - 23184
- "\u0000\u0000\u0000\uECF3\u0000\u0000\u0000\u0000\u0000\uECED" + // 23185 - 23189
- "\u8EA2\uD7A4\u0000\uF0D6\u8EA2\uD0CE\u0000\uECEF\u0000\uECF1" + // 23190 - 23194
- "\u8EA2\uD0CB\u0000\uECF5\u8EA2\uD0CA\u8EA2\uD0C5\u8EA2\uD0C4" + // 23195 - 23199
- "\u0000\uF0D4\u8EA2\uD0D2\u8EA2\uD7A7\u8EA2\uDCEB\u0000\uF0D9" + // 23200 - 23204
- "\u0000\u0000\u8EA2\uD7AD\u0000\u0000\u8EA2\uD7AB\u0000\u0000" + // 23205 - 23209
- "\u8EA2\uDCEC\u0000\u0000\u0000\uF0DA\u8EA2\uD7AC\u8EA2\uC2F7" + // 23210 - 23214
- "\u8EA2\uCAAB\u0000\u0000\u0000\u0000\u0000\uE3FE\u8EA2\uC2EF" + // 23215 - 23219
- "\u8EA2\uC2F3\u0000\uE8E6\u0000\uE3F5\u8EA2\uC2EC\u8EA2\uC2ED" + // 23220 - 23224
- "\u0000\uE8E8\u0000\uE3FD\u0000\uE4A1\u0000\uE3FC\u8EA2\uC2F5" + // 23225 - 23229
- "\u0000\u0000\u0000\u0000\u8EA2\uCAAF\u8EA2\uCAB0\u8EA2\uCAB5" + // 23230 - 23234
- "\u0000\uECE7\u8EA2\uCABC\u0000\u0000\u0000\uE8EE\u0000\u0000" + // 23235 - 23239
- "\u0000\uE8ED\u8EA2\uCAB7\u0000\u0000\u0000\uECE6\u8EA2\uCAAC" + // 23240 - 23244
- "\u0000\uE8EC\u0000\u0000\u8EA2\uCABB\u0000\uE8EA\u0000\uE8EB" + // 23245 - 23249
- "\u0000\u0000\u8EA2\uCAB8\u8EA2\uD0D1\u0000\uECE4\u0000\uDFB5" + // 23250 - 23254
- "\u0000\u0000\u8EA2\uCABA\u0000\uECEB\u8EA2\uCAB2\u0000\u0000" + // 23255 - 23259
- "\u0000\uECE5\u0000\u0000\u0000\uECEA\u8EA2\uCAAD\u8EA2\uCAB1" + // 23260 - 23264
- "\u8EA2\uCAAE\u8EA2\uCAB4\u0000\uE8EF\u0000\uECE3\u0000\uE8E9" + // 23265 - 23269
- "\u0000\u0000\u8EA2\uD0C3\u8EA2\uCAB6\u0000\u0000\u0000\uECE9" + // 23270 - 23274
- "\u0000\u0000\u0000\uECEC\u0000\u0000\u8EA2\uB8E6\u0000\u0000" + // 23275 - 23279
- "\u8EA2\uB8ED\u0000\u0000\u0000\u0000\u0000\uDDA6\u8EA2\uB8FB" + // 23280 - 23284
- "\u8EA2\uB8F6\u0000\uDDA1\u0000\uDCFD\u8EA2\uB8F2\u8EA2\uB8EE" + // 23285 - 23289
- "\u8EA2\uB8E0\u0000\uDCF4\u8EA2\uB8E5\u8EA2\uB8DD\u0000\u0000" + // 23290 - 23294
- "\u0000\uDCFC\u0000\uDCFE\u8EA2\uB8EA\u8EA2\uB8E7\u0000\uDCF9" + // 23295 - 23299
- "\u8EA2\uB8F7\u0000\uDCF6\u8EA2\uB8E8\u8EA2\uBFEA\u8EA2\uB8F0" + // 23300 - 23304
- "\u0000\u0000\u8EA2\uB8EF\u0000\uDCF5\u0000\u0000\u0000\uDDA2" + // 23305 - 23309
- "\u0000\u0000\u0000\uDCF8\u8EA2\uB8DE\u8EA2\uB8E3\u8EA2\uB8F4" + // 23310 - 23314
- "\u8EA2\uB8FA\u0000\uDDA7\u8EA2\uB8DF\u8EA2\uB8EB\u8EA2\uB8F1" + // 23315 - 23319
- "\u0000\uDCFB\u0000\u0000\u0000\u0000\u8EA2\uB8FC\u8EA2\uB8F5" + // 23320 - 23324
- "\u8EA2\uB8F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23325 - 23329
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23330 - 23334
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCFA\u0000\u0000" + // 23335 - 23339
- "\u8EA2\uBFD1\u0000\uDFBA\u0000\uE3FA\u0000\u0000\u8EA2\uBBED" + // 23340 - 23344
- "\u8EA2\uBBF2\u8EA2\uBBE6\u0000\uE4A6\u0000\u0000\u0000\uE3FB" + // 23345 - 23349
- "\u0000\uDFB9\u8EA2\uBBE4\u8EA2\uBBF3\u0000\u0000\u0000\uE4A5" + // 23350 - 23354
- "\u0000\uDFB7\u0000\uE3F4\u8EA2\uBBF0\u0000\u0000\u0000\uDFBB" + // 23355 - 23359
- "\u8EA2\uBBE8\u8EA2\uBBE2\u0000\uDFB1\u8EA2\uBBE5\u0000\u0000" + // 23360 - 23364
- "\u8EA2\uBBEE\u0000\u0000\u0000\uE3F3\u0000\uE3F8\u0000\uDFAE" + // 23365 - 23369
- "\u8EA2\uBBEF\u0000\u0000\u0000\uE3F6\u0000\u0000\u0000\u0000" + // 23370 - 23374
- "\u0000\u0000\u0000\uDFAF\u0000\u0000\u0000\u0000\u0000\u0000" + // 23375 - 23379
- "\u0000\uE4A4\u8EA2\uCAAA\u8EA2\uC2F6\u0000\u0000\u8EA2\uC2EE" + // 23380 - 23384
- "\u8EA2\uCAA9\u0000\u0000\u8EA2\uC2F2\u8EA2\uC2F4\u0000\u0000" + // 23385 - 23389
- "\u0000\u0000\u8EA2\uC2F1\u0000\u0000\u0000\uE4A3\u0000\u0000" + // 23390 - 23394
- "\u8EA2\uC2F0\u0000\uE4A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 23395 - 23399
- "\u8EA2\uCAB9\u0000\u0000\u0000\u0000\u0000\uE4A2\u0000\uE8E7" + // 23400 - 23404
- "\u8EA2\uB5C9\u8EA2\uBBEC\u0000\u0000\u8EA2\uB5C7\u8EA2\uBBE1" + // 23405 - 23409
- "\u0000\uDAC5\u0000\uDACC\u0000\uDAD0\u8EA2\uB5C1\u8EA2\uBBDC" + // 23410 - 23414
- "\u8EA2\uB5C5\u0000\uDAC1\u8EA2\uBBDE\u8EA2\uB5C8\u8EA2\uBBE0" + // 23415 - 23419
- "\u8EA2\uB5BD\u0000\u0000\u0000\uDFA9\u0000\u0000\u8EA2\uB5BB" + // 23420 - 23424
- "\u8EA2\uB5BC\u0000\uDACB\u0000\u0000\u0000\u0000\u0000\uDACA" + // 23425 - 23429
- "\u8EA2\uB5BF\u0000\uDACF\u8EA2\uB5C3\u0000\uDAC8\u8EA2\uB5C0" + // 23430 - 23434
- "\u0000\u0000\u0000\uDACD\u0000\uDFAD\u0000\uDFAA\u8EA2\uBBDF" + // 23435 - 23439
- "\u0000\u0000\u8EA2\uB5BE\u0000\u0000\u0000\uDAC3\u0000\u0000" + // 23440 - 23444
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23445 - 23449
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFB2\u0000\uDFB6" + // 23450 - 23454
- "\u8EA2\uBBE3\u0000\uE3F7\u0000\uDFB4\u8EA2\uBBE7\u0000\uDFB8" + // 23455 - 23459
- "\u8EA2\uC2EB\u8EA2\uBBE9\u0000\uE3F9\u0000\uDFB0\u0000\uDFB3" + // 23460 - 23464
- "\u8EA2\uBBEA\u0000\u0000\u8EA2\uBBEB\u8EA2\uBBF1\u8EA2\uAFA6" + // 23465 - 23469
- "\u8EA2\uAFA8\u0000\u0000\u8EA2\uAFAA\u0000\uD5CA\u0000\uD5D0" + // 23470 - 23474
- "\u8EA2\uB5B7\u8EA2\uAFAE\u8EA2\uAFA5\u0000\uDABE\u8EA2\uB5B5" + // 23475 - 23479
- "\u0000\u0000\u0000\uD5CF\u0000\uD5CD\u8EA2\uAFB0\u0000\u0000" + // 23480 - 23484
- "\u8EA2\uB5B6\u0000\u0000\u8EA2\uAFA7\u0000\u0000\u0000\uD5CE" + // 23485 - 23489
- "\u8EA2\uAFAB\u0000\uD5D1\u8EA2\uAFAD\u0000\u0000\u0000\u0000" + // 23490 - 23494
- "\u0000\uD5CC\u8EA2\uAFAC\u8EA2\uAFAF\u8EA2\uAFA9\u0000\u0000" + // 23495 - 23499
- "\u0000\uD5CB\u0000\uDABF\u0000\u0000\u8EA2\uAFA4\u0000\uDABD" + // 23500 - 23504
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAC0" + // 23505 - 23509
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23510 - 23514
- "\u0000\u0000\u0000\u0000\u8EA2\uB5B9\u8EA2\uB5C2\u0000\uDFAB" + // 23515 - 23519
- "\u0000\u0000\u0000\uDAC2\u0000\uDAC7\u0000\uDFAC\u8EA2\uB5C4" + // 23520 - 23524
- "\u0000\uDACE\u8EA2\uBBDD\u8EA2\uB5BA\u0000\uDAC6\u0000\uDAC9" + // 23525 - 23529
- "\u0000\uDAC4\u8EA2\uB5B8\u8EA2\uB5C6\u8EA2\uAACB\u8EA2\uAFA3" + // 23530 - 23534
- "\u8EA2\uAACC\u0000\uD1B2\u8EA2\uAACF\u8EA2\uAAC5\u0000\uD1B1" + // 23535 - 23539
- "\u8EA2\uAAC7\u0000\u0000\u8EA2\uAAC8\u0000\u0000\u0000\u0000" + // 23540 - 23544
- "\u8EA2\uAACA\u0000\uD1AD\u0000\u0000\u0000\u0000\u0000\uD5C5" + // 23545 - 23549
- "\u0000\u0000\u0000\u0000\u8EA2\uAAC6\u8EA2\uAAC2\u0000\uD5C6" + // 23550 - 23554
- "\u0000\u0000\u0000\u0000\u8EA2\uAAD0\u0000\uD5C2\u8EA2\uAFA1" + // 23555 - 23559
- "\u8EA2\uAAC9\u0000\u0000\u8EA2\uAEFE\u8EA2\uAAC4\u8EA2\uAACD" + // 23560 - 23564
- "\u0000\u0000\u0000\u0000\u0000\uD1B0\u0000\uD5C3\u0000\uD1B6" + // 23565 - 23569
- "\u0000\uD5C4\u8EA2\uAAD1\u8EA2\uAFA2\u0000\uD1AF\u0000\uD5C8" + // 23570 - 23574
- "\u0000\uD1B5\u0000\uD1B4\u0000\uD1B3\u0000\uD5C7\u8EA2\uAAD2" + // 23575 - 23579
- "\u0000\uD5C9\u0000\uD1AE\u0000\u0000\u8EA2\uAAC3\u0000\u0000" + // 23580 - 23584
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23585 - 23589
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23590 - 23594
- "\u0000\u0000\u0000\uDABC\u8EA2\uA4A6\u0000\u0000\u0000\u0000" + // 23595 - 23599
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23600 - 23604
- "\u0000\u0000\u8EA2\uA6EE\u8EA2\uA6E1\u8EA2\uA6DF\u8EA2\uA6ED" + // 23605 - 23609
- "\u8EA2\uA6E8\u0000\uD1AB\u0000\uCDC4\u8EA2\uA6E9\u8EA2\uA6EC" + // 23610 - 23614
- "\u0000\uD1A7\u8EA2\uA6EB\u0000\uCDC5\u0000\uCDCA\u0000\uCDC8" + // 23615 - 23619
- "\u8EA2\uA6E2\u0000\u0000\u8EA2\uA6DD\u8EA2\uA6E4\u0000\uCDCF" + // 23620 - 23624
- "\u8EA2\uA6EF\u0000\uD1A8\u8EA2\uA6E5\u0000\u0000\u0000\uD1A9" + // 23625 - 23629
- "\u0000\uCDCB\u8EA2\uA6E7\u0000\u0000\u8EA2\uAACE\u0000\uD1AA" + // 23630 - 23634
- "\u8EA2\uA6DC\u0000\uCDCC\u0000\uD1AC\u0000\uCDCD\u0000\uCDC9" + // 23635 - 23639
- "\u0000\uCDCE\u8EA2\uA6E6\u8EA2\uA6DB\u8EA2\uA6EA\u0000\uCDC6" + // 23640 - 23644
- "\u0000\u0000\u0000\u0000\u8EA2\uA6DE\u8EA2\uA6E3\u8EA2\uA6E0" + // 23645 - 23649
- "\u0000\uCDC7\u0000\u0000\u8EA2\uAAC0\u0000\u0000\u8EA2\uAAC1" + // 23650 - 23654
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23655 - 23659
- "\u0000\u0000\u8EA2\uA4BE\u0000\uCADF\u8EA2\uA4BF\u8EA2\uA4C3" + // 23660 - 23664
- "\u0000\uCADE\u0000\u0000\u8EA2\uA4C7\u8EA2\uA4C2\u8EA2\uA4C5" + // 23665 - 23669
- "\u0000\uCAD7\u0000\uCAD8\u0000\uCAD9\u0000\uCADA\u0000\u0000" + // 23670 - 23674
- "\u0000\uCAE1\u0000\u0000\u8EA2\uA4C1\u0000\uCADC\u0000\uCAE2" + // 23675 - 23679
- "\u0000\u0000\u8EA2\uA4C0\u8EA2\uA4C6\u0000\u0000\u0000\uCADB" + // 23680 - 23684
- "\u8EA2\uA4C4\u0000\uCADD\u0000\uCAD6\u0000\uCAE0\u0000\u0000" + // 23685 - 23689
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23690 - 23694
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEBA\u0000\u0000" + // 23695 - 23699
- "\u8EA2\uA7B5\u0000\uCEA6\u0000\u0000\u0000\uCEB0\u0000\uCEB1" + // 23700 - 23704
- "\u0000\uCEA9\u0000\uCEBB\u0000\uCEAB\u8EA2\uA7BD\u0000\uCEB6" + // 23705 - 23709
- "\u8EA2\uA7B8\u0000\uCEAC\u8EA2\uA7C7\u8EA2\uA7C8\u8EA2\uA7C0" + // 23710 - 23714
- "\u8EA2\uA7B9\u0000\uCEB9\u8EA2\uA7C5\u0000\uCEB4\u0000\uCEB2" + // 23715 - 23719
- "\u8EA2\uE8F4\u8EA2\uE8F5\u0000\u0000\u0000\uC5C0\u0000\u0000" + // 23720 - 23724
- "\u0000\uC6D2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1DC" + // 23725 - 23729
- "\u0000\u0000\u0000\u0000\u0000\uCAB4\u0000\uCAB6\u0000\u0000" + // 23730 - 23734
- "\u8EA2\uA2C2\u8EA2\uA3F8\u8EA2\uA3F7\u8EA2\uA3F6\u0000\u0000" + // 23735 - 23739
- "\u8EA2\uA2C1\u8EA2\uA2C0\u0000\uC8A5\u0000\uCAB5\u0000\uCAB3" + // 23740 - 23744
- "\u0000\uC8A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDBF" + // 23745 - 23749
- "\u8EA2\uA6D9\u0000\u0000\u0000\uCDC0\u8EA2\uA3FD\u0000\u0000" + // 23750 - 23754
- "\u8EA2\uA4A1\u8EA2\uA3FE\u8EA2\uA6DA\u0000\u0000\u0000\u0000" + // 23755 - 23759
- "\u8EA2\uA3FA\u0000\u0000\u0000\uCABA\u0000\uCAB8\u0000\u0000" + // 23760 - 23764
- "\u8EA2\uA3F9\u8EA2\uA3FB\u8EA2\uA4A3\u0000\u0000\u0000\uCAB7" + // 23765 - 23769
- "\u0000\u0000\u8EA2\uA3FC\u8EA2\uA4A7\u0000\uCDC2\u0000\u0000" + // 23770 - 23774
- "\u8EA2\uA4A4\u0000\uCAB9\u0000\u0000\u8EA2\uA4A2\u8EA2\uA4A5" + // 23775 - 23779
- "\u0000\u0000\u0000\uCDC1\u0000\u0000\u0000\uCDC3\u0000\uCDBB" + // 23780 - 23784
- "\u0000\uCDBC\u8EA2\uA6D6\u0000\u0000\u0000\u0000\u0000\uD1A1" + // 23785 - 23789
- "\u8EA2\uAABF\u0000\uD1A4\u0000\uD0FE\u0000\uD1A6\u0000\uD1A2" + // 23790 - 23794
- "\u0000\uD1A3\u0000\uD1A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 23795 - 23799
- "\u0000\uD5C1\u0000\uD5C0\u0000\uD5BF\u0000\u0000\u0000\u0000" + // 23800 - 23804
- "\u0000\u0000\u8EA2\uB5B3\u0000\uDAB5\u0000\uDAB8\u0000\uDAB6" + // 23805 - 23809
- "\u0000\u0000\u8EA2\uB5B2\u0000\uDABB\u0000\u0000\u0000\uDAB7" + // 23810 - 23814
- "\u8EA2\uB5B4\u0000\uDABA\u0000\uDAB9\u0000\u0000\u0000\u0000" + // 23815 - 23819
- "\u0000\u0000\u8EA2\uBBDA\u8EA2\uBBD9\u0000\u0000\u0000\uDFA8" + // 23820 - 23824
- "\u0000\uDFA6\u0000\uDFA7\u8EA2\uBBDB\u0000\uE3F1\u8EA2\uC2EA" + // 23825 - 23829
- "\u0000\uE3F2\u8EA2\uC2E9\u0000\u0000\u0000\u0000\u8EA2\uD0C0" + // 23830 - 23834
- "\u0000\u0000\u0000\u0000\u0000\uECE2\u8EA2\uCAA8\u0000\uECE1" + // 23835 - 23839
- "\u0000\u0000\u0000\uE8E5\u0000\u0000\u8EA2\uD7A2\u8EA2\uD7A1" + // 23840 - 23844
- "\u0000\uF3DB\u8EA2\uDCE9\u8EA2\uE5CB\u8EA2\uC2E8\u0000\u0000" + // 23845 - 23849
- "\u0000\u0000\u8EA2\uCAA6\u8EA2\uCAA5\u0000\u0000\u0000\uE8E3" + // 23850 - 23854
- "\u0000\u0000\u0000\uECDF\u8EA2\uD0BF\u0000\uF0D3\u8EA2\uD6FE" + // 23855 - 23859
- "\u0000\uF3DA\u0000\u0000\u0000\uFBDF\u8EA2\uEFA7\u0000\uA7D9" + // 23860 - 23864
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6D5\u0000\u0000" + // 23865 - 23869
- "\u8EA2\uAABE\u0000\uDAB1\u8EA2\uBBD8\u0000\uE3F0\u0000\u0000" + // 23870 - 23874
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C1\u0000\u0000" + // 23875 - 23879
- "\u0000\u0000\u0000\uA7DA\u0000\uCAB0\u0000\u0000\u0000\uCAAF" + // 23880 - 23884
- "\u0000\uD0FD\u0000\u0000\u8EA2\uAEFD\u0000\u0000\u0000\uDAB3" + // 23885 - 23889
- "\u0000\uDDA9\u0000\uDAB4\u0000\uDAB2\u0000\uDFA5\u0000\u0000" + // 23890 - 23894
- "\u8EA2\uCAA7\u0000\uE8E4\u0000\uECE0\u0000\u0000\u8EA2\uA1AC" + // 23895 - 23899
- "\u8EA2\uA2BF\u0000\u0000\u8EA2\uA3F5\u0000\uCAB1\u8EA2\uA3F4" + // 23900 - 23904
- "\u0000\uCAB2\u0000\u0000\u0000\u0000\u0000\uCDBE\u8EA2\uA6D8" + // 23905 - 23909
- "\u8EA2\uA6D7\u0000\uCDBD\u8EA2\uA1DA\u0000\u0000\u8EA2\uA1DB" + // 23910 - 23914
- "\u0000\u0000\u8EA2\uA2BC\u0000\u0000\u0000\u0000\u0000\uCAAA" + // 23915 - 23919
- "\u8EA2\uA3F0\u8EA2\uA3EE\u0000\uCAAB\u8EA2\uA3ED\u8EA2\uA3EF" + // 23920 - 23924
- "\u8EA2\uA3F1\u0000\u0000\u0000\uCAA9\u0000\u0000\u0000\u0000" + // 23925 - 23929
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDB5\u0000\uCDB6" + // 23930 - 23934
- "\u0000\uCDB3\u0000\u0000\u0000\u0000\u0000\uCDB2\u8EA2\uAAB9" + // 23935 - 23939
- "\u0000\uCDB4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0F8" + // 23940 - 23944
- "\u0000\u0000\u8EA2\uAAB8\u8EA2\uAABA\u8EA2\uAAB7\u8EA2\uAABB" + // 23945 - 23949
- "\u0000\uD0F9\u0000\uD5BD\u8EA2\uAEF7\u0000\u0000\u8EA2\uAEF9" + // 23950 - 23954
- "\u0000\uD5BB\u8EA2\uAEFA\u0000\uD5BC\u8EA2\uAEF8\u0000\u0000" + // 23955 - 23959
- "\u8EA2\uAAB6\u8EA2\uB5AB\u8EA2\uB5AE\u8EA2\uB5AF\u8EA2\uB5AC" + // 23960 - 23964
- "\u0000\uDAAD\u0000\uDAAC\u0000\uDAAA\u0000\uDAAB\u8EA2\uB5AD" + // 23965 - 23969
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAAE" + // 23970 - 23974
- "\u0000\u0000\u0000\uE5DB\u8EA2\uC5DA\u0000\u0000\u0000\u0000" + // 23975 - 23979
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCC8\u0000\u0000" + // 23980 - 23984
- "\u8EA2\uCCC1\u8EA2\uCCC2\u0000\u0000\u0000\uE9FE\u0000\uE9FC" + // 23985 - 23989
- "\u0000\uE9FD\u8EA2\uCCCA\u0000\u0000\u8EA2\uCCC9\u8EA2\uCCC6" + // 23990 - 23994
- "\u8EA2\uCCC5\u8EA2\uCCC4\u8EA2\uCCC3\u8EA2\uCCC7\u8EA2\uCCC0" + // 23995 - 23999
- "\u0000\u0000\u8EA2\uD2D3\u8EA2\uD2D8\u8EA2\uD2D6\u0000\u0000" + // 24000 - 24004
- "\u0000\u0000\u0000\u0000\u8EA2\uD2D5\u8EA2\uD2D4\u8EA2\uD2D7" + // 24005 - 24009
- "\u0000\u0000\u8EA2\uD8F8\u0000\u0000\u0000\uF1D7\u0000\uF4D2" + // 24010 - 24014
- "\u8EA2\uDDFB\u0000\u0000\u0000\uF4D3\u8EA2\uDDFA\u8EA2\uE2CB" + // 24015 - 24019
- "\u8EA2\uE2CA\u0000\uF6F1\u0000\u0000\u8EA2\uE6AF\u0000\uF8D6" + // 24020 - 24024
- "\u8EA2\uE9CE\u0000\uFBEB\u8EA2\uEDE5\u0000\u0000\u8EA2\uF0C5" + // 24025 - 24029
- "\u8EA2\uF0C4\u8EA2\uA1E7\u0000\uD2ED\u0000\uD2EE\u8EA2\uB7E6" + // 24030 - 24034
- "\u0000\u0000\u0000\uE5DD\u0000\uC6FD\u0000\uCBB5\u0000\uDEFB" + // 24035 - 24039
- "\u8EA2\uBBD7\u0000\u0000\u0000\uDEFC\u8EA2\uBBD6\u0000\uDEF9" + // 24040 - 24044
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2E0" + // 24045 - 24049
- "\u8EA2\uC2E2\u0000\uE3EB\u8EA2\uC2E1\u8EA2\uC2DF\u8EA2\uC2DE" + // 24050 - 24054
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9F9\u0000\uE8DF" + // 24055 - 24059
- "\u0000\uE8DD\u0000\u0000\u0000\uE8DE\u8EA2\uC9F7\u8EA2\uC9F8" + // 24060 - 24064
- "\u0000\u0000\u0000\uE8DB\u8EA2\uD0BA\u8EA2\uD0B8\u0000\u0000" + // 24065 - 24069
- "\u0000\uECD7\u8EA2\uD0B9\u0000\uECD8\u0000\uECD6\u0000\uE8DC" + // 24070 - 24074
- "\u0000\u0000\u0000\u0000\u8EA2\uD6F7\u8EA2\uD6F5\u8EA2\uD6F6" + // 24075 - 24079
- "\u8EA2\uD0B7\u8EA2\uDCE8\u0000\uF3D9\u8EA2\uDCE7\u8EA2\uE1D1" + // 24080 - 24084
- "\u8EA2\uE1D2\u8EA2\uD6F8\u8EA2\uE5CA\u0000\u0000\u0000\uC4DB" + // 24085 - 24089
- "\u0000\uC6CD\u0000\uC8A1\u8EA2\uA2BB\u0000\uC7FE\u0000\u0000" + // 24090 - 24094
- "\u0000\uCDB1\u0000\uE3EC\u0000\uA7D3\u0000\uC5BC\u0000\uC6CE" + // 24095 - 24099
- "\u0000\uD0F7\u0000\uDEFD\u0000\uA7D4\u8EA2\uE1D0\u0000\u0000" + // 24100 - 24104
- "\u8EA2\uE4BE\u8EA2\uE5C9\u0000\u0000\u0000\u0000\u8EA2\uE8F0" + // 24105 - 24109
- "\u8EA2\uE8F1\u0000\u0000\u0000\uF9EB\u0000\u0000\u8EA2\uEBD7" + // 24110 - 24114
- "\u0000\u0000\u0000\uFAE9\u0000\u0000\u8EA2\uEBD8\u0000\u0000" + // 24115 - 24119
- "\u8EA2\uEDCC\u0000\uFBDE\u0000\u0000\u0000\uFBDD\u8EA2\uEDCB" + // 24120 - 24124
- "\u0000\uFCB5\u0000\u0000\u8EA2\uEFA5\u0000\u0000\u0000\u0000" + // 24125 - 24129
- "\u0000\uA7CE\u0000\u0000\u0000\uC4D5\u0000\uC7FC\u8EA2\uA2BA" + // 24130 - 24134
- "\u8EA2\uA3EA\u0000\uCBD6\u0000\uDAA5\u0000\u0000\u0000\u0000" + // 24135 - 24139
- "\u0000\uC4D6\u0000\uC6CA\u0000\uC6C9\u0000\uC6C8\u0000\u0000" + // 24140 - 24144
- "\u0000\u0000\u0000\uCAA7\u0000\u0000\u0000\u0000\u0000\uD5B8" + // 24145 - 24149
- "\u0000\u0000\u8EA2\uC2DD\u0000\uC4D7\u0000\uC4D8\u0000\uC4D9" + // 24150 - 24154
- "\u0000\uC5BB\u0000\u0000\u0000\u0000\u0000\uD0F3\u0000\u0000" + // 24155 - 24159
- "\u8EA2\uAAB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEF8" + // 24160 - 24164
- "\u0000\uC4DA\u8EA2\uA1BD\u8EA2\uC9E9\u8EA2\uC9ED\u8EA2\uC9E8" + // 24165 - 24169
- "\u0000\u0000\u0000\uE8D9\u0000\u0000\u8EA2\uC9EB\u0000\uE8DA" + // 24170 - 24174
- "\u8EA2\uC9F1\u8EA2\uC9F0\u8EA2\uC9EF\u0000\u0000\u0000\u0000" + // 24175 - 24179
- "\u8EA2\uC9F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24180 - 24184
- "\u8EA2\uD0AE\u8EA2\uD0B0\u0000\uECD5\u8EA2\uD0B1\u0000\u0000" + // 24185 - 24189
- "\u8EA2\uD0AC\u0000\u0000\u8EA2\uD0AB\u8EA2\uD0B5\u0000\u0000" + // 24190 - 24194
- "\u8EA2\uD0B3\u0000\uECD4\u8EA2\uD0B6\u8EA2\uD0AD\u8EA2\uD0B2" + // 24195 - 24199
- "\u8EA2\uD0B4\u8EA2\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000" + // 24200 - 24204
- "\u0000\u0000\u8EA2\uD6EB\u8EA2\uD6F0\u8EA2\uD6EA\u8EA2\uD6EF" + // 24205 - 24209
- "\u0000\u0000\u8EA2\uD6E8\u8EA2\uD6F2\u8EA2\uD6EE\u8EA2\uD6F3" + // 24210 - 24214
- "\u8EA2\uD6ED\u8EA2\uD6E9\u8EA2\uD6F1\u0000\u0000\u8EA2\uD6F4" + // 24215 - 24219
- "\u8EA2\uD6EC\u0000\u0000\u8EA2\uDCE6\u0000\uF3D8\u0000\u0000" + // 24220 - 24224
- "\u0000\uF3D6\u0000\u0000\u0000\uF3D5\u0000\uF3D7\u0000\u0000" + // 24225 - 24229
- "\u0000\u0000\u0000\uA3A4\u0000\uA3A5\u0000\uA3A6\u0000\uA3A7" + // 24230 - 24234
- "\u0000\uA3A8\u0000\uA3A9\u0000\uA3AA\u0000\uA3AB\u0000\uA3B2" + // 24235 - 24239
- "\u0000\uA3B1\u0000\uA3B0\u0000\uA3AF\u0000\uA3AE\u0000\uA3AD" + // 24240 - 24244
- "\u0000\uA3AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24245 - 24249
- "\u0000\uA3B8\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24250 - 24254
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24255 - 24259
- "\u0000\u0000\u0000\u0000\u0000\uA1FC\u0000\uA1FB\u0000\u0000" + // 24260 - 24264
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24265 - 24269
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24270 - 24274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24275 - 24279
- "\u0000\uA1F5\u0000\uA1F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 24280 - 24284
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24285 - 24289
- "\u0000\uA1FE\u0000\uA1FD\u0000\u0000\u0000\u0000\u8EA2\uAFFD" + // 24290 - 24294
- "\u0000\u0000\u0000\uE5FE\u0000\uE1C8\u0000\uE5FD\u0000\uEACE" + // 24295 - 24299
- "\u0000\u0000\u0000\uC8D8\u8EA2\uA1E8\u0000\uC8D9\u0000\uC8DA" + // 24300 - 24304
- "\u0000\u0000\u0000\u0000\u8EA2\uA8CB\u8EA2\uA4F6\u0000\u0000" + // 24305 - 24309
- "\u8EA2\uA4F7\u0000\uCBBA\u0000\u0000\u8EA2\uA4F4\u0000\uCBB9" + // 24310 - 24314
- "\u0000\u0000\u0000\uCBBC\u8EA2\uA4F5\u0000\uCBBE\u0000\uCBBD" + // 24315 - 24319
- "\u8EA2\uA4F8\u0000\uCBBB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24320 - 24324
- "\u0000\uCFB4\u0000\uCFB2\u8EA2\uA8CD\u0000\u0000\u0000\uCFB1" + // 24325 - 24329
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFB6\u0000\uCFB8" + // 24330 - 24334
- "\u0000\uCFB5\u0000\u0000\u8EA2\uA8D0\u8EA2\uA8CC\u0000\uCFB9" + // 24335 - 24339
- "\u0000\u0000\u0000\uCFB3\u0000\uCBBF\u0000\u0000\u0000\uCFB7" + // 24340 - 24344
- "\u8EA2\uA8CF\u0000\u0000\u0000\u0000\u8EA2\uA8CE\u0000\u0000" + // 24345 - 24349
- "\u0000\uCFB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24350 - 24354
- "\u0000\u0000\u0000\uA2EA\u0000\u0000\u0000\uA2A2\u0000\u0000" + // 24355 - 24359
- "\u0000\u0000\u0000\u0000\u0000\uA2EB\u0000\u0000\u0000\u0000" + // 24360 - 24364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24365 - 24369
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24370 - 24374
- "\u8EAD\uA4C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24375 - 24379
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24380 - 24384
- "\u0000\u0000\u8EAD\uA4C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 24385 - 24389
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24390 - 24394
- "\u0000\u0000\u8EAD\uA1CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 24395 - 24399
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24400 - 24404
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24405 - 24409
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24410 - 24414
- "\u0000\u0000\u0000\u0000\u8EAD\uA1AF\u0000\u0000\u0000\u0000" + // 24415 - 24419
- "\u0000\u0000\u0000\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000" + // 24420 - 24424
- "\u0000\uA1E4\u0000\uA1E5\u0000\u0000\u0000\u0000\u0000\uA1E6" + // 24425 - 24429
- "\u0000\uA1E7\u0000\u0000\u0000\u0000\u8EAD\uA1CF\u8EAD\uA1D0" + // 24430 - 24434
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1AD\u0000\uA1AC" + // 24435 - 24439
- "\u0000\uA1A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24440 - 24444
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CB" + // 24445 - 24449
- "\u0000\u0000\u0000\uA1EB\u8EAD\uA1B3\u0000\u0000\u0000\uA1EA" + // 24450 - 24454
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24455 - 24459
- "\u0000\uA1EF\u0000\u0000\u0000\u0000\u0000\uA2A3\u0000\u0000" + // 24460 - 24464
- "\u0000\uF4D1\u8EA2\uDDF1\u0000\u0000\u8EA2\uDDF9\u8EA2\uDDF6" + // 24465 - 24469
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2C6\u0000\u0000" + // 24470 - 24474
- "\u0000\u0000\u8EA2\uE2C3\u0000\u0000\u0000\uF6F0\u0000\u0000" + // 24475 - 24479
- "\u8EA2\uE2C7\u8EA2\uE2C9\u8EA2\uE2C8\u8EA2\uE2C4\u8EA2\uE2C5" + // 24480 - 24484
- "\u0000\u0000\u0000\u0000\u8EA2\uE6AD\u0000\u0000\u0000\uF8D5" + // 24485 - 24489
- "\u0000\u0000\u8EA2\uE6AA\u8EA2\uE6AC\u8EA2\uE6A9\u8EA2\uE6AE" + // 24490 - 24494
- "\u0000\u0000\u0000\u0000\u8EA2\uE6AB\u0000\u0000\u8EA2\uE9C9" + // 24495 - 24499
- "\u8EA2\uE9CC\u8EA2\uE9C8\u0000\uF9FC\u8EA2\uE9CA\u8EA2\uE9CB" + // 24500 - 24504
- "\u8EA2\uE9CD\u0000\uF9FD\u0000\uFAA1\u0000\uF9FE\u8EA2\uEBEF" + // 24505 - 24509
- "\u0000\u0000\u8EA2\uEBF1\u0000\u0000\u8EA2\uEBF0\u0000\u0000" + // 24510 - 24514
- "\u0000\u0000\u0000\u0000\u8EA2\uEDE4\u0000\u0000\u0000\u0000" + // 24515 - 24519
- "\u8EA2\uF0C3\u8EA2\uF1AA\u0000\uC6FC\u0000\u0000\u0000\u0000" + // 24520 - 24524
- "\u8EA2\uA4F2\u0000\uCFA3\u8EA2\uA8C3\u8EA2\uBBD4\u8EA2\uBBC0" + // 24525 - 24529
- "\u8EA2\uBBCD\u8EA2\uBBBE\u0000\u0000\u8EA2\uBBD5\u0000\u0000" + // 24530 - 24534
- "\u0000\uDEF7\u0000\u0000\u8EA2\uBBCF\u8EA2\uC2D5\u8EA2\uBBC1" + // 24535 - 24539
- "\u0000\uDEF4\u0000\u0000\u8EA2\uBBC5\u0000\u0000\u0000\uDEF5" + // 24540 - 24544
- "\u8EA2\uBBC4\u8EA2\uBBC9\u0000\u0000\u0000\u0000\u8EA2\uBBC6" + // 24545 - 24549
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBCC\u0000\u0000" + // 24550 - 24554
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2D9\u0000\u0000" + // 24555 - 24559
- "\u0000\u0000\u0000\u0000\u8EA2\uC2DC\u8EA2\uC2D4\u0000\u0000" + // 24560 - 24564
- "\u8EA2\uC2D6\u0000\u0000\u8EA2\uC2DB\u8EA2\uC2DA\u0000\uE3E9" + // 24565 - 24569
- "\u0000\u0000\u8EA2\uBBBF\u8EA2\uC2D8\u0000\u0000\u0000\u0000" + // 24570 - 24574
- "\u0000\uE3EA\u0000\u0000\u8EA2\uC2D3\u8EA2\uC2D7\u0000\u0000" + // 24575 - 24579
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9EE\u0000\u0000" + // 24580 - 24584
- "\u8EA2\uC9F5\u8EA2\uC9EC\u0000\u0000\u8EA2\uC9F3\u8EA2\uC9EA" + // 24585 - 24589
- "\u8EA2\uC9F2\u8EA2\uC9F6\u8EA2\uAEF3\u0000\uD5B6\u0000\u0000" + // 24590 - 24594
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9F7\u0000\uD9F6" + // 24595 - 24599
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB4F8\u8EA2\uB4FC" + // 24600 - 24604
- "\u8EA2\uB4FE\u0000\uD9F8\u8EA2\uB5A3\u0000\u0000\u0000\uD9FC" + // 24605 - 24609
- "\u8EA2\uB5A5\u0000\u0000\u0000\uD9FE\u0000\u0000\u0000\uD9FA" + // 24610 - 24614
- "\u0000\uDAA4\u0000\u0000\u0000\uDAA1\u8EA2\uB4FA\u0000\uD9F9" + // 24615 - 24619
- "\u0000\u0000\u8EA2\uB4F9\u8EA2\uB4F7\u8EA2\uB5A7\u8EA2\uB4FB" + // 24620 - 24624
- "\u0000\u0000\u0000\uD9FB\u8EA2\uB5A6\u0000\uDAA2\u8EA2\uB5A2" + // 24625 - 24629
- "\u8EA2\uB5A1\u0000\uDAA3\u8EA2\uB4FD\u0000\uD9FD\u0000\u0000" + // 24630 - 24634
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5A8\u0000\u0000" + // 24635 - 24639
- "\u8EA2\uB5A4\u8EA2\uBBCB\u8EA2\uBBD2\u8EA2\uBBC7\u0000\uDEF6" + // 24640 - 24644
- "\u8EA2\uBBC3\u8EA2\uBBD3\u8EA2\uBBBD\u8EA2\uBBD0\u8EA2\uBBCE" + // 24645 - 24649
- "\u8EA2\uBBC8\u0000\u0000\u8EA2\uBBD1\u8EA2\uBBCA\u0000\u0000" + // 24650 - 24654
- "\u8EA2\uBBC2\u0000\uC9FD\u0000\uC9FE\u0000\u0000\u0000\u0000" + // 24655 - 24659
- "\u8EA2\uA6BA\u0000\uCDA2\u0000\uCDA3\u8EA2\uA6BB\u0000\uCDA1" + // 24660 - 24664
- "\u0000\u0000\u0000\u0000\u0000\uD0F0\u8EA2\uA9F9\u0000\uD0EF" + // 24665 - 24669
- "\u0000\uD0ED\u0000\uD0EE\u0000\uD5AE\u0000\uD5AC\u0000\u0000" + // 24670 - 24674
- "\u0000\u0000\u8EA2\uAEED\u0000\uD5AD\u8EA2\uAEEC\u0000\u0000" + // 24675 - 24679
- "\u0000\uD5A2\u8EA2\uB4F6\u0000\u0000\u0000\u0000\u0000\uD9F4" + // 24680 - 24684
- "\u0000\uD9F5\u0000\u0000\u0000\u0000\u0000\uD9F3\u0000\u0000" + // 24685 - 24689
- "\u0000\uE8D8\u8EA2\uC9E7\u0000\uECD2\u0000\uECD3\u0000\u0000" + // 24690 - 24694
- "\u8EA2\uD0AA\u0000\uF3D4\u8EA2\uE1CE\u8EA2\uE1CF\u0000\u0000" + // 24695 - 24699
- "\u0000\uFAE8\u8EA2\uF0B6\u8EA2\uA1AB\u0000\uC5BA\u0000\u0000" + // 24700 - 24704
- "\u0000\uC4D4\u0000\u0000\u8EA2\uA1D8\u8EA2\uA1D7\u0000\u0000" + // 24705 - 24709
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7FB\u8EA2\uA2B7" + // 24710 - 24714
- "\u8EA2\uA2B8\u8EA2\uA2B6\u0000\u0000\u8EA2\uA2B9\u0000\u0000" + // 24715 - 24719
- "\u0000\uD2DC\u0000\u0000\u8EA2\uACC3\u8EA2\uACC4\u8EA2\uACC5" + // 24720 - 24724
- "\u0000\u0000\u0000\uD2E3\u8EA2\uACC2\u0000\uD2DF\u8EA2\uACC6" + // 24725 - 24729
- "\u0000\uD2E0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24730 - 24734
- "\u8EA2\uB1B2\u8EA2\uB1B6\u8EA2\uB1B4\u8EA2\uB1B3\u0000\u0000" + // 24735 - 24739
- "\u8EA2\uB1B7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1B8" + // 24740 - 24744
- "\u8EA2\uB1B9\u8EA2\uB1B1\u0000\u0000\u8EA2\uB1B0\u0000\u0000" + // 24745 - 24749
- "\u0000\uD6F8\u0000\uD6F9\u0000\u0000\u8EA2\uB1BA\u8EA2\uB1B5" + // 24750 - 24754
- "\u0000\u0000\u8EA2\uB7D3\u0000\u0000\u8EA2\uB1BB\u0000\uD6FA" + // 24755 - 24759
- "\u0000\uD6F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7CD" + // 24760 - 24764
- "\u0000\u0000\u8EA2\uB7CC\u0000\u0000\u8EA2\uB7CE\u8EA2\uB7CF" + // 24765 - 24769
- "\u8EA2\uB7D1\u8EA2\uB7D0\u8EA2\uB7D5\u0000\uDCBA\u0000\uDCB7" + // 24770 - 24774
- "\u0000\uDCBB\u8EA2\uB7CB\u0000\uDCBC\u8EA2\uB7D4\u0000\uDCB9" + // 24775 - 24779
- "\u8EA2\uB7D2\u0000\uDCB8\u0000\u0000\u0000\uE9F6\u0000\u0000" + // 24780 - 24784
- "\u8EA2\uD2D0\u8EA2\uD2D1\u0000\uEDFC\u0000\u0000\u0000\u0000" + // 24785 - 24789
- "\u8EA2\uD2CF\u8EA2\uD2D2\u0000\uEDFE\u0000\uEDFB\u8EA2\uD2CB" + // 24790 - 24794
- "\u8EA2\uD2C8\u8EA2\uD2CD\u8EA2\uD2CA\u0000\uEEA4\u8EA2\uD2CC" + // 24795 - 24799
- "\u0000\u0000\u0000\u0000\u8EA2\uD2CE\u0000\uEEA2\u0000\u0000" + // 24800 - 24804
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1D4\u8EA2\uD8F2" + // 24805 - 24809
- "\u0000\u0000\u8EA2\uD8EC\u8EA2\uD8F0\u8EA2\uD8F6\u8EA2\uD8F7" + // 24810 - 24814
- "\u8EA2\uD8F3\u8EA2\uD8F4\u8EA2\uD8F1\u0000\u0000\u8EA2\uD8EE" + // 24815 - 24819
- "\u0000\u0000\u0000\uF1D6\u0000\uF1D3\u8EA2\uD8ED\u8EA2\uD8EF" + // 24820 - 24824
- "\u0000\u0000\u0000\uF1D5\u8EA2\uD8F5\u0000\u0000\u0000\uF4D0" + // 24825 - 24829
- "\u0000\u0000\u0000\u0000\u8EA2\uDDF5\u8EA2\uDDEF\u0000\uF4CF" + // 24830 - 24834
- "\u0000\u0000\u0000\u0000\u0000\uF4CD\u0000\u0000\u8EA2\uDDF7" + // 24835 - 24839
- "\u0000\uF4CE\u8EA2\uDDF2\u8EA2\uDDF3\u8EA2\uDDF0\u8EA2\uDDF8" + // 24840 - 24844
- "\u8EA2\uDDF4\u8EA2\uB4F5\u8EA2\uB4F4\u0000\uD9ED\u0000\u0000" + // 24845 - 24849
- "\u0000\uD9EC\u0000\uD9EB\u0000\uD9EF\u0000\uD9EA\u0000\u0000" + // 24850 - 24854
- "\u0000\u0000\u8EA2\uBBB9\u8EA2\uBBB6\u0000\uDEEE\u8EA2\uBBB5" + // 24855 - 24859
- "\u8EA2\uBBBA\u0000\u0000\u0000\uDEF0\u8EA2\uBBB8\u0000\uDEED" + // 24860 - 24864
- "\u0000\uDEEF\u8EA2\uBBB7\u0000\u0000\u8EA2\uC2CE\u0000\u0000" + // 24865 - 24869
- "\u8EA2\uC2CF\u8EA2\uC2D0\u0000\u0000\u0000\u0000\u0000\u0000" + // 24870 - 24874
- "\u0000\u0000\u0000\uE8CE\u0000\uE8D6\u8EA2\uC9E5\u0000\uE8D0" + // 24875 - 24879
- "\u0000\uE8D4\u8EA2\uC9E6\u0000\uE8D5\u0000\uE8D1\u0000\uE8D2" + // 24880 - 24884
- "\u0000\uE8CF\u0000\uE8D3\u0000\uECD0\u8EA2\uBBB4\u0000\uECD1" + // 24885 - 24889
- "\u0000\uECCF\u0000\u0000\u0000\uECCE\u8EA2\uD6E7\u0000\uF0D1" + // 24890 - 24894
- "\u8EA2\uDCE4\u8EA2\uDCE5\u0000\u0000\u0000\u0000\u0000\uF8B1" + // 24895 - 24899
- "\u0000\uF9EA\u0000\u0000\u0000\uC4D0\u0000\u0000\u0000\uC7F9" + // 24900 - 24904
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24905 - 24909
- "\u0000\uDBB9\u0000\u0000\u8EA2\uBCE6\u8EA2\uBCFC\u8EA2\uBCF1" + // 24910 - 24914
- "\u0000\uDFFB\u0000\u0000\u0000\uDFF6\u8EA2\uBCE0\u0000\uDFF7" + // 24915 - 24919
- "\u8EA2\uBCF0\u0000\u0000\u8EA2\uBCE9\u8EA2\uBCF6\u0000\uDFF3" + // 24920 - 24924
- "\u8EA2\uBCCE\u8EA2\uBCF8\u0000\uDFE9\u8EA2\uBCD6\u0000\uDFEC" + // 24925 - 24929
- "\u0000\uDFEB\u0000\u0000\u0000\uDFFC\u0000\u0000\u8EA2\uBCD0" + // 24930 - 24934
- "\u8EA2\uBCF2\u8EA2\uBCF3\u0000\uDFEE\u0000\uDFEA\u8EA2\uBCDE" + // 24935 - 24939
- "\u0000\u0000\u0000\uDFF5\u8EA2\uBCD9\u0000\u0000\u8EA2\uBCF4" + // 24940 - 24944
- "\u0000\uDFF1\u8EA2\uBCEC\u8EA2\uBCF9\u8EA2\uBCD3\u8EA2\uBCD8" + // 24945 - 24949
- "\u8EA2\uBCD2\u0000\u0000\u0000\uDFF0\u8EA2\uBCE5\u8EA2\uC3E4" + // 24950 - 24954
- "\u8EA2\uBCD4\u0000\uDFF4\u8EA2\uBCDD\u8EA2\uBCF5\u0000\uDFEF" + // 24955 - 24959
- "\u8EA2\uBCDA\u8EA2\uBCD7\u8EA2\uBCE8\u0000\uDFF2\u0000\uDFE8" + // 24960 - 24964
- "\u0000\uDFFE\u8EA2\uBCEB\u8EA2\uBCEA\u0000\u0000\u0000\u0000" + // 24965 - 24969
- "\u8EAD\uA3C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24970 - 24974
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24975 - 24979
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24980 - 24984
- "\u8EAD\uA3C0\u8EAD\uA3C1\u8EAD\uA3C2\u8EAD\uA3C3\u8EAD\uA3C4" + // 24985 - 24989
- "\u8EAD\uA3C5\u8EAD\uA3C7\u8EAD\uA3C8\u8EAD\uA3C9\u8EAD\uA3CA" + // 24990 - 24994
- "\u8EAD\uA3CB\u8EAD\uA3CC\u8EAD\uA3CD\u8EAD\uA3CE\u8EAD\uA3CF" + // 24995 - 24999
- "\u8EAD\uA3D0\u8EAD\uA3D1\u8EAD\uA3D2\u8EAD\uA3D3\u8EAD\uA3D4" + // 25000 - 25004
- "\u8EAD\uA3D5\u8EAD\uA3D6\u8EAD\uA3D7\u8EAD\uA3D8\u8EAD\uA3D9" + // 25005 - 25009
- "\u8EAD\uA3DA\u8EAD\uA3DB\u8EAD\uA3DC\u8EAD\uA3DD\u8EAD\uA3DE" + // 25010 - 25014
- "\u8EAD\uA3DF\u8EAD\uA3E0\u8EAD\uA3E1\u8EAD\uA3E2\u8EAD\uA3E3" + // 25015 - 25019
- "\u8EAD\uA3E4\u8EAD\uA3E5\u8EAD\uA3E6\u8EAD\uA3E8\u8EAD\uA3E9" + // 25020 - 25024
- "\u8EAD\uA3EA\u8EAD\uA3EB\u8EAD\uA3EC\u8EAD\uA3ED\u8EAD\uA3EE" + // 25025 - 25029
- "\u8EAD\uA3EF\u8EAD\uA3F0\u8EAD\uA3F1\u0000\uA7C7\u8EA2\uA1D3" + // 25030 - 25034
- "\u0000\u0000\u0000\uC6C6\u8EA2\uA1D4\u0000\uC7F7\u0000\u0000" + // 25035 - 25039
- "\u0000\uC7F5\u0000\uC7F6\u0000\uC7F8\u0000\u0000\u0000\uC9FA" + // 25040 - 25044
- "\u0000\uC9F9\u0000\u0000\u8EA2\uA3DC\u0000\uC9FB\u0000\u0000" + // 25045 - 25049
- "\u0000\u0000\u8EA2\uA3DD\u8EA2\uA6B8\u0000\u0000\u8EA2\uA6B9" + // 25050 - 25054
- "\u0000\u0000\u0000\uCCF8\u0000\uCCFA\u0000\uCCFC\u0000\uCCF9" + // 25055 - 25059
- "\u0000\uCCFD\u0000\uCCFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25060 - 25064
- "\u0000\u0000\u0000\u0000\u0000\uD0EA\u0000\uD0E7\u0000\uD0E9" + // 25065 - 25069
- "\u0000\uD0EB\u0000\uD0E8\u8EA2\uAEE8\u8EA2\uA9F8\u0000\u0000" + // 25070 - 25074
- "\u0000\u0000\u0000\u0000\u8EA2\uAEEA\u8EA2\uAEE9\u0000\uD5A7" + // 25075 - 25079
- "\u0000\u0000\u0000\uD5A3\u0000\u0000\u0000\u0000\u0000\uD5A4" + // 25080 - 25084
- "\u0000\uD5A6\u0000\uD5A8\u0000\uD5A5\u0000\u0000\u0000\uD5AA" + // 25085 - 25089
- "\u0000\uD5A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25090 - 25094
- "\u0000\u0000\u0000\uD9EE\u0000\uF9E7\u0000\u0000\u0000\u0000" + // 25095 - 25099
- "\u0000\uF9E8\u0000\u0000\u8EA2\uE8EF\u0000\u0000\u8EA2\uEBD6" + // 25100 - 25104
- "\u8EA2\uEBD5\u0000\u0000\u0000\u0000\u8EA2\uEDC9\u8EA2\uEDCA" + // 25105 - 25109
- "\u8EA2\uEFA4\u8EA2\uF0B5\u0000\u0000\u0000\uC4CD\u0000\uC4CE" + // 25110 - 25114
- "\u0000\u0000\u0000\uC4CF\u0000\uC5B6\u0000\uC6C5\u8EA2\uA2B3" + // 25115 - 25119
- "\u0000\uC7F3\u0000\uC7F4\u0000\u0000\u0000\uC9F7\u0000\uC9F8" + // 25120 - 25124
- "\u0000\uC9F6\u0000\uC9F5\u0000\u0000\u0000\uCCF5\u0000\u0000" + // 25125 - 25129
- "\u0000\u0000\u8EA2\uA6B6\u0000\uCCF7\u0000\uCCF6\u8EA2\uA6B7" + // 25130 - 25134
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0E6\u0000\u0000" + // 25135 - 25139
- "\u0000\uD5A1\u8EA2\uAEE7\u0000\u0000\u8EA2\uB4F3\u0000\u0000" + // 25140 - 25144
- "\u0000\uD9E9\u0000\uDEEC\u8EA2\uB4F2\u0000\uDEEB\u0000\u0000" + // 25145 - 25149
- "\u0000\uE8CD\u0000\u0000\u8EA2\uC9E4\u0000\uF0D0\u0000\u0000" + // 25150 - 25154
- "\u0000\uF3D2\u8EA2\uDCE3\u0000\u0000\u0000\uF9E9\u0000\u0000" + // 25155 - 25159
- "\u0000\uFBDC\u8EA2\uC2C7\u0000\uE3E0\u0000\uE3E7\u0000\u0000" + // 25160 - 25164
- "\u8EA2\uC2BB\u0000\u0000\u8EA2\uC2C5\u8EA2\uC2BA\u8EA2\uC2C3" + // 25165 - 25169
- "\u0000\uE3E1\u8EA2\uC2C8\u8EA2\uC2BC\u0000\uE3E2\u8EA2\uC2CB" + // 25170 - 25174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25175 - 25179
- "\u0000\u0000\u0000\u0000\u8EA2\uC9D5\u0000\uE8CA\u0000\uE8C9" + // 25180 - 25184
- "\u0000\uE8CB\u8EA2\uC9E1\u8EA2\uC9D7\u8EA2\uC9DD\u8EA2\uC9D2" + // 25185 - 25189
- "\u8EA2\uC9E0\u8EA2\uC9DF\u8EA2\uC9E3\u8EA2\uC9DC\u0000\uE8C6" + // 25190 - 25194
- "\u8EA2\uC9DB\u0000\uE8CC\u0000\u0000\u8EA2\uC9D4\u0000\uE8C7" + // 25195 - 25199
- "\u0000\u0000\u8EA2\uC9E2\u0000\uE8C8\u8EA2\uC9D6\u8EA2\uC9D9" + // 25200 - 25204
- "\u8EA2\uC9DE\u8EA2\uC9D8\u8EA2\uC9D3\u0000\u0000\u0000\u0000" + // 25205 - 25209
- "\u0000\u0000\u0000\u0000\u8EA2\uC9DA\u8EA2\uCFFC\u0000\uECCB" + // 25210 - 25214
- "\u8EA2\uD0A1\u8EA2\uCFFE\u8EA2\uD0A3\u8EA2\uD0A5\u0000\u0000" + // 25215 - 25219
- "\u0000\uECC9\u0000\u0000\u8EA2\uCFFD\u0000\u0000\u8EA2\uCFFB" + // 25220 - 25224
- "\u0000\uD9E3\u0000\uD9DF\u8EA2\uB4F0\u8EA2\uB4E0\u8EA2\uB4E3" + // 25225 - 25229
- "\u0000\u0000\u0000\uD9E7\u8EA2\uB4ED\u8EA2\uB4E5\u0000\uD9E0" + // 25230 - 25234
- "\u0000\uD9E8\u0000\u0000\u8EA2\uB4EA\u8EA2\uB4E8\u0000\u0000" + // 25235 - 25239
- "\u0000\u0000\u8EA2\uB4D9\u8EA2\uB4EE\u8EA2\uB4E2\u8EA2\uB4DD" + // 25240 - 25244
- "\u0000\u0000\u8EA2\uB4D3\u8EA2\uB4EF\u8EA2\uB4DF\u8EA2\uB4D2" + // 25245 - 25249
- "\u0000\u0000\u0000\uD9E6\u8EA2\uB4E4\u8EA2\uB4F1\u8EA2\uB4E1" + // 25250 - 25254
- "\u8EA2\uB4D5\u8EA2\uB4DA\u8EA2\uB4D1\u0000\u0000\u0000\uD9E5" + // 25255 - 25259
- "\u0000\u0000\u8EA2\uB4DE\u8EA2\uB4DB\u0000\uD9E1\u8EA2\uB4D4" + // 25260 - 25264
- "\u0000\u0000\u8EA2\uB4EC\u0000\uD9E2\u0000\u0000\u8EA2\uB4DC" + // 25265 - 25269
- "\u8EA2\uB4D8\u0000\u0000\u0000\u0000\u8EA2\uB4EB\u0000\u0000" + // 25270 - 25274
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25275 - 25279
- "\u0000\uDEE5\u8EA2\uBAFD\u0000\u0000\u8EA2\uBAFA\u8EA2\uBBAD" + // 25280 - 25284
- "\u8EA2\uBBA1\u8EA2\uBBAE\u0000\u0000\u0000\uDEE7\u8EA2\uA9E6" + // 25285 - 25289
- "\u0000\uD0E4\u0000\u0000\u0000\uD0DF\u0000\u0000\u0000\u0000" + // 25290 - 25294
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4FE\u8EA2\uAEE4" + // 25295 - 25299
- "\u0000\u0000\u0000\uD4FD\u0000\u0000\u0000\u0000\u8EA2\uAEE2" + // 25300 - 25304
- "\u0000\u0000\u0000\uD4F2\u0000\u0000\u0000\uD4F7\u0000\u0000" + // 25305 - 25309
- "\u8EA2\uAEE1\u8EA2\uAEDE\u8EA2\uAEE3\u0000\uD4F3\u8EA2\uAEDD" + // 25310 - 25314
- "\u0000\u0000\u0000\uD4F6\u0000\uD4F4\u0000\u0000\u8EA2\uAEE5" + // 25315 - 25319
- "\u0000\uD4F5\u0000\uD4F9\u0000\u0000\u0000\u0000\u0000\uD4FA" + // 25320 - 25324
- "\u0000\u0000\u0000\uD4FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 25325 - 25329
- "\u0000\uD4FB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEDF" + // 25330 - 25334
- "\u8EA2\uAEE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25335 - 25339
- "\u8EA2\uAEE6\u0000\u0000\u8EA2\uB4D7\u0000\uD9DE\u8EA2\uBBA6" + // 25340 - 25344
- "\u8EA2\uB4D6\u8EA2\uB4E9\u0000\u0000\u0000\u0000\u0000\uD9E4" + // 25345 - 25349
- "\u0000\u0000\u8EA2\uB4E7\u0000\u0000\u8EA2\uA4F1\u0000\uCBB0" + // 25350 - 25354
- "\u0000\u0000\u0000\uCEFB\u0000\u0000\u0000\uD2D5\u0000\uD2D6" + // 25355 - 25359
- "\u0000\uD2D7\u8EA2\uB7C9\u8EA2\uB1AE\u0000\uD6F2\u0000\u0000" + // 25360 - 25364
- "\u0000\u0000\u0000\uDCB3\u8EA2\uB7C8\u0000\u0000\u0000\u0000" + // 25365 - 25369
- "\u8EA2\uBEBC\u0000\uE0F7\u0000\u0000\u8EA2\uBEBB\u0000\uE0F6" + // 25370 - 25374
- "\u0000\u0000\u0000\u0000\u8EA2\uC5BB\u0000\uEDF3\u8EA2\uD2C3" + // 25375 - 25379
- "\u8EA2\uD2C0\u8EA2\uD2C1\u8EA2\uD2C2\u0000\u0000\u0000\u0000" + // 25380 - 25384
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDE4\u0000\u0000" + // 25385 - 25389
- "\u8EA2\uE2BE\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9C0" + // 25390 - 25394
- "\u8EA2\uE9BF\u0000\u0000\u8EA2\uEDE3\u0000\uC6F6\u8EA2\uA8B7" + // 25395 - 25399
- "\u0000\uD6F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0F8" + // 25400 - 25404
- "\u8EA2\uC5BC\u0000\u0000\u0000\u0000\u8EA2\uCCA9\u0000\u0000" + // 25405 - 25409
- "\u0000\uEDF4\u8EA2\uD8E0\u0000\u0000\u8EA2\uE2BF\u8EA2\uE9C1" + // 25410 - 25414
- "\u0000\uC6F7\u8EA2\uA6B2\u8EA2\uA6AB\u0000\u0000\u8EA2\uA6AE" + // 25415 - 25419
- "\u0000\u0000\u0000\uCCF4\u0000\uCCEB\u8EA2\uA6B5\u8EA2\uA6B3" + // 25420 - 25424
- "\u0000\u0000\u0000\uCCF0\u0000\uCCEE\u8EA2\uA6AA\u0000\uCCED" + // 25425 - 25429
- "\u8EA2\uA6A8\u8EA2\uA6A7\u0000\uCCEC\u0000\uCCEA\u0000\uCCF3" + // 25430 - 25434
- "\u0000\uCCEF\u0000\uCCE7\u0000\u0000\u8EA2\uA6AF\u0000\u0000" + // 25435 - 25439
- "\u0000\uD0DB\u0000\u0000\u0000\uD0E2\u8EA2\uA9F0\u0000\uD0DA" + // 25440 - 25444
- "\u8EA2\uA9E8\u8EA2\uA9E4\u0000\u0000\u8EA2\uA9F4\u8EA2\uA9E3" + // 25445 - 25449
- "\u0000\u0000\u0000\uD0DD\u8EA2\uA9ED\u0000\uD0E0\u0000\uD0E3" + // 25450 - 25454
- "\u0000\u0000\u0000\uD0DE\u8EA2\uA9F1\u0000\uD0E1\u0000\u0000" + // 25455 - 25459
- "\u0000\uD4F8\u8EA2\uA9F7\u8EA2\uA9E5\u0000\u0000\u0000\u0000" + // 25460 - 25464
- "\u8EA2\uA9E7\u8EA2\uA9EE\u8EA2\uA9F2\u8EA2\uA9F6\u8EA2\uA9F3" + // 25465 - 25469
- "\u8EA2\uA9EC\u8EA2\uA9EF\u0000\u0000\u0000\u0000\u8EA2\uA9E9" + // 25470 - 25474
- "\u0000\uD0E5\u8EA2\uA9EB\u8EA2\uA9EA\u8EA2\uA9F5\u0000\uD0DC" + // 25475 - 25479
- "\u8EA2\uA2AC\u0000\uC7F2\u0000\uC7F1\u0000\uC7EE\u0000\uC7EC" + // 25480 - 25484
- "\u8EA2\uA2AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25485 - 25489
- "\u0000\uC9F3\u0000\u0000\u0000\u0000\u0000\uC9F0\u8EA2\uA3D6" + // 25490 - 25494
- "\u8EA2\uA3D9\u8EA2\uA3D8\u0000\u0000\u0000\uC9EA\u0000\uC9F2" + // 25495 - 25499
- "\u0000\u0000\u0000\u0000\u0000\uC9EF\u8EA2\uA3D5\u8EA2\uA3D3" + // 25500 - 25504
- "\u0000\uC9EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9E9" + // 25505 - 25509
- "\u0000\uC9EC\u0000\u0000\u8EA2\uA3D4\u8EA2\uA3DB\u8EA2\uA3D7" + // 25510 - 25514
- "\u0000\uC9ED\u0000\uC9F1\u0000\uC9F4\u8EA2\uA3D2\u8EA2\uA3DA" + // 25515 - 25519
- "\u0000\uC9EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25520 - 25524
- "\u0000\u0000\u0000\uCCE9\u0000\uCCF1\u0000\u0000\u8EA2\uA6B0" + // 25525 - 25529
- "\u8EA2\uA6A9\u0000\uCCF2\u8EA2\uA6B4\u8EA2\uA6A5\u8EA2\uA6AC" + // 25530 - 25534
- "\u0000\u0000\u0000\u0000\u0000\uCCE8\u8EA2\uA6A6\u0000\uCCE6" + // 25535 - 25539
- "\u8EA2\uA6AD\u8EA2\uA6B1\u0000\uCCE5\u0000\u0000\u8EA2\uABF7" + // 25540 - 25544
- "\u8EA2\uB0E0\u0000\u0000\u8EA2\uCBEB\u0000\u0000\u0000\uF4BB" + // 25545 - 25549
- "\u0000\uC5DA\u0000\uCEEA\u8EA2\uABF8\u8EA2\uABF9\u8EA2\uBDEA" + // 25550 - 25554
- "\u0000\uE0D6\u0000\u0000\u0000\u0000\u8EA2\uC4E8\u0000\u0000" + // 25555 - 25559
- "\u0000\u0000\u0000\uE5A6\u8EA2\uCBEC\u0000\u0000\u0000\u0000" + // 25560 - 25564
- "\u0000\uEDE2\u0000\u0000\u0000\uF8C9\u0000\uC5DB\u8EA2\uBDEB" + // 25565 - 25569
- "\u0000\uC5DC\u0000\u0000\u0000\uC8CA\u8EA2\uA2E2\u0000\uC8C9" + // 25570 - 25574
- "\u0000\uCBA8\u0000\uCBA7\u0000\uCBA6\u8EA2\uA4E0\u0000\u0000" + // 25575 - 25579
- "\u0000\u0000\u0000\u0000\u0000\uCEEB\u0000\u0000\u0000\uCEEC" + // 25580 - 25584
- "\u8EA2\uA7FB\u0000\u0000\u8EA2\uABFA\u0000\u0000\u8EA2\uABFD" + // 25585 - 25589
- "\u0000\uD2BD\u8EA2\uABFB\u0000\u0000\u0000\uD2BC\u8EA2\uABFC" + // 25590 - 25594
- "\u0000\uD2BE\u0000\u0000\u8EA2\uB0E3\u8EA2\uB0E2\u8EA2\uB0E1" + // 25595 - 25599
- "\u0000\uD6D6\u0000\u0000\u8EA2\uB7A2\u8EA2\uB7A3\u0000\uDBF4" + // 25600 - 25604
- "\u8EA2\uB7A1\u8EA2\uB7A4\u8EA2\uA3D1\u0000\u0000\u0000\u0000" + // 25605 - 25609
- "\u0000\u0000\u0000\uCCE3\u8EA2\uA6A4\u0000\u0000\u0000\uCCE1" + // 25610 - 25614
- "\u0000\uCCE2\u0000\uCCE0\u8EA2\uAEDC\u0000\u0000\u0000\u0000" + // 25615 - 25619
- "\u0000\u0000\u0000\uD0D8\u0000\uD0D7\u0000\uD0D9\u0000\uD0D6" + // 25620 - 25624
- "\u0000\u0000\u8EA2\uA9E2\u0000\uCCE4\u0000\uD0D5\u0000\u0000" + // 25625 - 25629
- "\u0000\uD4EF\u0000\uD4F0\u0000\u0000\u0000\uD4F1\u0000\u0000" + // 25630 - 25634
- "\u8EA2\uB4D0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE4" + // 25635 - 25639
- "\u8EA2\uBAF6\u0000\uD9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25640 - 25644
- "\u0000\u0000\u0000\uE3DF\u0000\u0000\u0000\uE8C5\u0000\uE8C4" + // 25645 - 25649
- "\u8EA2\uC9D1\u0000\u0000\u0000\uECC7\u0000\uF0CD\u0000\u0000" + // 25650 - 25654
- "\u8EA2\uE1CC\u8EA2\uEDC8\u8EA2\uEFA3\u0000\uC4CC\u0000\uC6C3" + // 25655 - 25659
- "\u0000\u0000\u0000\uC6C4\u8EA2\uA2B1\u0000\uC7ED\u0000\uC7F0" + // 25660 - 25664
- "\u0000\u0000\u8EA2\uA2AF\u8EA2\uA2AD\u0000\uC7EF\u8EA2\uA2B0" + // 25665 - 25669
- "\u8EA2\uA2B2\u0000\uECBF\u8EA2\uC9C2\u8EA2\uC9CB\u0000\uE8BA" + // 25670 - 25674
- "\u0000\u0000\u0000\uE8BE\u8EA2\uC9C1\u8EA2\uC9C7\u8EA2\uC9CC" + // 25675 - 25679
- "\u8EA2\uC9BD\u0000\uE8BC\u8EA2\uC9C5\u0000\u0000\u0000\u0000" + // 25680 - 25684
- "\u8EA2\uC9C9\u8EA2\uC9CF\u8EA2\uC9BF\u8EA2\uC9C8\u0000\u0000" + // 25685 - 25689
- "\u0000\uE8BB\u8EA2\uC9CE\u0000\u0000\u0000\u0000\u0000\u0000" + // 25690 - 25694
- "\u8EA2\uC9C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECC3" + // 25695 - 25699
- "\u8EA2\uCFF2\u0000\uECC1\u0000\uECC0\u8EA2\uCFF4\u8EA2\uCFF9" + // 25700 - 25704
- "\u0000\u0000\u8EA2\uCFF5\u0000\u0000\u8EA2\uCFF8\u0000\uECC6" + // 25705 - 25709
- "\u0000\u0000\u0000\uF0AE\u0000\uECC5\u0000\u0000\u8EA2\uCFF1" + // 25710 - 25714
- "\u8EA2\uCFF7\u0000\u0000\u0000\uECC4\u8EA2\uCFF6\u0000\u0000" + // 25715 - 25719
- "\u8EA2\uCFF3\u0000\u0000\u0000\uECC2\u0000\u0000\u0000\u0000" + // 25720 - 25724
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6D7" + // 25725 - 25729
- "\u0000\u0000\u8EA2\uD6D9\u8EA2\uD6D4\u0000\uF0CA\u8EA2\uD6D6" + // 25730 - 25734
- "\u8EA2\uB4B6\u8EA2\uB4C9\u0000\uD9D8\u0000\u0000\u8EA2\uB4CF" + // 25735 - 25739
- "\u0000\uD9D2\u0000\uD9D4\u8EA2\uB4BE\u8EA2\uB4B9\u0000\uD4ED" + // 25740 - 25744
- "\u0000\uD9D3\u8EA2\uB4BB\u8EA2\uB4CA\u8EA2\uB4CE\u8EA2\uB4C5" + // 25745 - 25749
- "\u0000\u0000\u8EA2\uB4C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 25750 - 25754
- "\u8EA2\uB4B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25755 - 25759
- "\u8EA2\uBAE3\u0000\u0000\u8EA2\uBAEC\u8EA2\uBAEB\u0000\uDEE0" + // 25760 - 25764
- "\u8EA2\uBAE4\u0000\u0000\u0000\uDEE1\u0000\uDEDF\u0000\u0000" + // 25765 - 25769
- "\u8EA2\uBAE6\u0000\uDEDC\u8EA2\uBAEA\u0000\u0000\u8EA2\uBAE5" + // 25770 - 25774
- "\u8EA2\uBAE7\u8EA2\uBAE1\u0000\uDEDA\u0000\u0000\u8EA2\uBAF4" + // 25775 - 25779
- "\u8EA2\uBAF3\u8EA2\uBAF0\u0000\uDED9\u0000\uDEDD\u0000\uDEDE" + // 25780 - 25784
- "\u8EA2\uAECD\u8EA2\uBAED\u0000\uDEDB\u0000\uD9D9\u8EA2\uBAEF" + // 25785 - 25789
- "\u8EA2\uBAE2\u8EA2\uBAF2\u8EA2\uBAF1\u0000\u0000\u8EA2\uBAF5" + // 25790 - 25794
- "\u0000\u0000\u8EA2\uC2B6\u0000\u0000\u8EA2\uBAEE\u8EA2\uA5F9" + // 25795 - 25799
- "\u0000\u0000\u0000\uD0CD\u0000\uCCD7\u0000\u0000\u0000\u0000" + // 25800 - 25804
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25805 - 25809
- "\u0000\uD0CE\u8EA2\uA9D5\u0000\u0000\u0000\u0000\u8EA2\uA9DB" + // 25810 - 25814
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0D4\u8EA2\uA9D9" + // 25815 - 25819
- "\u8EA2\uA9DF\u0000\u0000\u8EA2\uA9D6\u8EA2\uA9DA\u8EA2\uA9DC" + // 25820 - 25824
- "\u8EA2\uA9DE\u8EA2\uA9D8\u0000\u0000\u8EA2\uA9D7\u8EA2\uA9D2" + // 25825 - 25829
- "\u8EA2\uA9D3\u0000\uD0CF\u0000\u0000\u0000\uD0D1\u0000\uD0D0" + // 25830 - 25834
- "\u8EA2\uA9D4\u8EA2\uA9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25835 - 25839
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25840 - 25844
- "\u0000\uD0D3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25845 - 25849
- "\u0000\u0000\u0000\u0000\u8EA2\uA9D1\u8EA2\uAED5\u0000\u0000" + // 25850 - 25854
- "\u8EA2\uAED4\u8EA2\uAED9\u8EA2\uAED0\u0000\u0000\u8EA2\uAED3" + // 25855 - 25859
- "\u8EA2\uAED2\u0000\u0000\u8EA2\uAED6\u0000\uC9DF\u8EA2\uA3CA" + // 25860 - 25864
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3CB\u0000\u0000" + // 25865 - 25869
- "\u0000\uC9E1\u0000\u0000\u8EA2\uA3CD\u0000\uC9DD\u8EA2\uA3CE" + // 25870 - 25874
- "\u8EA2\uA3CC\u0000\uC9E0\u0000\uC9E2\u0000\uC9E5\u0000\uC9E4" + // 25875 - 25879
- "\u0000\uC9DE\u8EA2\uA3CF\u0000\u0000\u0000\u0000\u0000\u0000" + // 25880 - 25884
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25885 - 25889
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25890 - 25894
- "\u0000\u0000\u0000\uCCDB\u8EA2\uA5FE\u0000\u0000\u0000\uCCDD" + // 25895 - 25899
- "\u0000\u0000\u0000\uCCDC\u0000\u0000\u8EA2\uA6A1\u0000\uCCDA" + // 25900 - 25904
- "\u0000\uCCD9\u8EA2\uA5F5\u0000\u0000\u8EA2\uA5F4\u0000\u0000" + // 25905 - 25909
- "\u8EA2\uA5F2\u8EA2\uA5F7\u8EA2\uA5F6\u8EA2\uA5F3\u8EA2\uA5FC" + // 25910 - 25914
- "\u8EA2\uA5FD\u8EA2\uA5FA\u8EA2\uA5F8\u0000\uCCD8\u0000\u0000" + // 25915 - 25919
- "\u0000\u0000\u0000\u0000\u8EA2\uA5FB\u0000\uCCDE\u8EA2\uA6A2" + // 25920 - 25924
- "\u0000\u0000\u0000\u0000\u0000\uFCF0\u8EA2\uF0DD\u0000\uFCF2" + // 25925 - 25929
- "\u0000\u0000\u8EA2\uF0DC\u8EA2\uF0DE\u0000\uFCF1\u8EA2\uF1C6" + // 25930 - 25934
- "\u0000\u0000\u8EA2\uF1FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25935 - 25939
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFE5\u0000\u0000" + // 25940 - 25944
- "\u0000\u0000\u0000\u0000\u0000\uE7DC\u0000\u0000\u8EA2\uCFA6" + // 25945 - 25949
- "\u0000\u0000\u8EA2\uD5D9\u0000\uF2FA\u0000\uF2FB\u0000\u0000" + // 25950 - 25954
- "\u0000\uCFE6\u0000\u0000\u0000\uEFEA\u0000\uF9C8\u0000\uD3F2" + // 25955 - 25959
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2FC\u0000\u0000" + // 25960 - 25964
- "\u0000\uFCCE\u0000\uD3F3\u8EA2\uBAB1\u0000\u0000\u8EA2\uC1CE" + // 25965 - 25969
- "\u0000\u0000\u8EA2\uC1D0\u0000\u0000\u8EA2\uC1CF\u0000\u0000" + // 25970 - 25974
- "\u8EA2\uC8E3\u8EA2\uC8E0\u0000\uE7DD\u0000\u0000\u0000\uE7DE" + // 25975 - 25979
- "\u8EA2\uC8E1\u8EA2\uC8E2\u0000\u0000\u8EA2\uCFA8\u8EA2\uCFAD" + // 25980 - 25984
- "\u0000\uEBE7\u8EA2\uCFA7\u8EA2\uCFA9\u8EA2\uCFB0\u0000\uFAE5" + // 25985 - 25989
- "\u0000\uFAE4\u0000\uFAE6\u8EA2\uEBD2\u0000\u0000\u8EA2\uEDC6" + // 25990 - 25994
- "\u8EA2\uEDC5\u0000\u0000\u0000\uFBD9\u0000\uFBDB\u0000\uFBDA" + // 25995 - 25999
- "\u8EA2\uEDC7\u0000\uFCB4\u8EA2\uF0B4\u0000\u0000\u0000\u0000" + // 26000 - 26004
- "\u0000\u0000\u0000\uFCDD\u0000\u0000\u8EA2\uF0B3\u8EA2\uF0FC" + // 26005 - 26009
- "\u0000\u0000\u0000\u0000\u8EA2\uA1AA\u0000\u0000\u0000\u0000" + // 26010 - 26014
- "\u0000\uC6BF\u0000\uC6BE\u0000\u0000\u0000\uC7E0\u0000\uC7DF" + // 26015 - 26019
- "\u8EA2\uA2A7\u0000\uC7DE\u8EA2\uA2A6\u0000\u0000\u0000\u0000" + // 26020 - 26024
- "\u0000\uC9DB\u8EA2\uA3C9\u0000\u0000\u8EA2\uA3C8\u0000\u0000" + // 26025 - 26029
- "\u0000\u0000\u0000\uC9D9\u0000\uC9DC\u0000\u0000\u0000\u0000" + // 26030 - 26034
- "\u8EA2\uA3C7\u0000\u0000\u0000\uC9DA\u0000\u0000\u0000\u0000" + // 26035 - 26039
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5F0" + // 26040 - 26044
- "\u0000\u0000\u8EA2\uA5F1\u0000\uCCD6\u0000\u0000\u0000\u0000" + // 26045 - 26049
- "\u0000\u0000\u0000\u0000\u0000\uD0CC\u0000\uF3C6\u8EA2\uDCD5" + // 26050 - 26054
- "\u8EA2\uDCD3\u8EA2\uDCD1\u8EA2\uDCD0\u0000\uF3C8\u8EA2\uDCCF" + // 26055 - 26059
- "\u0000\uF3C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26060 - 26064
- "\u8EA2\uDCCD\u8EA2\uDCCE\u0000\uF3C5\u0000\uF3CA\u0000\uF3C7" + // 26065 - 26069
- "\u0000\u0000\u0000\u0000\u8EA2\uDCCC\u0000\u0000\u0000\uF6BC" + // 26070 - 26074
- "\u0000\u0000\u8EA2\uE1C8\u8EA2\uE1C6\u8EA2\uE1CB\u8EA2\uE1C9" + // 26075 - 26079
- "\u0000\u0000\u8EA2\uE1C7\u8EA2\uE1CA\u0000\u0000\u0000\u0000" + // 26080 - 26084
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26085 - 26089
- "\u0000\uF8AC\u8EA2\uE5BE\u8EA2\uE5BF\u0000\uF8AD\u0000\u0000" + // 26090 - 26094
- "\u8EA2\uE5C0\u8EA2\uE5BC\u8EA2\uE5C1\u8EA2\uE5BD\u0000\uF6BD" + // 26095 - 26099
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE8EB\u8EA2\uE8ED" + // 26100 - 26104
- "\u0000\uF9E4\u8EA2\uE8EC\u0000\uF9E3\u0000\uF9E2\u0000\u0000" + // 26105 - 26109
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E5\u8EA2\uEBD3" + // 26110 - 26114
- "\u8EA2\uEBD4\u0000\u0000\u8EA2\uC4D6\u8EA2\uC4DD\u8EA2\uC4DF" + // 26115 - 26119
- "\u8EA2\uC4E5\u0000\u0000\u0000\uE5A2\u8EA2\uC4D1\u0000\u0000" + // 26120 - 26124
- "\u0000\uE4F8\u0000\u0000\u8EA2\uC4E0\u0000\uE4FD\u8EA2\uC4E6" + // 26125 - 26129
- "\u0000\uE4F4\u0000\u0000\u8EA2\uC4E3\u0000\u0000\u8EA2\uC4D3" + // 26130 - 26134
- "\u8EA2\uC4E4\u8EA2\uC4D2\u0000\u0000\u0000\uE5A4\u0000\u0000" + // 26135 - 26139
- "\u8EA2\uC4DE\u0000\uE4F5\u8EA2\uC4E7\u0000\u0000\u0000\uE4FA" + // 26140 - 26144
- "\u8EA2\uC4D7\u0000\uE5A1\u8EA2\uC4E2\u8EA2\uC4D5\u8EA2\uC4DC" + // 26145 - 26149
- "\u8EA2\uC4D8\u8EA2\uC4D4\u0000\uE4F7\u0000\uE4FE\u0000\uE4FC" + // 26150 - 26154
- "\u0000\uE4F9\u0000\uE5A3\u0000\uE4F6\u8EA2\uC4DB\u0000\u0000" + // 26155 - 26159
- "\u0000\uE4FB\u0000\u0000\u0000\uE0D4\u0000\u0000\u8EA2\uC4E1" + // 26160 - 26164
- "\u0000\u0000\u8EA2\uC4D9\u0000\u0000\u0000\u0000\u0000\u0000" + // 26165 - 26169
- "\u0000\u0000\u0000\u0000\u8EA2\uC4DA\u0000\u0000\u0000\u0000" + // 26170 - 26174
- "\u8EA2\uCBE7\u0000\u0000\u0000\uE9DB\u0000\u0000\u0000\u0000" + // 26175 - 26179
- "\u0000\uD4D4\u0000\u0000\u8EA2\uAEC8\u8EA2\uAEBC\u8EA2\uAEC0" + // 26180 - 26184
- "\u0000\uD4D9\u0000\uD4E4\u8EA2\uAEBD\u0000\uD4DF\u8EA2\uAEC2" + // 26185 - 26189
- "\u8EA2\uAEC9\u8EA2\uB4A4\u0000\u0000\u8EA2\uAEC7\u0000\uD4E6" + // 26190 - 26194
- "\u0000\uD4D3\u8EA2\uAEBF\u8EA2\uAEB6\u0000\u0000\u0000\uD4DB" + // 26195 - 26199
- "\u0000\u0000\u0000\u0000\u8EA2\uAEB5\u0000\u0000\u0000\u0000" + // 26200 - 26204
- "\u8EA2\uAEBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26205 - 26209
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26210 - 26214
- "\u0000\u0000\u0000\u0000\u8EA2\uAEB3\u0000\uD4E3\u0000\u0000" + // 26215 - 26219
- "\u0000\u0000\u8EA2\uB3FA\u0000\u0000\u0000\uD9C9\u8EA2\uB4AA" + // 26220 - 26224
- "\u0000\uD9C7\u0000\uD9C4\u8EA2\uB4A1\u0000\uD9C0\u8EA2\uB4A5" + // 26225 - 26229
- "\u0000\uD9CB\u8EA2\uB3F9\u8EA2\uB3FE\u8EA2\uB3FD\u0000\uD4D5" + // 26230 - 26234
- "\u0000\uD9C6\u8EA2\uB4A8\u0000\u0000\u8EA2\uB4AB\u8EA2\uB3F6" + // 26235 - 26239
- "\u0000\u0000\u0000\uDECE\u0000\u0000\u8EA2\uE2A7\u8EA2\uE5F6" + // 26240 - 26244
- "\u8EA2\uE2AA\u0000\u0000\u8EA2\uE5F7\u0000\uF8C7\u8EA2\uE5F5" + // 26245 - 26249
- "\u0000\u0000\u0000\u0000\u8EA2\uE5F4\u0000\u0000\u8EA2\uE5F3" + // 26250 - 26254
- "\u0000\uF8C8\u0000\u0000\u0000\u0000\u0000\uF9F7\u0000\u0000" + // 26255 - 26259
- "\u0000\u0000\u8EA2\uE9B9\u8EA2\uE9BA\u0000\u0000\u0000\u0000" + // 26260 - 26264
- "\u0000\u0000\u0000\u0000\u8EA2\uEBEA\u8EA2\uEBE9\u0000\uFAF5" + // 26265 - 26269
- "\u0000\u0000\u8EA2\uEBE8\u8EA2\uEDDA\u8EA2\uEDDB\u0000\u0000" + // 26270 - 26274
- "\u0000\u0000\u8EA2\uEFB5\u8EA2\uF0BF\u0000\u0000\u0000\u0000" + // 26275 - 26279
- "\u8EA2\uF1A6\u8EA2\uF2AC\u0000\uFDC6\u8EA2\uF2C0\u0000\uC5D7" + // 26280 - 26284
- "\u0000\u0000\u0000\uCEE7\u0000\uCEE8\u0000\u0000\u0000\u0000" + // 26285 - 26289
- "\u0000\uD2BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26290 - 26294
- "\u0000\uF4BA\u0000\uC5D8\u0000\u0000\u0000\uCEE9\u0000\uD6D5" + // 26295 - 26299
- "\u0000\uE5A5\u0000\uC5D9\u0000\u0000\u0000\uDBF3\u0000\uE9DF" + // 26300 - 26304
- "\u8EA2\uA1C2\u8EA2\uCFE8\u8EA2\uCFE2\u8EA2\uCFDF\u0000\u0000" + // 26305 - 26309
- "\u0000\u0000\u8EA2\uBACF\u8EA2\uCFE5\u0000\u0000\u8EA2\uCFDE" + // 26310 - 26314
- "\u8EA2\uCFE4\u8EA2\uCFE3\u0000\u0000\u8EA2\uCFE0\u0000\u0000" + // 26315 - 26319
- "\u0000\uECB9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26320 - 26324
- "\u0000\uECB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECBA" + // 26325 - 26329
- "\u8EA2\uCFE6\u0000\uF0BB\u8EA2\uCFE7\u0000\u0000\u0000\u0000" + // 26330 - 26334
- "\u0000\u0000\u8EA2\uD6CF\u0000\u0000\u8EA2\uD6C8\u0000\u0000" + // 26335 - 26339
- "\u0000\uF0C7\u8EA2\uD6CC\u0000\uF0BF\u0000\uF0C3\u8EA2\uD6CB" + // 26340 - 26344
- "\u0000\u0000\u0000\uF0C2\u0000\uF0BE\u0000\uF0C1\u0000\uF0BC" + // 26345 - 26349
- "\u0000\uF0C6\u8EA2\uD6CD\u8EA2\uD6C9\u0000\uF0C5\u8EA2\uD6C7" + // 26350 - 26354
- "\u0000\uF0C4\u8EA2\uD6CE\u8EA2\uD6CA\u0000\uECBB\u0000\u0000" + // 26355 - 26359
- "\u0000\uF0C8\u8EA2\uD6D0\u0000\uF0C0\u0000\uF0BD\u0000\u0000" + // 26360 - 26364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDCD2\u8EA2\uDCD4" + // 26365 - 26369
- "\u0000\uE8A7\u8EA2\uC9B5\u8EA2\uC9B7\u0000\u0000\u8EA2\uC9BA" + // 26370 - 26374
- "\u0000\u0000\u0000\uE8AC\u0000\u0000\u0000\uE8B3\u0000\uE8AD" + // 26375 - 26379
- "\u0000\u0000\u0000\u0000\u8EA2\uC9B0\u0000\uE8AE\u0000\uE8AF" + // 26380 - 26384
- "\u8EA2\uC9B3\u0000\uE8B4\u0000\u0000\u8EA2\uC9B1\u8EA2\uC9B6" + // 26385 - 26389
- "\u0000\uE8AB\u8EA2\uC9AF\u0000\uE8B1\u0000\uE8A9\u0000\u0000" + // 26390 - 26394
- "\u0000\u0000\u0000\u0000\u0000\uE8A8\u8EA2\uC9B4\u8EA2\uC9B9" + // 26395 - 26399
- "\u0000\u0000\u0000\uE8B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 26400 - 26404
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9AE" + // 26405 - 26409
- "\u0000\u0000\u0000\uECB7\u8EA2\uCFEE\u0000\u0000\u8EA2\uCFEB" + // 26410 - 26414
- "\u0000\u0000\u0000\uECB1\u0000\uECBD\u0000\uECBE\u0000\u0000" + // 26415 - 26419
- "\u0000\uECB4\u8EA2\uCFE9\u0000\uECB6\u8EA2\uCFE1\u0000\uECBC" + // 26420 - 26424
- "\u0000\u0000\u8EA2\uCFED\u0000\uECB3\u8EA2\uCFEF\u0000\uECB2" + // 26425 - 26429
- "\u0000\u0000\u8EA2\uCFEA\u8EA2\uCFEC\u0000\uECB5\u8EA2\uC1F6" + // 26430 - 26434
- "\u0000\u0000\u8EA2\uC2A7\u8EA2\uC1EF\u8EA2\uC1F8\u0000\uE3CC" + // 26435 - 26439
- "\u0000\uE3CD\u0000\uE3C5\u8EA2\uC2A3\u0000\uE3CF\u8EA2\uC1F4" + // 26440 - 26444
- "\u8EA2\uC1F3\u8EA2\uC1F1\u8EA2\uC2A5\u0000\uE3C3\u8EA2\uC1FD" + // 26445 - 26449
- "\u8EA2\uC1F2\u0000\uE3C6\u8EA2\uC1FB\u0000\uE3C1\u8EA2\uC1F7" + // 26450 - 26454
- "\u8EA2\uC1FE\u8EA2\uC2A2\u0000\u0000\u0000\u0000\u8EA2\uC2A6" + // 26455 - 26459
- "\u0000\uE3CA\u8EA2\uC1F0\u0000\uE3C4\u8EA2\uC1F5\u0000\u0000" + // 26460 - 26464
- "\u0000\uE3BF\u0000\u0000\u0000\uE3CB\u8EA2\uC2A1\u0000\uE3C7" + // 26465 - 26469
- "\u0000\uE3C8\u0000\uE3CE\u0000\uE3C2\u0000\uA3A1\u0000\uE3C0" + // 26470 - 26474
- "\u8EA2\uC1F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26475 - 26479
- "\u0000\u0000\u0000\uE3C9\u0000\u0000\u0000\u0000\u8EA2\uC2A4" + // 26480 - 26484
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8B5\u0000\uE8B0" + // 26485 - 26489
- "\u0000\u0000\u8EA2\uC9BC\u8EA2\uC9B8\u0000\u0000\u8EA2\uC9B2" + // 26490 - 26494
- "\u0000\uE8AA\u0000\uE8A6\u8EA2\uC9BB\u0000\uDEBE\u8EA2\uBAD5" + // 26495 - 26499
- "\u0000\uDEC4\u0000\uDECA\u0000\uE1C3\u0000\u0000\u0000\u0000" + // 26500 - 26504
- "\u0000\uDEC8\u8EA2\uBAD2\u0000\uDED5\u0000\uDEC1\u0000\uDEC9" + // 26505 - 26509
- "\u8EA2\uBADA\u8EA2\uC1FC\u8EA2\uBADF\u8EA2\uBAD3\u0000\u0000" + // 26510 - 26514
- "\u8EA2\uBACA\u8EA2\uBAD7\u8EA2\uBAD1\u0000\uDEC7\u8EA2\uBADD" + // 26515 - 26519
- "\u0000\u0000\u0000\u0000\u0000\uDEC3\u0000\uDED7\u0000\uDED0" + // 26520 - 26524
- "\u0000\u0000\u0000\uDEC5\u0000\uDEC2\u0000\u0000\u0000\uDECD" + // 26525 - 26529
- "\u0000\u0000\u8EA2\uBADE\u8EA2\uBAD0\u8EA2\uBAD6\u8EA2\uBAD8" + // 26530 - 26534
- "\u8EA2\uBACC\u8EA2\uBADB\u0000\uDEBF\u8EA2\uBACB\u0000\u0000" + // 26535 - 26539
- "\u0000\uDEC6\u0000\uDED6\u0000\uDED2\u8EA2\uBACD\u0000\uDECC" + // 26540 - 26544
- "\u0000\u0000\u0000\u0000\u0000\uDED3\u0000\uDECF\u0000\uDECB" + // 26545 - 26549
- "\u0000\u0000\u8EA2\uBAD4\u0000\u0000\u0000\u0000\u0000\u0000" + // 26550 - 26554
- "\u0000\u0000\u0000\u0000\u0000\uDED1\u0000\u0000\u0000\u0000" + // 26555 - 26559
- "\u0000\u0000\u8EA2\uC1FA\u8EA2\uB4AC\u0000\uD9CC\u0000\u0000" + // 26560 - 26564
- "\u0000\uD9BE\u0000\uD9BB\u8EA2\uB4A3\u0000\uD9B8\u0000\u0000" + // 26565 - 26569
- "\u8EA2\uB4A9\u0000\u0000\u0000\uD9BF\u8EA2\uB4AD\u0000\u0000" + // 26570 - 26574
- "\u8EA2\uB3F7\u8EA2\uB4A7\u0000\uD9C2\u8EA2\uB3F8\u8EA2\uB3FB" + // 26575 - 26579
- "\u8EA2\uB4A2\u0000\u0000\u0000\u0000\u0000\uD9C3\u0000\uD9C1" + // 26580 - 26584
- "\u0000\uD9CD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26585 - 26589
- "\u0000\uD9C8\u0000\u0000\u0000\uD9BC\u0000\uDAF6\u0000\u0000" + // 26590 - 26594
- "\u0000\uD9BD\u8EA2\uB3FC\u0000\uD9CA\u0000\uD9C5\u8EA2\uB4A6" + // 26595 - 26599
- "\u0000\uD9BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9B9" + // 26600 - 26604
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26605 - 26609
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26610 - 26614
- "\u8EA2\uB3F4\u8EA2\uB3F5\u8EA2\uBACE\u0000\u0000\u0000\u0000" + // 26615 - 26619
- "\u0000\u0000\u0000\uDEBD\u0000\uDEC0\u8EA2\uBAD9\u0000\uDED4" + // 26620 - 26624
- "\u8EA2\uBADC\u0000\uD0B7\u0000\uD0C2\u0000\uD0BF\u8EA2\uA9C1" + // 26625 - 26629
- "\u0000\uD0C3\u8EA2\uA9C7\u8EA2\uA9C8\u0000\uD0BE\u0000\uD0C4" + // 26630 - 26634
- "\u0000\uD0BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26635 - 26639
- "\u0000\uD0B9\u8EA2\uA9C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26640 - 26644
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9C5\u0000\u0000" + // 26645 - 26649
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26650 - 26654
- "\u0000\u0000\u8EA2\uA9CF\u0000\u0000\u8EA2\uAEC6\u0000\uD4DE" + // 26655 - 26659
- "\u8EA2\uAEB4\u0000\u0000\u8EA2\uAEB9\u0000\uD4D7\u0000\uD4E2" + // 26660 - 26664
- "\u8EA2\uAEB7\u0000\uD4D2\u0000\uD4DC\u0000\uD4E1\u8EA2\uAEBE" + // 26665 - 26669
- "\u0000\u0000\u0000\uD4DD\u0000\uD4E0\u0000\u0000\u0000\u0000" + // 26670 - 26674
- "\u8EA2\uAEC1\u0000\uD4D8\u8EA2\uAEB8\u0000\u0000\u0000\u0000" + // 26675 - 26679
- "\u0000\u0000\u8EA2\uAEC4\u8EA2\uAEC5\u0000\u0000\u0000\uD4DA" + // 26680 - 26684
- "\u8EA2\uAEC3\u0000\uD4D6\u0000\uD4E5\u0000\u0000\u8EA2\uAEBB" + // 26685 - 26689
- "\u0000\uCCC5\u8EA2\uA5DD\u8EA2\uA5DF\u0000\u0000\u0000\uCCC8" + // 26690 - 26694
- "\u0000\u0000\u0000\uCCCA\u8EA2\uA5DB\u8EA2\uA5E0\u0000\u0000" + // 26695 - 26699
- "\u0000\u0000\u0000\uCCD3\u0000\uCCCF\u8EA2\uA5E8\u0000\uCCD5" + // 26700 - 26704
- "\u0000\u0000\u0000\uCCCC\u8EA2\uA5DE\u0000\uCCC9\u0000\u0000" + // 26705 - 26709
- "\u0000\u0000\u0000\uCCC4\u0000\uCCC2\u0000\u0000\u8EA2\uA5EC" + // 26710 - 26714
- "\u0000\u0000\u0000\uCCD0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26715 - 26719
- "\u0000\u0000\u0000\u0000\u8EA2\uA9C9\u8EA2\uA9BD\u8EA2\uA9CC" + // 26720 - 26724
- "\u0000\u0000\u0000\u0000\u8EA2\uA9BF\u0000\uD0BC\u0000\uD0CA" + // 26725 - 26729
- "\u0000\uD0B8\u0000\uD0C9\u0000\uD0C1\u0000\uD0C6\u0000\uD0B6" + // 26730 - 26734
- "\u8EA2\uA9BE\u8EA2\uA9C4\u0000\uD0C5\u8EA2\uA9D0\u0000\uD0C7" + // 26735 - 26739
- "\u0000\u0000\u0000\uD0BD\u0000\u0000\u0000\u0000\u8EA2\uA9C6" + // 26740 - 26744
- "\u8EA2\uA9C3\u0000\uD0BB\u0000\u0000\u8EA2\uA9BC\u0000\uD0C8" + // 26745 - 26749
- "\u8EA2\uA9CB\u0000\uD0C0\u8EA2\uA9CD\u0000\uD0CB\u0000\uC9D4" + // 26750 - 26754
- "\u8EA2\uA3C3\u0000\uC9C8\u0000\uC9C5\u0000\u0000\u8EA2\uA3BC" + // 26755 - 26759
- "\u0000\uC9C4\u8EA2\uA3C6\u0000\uC9C7\u0000\u0000\u0000\uC9CB" + // 26760 - 26764
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9C2\u8EA2\uA3C2" + // 26765 - 26769
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3BB" + // 26770 - 26774
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26775 - 26779
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26780 - 26784
- "\u0000\u0000\u8EA2\uA5EB\u8EA2\uA5EA\u0000\uCCD1\u8EA2\uA5ED" + // 26785 - 26789
- "\u8EA2\uA5EF\u8EA2\uA5E4\u8EA2\uA5E7\u8EA2\uA5EE\u0000\uCCD2" + // 26790 - 26794
- "\u0000\u0000\u0000\u0000\u8EA2\uA5E1\u8EA2\uA5E5\u0000\u0000" + // 26795 - 26799
- "\u0000\u0000\u8EA2\uA5E9\u8EA2\uA9CA\u0000\uCCCD\u8EA2\uA9CE" + // 26800 - 26804
- "\u0000\uCCC0\u8EA2\uA5E6\u0000\uCCC1\u0000\uCCCE\u0000\uCCC7" + // 26805 - 26809
- "\u0000\uCCC3\u0000\u0000\u8EA2\uA5E2\u0000\uCCC6\u0000\uCCCB" + // 26810 - 26814
- "\u0000\uCCD4\u8EA2\uA5E3\u8EA2\uA5DC\u0000\uD9B4\u0000\uC4B2" + // 26815 - 26819
- "\u0000\u0000\u0000\uC4C5\u0000\uA4BF\u0000\uC5AB\u0000\u0000" + // 26820 - 26824
- "\u0000\uC5AA\u0000\uC5A9\u0000\uC6A5\u0000\uC6A4\u0000\u0000" + // 26825 - 26829
- "\u8EA2\uA1CE\u8EA2\uA2A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 26830 - 26834
- "\u0000\uCCB8\u0000\uCCB5\u0000\uCCB7\u0000\uCCB6\u0000\u0000" + // 26835 - 26839
- "\u0000\u0000\u0000\uD0B2\u0000\u0000\u0000\u0000\u0000\uDEBB" + // 26840 - 26844
- "\u0000\u0000\u0000\uC4B3\u0000\u0000\u0000\uC5AC\u0000\u0000" + // 26845 - 26849
- "\u0000\uC6A7\u0000\uC6A6\u0000\u0000\u8EA2\uA3B4\u0000\u0000" + // 26850 - 26854
- "\u0000\u0000\u0000\uCCB9\u0000\u0000\u0000\u0000\u0000\uA7BA" + // 26855 - 26859
- "\u0000\u0000\u0000\u0000\u8EA2\uA1B7\u0000\u0000\u0000\uC6A9" + // 26860 - 26864
- "\u0000\uC6A8\u0000\uC7CD\u0000\uC7CE\u8EA2\uA3B5\u0000\uC9BB" + // 26865 - 26869
- "\u0000\u0000\u0000\uC9BC\u0000\u0000\u0000\uCCBA\u0000\uCCBB" + // 26870 - 26874
- "\u0000\uCCBC\u0000\u0000\u0000\uD0B3\u8EA2\uA9B7\u0000\u0000" + // 26875 - 26879
- "\u0000\u0000\u0000\uD4CE\u8EA2\uA9B4\u0000\uD0B0\u8EA2\uA9B5" + // 26880 - 26884
- "\u0000\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0AD" + // 26885 - 26889
- "\u0000\u0000\u0000\uD0AE\u0000\u0000\u0000\u0000\u0000\u0000" + // 26890 - 26894
- "\u8EA2\uAEB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26895 - 26899
- "\u0000\uD9AC\u8EA2\uB3F1\u0000\u0000\u0000\uD9AF\u8EA2\uB3F0" + // 26900 - 26904
- "\u0000\uDBAB\u0000\uD9AE\u0000\uD9AD\u0000\u0000\u0000\uDEBA" + // 26905 - 26909
- "\u0000\u0000\u0000\uDEB9\u0000\uDEB8\u0000\uE3B9\u0000\u0000" + // 26910 - 26914
- "\u0000\u0000\u0000\uE3BC\u0000\uE3BD\u0000\uE3BB\u0000\u0000" + // 26915 - 26919
- "\u0000\uE3BA\u0000\u0000\u0000\u0000\u8EA2\uC9AA\u0000\u0000" + // 26920 - 26924
- "\u8EA2\uC9AB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFDD" + // 26925 - 26929
- "\u0000\uECAF\u8EA2\uCFDC\u0000\u0000\u0000\uF0BA\u8EA2\uDCCB" + // 26930 - 26934
- "\u0000\uF3C4\u0000\u0000\u8EA2\uE5BA\u0000\uF9E1\u0000\uA7B4" + // 26935 - 26939
- "\u0000\uC4C4\u0000\uC5A4\u8EA2\uA1B6\u0000\u0000\u0000\uC5A5" + // 26940 - 26944
- "\u0000\uC5A6\u8EA2\uC9A8\u8EA2\uC9A9\u0000\uE8A3\u0000\uE8A2" + // 26945 - 26949
- "\u8EA2\uCCE1\u0000\u0000\u0000\u0000\u0000\uECAA\u0000\uECAB" + // 26950 - 26954
- "\u0000\uECAC\u0000\uECAE\u8EA2\uCFDA\u8EA2\uCFDB\u0000\uECAD" + // 26955 - 26959
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B8\u0000\u0000" + // 26960 - 26964
- "\u0000\uF0B9\u0000\u0000\u0000\u0000\u8EA2\uE5B9\u8EA2\uEBD1" + // 26965 - 26969
- "\u8EA2\uEBD0\u8EA2\uEEFE\u0000\u0000\u0000\uC4B0\u0000\u0000" + // 26970 - 26974
- "\u0000\u0000\u0000\u0000\u0000\uC5FC\u0000\uC5FB\u0000\u0000" + // 26975 - 26979
- "\u0000\u0000\u0000\uC7C9\u0000\u0000\u0000\u0000\u8EA2\uA1FE" + // 26980 - 26984
- "\u0000\u0000\u0000\u0000\u0000\uC9B7\u0000\uC9B8\u0000\uC9B6" + // 26985 - 26989
- "\u0000\uC9B9\u8EA2\uA3B1\u8EA2\uA3B2\u0000\u0000\u0000\u0000" + // 26990 - 26994
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26995 - 26999
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27000 - 27004
- "\u0000\uCCB4\u8EA2\uA5D5\u0000\u0000\u0000\uCCB3\u0000\u0000" + // 27005 - 27009
- "\u8EA2\uC4A2\u8EA2\uC3FE\u8EA2\uC3FD\u0000\u0000\u8EA2\uC3FC" + // 27010 - 27014
- "\u8EA2\uC3FB\u0000\uE4D8\u8EA2\uC4A1\u0000\uE9B9\u8EA2\uCBAB" + // 27015 - 27019
- "\u8EA2\uCBAD\u0000\uE9BA\u8EA2\uCBAC\u0000\uEDC5\u0000\u0000" + // 27020 - 27024
- "\u0000\uEDC4\u8EA2\uD1B9\u0000\u0000\u0000\u0000\u8EA2\uD7EA" + // 27025 - 27029
- "\u8EA2\uD7E9\u8EA2\uD7EB\u0000\u0000\u0000\u0000\u0000\uF1A4" + // 27030 - 27034
- "\u0000\u0000\u8EA2\uDDB7\u0000\uF3FC\u0000\u0000\u8EA2\uE1F4" + // 27035 - 27039
- "\u0000\uF6D6\u8EA2\uE5E4\u0000\uFBE3\u0000\uC5CF\u0000\uC6DF" + // 27040 - 27044
- "\u0000\uC8BA\u0000\uCAE3\u0000\uCEBD\u0000\uCEBE\u0000\u0000" + // 27045 - 27049
- "\u0000\u0000\u0000\uD1F1\u0000\u0000\u0000\u0000\u8EA2\uAFFC" + // 27050 - 27054
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE4D9" + // 27055 - 27059
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2D9\u0000\uF1A5" + // 27060 - 27064
- "\u0000\uF6D7\u0000\uC5D0\u0000\u0000\u0000\uC8BB\u0000\u0000" + // 27065 - 27069
- "\u0000\u0000\u8EA2\uA7CC\u0000\uCEBF\u0000\uC4AE\u0000\uC4AF" + // 27070 - 27074
- "\u0000\u0000\u0000\uC4C3\u0000\u0000\u0000\u0000\u0000\uC5A1" + // 27075 - 27079
- "\u0000\uC5A2\u0000\uC5A3\u8EA2\uA1CC\u0000\uC5FA\u0000\u0000" + // 27080 - 27084
- "\u8EA2\uA1CB\u0000\u0000\u0000\uC7C7\u0000\u0000\u8EA2\uA1FD" + // 27085 - 27089
- "\u0000\uC7C5\u0000\uC7C6\u8EA2\uA1FC\u0000\u0000\u0000\u0000" + // 27090 - 27094
- "\u0000\uC7C8\u0000\uC7C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27095 - 27099
- "\u0000\u0000\u8EA2\uA3AE\u0000\uCFCF\u8EA2\uA3AF\u0000\u0000" + // 27100 - 27104
- "\u0000\u0000\u8EA2\uA3B0\u0000\u0000\u0000\u0000\u0000\uC9B2" + // 27105 - 27109
- "\u0000\uC9B1\u0000\u0000\u0000\u0000\u0000\uC9B5\u0000\uC9B3" + // 27110 - 27114
- "\u0000\uC9B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCB0" + // 27115 - 27119
- "\u0000\u0000\u0000\uCCAF\u8EA2\uA5D4\u8EA2\uA5D1\u8EA2\uA5D2" + // 27120 - 27124
- "\u0000\u0000\u8EA2\uA5D0\u0000\uCCB1\u0000\uCCAD\u0000\uCCAC" + // 27125 - 27129
- "\u0000\u0000\u0000\uCCAE\u0000\uCCAB\u0000\u0000\u0000\u0000" + // 27130 - 27134
- "\u0000\u0000\u0000\u0000\u0000\uDCBE\u0000\u0000\u8EA2\uB7DD" + // 27135 - 27139
- "\u0000\u0000\u0000\u0000\u8EA2\uB7D6\u8EA2\uB7D8\u8EA2\uB7DA" + // 27140 - 27144
- "\u0000\u0000\u8EA2\uB7DB\u8EA2\uB7D9\u0000\uDCBF\u0000\u0000" + // 27145 - 27149
- "\u8EA2\uB7DE\u0000\u0000\u8EA2\uB7D7\u0000\u0000\u0000\u0000" + // 27150 - 27154
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27155 - 27159
- "\u0000\u0000\u0000\u0000\u8EA2\uBECC\u0000\uE0FC\u8EA2\uBED4" + // 27160 - 27164
- "\u0000\u0000\u8EA2\uBEC9\u0000\u0000\u8EA2\uBED5\u0000\u0000" + // 27165 - 27169
- "\u8EA2\uBECA\u8EA2\uBECB\u0000\u0000\u0000\u0000\u8EA2\uBED3" + // 27170 - 27174
- "\u8EA2\uBED2\u8EA2\uBECF\u0000\uDCBD\u0000\uE0FD\u8EA2\uBECD" + // 27175 - 27179
- "\u8EA2\uBED0\u0000\uE0FE\u8EA2\uBED1\u8EA2\uBECE\u0000\u0000" + // 27180 - 27184
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27185 - 27189
- "\u0000\u0000\u8EA2\uC5D4\u0000\u0000\u8EA2\uC5D8\u0000\uE5D5" + // 27190 - 27194
- "\u0000\u0000\u8EA2\uCCB8\u0000\uE5D8\u0000\uF0B5\u0000\u0000" + // 27195 - 27199
- "\u0000\uA7AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27200 - 27204
- "\u8EA2\uA1AE\u0000\u0000\u0000\uC5F4\u0000\uC5F5\u0000\u0000" + // 27205 - 27209
- "\u0000\u0000\u0000\uC7C2\u0000\u0000\u8EA2\uA3AC\u0000\u0000" + // 27210 - 27214
- "\u0000\uD0A4\u0000\uD0A3\u8EA2\uAEA3\u8EA2\uAEA2\u0000\uD9A8" + // 27215 - 27219
- "\u0000\uA7AE\u0000\uC4FD\u8EA2\uA1B5\u0000\u0000\u0000\u0000" + // 27220 - 27224
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5CD\u0000\u0000" + // 27225 - 27229
- "\u0000\uD0A5\u0000\u0000\u0000\uD4C3\u0000\u0000\u0000\uD4C1" + // 27230 - 27234
- "\u0000\uD4C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27235 - 27239
- "\u0000\uF0B6\u0000\uA7AF\u0000\uC5F6\u0000\u0000\u0000\u0000" + // 27240 - 27244
- "\u0000\u0000\u0000\uC7C3\u8EA2\uA1FB\u0000\u0000\u0000\u0000" + // 27245 - 27249
- "\u0000\u0000\u0000\u0000\u0000\uC9AF\u0000\uC9B0\u0000\u0000" + // 27250 - 27254
- "\u8EA2\uA3AD\u0000\u0000\u0000\u0000\u8EA2\uA5CE\u0000\uCCA9" + // 27255 - 27259
- "\u8EA2\uA5CF\u0000\u0000\u0000\uE9A9\u8EA2\uCBA7\u0000\uE9B7" + // 27260 - 27264
- "\u8EA2\uCAF5\u0000\u0000\u8EA2\uCBAA\u0000\u0000\u0000\u0000" + // 27265 - 27269
- "\u8EA2\uCAE5\u8EA2\uCAFA\u0000\uE9AC\u0000\uE9B5\u0000\uE9B3" + // 27270 - 27274
- "\u8EA2\uCAE7\u8EA2\uCAFC\u0000\uE9B2\u0000\u0000\u0000\u0000" + // 27275 - 27279
- "\u0000\uE9AB\u8EA2\uCAF8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27280 - 27284
- "\u0000\u0000\u8EA2\uCBA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27285 - 27289
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27290 - 27294
- "\u8EA2\uD0FC\u0000\u0000\u8EA2\uD0F8\u8EA2\uD0F4\u8EA2\uD1AA" + // 27295 - 27299
- "\u8EA2\uD1A7\u0000\uEDB7\u0000\u0000\u0000\u0000\u8EA2\uD1AE" + // 27300 - 27304
- "\u8EA2\uD0FB\u0000\uEDC2\u8EA2\uD1A4\u0000\u0000\u0000\u0000" + // 27305 - 27309
- "\u8EA2\uD0F7\u8EA2\uD1A3\u0000\uEDBF\u8EA2\uD1B7\u0000\u0000" + // 27310 - 27314
- "\u8EA2\uD1B4\u8EA2\uD1A6\u8EA2\uD0F5\u0000\u0000\u0000\u0000" + // 27315 - 27319
- "\u8EA2\uD1AB\u8EA2\uD1AD\u0000\uEDBB\u8EA2\uD1A1\u8EA2\uD0FA" + // 27320 - 27324
- "\u0000\uC4C2\u0000\uC4F8\u0000\u0000\u0000\uC4F7\u0000\uC5F3" + // 27325 - 27329
- "\u0000\uC5F2\u0000\uC7BE\u0000\uC7BD\u0000\uC7BF\u0000\uC7BC" + // 27330 - 27334
- "\u0000\u0000\u0000\uC9AC\u0000\uC9AB\u0000\uC9AD\u0000\u0000" + // 27335 - 27339
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCA3\u0000\u0000" + // 27340 - 27344
- "\u0000\uCCA2\u0000\uCCA4\u0000\u0000\u0000\uD0A2\u0000\u0000" + // 27345 - 27349
- "\u0000\uA2F9\u8EA2\uAEA1\u0000\uA2FA\u0000\uD9A7\u0000\uA2FC" + // 27350 - 27354
- "\u0000\uA2FB\u8EA2\uBAC4\u0000\u0000\u0000\uA2FD\u0000\uE7FE" + // 27355 - 27359
- "\u0000\uA2FE\u0000\u0000\u0000\uC4AB\u0000\u0000\u0000\uC4F9" + // 27360 - 27364
- "\u0000\uC7C0\u0000\uCCA5\u0000\u0000\u0000\uC4AC\u0000\uC4FC" + // 27365 - 27369
- "\u0000\uC4FA\u0000\uC4FB\u0000\u0000\u0000\u0000\u0000\uC7C1" + // 27370 - 27374
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9AE\u0000\uCCA7" + // 27375 - 27379
- "\u0000\uCCA6\u0000\uCCA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27380 - 27384
- "\u0000\uD4C0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1A5" + // 27385 - 27389
- "\u0000\u0000\u0000\uC5AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 27390 - 27394
- "\u0000\u0000\u0000\u0000\u8EA2\uA2A4\u0000\u0000\u0000\u0000" + // 27395 - 27399
- "\u0000\u0000\u8EA2\uA3B6\u8EA2\uA3B7\u0000\u0000\u0000\u0000" + // 27400 - 27404
- "\u8EA2\uA5D9\u0000\u0000\u8EA2\uA5DA\u0000\u0000\u8EA2\uA9B9" + // 27405 - 27409
- "\u8EA2\uA9B8\u8EA2\uA9BB\u8EA2\uA9BA\u0000\uD0B4\u0000\u0000" + // 27410 - 27414
- "\u8EA2\uB3F3\u0000\uD4D0\u8EA2\uAEB2\u0000\uD4CF\u0000\u0000" + // 27415 - 27419
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC8\u0000\uDEBC" + // 27420 - 27424
- "\u0000\u0000\u8EA2\uBAC9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27425 - 27429
- "\u0000\u0000\u8EA2\uC9AD\u0000\uE8A5\u0000\u0000\u0000\u0000" + // 27430 - 27434
- "\u0000\u0000\u0000\u0000\u0000\uECB0\u0000\u0000\u8EA2\uE5BB" + // 27435 - 27439
- "\u0000\u0000\u0000\uA7BC\u0000\u0000\u0000\u0000\u8EA2\uA1B8" + // 27440 - 27444
- "\u0000\u0000\u0000\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27445 - 27449
- "\u0000\u0000\u8EA2\uD2F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27450 - 27454
- "\u0000\u0000\u0000\uF1EA\u0000\uF1EF\u0000\uF1E8\u8EA2\uD9C4" + // 27455 - 27459
- "\u8EA2\uD9BB\u8EA2\uD9C7\u8EA2\uD9BF\u8EA2\uD9C5\u0000\uF1F0" + // 27460 - 27464
- "\u0000\uF1E9\u8EA2\uD9B8\u8EA2\uD9BE\u8EA2\uD9C8\u8EA2\uD9C1" + // 27465 - 27469
- "\u8EA2\uD9C6\u8EA2\uD9BA\u0000\u0000\u0000\u0000\u8EA2\uD9C2" + // 27470 - 27474
- "\u0000\uF1EB\u8EA2\uD9C0\u0000\uF1EE\u0000\uF1ED\u8EA2\uD9BC" + // 27475 - 27479
- "\u8EA2\uD9BD\u8EA2\uD9B9\u8EA2\uD9C3\u0000\uF1EC\u8EA2\uD9CA" + // 27480 - 27484
- "\u8EA2\uD9C9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEC7" + // 27485 - 27489
- "\u8EA2\uDEC3\u0000\uF4E9\u0000\u0000\u8EA2\uDEBD\u0000\uF4E3" + // 27490 - 27494
- "\u0000\uF4F3\u8EA2\uDEC9\u0000\uF4EB\u0000\uF4E7\u8EA2\uDEC0" + // 27495 - 27499
- "\u0000\uF4EE\u0000\uF4F1\u8EA2\uDECB\u0000\uF4E6\u8EA2\uDEC2" + // 27500 - 27504
- "\u0000\uF4EF\u8EA2\uDECD\u8EA2\uDECA\u8EA2\uDEBE\u0000\uF4EA" + // 27505 - 27509
- "\u0000\uF4E4\u0000\uF4F2\u0000\uECA1\u0000\u0000\u0000\uECA5" + // 27510 - 27514
- "\u8EA2\uCFCF\u0000\uEBFE\u0000\uECA8\u8EA2\uCFD2\u8EA2\uCFD3" + // 27515 - 27519
- "\u0000\uECA6\u0000\uECA7\u8EA2\uCFD9\u8EA2\uCFD6\u8EA2\uCFD7" + // 27520 - 27524
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B3\u8EA2\uD6C3" + // 27525 - 27529
- "\u0000\uF0B0\u8EA2\uD6C0\u0000\uF0B2\u0000\uF0B4\u0000\u0000" + // 27530 - 27534
- "\u8EA2\uD6C1\u0000\uF0B1\u0000\u0000\u8EA2\uD6C2\u0000\u0000" + // 27535 - 27539
- "\u8EA2\uD6BF\u0000\u0000\u0000\u0000\u0000\uF3C1\u8EA2\uDCC9" + // 27540 - 27544
- "\u0000\uF3C2\u8EA2\uDCC7\u0000\u0000\u8EA2\uDCC8\u8EA2\uDCC6" + // 27545 - 27549
- "\u8EA2\uDCC5\u0000\u0000\u0000\u0000\u8EA2\uDCCA\u0000\uF3C0" + // 27550 - 27554
- "\u0000\u0000\u0000\u0000\u8EA2\uE1C4\u8EA2\uE1C5\u0000\u0000" + // 27555 - 27559
- "\u8EA2\uCFD0\u8EA2\uE1C3\u0000\uF3C3\u0000\uF8AB\u8EA2\uE5B7" + // 27560 - 27564
- "\u8EA2\uE5B8\u0000\u0000\u0000\uFAE2\u0000\uFAE3\u8EA2\uEBCF" + // 27565 - 27569
- "\u8EA2\uEBCE\u0000\uFBD8\u0000\uFBD7\u8EA2\uEEFD\u0000\u0000" + // 27570 - 27574
- "\u0000\uC4AA\u0000\uDEAE\u0000\u0000\u8EA2\uBAC2\u8EA2\uBABB" + // 27575 - 27579
- "\u0000\u0000\u0000\uDEAB\u0000\u0000\u8EA2\uBAC3\u0000\u0000" + // 27580 - 27584
- "\u0000\u0000\u0000\u0000\u8EA2\uBAB9\u8EA2\uBABC\u0000\uDEAA" + // 27585 - 27589
- "\u8EA2\uBABD\u0000\u0000\u0000\u0000\u0000\uDEAD\u8EA2\uBAC1" + // 27590 - 27594
- "\u0000\u0000\u8EA2\uBAB7\u8EA2\uBAB6\u0000\uDEAF\u0000\u0000" + // 27595 - 27599
- "\u0000\uDEB0\u0000\uDEAC\u0000\uDEB1\u8EA2\uBAB5\u8EA2\uBAC0" + // 27600 - 27604
- "\u8EA2\uBABE\u8EA2\uBAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27605 - 27609
- "\u0000\uDEA9\u8EA2\uBABA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27610 - 27614
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27615 - 27619
- "\u0000\uE3B1\u0000\uE3AB\u8EA2\uC1DC\u0000\uE3B4\u8EA2\uC1E2" + // 27620 - 27624
- "\u8EA2\uC1E5\u0000\uE3AD\u0000\uE3AE\u8EA2\uC1DF\u0000\uE3AC" + // 27625 - 27629
- "\u8EA2\uC1E8\u0000\uE3B2\u8EA2\uC1E9\u0000\u0000\u8EA2\uC1E4" + // 27630 - 27634
- "\u0000\uE3B3\u0000\u0000\u8EA2\uC1D9\u0000\uE3B0\u8EA2\uC1DA" + // 27635 - 27639
- "\u8EA2\uB3E6\u8EA2\uB3DA\u0000\u0000\u0000\uD8F6\u0000\u0000" + // 27640 - 27644
- "\u8EA2\uB3DF\u8EA2\uB3E5\u0000\uD8F5\u8EA2\uB3D8\u0000\uD8F9" + // 27645 - 27649
- "\u8EA2\uB3DC\u8EA2\uB3D5\u0000\uD8F7\u8EA2\uB3D9\u0000\uD8FC" + // 27650 - 27654
- "\u0000\uD9A3\u0000\u0000\u8EA2\uB3EA\u0000\u0000\u8EA2\uB3D4" + // 27655 - 27659
- "\u0000\u0000\u0000\uD8FD\u0000\u0000\u8EA2\uB3E9\u0000\u0000" + // 27660 - 27664
- "\u0000\u0000\u0000\uD8F8\u8EA2\uB3DB\u0000\uD8F4\u8EA2\uB3D6" + // 27665 - 27669
- "\u8EA2\uB3D2\u8EA2\uB3E0\u8EA2\uB3D3\u8EA2\uB3D1\u8EA2\uB3DD" + // 27670 - 27674
- "\u8EA2\uB3E3\u8EA2\uB3E4\u0000\uD8FA\u0000\u0000\u0000\u0000" + // 27675 - 27679
- "\u8EA2\uBABF\u8EA2\uB3E1\u8EA2\uB3D0\u8EA2\uB3E2\u0000\u0000" + // 27680 - 27684
- "\u0000\uD9A6\u8EA2\uB3E7\u0000\uD9A5\u8EA2\uB3CF\u0000\u0000" + // 27685 - 27689
- "\u8EA2\uB3D7\u8EA2\uB3E8\u0000\uD9A1\u0000\uD8FE\u0000\uD8FB" + // 27690 - 27694
- "\u0000\uD9A2\u0000\u0000\u0000\u0000\u0000\uD8F2\u0000\u0000" + // 27695 - 27699
- "\u0000\u0000\u0000\uD8F3\u0000\u0000\u0000\u0000\u0000\uCBD2" + // 27700 - 27704
- "\u0000\u0000\u0000\uCBD5\u0000\uCBD4\u0000\uCBD3\u0000\u0000" + // 27705 - 27709
- "\u0000\u0000\u8EA2\uA5A5\u0000\u0000\u8EA2\uA8ED\u0000\u0000" + // 27710 - 27714
- "\u8EA2\uA8EF\u0000\uCFD2\u0000\u0000\u0000\u0000\u0000\uCFD4" + // 27715 - 27719
- "\u8EA2\uA8EC\u8EA2\uA8EE\u0000\uCFD3\u8EA2\uA8F1\u8EA2\uA8F0" + // 27720 - 27724
- "\u8EA2\uA8F2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27725 - 27729
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADD7" + // 27730 - 27734
- "\u8EA2\uADD5\u0000\uD3DF\u8EA2\uADD4\u0000\uD3E4\u0000\uD3E1" + // 27735 - 27739
- "\u0000\uD3DE\u0000\u0000\u0000\uD3E5\u0000\u0000\u0000\uD3E0" + // 27740 - 27744
- "\u0000\uD3E3\u0000\u0000\u0000\uD3E2\u8EA2\uADD6\u0000\u0000" + // 27745 - 27749
- "\u0000\uD3DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8CF" + // 27750 - 27754
- "\u8EA2\uB3AF\u8EA2\uB3B5\u0000\uD8CC\u0000\uD8D3\u0000\u0000" + // 27755 - 27759
- "\u0000\uD8CE\u8EA2\uB3B2\u8EA2\uB3B4\u0000\uD8D1\u8EA2\uB3AE" + // 27760 - 27764
- "\u8EA2\uB3B1\u0000\uD4B1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27765 - 27769
- "\u0000\u0000\u8EA2\uADEA\u0000\uD4AA\u8EA2\uADEB\u0000\u0000" + // 27770 - 27774
- "\u0000\uD4BF\u0000\u0000\u0000\uD4B6\u0000\uD4A1\u0000\uD4A2" + // 27775 - 27779
- "\u8EA2\uADFE\u0000\uD9A4\u0000\u0000\u0000\uD4AF\u0000\uD4AE" + // 27780 - 27784
- "\u8EA2\uADEC\u0000\uD4B2\u8EA2\uB3DE\u0000\uD4A9\u8EA2\uADF7" + // 27785 - 27789
- "\u0000\uD4B8\u0000\uD4B7\u0000\uD4AD\u8EA2\uADEF\u8EA2\uADF8" + // 27790 - 27794
- "\u0000\u0000\u8EA2\uADE9\u0000\uD4AC\u8EA2\uADF9\u0000\uD4B5" + // 27795 - 27799
- "\u8EA2\uADED\u0000\uD4A3\u0000\u0000\u0000\uD4A6\u0000\uD4A5" + // 27800 - 27804
- "\u8EA2\uADFA\u0000\uD4B3\u0000\uD4A8\u0000\uD4BC\u0000\uD4BE" + // 27805 - 27809
- "\u8EA2\uADF4\u0000\uD4BB\u0000\u0000\u8EA2\uADFC\u8EA2\uADEE" + // 27810 - 27814
- "\u8EA2\uADFD\u0000\u0000\u8EA2\uADF2\u0000\u0000\u8EA2\uADFB" + // 27815 - 27819
- "\u0000\u0000\u8EA2\uADF3\u0000\u0000\u0000\u0000\u0000\u0000" + // 27820 - 27824
- "\u0000\u0000\u0000\uD4AB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27825 - 27829
- "\u0000\uE3AA\u8EA2\uC1D6\u8EA2\uC1D7\u0000\uA7A6\u0000\uC4A7" + // 27830 - 27834
- "\u0000\u0000\u0000\uC4E8\u0000\u0000\u0000\u0000\u0000\uCBE7" + // 27835 - 27839
- "\u0000\uC4A8\u8EA2\uA1A9\u0000\uC4C0\u0000\u0000\u0000\u0000" + // 27840 - 27844
- "\u0000\uC4E9\u0000\uC4EB\u8EA2\uA1B1\u0000\uC4EC\u0000\uC4EA" + // 27845 - 27849
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7A7\u0000\u0000" + // 27850 - 27854
- "\u0000\uCBE8\u0000\u0000\u0000\u0000\u0000\uCBE9\u0000\uCFE7" + // 27855 - 27859
- "\u0000\uA7A8\u0000\uC4C1\u0000\uC4ED\u0000\u0000\u0000\uC7A8" + // 27860 - 27864
- "\u0000\uC7AA\u0000\uC7A9\u0000\u0000\u0000\uC8EC\u0000\u0000" + // 27865 - 27869
- "\u0000\u0000\u0000\uCBEA\u0000\uCBEB\u0000\uCFE8\u0000\uCFE9" + // 27870 - 27874
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FE" + // 27875 - 27879
- "\u0000\u0000\u0000\u0000\u8EA2\uC1D8\u0000\u0000\u0000\u0000" + // 27880 - 27884
- "\u8EA2\uEDC4\u0000\uC4A9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27885 - 27889
- "\u0000\u0000\u0000\u0000\u8EA2\uAEA5\u8EA2\uAEA6\u0000\uD4C6" + // 27890 - 27894
- "\u0000\u0000\u8EA2\uAEA7\u0000\u0000\u8EA2\uAEA4\u0000\uD4C7" + // 27895 - 27899
- "\u0000\uD4C5\u0000\uD4C4\u8EA2\uAEA8\u0000\u0000\u8EA2\uB3EB" + // 27900 - 27904
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC5\u0000\u0000" + // 27905 - 27909
- "\u0000\u0000\u8EA2\uC1EA\u8EA2\uC9A7\u0000\u0000\u0000\u0000" + // 27910 - 27914
- "\u0000\u0000\u0000\uECA9\u0000\uF0B7\u8EA2\uD6C4\u0000\u0000" + // 27915 - 27919
- "\u0000\uC4AD\u0000\uC4BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27920 - 27924
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27925 - 27929
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27930 - 27934
- "\u0000\u0000\u0000\uD9A9\u0000\uDEB3\u0000\u0000\u0000\uE8A1" + // 27935 - 27939
- "\u0000\u0000\u8EA2\uA1A3\u0000\uC4FE\u0000\u0000\u0000\uC5F9" + // 27940 - 27944
- "\u0000\uC5F7\u0000\uC5F8\u0000\u0000\u0000\u0000\u0000\uCCAA" + // 27945 - 27949
- "\u0000\u0000\u0000\u0000\u0000\uE6AD\u0000\u0000\u0000\u0000" + // 27950 - 27954
- "\u0000\u0000\u8EA2\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27955 - 27959
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6D4\u8EA2\uC6FA" + // 27960 - 27964
- "\u8EA2\uC6D3\u0000\uEAE8\u8EA2\uCDDA\u0000\u0000\u0000\u0000" + // 27965 - 27969
- "\u8EA2\uCDC9\u0000\u0000\u0000\u0000\u8EA2\uCDB3\u8EA2\uCDD1" + // 27970 - 27974
- "\u0000\uEAE0\u8EA2\uCDC2\u8EA2\uCDCC\u0000\uEAE3\u8EA2\uCDC5" + // 27975 - 27979
- "\u0000\uEAE1\u8EA2\uCDB6\u8EA2\uCDD4\u8EA2\uCDB5\u8EA2\uCDC8" + // 27980 - 27984
- "\u0000\u0000\u8EA2\uCDB4\u0000\u0000\u0000\u0000\u8EA2\uCDC6" + // 27985 - 27989
- "\u8EA2\uCDCF\u8EA2\uCDCD\u8EA2\uCDC1\u8EA2\uCDBC\u8EA2\uCDBA" + // 27990 - 27994
- "\u0000\u0000\u8EA2\uCDBB\u8EA2\uCDCE\u8EA2\uCDD9\u8EA2\uCDC3" + // 27995 - 27999
- "\u0000\uEAE2\u0000\u0000\u8EA2\uCDBE\u0000\u0000\u8EA2\uCDD2" + // 28000 - 28004
- "\u0000\u0000\u0000\uEAE5\u8EA2\uCDBD\u8EA2\uCDB7\u8EA2\uCDC7" + // 28005 - 28009
- "\u0000\uEAE9\u0000\u0000\u0000\u0000\u0000\uEADD\u8EA2\uA9AF" + // 28010 - 28014
- "\u8EA2\uA9A5\u0000\uCFFB\u0000\uCFF2\u0000\uCFFA\u8EA2\uA8FE" + // 28015 - 28019
- "\u0000\u0000\u8EA2\uA9AC\u0000\u0000\u8EA2\uA9A3\u0000\uCFF6" + // 28020 - 28024
- "\u8EA2\uA9A4\u0000\u0000\u8EA2\uA8FD\u0000\uCFFD\u0000\uCFF0" + // 28025 - 28029
- "\u0000\uCFF9\u0000\uCFEF\u0000\u0000\u8EA2\uA9A1\u8EA2\uA9A6" + // 28030 - 28034
- "\u0000\u0000\u8EA2\uA9AD\u0000\uCFF7\u0000\uCFF4\u8EA2\uA9A8" + // 28035 - 28039
- "\u0000\uCFFC\u8EA2\uA9AB\u8EA2\uA9A7\u0000\uCFF1\u0000\uCFFE" + // 28040 - 28044
- "\u0000\uCFF5\u0000\uCFEE\u0000\uCFEA\u0000\u0000\u0000\u0000" + // 28045 - 28049
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28050 - 28054
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9B1\u0000\u0000" + // 28055 - 28059
- "\u0000\uD4BA\u0000\uD4A4\u0000\u0000\u0000\uD4B4\u0000\u0000" + // 28060 - 28064
- "\u0000\uD4B9\u8EA2\uADF1\u8EA2\uADF0\u8EA2\uADF5\u8EA2\uADF6" + // 28065 - 28069
- "\u0000\uD4A7\u0000\u0000\u0000\uD4B0\u0000\u0000\u0000\u0000" + // 28070 - 28074
- "\u0000\u0000\u0000\uD4BD\u0000\u0000\u0000\uD5F2\u0000\uD5EB" + // 28075 - 28079
- "\u0000\uD5EE\u0000\u0000\u0000\uD5F1\u0000\u0000\u8EA2\uAFD7" + // 28080 - 28084
- "\u0000\u0000\u0000\uD5EC\u8EA2\uAFD5\u0000\u0000\u0000\uD5F0" + // 28085 - 28089
- "\u0000\u0000\u0000\u0000\u0000\uD5ED\u0000\u0000\u8EA2\uAFD8" + // 28090 - 28094
- "\u0000\uD5EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28095 - 28099
- "\u0000\u0000\u0000\u0000\u8EA2\uB5EE\u0000\uDBA5\u8EA2\uB5ED" + // 28100 - 28104
- "\u8EA2\uB5EF\u0000\uDBA4\u0000\uDBA9\u8EA2\uAFD6\u0000\u0000" + // 28105 - 28109
- "\u8EA2\uB5EC\u8EA2\uB5F0\u0000\u0000\u0000\uDBA6\u8EA2\uB5EB" + // 28110 - 28114
- "\u0000\uDBA8\u0000\u0000\u0000\uDBA7\u0000\u0000\u8EA2\uBCCA" + // 28115 - 28119
- "\u0000\u0000\u8EA2\uBCC5\u0000\u0000\u0000\uDFDB\u0000\uDFDF" + // 28120 - 28124
- "\u0000\uDFDC\u8EA2\uBCC8\u8EA2\uBCCB\u0000\u0000\u0000\uDFDD" + // 28125 - 28129
- "\u0000\u0000\u0000\uDFDE\u0000\uDFE3\u8EA2\uC3CD\u8EA2\uBCC9" + // 28130 - 28134
- "\u0000\uDFE1\u8EA2\uBCC6\u8EA2\uBCC4\u0000\u0000\u0000\uDFE2" + // 28135 - 28139
- "\u0000\u0000\u8EA2\uA7C6\u0000\u0000\u8EA2\uA7C4\u8EA2\uA7BC" + // 28140 - 28144
- "\u8EA2\uA7B4\u8EA2\uA7BB\u0000\uCEAD\u0000\u0000\u0000\uCEB3" + // 28145 - 28149
- "\u0000\u0000\u0000\uCEA7\u8EA2\uA7BF\u8EA2\uA7BE\u8EA2\uA7B6" + // 28150 - 28154
- "\u0000\u0000\u0000\uCEB5\u8EA2\uA7C2\u8EA2\uA7B7\u0000\uCEB8" + // 28155 - 28159
- "\u8EA2\uA7C9\u0000\uCEA8\u0000\u0000\u0000\uCEAF\u8EA2\uA7BA" + // 28160 - 28164
- "\u8EA2\uA7C3\u0000\uCEB7\u0000\u0000\u0000\uCEAA\u0000\uCEAE" + // 28165 - 28169
- "\u0000\u0000\u8EA2\uA7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 28170 - 28174
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28175 - 28179
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28180 - 28184
- "\u0000\u0000\u8EA2\uABBD\u0000\uD1DF\u0000\uD1EC\u0000\u0000" + // 28185 - 28189
- "\u8EA2\uABB8\u8EA2\uABAE\u0000\uD1E5\u8EA2\uABAC\u0000\uD1DE" + // 28190 - 28194
- "\u8EA2\uABA7\u0000\uD1E8\u8EA2\uABB4\u8EA2\uABA1\u8EA2\uABA3" + // 28195 - 28199
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9CB" + // 28200 - 28204
- "\u0000\uF4F4\u8EA2\uDECE\u0000\u0000\u0000\u0000\u0000\uF7A7" + // 28205 - 28209
- "\u0000\u0000\u8EA2\uE6C4\u8EA2\uE6C3\u0000\uFAAD\u8EA2\uEBFB" + // 28210 - 28214
- "\u0000\u0000\u8EA2\uEDF0\u0000\uFCE4\u8EA2\uA2E9\u0000\u0000" + // 28215 - 28219
- "\u0000\u0000\u0000\uCFAC\u0000\uCBB8\u0000\u0000\u0000\u0000" + // 28220 - 28224
- "\u8EA2\uACEE\u0000\u0000\u0000\u0000\u8EA2\uB2A4\u8EA2\uB1FD" + // 28225 - 28229
- "\u8EA2\uB2A3\u8EA2\uB2A1\u0000\uD7CE\u8EA2\uB2A2\u8EA2\uB1FE" + // 28230 - 28234
- "\u0000\u0000\u8EA2\uB8B6\u0000\u0000\u8EA2\uBFA4\u8EA2\uBFA5" + // 28235 - 28239
- "\u8EA2\uC6B0\u8EA2\uC6B1\u0000\uE5F5\u0000\uE5F6\u8EA2\uC6AF" + // 28240 - 28244
- "\u8EA2\uC6B2\u8EA2\uC6AE\u0000\uE5F4\u0000\u0000\u0000\uEAC8" + // 28245 - 28249
- "\u0000\u0000\u0000\uE5F7\u8EA2\uCDA3\u0000\u0000\u0000\uEEC7" + // 28250 - 28254
- "\u8EA2\uD2F9\u0000\uEEC8\u0000\u0000\u0000\uF1F1\u8EA2\uD9CE" + // 28255 - 28259
- "\u8EA2\uD9CC\u8EA2\uD9CD\u8EA2\uDED1\u8EA2\uDED0\u8EA2\uDECF" + // 28260 - 28264
- "\u8EA2\uA5B6\u8EA2\uA5C2\u8EA2\uA5C9\u0000\uCBF5\u8EA2\uA5BB" + // 28265 - 28269
- "\u8EA2\uA5B4\u0000\uCBF4\u8EA2\uA5B7\u0000\uCBF8\u8EA2\uA5BA" + // 28270 - 28274
- "\u0000\u0000\u0000\uCBF3\u0000\u0000\u0000\uCBEE\u0000\u0000" + // 28275 - 28279
- "\u0000\uCBFD\u8EA2\uA5C4\u0000\uCBFE\u8EA2\uA5C8\u0000\u0000" + // 28280 - 28284
- "\u8EA2\uA5C6\u8EA2\uA5CA\u0000\uCBFB\u8EA2\uA5BE\u8EA2\uA5B2" + // 28285 - 28289
- "\u0000\u0000\u8EA2\uA5C0\u0000\uCBF2\u8EA2\uA5C5\u0000\uCBED" + // 28290 - 28294
- "\u8EA2\uA5C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28295 - 28299
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28300 - 28304
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28305 - 28309
- "\u0000\u0000\u0000\uCFF8\u0000\uCFEC\u0000\u0000\u0000\u0000" + // 28310 - 28314
- "\u8EA2\uA9A2\u8EA2\uA9AA\u0000\u0000\u0000\uCFEB\u0000\uCFF3" + // 28315 - 28319
- "\u0000\uD0A1\u0000\u0000\u8EA2\uA9B0\u8EA2\uA9AE\u8EA2\uA9A9" + // 28320 - 28324
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFED\u8EA2\uA1F0" + // 28325 - 28329
- "\u0000\uC7BA\u8EA2\uA1F4\u0000\u0000\u8EA2\uA1F8\u8EA2\uA1F5" + // 28330 - 28334
- "\u0000\u0000\u0000\u0000\u8EA2\uA1F2\u0000\uC7AC\u0000\uC7AE" + // 28335 - 28339
- "\u0000\uC7BB\u0000\u0000\u0000\uC7B0\u8EA2\uA1EA\u0000\uC7B3" + // 28340 - 28344
- "\u0000\uC7B1\u0000\uC7B2\u8EA2\uA1FA\u8EA2\uA1F7\u8EA2\uA1EE" + // 28345 - 28349
- "\u0000\uC7AF\u0000\u0000\u0000\u0000\u8EA2\uA1EB\u0000\uC7AD" + // 28350 - 28354
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F3\u0000\u0000" + // 28355 - 28359
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F6\u0000\u0000" + // 28360 - 28364
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28365 - 28369
- "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1EC\u8EA2\uA3A8" + // 28370 - 28374
- "\u0000\u0000\u0000\uC9A4\u0000\uC8F5\u0000\u0000\u0000\u0000" + // 28375 - 28379
- "\u8EA2\uA3A9\u0000\uC8F2\u0000\u0000\u0000\uC9A6\u0000\u0000" + // 28380 - 28384
- "\u0000\uC8FA\u0000\u0000\u0000\uC8F9\u8EA2\uA2FB\u0000\uC8FD" + // 28385 - 28389
- "\u0000\uC8F8\u8EA2\uA3A2\u8EA2\uA3AA\u0000\uC4EF\u0000\uC4EE" + // 28390 - 28394
- "\u8EA2\uA1B2\u0000\uC4F0\u0000\uC4F6\u0000\u0000\u0000\uC4F1" + // 28395 - 28399
- "\u0000\uC4F2\u8EA2\uA1B4\u8EA2\uA1B3\u0000\uC4F4\u0000\uC4F5" + // 28400 - 28404
- "\u0000\u0000\u0000\uC4F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 28405 - 28409
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC5EA\u0000\uC5EB" + // 28410 - 28414
- "\u0000\uC5EC\u0000\uC5ED\u0000\uC5E9\u0000\uC5F0\u8EA2\uA1CA" + // 28415 - 28419
- "\u0000\u0000\u8EA2\uA1C6\u8EA2\uA1C9\u0000\uC5F1\u0000\uC6A3" + // 28420 - 28424
- "\u0000\u0000\u8EA2\uA1C8\u0000\u0000\u0000\uC5EE\u0000\uC5EF" + // 28425 - 28429
- "\u0000\uC5E8\u0000\u0000\u0000\u0000\u8EA2\uA1C5\u8EA2\uA1C7" + // 28430 - 28434
- "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28435 - 28439
- "\u0000\u0000\u0000\uC7B7\u8EA2\uA1EF\u0000\uC7B4\u0000\uC7B8" + // 28440 - 28444
- "\u8EA2\uA1F9\u8EA2\uA1ED\u0000\uC7B5\u8EA2\uA1F1\u0000\u0000" + // 28445 - 28449
- "\u0000\u0000\u0000\u0000\u0000\uC7B6\u0000\u0000\u0000\uC7B9" + // 28450 - 28454
- "\u0000\u0000\u0000\uC7AB"
- ;
- }
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM964.java.template Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,10532 @@
+
+/*
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ */
+
+package $PACKAGE$;
+
+import java.nio.CharBuffer;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import sun.nio.cs.HistoricallyNamedCharset;
+
+public class IBM964
+ extends Charset
+ implements HistoricallyNamedCharset
+{
+
+ public IBM964() {
+ super("x-IBM964", $ALIASES$);
+ }
+
+ public String historicalName() {
+ return "Cp964";
+ }
+
+ public boolean contains(Charset cs) {
+ return (cs instanceof IBM964);
+ }
+
+ public CharsetDecoder newDecoder() {
+ return new Decoder(this);
+ }
+
+ public CharsetEncoder newEncoder() {
+ return new Encoder(this);
+ }
+
+ protected static class Decoder extends CharsetDecoder {
+ private final int SS2 = 0x8E;
+ private final int SS3 = 0x8F;
+
+ private String mappingTableG2;
+
+ public Decoder(Charset cs) {
+ super(cs, 1.0f, 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();
+ assert (sp <= sl);
+ sp = (sp <= sl ? sp : sl);
+ char[] da = dst.array();
+ int dp = dst.arrayOffset() + dst.position();
+ int dl = dst.arrayOffset() + dst.limit();
+ assert (dp <= dl);
+ dp = (dp <= dl ? dp : dl);
+
+ try {
+ while (sp < sl) {
+ int byte1, byte2;
+ int inputSize = 1;
+ char outputChar = '\uFFFD';
+ byte1 = sa[sp] & 0xff;
+
+ if (byte1 == SS2) {
+ if (sl - sp < 4) {
+ return CoderResult.UNDERFLOW;
+ }
+ byte1 = sa[sp + 1] & 0xff;
+ inputSize = 2;
+ if ( byte1 == 0xa2)
+ mappingTableG2 = mappingTableG2a2;
+ else if ( byte1 == 0xac)
+ mappingTableG2 = mappingTableG2ac;
+ else if ( byte1 == 0xad)
+ mappingTableG2 = mappingTableG2ad;
+ else
+ return CoderResult.malformedForLength(2);
+ byte1 = sa[sp + 2] & 0xff;
+ if ( byte1 < 0xa1 || byte1 > 0xfe) {
+ return CoderResult.malformedForLength(3);
+ }
+ byte2 = sa[sp + 3] & 0xff;
+ if ( byte2 < 0xa1 || byte2 > 0xfe) {
+ return CoderResult.malformedForLength(4);
+ }
+ inputSize = 4;
+ outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+ } else if(byte1 == SS3 ) {
+ return CoderResult.malformedForLength(1);
+ } else if ( byte1 <= 0x9f ) { // valid single byte
+ outputChar = byteToCharTable.charAt(byte1);
+ } else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
+ return CoderResult.malformedForLength(1);
+ } else { // G1
+ if (sl - sp < 2) {
+ return CoderResult.UNDERFLOW;
+ }
+ byte2 = sa[sp + 1] & 0xff;
+ inputSize = 2;
+ if ( byte2 < 0xa1 || byte2 > 0xfe) {
+ return CoderResult.malformedForLength(2);
+ }
+ outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+ }
+ if (outputChar == '\uFFFD')
+ return CoderResult.unmappableForLength(inputSize);
+ if (dl - dp < 1)
+ return CoderResult.OVERFLOW;
+ da[dp++] = outputChar;
+ sp += inputSize;
+ }
+ 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()) {
+ int byte1, byte2;
+ int inputSize = 1;
+ char outputChar = '\uFFFD';
+ byte1 = src.get() & 0xff;
+
+ if (byte1 == SS2) {
+ if (src.remaining() < 3)
+ return CoderResult.UNDERFLOW;
+ byte1 = src.get() & 0xff;
+ inputSize = 2;
+ if ( byte1 == 0xa2)
+ mappingTableG2 = mappingTableG2a2;
+ else if ( byte1 == 0xac)
+ mappingTableG2 = mappingTableG2ac;
+ else if ( byte1 == 0xad)
+ mappingTableG2 = mappingTableG2ad;
+ else
+ return CoderResult.malformedForLength(2);
+ byte1 = src.get() & 0xff;
+ if ( byte1 < 0xa1 || byte1 > 0xfe)
+ return CoderResult.malformedForLength(3);
+ byte2 = src.get() & 0xff;
+ if ( byte2 < 0xa1 || byte2 > 0xfe)
+ return CoderResult.malformedForLength(4);
+ inputSize = 4;
+ outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+ } else if (byte1 == SS3 ) {
+ return CoderResult.malformedForLength(1);
+ } else if ( byte1 <= 0x9f ) { // valid single byte
+ outputChar = byteToCharTable.charAt(byte1);
+ } else if (byte1 < 0xa1 || byte1 > 0xfe) { // invalid range?
+ return CoderResult.malformedForLength(1);
+ } else { // G1
+ if (src.remaining() < 1)
+ return CoderResult.UNDERFLOW;
+ byte2 = src.get() & 0xff;
+ if ( byte2 < 0xa1 || byte2 > 0xfe) {
+ return CoderResult.malformedForLength(2);
+ }
+ inputSize = 2;
+ outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+ }
+
+ if (outputChar == '\uFFFD')
+ return CoderResult.unmappableForLength(inputSize);
+ if (!dst.hasRemaining())
+ return CoderResult.OVERFLOW;
+ dst.put(outputChar);
+ mark += inputSize;
+ }
+ return CoderResult.UNDERFLOW;
+ } finally {
+ src.position(mark);
+ }
+ }
+
+ protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+ if (true && src.hasArray() && dst.hasArray())
+ return decodeArrayLoop(src, dst);
+ else
+ return decodeBufferLoop(src, dst);
+ }
+
+ private final static String byteToCharTable;
+ private final static String mappingTableG1;
+ private final static String mappingTableG2a2;
+ private final static String mappingTableG2ac;
+ private final static String mappingTableG2ad;
+
+ static {
+ byteToCharTable =
+ "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
+ "\u0008\u0009\n\u000B\u000C\r\u000E\u000F" +
+ "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
+ "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
+ "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
+ "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
+ "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
+ "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
+ "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
+ "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
+ "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
+ "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
+ "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
+ "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
+ "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
+ "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
+ "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
+ "\u0088\u0089\u008A\u008B\u008C\u008D\uFFFD\uFFFD" +
+ "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
+ "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F"
+ ;
+ mappingTableG1 =
+ "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A" +
+ "\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52" +
+ "\u00B7\uFE54\uFE55\uFE56\uFE57\uFE31\u2014\uFE32" +
+ "\uFE58\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35" +
+ "\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39" +
+ "\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D" +
+ "\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41" +
+ "\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFE5B" +
+ "\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D" +
+ "\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7" +
+ "\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605" +
+ "\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105" +
+ "\u203E\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E" +
+ "\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7" +
+ "\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267" +
+ "\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64\uFE65" +
+ "\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F\u22BF" +
+ "\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642" +
+ "\u2295\u2299\u2191\u2193\u2192\u2190\u2196\u2197" +
+ "\u2199\u2198\u2225\uFF5C\uFF0F\uFF3C\u2215\uFE68" +
+ "\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103" +
+ "\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E" +
+ "\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B" +
+ "\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581" +
+ "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258F" +
+ "\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534" +
+ "\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C" +
+ "\u2510\u2514\u2518\u256D\u256E\u2570\u256F\u2550" +
+ "\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571" +
+ "\u2572\u2573\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15" +
+ "\uFF16\uFF17\uFF18\uFF19\u2160\u2161\u2162\u2163" +
+ "\u2164\u2165\u2166\u2167\u2168\u2169\u3021\u3022" +
+ "\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u5341" +
+ "\u5344\u5345\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26" +
+ "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E" +
+ "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36" +
+ "\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44" +
+ "\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C" +
+ "\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54" +
+ "\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u0391\u0392" +
+ "\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A" +
+ "\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3" +
+ "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" +
+ "\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA" +
+ "\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" +
+ "\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u3105\u3106" +
+ "\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E" +
+ "\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116" +
+ "\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E" +
+ "\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126" +
+ "\u3127\u3128\u3129\u02D9\u02C9\u02CA\u02C7\u02CB" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461" +
+ "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469" +
+ "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B" +
+ "\u247C\u247D\u2170\u2171\u2172\u2173\u2174\u2175" +
+ "\u2176\u2177\u2178\u2179\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E28\u4E36\u4E3F" +
+ "\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B" +
+ "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9" +
+ "\u5315\u531A\u5338\u5341\u535C\u5369\u5382\u53B6" +
+ "\u53C8\u53E3\u56D7\u571F\u58EB\u590A\u5915\u5927" +
+ "\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E" +
+ "\u5C71\u5DDB\u5DE5\u5DF1\u5DFE\u5E72\u5E7A\u5E7F" +
+ "\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73\u5FC3" +
+ "\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4" +
+ "\u65B9\u65E0\u65E5\u66F0\u6708\u6728\u6B20\u6B62" +
+ "\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14\u6C34" +
+ "\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B" +
+ "\u72AC\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528" +
+ "\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF\u76EE" +
+ "\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB" +
+ "\u7AF9\u7C73\u7CF8\u7F36\u7F51\u7F8A\u7FBD\u8001" +
+ "\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA\u81F3" +
+ "\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D" +
+ "\u866B\u8840\u884C\u8863\u897E\u898B\u89D2\u8A00" +
+ "\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70\u8DB3" +
+ "\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6" +
+ "\u91CC\u91D1\u9577\u9580\u961C\u96B6\u96B9\u96E8" +
+ "\u9752\u975E\u9762\u9769\u97CB\u97ED\u97F3\u9801" +
+ "\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8" +
+ "\u9ADF\u9B25\u9B2F\u9B32\u9B3C\u9B5A\u9CE5\u9E75" +
+ "\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9\u9EFD" +
+ "\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C" +
+ "\u9FA0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2400\u2401" +
+ "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409" +
+ "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411" +
+ "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419" +
+ "\u241A\u241B\u241C\u241D\u241E\u241F\u2421\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D" +
+ "\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200" +
+ "\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B" +
+ "\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F" +
+ "\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9" +
+ "\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51" +
+ "\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5" +
+ "\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13" +
+ "\u624D\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B" +
+ "\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1" +
+ "\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4" +
+ "\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6" +
+ "\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339" +
+ "\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD" +
+ "\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24" +
+ "\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3" +
+ "\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4" +
+ "\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79" +
+ "\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236" +
+ "\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\u4E16" +
+ "\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5" +
+ "\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9" +
+ "\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA" +
+ "\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D" +
+ "\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB" +
+ "\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC" +
+ "\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0" +
+ "\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\u592E\u5931" +
+ "\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6" +
+ "\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5" +
+ "\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E" +
+ "\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10" +
+ "\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC" +
+ "\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532" +
+ "\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2" +
+ "\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52" +
+ "\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09" +
+ "\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2" +
+ "\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149" +
+ "\u5147\u5146\u5148\u5168\u5171\u518D\u51B0\u5217" +
+ "\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320" +
+ "\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401" +
+ "\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406" +
+ "\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D" +
+ "\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984" +
+ "\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58" +
+ "\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE" +
+ "\u5E06\u5E76\u5E74\u5F0F\u5F1B\u5FD9\u5FD6\u620E" +
+ "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9" +
+ "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734" +
+ "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57" +
+ "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D" +
+ "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8" +
+ "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033" +
+ "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC" +
+ "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840" +
+ "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F" +
+ "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50" +
+ "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46" +
+ "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D" +
+ "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7" +
+ "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA" +
+ "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E" +
+ "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442" +
+ "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435" +
+ "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C" +
+ "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D" +
+ "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E" +
+ "\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D" +
+ "\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B" +
+ "\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E" +
+ "\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87" +
+ "\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79" +
+ "\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA" +
+ "\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289" +
+ "\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F" +
+ "\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B" +
+ "\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751" +
+ "\u675C\u6756\u675E\u6749\u6746\u6760\u6753\u6757" +
+ "\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89" +
+ "\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68" +
+ "\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86" +
+ "\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D" +
+ "\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C" +
+ "\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0" +
+ "\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098" +
+ "\u809B\u809A\u80B2\u826F\u8292\u828B\u828D\u898B" +
+ "\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70" +
+ "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5" +
+ "\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149" +
+ "\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26" +
+ "\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F" +
+ "\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86" +
+ "\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E" +
+ "\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177" +
+ "\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A" +
+ "\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354" +
+ "\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4" +
+ "\u53D7\u5473\u5475\u5496\u5478\u5495\u5480\u547B" +
+ "\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476" +
+ "\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA" +
+ "\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C" +
+ "\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB" +
+ "\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB" +
+ "\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64" +
+ "\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A" +
+ "\u5C48\u5C45\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB" +
+ "\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11" +
+ "\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26" +
+ "\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0" +
+ "\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016" +
+ "\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216" +
+ "\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4" +
+ "\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4" +
+ "\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7" +
+ "\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6" +
+ "\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613" +
+ "\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A" +
+ "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C" +
+ "\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F" +
+ "\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A" +
+ "\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3" +
+ "\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE" +
+ "\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9" +
+ "\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1" +
+ "\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\u7095" +
+ "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248" +
+ "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9" +
+ "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A" +
+ "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940" +
+ "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54" +
+ "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1" +
+ "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D" +
+ "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1" +
+ "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7" +
+ "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1" +
+ "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580" +
+ "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8" +
+ "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF" +
+ "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8" +
+ "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA" +
+ "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E" +
+ "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9" +
+ "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC" +
+ "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7" +
+ "\u54C2\u54BD\u54AA\u54C1\u54C4\u54C8\u54AF\u54AB" +
+ "\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B" +
+ "\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951" +
+ "\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8" +
+ "\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69" +
+ "\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F" +
+ "\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F" +
+ "\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88" +
+ "\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D" +
+ "\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062" +
+ "\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC" +
+ "\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307" +
+ "\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4\u6311\u6302" +
+ "\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620" +
+ "\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF" +
+ "\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5" +
+ "\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8" +
+ "\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2" +
+ "\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9" +
+ "\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E" +
+ "\u6D17\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39" +
+ "\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB" +
+ "\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4" +
+ "\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7" +
+ "\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D" +
+ "\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2" +
+ "\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3" +
+ "\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC" +
+ "\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949" +
+ "\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F" +
+ "\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09" +
+ "\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8010\u800D" +
+ "\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC" +
+ "\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222" +
+ "\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5" +
+ "\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4" +
+ "\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679" +
+ "\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02" +
+ "\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC" +
+ "\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\u8FED\u8FEB\u8FE4" +
+ "\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD" +
+ "\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB" +
+ "\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999" +
+ "\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025" +
+ "\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012" +
+ "\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B" +
+ "\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B" +
+ "\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6" +
+ "\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F" +
+ "\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC" +
+ "\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1" +
+ "\u5509\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F" +
+ "\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F" +
+ "\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B" +
+ "\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09" +
+ "\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5" +
+ "\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD" +
+ "\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE" +
+ "\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91" +
+ "\u5F90\u6059\u6063\u6065\u6050\u6055\u606D\u6069" +
+ "\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085" +
+ "\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F" +
+ "\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D" +
+ "\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599" +
+ "\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C" +
+ "\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838" +
+ "\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3" +
+ "\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C" +
+ "\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89" +
+ "\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A" +
+ "\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93" +
+ "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A" +
+ "\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9" +
+ "\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8" +
+ "\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE" +
+ "\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7" +
+ "\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B" +
+ "\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728" +
+ "\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\u7825" +
+ "\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F" +
+ "\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7" +
+ "\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06" +
+ "\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22" +
+ "\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B" +
+ "\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8004\u8018" +
+ "\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0" +
+ "\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD" +
+ "\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A" +
+ "\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A" +
+ "\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339" +
+ "\u8336\u8317\u8340\u8331\u8328\u8343\u8654\u868A" +
+ "\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870" +
+ "\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E" +
+ "\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11" +
+ "\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2" +
+ "\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA" +
+ "\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD" +
+ "\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC" +
+ "\u91D9\u9583\u9662\u9663\u9661\u965B\u965D\u9664" +
+ "\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25" +
+ "\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043" +
+ "\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075" +
+ "\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195" +
+ "\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310" +
+ "\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546" +
+ "\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531" +
+ "\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C" +
+ "\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709" +
+ "\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802" +
+ "\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49" +
+ "\u5A66\u5A6A\u5A40\u5A3C\u5A62\u5A5A\u5A46\u5A4A" +
+ "\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09" +
+ "\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E" +
+ "\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24" +
+ "\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7" +
+ "\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C" +
+ "\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0" +
+ "\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4" +
+ "\u60E6\u60BD\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8" +
+ "\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B" +
+ "\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377" +
+ "\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B" +
+ "\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392" +
+ "\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556" +
+ "\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554" +
+ "\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D" +
+ "\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B" +
+ "\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1" +
+ "\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885" +
+ "\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA" +
+ "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2" +
+ "\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB" +
+ "\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5" +
+ "\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA" +
+ "\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF" +
+ "\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D" +
+ "\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405" +
+ "\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\u74F7" +
+ "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4" +
+ "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB" +
+ "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843" +
+ "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20" +
+ "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92" +
+ "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C" +
+ "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31" +
+ "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A" +
+ "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124" +
+ "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398" +
+ "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393" +
+ "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655" +
+ "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB" +
+ "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892" +
+ "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23" +
+ "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A" +
+ "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66" +
+ "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017" +
+ "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F" +
+ "\u9022\u9016\u901B\u9014\u90E8\u90ED\u90FD\u9157" +
+ "\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589" +
+ "\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677" +
+ "\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803" +
+ "\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D" +
+ "\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700" +
+ "\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB" +
+ "\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D" +
+ "\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583" +
+ "\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC" +
+ "\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A" +
+ "\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9" +
+ "\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7" +
+ "\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B" +
+ "\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D" +
+ "\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C" +
+ "\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6" +
+ "\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4" +
+ "\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F" +
+ "\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6" +
+ "\u63CD\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE" +
+ "\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E" +
+ "\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670" +
+ "\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE" +
+ "\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7" +
+ "\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2" +
+ "\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA" +
+ "\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC" +
+ "\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21" +
+ "\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B" +
+ "\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34" +
+ "\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\u6E89" +
+ "\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119" +
+ "\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C" +
+ "\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A" +
+ "\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B" +
+ "\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB" +
+ "\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696" +
+ "\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F" +
+ "\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\u7A97\u7A96" +
+ "\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54" +
+ "\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50" +
+ "\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62" +
+ "\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085" +
+ "\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E" +
+ "\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8" +
+ "\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4" +
+ "\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA" +
+ "\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B" +
+ "\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE" +
+ "\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60" +
+ "\u8A55\u8A5E\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46" +
+ "\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC" +
+ "\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6" +
+ "\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB" +
+ "\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC" +
+ "\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102" +
+ "\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215" +
+ "\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594" +
+ "\u958F\u958B\u9591\u9593\u9592\u958E\u968A\u968E" +
+ "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1" +
+ "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805" +
+ "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED" +
+ "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5" +
+ "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF" +
+ "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2" +
+ "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC" +
+ "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5" +
+ "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858" +
+ "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862" +
+ "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD" +
+ "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79" +
+ "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F" +
+ "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E" +
+ "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106" +
+ "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D" +
+ "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416" +
+ "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687" +
+ "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D" +
+ "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A" +
+ "\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963" +
+ "\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2" +
+ "\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5" +
+ "\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C" +
+ "\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169" +
+ "\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165" +
+ "\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345" +
+ "\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441" +
+ "\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0" +
+ "\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE" +
+ "\u76DF\u775B\u776B\u7766\u775E\u7763\u7779\u776A" +
+ "\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0" +
+ "\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F" +
+ "\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20" +
+ "\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60" +
+ "\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91" +
+ "\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9" +
+ "\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170" +
+ "\u8178\u8165\u816E\u8173\u816B\u8179\u817A\u8166" +
+ "\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466" +
+ "\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463" +
+ "\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713" +
+ "\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706" +
+ "\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD" +
+ "\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72" +
+ "\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0" +
+ "\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B" +
+ "\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8" +
+ "\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8" +
+ "\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03" +
+ "\u8F09\u8EFE\u8F0A\u8F9F\u8FB2\u904B\u904A\u9053" +
+ "\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E" +
+ "\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A" +
+ "\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E" +
+ "\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245" +
+ "\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD" +
+ "\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756" +
+ "\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C" +
+ "\u98FC\u98F4\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1" +
+ "\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5" +
+ "\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE" +
+ "\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE" +
+ "\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D" +
+ "\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718" +
+ "\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885" +
+ "\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1" +
+ "\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE" +
+ "\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF" +
+ "\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57" +
+ "\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147" +
+ "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158" +
+ "\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F" +
+ "\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1" +
+ "\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995" +
+ "\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB" +
+ "\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3" +
+ "\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4" +
+ "\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\u6EFF" +
+ "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B" +
+ "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7" +
+ "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292" +
+ "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D" +
+ "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1" +
+ "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7" +
+ "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31" +
+ "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75" +
+ "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9" +
+ "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0" +
+ "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5" +
+ "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1" +
+ "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188" +
+ "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E" +
+ "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2" +
+ "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1" +
+ "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718" +
+ "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8" +
+ "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3" +
+ "\u8A8D\u8AA1\u8A93\u8AA4\u8AAA\u8AA5\u8AA8\u8A98" +
+ "\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1" +
+ "\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15" +
+ "\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E" +
+ "\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178" +
+ "\u9177\u9174\u9278\u92AC\u9280\u9285\u9298\u9296" +
+ "\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8" +
+ "\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC" +
+ "\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF" +
+ "\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0" +
+ "\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B" +
+ "\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108" +
+ "\u5109\u5105\u51DC\u5287\u5288\u5289\u528D\u528A" +
+ "\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634" +
+ "\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630" +
+ "\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6" +
+ "\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE" +
+ "\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62" +
+ "\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0" +
+ "\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D" +
+ "\u6155\u6182\u617C\u6170\u616B\u617E\u61A7\u6190" +
+ "\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E" +
+ "\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0" +
+ "\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB" +
+ "\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578" +
+ "\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01" +
+ "\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02" +
+ "\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6" +
+ "\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D" +
+ "\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97" +
+ "\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1" +
+ "\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483" +
+ "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626" +
+ "\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C" +
+ "\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5" +
+ "\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B" +
+ "\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7" +
+ "\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB" +
+ "\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9" +
+ "\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\u7FE9" +
+ "\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517" +
+ "\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523" +
+ "\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774" +
+ "\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C" +
+ "\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915" +
+ "\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8" +
+ "\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6" +
+ "\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6" +
+ "\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1" +
+ "\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F" +
+ "\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F" +
+ "\u8F29\u8F26\u8F2A\u8F1C\u8F1E\u8F25\u9069\u906E" +
+ "\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187" +
+ "\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92E4" +
+ "\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD" +
+ "\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B" +
+ "\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912" +
+ "\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2" +
+ "\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77" +
+ "\u9B6F\u9D06\u9D09\u9D03\u9EA9\u9EBE\u9ECE\u58A8" +
+ "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA" +
+ "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669" +
+ "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C" +
+ "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D" +
+ "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9" +
+ "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5" +
+ "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2" +
+ "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9" +
+ "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59" +
+ "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47" +
+ "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1" +
+ "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9" +
+ "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2" +
+ "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4" +
+ "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C" +
+ "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E" +
+ "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D" +
+ "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9" +
+ "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A" +
+ "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10" +
+ "\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9" +
+ "\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548" +
+ "\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783" +
+ "\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925" +
+ "\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1" +
+ "\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7" +
+ "\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4" +
+ "\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F" +
+ "\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072" +
+ "\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333" +
+ "\u932F\u9322\u92FC\u932B\u9304\u931A\u9310\u9326" +
+ "\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA" +
+ "\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B" +
+ "\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D" +
+ "\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A" +
+ "\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28" +
+ "\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8" +
+ "\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5" +
+ "\u568E\u5680\u5690\u5685\u5687\u568F\u58D5\u58D3" +
+ "\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68" +
+ "\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9" +
+ "\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA" +
+ "\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED" +
+ "\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2" +
+ "\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C" +
+ "\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB" +
+ "\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5" +
+ "\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED" +
+ "\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9" +
+ "\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3" +
+ "\u77AA\u77B0\u77AC\u77A7\u77AD\u77EF\u78F7\u78FA" +
+ "\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07" +
+ "\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE" +
+ "\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37" +
+ "\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34" +
+ "\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC" +
+ "\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA" +
+ "\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209" +
+ "\u8271\u85AA\u8584\u857E\u859C\u8591\u8594\u85AF" +
+ "\u859B\u8587\u85A8\u858A\u85A6\u8667\u87C0\u87D1" +
+ "\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB" +
+ "\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17" +
+ "\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41" +
+ "\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8" +
+ "\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45" +
+ "\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139" +
+ "\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A" +
+ "\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A" +
+ "\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8" +
+ "\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935" +
+ "\u9A01\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F" +
+ "\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B" +
+ "\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5E\u61E3" +
+ "\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7" +
+ "\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8" +
+ "\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B" +
+ "\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE" +
+ "\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658" +
+ "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61" +
+ "\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E" +
+ "\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61" +
+ "\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD" +
+ "\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0" +
+ "\u85BA\u85B9\u87EF\u87EC\u87F2\u87E0\u8986\u89B2" +
+ "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59" +
+ "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D" +
+ "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A" +
+ "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A" +
+ "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9" +
+ "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D" +
+ "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D" +
+ "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E" +
+ "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D" +
+ "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u56A8\u58DE" +
+ "\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6" +
+ "\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA" +
+ "\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018" +
+ "\u7206\u720D\u7258\u72A2\u7378\u737A\u74BD\u74CA" +
+ "\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1" +
+ "\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40" +
+ "\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7E73\u7F85\u7FB6" +
+ "\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4" +
+ "\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960" +
+ "\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A" +
+ "\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72" +
+ "\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD" +
+ "\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3" +
+ "\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4" +
+ "\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761" +
+ "\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945\u9949" +
+ "\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89" +
+ "\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4" +
+ "\u52F8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43" +
+ "\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519" +
+ "\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B" +
+ "\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7" +
+ "\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D" +
+ "\u7E7C\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9" +
+ "\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815" +
+ "\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F" +
+ "\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4" +
+ "\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952" +
+ "\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D" +
+ "\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137" +
+ "\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC" +
+ "\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA" +
+ "\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3" +
+ "\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823" +
+ "\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\u8B77" +
+ "\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA" +
+ "\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2" +
+ "\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45" +
+ "\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25" +
+ "\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C" +
+ "\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F" +
+ "\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051" +
+ "\u7058\u7380\u74E4\u758A\u766E\u766C\u79B3\u7C60" +
+ "\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80" +
+ "\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451" +
+ "\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55" +
+ "\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3" +
+ "\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200" +
+ "\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64" +
+ "\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F" +
+ "\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768" +
+ "\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1" +
+ "\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9" +
+ "\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836" +
+ "\u8839\u8862\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0" +
+ "\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22" +
+ "\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77" +
+ "\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0" +
+ "\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23" +
+ "\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65" +
+ "\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77" +
+ "\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31" +
+ "\u9E1B\u9E1E\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD"
+ ;
+ mappingTableG2a2 =
+ "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47" +
+ "\u4E8D\u56D7\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E" +
+ "\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9" +
+ "\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC" +
+ "\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1" +
+ "\u4EDD\u4EDA\u520C\u5209\u531C\u534C\u5722\u5723" +
+ "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73" +
+ "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\u6C36" +
+ "\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A" +
+ "\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00" +
+ "\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04" +
+ "\u4EF4\u4F12\u51B1\u5213\u5210\u52A6\u5322\u531F" +
+ "\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734" +
+ "\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F" +
+ "\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF" +
+ "\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF" +
+ "\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260" +
+ "\u625A\u6265\u6537\u65EF\u65EE\u673E\u6739\u6738" +
+ "\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52" +
+ "\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C\u7071\u725E" +
+ "\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278" +
+ "\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097" +
+ "\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56" +
+ "\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52" +
+ "\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F" +
+ "\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363" +
+ "\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445" +
+ "\u5419\u541C\u5425\u5418\u543D\u544F\u5441\u5428" +
+ "\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C" +
+ "\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0" +
+ "\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E" +
+ "\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89" +
+ "\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E" +
+ "\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78" +
+ "\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3" +
+ "\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000" +
+ "\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287" +
+ "\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D" +
+ "\u6272\u6274\u65F0\u65F4\u65F3\u65F2\u65F5\u6745" +
+ "\u6747\u6759\u6755\u674C\u6748\u675D\u674D\u675A" +
+ "\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84" +
+ "\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87" +
+ "\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074" +
+ "\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA" +
+ "\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539" +
+ "\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090" +
+ "\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293" +
+ "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1" +
+ "\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D" +
+ "\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76" +
+ "\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A" +
+ "\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92" +
+ "\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235" +
+ "\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C" +
+ "\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488" +
+ "\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D" +
+ "\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7" +
+ "\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776" +
+ "\u5780\u5775\u577B\u5773\u5774\u5762\u5768\u577D" +
+ "\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC" +
+ "\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0" +
+ "\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44" +
+ "\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC" +
+ "\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5" +
+ "\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22" +
+ "\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5" +
+ "\u602D\u6026\u6019\u6032\u600B\u6034\u600A\u6017" +
+ "\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E" +
+ "\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD" +
+ "\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3" +
+ "\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB" +
+ "\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B" +
+ "\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785" +
+ "\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784" +
+ "\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783" +
+ "\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E" +
+ "\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6" +
+ "\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3" +
+ "\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D" +
+ "\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9" +
+ "\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086" +
+ "\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6" +
+ "\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC" +
+ "\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC" +
+ "\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598" +
+ "\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9" +
+ "\u77FB\u77FA\u77F7\u7942\u793F\u79C5\u7A78\u7A7B" +
+ "\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8" +
+ "\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298" +
+ "\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4" +
+ "\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2" +
+ "\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3" +
+ "\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3" +
+ "\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5" +
+ "\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9" +
+ "\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9" +
+ "\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397" +
+ "\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF" +
+ "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6" +
+ "\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0" +
+ "\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B" +
+ "\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4" +
+ "\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD" +
+ "\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB" +
+ "\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8" +
+ "\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\u5CDE" +
+ "\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF" +
+ "\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22" +
+ "\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3" +
+ "\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054" +
+ "\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C" +
+ "\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E" +
+ "\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303" +
+ "\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313" +
+ "\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA" +
+ "\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622" +
+ "\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F" +
+ "\u6710\u67C1\u67F2\u67C8\u67BA\u67DC\u67BB\u67F8" +
+ "\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5" +
+ "\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9" +
+ "\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC" +
+ "\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA" +
+ "\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0" +
+ "\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F" +
+ "\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A" +
+ "\u6D11\u6D00\u6D1D\u6D42\u6D01\u6D18\u6D37\u6D03" +
+ "\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09" +
+ "\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4" +
+ "\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273" +
+ "\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6" +
+ "\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6" +
+ "\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6" +
+ "\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7" +
+ "\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A" +
+ "\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812" +
+ "\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A" +
+ "\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6" +
+ "\u79CE\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78" +
+ "\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58" +
+ "\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037" +
+ "\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5" +
+ "\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7" +
+ "\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9" +
+ "\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4" +
+ "\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0" +
+ "\u82EA\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674" +
+ "\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3" +
+ "\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1" +
+ "\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8" +
+ "\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E" +
+ "\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5" +
+ "\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C" +
+ "\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194" +
+ "\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A" +
+ "\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E" +
+ "\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A" +
+ "\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\u550A" +
+ "\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701" +
+ "\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD" +
+ "\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1" +
+ "\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F" +
+ "\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC" +
+ "\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7" +
+ "\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC" +
+ "\u5F33\u5F30\u5F67\u605D\u605A\u6067\u6041\u60A2" +
+ "\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B" +
+ "\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310" +
+ "\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339" +
+ "\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354" +
+ "\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357" +
+ "\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2" +
+ "\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A" +
+ "\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831" +
+ "\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834" +
+ "\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A" +
+ "\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D" +
+ "\u8082\u6B88\u6BE6\u6BE4\u6BE8\u6BE3\u6BE2\u6BE7" +
+ "\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92" +
+ "\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F" +
+ "\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F" +
+ "\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84" +
+ "\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3" +
+ "\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE" +
+ "\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE" +
+ "\u70E1\u7242\u7278\u7277\u7276\u7300\u72FA\u72F4" +
+ "\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5" +
+ "\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB" +
+ "\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF" +
+ "\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB" +
+ "\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D" +
+ "\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719" +
+ "\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F" +
+ "\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831" +
+ "\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB" +
+ "\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD" +
+ "\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8" +
+ "\u7B10\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E" +
+ "\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D" +
+ "\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13" +
+ "\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60" +
+ "\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016" +
+ "\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB" +
+ "\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319" +
+ "\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322" +
+ "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316" +
+ "\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C" +
+ "\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652" +
+ "\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697" +
+ "\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7" +
+ "\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844" +
+ "\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F" +
+ "\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B" +
+ "\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1" +
+ "\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC" +
+ "\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5" +
+ "\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F" +
+ "\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF" +
+ "\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053" +
+ "\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A" +
+ "\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064" +
+ "\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B" +
+ "\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575" +
+ "\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562" +
+ "\u5536\u5535\u5530\u5552\u5545\u550C\u5532\u5565" +
+ "\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A" +
+ "\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800" +
+ "\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807" +
+ "\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC" +
+ "\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D" +
+ "\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38" +
+ "\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64" +
+ "\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E" +
+ "\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51" +
+ "\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59" +
+ "\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D" +
+ "\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F\u5D2E" +
+ "\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36" +
+ "\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE" +
+ "\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD" +
+ "\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD" +
+ "\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E" +
+ "\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390" +
+ "\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4" +
+ "\u633B\u639F\u6378\u6385\u6381\u6391\u638D\u6370" +
+ "\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662" +
+ "\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE" +
+ "\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874" +
+ "\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA" +
+ "\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889" +
+ "\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36" +
+ "\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C" +
+ "\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9" +
+ "\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF" +
+ "\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA" +
+ "\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9" +
+ "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB" +
+ "\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104" +
+ "\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8" +
+ "\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F" +
+ "\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF" +
+ "\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401" +
+ "\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B" +
+ "\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\u75CB" +
+ "\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F" +
+ "\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B" +
+ "\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826" +
+ "\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B" +
+ "\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94" +
+ "\u7A90\u7B35\u7B3B\u7B34\u7B25\u7B30\u7B22\u7B24" +
+ "\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F" +
+ "\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3" +
+ "\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29" +
+ "\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63" +
+ "\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0" +
+ "\u7FD1\u7FC7\u7FCF\u7FC9\u801F\u801E\u801B\u8047" +
+ "\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F" +
+ "\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211" +
+ "\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3" +
+ "\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381" +
+ "\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C" +
+ "\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388" +
+ "\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u8659" +
+ "\u8656\u86BF\u86B7\u86C2\u86C1\u86C5\u86BA\u86B0" +
+ "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC" +
+ "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2" +
+ "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899" +
+ "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982" +
+ "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39" +
+ "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79" +
+ "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD" +
+ "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C" +
+ "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3" +
+ "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153" +
+ "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9" +
+ "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588" +
+ "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804" +
+ "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3" +
+ "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082" +
+ "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591" +
+ "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588" +
+ "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C" +
+ "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837" +
+ "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825" +
+ "\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838" +
+ "\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A" +
+ "\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95" +
+ "\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9" +
+ "\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA" +
+ "\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30" +
+ "\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51" +
+ "\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59" +
+ "\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40" +
+ "\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9" +
+ "\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\u60F2\u610A" +
+ "\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1" +
+ "\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A" +
+ "\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3" +
+ "\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5" +
+ "\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3" +
+ "\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9" +
+ "\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C" +
+ "\u659D\u659E\u65AE\u65D0\u65D2\u667C\u666C\u667B" +
+ "\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3" +
+ "\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6" +
+ "\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1" +
+ "\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6" +
+ "\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A" +
+ "\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1" +
+ "\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B" +
+ "\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0" +
+ "\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49" +
+ "\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41" +
+ "\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B" +
+ "\u6E03\u6E2E\u6E5E\u6E68\u6E5C\u6E61\u6E31\u6E28" +
+ "\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65" +
+ "\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66" +
+ "\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E" +
+ "\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A" +
+ "\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B" +
+ "\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332" +
+ "\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430" +
+ "\u742B\u7416\u741A\u7421\u742D\u7431\u7424\u7423" +
+ "\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C" +
+ "\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7" +
+ "\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745" +
+ "\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864" +
+ "\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869" +
+ "\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02" +
+ "\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A" +
+ "\u7B47\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45" +
+ "\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53" +
+ "\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52" +
+ "\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65" +
+ "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050" +
+ "\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D" +
+ "\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204" +
+ "\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423" +
+ "\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410" +
+ "\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5" +
+ "\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9" +
+ "\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\u83D5" +
+ "\u83FA\u83C7\u83D1\u83EA\u8413\u839A\u83C3\u83EC" +
+ "\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE" +
+ "\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD" +
+ "\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848" +
+ "\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE" +
+ "\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995" +
+ "\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39" +
+ "\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48" +
+ "\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA" +
+ "\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8" +
+ "\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9" +
+ "\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6" +
+ "\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1" +
+ "\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C" +
+ "\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100" +
+ "\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160" +
+ "\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C" +
+ "\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202" +
+ "\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D" +
+ "\u958C\u9590\u9687\u967E\u9688\u9689\u9683\u9680" +
+ "\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E" +
+ "\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6" +
+ "\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8" +
+ "\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6" +
+ "\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB" +
+ "\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4" +
+ "\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6" +
+ "\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868" +
+ "\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D" +
+ "\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7" +
+ "\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF" +
+ "\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6" +
+ "\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33" +
+ "\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68" +
+ "\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B" +
+ "\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD" +
+ "\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E" +
+ "\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223" +
+ "\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409" +
+ "\u6420\u6424\u6433\u6443\u641F\u6415\u6418\u6439" +
+ "\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441" +
+ "\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B" +
+ "\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3" +
+ "\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694" +
+ "\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971" +
+ "\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A" +
+ "\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0" +
+ "\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958" +
+ "\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F" +
+ "\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45" +
+ "\u6B43\u6B42\u6B48\u6B41\u6B9B\u6BFB\u6BFC\u6BF9" +
+ "\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F" +
+ "\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD" +
+ "\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF" +
+ "\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E" +
+ "\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97" +
+ "\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141" +
+ "\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158" +
+ "\u7143\u714B\u7170\u715F\u7150\u7153\u7144\u714D" +
+ "\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C" +
+ "\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A" +
+ "\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E" +
+ "\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD" +
+ "\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7" +
+ "\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED" +
+ "\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760" +
+ "\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D" +
+ "\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885" +
+ "\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B" +
+ "\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12" +
+ "\u7A17\u7A15\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2" +
+ "\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72" +
+ "\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63" +
+ "\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F" +
+ "\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94" +
+ "\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C" +
+ "\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160" +
+ "\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E" +
+ "\u8176\u8167\u816F\u8144\u8161\u821D\u8249\u8244" +
+ "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479" +
+ "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430" +
+ "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507" +
+ "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432" +
+ "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F" +
+ "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E" +
+ "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B" +
+ "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C" +
+ "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701" +
+ "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE" +
+ "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5" +
+ "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86" +
+ "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83" +
+ "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64" +
+ "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91" +
+ "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92" +
+ "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3" +
+ "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01" +
+ "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F" +
+ "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116" +
+ "\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230" +
+ "\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A" +
+ "\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236" +
+ "\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E" +
+ "\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B" +
+ "\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8" +
+ "\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E" +
+ "\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD" +
+ "\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6" +
+ "\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4" +
+ "\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\u51D8\u5280" +
+ "\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C" +
+ "\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA" +
+ "\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898" +
+ "\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891" +
+ "\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE" +
+ "\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED" +
+ "\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD" +
+ "\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\u5BE3\u5C63\u5D82" +
+ "\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89" +
+ "\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59" +
+ "\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9" +
+ "\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128" +
+ "\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C" +
+ "\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A" +
+ "\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B" +
+ "\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466" +
+ "\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460" +
+ "\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477" +
+ "\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722" +
+ "\u69B1\u69B6\u69C9\u69A0\u69CE\u6996\u69B0\u69AC" +
+ "\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE" +
+ "\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA" +
+ "\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9" +
+ "\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D" +
+ "\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE" +
+ "\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E" +
+ "\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12" +
+ "\u6EED\u6F0A\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40" +
+ "\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05" +
+ "\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D" +
+ "\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185" +
+ "\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253" +
+ "\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462" +
+ "\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502" +
+ "\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611" +
+ "\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E" +
+ "\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD" +
+ "\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2" +
+ "\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993" +
+ "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F" +
+ "\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C" +
+ "\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E" +
+ "\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF" +
+ "\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1" +
+ "\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC" +
+ "\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9" +
+ "\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\u8024" +
+ "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C" +
+ "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE" +
+ "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD" +
+ "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2" +
+ "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6" +
+ "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB" +
+ "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740" +
+ "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741" +
+ "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712" +
+ "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724" +
+ "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA" +
+ "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB" +
+ "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB" +
+ "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69" +
+ "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D" +
+ "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00" +
+ "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120" +
+ "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A" +
+ "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A" +
+ "\u92A0\u9294\u92AA\u928D\u92A6\u929A\u92AB\u9279" +
+ "\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2" +
+ "\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7" +
+ "\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1" +
+ "\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782" +
+ "\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD" +
+ "\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9" +
+ "\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7" +
+ "\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5" +
+ "\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6" +
+ "\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1" +
+ "\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649" +
+ "\u5646\u5658\u565A\u5640\u5633\u563D\u562C\u563E" +
+ "\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0" +
+ "\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4" +
+ "\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01" +
+ "\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92" +
+ "\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E" +
+ "\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1" +
+ "\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2" +
+ "\u6189\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA" +
+ "\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496" +
+ "\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C" +
+ "\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579" +
+ "\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7" +
+ "\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15" +
+ "\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D" +
+ "\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40" +
+ "\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04" +
+ "\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16" +
+ "\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF" +
+ "\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\u6F8D" +
+ "\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76" +
+ "\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94" +
+ "\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90" +
+ "\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A" +
+ "\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9" +
+ "\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C" +
+ "\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F" +
+ "\u7360\u735D\u735B\u7361\u735A\u7359\u7362\u7487" +
+ "\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C" +
+ "\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D" +
+ "\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E" +
+ "\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF" +
+ "\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9" +
+ "\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39" +
+ "\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE" +
+ "\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB" +
+ "\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA" +
+ "\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC" +
+ "\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8" +
+ "\u8064\u8067\u81A3\u819F\u819E\u8195\u81A2\u8199" +
+ "\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251" +
+ "\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D" +
+ "\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508" +
+ "\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3" +
+ "\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D" +
+ "\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7" +
+ "\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B" +
+ "\u8519\u852F\u8662\u8756\u8763\u8764\u8777\u87E1" +
+ "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751" +
+ "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F" +
+ "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775" +
+ "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B" +
+ "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909" +
+ "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6" +
+ "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE" +
+ "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E" +
+ "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD" +
+ "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25" +
+ "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26" +
+ "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A" +
+ "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17" +
+ "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129" +
+ "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181" +
+ "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9" +
+ "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD" +
+ "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6" +
+ "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3" +
+ "\u92B5\u92E1\u9325\u92C6\u92B4\u957C\u95AC\u95AB" +
+ "\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702" +
+ "\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D" +
+ "\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908" +
+ "\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD" +
+ "\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB" +
+ "\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1" +
+ "\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75" +
+ "\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF" +
+ "\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04" +
+ "\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A" +
+ "\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\u5673" +
+ "\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B" +
+ "\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6" +
+ "\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16" +
+ "\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9" +
+ "\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD" +
+ "\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7" +
+ "\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u5FBB\u619D\u61A8" +
+ "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\u61BF" +
+ "\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD" +
+ "\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C" +
+ "\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD" +
+ "\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67" +
+ "\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51" +
+ "\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50" +
+ "\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56" +
+ "\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7" +
+ "\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD" +
+ "\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4" +
+ "\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA" +
+ "\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2\u6FC9\u6FAB" +
+ "\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8" +
+ "\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF" +
+ "\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E" +
+ "\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F" +
+ "\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580" +
+ "\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632" +
+ "\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B" +
+ "\u77A2\u77A3\u7795\u7799\u7797\u78DD\u78E9\u78E5" +
+ "\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF" +
+ "\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5" +
+ "\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5" +
+ "\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB" +
+ "\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12" +
+ "\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C" +
+ "\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14" +
+ "\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF" +
+ "\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5" +
+ "\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2" +
+ "\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553" +
+ "\u8561\u8558\u8540\u8546\u8564\u8541\u8562\u8544" +
+ "\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E" +
+ "\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554" +
+ "\u8565\u856C\u8663\u8665\u8664\u87A4\u879B\u878F" +
+ "\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779" +
+ "\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794" +
+ "\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E" +
+ "\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F" +
+ "\u89F1\u8AE0\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14" +
+ "\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF" +
+ "\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1" +
+ "\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E" +
+ "\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30" +
+ "\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37" +
+ "\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135" +
+ "\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E" +
+ "\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B" +
+ "\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB" +
+ "\u931D\u92FA\u9313\u92F9\u92F7\u9334\u9302\u9324" +
+ "\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\u930B" +
+ "\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE" +
+ "\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4" +
+ "\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8" +
+ "\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E" +
+ "\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9" +
+ "\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9" +
+ "\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B" +
+ "\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\u9B7D\u9B88" +
+ "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18" +
+ "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE" +
+ "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125" +
+ "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D" +
+ "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6" +
+ "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C" +
+ "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7" +
+ "\u5E6C\u5E6A\u5FBE\u61C3\u61B5\u61BC\u61E7\u61E0" +
+ "\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB" +
+ "\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D" +
+ "\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E" +
+ "\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4\u6A91" +
+ "\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD" +
+ "\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED" +
+ "\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1" +
+ "\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E" +
+ "\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1" +
+ "\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643" +
+ "\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2" +
+ "\u77B7\u77B6\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD" +
+ "\u7902\u78FB\u78FC\u78FF\u78F2\u7905\u78F9\u78FE" +
+ "\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54" +
+ "\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00" +
+ "\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09" +
+ "\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10" +
+ "\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38" +
+ "\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B" +
+ "\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4" +
+ "\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7" +
+ "\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F" +
+ "\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A" +
+ "\u859E\u8577\u857C\u8589\u85A1\u857A\u8578\u8557" +
+ "\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2" +
+ "\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F" +
+ "\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9" +
+ "\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7" +
+ "\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD" +
+ "\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952" +
+ "\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E" +
+ "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12" +
+ "\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A" +
+ "\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9" +
+ "\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43" +
+ "\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199" +
+ "\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364" +
+ "\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350" +
+ "\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357" +
+ "\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E" +
+ "\u9363\u9367\u934E\u9359\u95C7\u95C0\u95C9\u95C3" +
+ "\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718" +
+ "\u971D\u9719\u979A\u97A1\u979C\u979E\u979D\u97D5" +
+ "\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843" +
+ "\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D" +
+ "\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4" +
+ "\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC" +
+ "\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A" +
+ "\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86" +
+ "\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E" +
+ "\u9D2F\u9D31\u9D38\u9D30\u9D45\u9D42\u9D43\u9D3E" +
+ "\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D" +
+ "\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22" +
+ "\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697" +
+ "\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0" +
+ "\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA" +
+ "\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8" +
+ "\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8" +
+ "\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7" +
+ "\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C" +
+ "\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB" +
+ "\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203" +
+ "\u71FD\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6" +
+ "\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650" +
+ "\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA" +
+ "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD" +
+ "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D" +
+ "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50" +
+ "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57" +
+ "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2" +
+ "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2" +
+ "\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE" +
+ "\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7" +
+ "\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA" +
+ "\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED" +
+ "\u87D8\u87E3\u87D7\u87D9\u8801\u87F4\u87E8\u87DD" +
+ "\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949" +
+ "\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F" +
+ "\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E" +
+ "\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98" +
+ "\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60" +
+ "\u8E57\u8E56\u8E5E\u8E65\u8E67\u8E5B\u8E5A\u8E61" +
+ "\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128" +
+ "\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA" +
+ "\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7" +
+ "\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F" +
+ "\u9380\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4" +
+ "\u93A3\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2" +
+ "\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE" +
+ "\u97A8\u97AB\u97A4\u97AA\u97A2\u97A5\u97D7\u97D9" +
+ "\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941" +
+ "\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11" +
+ "\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04" +
+ "\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6" +
+ "\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4" +
+ "\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B" +
+ "\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58" +
+ "\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25" +
+ "\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135" +
+ "\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA" +
+ "\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F" +
+ "\u5DC3\u5E70\u5FBF\u61FB\u6507\u6510\u650D\u6509" +
+ "\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0" +
+ "\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB" +
+ "\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027" +
+ "\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017" +
+ "\u7024\u701C\u720C\u720A\u7207\u7202\u7205\u72A5" +
+ "\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3" +
+ "\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B" +
+ "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33" +
+ "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75" +
+ "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68" +
+ "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078" +
+ "\u81D7\u81D5\u820B\u8264\u8261\u8263\u85EB\u85F1" +
+ "\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2" +
+ "\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6" +
+ "\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7" +
+ "\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A" +
+ "\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958" +
+ "\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48" +
+ "\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51" +
+ "\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06" +
+ "\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78" +
+ "\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F" +
+ "\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE" +
+ "\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC" +
+ "\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5" +
+ "\u93C4\u93CE\u93C0\u93D2\u93A5\u93E7\u957D\u95DA" +
+ "\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\u97B3" +
+ "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D" +
+ "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943" +
+ "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B" +
+ "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2" +
+ "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0" +
+ "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC" +
+ "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81" +
+ "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B" +
+ "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85" +
+ "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68" +
+ "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D" +
+ "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3" +
+ "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9" +
+ "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4" +
+ "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF" +
+ "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038" +
+ "\u703F\u703A\u7039\u702A\u7040\u703B\u7033\u7041" +
+ "\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA" +
+ "\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925" +
+ "\u7923\u7927\u7928\u7924\u7929\u79B2\u7A6E\u7A6C" +
+ "\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE" +
+ "\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB" +
+ "\u81D9\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B" +
+ "\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819" +
+ "\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9" +
+ "\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67" +
+ "\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57" +
+ "\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5" +
+ "\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414" +
+ "\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400" +
+ "\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8" +
+ "\u943C\u940A\u93FF\u93FC\u940C\u93F6\u9411\u9406" +
+ "\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD" +
+ "\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950" +
+ "\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31" +
+ "\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7" +
+ "\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7" +
+ "\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17" +
+ "\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98" +
+ "\u9D90\u9D9B\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1" +
+ "\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96" +
+ "\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7" +
+ "\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59" +
+ "\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE" +
+ "\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02" +
+ "\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048" +
+ "\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517" +
+ "\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2" +
+ "\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB" +
+ "\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C" +
+ "\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625" +
+ "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A" +
+ "\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45" +
+ "\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E" +
+ "\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B" +
+ "\u9436\u9429\u943D\u9430\u9439\u942A\u9437\u942C" +
+ "\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF" +
+ "\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39" +
+ "\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\u9A3F\u9ACD" +
+ "\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D" +
+ "\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7" +
+ "\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5" +
+ "\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8" +
+ "\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C" +
+ "\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E" +
+ "\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971" +
+ "\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526" +
+ "\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057" +
+ "\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9" +
+ "\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57" +
+ "\u7C5C\u7C59\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F" +
+ "\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632" +
+ "\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF" +
+ "\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F" +
+ "\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97" +
+ "\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F" +
+ "\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A" +
+ "\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C" +
+ "\u9A4F\u9A48\u9A4A\u9A49\u9A52\u9A50\u9AD0\u9B19" +
+ "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44" +
+ "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D" +
+ "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC" +
+ "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5" +
+ "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B" +
+ "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D" +
+ "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525" +
+ "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A" +
+ "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66" +
+ "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B" +
+ "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973" +
+ "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98" +
+ "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E" +
+ "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20" +
+ "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59" +
+ "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8" +
+ "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2" +
+ "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2" +
+ "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F" +
+ "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D" +
+ "\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060" +
+ "\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A" +
+ "\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B" +
+ "\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD" +
+ "\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747" +
+ "\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66" +
+ "\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06" +
+ "\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0" +
+ "\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8" +
+ "\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8" +
+ "\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\u7E98\u7E9B" +
+ "\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A" +
+ "\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3" +
+ "\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F" +
+ "\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12" +
+ "\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A" +
+ "\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3" +
+ "\u9474\u9478\u9476\u9475\u9A60\u9B2E\u9C74\u9C73" +
+ "\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\u9FA4\u7068" +
+ "\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C" +
+ "\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB" +
+ "\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207" +
+ "\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69" +
+ "\u9A68\u9E19\u864B\u8B9F\u9483\u9C79\u9EB7\u7675" +
+ "\u9A6B\u9C7A\u9E1D\u7069\u706A\u7229\u9EA4\u9F7E" +
+ "\u9F49\u9F98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD"
+ ;
+ mappingTableG2ac =
+ "\uE000\uE001\uE002\uE003\uE004\uE005\uE006\uE007" +
+ "\uE008\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F" +
+ "\uE010\uE011\uE012\uE013\uE014\uE015\uE016\uE017" +
+ "\uE018\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F" +
+ "\uE020\uE021\uE022\uE023\uE024\uE025\uE026\uE027" +
+ "\uE028\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F" +
+ "\uE030\uE031\uE032\uE033\uE034\uE035\uE036\uE037" +
+ "\uE038\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F" +
+ "\uE040\uE041\uE042\uE043\uE044\uE045\uE046\uE047" +
+ "\uE048\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F" +
+ "\uE050\uE051\uE052\uE053\uE054\uE055\uE056\uE057" +
+ "\uE058\uE059\uE05A\uE05B\uE05C\uE05D\uE05E\uE05F" +
+ "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067" +
+ "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F" +
+ "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077" +
+ "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F" +
+ "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087" +
+ "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F" +
+ "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097" +
+ "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F" +
+ "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7" +
+ "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF" +
+ "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7" +
+ "\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD\uE0BE\uE0BF" +
+ "\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6\uE0C7" +
+ "\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE\uE0CF" +
+ "\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6\uE0D7" +
+ "\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE\uE0DF" +
+ "\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6\uE0E7" +
+ "\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE\uE0EF" +
+ "\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6\uE0F7" +
+ "\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE\uE0FF" +
+ "\uE100\uE101\uE102\uE103\uE104\uE105\uE106\uE107" +
+ "\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E\uE10F" +
+ "\uE110\uE111\uE112\uE113\uE114\uE115\uE116\uE117" +
+ "\uE118\uE119\uE11A\uE11B\uE11C\uE11D\uE11E\uE11F" +
+ "\uE120\uE121\uE122\uE123\uE124\uE125\uE126\uE127" +
+ "\uE128\uE129\uE12A\uE12B\uE12C\uE12D\uE12E\uE12F" +
+ "\uE130\uE131\uE132\uE133\uE134\uE135\uE136\uE137" +
+ "\uE138\uE139\uE13A\uE13B\uE13C\uE13D\uE13E\uE13F" +
+ "\uE140\uE141\uE142\uE143\uE144\uE145\uE146\uE147" +
+ "\uE148\uE149\uE14A\uE14B\uE14C\uE14D\uE14E\uE14F" +
+ "\uE150\uE151\uE152\uE153\uE154\uE155\uE156\uE157" +
+ "\uE158\uE159\uE15A\uE15B\uE15C\uE15D\uE15E\uE15F" +
+ "\uE160\uE161\uE162\uE163\uE164\uE165\uE166\uE167" +
+ "\uE168\uE169\uE16A\uE16B\uE16C\uE16D\uE16E\uE16F" +
+ "\uE170\uE171\uE172\uE173\uE174\uE175\uE176\uE177" +
+ "\uE178\uE179\uE17A\uE17B\uE17C\uE17D\uE17E\uE17F" +
+ "\uE180\uE181\uE182\uE183\uE184\uE185\uE186\uE187" +
+ "\uE188\uE189\uE18A\uE18B\uE18C\uE18D\uE18E\uE18F" +
+ "\uE190\uE191\uE192\uE193\uE194\uE195\uE196\uE197" +
+ "\uE198\uE199\uE19A\uE19B\uE19C\uE19D\uE19E\uE19F" +
+ "\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4\uE1A5\uE1A6\uE1A7" +
+ "\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC\uE1AD\uE1AE\uE1AF" +
+ "\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4\uE1B5\uE1B6\uE1B7" +
+ "\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC\uE1BD\uE1BE\uE1BF" +
+ "\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4\uE1C5\uE1C6\uE1C7" +
+ "\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC\uE1CD\uE1CE\uE1CF" +
+ "\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4\uE1D5\uE1D6\uE1D7" +
+ "\uE1D8\uE1D9\uE1DA\uE1DB\uE1DC\uE1DD\uE1DE\uE1DF" +
+ "\uE1E0\uE1E1\uE1E2\uE1E3\uE1E4\uE1E5\uE1E6\uE1E7" +
+ "\uE1E8\uE1E9\uE1EA\uE1EB\uE1EC\uE1ED\uE1EE\uE1EF" +
+ "\uE1F0\uE1F1\uE1F2\uE1F3\uE1F4\uE1F5\uE1F6\uE1F7" +
+ "\uE1F8\uE1F9\uE1FA\uE1FB\uE1FC\uE1FD\uE1FE\uE1FF" +
+ "\uE200\uE201\uE202\uE203\uE204\uE205\uE206\uE207" +
+ "\uE208\uE209\uE20A\uE20B\uE20C\uE20D\uE20E\uE20F" +
+ "\uE210\uE211\uE212\uE213\uE214\uE215\uE216\uE217" +
+ "\uE218\uE219\uE21A\uE21B\uE21C\uE21D\uE21E\uE21F" +
+ "\uE220\uE221\uE222\uE223\uE224\uE225\uE226\uE227" +
+ "\uE228\uE229\uE22A\uE22B\uE22C\uE22D\uE22E\uE22F" +
+ "\uE230\uE231\uE232\uE233\uE234\uE235\uE236\uE237" +
+ "\uE238\uE239\uE23A\uE23B\uE23C\uE23D\uE23E\uE23F" +
+ "\uE240\uE241\uE242\uE243\uE244\uE245\uE246\uE247" +
+ "\uE248\uE249\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F" +
+ "\uE250\uE251\uE252\uE253\uE254\uE255\uE256\uE257" +
+ "\uE258\uE259\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F" +
+ "\uE260\uE261\uE262\uE263\uE264\uE265\uE266\uE267" +
+ "\uE268\uE269\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F" +
+ "\uE270\uE271\uE272\uE273\uE274\uE275\uE276\uE277" +
+ "\uE278\uE279\uE27A\uE27B\uE27C\uE27D\uE27E\uE27F" +
+ "\uE280\uE281\uE282\uE283\uE284\uE285\uE286\uE287" +
+ "\uE288\uE289\uE28A\uE28B\uE28C\uE28D\uE28E\uE28F" +
+ "\uE290\uE291\uE292\uE293\uE294\uE295\uE296\uE297" +
+ "\uE298\uE299\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F" +
+ "\uE2A0\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7" +
+ "\uE2A8\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF" +
+ "\uE2B0\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7" +
+ "\uE2B8\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF" +
+ "\uE2C0\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7" +
+ "\uE2C8\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF" +
+ "\uE2D0\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7" +
+ "\uE2D8\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF" +
+ "\uE2E0\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7" +
+ "\uE2E8\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF" +
+ "\uE2F0\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7" +
+ "\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF" +
+ "\uE300\uE301\uE302\uE303\uE304\uE305\uE306\uE307" +
+ "\uE308\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F" +
+ "\uE310\uE311\uE312\uE313\uE314\uE315\uE316\uE317" +
+ "\uE318\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F" +
+ "\uE320\uE321\uE322\uE323\uE324\uE325\uE326\uE327" +
+ "\uE328\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F" +
+ "\uE330\uE331\uE332\uE333\uE334\uE335\uE336\uE337" +
+ "\uE338\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F" +
+ "\uE340\uE341\uE342\uE343\uE344\uE345\uE346\uE347" +
+ "\uE348\uE349\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F" +
+ "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357" +
+ "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F" +
+ "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367" +
+ "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F" +
+ "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377" +
+ "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F" +
+ "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387" +
+ "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F" +
+ "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397" +
+ "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F" +
+ "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7" +
+ "\uE3A8\uE3A9\uE3AA\uE3AB\uE3AC\uE3AD\uE3AE\uE3AF" +
+ "\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6\uE3B7" +
+ "\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE\uE3BF" +
+ "\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6\uE3C7" +
+ "\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE\uE3CF" +
+ "\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6\uE3D7" +
+ "\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE\uE3DF" +
+ "\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6\uE3E7" +
+ "\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE\uE3EF" +
+ "\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6\uE3F7" +
+ "\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE\uE3FF" +
+ "\uE400\uE401\uE402\uE403\uE404\uE405\uE406\uE407" +
+ "\uE408\uE409\uE40A\uE40B\uE40C\uE40D\uE40E\uE40F" +
+ "\uE410\uE411\uE412\uE413\uE414\uE415\uE416\uE417" +
+ "\uE418\uE419\uE41A\uE41B\uE41C\uE41D\uE41E\uE41F" +
+ "\uE420\uE421\uE422\uE423\uE424\uE425\uE426\uE427" +
+ "\uE428\uE429\uE42A\uE42B\uE42C\uE42D\uE42E\uE42F" +
+ "\uE430\uE431\uE432\uE433\uE434\uE435\uE436\uE437" +
+ "\uE438\uE439\uE43A\uE43B\uE43C\uE43D\uE43E\uE43F" +
+ "\uE440\uE441\uE442\uE443\uE444\uE445\uE446\uE447" +
+ "\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E\uE44F" +
+ "\uE450\uE451\uE452\uE453\uE454\uE455\uE456\uE457" +
+ "\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E\uE45F" +
+ "\uE460\uE461\uE462\uE463\uE464\uE465\uE466\uE467" +
+ "\uE468\uE469\uE46A\uE46B\uE46C\uE46D\uE46E\uE46F" +
+ "\uE470\uE471\uE472\uE473\uE474\uE475\uE476\uE477" +
+ "\uE478\uE479\uE47A\uE47B\uE47C\uE47D\uE47E\uE47F" +
+ "\uE480\uE481\uE482\uE483\uE484\uE485\uE486\uE487" +
+ "\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E\uE48F" +
+ "\uE490\uE491\uE492\uE493\uE494\uE495\uE496\uE497" +
+ "\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E\uE49F" +
+ "\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7" +
+ "\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF" +
+ "\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7" +
+ "\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF" +
+ "\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7" +
+ "\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF" +
+ "\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7" +
+ "\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF" +
+ "\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7" +
+ "\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF" +
+ "\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7" +
+ "\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF" +
+ "\uE500\uE501\uE502\uE503\uE504\uE505\uE506\uE507" +
+ "\uE508\uE509\uE50A\uE50B\uE50C\uE50D\uE50E\uE50F" +
+ "\uE510\uE511\uE512\uE513\uE514\uE515\uE516\uE517" +
+ "\uE518\uE519\uE51A\uE51B\uE51C\uE51D\uE51E\uE51F" +
+ "\uE520\uE521\uE522\uE523\uE524\uE525\uE526\uE527" +
+ "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F" +
+ "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537" +
+ "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F" +
+ "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547" +
+ "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F" +
+ "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557" +
+ "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F" +
+ "\uE560\uE561\uE562\uE563\uE564\uE565\uE566\uE567" +
+ "\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F" +
+ "\uE570\uE571\uE572\uE573\uE574\uE575\uE576\uE577" +
+ "\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F" +
+ "\uE580\uE581\uE582\uE583\uE584\uE585\uE586\uE587" +
+ "\uE588\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F" +
+ "\uE590\uE591\uE592\uE593\uE594\uE595\uE596\uE597" +
+ "\uE598\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F" +
+ "\uE5A0\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7" +
+ "\uE5A8\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF" +
+ "\uE5B0\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7" +
+ "\uE5B8\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF" +
+ "\uE5C0\uE5C1\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7" +
+ "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF" +
+ "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7" +
+ "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF" +
+ "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7" +
+ "\uE5E8\uE5E9\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF" +
+ "\uE5F0\uE5F1\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7" +
+ "\uE5F8\uE5F9\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF" +
+ "\uE600\uE601\uE602\uE603\uE604\uE605\uE606\uE607" +
+ "\uE608\uE609\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F" +
+ "\uE610\uE611\uE612\uE613\uE614\uE615\uE616\uE617" +
+ "\uE618\uE619\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F" +
+ "\uE620\uE621\uE622\uE623\uE624\uE625\uE626\uE627" +
+ "\uE628\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F" +
+ "\uE630\uE631\uE632\uE633\uE634\uE635\uE636\uE637" +
+ "\uE638\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F" +
+ "\uE640\uE641\uE642\uE643\uE644\uE645\uE646\uE647" +
+ "\uE648\uE649\uE64A\uE64B\uE64C\uE64D\uE64E\uE64F" +
+ "\uE650\uE651\uE652\uE653\uE654\uE655\uE656\uE657" +
+ "\uE658\uE659\uE65A\uE65B\uE65C\uE65D\uE65E\uE65F" +
+ "\uE660\uE661\uE662\uE663\uE664\uE665\uE666\uE667" +
+ "\uE668\uE669\uE66A\uE66B\uE66C\uE66D\uE66E\uE66F" +
+ "\uE670\uE671\uE672\uE673\uE674\uE675\uE676\uE677" +
+ "\uE678\uE679\uE67A\uE67B\uE67C\uE67D\uE67E\uE67F" +
+ "\uE680\uE681\uE682\uE683\uE684\uE685\uE686\uE687" +
+ "\uE688\uE689\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F" +
+ "\uE690\uE691\uE692\uE693\uE694\uE695\uE696\uE697" +
+ "\uE698\uE699\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F" +
+ "\uE6A0\uE6A1\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6\uE6A7" +
+ "\uE6A8\uE6A9\uE6AA\uE6AB\uE6AC\uE6AD\uE6AE\uE6AF" +
+ "\uE6B0\uE6B1\uE6B2\uE6B3\uE6B4\uE6B5\uE6B6\uE6B7" +
+ "\uE6B8\uE6B9\uE6BA\uE6BB\uE6BC\uE6BD\uE6BE\uE6BF" +
+ "\uE6C0\uE6C1\uE6C2\uE6C3\uE6C4\uE6C5\uE6C6\uE6C7" +
+ "\uE6C8\uE6C9\uE6CA\uE6CB\uE6CC\uE6CD\uE6CE\uE6CF" +
+ "\uE6D0\uE6D1\uE6D2\uE6D3\uE6D4\uE6D5\uE6D6\uE6D7" +
+ "\uE6D8\uE6D9\uE6DA\uE6DB\uE6DC\uE6DD\uE6DE\uE6DF" +
+ "\uE6E0\uE6E1\uE6E2\uE6E3\uE6E4\uE6E5\uE6E6\uE6E7" +
+ "\uE6E8\uE6E9\uE6EA\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF" +
+ "\uE6F0\uE6F1\uE6F2\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7" +
+ "\uE6F8\uE6F9\uE6FA\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF" +
+ "\uE700\uE701\uE702\uE703\uE704\uE705\uE706\uE707" +
+ "\uE708\uE709\uE70A\uE70B\uE70C\uE70D\uE70E\uE70F" +
+ "\uE710\uE711\uE712\uE713\uE714\uE715\uE716\uE717" +
+ "\uE718\uE719\uE71A\uE71B\uE71C\uE71D\uE71E\uE71F" +
+ "\uE720\uE721\uE722\uE723\uE724\uE725\uE726\uE727" +
+ "\uE728\uE729\uE72A\uE72B\uE72C\uE72D\uE72E\uE72F" +
+ "\uE730\uE731\uE732\uE733\uE734\uE735\uE736\uE737" +
+ "\uE738\uE739\uE73A\uE73B\uE73C\uE73D\uE73E\uE73F" +
+ "\uE740\uE741\uE742\uE743\uE744\uE745\uE746\uE747" +
+ "\uE748\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F" +
+ "\uE750\uE751\uE752\uE753\uE754\uE755\uE756\uE757" +
+ "\uE758\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F" +
+ "\uE760\uE761\uE762\uE763\uE764\uE765\uE766\uE767" +
+ "\uE768\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F" +
+ "\uE770\uE771\uE772\uE773\uE774\uE775\uE776\uE777" +
+ "\uE778\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE77F" +
+ "\uE780\uE781\uE782\uE783\uE784\uE785\uE786\uE787" +
+ "\uE788\uE789\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F" +
+ "\uE790\uE791\uE792\uE793\uE794\uE795\uE796\uE797" +
+ "\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F" +
+ "\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4\uE7A5\uE7A6\uE7A7" +
+ "\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC\uE7AD\uE7AE\uE7AF" +
+ "\uE7B0\uE7B1\uE7B2\uE7B3\uE7B4\uE7B5\uE7B6\uE7B7" +
+ "\uE7B8\uE7B9\uE7BA\uE7BB\uE7BC\uE7BD\uE7BE\uE7BF" +
+ "\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5\uE7C6\uE7C7" +
+ "\uE7C8\uE7C9\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF" +
+ "\uE7D0\uE7D1\uE7D2\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7" +
+ "\uE7D8\uE7D9\uE7DA\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF" +
+ "\uE7E0\uE7E1\uE7E2\uE7E3\uE7E4\uE7E5\uE7E6\uE7E7" +
+ "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF" +
+ "\uE7F0\uE7F1\uE7F2\uE7F3\uE7F4\uE7F5\uE7F6\uE7F7" +
+ "\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD\uE7FE\uE7FF" +
+ "\uE800\uE801\uE802\uE803\uE804\uE805\uE806\uE807" +
+ "\uE808\uE809\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F" +
+ "\uE810\uE811\uE812\uE813\uE814\uE815\uE816\uE817" +
+ "\uE818\uE819\uE81A\uE81B\uE81C\uE81D\uE81E\uE81F" +
+ "\uE820\uE821\uE822\uE823\uE824\uE825\uE826\uE827" +
+ "\uE828\uE829\uE82A\uE82B\uE82C\uE82D\uE82E\uE82F" +
+ "\uE830\uE831\uE832\uE833\uE834\uE835\uE836\uE837" +
+ "\uE838\uE839\uE83A\uE83B\uE83C\uE83D\uE83E\uE83F" +
+ "\uE840\uE841\uE842\uE843\uE844\uE845\uE846\uE847" +
+ "\uE848\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uE84F" +
+ "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857" +
+ "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F" +
+ "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867" +
+ "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F" +
+ "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877" +
+ "\uE878\uE879\uE87A\uE87B\uE87C\uE87D\uE87E\uE87F" +
+ "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887" +
+ "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F" +
+ "\uE890\uE891\uE892\uE893\uE894\uE895\uE896\uE897" +
+ "\uE898\uE899\uE89A\uE89B\uE89C\uE89D\uE89E\uE89F" +
+ "\uE8A0\uE8A1\uE8A2\uE8A3\uE8A4\uE8A5\uE8A6\uE8A7" +
+ "\uE8A8\uE8A9\uE8AA\uE8AB\uE8AC\uE8AD\uE8AE\uE8AF" +
+ "\uE8B0\uE8B1\uE8B2\uE8B3\uE8B4\uE8B5\uE8B6\uE8B7" +
+ "\uE8B8\uE8B9\uE8BA\uE8BB\uE8BC\uE8BD\uE8BE\uE8BF" +
+ "\uE8C0\uE8C1\uE8C2\uE8C3\uE8C4\uE8C5\uE8C6\uE8C7" +
+ "\uE8C8\uE8C9\uE8CA\uE8CB\uE8CC\uE8CD\uE8CE\uE8CF" +
+ "\uE8D0\uE8D1\uE8D2\uE8D3\uE8D4\uE8D5\uE8D6\uE8D7" +
+ "\uE8D8\uE8D9\uE8DA\uE8DB\uE8DC\uE8DD\uE8DE\uE8DF" +
+ "\uE8E0\uE8E1\uE8E2\uE8E3\uE8E4\uE8E5\uE8E6\uE8E7" +
+ "\uE8E8\uE8E9\uE8EA\uE8EB\uE8EC\uE8ED\uE8EE\uE8EF" +
+ "\uE8F0\uE8F1\uE8F2\uE8F3\uE8F4\uE8F5\uE8F6\uE8F7" +
+ "\uE8F8\uE8F9\uE8FA\uE8FB\uE8FC\uE8FD\uE8FE\uE8FF" +
+ "\uE900\uE901\uE902\uE903\uE904\uE905\uE906\uE907" +
+ "\uE908\uE909\uE90A\uE90B\uE90C\uE90D\uE90E\uE90F" +
+ "\uE910\uE911\uE912\uE913\uE914\uE915\uE916\uE917" +
+ "\uE918\uE919\uE91A\uE91B\uE91C\uE91D\uE91E\uE91F" +
+ "\uE920\uE921\uE922\uE923\uE924\uE925\uE926\uE927" +
+ "\uE928\uE929\uE92A\uE92B\uE92C\uE92D\uE92E\uE92F" +
+ "\uE930\uE931\uE932\uE933\uE934\uE935\uE936\uE937" +
+ "\uE938\uE939\uE93A\uE93B\uE93C\uE93D\uE93E\uE93F" +
+ "\uE940\uE941\uE942\uE943\uE944\uE945\uE946\uE947" +
+ "\uE948\uE949\uE94A\uE94B\uE94C\uE94D\uE94E\uE94F" +
+ "\uE950\uE951\uE952\uE953\uE954\uE955\uE956\uE957" +
+ "\uE958\uE959\uE95A\uE95B\uE95C\uE95D\uE95E\uE95F" +
+ "\uE960\uE961\uE962\uE963\uE964\uE965\uE966\uE967" +
+ "\uE968\uE969\uE96A\uE96B\uE96C\uE96D\uE96E\uE96F" +
+ "\uE970\uE971\uE972\uE973\uE974\uE975\uE976\uE977" +
+ "\uE978\uE979\uE97A\uE97B\uE97C\uE97D\uE97E\uE97F" +
+ "\uE980\uE981\uE982\uE983\uE984\uE985\uE986\uE987" +
+ "\uE988\uE989\uE98A\uE98B\uE98C\uE98D\uE98E\uE98F" +
+ "\uE990\uE991\uE992\uE993\uE994\uE995\uE996\uE997" +
+ "\uE998\uE999\uE99A\uE99B\uE99C\uE99D\uE99E\uE99F" +
+ "\uE9A0\uE9A1\uE9A2\uE9A3\uE9A4\uE9A5\uE9A6\uE9A7" +
+ "\uE9A8\uE9A9\uE9AA\uE9AB\uE9AC\uE9AD\uE9AE\uE9AF" +
+ "\uE9B0\uE9B1\uE9B2\uE9B3\uE9B4\uE9B5\uE9B6\uE9B7" +
+ "\uE9B8\uE9B9\uE9BA\uE9BB\uE9BC\uE9BD\uE9BE\uE9BF" +
+ "\uE9C0\uE9C1\uE9C2\uE9C3\uE9C4\uE9C5\uE9C6\uE9C7" +
+ "\uE9C8\uE9C9\uE9CA\uE9CB\uE9CC\uE9CD\uE9CE\uE9CF" +
+ "\uE9D0\uE9D1\uE9D2\uE9D3\uE9D4\uE9D5\uE9D6\uE9D7" +
+ "\uE9D8\uE9D9\uE9DA\uE9DB\uE9DC\uE9DD\uE9DE\uE9DF" +
+ "\uE9E0\uE9E1\uE9E2\uE9E3\uE9E4\uE9E5\uE9E6\uE9E7" +
+ "\uE9E8\uE9E9\uE9EA\uE9EB\uE9EC\uE9ED\uE9EE\uE9EF" +
+ "\uE9F0\uE9F1\uE9F2\uE9F3\uE9F4\uE9F5\uE9F6\uE9F7" +
+ "\uE9F8\uE9F9\uE9FA\uE9FB\uE9FC\uE9FD\uE9FE\uE9FF" +
+ "\uEA00\uEA01\uEA02\uEA03\uEA04\uEA05\uEA06\uEA07" +
+ "\uEA08\uEA09\uEA0A\uEA0B\uEA0C\uEA0D\uEA0E\uEA0F" +
+ "\uEA10\uEA11\uEA12\uEA13\uEA14\uEA15\uEA16\uEA17" +
+ "\uEA18\uEA19\uEA1A\uEA1B\uEA1C\uEA1D\uEA1E\uEA1F" +
+ "\uEA20\uEA21\uEA22\uEA23\uEA24\uEA25\uEA26\uEA27" +
+ "\uEA28\uEA29\uEA2A\uEA2B\uEA2C\uEA2D\uEA2E\uEA2F" +
+ "\uEA30\uEA31\uEA32\uEA33\uEA34\uEA35\uEA36\uEA37" +
+ "\uEA38\uEA39\uEA3A\uEA3B\uEA3C\uEA3D\uEA3E\uEA3F" +
+ "\uEA40\uEA41\uEA42\uEA43\uEA44\uEA45\uEA46\uEA47" +
+ "\uEA48\uEA49\uEA4A\uEA4B\uEA4C\uEA4D\uEA4E\uEA4F" +
+ "\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57" +
+ "\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E\uEA5F" +
+ "\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" +
+ "\uEA68\uEA69\uEA6A\uEA6B\uEA6C\uEA6D\uEA6E\uEA6F" +
+ "\uEA70\uEA71\uEA72\uEA73\uEA74\uEA75\uEA76\uEA77" +
+ "\uEA78\uEA79\uEA7A\uEA7B\uEA7C\uEA7D\uEA7E\uEA7F" +
+ "\uEA80\uEA81\uEA82\uEA83\uEA84\uEA85\uEA86\uEA87" +
+ "\uEA88\uEA89\uEA8A\uEA8B\uEA8C\uEA8D\uEA8E\uEA8F" +
+ "\uEA90\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97" +
+ "\uEA98\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uEA9E\uEA9F" +
+ "\uEAA0\uEAA1\uEAA2\uEAA3\uEAA4\uEAA5\uEAA6\uEAA7" +
+ "\uEAA8\uEAA9\uEAAA\uEAAB\uEAAC\uEAAD\uEAAE\uEAAF" +
+ "\uEAB0\uEAB1\uEAB2\uEAB3\uEAB4\uEAB5\uEAB6\uEAB7" +
+ "\uEAB8\uEAB9\uEABA\uEABB\uEABC\uEABD\uEABE\uEABF" +
+ "\uEAC0\uEAC1\uEAC2\uEAC3\uEAC4\uEAC5\uEAC6\uEAC7" +
+ "\uEAC8\uEAC9\uEACA\uEACB\uEACC\uEACD\uEACE\uEACF" +
+ "\uEAD0\uEAD1\uEAD2\uEAD3\uEAD4\uEAD5\uEAD6\uEAD7" +
+ "\uEAD8\uEAD9\uEADA\uEADB\uEADC\uEADD\uEADE\uEADF" +
+ "\uEAE0\uEAE1\uEAE2\uEAE3\uEAE4\uEAE5\uEAE6\uEAE7" +
+ "\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC\uEAED\uEAEE\uEAEF" +
+ "\uEAF0\uEAF1\uEAF2\uEAF3\uEAF4\uEAF5\uEAF6\uEAF7" +
+ "\uEAF8\uEAF9\uEAFA\uEAFB\uEAFC\uEAFD\uEAFE\uEAFF" +
+ "\uEB00\uEB01\uEB02\uEB03\uEB04\uEB05\uEB06\uEB07" +
+ "\uEB08\uEB09\uEB0A\uEB0B\uEB0C\uEB0D\uEB0E\uEB0F" +
+ "\uEB10\uEB11\uEB12\uEB13\uEB14\uEB15\uEB16\uEB17" +
+ "\uEB18\uEB19\uEB1A\uEB1B\uEB1C\uEB1D\uEB1E\uEB1F" +
+ "\uEB20\uEB21\uEB22\uEB23\uEB24\uEB25\uEB26\uEB27" +
+ "\uEB28\uEB29\uEB2A\uEB2B\uEB2C\uEB2D\uEB2E\uEB2F" +
+ "\uEB30\uEB31\uEB32\uEB33\uEB34\uEB35\uEB36\uEB37" +
+ "\uEB38\uEB39\uEB3A\uEB3B\uEB3C\uEB3D\uEB3E\uEB3F" +
+ "\uEB40\uEB41\uEB42\uEB43\uEB44\uEB45\uEB46\uEB47" +
+ "\uEB48\uEB49\uEB4A\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F" +
+ "\uEB50\uEB51\uEB52\uEB53\uEB54\uEB55\uEB56\uEB57" +
+ "\uEB58\uEB59\uEB5A\uEB5B\uEB5C\uEB5D\uEB5E\uEB5F" +
+ "\uEB60\uEB61\uEB62\uEB63\uEB64\uEB65\uEB66\uEB67" +
+ "\uEB68\uEB69\uEB6A\uEB6B\uEB6C\uEB6D\uEB6E\uEB6F" +
+ "\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76\uEB77" +
+ "\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D\uEB7E\uEB7F" +
+ "\uEB80\uEB81\uEB82\uEB83\uEB84\uEB85\uEB86\uEB87" +
+ "\uEB88\uEB89\uEB8A\uEB8B\uEB8C\uEB8D\uEB8E\uEB8F" +
+ "\uEB90\uEB91\uEB92\uEB93\uEB94\uEB95\uEB96\uEB97" +
+ "\uEB98\uEB99\uEB9A\uEB9B\uEB9C\uEB9D\uEB9E\uEB9F" +
+ "\uEBA0\uEBA1\uEBA2\uEBA3\uEBA4\uEBA5\uEBA6\uEBA7" +
+ "\uEBA8\uEBA9\uEBAA\uEBAB\uEBAC\uEBAD\uEBAE\uEBAF" +
+ "\uEBB0\uEBB1\uEBB2\uEBB3\uEBB4\uEBB5\uEBB6\uEBB7" +
+ "\uEBB8\uEBB9\uEBBA\uEBBB\uEBBC\uEBBD\uEBBE\uEBBF" +
+ "\uEBC0\uEBC1\uEBC2\uEBC3\uEBC4\uEBC5\uEBC6\uEBC7" +
+ "\uEBC8\uEBC9\uEBCA\uEBCB\uEBCC\uEBCD\uEBCE\uEBCF" +
+ "\uEBD0\uEBD1\uEBD2\uEBD3\uEBD4\uEBD5\uEBD6\uEBD7" +
+ "\uEBD8\uEBD9\uEBDA\uEBDB\uEBDC\uEBDD\uEBDE\uEBDF" +
+ "\uEBE0\uEBE1\uEBE2\uEBE3\uEBE4\uEBE5\uEBE6\uEBE7" +
+ "\uEBE8\uEBE9\uEBEA\uEBEB\uEBEC\uEBED\uEBEE\uEBEF" +
+ "\uEBF0\uEBF1\uEBF2\uEBF3\uEBF4\uEBF5\uEBF6\uEBF7" +
+ "\uEBF8\uEBF9\uEBFA\uEBFB\uEBFC\uEBFD\uEBFE\uEBFF" +
+ "\uEC00\uEC01\uEC02\uEC03\uEC04\uEC05\uEC06\uEC07" +
+ "\uEC08\uEC09\uEC0A\uEC0B\uEC0C\uEC0D\uEC0E\uEC0F" +
+ "\uEC10\uEC11\uEC12\uEC13\uEC14\uEC15\uEC16\uEC17" +
+ "\uEC18\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\uEC1E\uEC1F" +
+ "\uEC20\uEC21\uEC22\uEC23\uEC24\uEC25\uEC26\uEC27" +
+ "\uEC28\uEC29\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F" +
+ "\uEC30\uEC31\uEC32\uEC33\uEC34\uEC35\uEC36\uEC37" +
+ "\uEC38\uEC39\uEC3A\uEC3B\uEC3C\uEC3D\uEC3E\uEC3F" +
+ "\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47" +
+ "\uEC48\uEC49\uEC4A\uEC4B\uEC4C\uEC4D\uEC4E\uEC4F" +
+ "\uEC50\uEC51\uEC52\uEC53\uEC54\uEC55\uEC56\uEC57" +
+ "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F" +
+ "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67" +
+ "\uEC68\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F" +
+ "\uEC70\uEC71\uEC72\uEC73\uEC74\uEC75\uEC76\uEC77" +
+ "\uEC78\uEC79\uEC7A\uEC7B\uEC7C\uEC7D\uEC7E\uEC7F" +
+ "\uEC80\uEC81\uEC82\uEC83\uEC84\uEC85\uEC86\uEC87" +
+ "\uEC88\uEC89\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uEC8F" +
+ "\uEC90\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96\uEC97" +
+ "\uEC98\uEC99\uEC9A\uEC9B\uEC9C\uEC9D\uEC9E\uEC9F" +
+ "\uECA0\uECA1\uECA2\uECA3\uECA4\uECA5\uECA6\uECA7" +
+ "\uECA8\uECA9\uECAA\uECAB\uECAC\uECAD\uECAE\uECAF" +
+ "\uECB0\uECB1\uECB2\uECB3\uECB4\uECB5\uECB6\uECB7" +
+ "\uECB8\uECB9\uECBA\uECBB\uECBC\uECBD\uECBE\uECBF" +
+ "\uECC0\uECC1\uECC2\uECC3\uECC4\uECC5\uECC6\uECC7" +
+ "\uECC8\uECC9\uECCA\uECCB\uECCC\uECCD\uECCE\uECCF" +
+ "\uECD0\uECD1\uECD2\uECD3\uECD4\uECD5\uECD6\uECD7" +
+ "\uECD8\uECD9\uECDA\uECDB\uECDC\uECDD\uECDE\uECDF" +
+ "\uECE0\uECE1\uECE2\uECE3\uECE4\uECE5\uECE6\uECE7" +
+ "\uECE8\uECE9\uECEA\uECEB\uECEC\uECED\uECEE\uECEF" +
+ "\uECF0\uECF1\uECF2\uECF3\uECF4\uECF5\uECF6\uECF7" +
+ "\uECF8\uECF9\uECFA\uECFB\uECFC\uECFD\uECFE\uECFF" +
+ "\uED00\uED01\uED02\uED03\uED04\uED05\uED06\uED07" +
+ "\uED08\uED09\uED0A\uED0B\uED0C\uED0D\uED0E\uED0F" +
+ "\uED10\uED11\uED12\uED13\uED14\uED15\uED16\uED17" +
+ "\uED18\uED19\uED1A\uED1B\uED1C\uED1D\uED1E\uED1F" +
+ "\uED20\uED21\uED22\uED23\uED24\uED25\uED26\uED27" +
+ "\uED28\uED29\uED2A\uED2B\uED2C\uED2D\uED2E\uED2F" +
+ "\uED30\uED31\uED32\uED33\uED34\uED35\uED36\uED37" +
+ "\uED38\uED39\uED3A\uED3B\uED3C\uED3D\uED3E\uED3F" +
+ "\uED40\uED41\uED42\uED43\uED44\uED45\uED46\uED47" +
+ "\uED48\uED49\uED4A\uED4B\uED4C\uED4D\uED4E\uED4F" +
+ "\uED50\uED51\uED52\uED53\uED54\uED55\uED56\uED57" +
+ "\uED58\uED59\uED5A\uED5B\uED5C\uED5D\uED5E\uED5F" +
+ "\uED60\uED61\uED62\uED63\uED64\uED65\uED66\uED67" +
+ "\uED68\uED69\uED6A\uED6B\uED6C\uED6D\uED6E\uED6F" +
+ "\uED70\uED71\uED72\uED73\uED74\uED75\uED76\uED77" +
+ "\uED78\uED79\uED7A\uED7B\uED7C\uED7D\uED7E\uED7F" +
+ "\uED80\uED81\uED82\uED83\uED84\uED85\uED86\uED87" +
+ "\uED88\uED89\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F" +
+ "\uED90\uED91\uED92\uED93\uED94\uED95\uED96\uED97" +
+ "\uED98\uED99\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F" +
+ "\uEDA0\uEDA1\uEDA2\uEDA3\uEDA4\uEDA5\uEDA6\uEDA7" +
+ "\uEDA8\uEDA9\uEDAA\uEDAB\uEDAC\uEDAD\uEDAE\uEDAF" +
+ "\uEDB0\uEDB1\uEDB2\uEDB3\uEDB4\uEDB5\uEDB6\uEDB7" +
+ "\uEDB8\uEDB9\uEDBA\uEDBB\uEDBC\uEDBD\uEDBE\uEDBF" +
+ "\uEDC0\uEDC1\uEDC2\uEDC3\uEDC4\uEDC5\uEDC6\uEDC7" +
+ "\uEDC8\uEDC9\uEDCA\uEDCB\uEDCC\uEDCD\uEDCE\uEDCF" +
+ "\uEDD0\uEDD1\uEDD2\uEDD3\uEDD4\uEDD5\uEDD6\uEDD7" +
+ "\uEDD8\uEDD9\uEDDA\uEDDB\uEDDC\uEDDD\uEDDE\uEDDF" +
+ "\uEDE0\uEDE1\uEDE2\uEDE3\uEDE4\uEDE5\uEDE6\uEDE7" +
+ "\uEDE8\uEDE9\uEDEA\uEDEB\uEDEC\uEDED\uEDEE\uEDEF" +
+ "\uEDF0\uEDF1\uEDF2\uEDF3\uEDF4\uEDF5\uEDF6\uEDF7" +
+ "\uEDF8\uEDF9\uEDFA\uEDFB\uEDFC\uEDFD\uEDFE\uEDFF" +
+ "\uEE00\uEE01\uEE02\uEE03\uEE04\uEE05\uEE06\uEE07" +
+ "\uEE08\uEE09\uEE0A\uEE0B\uEE0C\uEE0D\uEE0E\uEE0F" +
+ "\uEE10\uEE11\uEE12\uEE13\uEE14\uEE15\uEE16\uEE17" +
+ "\uEE18\uEE19\uEE1A\uEE1B\uEE1C\uEE1D\uEE1E\uEE1F" +
+ "\uEE20\uEE21\uEE22\uEE23\uEE24\uEE25\uEE26\uEE27" +
+ "\uEE28\uEE29\uEE2A\uEE2B\uEE2C\uEE2D\uEE2E\uEE2F" +
+ "\uEE30\uEE31\uEE32\uEE33\uEE34\uEE35\uEE36\uEE37" +
+ "\uEE38\uEE39\uEE3A\uEE3B\uEE3C\uEE3D\uEE3E\uEE3F" +
+ "\uEE40\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47" +
+ "\uEE48\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F" +
+ "\uEE50\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57" +
+ "\uEE58\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F" +
+ "\uEE60\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67" +
+ "\uEE68\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F" +
+ "\uEE70\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77" +
+ "\uEE78\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE7F" +
+ "\uEE80\uEE81\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87" +
+ "\uEE88\uEE89\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F" +
+ "\uEE90\uEE91\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97" +
+ "\uEE98\uEE99\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F" +
+ "\uEEA0\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7" +
+ "\uEEA8\uEEA9\uEEAA\uEEAB\uEEAC\uEEAD\uEEAE\uEEAF" +
+ "\uEEB0\uEEB1\uEEB2\uEEB3\uEEB4\uEEB5\uEEB6\uEEB7" +
+ "\uEEB8\uEEB9\uEEBA\uEEBB\uEEBC\uEEBD\uEEBE\uEEBF" +
+ "\uEEC0\uEEC1\uEEC2\uEEC3\uEEC4\uEEC5\uEEC6\uEEC7" +
+ "\uEEC8\uEEC9\uEECA\uEECB\uEECC\uEECD\uEECE\uEECF" +
+ "\uEED0\uEED1\uEED2\uEED3\uEED4\uEED5\uEED6\uEED7" +
+ "\uEED8\uEED9\uEEDA\uEEDB\uEEDC\uEEDD\uEEDE\uEEDF" +
+ "\uEEE0\uEEE1\uEEE2\uEEE3\uEEE4\uEEE5\uEEE6\uEEE7" +
+ "\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uEEED\uEEEE\uEEEF" +
+ "\uEEF0\uEEF1\uEEF2\uEEF3\uEEF4\uEEF5\uEEF6\uEEF7" +
+ "\uEEF8\uEEF9\uEEFA\uEEFB\uEEFC\uEEFD\uEEFE\uEEFF" +
+ "\uEF00\uEF01\uEF02\uEF03\uEF04\uEF05\uEF06\uEF07" +
+ "\uEF08\uEF09\uEF0A\uEF0B\uEF0C\uEF0D\uEF0E\uEF0F" +
+ "\uEF10\uEF11\uEF12\uEF13\uEF14\uEF15\uEF16\uEF17" +
+ "\uEF18\uEF19\uEF1A\uEF1B\uEF1C\uEF1D\uEF1E\uEF1F" +
+ "\uEF20\uEF21\uEF22\uEF23\uEF24\uEF25\uEF26\uEF27" +
+ "\uEF28\uEF29\uEF2A\uEF2B\uEF2C\uEF2D\uEF2E\uEF2F" +
+ "\uEF30\uEF31\uEF32\uEF33\uEF34\uEF35\uEF36\uEF37" +
+ "\uEF38\uEF39\uEF3A\uEF3B\uEF3C\uEF3D\uEF3E\uEF3F" +
+ "\uEF40\uEF41\uEF42\uEF43\uEF44\uEF45\uEF46\uEF47" +
+ "\uEF48\uEF49\uEF4A\uEF4B\uEF4C\uEF4D\uEF4E\uEF4F" +
+ "\uEF50\uEF51\uEF52\uEF53\uEF54\uEF55\uEF56\uEF57" +
+ "\uEF58\uEF59\uEF5A\uEF5B\uEF5C\uEF5D\uEF5E\uEF5F" +
+ "\uEF60\uEF61\uEF62\uEF63\uEF64\uEF65\uEF66\uEF67" +
+ "\uEF68\uEF69\uEF6A\uEF6B\uEF6C\uEF6D\uEF6E\uEF6F" +
+ "\uEF70\uEF71\uEF72\uEF73\uEF74\uEF75\uEF76\uEF77" +
+ "\uEF78\uEF79\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF7F" +
+ "\uEF80\uEF81\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87" +
+ "\uEF88\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F" +
+ "\uEF90\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97" +
+ "\uEF98\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F" +
+ "\uEFA0\uEFA1\uEFA2\uEFA3\uEFA4\uEFA5\uEFA6\uEFA7" +
+ "\uEFA8\uEFA9\uEFAA\uEFAB\uEFAC\uEFAD\uEFAE\uEFAF" +
+ "\uEFB0\uEFB1\uEFB2\uEFB3\uEFB4\uEFB5\uEFB6\uEFB7" +
+ "\uEFB8\uEFB9\uEFBA\uEFBB\uEFBC\uEFBD\uEFBE\uEFBF" +
+ "\uEFC0\uEFC1\uEFC2\uEFC3\uEFC4\uEFC5\uEFC6\uEFC7" +
+ "\uEFC8\uEFC9\uEFCA\uEFCB\uEFCC\uEFCD\uEFCE\uEFCF" +
+ "\uEFD0\uEFD1\uEFD2\uEFD3\uEFD4\uEFD5\uEFD6\uEFD7" +
+ "\uEFD8\uEFD9\uEFDA\uEFDB\uEFDC\uEFDD\uEFDE\uEFDF" +
+ "\uEFE0\uEFE1\uEFE2\uEFE3\uEFE4\uEFE5\uEFE6\uEFE7" +
+ "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uEFED\uEFEE\uEFEF" +
+ "\uEFF0\uEFF1\uEFF2\uEFF3\uEFF4\uEFF5\uEFF6\uEFF7" +
+ "\uEFF8\uEFF9\uEFFA\uEFFB\uEFFC\uEFFD\uEFFE\uEFFF" +
+ "\uF000\uF001\uF002\uF003\uF004\uF005\uF006\uF007" +
+ "\uF008\uF009\uF00A\uF00B\uF00C\uF00D\uF00E\uF00F" +
+ "\uF010\uF011\uF012\uF013\uF014\uF015\uF016\uF017" +
+ "\uF018\uF019\uF01A\uF01B\uF01C\uF01D\uF01E\uF01F" +
+ "\uF020\uF021\uF022\uF023\uF024\uF025\uF026\uF027" +
+ "\uF028\uF029\uF02A\uF02B\uF02C\uF02D\uF02E\uF02F" +
+ "\uF030\uF031\uF032\uF033\uF034\uF035\uF036\uF037" +
+ "\uF038\uF039\uF03A\uF03B\uF03C\uF03D\uF03E\uF03F" +
+ "\uF040\uF041\uF042\uF043\uF044\uF045\uF046\uF047" +
+ "\uF048\uF049\uF04A\uF04B\uF04C\uF04D\uF04E\uF04F" +
+ "\uF050\uF051\uF052\uF053\uF054\uF055\uF056\uF057" +
+ "\uF058\uF059\uF05A\uF05B\uF05C\uF05D\uF05E\uF05F" +
+ "\uF060\uF061\uF062\uF063\uF064\uF065\uF066\uF067" +
+ "\uF068\uF069\uF06A\uF06B\uF06C\uF06D\uF06E\uF06F" +
+ "\uF070\uF071\uF072\uF073\uF074\uF075\uF076\uF077" +
+ "\uF078\uF079\uF07A\uF07B\uF07C\uF07D\uF07E\uF07F" +
+ "\uF080\uF081\uF082\uF083\uF084\uF085\uF086\uF087" +
+ "\uF088\uF089\uF08A\uF08B\uF08C\uF08D\uF08E\uF08F" +
+ "\uF090\uF091\uF092\uF093\uF094\uF095\uF096\uF097" +
+ "\uF098\uF099\uF09A\uF09B\uF09C\uF09D\uF09E\uF09F" +
+ "\uF0A0\uF0A1\uF0A2\uF0A3\uF0A4\uF0A5\uF0A6\uF0A7" +
+ "\uF0A8\uF0A9\uF0AA\uF0AB\uF0AC\uF0AD\uF0AE\uF0AF" +
+ "\uF0B0\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uF0B6\uF0B7" +
+ "\uF0B8\uF0B9\uF0BA\uF0BB\uF0BC\uF0BD\uF0BE\uF0BF" +
+ "\uF0C0\uF0C1\uF0C2\uF0C3\uF0C4\uF0C5\uF0C6\uF0C7" +
+ "\uF0C8\uF0C9\uF0CA\uF0CB\uF0CC\uF0CD\uF0CE\uF0CF" +
+ "\uF0D0\uF0D1\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D7" +
+ "\uF0D8\uF0D9\uF0DA\uF0DB\uF0DC\uF0DD\uF0DE\uF0DF" +
+ "\uF0E0\uF0E1\uF0E2\uF0E3\uF0E4\uF0E5\uF0E6\uF0E7" +
+ "\uF0E8\uF0E9\uF0EA\uF0EB\uF0EC\uF0ED\uF0EE\uF0EF" +
+ "\uF0F0\uF0F1\uF0F2\uF0F3\uF0F4\uF0F5\uF0F6\uF0F7" +
+ "\uF0F8\uF0F9\uF0FA\uF0FB\uF0FC\uF0FD\uF0FE\uF0FF" +
+ "\uF100\uF101\uF102\uF103\uF104\uF105\uF106\uF107" +
+ "\uF108\uF109\uF10A\uF10B\uF10C\uF10D\uF10E\uF10F" +
+ "\uF110\uF111\uF112\uF113\uF114\uF115\uF116\uF117" +
+ "\uF118\uF119\uF11A\uF11B\uF11C\uF11D\uF11E\uF11F" +
+ "\uF120\uF121\uF122\uF123\uF124\uF125\uF126\uF127" +
+ "\uF128\uF129\uF12A\uF12B\uF12C\uF12D\uF12E\uF12F" +
+ "\uF130\uF131\uF132\uF133\uF134\uF135\uF136\uF137" +
+ "\uF138\uF139\uF13A\uF13B\uF13C\uF13D\uF13E\uF13F" +
+ "\uF140\uF141\uF142\uF143\uF144\uF145\uF146\uF147" +
+ "\uF148\uF149\uF14A\uF14B\uF14C\uF14D\uF14E\uF14F" +
+ "\uF150\uF151\uF152\uF153\uF154\uF155\uF156\uF157" +
+ "\uF158\uF159\uF15A\uF15B\uF15C\uF15D\uF15E\uF15F" +
+ "\uF160\uF161\uF162\uF163\uF164\uF165\uF166\uF167" +
+ "\uF168\uF169\uF16A\uF16B\uF16C\uF16D\uF16E\uF16F" +
+ "\uF170\uF171\uF172\uF173\uF174\uF175\uF176\uF177" +
+ "\uF178\uF179\uF17A\uF17B\uF17C\uF17D\uF17E\uF17F" +
+ "\uF180\uF181\uF182\uF183\uF184\uF185\uF186\uF187" +
+ "\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E\uF18F" +
+ "\uF190\uF191\uF192\uF193\uF194\uF195\uF196\uF197" +
+ "\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E\uF19F" +
+ "\uF1A0\uF1A1\uF1A2\uF1A3\uF1A4\uF1A5\uF1A6\uF1A7" +
+ "\uF1A8\uF1A9\uF1AA\uF1AB\uF1AC\uF1AD\uF1AE\uF1AF" +
+ "\uF1B0\uF1B1\uF1B2\uF1B3\uF1B4\uF1B5\uF1B6\uF1B7" +
+ "\uF1B8\uF1B9\uF1BA\uF1BB\uF1BC\uF1BD\uF1BE\uF1BF" +
+ "\uF1C0\uF1C1\uF1C2\uF1C3\uF1C4\uF1C5\uF1C6\uF1C7" +
+ "\uF1C8\uF1C9\uF1CA\uF1CB\uF1CC\uF1CD\uF1CE\uF1CF" +
+ "\uF1D0\uF1D1\uF1D2\uF1D3\uF1D4\uF1D5\uF1D6\uF1D7" +
+ "\uF1D8\uF1D9\uF1DA\uF1DB\uF1DC\uF1DD\uF1DE\uF1DF" +
+ "\uF1E0\uF1E1\uF1E2\uF1E3\uF1E4\uF1E5\uF1E6\uF1E7" +
+ "\uF1E8\uF1E9\uF1EA\uF1EB\uF1EC\uF1ED\uF1EE\uF1EF" +
+ "\uF1F0\uF1F1\uF1F2\uF1F3\uF1F4\uF1F5\uF1F6\uF1F7" +
+ "\uF1F8\uF1F9\uF1FA\uF1FB\uF1FC\uF1FD\uF1FE\uF1FF" +
+ "\uF200\uF201\uF202\uF203\uF204\uF205\uF206\uF207" +
+ "\uF208\uF209\uF20A\uF20B\uF20C\uF20D\uF20E\uF20F" +
+ "\uF210\uF211\uF212\uF213\uF214\uF215\uF216\uF217" +
+ "\uF218\uF219\uF21A\uF21B\uF21C\uF21D\uF21E\uF21F" +
+ "\uF220\uF221\uF222\uF223\uF224\uF225\uF226\uF227" +
+ "\uF228\uF229\uF22A\uF22B\uF22C\uF22D\uF22E\uF22F" +
+ "\uF230\uF231\uF232\uF233\uF234\uF235\uF236\uF237" +
+ "\uF238\uF239\uF23A\uF23B\uF23C\uF23D\uF23E\uF23F" +
+ "\uF240\uF241\uF242\uF243\uF244\uF245\uF246\uF247" +
+ "\uF248\uF249\uF24A\uF24B\uF24C\uF24D\uF24E\uF24F" +
+ "\uF250\uF251\uF252\uF253\uF254\uF255\uF256\uF257" +
+ "\uF258\uF259\uF25A\uF25B\uF25C\uF25D\uF25E\uF25F" +
+ "\uF260\uF261\uF262\uF263\uF264\uF265\uF266\uF267" +
+ "\uF268\uF269\uF26A\uF26B\uF26C\uF26D\uF26E\uF26F" +
+ "\uF270\uF271\uF272\uF273\uF274\uF275\uF276\uF277" +
+ "\uF278\uF279\uF27A\uF27B\uF27C\uF27D\uF27E\uF27F" +
+ "\uF280\uF281\uF282\uF283\uF284\uF285\uF286\uF287" +
+ "\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E\uF28F" +
+ "\uF290\uF291\uF292\uF293\uF294\uF295\uF296\uF297" +
+ "\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E\uF29F" +
+ "\uF2A0\uF2A1\uF2A2\uF2A3\uF2A4\uF2A5\uF2A6\uF2A7" +
+ "\uF2A8\uF2A9\uF2AA\uF2AB\uF2AC\uF2AD\uF2AE\uF2AF" +
+ "\uF2B0\uF2B1\uF2B2\uF2B3\uF2B4\uF2B5\uF2B6\uF2B7" +
+ "\uF2B8\uF2B9\uF2BA\uF2BB\uF2BC\uF2BD\uF2BE\uF2BF" +
+ "\uF2C0\uF2C1\uF2C2\uF2C3\uF2C4\uF2C5\uF2C6\uF2C7" +
+ "\uF2C8\uF2C9\uF2CA\uF2CB\uF2CC\uF2CD\uF2CE\uF2CF" +
+ "\uF2D0\uF2D1\uF2D2\uF2D3\uF2D4\uF2D5\uF2D6\uF2D7" +
+ "\uF2D8\uF2D9\uF2DA\uF2DB\uF2DC\uF2DD\uF2DE\uF2DF" +
+ "\uF2E0\uF2E1\uF2E2\uF2E3\uF2E4\uF2E5\uF2E6\uF2E7" +
+ "\uF2E8\uF2E9\uF2EA\uF2EB\uF2EC\uF2ED\uF2EE\uF2EF" +
+ "\uF2F0\uF2F1\uF2F2\uF2F3\uF2F4\uF2F5\uF2F6\uF2F7" +
+ "\uF2F8\uF2F9\uF2FA\uF2FB\uF2FC\uF2FD\uF2FE\uF2FF" +
+ "\uF300\uF301\uF302\uF303\uF304\uF305\uF306\uF307" +
+ "\uF308\uF309\uF30A\uF30B\uF30C\uF30D\uF30E\uF30F" +
+ "\uF310\uF311\uF312\uF313\uF314\uF315\uF316\uF317" +
+ "\uF318\uF319\uF31A\uF31B\uF31C\uF31D\uF31E\uF31F" +
+ "\uF320\uF321\uF322\uF323\uF324\uF325\uF326\uF327" +
+ "\uF328\uF329\uF32A\uF32B\uF32C\uF32D\uF32E\uF32F" +
+ "\uF330\uF331\uF332\uF333\uF334\uF335\uF336\uF337" +
+ "\uF338\uF339\uF33A\uF33B\uF33C\uF33D\uF33E\uF33F" +
+ "\uF340\uF341\uF342\uF343\uF344\uF345\uF346\uF347" +
+ "\uF348\uF349\uF34A\uF34B\uF34C\uF34D\uF34E\uF34F" +
+ "\uF350\uF351\uF352\uF353\uF354\uF355\uF356\uF357" +
+ "\uF358\uF359\uF35A\uF35B\uF35C\uF35D\uF35E\uF35F" +
+ "\uF360\uF361\uF362\uF363\uF364\uF365\uF366\uF367" +
+ "\uF368\uF369\uF36A\uF36B\uF36C\uF36D\uF36E\uF36F" +
+ "\uF370\uF371\uF372\uF373\uF374\uF375\uF376\uF377" +
+ "\uF378\uF379\uF37A\uF37B\uF37C\uF37D\uF37E\uF37F" +
+ "\uF380\uF381\uF382\uF383\uF384\uF385\uF386\uF387" +
+ "\uF388\uF389\uF38A\uF38B\uF38C\uF38D\uF38E\uF38F" +
+ "\uF390\uF391\uF392\uF393\uF394\uF395\uF396\uF397" +
+ "\uF398\uF399\uF39A\uF39B\uF39C\uF39D\uF39E\uF39F" +
+ "\uF3A0\uF3A1\uF3A2\uF3A3\uF3A4\uF3A5\uF3A6\uF3A7" +
+ "\uF3A8\uF3A9\uF3AA\uF3AB\uF3AC\uF3AD\uF3AE\uF3AF" +
+ "\uF3B0\uF3B1\uF3B2\uF3B3\uF3B4\uF3B5\uF3B6\uF3B7" +
+ "\uF3B8\uF3B9\uF3BA\uF3BB\uF3BC\uF3BD\uF3BE\uF3BF" +
+ "\uF3C0\uF3C1\uF3C2\uF3C3\uF3C4\uF3C5\uF3C6\uF3C7" +
+ "\uF3C8\uF3C9\uF3CA\uF3CB\uF3CC\uF3CD\uF3CE\uF3CF" +
+ "\uF3D0\uF3D1\uF3D2\uF3D3\uF3D4\uF3D5\uF3D6\uF3D7" +
+ "\uF3D8\uF3D9\uF3DA\uF3DB\uF3DC\uF3DD\uF3DE\uF3DF" +
+ "\uF3E0\uF3E1\uF3E2\uF3E3\uF3E4\uF3E5\uF3E6\uF3E7" +
+ "\uF3E8\uF3E9\uF3EA\uF3EB\uF3EC\uF3ED\uF3EE\uF3EF" +
+ "\uF3F0\uF3F1\uF3F2\uF3F3\uF3F4\uF3F5\uF3F6\uF3F7" +
+ "\uF3F8\uF3F9\uF3FA\uF3FB\uF3FC\uF3FD\uF3FE\uF3FF" +
+ "\uF400\uF401\uF402\uF403\uF404\uF405\uF406\uF407" +
+ "\uF408\uF409\uF40A\uF40B\uF40C\uF40D\uF40E\uF40F" +
+ "\uF410\uF411\uF412\uF413\uF414\uF415\uF416\uF417" +
+ "\uF418\uF419\uF41A\uF41B\uF41C\uF41D\uF41E\uF41F" +
+ "\uF420\uF421\uF422\uF423\uF424\uF425\uF426\uF427" +
+ "\uF428\uF429\uF42A\uF42B\uF42C\uF42D\uF42E\uF42F" +
+ "\uF430\uF431\uF432\uF433\uF434\uF435\uF436\uF437" +
+ "\uF438\uF439\uF43A\uF43B\uF43C\uF43D\uF43E\uF43F" +
+ "\uF440\uF441\uF442\uF443\uF444\uF445\uF446\uF447" +
+ "\uF448\uF449\uF44A\uF44B\uF44C\uF44D\uF44E\uF44F" +
+ "\uF450\uF451\uF452\uF453\uF454\uF455\uF456\uF457" +
+ "\uF458\uF459\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F" +
+ "\uF460\uF461\uF462\uF463\uF464\uF465\uF466\uF467" +
+ "\uF468\uF469\uF46A\uF46B\uF46C\uF46D\uF46E\uF46F" +
+ "\uF470\uF471\uF472\uF473\uF474\uF475\uF476\uF477" +
+ "\uF478\uF479\uF47A\uF47B\uF47C\uF47D\uF47E\uF47F" +
+ "\uF480\uF481\uF482\uF483\uF484\uF485\uF486\uF487" +
+ "\uF488\uF489\uF48A\uF48B\uF48C\uF48D\uF48E\uF48F" +
+ "\uF490\uF491\uF492\uF493\uF494\uF495\uF496\uF497" +
+ "\uF498\uF499\uF49A\uF49B\uF49C\uF49D\uF49E\uF49F" +
+ "\uF4A0\uF4A1\uF4A2\uF4A3\uF4A4\uF4A5\uF4A6\uF4A7" +
+ "\uF4A8\uF4A9\uF4AA\uF4AB\uF4AC\uF4AD\uF4AE\uF4AF" +
+ "\uF4B0\uF4B1\uF4B2\uF4B3\uF4B4\uF4B5\uF4B6\uF4B7" +
+ "\uF4B8\uF4B9\uF4BA\uF4BB\uF4BC\uF4BD\uF4BE\uF4BF" +
+ "\uF4C0\uF4C1\uF4C2\uF4C3\uF4C4\uF4C5\uF4C6\uF4C7" +
+ "\uF4C8\uF4C9\uF4CA\uF4CB\uF4CC\uF4CD\uF4CE\uF4CF" +
+ "\uF4D0\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5\uF4D6\uF4D7" +
+ "\uF4D8\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD\uF4DE\uF4DF" +
+ "\uF4E0\uF4E1\uF4E2\uF4E3\uF4E4\uF4E5\uF4E6\uF4E7" +
+ "\uF4E8\uF4E9\uF4EA\uF4EB\uF4EC\uF4ED\uF4EE\uF4EF" +
+ "\uF4F0\uF4F1\uF4F2\uF4F3\uF4F4\uF4F5\uF4F6\uF4F7" +
+ "\uF4F8\uF4F9\uF4FA\uF4FB\uF4FC\uF4FD\uF4FE\uF4FF" +
+ "\uF500\uF501\uF502\uF503\uF504\uF505\uF506\uF507" +
+ "\uF508\uF509\uF50A\uF50B\uF50C\uF50D\uF50E\uF50F" +
+ "\uF510\uF511\uF512\uF513\uF514\uF515\uF516\uF517" +
+ "\uF518\uF519\uF51A\uF51B\uF51C\uF51D\uF51E\uF51F" +
+ "\uF520\uF521\uF522\uF523\uF524\uF525\uF526\uF527" +
+ "\uF528\uF529\uF52A\uF52B\uF52C\uF52D\uF52E\uF52F" +
+ "\uF530\uF531\uF532\uF533\uF534\uF535\uF536\uF537" +
+ "\uF538\uF539\uF53A\uF53B\uF53C\uF53D\uF53E\uF53F" +
+ "\uF540\uF541\uF542\uF543\uF544\uF545\uF546\uF547" +
+ "\uF548\uF549\uF54A\uF54B\uF54C\uF54D\uF54E\uF54F" +
+ "\uF550\uF551\uF552\uF553\uF554\uF555\uF556\uF557" +
+ "\uF558\uF559\uF55A\uF55B\uF55C\uF55D\uF55E\uF55F" +
+ "\uF560\uF561\uF562\uF563\uF564\uF565\uF566\uF567" +
+ "\uF568\uF569\uF56A\uF56B\uF56C\uF56D\uF56E\uF56F" +
+ "\uF570\uF571\uF572\uF573\uF574\uF575\uF576\uF577" +
+ "\uF578\uF579\uF57A\uF57B\uF57C\uF57D\uF57E\uF57F" +
+ "\uF580\uF581\uF582\uF583\uF584\uF585\uF586\uF587" +
+ "\uF588\uF589\uF58A\uF58B\uF58C\uF58D\uF58E\uF58F" +
+ "\uF590\uF591\uF592\uF593\uF594\uF595\uF596\uF597" +
+ "\uF598\uF599\uF59A\uF59B\uF59C\uF59D\uF59E\uF59F" +
+ "\uF5A0\uF5A1\uF5A2\uF5A3\uF5A4\uF5A5\uF5A6\uF5A7" +
+ "\uF5A8\uF5A9\uF5AA\uF5AB\uF5AC\uF5AD\uF5AE\uF5AF" +
+ "\uF5B0\uF5B1\uF5B2\uF5B3\uF5B4\uF5B5\uF5B6\uF5B7" +
+ "\uF5B8\uF5B9\uF5BA\uF5BB\uF5BC\uF5BD\uF5BE\uF5BF" +
+ "\uF5C0\uF5C1\uF5C2\uF5C3\uF5C4\uF5C5\uF5C6\uF5C7" +
+ "\uF5C8\uF5C9\uF5CA\uF5CB\uF5CC\uF5CD\uF5CE\uF5CF" +
+ "\uF5D0\uF5D1\uF5D2\uF5D3\uF5D4\uF5D5\uF5D6\uF5D7" +
+ "\uF5D8\uF5D9\uF5DA\uF5DB\uF5DC\uF5DD\uF5DE\uF5DF" +
+ "\uF5E0\uF5E1\uF5E2\uF5E3\uF5E4\uF5E5\uF5E6\uF5E7" +
+ "\uF5E8\uF5E9\uF5EA\uF5EB\uF5EC\uF5ED\uF5EE\uF5EF" +
+ "\uF5F0\uF5F1\uF5F2\uF5F3\uF5F4\uF5F5\uF5F6\uF5F7" +
+ "\uF5F8\uF5F9\uF5FA\uF5FB\uF5FC\uF5FD\uF5FE\uF5FF" +
+ "\uF600\uF601\uF602\uF603\uF604\uF605\uF606\uF607" +
+ "\uF608\uF609\uF60A\uF60B\uF60C\uF60D\uF60E\uF60F" +
+ "\uF610\uF611\uF612\uF613\uF614\uF615\uF616\uF617" +
+ "\uF618\uF619\uF61A\uF61B\uF61C\uF61D\uF61E\uF61F" +
+ "\uF620\uF621\uF622\uF623\uF624\uF625\uF626\uF627" +
+ "\uF628\uF629\uF62A\uF62B\uF62C\uF62D\uF62E\uF62F" +
+ "\uF630\uF631\uF632\uF633\uF634\uF635\uF636\uF637" +
+ "\uF638\uF639\uF63A\uF63B\uF63C\uF63D\uF63E\uF63F" +
+ "\uF640\uF641\uF642\uF643\uF644\uF645\uF646\uF647" +
+ "\uF648\uF649\uF64A\uF64B\uF64C\uF64D\uF64E\uF64F" +
+ "\uF650\uF651\uF652\uF653\uF654\uF655\uF656\uF657" +
+ "\uF658\uF659\uF65A\uF65B\uF65C\uF65D\uF65E\uF65F" +
+ "\uF660\uF661\uF662\uF663\uF664\uF665\uF666\uF667" +
+ "\uF668\uF669\uF66A\uF66B\uF66C\uF66D\uF66E\uF66F" +
+ "\uF670\uF671\uF672\uF673\uF674\uF675\uF676\uF677" +
+ "\uF678\uF679\uF67A\uF67B\uF67C\uF67D\uF67E\uF67F" +
+ "\uF680\uF681\uF682\uF683\uF684\uF685\uF686\uF687" +
+ "\uF688\uF689\uF68A\uF68B\uF68C\uF68D\uF68E\uF68F" +
+ "\uF690\uF691\uF692\uF693\uF694\uF695\uF696\uF697" +
+ "\uF698\uF699\uF69A\uF69B\uF69C\uF69D\uF69E\uF69F" +
+ "\uF6A0\uF6A1\uF6A2\uF6A3\uF6A4\uF6A5\uF6A6\uF6A7" +
+ "\uF6A8\uF6A9\uF6AA\uF6AB\uF6AC\uF6AD\uF6AE\uF6AF" +
+ "\uF6B0\uF6B1\uF6B2\uF6B3\uF6B4\uF6B5\uF6B6\uF6B7" +
+ "\uF6B8\uF6B9\uF6BA\uF6BB\uF6BC\uF6BD\uF6BE\uF6BF" +
+ "\uF6C0\uF6C1\uF6C2\uF6C3\uF6C4\uF6C5\uF6C6\uF6C7" +
+ "\uF6C8\uF6C9\uF6CA\uF6CB\uF6CC\uF6CD\uF6CE\uF6CF" +
+ "\uF6D0\uF6D1\uF6D2\uF6D3\uF6D4\uF6D5\uF6D6\uF6D7" +
+ "\uF6D8\uF6D9\uF6DA\uF6DB\uF6DC\uF6DD\uF6DE\uF6DF" +
+ "\uF6E0\uF6E1\uF6E2\uF6E3\uF6E4\uF6E5\uF6E6\uF6E7" +
+ "\uF6E8\uF6E9\uF6EA\uF6EB\uF6EC\uF6ED\uF6EE\uF6EF" +
+ "\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4\uF6F5\uF6F6\uF6F7" +
+ "\uF6F8\uF6F9\uF6FA\uF6FB\uF6FC\uF6FD\uF6FE\uF6FF" +
+ "\uF700\uF701\uF702\uF703\uF704\uF705\uF706\uF707" +
+ "\uF708\uF709\uF70A\uF70B\uF70C\uF70D\uF70E\uF70F" +
+ "\uF710\uF711\uF712\uF713\uF714\uF715\uF716\uF717" +
+ "\uF718\uF719\uF71A\uF71B\uF71C\uF71D\uF71E\uF71F" +
+ "\uF720\uF721\uF722\uF723\uF724\uF725\uF726\uF727" +
+ "\uF728\uF729\uF72A\uF72B\uF72C\uF72D\uF72E\uF72F" +
+ "\uF730\uF731\uF732\uF733\uF734\uF735\uF736\uF737" +
+ "\uF738\uF739\uF73A\uF73B\uF73C\uF73D\uF73E\uF73F" +
+ "\uF740\uF741\uF742\uF743\uF744\uF745\uF746\uF747" +
+ "\uF748\uF749\uF74A\uF74B\uF74C\uF74D\uF74E\uF74F" +
+ "\uF750\uF751\uF752\uF753\uF754\uF755\uF756\uF757" +
+ "\uF758\uF759\uF75A\uF75B\uF75C\uF75D\uF75E\uF75F" +
+ "\uF760\uF761\uF762\uF763\uF764\uF765\uF766\uF767" +
+ "\uF768\uF769\uF76A\uF76B\uF76C\uF76D\uF76E\uF76F" +
+ "\uF770\uF771\uF772\uF773\uF774\uF775\uF776\uF777" +
+ "\uF778\uF779\uF77A\uF77B\uF77C\uF77D\uF77E\uF77F" +
+ "\uF780\uF781\uF782\uF783\uF784\uF785\uF786\uF787" +
+ "\uF788\uF789\uF78A\uF78B\uF78C\uF78D\uF78E\uF78F" +
+ "\uF790\uF791\uF792\uF793\uF794\uF795\uF796\uF797" +
+ "\uF798\uF799\uF79A\uF79B\uF79C\uF79D\uF79E\uF79F" +
+ "\uF7A0\uF7A1\uF7A2\uF7A3\uF7A4\uF7A5\uF7A6\uF7A7" +
+ "\uF7A8\uF7A9\uF7AA\uF7AB\uF7AC\uF7AD\uF7AE\uF7AF" +
+ "\uF7B0\uF7B1\uF7B2\uF7B3\uF7B4\uF7B5\uF7B6\uF7B7" +
+ "\uF7B8\uF7B9\uF7BA\uF7BB\uF7BC\uF7BD\uF7BE\uF7BF" +
+ "\uF7C0\uF7C1\uF7C2\uF7C3\uF7C4\uF7C5\uF7C6\uF7C7" +
+ "\uF7C8\uF7C9\uF7CA\uF7CB\uF7CC\uF7CD\uF7CE\uF7CF" +
+ "\uF7D0\uF7D1\uF7D2\uF7D3\uF7D4\uF7D5\uF7D6\uF7D7" +
+ "\uF7D8\uF7D9\uF7DA\uF7DB\uF7DC\uF7DD\uF7DE\uF7DF" +
+ "\uF7E0\uF7E1\uF7E2\uF7E3\uF7E4\uF7E5\uF7E6\uF7E7" +
+ "\uF7E8\uF7E9\uF7EA\uF7EB\uF7EC\uF7ED\uF7EE\uF7EF" +
+ "\uF7F0\uF7F1\uF7F2\uF7F3\uF7F4\uF7F5\uF7F6\uF7F7" +
+ "\uF7F8\uF7F9\uF7FA\uF7FB\uF7FC\uF7FD\uF7FE\uF7FF" +
+ "\uF800\uF801\uF802\uF803\uF804\uF805\uF806\uF807" +
+ "\uF808\uF809\uF80A\uF80B\uF80C\uF80D\uF80E\uF80F" +
+ "\uF810\uF811\uF812\uF813\uF814\uF815\uF816\uF817" +
+ "\uF818\uF819\uF81A\uF81B\uF81C\uF81D\uF81E\uF81F" +
+ "\uF820\uF821\uF822\uF823\uF824\uF825\uF826\uF827" +
+ "\uF828\uF829\uF82A\uF82B\uF82C\uF82D\uF82E\uF82F" +
+ "\uF830\uF831\uF832\uF833\uF834\uF835\uF836\uF837" +
+ "\uF838\uF839\uF83A\uF83B\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD"
+ ;
+ mappingTableG2ad =
+ "\u309B\u309C\u00A8\uFF3E\u30FD\u30FE\u309D\u309E" +
+ "\u02BA\uF83E\u3005\u3006\u3007\u30FC\u2010\uFF3B" +
+ "\uFF3D\u00B4\u2033\u273D\u3013\u2208\u220B\u2286" +
+ "\u2287\u2282\u2283\u2227\u2228\u21D2\u21D4\u2200" +
+ "\u2203\u2312\u2202\u2207\u226A\u226B\u223D\u221D" +
+ "\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021" +
+ "\u00B6\u25EF\u3041\u3042\u3043\u3044\u3045\u3046" +
+ "\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E" +
+ "\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056" +
+ "\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E" +
+ "\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066" +
+ "\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E" +
+ "\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076" +
+ "\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E" +
+ "\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086" +
+ "\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E" +
+ "\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3" +
+ "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB" +
+ "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3" +
+ "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB" +
+ "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3" +
+ "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB" +
+ "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3" +
+ "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB" +
+ "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3" +
+ "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB" +
+ "\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3" +
+ "\u30F4\u30F5\u30F6\u0410\u0411\u0412\u0413\u0414" +
+ "\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B" +
+ "\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423" +
+ "\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B" +
+ "\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433" +
+ "\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A" +
+ "\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442" +
+ "\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A" +
+ "\u044B\u044C\u044D\u044E\u044F\u2501\u2503\u250F" +
+ "\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B" +
+ "\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525" +
+ "\u2538\u2542\uF83F\uF840\uF841\uF842\u21E7\u21B8" +
+ "\u21B9\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121" +
+ "\u6491\uFA0C\u691E\uFA0D\u6EB8\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+ "\uFFFD\uFFFD\uFFFD\uFFFD"
+ ;
+ }
+ }
+
+ protected static class Encoder extends SimpleEUCEncoder {
+
+ public Encoder(Charset cs) {
+ super(cs);
+ super.mask1 = 0xFFC0;
+ super.mask2 = 0x003F;
+ super.shift = 6;
+ super.index1 = index1;
+ super.index2 = index2;
+ super.index2a = index2a;
+ super.index2b = index2b;
+ super.index2c = index2c;
+ }
+
+ private static final short index1[] =
+ {
+ 19535, 13095, 12408, 11748, 223, 223, 223, 223, // 0000 - 01FF
+ 223, 223, 9457, 14043, 223, 223, 10349, 11067, // 0200 - 03FF
+ 24969, 10729, 223, 223, 223, 223, 223, 223, // 0400 - 05FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 0600 - 07FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 0800 - 09FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 0A00 - 0BFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 0C00 - 0DFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 0E00 - 0FFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1000 - 11FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1200 - 13FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1400 - 15FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1600 - 17FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1800 - 19FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1A00 - 1BFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1C00 - 1DFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 1E00 - 1FFF
+ 24401, 223, 223, 223, 24353, 12626, 9241, 8204, // 2000 - 21FF
+ 10119, 9193, 16486, 223, 8250, 223, 223, 223, // 2200 - 23FF
+ 9582, 9616, 223, 223, 9083, 13986, 24230, 15436, // 2400 - 25FF
+ 21619, 8517, 223, 223, 226, 223, 223, 223, // 2600 - 27FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 2800 - 29FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 2A00 - 2BFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 2C00 - 2DFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 2E00 - 2FFF
+ 7839, 22767, 7071, 6753, 10302, 223, 223, 223, // 3000 - 31FF
+ 8269, 223, 7166, 223, 223, 223, 8124, 9301, // 3200 - 33FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3400 - 35FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3600 - 37FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3800 - 39FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3A00 - 3BFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3C00 - 3DFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 3E00 - 3FFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4000 - 41FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4200 - 43FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4400 - 45FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4600 - 47FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4800 - 49FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4A00 - 4BFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // 4C00 - 4DFF
+ 6625, 8699, 27828, 28393, 28329, 6879, 28265, 28014, // 4E00 - 4FFF
+ 27766, 27640, 27576, 21185, 27512, 27325, 27198, 27888, // 5000 - 51FF
+ 27073, 20233, 26946, 26882, 17057, 26818, 27387, 11327, // 5200 - 53FF
+ 19346, 26754, 26690, 26626, 26179, 26562, 26498, 26434, // 5400 - 55FF
+ 26370, 26306, 26053, 25989, 18008, 25863, 25799, 19472, // 5600 - 57FF
+ 25735, 8573, 25671, 17817, 9518, 25607, 25480, 25416, // 5800 - 59FF
+ 25289, 25225, 7520, 25161, 7647, 25097, 25033, 24846, // 5A00 - 5BFF
+ 289, 24656, 21560, 12466, 24592, 24528, 24167, 24103, // 5C00 - 5DFF
+ 13031, 24039, 23912, 156, 12969, 23848, 23784, 23720, // 5E00 - 5FFF
+ 23597, 23533, 23469, 23405, 23341, 23214, 23150, 11202, // 6000 - 61FF
+ 23086, 23022, 22958, 11451, 22831, 22704, 22577, 22454, // 6200 - 63FF
+ 11806, 22390, 14386, 9741, 22326, 8010, 22262, 6816, // 6400 - 65FF
+ 22138, 28077, 21948, 21884, 21820, 23656, 28140, 21756, // 6600 - 67FF
+ 7885, 21692, 21502, 24906, 22198, 21377, 12060, 27261, // 6800 - 69FF
+ 21313, 21249, 21122, 11389, 21058, 27009, 20994, 20930, // 6A00 - 6BFF
+ 20866, 20739, 20675, 20489, 20425, 20361, 20297, 20170, // 6C00 - 6DFF
+ 20106, 19983, 8325, 19919, 19855, 19791, 19727, 19663, // 6E00 - 6FFF
+ 19599, 19283, 10665, 22513, 19159, 26116, 19095, 19031, // 7000 - 71FF
+ 26242, 25543, 18967, 18903, 18839, 18775, 18711, 18647, // 7200 - 73FF
+ 18583, 18519, 18455, 18391, 18327, 18263, 18199, 18135, // 7400 - 75FF
+ 17945, 10475, 25352, 11139, 24719, 19219, 17881, 10181, // 7600 - 77FF
+ 10243, 27134, 17691, 24782, 24464, 17627, 23975, 17502, // 7800 - 79FF
+ 17438, 17374, 17310, 17246, 17121, 16998, 9678, 16934, // 7A00 - 7BFF
+ 16870, 16806, 16742, 20548, 16678, 16614, 16550, 16424, // 7C00 - 7DFF
+ 27448, 16297, 16204, 223, 15502, 28201, 21438, 16140, // 7E00 - 7FFF
+ 16076, 17563, 24292, 7947, 15949, 17182, 15885, 15821, // 8000 - 81FF
+ 15757, 15693, 15566, 15315, 15251, 15187, 23277, 15123, // 8200 - 83FF
+ 22894, 14960, 27950, 14896, 14769, 14642, 14578, 14514, // 8400 - 85FF
+ 14450, 14324, 20042, 14197, 14133, 13924, 22640, 13860, // 8600 - 87FF
+ 13796, 13732, 13542, 13415, 22011, 22074, 20802, 13351, // 8800 - 89FF
+ 13287, 13223, 20611, 13159, 12813, 12749, 12594, 223, // 8A00 - 8BFF
+ 21628, 19409, 12530, 12344, 12252, 12906, 12188, 18071, // 8C00 - 8DFF
+ 12124, 11998, 17754, 11934, 11870, 11707, 7203, 27702, // 8E00 - 8FFF
+ 11643, 16360, 11579, 16012, 11515, 11266, 11003, 10939, // 9000 - 91FF
+ 10875, 10811, 10603, 10539, 10413, 10055, 9997, 9933, // 9200 - 93FF
+ 9869, 9805, 9451, 223, 223, 11077, 9387, 9147, // 9400 - 95FF
+ 15059, 9019, 8955, 8891, 8827, 25925, 8763, 15629, // 9600 - 97FF
+ 8637, 15378, 14069, 8453, 8389, 15023, 93, 14832, // 9800 - 99FF
+ 14705, 8074, 12280, 7775, 14260, 13605, 7711, 7584, // 9A00 - 9BFF
+ 12685, 7459, 223, 16233, 7395, 7331, 7267, 13668, // 9C00 - 9DFF
+ 7135, 10747, 7007, 6943, 6689, 6561, 51, 223, // 9E00 - 9FFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // A000 - A1FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // A200 - A3FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // A400 - A5FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // A600 - A7FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // A800 - A9FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // AA00 - ABFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // AC00 - ADFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // AE00 - AFFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // B000 - B1FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // B200 - B3FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // B400 - B5FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // B600 - B7FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // B800 - B9FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // BA00 - BBFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // BC00 - BDFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // BE00 - BFFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // C000 - C1FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // C200 - C3FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // C400 - C5FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // C600 - C7FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // C800 - C9FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // CA00 - CBFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // CC00 - CDFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // CE00 - CFFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // D000 - D1FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // D200 - D3FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // D400 - D5FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // D600 - D7FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // D800 - D9FF
+ 223, 223, 223, 223, 223, 223, 223, 223, // DA00 - DBFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // DC00 - DDFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // DE00 - DFFF
+ 6497, 6433, 6369, 6305, 6241, 6177, 6113, 6049, // E000 - E1FF
+ 5985, 5921, 5857, 5793, 5729, 5665, 5601, 5537, // E200 - E3FF
+ 5473, 5409, 5345, 5281, 5217, 5153, 5089, 5025, // E400 - E5FF
+ 4961, 4897, 4833, 4769, 4705, 4641, 4577, 4513, // E600 - E7FF
+ 4449, 4385, 4321, 4257, 4193, 4129, 4065, 4001, // E800 - E9FF
+ 3937, 3873, 3809, 3745, 3681, 3617, 3553, 3489, // EA00 - EBFF
+ 3425, 3361, 3297, 3233, 3169, 3105, 3041, 2977, // EC00 - EDFF
+ 2913, 2849, 2785, 2721, 2657, 2593, 2529, 2465, // EE00 - EFFF
+ 2401, 2337, 2273, 2209, 2145, 2081, 2017, 1953, // F000 - F1FF
+ 1889, 1825, 1761, 1697, 1633, 1569, 1505, 1441, // F200 - F3FF
+ 1377, 1313, 1249, 1185, 1121, 1057, 993, 929, // F400 - F5FF
+ 865, 801, 737, 673, 609, 545, 481, 417, // F600 - F7FF
+ 353, 220, 223, 223, 223, 223, 223, 223, // F800 - F9FF
+ 15488, 223, 223, 223, 223, 223, 223, 223, // FA00 - FBFF
+ 223, 223, 223, 223, 223, 223, 223, 223, // FC00 - FDFF
+ 9323, 0, 223, 223, 13478, 12876, 223, 8158,
+ };
+
+ private final static String index2;
+ private final static String index2a;
+ private final static String index2b;
+ private final static String index2c;
+ static {
+ index2 =
+ "\u0000\uA1D5\u0000\uA1D8\u0000\uA1D9\u0000\uA1DC\u0000\uA1DD" + // 0 - 4
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2A7" + // 5 - 9
+ "\u0000\uA2A8\u0000\uA2AB\u0000\uA2AC\u0000\uA2A9\u0000\uA2AA" + // 10 - 14
+ "\u0000\uA1BD\u0000\uA1AE\u0000\uA1AF\u0000\uA1B0\u0000\u0000" + // 15 - 19
+ "\u0000\uA1B2\u0000\uA1B3\u0000\uA1B4\u0000\uA1B5\u0000\uA1B9" + // 20 - 24
+ "\u0000\uA1DE\u0000\uA1DF\u0000\uA1E0\u0000\uA1E1\u0000\uA1E2" + // 25 - 29
+ "\u0000\uA1E3\u0000\uA2AD\u0000\uA2AE\u0000\uA2AF\u0000\uA2BF" + // 30 - 34
+ "\u0000\uA2C0\u0000\uA2C1\u0000\uA2C2\u0000\uA2C3\u0000\u0000" + // 35 - 39
+ "\u0000\uA2E2\u0000\uA2EC\u0000\uA2ED\u0000\uA2EE\u0000\u0000" + // 40 - 44
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 45 - 49
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 50 - 54
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 55 - 59
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BE" + // 60 - 64
+ "\u0000\u0000\u0000\u0000\u0000\uF8B2\u8EA2\uEBCD\u8EA2\uEDC3" + // 65 - 69
+ "\u0000\u0000\u0000\uFCB3\u8EA2\uEEFB\u0000\u0000\u0000\u0000" + // 70 - 74
+ "\u8EA2\uF2C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BF" + // 75 - 79
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1C2\u0000\u0000" + // 80 - 84
+ "\u8EA2\uEEFC\u0000\u0000\u8EA2\uF1EF\u0000\u0000\u0000\u0000" + // 85 - 89
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 90 - 94
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 95 - 99
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 100 - 104
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 105 - 109
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 110 - 114
+ "\u0000\uD3FB\u8EA2\uBAB4\u8EA2\uE0E1\u0000\uD3FC\u0000\u0000" + // 115 - 119
+ "\u0000\u0000\u8EA2\uCFBA\u8EA2\uCFB9\u8EA2\uDBEC\u0000\u0000" + // 120 - 124
+ "\u0000\u0000\u8EA2\uE0E3\u0000\u0000\u8EA2\uE0E2\u0000\u0000" + // 125 - 129
+ "\u0000\uF7F6\u8EA2\uE7FD\u8EA2\uE7FE\u0000\uFAD4\u0000\u0000" + // 130 - 134
+ "\u0000\u0000\u8EA2\uF2A2\u0000\uD8EB\u0000\uE3A6\u0000\uE3A5" + // 135 - 139
+ "\u8EA2\uC8EA\u8EA2\uC8EC\u0000\uE7EA\u8EA2\uC8EB\u0000\uE7E9" + // 140 - 144
+ "\u0000\uE7EB\u8EA2\uC8ED\u0000\u0000\u0000\u0000\u0000\u0000" + // 145 - 149
+ "\u8EA2\uCFBC\u8EA2\uCFBE\u8EA2\uCFBD\u0000\u0000\u8EA2\uCFC0" + // 150 - 154
+ "\u0000\u0000\u0000\u0000\u0000\uDFA1\u0000\uDFA2\u0000\u0000" + // 155 - 159
+ "\u0000\uDFA3\u8EA2\uC2E3\u8EA2\uC2E5\u8EA2\uC2E7\u0000\uE3EE" + // 160 - 164
+ "\u0000\uE3ED\u0000\uDEFE\u8EA2\uC2E6\u8EA2\uC2E4\u0000\u0000" + // 165 - 169
+ "\u8EA2\uC9FD\u0000\u0000\u0000\u0000\u8EA2\uC9FB\u8EA2\uCAA3" + // 170 - 174
+ "\u0000\uE8E0\u8EA2\uCAA4\u8EA2\uCAA1\u0000\uE8E1\u8EA2\uC9FC" + // 175 - 179
+ "\u8EA2\uC9FA\u8EA2\uCAA2\u0000\uECDA\u8EA2\uD0BC\u8EA2\uC9FE" + // 180 - 184
+ "\u0000\uECDC\u8EA2\uD0BD\u0000\uECDB\u0000\uECDE\u8EA2\uD0BE" + // 185 - 189
+ "\u0000\uECD9\u0000\uECDD\u0000\u0000\u8EA2\uD6FD\u8EA2\uD6FB" + // 190 - 194
+ "\u8EA2\uD6FA\u8EA2\uD6FC\u8EA2\uD6F9\u0000\u0000\u0000\u0000" + // 195 - 199
+ "\u0000\uF8B3\u0000\u0000\u8EA2\uE8F2\u8EA2\uE8F3\u0000\u0000" + // 200 - 204
+ "\u8EA2\uEBD9\u8EA2\uEDCD\u0000\uFDA2\u0000\uA7D5\u0000\u0000" + // 205 - 209
+ "\u0000\uCDB7\u0000\uCAAC\u0000\u0000\u0000\u0000\u0000\uD0FA" + // 210 - 214
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC4DC\u0000\uC5BD" + // 215 - 219
+ "\u8EAD\uA4BA\u8EAD\uA4BB\u8EAD\uA4BC\u0000\u0000\u0000\u0000" + // 220 - 224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 225 - 229
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 230 - 234
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 235 - 239
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 240 - 244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 245 - 249
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 250 - 254
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 255 - 259
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 260 - 264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 265 - 269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 270 - 274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 275 - 279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 280 - 284
+ "\u0000\u0000\u0000\u0000\u8EAD\uA1B4\u0000\u0000\u0000\u0000" + // 285 - 289
+ "\u0000\uD0EC\u0000\u0000\u8EA2\uAEEB\u0000\uD5AB\u0000\u0000" + // 290 - 294
+ "\u0000\u0000\u0000\uD9F2\u0000\uD9F1\u0000\uD9F0\u0000\uDEF1" + // 295 - 299
+ "\u0000\uDEF2\u8EA2\uBBBB\u0000\uE8D7\u0000\uF0D2\u0000\uC4D1" + // 300 - 304
+ "\u8EA2\uA1BC\u0000\uC5B7\u8EA2\uA1D5\u0000\u0000\u0000\u0000" + // 305 - 309
+ "\u8EA2\uA2B4\u0000\uC7FA\u0000\u0000\u0000\u0000\u0000\u0000" + // 310 - 314
+ "\u0000\uCCFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 315 - 319
+ "\u8EA2\uC2D1\u0000\u0000\u0000\u0000\u0000\uC4D2\u0000\u0000" + // 320 - 324
+ "\u0000\uC5B8\u8EA2\uA2B5\u0000\u0000\u0000\u0000\u8EA2\uA3DE" + // 325 - 329
+ "\u0000\u0000\u8EA2\uA3DF\u0000\u0000\u0000\uC9FC\u0000\u0000" + // 330 - 334
+ "\u0000\u0000\u0000\u0000\u8EA2\uBBBC\u0000\uDEF3\u0000\u0000" + // 335 - 339
+ "\u8EA2\uC2D2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3D3" + // 340 - 344
+ "\u0000\uC4D3\u0000\uC4E7\u0000\uC5B9\u8EA2\uA1D6\u0000\uC6C7" + // 345 - 349
+ "\u0000\u0000\u0000\uCAA2\u0000\uCAA1\u8EAC\uE2C3\u8EAC\uE2C4" + // 350 - 354
+ "\u8EAC\uE2C5\u8EAC\uE2C6\u8EAC\uE2C7\u8EAC\uE2C8\u8EAC\uE2C9" + // 355 - 359
+ "\u8EAC\uE2CA\u8EAC\uE2CB\u8EAC\uE2CC\u8EAC\uE2CD\u8EAC\uE2CE" + // 360 - 364
+ "\u8EAC\uE2CF\u8EAC\uE2D0\u8EAC\uE2D1\u8EAC\uE2D2\u8EAC\uE2D3" + // 365 - 369
+ "\u8EAC\uE2D4\u8EAC\uE2D5\u8EAC\uE2D6\u8EAC\uE2D7\u8EAC\uE2D8" + // 370 - 374
+ "\u8EAC\uE2D9\u8EAC\uE2DA\u8EAC\uE2DB\u8EAC\uE2DC\u8EAC\uE2DD" + // 375 - 379
+ "\u8EAC\uE2DE\u8EAC\uE2DF\u8EAC\uE2E0\u8EAC\uE2E1\u8EAC\uE2E2" + // 380 - 384
+ "\u8EAC\uE2E3\u8EAC\uE2E4\u8EAC\uE2E5\u8EAC\uE2E6\u8EAC\uE2E7" + // 385 - 389
+ "\u8EAC\uE2E8\u8EAC\uE2E9\u8EAC\uE2EA\u8EAC\uE2EB\u8EAC\uE2EC" + // 390 - 394
+ "\u8EAC\uE2ED\u8EAC\uE2EE\u8EAC\uE2EF\u8EAC\uE2F0\u8EAC\uE2F1" + // 395 - 399
+ "\u8EAC\uE2F2\u8EAC\uE2F3\u8EAC\uE2F4\u8EAC\uE2F5\u8EAC\uE2F6" + // 400 - 404
+ "\u8EAC\uE2F7\u8EAC\uE2F8\u8EAC\uE2F9\u8EAC\uE2FA\u8EAC\uE2FB" + // 405 - 409
+ "\u8EAC\uE2FC\u8EAC\uE2FD\u8EAC\uE2FE\u0000\u0000\u0000\u0000" + // 410 - 414
+ "\u8EAD\uA1AA\u8EAD\uA4B9\u8EAC\uE1E1\u8EAC\uE1E2\u8EAC\uE1E3" + // 415 - 419
+ "\u8EAC\uE1E4\u8EAC\uE1E5\u8EAC\uE1E6\u8EAC\uE1E7\u8EAC\uE1E8" + // 420 - 424
+ "\u8EAC\uE1E9\u8EAC\uE1EA\u8EAC\uE1EB\u8EAC\uE1EC\u8EAC\uE1ED" + // 425 - 429
+ "\u8EAC\uE1EE\u8EAC\uE1EF\u8EAC\uE1F0\u8EAC\uE1F1\u8EAC\uE1F2" + // 430 - 434
+ "\u8EAC\uE1F3\u8EAC\uE1F4\u8EAC\uE1F5\u8EAC\uE1F6\u8EAC\uE1F7" + // 435 - 439
+ "\u8EAC\uE1F8\u8EAC\uE1F9\u8EAC\uE1FA\u8EAC\uE1FB\u8EAC\uE1FC" + // 440 - 444
+ "\u8EAC\uE1FD\u8EAC\uE1FE\u8EAC\uE2A1\u8EAC\uE2A2\u8EAC\uE2A3" + // 445 - 449
+ "\u8EAC\uE2A4\u8EAC\uE2A5\u8EAC\uE2A6\u8EAC\uE2A7\u8EAC\uE2A8" + // 450 - 454
+ "\u8EAC\uE2A9\u8EAC\uE2AA\u8EAC\uE2AB\u8EAC\uE2AC\u8EAC\uE2AD" + // 455 - 459
+ "\u8EAC\uE2AE\u8EAC\uE2AF\u8EAC\uE2B0\u8EAC\uE2B1\u8EAC\uE2B2" + // 460 - 464
+ "\u8EAC\uE2B3\u8EAC\uE2B4\u8EAC\uE2B5\u8EAC\uE2B6\u8EAC\uE2B7" + // 465 - 469
+ "\u8EAC\uE2B8\u8EAC\uE2B9\u8EAC\uE2BA\u8EAC\uE2BB\u8EAC\uE2BC" + // 470 - 474
+ "\u8EAC\uE2BD\u8EAC\uE2BE\u8EAC\uE2BF\u8EAC\uE2C0\u8EAC\uE2C1" + // 475 - 479
+ "\u8EAC\uE2C2\u8EAC\uE1A1\u8EAC\uE1A2\u8EAC\uE1A3\u8EAC\uE1A4" + // 480 - 484
+ "\u8EAC\uE1A5\u8EAC\uE1A6\u8EAC\uE1A7\u8EAC\uE1A8\u8EAC\uE1A9" + // 485 - 489
+ "\u8EAC\uE1AA\u8EAC\uE1AB\u8EAC\uE1AC\u8EAC\uE1AD\u8EAC\uE1AE" + // 490 - 494
+ "\u8EAC\uE1AF\u8EAC\uE1B0\u8EAC\uE1B1\u8EAC\uE1B2\u8EAC\uE1B3" + // 495 - 499
+ "\u8EAC\uE1B4\u8EAC\uE1B5\u8EAC\uE1B6\u8EAC\uE1B7\u8EAC\uE1B8" + // 500 - 504
+ "\u8EAC\uE1B9\u8EAC\uE1BA\u8EAC\uE1BB\u8EAC\uE1BC\u8EAC\uE1BD" + // 505 - 509
+ "\u8EAC\uE1BE\u8EAC\uE1BF\u8EAC\uE1C0\u8EAC\uE1C1\u8EAC\uE1C2" + // 510 - 514
+ "\u8EAC\uE1C3\u8EAC\uE1C4\u8EAC\uE1C5\u8EAC\uE1C6\u8EAC\uE1C7" + // 515 - 519
+ "\u8EAC\uE1C8\u8EAC\uE1C9\u8EAC\uE1CA\u8EAC\uE1CB\u8EAC\uE1CC" + // 520 - 524
+ "\u8EAC\uE1CD\u8EAC\uE1CE\u8EAC\uE1CF\u8EAC\uE1D0\u8EAC\uE1D1" + // 525 - 529
+ "\u8EAC\uE1D2\u8EAC\uE1D3\u8EAC\uE1D4\u8EAC\uE1D5\u8EAC\uE1D6" + // 530 - 534
+ "\u8EAC\uE1D7\u8EAC\uE1D8\u8EAC\uE1D9\u8EAC\uE1DA\u8EAC\uE1DB" + // 535 - 539
+ "\u8EAC\uE1DC\u8EAC\uE1DD\u8EAC\uE1DE\u8EAC\uE1DF\u8EAC\uE1E0" + // 540 - 544
+ "\u8EAC\uE0BF\u8EAC\uE0C0\u8EAC\uE0C1\u8EAC\uE0C2\u8EAC\uE0C3" + // 545 - 549
+ "\u8EAC\uE0C4\u8EAC\uE0C5\u8EAC\uE0C6\u8EAC\uE0C7\u8EAC\uE0C8" + // 550 - 554
+ "\u8EAC\uE0C9\u8EAC\uE0CA\u8EAC\uE0CB\u8EAC\uE0CC\u8EAC\uE0CD" + // 555 - 559
+ "\u8EAC\uE0CE\u8EAC\uE0CF\u8EAC\uE0D0\u8EAC\uE0D1\u8EAC\uE0D2" + // 560 - 564
+ "\u8EAC\uE0D3\u8EAC\uE0D4\u8EAC\uE0D5\u8EAC\uE0D6\u8EAC\uE0D7" + // 565 - 569
+ "\u8EAC\uE0D8\u8EAC\uE0D9\u8EAC\uE0DA\u8EAC\uE0DB\u8EAC\uE0DC" + // 570 - 574
+ "\u8EAC\uE0DD\u8EAC\uE0DE\u8EAC\uE0DF\u8EAC\uE0E0\u8EAC\uE0E1" + // 575 - 579
+ "\u8EAC\uE0E2\u8EAC\uE0E3\u8EAC\uE0E4\u8EAC\uE0E5\u8EAC\uE0E6" + // 580 - 584
+ "\u8EAC\uE0E7\u8EAC\uE0E8\u8EAC\uE0E9\u8EAC\uE0EA\u8EAC\uE0EB" + // 585 - 589
+ "\u8EAC\uE0EC\u8EAC\uE0ED\u8EAC\uE0EE\u8EAC\uE0EF\u8EAC\uE0F0" + // 590 - 594
+ "\u8EAC\uE0F1\u8EAC\uE0F2\u8EAC\uE0F3\u8EAC\uE0F4\u8EAC\uE0F5" + // 595 - 599
+ "\u8EAC\uE0F6\u8EAC\uE0F7\u8EAC\uE0F8\u8EAC\uE0F9\u8EAC\uE0FA" + // 600 - 604
+ "\u8EAC\uE0FB\u8EAC\uE0FC\u8EAC\uE0FD\u8EAC\uE0FE\u8EAC\uDFDD" + // 605 - 609
+ "\u8EAC\uDFDE\u8EAC\uDFDF\u8EAC\uDFE0\u8EAC\uDFE1\u8EAC\uDFE2" + // 610 - 614
+ "\u8EAC\uDFE3\u8EAC\uDFE4\u8EAC\uDFE5\u8EAC\uDFE6\u8EAC\uDFE7" + // 615 - 619
+ "\u8EAC\uDFE8\u8EAC\uDFE9\u8EAC\uDFEA\u8EAC\uDFEB\u8EAC\uDFEC" + // 620 - 624
+ "\u8EAC\uDFED\u8EAC\uDFEE\u8EAC\uDFEF\u8EAC\uDFF0\u8EAC\uDFF1" + // 625 - 629
+ "\u8EAC\uDFF2\u8EAC\uDFF3\u8EAC\uDFF4\u8EAC\uDFF5\u8EAC\uDFF6" + // 630 - 634
+ "\u8EAC\uDFF7\u8EAC\uDFF8\u8EAC\uDFF9\u8EAC\uDFFA\u8EAC\uDFFB" + // 635 - 639
+ "\u8EAC\uDFFC\u8EAC\uDFFD\u8EAC\uDFFE\u8EAC\uE0A1\u8EAC\uE0A2" + // 640 - 644
+ "\u8EAC\uE0A3\u8EAC\uE0A4\u8EAC\uE0A5\u8EAC\uE0A6\u8EAC\uE0A7" + // 645 - 649
+ "\u8EAC\uE0A8\u8EAC\uE0A9\u8EAC\uE0AA\u8EAC\uE0AB\u8EAC\uE0AC" + // 650 - 654
+ "\u8EAC\uE0AD\u8EAC\uE0AE\u8EAC\uE0AF\u8EAC\uE0B0\u8EAC\uE0B1" + // 655 - 659
+ "\u8EAC\uE0B2\u8EAC\uE0B3\u8EAC\uE0B4\u8EAC\uE0B5\u8EAC\uE0B6" + // 660 - 664
+ "\u8EAC\uE0B7\u8EAC\uE0B8\u8EAC\uE0B9\u8EAC\uE0BA\u8EAC\uE0BB" + // 665 - 669
+ "\u8EAC\uE0BC\u8EAC\uE0BD\u8EAC\uE0BE\u8EAC\uDEFB\u8EAC\uDEFC" + // 670 - 674
+ "\u8EAC\uDEFD\u8EAC\uDEFE\u8EAC\uDFA1\u8EAC\uDFA2\u8EAC\uDFA3" + // 675 - 679
+ "\u8EAC\uDFA4\u8EAC\uDFA5\u8EAC\uDFA6\u8EAC\uDFA7\u8EAC\uDFA8" + // 680 - 684
+ "\u8EAC\uDFA9\u8EAC\uDFAA\u8EAC\uDFAB\u8EAC\uDFAC\u8EAC\uDFAD" + // 685 - 689
+ "\u8EAC\uDFAE\u8EAC\uDFAF\u8EAC\uDFB0\u8EAC\uDFB1\u8EAC\uDFB2" + // 690 - 694
+ "\u8EAC\uDFB3\u8EAC\uDFB4\u8EAC\uDFB5\u8EAC\uDFB6\u8EAC\uDFB7" + // 695 - 699
+ "\u8EAC\uDFB8\u8EAC\uDFB9\u8EAC\uDFBA\u8EAC\uDFBB\u8EAC\uDFBC" + // 700 - 704
+ "\u8EAC\uDFBD\u8EAC\uDFBE\u8EAC\uDFBF\u8EAC\uDFC0\u8EAC\uDFC1" + // 705 - 709
+ "\u8EAC\uDFC2\u8EAC\uDFC3\u8EAC\uDFC4\u8EAC\uDFC5\u8EAC\uDFC6" + // 710 - 714
+ "\u8EAC\uDFC7\u8EAC\uDFC8\u8EAC\uDFC9\u8EAC\uDFCA\u8EAC\uDFCB" + // 715 - 719
+ "\u8EAC\uDFCC\u8EAC\uDFCD\u8EAC\uDFCE\u8EAC\uDFCF\u8EAC\uDFD0" + // 720 - 724
+ "\u8EAC\uDFD1\u8EAC\uDFD2\u8EAC\uDFD3\u8EAC\uDFD4\u8EAC\uDFD5" + // 725 - 729
+ "\u8EAC\uDFD6\u8EAC\uDFD7\u8EAC\uDFD8\u8EAC\uDFD9\u8EAC\uDFDA" + // 730 - 734
+ "\u8EAC\uDFDB\u8EAC\uDFDC\u8EAC\uDEBB\u8EAC\uDEBC\u8EAC\uDEBD" + // 735 - 739
+ "\u8EAC\uDEBE\u8EAC\uDEBF\u8EAC\uDEC0\u8EAC\uDEC1\u8EAC\uDEC2" + // 740 - 744
+ "\u8EAC\uDEC3\u8EAC\uDEC4\u8EAC\uDEC5\u8EAC\uDEC6\u8EAC\uDEC7" + // 745 - 749
+ "\u8EAC\uDEC8\u8EAC\uDEC9\u8EAC\uDECA\u8EAC\uDECB\u8EAC\uDECC" + // 750 - 754
+ "\u8EAC\uDECD\u8EAC\uDECE\u8EAC\uDECF\u8EAC\uDED0\u8EAC\uDED1" + // 755 - 759
+ "\u8EAC\uDED2\u8EAC\uDED3\u8EAC\uDED4\u8EAC\uDED5\u8EAC\uDED6" + // 760 - 764
+ "\u8EAC\uDED7\u8EAC\uDED8\u8EAC\uDED9\u8EAC\uDEDA\u8EAC\uDEDB" + // 765 - 769
+ "\u8EAC\uDEDC\u8EAC\uDEDD\u8EAC\uDEDE\u8EAC\uDEDF\u8EAC\uDEE0" + // 770 - 774
+ "\u8EAC\uDEE1\u8EAC\uDEE2\u8EAC\uDEE3\u8EAC\uDEE4\u8EAC\uDEE5" + // 775 - 779
+ "\u8EAC\uDEE6\u8EAC\uDEE7\u8EAC\uDEE8\u8EAC\uDEE9\u8EAC\uDEEA" + // 780 - 784
+ "\u8EAC\uDEEB\u8EAC\uDEEC\u8EAC\uDEED\u8EAC\uDEEE\u8EAC\uDEEF" + // 785 - 789
+ "\u8EAC\uDEF0\u8EAC\uDEF1\u8EAC\uDEF2\u8EAC\uDEF3\u8EAC\uDEF4" + // 790 - 794
+ "\u8EAC\uDEF5\u8EAC\uDEF6\u8EAC\uDEF7\u8EAC\uDEF8\u8EAC\uDEF9" + // 795 - 799
+ "\u8EAC\uDEFA\u8EAC\uDDD9\u8EAC\uDDDA\u8EAC\uDDDB\u8EAC\uDDDC" + // 800 - 804
+ "\u8EAC\uDDDD\u8EAC\uDDDE\u8EAC\uDDDF\u8EAC\uDDE0\u8EAC\uDDE1" + // 805 - 809
+ "\u8EAC\uDDE2\u8EAC\uDDE3\u8EAC\uDDE4\u8EAC\uDDE5\u8EAC\uDDE6" + // 810 - 814
+ "\u8EAC\uDDE7\u8EAC\uDDE8\u8EAC\uDDE9\u8EAC\uDDEA\u8EAC\uDDEB" + // 815 - 819
+ "\u8EAC\uDDEC\u8EAC\uDDED\u8EAC\uDDEE\u8EAC\uDDEF\u8EAC\uDDF0" + // 820 - 824
+ "\u8EAC\uDDF1\u8EAC\uDDF2\u8EAC\uDDF3\u8EAC\uDDF4\u8EAC\uDDF5" + // 825 - 829
+ "\u8EAC\uDDF6\u8EAC\uDDF7\u8EAC\uDDF8\u8EAC\uDDF9\u8EAC\uDDFA" + // 830 - 834
+ "\u8EAC\uDDFB\u8EAC\uDDFC\u8EAC\uDDFD\u8EAC\uDDFE\u8EAC\uDEA1" + // 835 - 839
+ "\u8EAC\uDEA2\u8EAC\uDEA3\u8EAC\uDEA4\u8EAC\uDEA5\u8EAC\uDEA6" + // 840 - 844
+ "\u8EAC\uDEA7\u8EAC\uDEA8\u8EAC\uDEA9\u8EAC\uDEAA\u8EAC\uDEAB" + // 845 - 849
+ "\u8EAC\uDEAC\u8EAC\uDEAD\u8EAC\uDEAE\u8EAC\uDEAF\u8EAC\uDEB0" + // 850 - 854
+ "\u8EAC\uDEB1\u8EAC\uDEB2\u8EAC\uDEB3\u8EAC\uDEB4\u8EAC\uDEB5" + // 855 - 859
+ "\u8EAC\uDEB6\u8EAC\uDEB7\u8EAC\uDEB8\u8EAC\uDEB9\u8EAC\uDEBA" + // 860 - 864
+ "\u8EAC\uDCF7\u8EAC\uDCF8\u8EAC\uDCF9\u8EAC\uDCFA\u8EAC\uDCFB" + // 865 - 869
+ "\u8EAC\uDCFC\u8EAC\uDCFD\u8EAC\uDCFE\u8EAC\uDDA1\u8EAC\uDDA2" + // 870 - 874
+ "\u8EAC\uDDA3\u8EAC\uDDA4\u8EAC\uDDA5\u8EAC\uDDA6\u8EAC\uDDA7" + // 875 - 879
+ "\u8EAC\uDDA8\u8EAC\uDDA9\u8EAC\uDDAA\u8EAC\uDDAB\u8EAC\uDDAC" + // 880 - 884
+ "\u8EAC\uDDAD\u8EAC\uDDAE\u8EAC\uDDAF\u8EAC\uDDB0\u8EAC\uDDB1" + // 885 - 889
+ "\u8EAC\uDDB2\u8EAC\uDDB3\u8EAC\uDDB4\u8EAC\uDDB5\u8EAC\uDDB6" + // 890 - 894
+ "\u8EAC\uDDB7\u8EAC\uDDB8\u8EAC\uDDB9\u8EAC\uDDBA\u8EAC\uDDBB" + // 895 - 899
+ "\u8EAC\uDDBC\u8EAC\uDDBD\u8EAC\uDDBE\u8EAC\uDDBF\u8EAC\uDDC0" + // 900 - 904
+ "\u8EAC\uDDC1\u8EAC\uDDC2\u8EAC\uDDC3\u8EAC\uDDC4\u8EAC\uDDC5" + // 905 - 909
+ "\u8EAC\uDDC6\u8EAC\uDDC7\u8EAC\uDDC8\u8EAC\uDDC9\u8EAC\uDDCA" + // 910 - 914
+ "\u8EAC\uDDCB\u8EAC\uDDCC\u8EAC\uDDCD\u8EAC\uDDCE\u8EAC\uDDCF" + // 915 - 919
+ "\u8EAC\uDDD0\u8EAC\uDDD1\u8EAC\uDDD2\u8EAC\uDDD3\u8EAC\uDDD4" + // 920 - 924
+ "\u8EAC\uDDD5\u8EAC\uDDD6\u8EAC\uDDD7\u8EAC\uDDD8\u8EAC\uDCB7" + // 925 - 929
+ "\u8EAC\uDCB8\u8EAC\uDCB9\u8EAC\uDCBA\u8EAC\uDCBB\u8EAC\uDCBC" + // 930 - 934
+ "\u8EAC\uDCBD\u8EAC\uDCBE\u8EAC\uDCBF\u8EAC\uDCC0\u8EAC\uDCC1" + // 935 - 939
+ "\u8EAC\uDCC2\u8EAC\uDCC3\u8EAC\uDCC4\u8EAC\uDCC5\u8EAC\uDCC6" + // 940 - 944
+ "\u8EAC\uDCC7\u8EAC\uDCC8\u8EAC\uDCC9\u8EAC\uDCCA\u8EAC\uDCCB" + // 945 - 949
+ "\u8EAC\uDCCC\u8EAC\uDCCD\u8EAC\uDCCE\u8EAC\uDCCF\u8EAC\uDCD0" + // 950 - 954
+ "\u8EAC\uDCD1\u8EAC\uDCD2\u8EAC\uDCD3\u8EAC\uDCD4\u8EAC\uDCD5" + // 955 - 959
+ "\u8EAC\uDCD6\u8EAC\uDCD7\u8EAC\uDCD8\u8EAC\uDCD9\u8EAC\uDCDA" + // 960 - 964
+ "\u8EAC\uDCDB\u8EAC\uDCDC\u8EAC\uDCDD\u8EAC\uDCDE\u8EAC\uDCDF" + // 965 - 969
+ "\u8EAC\uDCE0\u8EAC\uDCE1\u8EAC\uDCE2\u8EAC\uDCE3\u8EAC\uDCE4" + // 970 - 974
+ "\u8EAC\uDCE5\u8EAC\uDCE6\u8EAC\uDCE7\u8EAC\uDCE8\u8EAC\uDCE9" + // 975 - 979
+ "\u8EAC\uDCEA\u8EAC\uDCEB\u8EAC\uDCEC\u8EAC\uDCED\u8EAC\uDCEE" + // 980 - 984
+ "\u8EAC\uDCEF\u8EAC\uDCF0\u8EAC\uDCF1\u8EAC\uDCF2\u8EAC\uDCF3" + // 985 - 989
+ "\u8EAC\uDCF4\u8EAC\uDCF5\u8EAC\uDCF6\u8EAC\uDBD5\u8EAC\uDBD6" + // 990 - 994
+ "\u8EAC\uDBD7\u8EAC\uDBD8\u8EAC\uDBD9\u8EAC\uDBDA\u8EAC\uDBDB" + // 995 - 999
+ "\u8EAC\uDBDC\u8EAC\uDBDD\u8EAC\uDBDE\u8EAC\uDBDF\u8EAC\uDBE0" + // 1000 - 1004
+ "\u8EAC\uDBE1\u8EAC\uDBE2\u8EAC\uDBE3\u8EAC\uDBE4\u8EAC\uDBE5" + // 1005 - 1009
+ "\u8EAC\uDBE6\u8EAC\uDBE7\u8EAC\uDBE8\u8EAC\uDBE9\u8EAC\uDBEA" + // 1010 - 1014
+ "\u8EAC\uDBEB\u8EAC\uDBEC\u8EAC\uDBED\u8EAC\uDBEE\u8EAC\uDBEF" + // 1015 - 1019
+ "\u8EAC\uDBF0\u8EAC\uDBF1\u8EAC\uDBF2\u8EAC\uDBF3\u8EAC\uDBF4" + // 1020 - 1024
+ "\u8EAC\uDBF5\u8EAC\uDBF6\u8EAC\uDBF7\u8EAC\uDBF8\u8EAC\uDBF9" + // 1025 - 1029
+ "\u8EAC\uDBFA\u8EAC\uDBFB\u8EAC\uDBFC\u8EAC\uDBFD\u8EAC\uDBFE" + // 1030 - 1034
+ "\u8EAC\uDCA1\u8EAC\uDCA2\u8EAC\uDCA3\u8EAC\uDCA4\u8EAC\uDCA5" + // 1035 - 1039
+ "\u8EAC\uDCA6\u8EAC\uDCA7\u8EAC\uDCA8\u8EAC\uDCA9\u8EAC\uDCAA" + // 1040 - 1044
+ "\u8EAC\uDCAB\u8EAC\uDCAC\u8EAC\uDCAD\u8EAC\uDCAE\u8EAC\uDCAF" + // 1045 - 1049
+ "\u8EAC\uDCB0\u8EAC\uDCB1\u8EAC\uDCB2\u8EAC\uDCB3\u8EAC\uDCB4" + // 1050 - 1054
+ "\u8EAC\uDCB5\u8EAC\uDCB6\u8EAC\uDAF3\u8EAC\uDAF4\u8EAC\uDAF5" + // 1055 - 1059
+ "\u8EAC\uDAF6\u8EAC\uDAF7\u8EAC\uDAF8\u8EAC\uDAF9\u8EAC\uDAFA" + // 1060 - 1064
+ "\u8EAC\uDAFB\u8EAC\uDAFC\u8EAC\uDAFD\u8EAC\uDAFE\u8EAC\uDBA1" + // 1065 - 1069
+ "\u8EAC\uDBA2\u8EAC\uDBA3\u8EAC\uDBA4\u8EAC\uDBA5\u8EAC\uDBA6" + // 1070 - 1074
+ "\u8EAC\uDBA7\u8EAC\uDBA8\u8EAC\uDBA9\u8EAC\uDBAA\u8EAC\uDBAB" + // 1075 - 1079
+ "\u8EAC\uDBAC\u8EAC\uDBAD\u8EAC\uDBAE\u8EAC\uDBAF\u8EAC\uDBB0" + // 1080 - 1084
+ "\u8EAC\uDBB1\u8EAC\uDBB2\u8EAC\uDBB3\u8EAC\uDBB4\u8EAC\uDBB5" + // 1085 - 1089
+ "\u8EAC\uDBB6\u8EAC\uDBB7\u8EAC\uDBB8\u8EAC\uDBB9\u8EAC\uDBBA" + // 1090 - 1094
+ "\u8EAC\uDBBB\u8EAC\uDBBC\u8EAC\uDBBD\u8EAC\uDBBE\u8EAC\uDBBF" + // 1095 - 1099
+ "\u8EAC\uDBC0\u8EAC\uDBC1\u8EAC\uDBC2\u8EAC\uDBC3\u8EAC\uDBC4" + // 1100 - 1104
+ "\u8EAC\uDBC5\u8EAC\uDBC6\u8EAC\uDBC7\u8EAC\uDBC8\u8EAC\uDBC9" + // 1105 - 1109
+ "\u8EAC\uDBCA\u8EAC\uDBCB\u8EAC\uDBCC\u8EAC\uDBCD\u8EAC\uDBCE" + // 1110 - 1114
+ "\u8EAC\uDBCF\u8EAC\uDBD0\u8EAC\uDBD1\u8EAC\uDBD2\u8EAC\uDBD3" + // 1115 - 1119
+ "\u8EAC\uDBD4\u8EAC\uDAB3\u8EAC\uDAB4\u8EAC\uDAB5\u8EAC\uDAB6" + // 1120 - 1124
+ "\u8EAC\uDAB7\u8EAC\uDAB8\u8EAC\uDAB9\u8EAC\uDABA\u8EAC\uDABB" + // 1125 - 1129
+ "\u8EAC\uDABC\u8EAC\uDABD\u8EAC\uDABE\u8EAC\uDABF\u8EAC\uDAC0" + // 1130 - 1134
+ "\u8EAC\uDAC1\u8EAC\uDAC2\u8EAC\uDAC3\u8EAC\uDAC4\u8EAC\uDAC5" + // 1135 - 1139
+ "\u8EAC\uDAC6\u8EAC\uDAC7\u8EAC\uDAC8\u8EAC\uDAC9\u8EAC\uDACA" + // 1140 - 1144
+ "\u8EAC\uDACB\u8EAC\uDACC\u8EAC\uDACD\u8EAC\uDACE\u8EAC\uDACF" + // 1145 - 1149
+ "\u8EAC\uDAD0\u8EAC\uDAD1\u8EAC\uDAD2\u8EAC\uDAD3\u8EAC\uDAD4" + // 1150 - 1154
+ "\u8EAC\uDAD5\u8EAC\uDAD6\u8EAC\uDAD7\u8EAC\uDAD8\u8EAC\uDAD9" + // 1155 - 1159
+ "\u8EAC\uDADA\u8EAC\uDADB\u8EAC\uDADC\u8EAC\uDADD\u8EAC\uDADE" + // 1160 - 1164
+ "\u8EAC\uDADF\u8EAC\uDAE0\u8EAC\uDAE1\u8EAC\uDAE2\u8EAC\uDAE3" + // 1165 - 1169
+ "\u8EAC\uDAE4\u8EAC\uDAE5\u8EAC\uDAE6\u8EAC\uDAE7\u8EAC\uDAE8" + // 1170 - 1174
+ "\u8EAC\uDAE9\u8EAC\uDAEA\u8EAC\uDAEB\u8EAC\uDAEC\u8EAC\uDAED" + // 1175 - 1179
+ "\u8EAC\uDAEE\u8EAC\uDAEF\u8EAC\uDAF0\u8EAC\uDAF1\u8EAC\uDAF2" + // 1180 - 1184
+ "\u8EAC\uD9D1\u8EAC\uD9D2\u8EAC\uD9D3\u8EAC\uD9D4\u8EAC\uD9D5" + // 1185 - 1189
+ "\u8EAC\uD9D6\u8EAC\uD9D7\u8EAC\uD9D8\u8EAC\uD9D9\u8EAC\uD9DA" + // 1190 - 1194
+ "\u8EAC\uD9DB\u8EAC\uD9DC\u8EAC\uD9DD\u8EAC\uD9DE\u8EAC\uD9DF" + // 1195 - 1199
+ "\u8EAC\uD9E0\u8EAC\uD9E1\u8EAC\uD9E2\u8EAC\uD9E3\u8EAC\uD9E4" + // 1200 - 1204
+ "\u8EAC\uD9E5\u8EAC\uD9E6\u8EAC\uD9E7\u8EAC\uD9E8\u8EAC\uD9E9" + // 1205 - 1209
+ "\u8EAC\uD9EA\u8EAC\uD9EB\u8EAC\uD9EC\u8EAC\uD9ED\u8EAC\uD9EE" + // 1210 - 1214
+ "\u8EAC\uD9EF\u8EAC\uD9F0\u8EAC\uD9F1\u8EAC\uD9F2\u8EAC\uD9F3" + // 1215 - 1219
+ "\u8EAC\uD9F4\u8EAC\uD9F5\u8EAC\uD9F6\u8EAC\uD9F7\u8EAC\uD9F8" + // 1220 - 1224
+ "\u8EAC\uD9F9\u8EAC\uD9FA\u8EAC\uD9FB\u8EAC\uD9FC\u8EAC\uD9FD" + // 1225 - 1229
+ "\u8EAC\uD9FE\u8EAC\uDAA1\u8EAC\uDAA2\u8EAC\uDAA3\u8EAC\uDAA4" + // 1230 - 1234
+ "\u8EAC\uDAA5\u8EAC\uDAA6\u8EAC\uDAA7\u8EAC\uDAA8\u8EAC\uDAA9" + // 1235 - 1239
+ "\u8EAC\uDAAA\u8EAC\uDAAB\u8EAC\uDAAC\u8EAC\uDAAD\u8EAC\uDAAE" + // 1240 - 1244
+ "\u8EAC\uDAAF\u8EAC\uDAB0\u8EAC\uDAB1\u8EAC\uDAB2\u8EAC\uD8EF" + // 1245 - 1249
+ "\u8EAC\uD8F0\u8EAC\uD8F1\u8EAC\uD8F2\u8EAC\uD8F3\u8EAC\uD8F4" + // 1250 - 1254
+ "\u8EAC\uD8F5\u8EAC\uD8F6\u8EAC\uD8F7\u8EAC\uD8F8\u8EAC\uD8F9" + // 1255 - 1259
+ "\u8EAC\uD8FA\u8EAC\uD8FB\u8EAC\uD8FC\u8EAC\uD8FD\u8EAC\uD8FE" + // 1260 - 1264
+ "\u8EAC\uD9A1\u8EAC\uD9A2\u8EAC\uD9A3\u8EAC\uD9A4\u8EAC\uD9A5" + // 1265 - 1269
+ "\u8EAC\uD9A6\u8EAC\uD9A7\u8EAC\uD9A8\u8EAC\uD9A9\u8EAC\uD9AA" + // 1270 - 1274
+ "\u8EAC\uD9AB\u8EAC\uD9AC\u8EAC\uD9AD\u8EAC\uD9AE\u8EAC\uD9AF" + // 1275 - 1279
+ "\u8EAC\uD9B0\u8EAC\uD9B1\u8EAC\uD9B2\u8EAC\uD9B3\u8EAC\uD9B4" + // 1280 - 1284
+ "\u8EAC\uD9B5\u8EAC\uD9B6\u8EAC\uD9B7\u8EAC\uD9B8\u8EAC\uD9B9" + // 1285 - 1289
+ "\u8EAC\uD9BA\u8EAC\uD9BB\u8EAC\uD9BC\u8EAC\uD9BD\u8EAC\uD9BE" + // 1290 - 1294
+ "\u8EAC\uD9BF\u8EAC\uD9C0\u8EAC\uD9C1\u8EAC\uD9C2\u8EAC\uD9C3" + // 1295 - 1299
+ "\u8EAC\uD9C4\u8EAC\uD9C5\u8EAC\uD9C6\u8EAC\uD9C7\u8EAC\uD9C8" + // 1300 - 1304
+ "\u8EAC\uD9C9\u8EAC\uD9CA\u8EAC\uD9CB\u8EAC\uD9CC\u8EAC\uD9CD" + // 1305 - 1309
+ "\u8EAC\uD9CE\u8EAC\uD9CF\u8EAC\uD9D0\u8EAC\uD8AF\u8EAC\uD8B0" + // 1310 - 1314
+ "\u8EAC\uD8B1\u8EAC\uD8B2\u8EAC\uD8B3\u8EAC\uD8B4\u8EAC\uD8B5" + // 1315 - 1319
+ "\u8EAC\uD8B6\u8EAC\uD8B7\u8EAC\uD8B8\u8EAC\uD8B9\u8EAC\uD8BA" + // 1320 - 1324
+ "\u8EAC\uD8BB\u8EAC\uD8BC\u8EAC\uD8BD\u8EAC\uD8BE\u8EAC\uD8BF" + // 1325 - 1329
+ "\u8EAC\uD8C0\u8EAC\uD8C1\u8EAC\uD8C2\u8EAC\uD8C3\u8EAC\uD8C4" + // 1330 - 1334
+ "\u8EAC\uD8C5\u8EAC\uD8C6\u8EAC\uD8C7\u8EAC\uD8C8\u8EAC\uD8C9" + // 1335 - 1339
+ "\u8EAC\uD8CA\u8EAC\uD8CB\u8EAC\uD8CC\u8EAC\uD8CD\u8EAC\uD8CE" + // 1340 - 1344
+ "\u8EAC\uD8CF\u8EAC\uD8D0\u8EAC\uD8D1\u8EAC\uD8D2\u8EAC\uD8D3" + // 1345 - 1349
+ "\u8EAC\uD8D4\u8EAC\uD8D5\u8EAC\uD8D6\u8EAC\uD8D7\u8EAC\uD8D8" + // 1350 - 1354
+ "\u8EAC\uD8D9\u8EAC\uD8DA\u8EAC\uD8DB\u8EAC\uD8DC\u8EAC\uD8DD" + // 1355 - 1359
+ "\u8EAC\uD8DE\u8EAC\uD8DF\u8EAC\uD8E0\u8EAC\uD8E1\u8EAC\uD8E2" + // 1360 - 1364
+ "\u8EAC\uD8E3\u8EAC\uD8E4\u8EAC\uD8E5\u8EAC\uD8E6\u8EAC\uD8E7" + // 1365 - 1369
+ "\u8EAC\uD8E8\u8EAC\uD8E9\u8EAC\uD8EA\u8EAC\uD8EB\u8EAC\uD8EC" + // 1370 - 1374
+ "\u8EAC\uD8ED\u8EAC\uD8EE\u8EAC\uD7CD\u8EAC\uD7CE\u8EAC\uD7CF" + // 1375 - 1379
+ "\u8EAC\uD7D0\u8EAC\uD7D1\u8EAC\uD7D2\u8EAC\uD7D3\u8EAC\uD7D4" + // 1380 - 1384
+ "\u8EAC\uD7D5\u8EAC\uD7D6\u8EAC\uD7D7\u8EAC\uD7D8\u8EAC\uD7D9" + // 1385 - 1389
+ "\u8EAC\uD7DA\u8EAC\uD7DB\u8EAC\uD7DC\u8EAC\uD7DD\u8EAC\uD7DE" + // 1390 - 1394
+ "\u8EAC\uD7DF\u8EAC\uD7E0\u8EAC\uD7E1\u8EAC\uD7E2\u8EAC\uD7E3" + // 1395 - 1399
+ "\u8EAC\uD7E4\u8EAC\uD7E5\u8EAC\uD7E6\u8EAC\uD7E7\u8EAC\uD7E8" + // 1400 - 1404
+ "\u8EAC\uD7E9\u8EAC\uD7EA\u8EAC\uD7EB\u8EAC\uD7EC\u8EAC\uD7ED" + // 1405 - 1409
+ "\u8EAC\uD7EE\u8EAC\uD7EF\u8EAC\uD7F0\u8EAC\uD7F1\u8EAC\uD7F2" + // 1410 - 1414
+ "\u8EAC\uD7F3\u8EAC\uD7F4\u8EAC\uD7F5\u8EAC\uD7F6\u8EAC\uD7F7" + // 1415 - 1419
+ "\u8EAC\uD7F8\u8EAC\uD7F9\u8EAC\uD7FA\u8EAC\uD7FB\u8EAC\uD7FC" + // 1420 - 1424
+ "\u8EAC\uD7FD\u8EAC\uD7FE\u8EAC\uD8A1\u8EAC\uD8A2\u8EAC\uD8A3" + // 1425 - 1429
+ "\u8EAC\uD8A4\u8EAC\uD8A5\u8EAC\uD8A6\u8EAC\uD8A7\u8EAC\uD8A8" + // 1430 - 1434
+ "\u8EAC\uD8A9\u8EAC\uD8AA\u8EAC\uD8AB\u8EAC\uD8AC\u8EAC\uD8AD" + // 1435 - 1439
+ "\u8EAC\uD8AE\u8EAC\uD6EB\u8EAC\uD6EC\u8EAC\uD6ED\u8EAC\uD6EE" + // 1440 - 1444
+ "\u8EAC\uD6EF\u8EAC\uD6F0\u8EAC\uD6F1\u8EAC\uD6F2\u8EAC\uD6F3" + // 1445 - 1449
+ "\u8EAC\uD6F4\u8EAC\uD6F5\u8EAC\uD6F6\u8EAC\uD6F7\u8EAC\uD6F8" + // 1450 - 1454
+ "\u8EAC\uD6F9\u8EAC\uD6FA\u8EAC\uD6FB\u8EAC\uD6FC\u8EAC\uD6FD" + // 1455 - 1459
+ "\u8EAC\uD6FE\u8EAC\uD7A1\u8EAC\uD7A2\u8EAC\uD7A3\u8EAC\uD7A4" + // 1460 - 1464
+ "\u8EAC\uD7A5\u8EAC\uD7A6\u8EAC\uD7A7\u8EAC\uD7A8\u8EAC\uD7A9" + // 1465 - 1469
+ "\u8EAC\uD7AA\u8EAC\uD7AB\u8EAC\uD7AC\u8EAC\uD7AD\u8EAC\uD7AE" + // 1470 - 1474
+ "\u8EAC\uD7AF\u8EAC\uD7B0\u8EAC\uD7B1\u8EAC\uD7B2\u8EAC\uD7B3" + // 1475 - 1479
+ "\u8EAC\uD7B4\u8EAC\uD7B5\u8EAC\uD7B6\u8EAC\uD7B7\u8EAC\uD7B8" + // 1480 - 1484
+ "\u8EAC\uD7B9\u8EAC\uD7BA\u8EAC\uD7BB\u8EAC\uD7BC\u8EAC\uD7BD" + // 1485 - 1489
+ "\u8EAC\uD7BE\u8EAC\uD7BF\u8EAC\uD7C0\u8EAC\uD7C1\u8EAC\uD7C2" + // 1490 - 1494
+ "\u8EAC\uD7C3\u8EAC\uD7C4\u8EAC\uD7C5\u8EAC\uD7C6\u8EAC\uD7C7" + // 1495 - 1499
+ "\u8EAC\uD7C8\u8EAC\uD7C9\u8EAC\uD7CA\u8EAC\uD7CB\u8EAC\uD7CC" + // 1500 - 1504
+ "\u8EAC\uD6AB\u8EAC\uD6AC\u8EAC\uD6AD\u8EAC\uD6AE\u8EAC\uD6AF" + // 1505 - 1509
+ "\u8EAC\uD6B0\u8EAC\uD6B1\u8EAC\uD6B2\u8EAC\uD6B3\u8EAC\uD6B4" + // 1510 - 1514
+ "\u8EAC\uD6B5\u8EAC\uD6B6\u8EAC\uD6B7\u8EAC\uD6B8\u8EAC\uD6B9" + // 1515 - 1519
+ "\u8EAC\uD6BA\u8EAC\uD6BB\u8EAC\uD6BC\u8EAC\uD6BD\u8EAC\uD6BE" + // 1520 - 1524
+ "\u8EAC\uD6BF\u8EAC\uD6C0\u8EAC\uD6C1\u8EAC\uD6C2\u8EAC\uD6C3" + // 1525 - 1529
+ "\u8EAC\uD6C4\u8EAC\uD6C5\u8EAC\uD6C6\u8EAC\uD6C7\u8EAC\uD6C8" + // 1530 - 1534
+ "\u8EAC\uD6C9\u8EAC\uD6CA\u8EAC\uD6CB\u8EAC\uD6CC\u8EAC\uD6CD" + // 1535 - 1539
+ "\u8EAC\uD6CE\u8EAC\uD6CF\u8EAC\uD6D0\u8EAC\uD6D1\u8EAC\uD6D2" + // 1540 - 1544
+ "\u8EAC\uD6D3\u8EAC\uD6D4\u8EAC\uD6D5\u8EAC\uD6D6\u8EAC\uD6D7" + // 1545 - 1549
+ "\u8EAC\uD6D8\u8EAC\uD6D9\u8EAC\uD6DA\u8EAC\uD6DB\u8EAC\uD6DC" + // 1550 - 1554
+ "\u8EAC\uD6DD\u8EAC\uD6DE\u8EAC\uD6DF\u8EAC\uD6E0\u8EAC\uD6E1" + // 1555 - 1559
+ "\u8EAC\uD6E2\u8EAC\uD6E3\u8EAC\uD6E4\u8EAC\uD6E5\u8EAC\uD6E6" + // 1560 - 1564
+ "\u8EAC\uD6E7\u8EAC\uD6E8\u8EAC\uD6E9\u8EAC\uD6EA\u8EAC\uD5C9" + // 1565 - 1569
+ "\u8EAC\uD5CA\u8EAC\uD5CB\u8EAC\uD5CC\u8EAC\uD5CD\u8EAC\uD5CE" + // 1570 - 1574
+ "\u8EAC\uD5CF\u8EAC\uD5D0\u8EAC\uD5D1\u8EAC\uD5D2\u8EAC\uD5D3" + // 1575 - 1579
+ "\u8EAC\uD5D4\u8EAC\uD5D5\u8EAC\uD5D6\u8EAC\uD5D7\u8EAC\uD5D8" + // 1580 - 1584
+ "\u8EAC\uD5D9\u8EAC\uD5DA\u8EAC\uD5DB\u8EAC\uD5DC\u8EAC\uD5DD" + // 1585 - 1589
+ "\u8EAC\uD5DE\u8EAC\uD5DF\u8EAC\uD5E0\u8EAC\uD5E1\u8EAC\uD5E2" + // 1590 - 1594
+ "\u8EAC\uD5E3\u8EAC\uD5E4\u8EAC\uD5E5\u8EAC\uD5E6\u8EAC\uD5E7" + // 1595 - 1599
+ "\u8EAC\uD5E8\u8EAC\uD5E9\u8EAC\uD5EA\u8EAC\uD5EB\u8EAC\uD5EC" + // 1600 - 1604
+ "\u8EAC\uD5ED\u8EAC\uD5EE\u8EAC\uD5EF\u8EAC\uD5F0\u8EAC\uD5F1" + // 1605 - 1609
+ "\u8EAC\uD5F2\u8EAC\uD5F3\u8EAC\uD5F4\u8EAC\uD5F5\u8EAC\uD5F6" + // 1610 - 1614
+ "\u8EAC\uD5F7\u8EAC\uD5F8\u8EAC\uD5F9\u8EAC\uD5FA\u8EAC\uD5FB" + // 1615 - 1619
+ "\u8EAC\uD5FC\u8EAC\uD5FD\u8EAC\uD5FE\u8EAC\uD6A1\u8EAC\uD6A2" + // 1620 - 1624
+ "\u8EAC\uD6A3\u8EAC\uD6A4\u8EAC\uD6A5\u8EAC\uD6A6\u8EAC\uD6A7" + // 1625 - 1629
+ "\u8EAC\uD6A8\u8EAC\uD6A9\u8EAC\uD6AA\u8EAC\uD4E7\u8EAC\uD4E8" + // 1630 - 1634
+ "\u8EAC\uD4E9\u8EAC\uD4EA\u8EAC\uD4EB\u8EAC\uD4EC\u8EAC\uD4ED" + // 1635 - 1639
+ "\u8EAC\uD4EE\u8EAC\uD4EF\u8EAC\uD4F0\u8EAC\uD4F1\u8EAC\uD4F2" + // 1640 - 1644
+ "\u8EAC\uD4F3\u8EAC\uD4F4\u8EAC\uD4F5\u8EAC\uD4F6\u8EAC\uD4F7" + // 1645 - 1649
+ "\u8EAC\uD4F8\u8EAC\uD4F9\u8EAC\uD4FA\u8EAC\uD4FB\u8EAC\uD4FC" + // 1650 - 1654
+ "\u8EAC\uD4FD\u8EAC\uD4FE\u8EAC\uD5A1\u8EAC\uD5A2\u8EAC\uD5A3" + // 1655 - 1659
+ "\u8EAC\uD5A4\u8EAC\uD5A5\u8EAC\uD5A6\u8EAC\uD5A7\u8EAC\uD5A8" + // 1660 - 1664
+ "\u8EAC\uD5A9\u8EAC\uD5AA\u8EAC\uD5AB\u8EAC\uD5AC\u8EAC\uD5AD" + // 1665 - 1669
+ "\u8EAC\uD5AE\u8EAC\uD5AF\u8EAC\uD5B0\u8EAC\uD5B1\u8EAC\uD5B2" + // 1670 - 1674
+ "\u8EAC\uD5B3\u8EAC\uD5B4\u8EAC\uD5B5\u8EAC\uD5B6\u8EAC\uD5B7" + // 1675 - 1679
+ "\u8EAC\uD5B8\u8EAC\uD5B9\u8EAC\uD5BA\u8EAC\uD5BB\u8EAC\uD5BC" + // 1680 - 1684
+ "\u8EAC\uD5BD\u8EAC\uD5BE\u8EAC\uD5BF\u8EAC\uD5C0\u8EAC\uD5C1" + // 1685 - 1689
+ "\u8EAC\uD5C2\u8EAC\uD5C3\u8EAC\uD5C4\u8EAC\uD5C5\u8EAC\uD5C6" + // 1690 - 1694
+ "\u8EAC\uD5C7\u8EAC\uD5C8\u8EAC\uD4A7\u8EAC\uD4A8\u8EAC\uD4A9" + // 1695 - 1699
+ "\u8EAC\uD4AA\u8EAC\uD4AB\u8EAC\uD4AC\u8EAC\uD4AD\u8EAC\uD4AE" + // 1700 - 1704
+ "\u8EAC\uD4AF\u8EAC\uD4B0\u8EAC\uD4B1\u8EAC\uD4B2\u8EAC\uD4B3" + // 1705 - 1709
+ "\u8EAC\uD4B4\u8EAC\uD4B5\u8EAC\uD4B6\u8EAC\uD4B7\u8EAC\uD4B8" + // 1710 - 1714
+ "\u8EAC\uD4B9\u8EAC\uD4BA\u8EAC\uD4BB\u8EAC\uD4BC\u8EAC\uD4BD" + // 1715 - 1719
+ "\u8EAC\uD4BE\u8EAC\uD4BF\u8EAC\uD4C0\u8EAC\uD4C1\u8EAC\uD4C2" + // 1720 - 1724
+ "\u8EAC\uD4C3\u8EAC\uD4C4\u8EAC\uD4C5\u8EAC\uD4C6\u8EAC\uD4C7" + // 1725 - 1729
+ "\u8EAC\uD4C8\u8EAC\uD4C9\u8EAC\uD4CA\u8EAC\uD4CB\u8EAC\uD4CC" + // 1730 - 1734
+ "\u8EAC\uD4CD\u8EAC\uD4CE\u8EAC\uD4CF\u8EAC\uD4D0\u8EAC\uD4D1" + // 1735 - 1739
+ "\u8EAC\uD4D2\u8EAC\uD4D3\u8EAC\uD4D4\u8EAC\uD4D5\u8EAC\uD4D6" + // 1740 - 1744
+ "\u8EAC\uD4D7\u8EAC\uD4D8\u8EAC\uD4D9\u8EAC\uD4DA\u8EAC\uD4DB" + // 1745 - 1749
+ "\u8EAC\uD4DC\u8EAC\uD4DD\u8EAC\uD4DE\u8EAC\uD4DF\u8EAC\uD4E0" + // 1750 - 1754
+ "\u8EAC\uD4E1\u8EAC\uD4E2\u8EAC\uD4E3\u8EAC\uD4E4\u8EAC\uD4E5" + // 1755 - 1759
+ "\u8EAC\uD4E6\u8EAC\uD3C5\u8EAC\uD3C6\u8EAC\uD3C7\u8EAC\uD3C8" + // 1760 - 1764
+ "\u8EAC\uD3C9\u8EAC\uD3CA\u8EAC\uD3CB\u8EAC\uD3CC\u8EAC\uD3CD" + // 1765 - 1769
+ "\u8EAC\uD3CE\u8EAC\uD3CF\u8EAC\uD3D0\u8EAC\uD3D1\u8EAC\uD3D2" + // 1770 - 1774
+ "\u8EAC\uD3D3\u8EAC\uD3D4\u8EAC\uD3D5\u8EAC\uD3D6\u8EAC\uD3D7" + // 1775 - 1779
+ "\u8EAC\uD3D8\u8EAC\uD3D9\u8EAC\uD3DA\u8EAC\uD3DB\u8EAC\uD3DC" + // 1780 - 1784
+ "\u8EAC\uD3DD\u8EAC\uD3DE\u8EAC\uD3DF\u8EAC\uD3E0\u8EAC\uD3E1" + // 1785 - 1789
+ "\u8EAC\uD3E2\u8EAC\uD3E3\u8EAC\uD3E4\u8EAC\uD3E5\u8EAC\uD3E6" + // 1790 - 1794
+ "\u8EAC\uD3E7\u8EAC\uD3E8\u8EAC\uD3E9\u8EAC\uD3EA\u8EAC\uD3EB" + // 1795 - 1799
+ "\u8EAC\uD3EC\u8EAC\uD3ED\u8EAC\uD3EE\u8EAC\uD3EF\u8EAC\uD3F0" + // 1800 - 1804
+ "\u8EAC\uD3F1\u8EAC\uD3F2\u8EAC\uD3F3\u8EAC\uD3F4\u8EAC\uD3F5" + // 1805 - 1809
+ "\u8EAC\uD3F6\u8EAC\uD3F7\u8EAC\uD3F8\u8EAC\uD3F9\u8EAC\uD3FA" + // 1810 - 1814
+ "\u8EAC\uD3FB\u8EAC\uD3FC\u8EAC\uD3FD\u8EAC\uD3FE\u8EAC\uD4A1" + // 1815 - 1819
+ "\u8EAC\uD4A2\u8EAC\uD4A3\u8EAC\uD4A4\u8EAC\uD4A5\u8EAC\uD4A6" + // 1820 - 1824
+ "\u8EAC\uD2E3\u8EAC\uD2E4\u8EAC\uD2E5\u8EAC\uD2E6\u8EAC\uD2E7" + // 1825 - 1829
+ "\u8EAC\uD2E8\u8EAC\uD2E9\u8EAC\uD2EA\u8EAC\uD2EB\u8EAC\uD2EC" + // 1830 - 1834
+ "\u8EAC\uD2ED\u8EAC\uD2EE\u8EAC\uD2EF\u8EAC\uD2F0\u8EAC\uD2F1" + // 1835 - 1839
+ "\u8EAC\uD2F2\u8EAC\uD2F3\u8EAC\uD2F4\u8EAC\uD2F5\u8EAC\uD2F6" + // 1840 - 1844
+ "\u8EAC\uD2F7\u8EAC\uD2F8\u8EAC\uD2F9\u8EAC\uD2FA\u8EAC\uD2FB" + // 1845 - 1849
+ "\u8EAC\uD2FC\u8EAC\uD2FD\u8EAC\uD2FE\u8EAC\uD3A1\u8EAC\uD3A2" + // 1850 - 1854
+ "\u8EAC\uD3A3\u8EAC\uD3A4\u8EAC\uD3A5\u8EAC\uD3A6\u8EAC\uD3A7" + // 1855 - 1859
+ "\u8EAC\uD3A8\u8EAC\uD3A9\u8EAC\uD3AA\u8EAC\uD3AB\u8EAC\uD3AC" + // 1860 - 1864
+ "\u8EAC\uD3AD\u8EAC\uD3AE\u8EAC\uD3AF\u8EAC\uD3B0\u8EAC\uD3B1" + // 1865 - 1869
+ "\u8EAC\uD3B2\u8EAC\uD3B3\u8EAC\uD3B4\u8EAC\uD3B5\u8EAC\uD3B6" + // 1870 - 1874
+ "\u8EAC\uD3B7\u8EAC\uD3B8\u8EAC\uD3B9\u8EAC\uD3BA\u8EAC\uD3BB" + // 1875 - 1879
+ "\u8EAC\uD3BC\u8EAC\uD3BD\u8EAC\uD3BE\u8EAC\uD3BF\u8EAC\uD3C0" + // 1880 - 1884
+ "\u8EAC\uD3C1\u8EAC\uD3C2\u8EAC\uD3C3\u8EAC\uD3C4\u8EAC\uD2A3" + // 1885 - 1889
+ "\u8EAC\uD2A4\u8EAC\uD2A5\u8EAC\uD2A6\u8EAC\uD2A7\u8EAC\uD2A8" + // 1890 - 1894
+ "\u8EAC\uD2A9\u8EAC\uD2AA\u8EAC\uD2AB\u8EAC\uD2AC\u8EAC\uD2AD" + // 1895 - 1899
+ "\u8EAC\uD2AE\u8EAC\uD2AF\u8EAC\uD2B0\u8EAC\uD2B1\u8EAC\uD2B2" + // 1900 - 1904
+ "\u8EAC\uD2B3\u8EAC\uD2B4\u8EAC\uD2B5\u8EAC\uD2B6\u8EAC\uD2B7" + // 1905 - 1909
+ "\u8EAC\uD2B8\u8EAC\uD2B9\u8EAC\uD2BA\u8EAC\uD2BB\u8EAC\uD2BC" + // 1910 - 1914
+ "\u8EAC\uD2BD\u8EAC\uD2BE\u8EAC\uD2BF\u8EAC\uD2C0\u8EAC\uD2C1" + // 1915 - 1919
+ "\u8EAC\uD2C2\u8EAC\uD2C3\u8EAC\uD2C4\u8EAC\uD2C5\u8EAC\uD2C6" + // 1920 - 1924
+ "\u8EAC\uD2C7\u8EAC\uD2C8\u8EAC\uD2C9\u8EAC\uD2CA\u8EAC\uD2CB" + // 1925 - 1929
+ "\u8EAC\uD2CC\u8EAC\uD2CD\u8EAC\uD2CE\u8EAC\uD2CF\u8EAC\uD2D0" + // 1930 - 1934
+ "\u8EAC\uD2D1\u8EAC\uD2D2\u8EAC\uD2D3\u8EAC\uD2D4\u8EAC\uD2D5" + // 1935 - 1939
+ "\u8EAC\uD2D6\u8EAC\uD2D7\u8EAC\uD2D8\u8EAC\uD2D9\u8EAC\uD2DA" + // 1940 - 1944
+ "\u8EAC\uD2DB\u8EAC\uD2DC\u8EAC\uD2DD\u8EAC\uD2DE\u8EAC\uD2DF" + // 1945 - 1949
+ "\u8EAC\uD2E0\u8EAC\uD2E1\u8EAC\uD2E2\u8EAC\uD1C1\u8EAC\uD1C2" + // 1950 - 1954
+ "\u8EAC\uD1C3\u8EAC\uD1C4\u8EAC\uD1C5\u8EAC\uD1C6\u8EAC\uD1C7" + // 1955 - 1959
+ "\u8EAC\uD1C8\u8EAC\uD1C9\u8EAC\uD1CA\u8EAC\uD1CB\u8EAC\uD1CC" + // 1960 - 1964
+ "\u8EAC\uD1CD\u8EAC\uD1CE\u8EAC\uD1CF\u8EAC\uD1D0\u8EAC\uD1D1" + // 1965 - 1969
+ "\u8EAC\uD1D2\u8EAC\uD1D3\u8EAC\uD1D4\u8EAC\uD1D5\u8EAC\uD1D6" + // 1970 - 1974
+ "\u8EAC\uD1D7\u8EAC\uD1D8\u8EAC\uD1D9\u8EAC\uD1DA\u8EAC\uD1DB" + // 1975 - 1979
+ "\u8EAC\uD1DC\u8EAC\uD1DD\u8EAC\uD1DE\u8EAC\uD1DF\u8EAC\uD1E0" + // 1980 - 1984
+ "\u8EAC\uD1E1\u8EAC\uD1E2\u8EAC\uD1E3\u8EAC\uD1E4\u8EAC\uD1E5" + // 1985 - 1989
+ "\u8EAC\uD1E6\u8EAC\uD1E7\u8EAC\uD1E8\u8EAC\uD1E9\u8EAC\uD1EA" + // 1990 - 1994
+ "\u8EAC\uD1EB\u8EAC\uD1EC\u8EAC\uD1ED\u8EAC\uD1EE\u8EAC\uD1EF" + // 1995 - 1999
+ "\u8EAC\uD1F0\u8EAC\uD1F1\u8EAC\uD1F2\u8EAC\uD1F3\u8EAC\uD1F4" + // 2000 - 2004
+ "\u8EAC\uD1F5\u8EAC\uD1F6\u8EAC\uD1F7\u8EAC\uD1F8\u8EAC\uD1F9" + // 2005 - 2009
+ "\u8EAC\uD1FA\u8EAC\uD1FB\u8EAC\uD1FC\u8EAC\uD1FD\u8EAC\uD1FE" + // 2010 - 2014
+ "\u8EAC\uD2A1\u8EAC\uD2A2\u8EAC\uD0DF\u8EAC\uD0E0\u8EAC\uD0E1" + // 2015 - 2019
+ "\u8EAC\uD0E2\u8EAC\uD0E3\u8EAC\uD0E4\u8EAC\uD0E5\u8EAC\uD0E6" + // 2020 - 2024
+ "\u8EAC\uD0E7\u8EAC\uD0E8\u8EAC\uD0E9\u8EAC\uD0EA\u8EAC\uD0EB" + // 2025 - 2029
+ "\u8EAC\uD0EC\u8EAC\uD0ED\u8EAC\uD0EE\u8EAC\uD0EF\u8EAC\uD0F0" + // 2030 - 2034
+ "\u8EAC\uD0F1\u8EAC\uD0F2\u8EAC\uD0F3\u8EAC\uD0F4\u8EAC\uD0F5" + // 2035 - 2039
+ "\u8EAC\uD0F6\u8EAC\uD0F7\u8EAC\uD0F8\u8EAC\uD0F9\u8EAC\uD0FA" + // 2040 - 2044
+ "\u8EAC\uD0FB\u8EAC\uD0FC\u8EAC\uD0FD\u8EAC\uD0FE\u8EAC\uD1A1" + // 2045 - 2049
+ "\u8EAC\uD1A2\u8EAC\uD1A3\u8EAC\uD1A4\u8EAC\uD1A5\u8EAC\uD1A6" + // 2050 - 2054
+ "\u8EAC\uD1A7\u8EAC\uD1A8\u8EAC\uD1A9\u8EAC\uD1AA\u8EAC\uD1AB" + // 2055 - 2059
+ "\u8EAC\uD1AC\u8EAC\uD1AD\u8EAC\uD1AE\u8EAC\uD1AF\u8EAC\uD1B0" + // 2060 - 2064
+ "\u8EAC\uD1B1\u8EAC\uD1B2\u8EAC\uD1B3\u8EAC\uD1B4\u8EAC\uD1B5" + // 2065 - 2069
+ "\u8EAC\uD1B6\u8EAC\uD1B7\u8EAC\uD1B8\u8EAC\uD1B9\u8EAC\uD1BA" + // 2070 - 2074
+ "\u8EAC\uD1BB\u8EAC\uD1BC\u8EAC\uD1BD\u8EAC\uD1BE\u8EAC\uD1BF" + // 2075 - 2079
+ "\u8EAC\uD1C0\u8EAC\uCFFD\u8EAC\uCFFE\u8EAC\uD0A1\u8EAC\uD0A2" + // 2080 - 2084
+ "\u8EAC\uD0A3\u8EAC\uD0A4\u8EAC\uD0A5\u8EAC\uD0A6\u8EAC\uD0A7" + // 2085 - 2089
+ "\u8EAC\uD0A8\u8EAC\uD0A9\u8EAC\uD0AA\u8EAC\uD0AB\u8EAC\uD0AC" + // 2090 - 2094
+ "\u8EAC\uD0AD\u8EAC\uD0AE\u8EAC\uD0AF\u8EAC\uD0B0\u8EAC\uD0B1" + // 2095 - 2099
+ "\u8EAC\uD0B2\u8EAC\uD0B3\u8EAC\uD0B4\u8EAC\uD0B5\u8EAC\uD0B6" + // 2100 - 2104
+ "\u8EAC\uD0B7\u8EAC\uD0B8\u8EAC\uD0B9\u8EAC\uD0BA\u8EAC\uD0BB" + // 2105 - 2109
+ "\u8EAC\uD0BC\u8EAC\uD0BD\u8EAC\uD0BE\u8EAC\uD0BF\u8EAC\uD0C0" + // 2110 - 2114
+ "\u8EAC\uD0C1\u8EAC\uD0C2\u8EAC\uD0C3\u8EAC\uD0C4\u8EAC\uD0C5" + // 2115 - 2119
+ "\u8EAC\uD0C6\u8EAC\uD0C7\u8EAC\uD0C8\u8EAC\uD0C9\u8EAC\uD0CA" + // 2120 - 2124
+ "\u8EAC\uD0CB\u8EAC\uD0CC\u8EAC\uD0CD\u8EAC\uD0CE\u8EAC\uD0CF" + // 2125 - 2129
+ "\u8EAC\uD0D0\u8EAC\uD0D1\u8EAC\uD0D2\u8EAC\uD0D3\u8EAC\uD0D4" + // 2130 - 2134
+ "\u8EAC\uD0D5\u8EAC\uD0D6\u8EAC\uD0D7\u8EAC\uD0D8\u8EAC\uD0D9" + // 2135 - 2139
+ "\u8EAC\uD0DA\u8EAC\uD0DB\u8EAC\uD0DC\u8EAC\uD0DD\u8EAC\uD0DE" + // 2140 - 2144
+ "\u8EAC\uCFBD\u8EAC\uCFBE\u8EAC\uCFBF\u8EAC\uCFC0\u8EAC\uCFC1" + // 2145 - 2149
+ "\u8EAC\uCFC2\u8EAC\uCFC3\u8EAC\uCFC4\u8EAC\uCFC5\u8EAC\uCFC6" + // 2150 - 2154
+ "\u8EAC\uCFC7\u8EAC\uCFC8\u8EAC\uCFC9\u8EAC\uCFCA\u8EAC\uCFCB" + // 2155 - 2159
+ "\u8EAC\uCFCC\u8EAC\uCFCD\u8EAC\uCFCE\u8EAC\uCFCF\u8EAC\uCFD0" + // 2160 - 2164
+ "\u8EAC\uCFD1\u8EAC\uCFD2\u8EAC\uCFD3\u8EAC\uCFD4\u8EAC\uCFD5" + // 2165 - 2169
+ "\u8EAC\uCFD6\u8EAC\uCFD7\u8EAC\uCFD8\u8EAC\uCFD9\u8EAC\uCFDA" + // 2170 - 2174
+ "\u8EAC\uCFDB\u8EAC\uCFDC\u8EAC\uCFDD\u8EAC\uCFDE\u8EAC\uCFDF" + // 2175 - 2179
+ "\u8EAC\uCFE0\u8EAC\uCFE1\u8EAC\uCFE2\u8EAC\uCFE3\u8EAC\uCFE4" + // 2180 - 2184
+ "\u8EAC\uCFE5\u8EAC\uCFE6\u8EAC\uCFE7\u8EAC\uCFE8\u8EAC\uCFE9" + // 2185 - 2189
+ "\u8EAC\uCFEA\u8EAC\uCFEB\u8EAC\uCFEC\u8EAC\uCFED\u8EAC\uCFEE" + // 2190 - 2194
+ "\u8EAC\uCFEF\u8EAC\uCFF0\u8EAC\uCFF1\u8EAC\uCFF2\u8EAC\uCFF3" + // 2195 - 2199
+ "\u8EAC\uCFF4\u8EAC\uCFF5\u8EAC\uCFF6\u8EAC\uCFF7\u8EAC\uCFF8" + // 2200 - 2204
+ "\u8EAC\uCFF9\u8EAC\uCFFA\u8EAC\uCFFB\u8EAC\uCFFC\u8EAC\uCEDB" + // 2205 - 2209
+ "\u8EAC\uCEDC\u8EAC\uCEDD\u8EAC\uCEDE\u8EAC\uCEDF\u8EAC\uCEE0" + // 2210 - 2214
+ "\u8EAC\uCEE1\u8EAC\uCEE2\u8EAC\uCEE3\u8EAC\uCEE4\u8EAC\uCEE5" + // 2215 - 2219
+ "\u8EAC\uCEE6\u8EAC\uCEE7\u8EAC\uCEE8\u8EAC\uCEE9\u8EAC\uCEEA" + // 2220 - 2224
+ "\u8EAC\uCEEB\u8EAC\uCEEC\u8EAC\uCEED\u8EAC\uCEEE\u8EAC\uCEEF" + // 2225 - 2229
+ "\u8EAC\uCEF0\u8EAC\uCEF1\u8EAC\uCEF2\u8EAC\uCEF3\u8EAC\uCEF4" + // 2230 - 2234
+ "\u8EAC\uCEF5\u8EAC\uCEF6\u8EAC\uCEF7\u8EAC\uCEF8\u8EAC\uCEF9" + // 2235 - 2239
+ "\u8EAC\uCEFA\u8EAC\uCEFB\u8EAC\uCEFC\u8EAC\uCEFD\u8EAC\uCEFE" + // 2240 - 2244
+ "\u8EAC\uCFA1\u8EAC\uCFA2\u8EAC\uCFA3\u8EAC\uCFA4\u8EAC\uCFA5" + // 2245 - 2249
+ "\u8EAC\uCFA6\u8EAC\uCFA7\u8EAC\uCFA8\u8EAC\uCFA9\u8EAC\uCFAA" + // 2250 - 2254
+ "\u8EAC\uCFAB\u8EAC\uCFAC\u8EAC\uCFAD\u8EAC\uCFAE\u8EAC\uCFAF" + // 2255 - 2259
+ "\u8EAC\uCFB0\u8EAC\uCFB1\u8EAC\uCFB2\u8EAC\uCFB3\u8EAC\uCFB4" + // 2260 - 2264
+ "\u8EAC\uCFB5\u8EAC\uCFB6\u8EAC\uCFB7\u8EAC\uCFB8\u8EAC\uCFB9" + // 2265 - 2269
+ "\u8EAC\uCFBA\u8EAC\uCFBB\u8EAC\uCFBC\u8EAC\uCDF9\u8EAC\uCDFA" + // 2270 - 2274
+ "\u8EAC\uCDFB\u8EAC\uCDFC\u8EAC\uCDFD\u8EAC\uCDFE\u8EAC\uCEA1" + // 2275 - 2279
+ "\u8EAC\uCEA2\u8EAC\uCEA3\u8EAC\uCEA4\u8EAC\uCEA5\u8EAC\uCEA6" + // 2280 - 2284
+ "\u8EAC\uCEA7\u8EAC\uCEA8\u8EAC\uCEA9\u8EAC\uCEAA\u8EAC\uCEAB" + // 2285 - 2289
+ "\u8EAC\uCEAC\u8EAC\uCEAD\u8EAC\uCEAE\u8EAC\uCEAF\u8EAC\uCEB0" + // 2290 - 2294
+ "\u8EAC\uCEB1\u8EAC\uCEB2\u8EAC\uCEB3\u8EAC\uCEB4\u8EAC\uCEB5" + // 2295 - 2299
+ "\u8EAC\uCEB6\u8EAC\uCEB7\u8EAC\uCEB8\u8EAC\uCEB9\u8EAC\uCEBA" + // 2300 - 2304
+ "\u8EAC\uCEBB\u8EAC\uCEBC\u8EAC\uCEBD\u8EAC\uCEBE\u8EAC\uCEBF" + // 2305 - 2309
+ "\u8EAC\uCEC0\u8EAC\uCEC1\u8EAC\uCEC2\u8EAC\uCEC3\u8EAC\uCEC4" + // 2310 - 2314
+ "\u8EAC\uCEC5\u8EAC\uCEC6\u8EAC\uCEC7\u8EAC\uCEC8\u8EAC\uCEC9" + // 2315 - 2319
+ "\u8EAC\uCECA\u8EAC\uCECB\u8EAC\uCECC\u8EAC\uCECD\u8EAC\uCECE" + // 2320 - 2324
+ "\u8EAC\uCECF\u8EAC\uCED0\u8EAC\uCED1\u8EAC\uCED2\u8EAC\uCED3" + // 2325 - 2329
+ "\u8EAC\uCED4\u8EAC\uCED5\u8EAC\uCED6\u8EAC\uCED7\u8EAC\uCED8" + // 2330 - 2334
+ "\u8EAC\uCED9\u8EAC\uCEDA\u8EAC\uCDB9\u8EAC\uCDBA\u8EAC\uCDBB" + // 2335 - 2339
+ "\u8EAC\uCDBC\u8EAC\uCDBD\u8EAC\uCDBE\u8EAC\uCDBF\u8EAC\uCDC0" + // 2340 - 2344
+ "\u8EAC\uCDC1\u8EAC\uCDC2\u8EAC\uCDC3\u8EAC\uCDC4\u8EAC\uCDC5" + // 2345 - 2349
+ "\u8EAC\uCDC6\u8EAC\uCDC7\u8EAC\uCDC8\u8EAC\uCDC9\u8EAC\uCDCA" + // 2350 - 2354
+ "\u8EAC\uCDCB\u8EAC\uCDCC\u8EAC\uCDCD\u8EAC\uCDCE\u8EAC\uCDCF" + // 2355 - 2359
+ "\u8EAC\uCDD0\u8EAC\uCDD1\u8EAC\uCDD2\u8EAC\uCDD3\u8EAC\uCDD4" + // 2360 - 2364
+ "\u8EAC\uCDD5\u8EAC\uCDD6\u8EAC\uCDD7\u8EAC\uCDD8\u8EAC\uCDD9" + // 2365 - 2369
+ "\u8EAC\uCDDA\u8EAC\uCDDB\u8EAC\uCDDC\u8EAC\uCDDD\u8EAC\uCDDE" + // 2370 - 2374
+ "\u8EAC\uCDDF\u8EAC\uCDE0\u8EAC\uCDE1\u8EAC\uCDE2\u8EAC\uCDE3" + // 2375 - 2379
+ "\u8EAC\uCDE4\u8EAC\uCDE5\u8EAC\uCDE6\u8EAC\uCDE7\u8EAC\uCDE8" + // 2380 - 2384
+ "\u8EAC\uCDE9\u8EAC\uCDEA\u8EAC\uCDEB\u8EAC\uCDEC\u8EAC\uCDED" + // 2385 - 2389
+ "\u8EAC\uCDEE\u8EAC\uCDEF\u8EAC\uCDF0\u8EAC\uCDF1\u8EAC\uCDF2" + // 2390 - 2394
+ "\u8EAC\uCDF3\u8EAC\uCDF4\u8EAC\uCDF5\u8EAC\uCDF6\u8EAC\uCDF7" + // 2395 - 2399
+ "\u8EAC\uCDF8\u8EAC\uCCD7\u8EAC\uCCD8\u8EAC\uCCD9\u8EAC\uCCDA" + // 2400 - 2404
+ "\u8EAC\uCCDB\u8EAC\uCCDC\u8EAC\uCCDD\u8EAC\uCCDE\u8EAC\uCCDF" + // 2405 - 2409
+ "\u8EAC\uCCE0\u8EAC\uCCE1\u8EAC\uCCE2\u8EAC\uCCE3\u8EAC\uCCE4" + // 2410 - 2414
+ "\u8EAC\uCCE5\u8EAC\uCCE6\u8EAC\uCCE7\u8EAC\uCCE8\u8EAC\uCCE9" + // 2415 - 2419
+ "\u8EAC\uCCEA\u8EAC\uCCEB\u8EAC\uCCEC\u8EAC\uCCED\u8EAC\uCCEE" + // 2420 - 2424
+ "\u8EAC\uCCEF\u8EAC\uCCF0\u8EAC\uCCF1\u8EAC\uCCF2\u8EAC\uCCF3" + // 2425 - 2429
+ "\u8EAC\uCCF4\u8EAC\uCCF5\u8EAC\uCCF6\u8EAC\uCCF7\u8EAC\uCCF8" + // 2430 - 2434
+ "\u8EAC\uCCF9\u8EAC\uCCFA\u8EAC\uCCFB\u8EAC\uCCFC\u8EAC\uCCFD" + // 2435 - 2439
+ "\u8EAC\uCCFE\u8EAC\uCDA1\u8EAC\uCDA2\u8EAC\uCDA3\u8EAC\uCDA4" + // 2440 - 2444
+ "\u8EAC\uCDA5\u8EAC\uCDA6\u8EAC\uCDA7\u8EAC\uCDA8\u8EAC\uCDA9" + // 2445 - 2449
+ "\u8EAC\uCDAA\u8EAC\uCDAB\u8EAC\uCDAC\u8EAC\uCDAD\u8EAC\uCDAE" + // 2450 - 2454
+ "\u8EAC\uCDAF\u8EAC\uCDB0\u8EAC\uCDB1\u8EAC\uCDB2\u8EAC\uCDB3" + // 2455 - 2459
+ "\u8EAC\uCDB4\u8EAC\uCDB5\u8EAC\uCDB6\u8EAC\uCDB7\u8EAC\uCDB8" + // 2460 - 2464
+ "\u8EAC\uCBF5\u8EAC\uCBF6\u8EAC\uCBF7\u8EAC\uCBF8\u8EAC\uCBF9" + // 2465 - 2469
+ "\u8EAC\uCBFA\u8EAC\uCBFB\u8EAC\uCBFC\u8EAC\uCBFD\u8EAC\uCBFE" + // 2470 - 2474
+ "\u8EAC\uCCA1\u8EAC\uCCA2\u8EAC\uCCA3\u8EAC\uCCA4\u8EAC\uCCA5" + // 2475 - 2479
+ "\u8EAC\uCCA6\u8EAC\uCCA7\u8EAC\uCCA8\u8EAC\uCCA9\u8EAC\uCCAA" + // 2480 - 2484
+ "\u8EAC\uCCAB\u8EAC\uCCAC\u8EAC\uCCAD\u8EAC\uCCAE\u8EAC\uCCAF" + // 2485 - 2489
+ "\u8EAC\uCCB0\u8EAC\uCCB1\u8EAC\uCCB2\u8EAC\uCCB3\u8EAC\uCCB4" + // 2490 - 2494
+ "\u8EAC\uCCB5\u8EAC\uCCB6\u8EAC\uCCB7\u8EAC\uCCB8\u8EAC\uCCB9" + // 2495 - 2499
+ "\u8EAC\uCCBA\u8EAC\uCCBB\u8EAC\uCCBC\u8EAC\uCCBD\u8EAC\uCCBE" + // 2500 - 2504
+ "\u8EAC\uCCBF\u8EAC\uCCC0\u8EAC\uCCC1\u8EAC\uCCC2\u8EAC\uCCC3" + // 2505 - 2509
+ "\u8EAC\uCCC4\u8EAC\uCCC5\u8EAC\uCCC6\u8EAC\uCCC7\u8EAC\uCCC8" + // 2510 - 2514
+ "\u8EAC\uCCC9\u8EAC\uCCCA\u8EAC\uCCCB\u8EAC\uCCCC\u8EAC\uCCCD" + // 2515 - 2519
+ "\u8EAC\uCCCE\u8EAC\uCCCF\u8EAC\uCCD0\u8EAC\uCCD1\u8EAC\uCCD2" + // 2520 - 2524
+ "\u8EAC\uCCD3\u8EAC\uCCD4\u8EAC\uCCD5\u8EAC\uCCD6\u8EAC\uCBB5" + // 2525 - 2529
+ "\u8EAC\uCBB6\u8EAC\uCBB7\u8EAC\uCBB8\u8EAC\uCBB9\u8EAC\uCBBA" + // 2530 - 2534
+ "\u8EAC\uCBBB\u8EAC\uCBBC\u8EAC\uCBBD\u8EAC\uCBBE\u8EAC\uCBBF" + // 2535 - 2539
+ "\u8EAC\uCBC0\u8EAC\uCBC1\u8EAC\uCBC2\u8EAC\uCBC3\u8EAC\uCBC4" + // 2540 - 2544
+ "\u8EAC\uCBC5\u8EAC\uCBC6\u8EAC\uCBC7\u8EAC\uCBC8\u8EAC\uCBC9" + // 2545 - 2549
+ "\u8EAC\uCBCA\u8EAC\uCBCB\u8EAC\uCBCC\u8EAC\uCBCD\u8EAC\uCBCE" + // 2550 - 2554
+ "\u8EAC\uCBCF\u8EAC\uCBD0\u8EAC\uCBD1\u8EAC\uCBD2\u8EAC\uCBD3" + // 2555 - 2559
+ "\u8EAC\uCBD4\u8EAC\uCBD5\u8EAC\uCBD6\u8EAC\uCBD7\u8EAC\uCBD8" + // 2560 - 2564
+ "\u8EAC\uCBD9\u8EAC\uCBDA\u8EAC\uCBDB\u8EAC\uCBDC\u8EAC\uCBDD" + // 2565 - 2569
+ "\u8EAC\uCBDE\u8EAC\uCBDF\u8EAC\uCBE0\u8EAC\uCBE1\u8EAC\uCBE2" + // 2570 - 2574
+ "\u8EAC\uCBE3\u8EAC\uCBE4\u8EAC\uCBE5\u8EAC\uCBE6\u8EAC\uCBE7" + // 2575 - 2579
+ "\u8EAC\uCBE8\u8EAC\uCBE9\u8EAC\uCBEA\u8EAC\uCBEB\u8EAC\uCBEC" + // 2580 - 2584
+ "\u8EAC\uCBED\u8EAC\uCBEE\u8EAC\uCBEF\u8EAC\uCBF0\u8EAC\uCBF1" + // 2585 - 2589
+ "\u8EAC\uCBF2\u8EAC\uCBF3\u8EAC\uCBF4\u8EAC\uCAD3\u8EAC\uCAD4" + // 2590 - 2594
+ "\u8EAC\uCAD5\u8EAC\uCAD6\u8EAC\uCAD7\u8EAC\uCAD8\u8EAC\uCAD9" + // 2595 - 2599
+ "\u8EAC\uCADA\u8EAC\uCADB\u8EAC\uCADC\u8EAC\uCADD\u8EAC\uCADE" + // 2600 - 2604
+ "\u8EAC\uCADF\u8EAC\uCAE0\u8EAC\uCAE1\u8EAC\uCAE2\u8EAC\uCAE3" + // 2605 - 2609
+ "\u8EAC\uCAE4\u8EAC\uCAE5\u8EAC\uCAE6\u8EAC\uCAE7\u8EAC\uCAE8" + // 2610 - 2614
+ "\u8EAC\uCAE9\u8EAC\uCAEA\u8EAC\uCAEB\u8EAC\uCAEC\u8EAC\uCAED" + // 2615 - 2619
+ "\u8EAC\uCAEE\u8EAC\uCAEF\u8EAC\uCAF0\u8EAC\uCAF1\u8EAC\uCAF2" + // 2620 - 2624
+ "\u8EAC\uCAF3\u8EAC\uCAF4\u8EAC\uCAF5\u8EAC\uCAF6\u8EAC\uCAF7" + // 2625 - 2629
+ "\u8EAC\uCAF8\u8EAC\uCAF9\u8EAC\uCAFA\u8EAC\uCAFB\u8EAC\uCAFC" + // 2630 - 2634
+ "\u8EAC\uCAFD\u8EAC\uCAFE\u8EAC\uCBA1\u8EAC\uCBA2\u8EAC\uCBA3" + // 2635 - 2639
+ "\u8EAC\uCBA4\u8EAC\uCBA5\u8EAC\uCBA6\u8EAC\uCBA7\u8EAC\uCBA8" + // 2640 - 2644
+ "\u8EAC\uCBA9\u8EAC\uCBAA\u8EAC\uCBAB\u8EAC\uCBAC\u8EAC\uCBAD" + // 2645 - 2649
+ "\u8EAC\uCBAE\u8EAC\uCBAF\u8EAC\uCBB0\u8EAC\uCBB1\u8EAC\uCBB2" + // 2650 - 2654
+ "\u8EAC\uCBB3\u8EAC\uCBB4\u8EAC\uC9F1\u8EAC\uC9F2\u8EAC\uC9F3" + // 2655 - 2659
+ "\u8EAC\uC9F4\u8EAC\uC9F5\u8EAC\uC9F6\u8EAC\uC9F7\u8EAC\uC9F8" + // 2660 - 2664
+ "\u8EAC\uC9F9\u8EAC\uC9FA\u8EAC\uC9FB\u8EAC\uC9FC\u8EAC\uC9FD" + // 2665 - 2669
+ "\u8EAC\uC9FE\u8EAC\uCAA1\u8EAC\uCAA2\u8EAC\uCAA3\u8EAC\uCAA4" + // 2670 - 2674
+ "\u8EAC\uCAA5\u8EAC\uCAA6\u8EAC\uCAA7\u8EAC\uCAA8\u8EAC\uCAA9" + // 2675 - 2679
+ "\u8EAC\uCAAA\u8EAC\uCAAB\u8EAC\uCAAC\u8EAC\uCAAD\u8EAC\uCAAE" + // 2680 - 2684
+ "\u8EAC\uCAAF\u8EAC\uCAB0\u8EAC\uCAB1\u8EAC\uCAB2\u8EAC\uCAB3" + // 2685 - 2689
+ "\u8EAC\uCAB4\u8EAC\uCAB5\u8EAC\uCAB6\u8EAC\uCAB7\u8EAC\uCAB8" + // 2690 - 2694
+ "\u8EAC\uCAB9\u8EAC\uCABA\u8EAC\uCABB\u8EAC\uCABC\u8EAC\uCABD" + // 2695 - 2699
+ "\u8EAC\uCABE\u8EAC\uCABF\u8EAC\uCAC0\u8EAC\uCAC1\u8EAC\uCAC2" + // 2700 - 2704
+ "\u8EAC\uCAC3\u8EAC\uCAC4\u8EAC\uCAC5\u8EAC\uCAC6\u8EAC\uCAC7" + // 2705 - 2709
+ "\u8EAC\uCAC8\u8EAC\uCAC9\u8EAC\uCACA\u8EAC\uCACB\u8EAC\uCACC" + // 2710 - 2714
+ "\u8EAC\uCACD\u8EAC\uCACE\u8EAC\uCACF\u8EAC\uCAD0\u8EAC\uCAD1" + // 2715 - 2719
+ "\u8EAC\uCAD2\u8EAC\uC9B1\u8EAC\uC9B2\u8EAC\uC9B3\u8EAC\uC9B4" + // 2720 - 2724
+ "\u8EAC\uC9B5\u8EAC\uC9B6\u8EAC\uC9B7\u8EAC\uC9B8\u8EAC\uC9B9" + // 2725 - 2729
+ "\u8EAC\uC9BA\u8EAC\uC9BB\u8EAC\uC9BC\u8EAC\uC9BD\u8EAC\uC9BE" + // 2730 - 2734
+ "\u8EAC\uC9BF\u8EAC\uC9C0\u8EAC\uC9C1\u8EAC\uC9C2\u8EAC\uC9C3" + // 2735 - 2739
+ "\u8EAC\uC9C4\u8EAC\uC9C5\u8EAC\uC9C6\u8EAC\uC9C7\u8EAC\uC9C8" + // 2740 - 2744
+ "\u8EAC\uC9C9\u8EAC\uC9CA\u8EAC\uC9CB\u8EAC\uC9CC\u8EAC\uC9CD" + // 2745 - 2749
+ "\u8EAC\uC9CE\u8EAC\uC9CF\u8EAC\uC9D0\u8EAC\uC9D1\u8EAC\uC9D2" + // 2750 - 2754
+ "\u8EAC\uC9D3\u8EAC\uC9D4\u8EAC\uC9D5\u8EAC\uC9D6\u8EAC\uC9D7" + // 2755 - 2759
+ "\u8EAC\uC9D8\u8EAC\uC9D9\u8EAC\uC9DA\u8EAC\uC9DB\u8EAC\uC9DC" + // 2760 - 2764
+ "\u8EAC\uC9DD\u8EAC\uC9DE\u8EAC\uC9DF\u8EAC\uC9E0\u8EAC\uC9E1" + // 2765 - 2769
+ "\u8EAC\uC9E2\u8EAC\uC9E3\u8EAC\uC9E4\u8EAC\uC9E5\u8EAC\uC9E6" + // 2770 - 2774
+ "\u8EAC\uC9E7\u8EAC\uC9E8\u8EAC\uC9E9\u8EAC\uC9EA\u8EAC\uC9EB" + // 2775 - 2779
+ "\u8EAC\uC9EC\u8EAC\uC9ED\u8EAC\uC9EE\u8EAC\uC9EF\u8EAC\uC9F0" + // 2780 - 2784
+ "\u8EAC\uC8CF\u8EAC\uC8D0\u8EAC\uC8D1\u8EAC\uC8D2\u8EAC\uC8D3" + // 2785 - 2789
+ "\u8EAC\uC8D4\u8EAC\uC8D5\u8EAC\uC8D6\u8EAC\uC8D7\u8EAC\uC8D8" + // 2790 - 2794
+ "\u8EAC\uC8D9\u8EAC\uC8DA\u8EAC\uC8DB\u8EAC\uC8DC\u8EAC\uC8DD" + // 2795 - 2799
+ "\u8EAC\uC8DE\u8EAC\uC8DF\u8EAC\uC8E0\u8EAC\uC8E1\u8EAC\uC8E2" + // 2800 - 2804
+ "\u8EAC\uC8E3\u8EAC\uC8E4\u8EAC\uC8E5\u8EAC\uC8E6\u8EAC\uC8E7" + // 2805 - 2809
+ "\u8EAC\uC8E8\u8EAC\uC8E9\u8EAC\uC8EA\u8EAC\uC8EB\u8EAC\uC8EC" + // 2810 - 2814
+ "\u8EAC\uC8ED\u8EAC\uC8EE\u8EAC\uC8EF\u8EAC\uC8F0\u8EAC\uC8F1" + // 2815 - 2819
+ "\u8EAC\uC8F2\u8EAC\uC8F3\u8EAC\uC8F4\u8EAC\uC8F5\u8EAC\uC8F6" + // 2820 - 2824
+ "\u8EAC\uC8F7\u8EAC\uC8F8\u8EAC\uC8F9\u8EAC\uC8FA\u8EAC\uC8FB" + // 2825 - 2829
+ "\u8EAC\uC8FC\u8EAC\uC8FD\u8EAC\uC8FE\u8EAC\uC9A1\u8EAC\uC9A2" + // 2830 - 2834
+ "\u8EAC\uC9A3\u8EAC\uC9A4\u8EAC\uC9A5\u8EAC\uC9A6\u8EAC\uC9A7" + // 2835 - 2839
+ "\u8EAC\uC9A8\u8EAC\uC9A9\u8EAC\uC9AA\u8EAC\uC9AB\u8EAC\uC9AC" + // 2840 - 2844
+ "\u8EAC\uC9AD\u8EAC\uC9AE\u8EAC\uC9AF\u8EAC\uC9B0\u8EAC\uC7ED" + // 2845 - 2849
+ "\u8EAC\uC7EE\u8EAC\uC7EF\u8EAC\uC7F0\u8EAC\uC7F1\u8EAC\uC7F2" + // 2850 - 2854
+ "\u8EAC\uC7F3\u8EAC\uC7F4\u8EAC\uC7F5\u8EAC\uC7F6\u8EAC\uC7F7" + // 2855 - 2859
+ "\u8EAC\uC7F8\u8EAC\uC7F9\u8EAC\uC7FA\u8EAC\uC7FB\u8EAC\uC7FC" + // 2860 - 2864
+ "\u8EAC\uC7FD\u8EAC\uC7FE\u8EAC\uC8A1\u8EAC\uC8A2\u8EAC\uC8A3" + // 2865 - 2869
+ "\u8EAC\uC8A4\u8EAC\uC8A5\u8EAC\uC8A6\u8EAC\uC8A7\u8EAC\uC8A8" + // 2870 - 2874
+ "\u8EAC\uC8A9\u8EAC\uC8AA\u8EAC\uC8AB\u8EAC\uC8AC\u8EAC\uC8AD" + // 2875 - 2879
+ "\u8EAC\uC8AE\u8EAC\uC8AF\u8EAC\uC8B0\u8EAC\uC8B1\u8EAC\uC8B2" + // 2880 - 2884
+ "\u8EAC\uC8B3\u8EAC\uC8B4\u8EAC\uC8B5\u8EAC\uC8B6\u8EAC\uC8B7" + // 2885 - 2889
+ "\u8EAC\uC8B8\u8EAC\uC8B9\u8EAC\uC8BA\u8EAC\uC8BB\u8EAC\uC8BC" + // 2890 - 2894
+ "\u8EAC\uC8BD\u8EAC\uC8BE\u8EAC\uC8BF\u8EAC\uC8C0\u8EAC\uC8C1" + // 2895 - 2899
+ "\u8EAC\uC8C2\u8EAC\uC8C3\u8EAC\uC8C4\u8EAC\uC8C5\u8EAC\uC8C6" + // 2900 - 2904
+ "\u8EAC\uC8C7\u8EAC\uC8C8\u8EAC\uC8C9\u8EAC\uC8CA\u8EAC\uC8CB" + // 2905 - 2909
+ "\u8EAC\uC8CC\u8EAC\uC8CD\u8EAC\uC8CE\u8EAC\uC7AD\u8EAC\uC7AE" + // 2910 - 2914
+ "\u8EAC\uC7AF\u8EAC\uC7B0\u8EAC\uC7B1\u8EAC\uC7B2\u8EAC\uC7B3" + // 2915 - 2919
+ "\u8EAC\uC7B4\u8EAC\uC7B5\u8EAC\uC7B6\u8EAC\uC7B7\u8EAC\uC7B8" + // 2920 - 2924
+ "\u8EAC\uC7B9\u8EAC\uC7BA\u8EAC\uC7BB\u8EAC\uC7BC\u8EAC\uC7BD" + // 2925 - 2929
+ "\u8EAC\uC7BE\u8EAC\uC7BF\u8EAC\uC7C0\u8EAC\uC7C1\u8EAC\uC7C2" + // 2930 - 2934
+ "\u8EAC\uC7C3\u8EAC\uC7C4\u8EAC\uC7C5\u8EAC\uC7C6\u8EAC\uC7C7" + // 2935 - 2939
+ "\u8EAC\uC7C8\u8EAC\uC7C9\u8EAC\uC7CA\u8EAC\uC7CB\u8EAC\uC7CC" + // 2940 - 2944
+ "\u8EAC\uC7CD\u8EAC\uC7CE\u8EAC\uC7CF\u8EAC\uC7D0\u8EAC\uC7D1" + // 2945 - 2949
+ "\u8EAC\uC7D2\u8EAC\uC7D3\u8EAC\uC7D4\u8EAC\uC7D5\u8EAC\uC7D6" + // 2950 - 2954
+ "\u8EAC\uC7D7\u8EAC\uC7D8\u8EAC\uC7D9\u8EAC\uC7DA\u8EAC\uC7DB" + // 2955 - 2959
+ "\u8EAC\uC7DC\u8EAC\uC7DD\u8EAC\uC7DE\u8EAC\uC7DF\u8EAC\uC7E0" + // 2960 - 2964
+ "\u8EAC\uC7E1\u8EAC\uC7E2\u8EAC\uC7E3\u8EAC\uC7E4\u8EAC\uC7E5" + // 2965 - 2969
+ "\u8EAC\uC7E6\u8EAC\uC7E7\u8EAC\uC7E8\u8EAC\uC7E9\u8EAC\uC7EA" + // 2970 - 2974
+ "\u8EAC\uC7EB\u8EAC\uC7EC\u8EAC\uC6CB\u8EAC\uC6CC\u8EAC\uC6CD" + // 2975 - 2979
+ "\u8EAC\uC6CE\u8EAC\uC6CF\u8EAC\uC6D0\u8EAC\uC6D1\u8EAC\uC6D2" + // 2980 - 2984
+ "\u8EAC\uC6D3\u8EAC\uC6D4\u8EAC\uC6D5\u8EAC\uC6D6\u8EAC\uC6D7" + // 2985 - 2989
+ "\u8EAC\uC6D8\u8EAC\uC6D9\u8EAC\uC6DA\u8EAC\uC6DB\u8EAC\uC6DC" + // 2990 - 2994
+ "\u8EAC\uC6DD\u8EAC\uC6DE\u8EAC\uC6DF\u8EAC\uC6E0\u8EAC\uC6E1" + // 2995 - 2999
+ "\u8EAC\uC6E2\u8EAC\uC6E3\u8EAC\uC6E4\u8EAC\uC6E5\u8EAC\uC6E6" + // 3000 - 3004
+ "\u8EAC\uC6E7\u8EAC\uC6E8\u8EAC\uC6E9\u8EAC\uC6EA\u8EAC\uC6EB" + // 3005 - 3009
+ "\u8EAC\uC6EC\u8EAC\uC6ED\u8EAC\uC6EE\u8EAC\uC6EF\u8EAC\uC6F0" + // 3010 - 3014
+ "\u8EAC\uC6F1\u8EAC\uC6F2\u8EAC\uC6F3\u8EAC\uC6F4\u8EAC\uC6F5" + // 3015 - 3019
+ "\u8EAC\uC6F6\u8EAC\uC6F7\u8EAC\uC6F8\u8EAC\uC6F9\u8EAC\uC6FA" + // 3020 - 3024
+ "\u8EAC\uC6FB\u8EAC\uC6FC\u8EAC\uC6FD\u8EAC\uC6FE\u8EAC\uC7A1" + // 3025 - 3029
+ "\u8EAC\uC7A2\u8EAC\uC7A3\u8EAC\uC7A4\u8EAC\uC7A5\u8EAC\uC7A6" + // 3030 - 3034
+ "\u8EAC\uC7A7\u8EAC\uC7A8\u8EAC\uC7A9\u8EAC\uC7AA\u8EAC\uC7AB" + // 3035 - 3039
+ "\u8EAC\uC7AC\u8EAC\uC5E9\u8EAC\uC5EA\u8EAC\uC5EB\u8EAC\uC5EC" + // 3040 - 3044
+ "\u8EAC\uC5ED\u8EAC\uC5EE\u8EAC\uC5EF\u8EAC\uC5F0\u8EAC\uC5F1" + // 3045 - 3049
+ "\u8EAC\uC5F2\u8EAC\uC5F3\u8EAC\uC5F4\u8EAC\uC5F5\u8EAC\uC5F6" + // 3050 - 3054
+ "\u8EAC\uC5F7\u8EAC\uC5F8\u8EAC\uC5F9\u8EAC\uC5FA\u8EAC\uC5FB" + // 3055 - 3059
+ "\u8EAC\uC5FC\u8EAC\uC5FD\u8EAC\uC5FE\u8EAC\uC6A1\u8EAC\uC6A2" + // 3060 - 3064
+ "\u8EAC\uC6A3\u8EAC\uC6A4\u8EAC\uC6A5\u8EAC\uC6A6\u8EAC\uC6A7" + // 3065 - 3069
+ "\u8EAC\uC6A8\u8EAC\uC6A9\u8EAC\uC6AA\u8EAC\uC6AB\u8EAC\uC6AC" + // 3070 - 3074
+ "\u8EAC\uC6AD\u8EAC\uC6AE\u8EAC\uC6AF\u8EAC\uC6B0\u8EAC\uC6B1" + // 3075 - 3079
+ "\u8EAC\uC6B2\u8EAC\uC6B3\u8EAC\uC6B4\u8EAC\uC6B5\u8EAC\uC6B6" + // 3080 - 3084
+ "\u8EAC\uC6B7\u8EAC\uC6B8\u8EAC\uC6B9\u8EAC\uC6BA\u8EAC\uC6BB" + // 3085 - 3089
+ "\u8EAC\uC6BC\u8EAC\uC6BD\u8EAC\uC6BE\u8EAC\uC6BF\u8EAC\uC6C0" + // 3090 - 3094
+ "\u8EAC\uC6C1\u8EAC\uC6C2\u8EAC\uC6C3\u8EAC\uC6C4\u8EAC\uC6C5" + // 3095 - 3099
+ "\u8EAC\uC6C6\u8EAC\uC6C7\u8EAC\uC6C8\u8EAC\uC6C9\u8EAC\uC6CA" + // 3100 - 3104
+ "\u8EAC\uC5A9\u8EAC\uC5AA\u8EAC\uC5AB\u8EAC\uC5AC\u8EAC\uC5AD" + // 3105 - 3109
+ "\u8EAC\uC5AE\u8EAC\uC5AF\u8EAC\uC5B0\u8EAC\uC5B1\u8EAC\uC5B2" + // 3110 - 3114
+ "\u8EAC\uC5B3\u8EAC\uC5B4\u8EAC\uC5B5\u8EAC\uC5B6\u8EAC\uC5B7" + // 3115 - 3119
+ "\u8EAC\uC5B8\u8EAC\uC5B9\u8EAC\uC5BA\u8EAC\uC5BB\u8EAC\uC5BC" + // 3120 - 3124
+ "\u8EAC\uC5BD\u8EAC\uC5BE\u8EAC\uC5BF\u8EAC\uC5C0\u8EAC\uC5C1" + // 3125 - 3129
+ "\u8EAC\uC5C2\u8EAC\uC5C3\u8EAC\uC5C4\u8EAC\uC5C5\u8EAC\uC5C6" + // 3130 - 3134
+ "\u8EAC\uC5C7\u8EAC\uC5C8\u8EAC\uC5C9\u8EAC\uC5CA\u8EAC\uC5CB" + // 3135 - 3139
+ "\u8EAC\uC5CC\u8EAC\uC5CD\u8EAC\uC5CE\u8EAC\uC5CF\u8EAC\uC5D0" + // 3140 - 3144
+ "\u8EAC\uC5D1\u8EAC\uC5D2\u8EAC\uC5D3\u8EAC\uC5D4\u8EAC\uC5D5" + // 3145 - 3149
+ "\u8EAC\uC5D6\u8EAC\uC5D7\u8EAC\uC5D8\u8EAC\uC5D9\u8EAC\uC5DA" + // 3150 - 3154
+ "\u8EAC\uC5DB\u8EAC\uC5DC\u8EAC\uC5DD\u8EAC\uC5DE\u8EAC\uC5DF" + // 3155 - 3159
+ "\u8EAC\uC5E0\u8EAC\uC5E1\u8EAC\uC5E2\u8EAC\uC5E3\u8EAC\uC5E4" + // 3160 - 3164
+ "\u8EAC\uC5E5\u8EAC\uC5E6\u8EAC\uC5E7\u8EAC\uC5E8\u8EAC\uC4C7" + // 3165 - 3169
+ "\u8EAC\uC4C8\u8EAC\uC4C9\u8EAC\uC4CA\u8EAC\uC4CB\u8EAC\uC4CC" + // 3170 - 3174
+ "\u8EAC\uC4CD\u8EAC\uC4CE\u8EAC\uC4CF\u8EAC\uC4D0\u8EAC\uC4D1" + // 3175 - 3179
+ "\u8EAC\uC4D2\u8EAC\uC4D3\u8EAC\uC4D4\u8EAC\uC4D5\u8EAC\uC4D6" + // 3180 - 3184
+ "\u8EAC\uC4D7\u8EAC\uC4D8\u8EAC\uC4D9\u8EAC\uC4DA\u8EAC\uC4DB" + // 3185 - 3189
+ "\u8EAC\uC4DC\u8EAC\uC4DD\u8EAC\uC4DE\u8EAC\uC4DF\u8EAC\uC4E0" + // 3190 - 3194
+ "\u8EAC\uC4E1\u8EAC\uC4E2\u8EAC\uC4E3\u8EAC\uC4E4\u8EAC\uC4E5" + // 3195 - 3199
+ "\u8EAC\uC4E6\u8EAC\uC4E7\u8EAC\uC4E8\u8EAC\uC4E9\u8EAC\uC4EA" + // 3200 - 3204
+ "\u8EAC\uC4EB\u8EAC\uC4EC\u8EAC\uC4ED\u8EAC\uC4EE\u8EAC\uC4EF" + // 3205 - 3209
+ "\u8EAC\uC4F0\u8EAC\uC4F1\u8EAC\uC4F2\u8EAC\uC4F3\u8EAC\uC4F4" + // 3210 - 3214
+ "\u8EAC\uC4F5\u8EAC\uC4F6\u8EAC\uC4F7\u8EAC\uC4F8\u8EAC\uC4F9" + // 3215 - 3219
+ "\u8EAC\uC4FA\u8EAC\uC4FB\u8EAC\uC4FC\u8EAC\uC4FD\u8EAC\uC4FE" + // 3220 - 3224
+ "\u8EAC\uC5A1\u8EAC\uC5A2\u8EAC\uC5A3\u8EAC\uC5A4\u8EAC\uC5A5" + // 3225 - 3229
+ "\u8EAC\uC5A6\u8EAC\uC5A7\u8EAC\uC5A8\u8EAC\uC3E5\u8EAC\uC3E6" + // 3230 - 3234
+ "\u8EAC\uC3E7\u8EAC\uC3E8\u8EAC\uC3E9\u8EAC\uC3EA\u8EAC\uC3EB" + // 3235 - 3239
+ "\u8EAC\uC3EC\u8EAC\uC3ED\u8EAC\uC3EE\u8EAC\uC3EF\u8EAC\uC3F0" + // 3240 - 3244
+ "\u8EAC\uC3F1\u8EAC\uC3F2\u8EAC\uC3F3\u8EAC\uC3F4\u8EAC\uC3F5" + // 3245 - 3249
+ "\u8EAC\uC3F6\u8EAC\uC3F7\u8EAC\uC3F8\u8EAC\uC3F9\u8EAC\uC3FA" + // 3250 - 3254
+ "\u8EAC\uC3FB\u8EAC\uC3FC\u8EAC\uC3FD\u8EAC\uC3FE\u8EAC\uC4A1" + // 3255 - 3259
+ "\u8EAC\uC4A2\u8EAC\uC4A3\u8EAC\uC4A4\u8EAC\uC4A5\u8EAC\uC4A6" + // 3260 - 3264
+ "\u8EAC\uC4A7\u8EAC\uC4A8\u8EAC\uC4A9\u8EAC\uC4AA\u8EAC\uC4AB" + // 3265 - 3269
+ "\u8EAC\uC4AC\u8EAC\uC4AD\u8EAC\uC4AE\u8EAC\uC4AF\u8EAC\uC4B0" + // 3270 - 3274
+ "\u8EAC\uC4B1\u8EAC\uC4B2\u8EAC\uC4B3\u8EAC\uC4B4\u8EAC\uC4B5" + // 3275 - 3279
+ "\u8EAC\uC4B6\u8EAC\uC4B7\u8EAC\uC4B8\u8EAC\uC4B9\u8EAC\uC4BA" + // 3280 - 3284
+ "\u8EAC\uC4BB\u8EAC\uC4BC\u8EAC\uC4BD\u8EAC\uC4BE\u8EAC\uC4BF" + // 3285 - 3289
+ "\u8EAC\uC4C0\u8EAC\uC4C1\u8EAC\uC4C2\u8EAC\uC4C3\u8EAC\uC4C4" + // 3290 - 3294
+ "\u8EAC\uC4C5\u8EAC\uC4C6\u8EAC\uC3A5\u8EAC\uC3A6\u8EAC\uC3A7" + // 3295 - 3299
+ "\u8EAC\uC3A8\u8EAC\uC3A9\u8EAC\uC3AA\u8EAC\uC3AB\u8EAC\uC3AC" + // 3300 - 3304
+ "\u8EAC\uC3AD\u8EAC\uC3AE\u8EAC\uC3AF\u8EAC\uC3B0\u8EAC\uC3B1" + // 3305 - 3309
+ "\u8EAC\uC3B2\u8EAC\uC3B3\u8EAC\uC3B4\u8EAC\uC3B5\u8EAC\uC3B6" + // 3310 - 3314
+ "\u8EAC\uC3B7\u8EAC\uC3B8\u8EAC\uC3B9\u8EAC\uC3BA\u8EAC\uC3BB" + // 3315 - 3319
+ "\u8EAC\uC3BC\u8EAC\uC3BD\u8EAC\uC3BE\u8EAC\uC3BF\u8EAC\uC3C0" + // 3320 - 3324
+ "\u8EAC\uC3C1\u8EAC\uC3C2\u8EAC\uC3C3\u8EAC\uC3C4\u8EAC\uC3C5" + // 3325 - 3329
+ "\u8EAC\uC3C6\u8EAC\uC3C7\u8EAC\uC3C8\u8EAC\uC3C9\u8EAC\uC3CA" + // 3330 - 3334
+ "\u8EAC\uC3CB\u8EAC\uC3CC\u8EAC\uC3CD\u8EAC\uC3CE\u8EAC\uC3CF" + // 3335 - 3339
+ "\u8EAC\uC3D0\u8EAC\uC3D1\u8EAC\uC3D2\u8EAC\uC3D3\u8EAC\uC3D4" + // 3340 - 3344
+ "\u8EAC\uC3D5\u8EAC\uC3D6\u8EAC\uC3D7\u8EAC\uC3D8\u8EAC\uC3D9" + // 3345 - 3349
+ "\u8EAC\uC3DA\u8EAC\uC3DB\u8EAC\uC3DC\u8EAC\uC3DD\u8EAC\uC3DE" + // 3350 - 3354
+ "\u8EAC\uC3DF\u8EAC\uC3E0\u8EAC\uC3E1\u8EAC\uC3E2\u8EAC\uC3E3" + // 3355 - 3359
+ "\u8EAC\uC3E4\u8EAC\uC2C3\u8EAC\uC2C4\u8EAC\uC2C5\u8EAC\uC2C6" + // 3360 - 3364
+ "\u8EAC\uC2C7\u8EAC\uC2C8\u8EAC\uC2C9\u8EAC\uC2CA\u8EAC\uC2CB" + // 3365 - 3369
+ "\u8EAC\uC2CC\u8EAC\uC2CD\u8EAC\uC2CE\u8EAC\uC2CF\u8EAC\uC2D0" + // 3370 - 3374
+ "\u8EAC\uC2D1\u8EAC\uC2D2\u8EAC\uC2D3\u8EAC\uC2D4\u8EAC\uC2D5" + // 3375 - 3379
+ "\u8EAC\uC2D6\u8EAC\uC2D7\u8EAC\uC2D8\u8EAC\uC2D9\u8EAC\uC2DA" + // 3380 - 3384
+ "\u8EAC\uC2DB\u8EAC\uC2DC\u8EAC\uC2DD\u8EAC\uC2DE\u8EAC\uC2DF" + // 3385 - 3389
+ "\u8EAC\uC2E0\u8EAC\uC2E1\u8EAC\uC2E2\u8EAC\uC2E3\u8EAC\uC2E4" + // 3390 - 3394
+ "\u8EAC\uC2E5\u8EAC\uC2E6\u8EAC\uC2E7\u8EAC\uC2E8\u8EAC\uC2E9" + // 3395 - 3399
+ "\u8EAC\uC2EA\u8EAC\uC2EB\u8EAC\uC2EC\u8EAC\uC2ED\u8EAC\uC2EE" + // 3400 - 3404
+ "\u8EAC\uC2EF\u8EAC\uC2F0\u8EAC\uC2F1\u8EAC\uC2F2\u8EAC\uC2F3" + // 3405 - 3409
+ "\u8EAC\uC2F4\u8EAC\uC2F5\u8EAC\uC2F6\u8EAC\uC2F7\u8EAC\uC2F8" + // 3410 - 3414
+ "\u8EAC\uC2F9\u8EAC\uC2FA\u8EAC\uC2FB\u8EAC\uC2FC\u8EAC\uC2FD" + // 3415 - 3419
+ "\u8EAC\uC2FE\u8EAC\uC3A1\u8EAC\uC3A2\u8EAC\uC3A3\u8EAC\uC3A4" + // 3420 - 3424
+ "\u8EAC\uC1E1\u8EAC\uC1E2\u8EAC\uC1E3\u8EAC\uC1E4\u8EAC\uC1E5" + // 3425 - 3429
+ "\u8EAC\uC1E6\u8EAC\uC1E7\u8EAC\uC1E8\u8EAC\uC1E9\u8EAC\uC1EA" + // 3430 - 3434
+ "\u8EAC\uC1EB\u8EAC\uC1EC\u8EAC\uC1ED\u8EAC\uC1EE\u8EAC\uC1EF" + // 3435 - 3439
+ "\u8EAC\uC1F0\u8EAC\uC1F1\u8EAC\uC1F2\u8EAC\uC1F3\u8EAC\uC1F4" + // 3440 - 3444
+ "\u8EAC\uC1F5\u8EAC\uC1F6\u8EAC\uC1F7\u8EAC\uC1F8\u8EAC\uC1F9" + // 3445 - 3449
+ "\u8EAC\uC1FA\u8EAC\uC1FB\u8EAC\uC1FC\u8EAC\uC1FD\u8EAC\uC1FE" + // 3450 - 3454
+ "\u8EAC\uC2A1\u8EAC\uC2A2\u8EAC\uC2A3\u8EAC\uC2A4\u8EAC\uC2A5" + // 3455 - 3459
+ "\u8EAC\uC2A6\u8EAC\uC2A7\u8EAC\uC2A8\u8EAC\uC2A9\u8EAC\uC2AA" + // 3460 - 3464
+ "\u8EAC\uC2AB\u8EAC\uC2AC\u8EAC\uC2AD\u8EAC\uC2AE\u8EAC\uC2AF" + // 3465 - 3469
+ "\u8EAC\uC2B0\u8EAC\uC2B1\u8EAC\uC2B2\u8EAC\uC2B3\u8EAC\uC2B4" + // 3470 - 3474
+ "\u8EAC\uC2B5\u8EAC\uC2B6\u8EAC\uC2B7\u8EAC\uC2B8\u8EAC\uC2B9" + // 3475 - 3479
+ "\u8EAC\uC2BA\u8EAC\uC2BB\u8EAC\uC2BC\u8EAC\uC2BD\u8EAC\uC2BE" + // 3480 - 3484
+ "\u8EAC\uC2BF\u8EAC\uC2C0\u8EAC\uC2C1\u8EAC\uC2C2\u8EAC\uC1A1" + // 3485 - 3489
+ "\u8EAC\uC1A2\u8EAC\uC1A3\u8EAC\uC1A4\u8EAC\uC1A5\u8EAC\uC1A6" + // 3490 - 3494
+ "\u8EAC\uC1A7\u8EAC\uC1A8\u8EAC\uC1A9\u8EAC\uC1AA\u8EAC\uC1AB" + // 3495 - 3499
+ "\u8EAC\uC1AC\u8EAC\uC1AD\u8EAC\uC1AE\u8EAC\uC1AF\u8EAC\uC1B0" + // 3500 - 3504
+ "\u8EAC\uC1B1\u8EAC\uC1B2\u8EAC\uC1B3\u8EAC\uC1B4\u8EAC\uC1B5" + // 3505 - 3509
+ "\u8EAC\uC1B6\u8EAC\uC1B7\u8EAC\uC1B8\u8EAC\uC1B9\u8EAC\uC1BA" + // 3510 - 3514
+ "\u8EAC\uC1BB\u8EAC\uC1BC\u8EAC\uC1BD\u8EAC\uC1BE\u8EAC\uC1BF" + // 3515 - 3519
+ "\u8EAC\uC1C0\u8EAC\uC1C1\u8EAC\uC1C2\u8EAC\uC1C3\u8EAC\uC1C4" + // 3520 - 3524
+ "\u8EAC\uC1C5\u8EAC\uC1C6\u8EAC\uC1C7\u8EAC\uC1C8\u8EAC\uC1C9" + // 3525 - 3529
+ "\u8EAC\uC1CA\u8EAC\uC1CB\u8EAC\uC1CC\u8EAC\uC1CD\u8EAC\uC1CE" + // 3530 - 3534
+ "\u8EAC\uC1CF\u8EAC\uC1D0\u8EAC\uC1D1\u8EAC\uC1D2\u8EAC\uC1D3" + // 3535 - 3539
+ "\u8EAC\uC1D4\u8EAC\uC1D5\u8EAC\uC1D6\u8EAC\uC1D7\u8EAC\uC1D8" + // 3540 - 3544
+ "\u8EAC\uC1D9\u8EAC\uC1DA\u8EAC\uC1DB\u8EAC\uC1DC\u8EAC\uC1DD" + // 3545 - 3549
+ "\u8EAC\uC1DE\u8EAC\uC1DF\u8EAC\uC1E0\u8EAC\uC0BF\u8EAC\uC0C0" + // 3550 - 3554
+ "\u8EAC\uC0C1\u8EAC\uC0C2\u8EAC\uC0C3\u8EAC\uC0C4\u8EAC\uC0C5" + // 3555 - 3559
+ "\u8EAC\uC0C6\u8EAC\uC0C7\u8EAC\uC0C8\u8EAC\uC0C9\u8EAC\uC0CA" + // 3560 - 3564
+ "\u8EAC\uC0CB\u8EAC\uC0CC\u8EAC\uC0CD\u8EAC\uC0CE\u8EAC\uC0CF" + // 3565 - 3569
+ "\u8EAC\uC0D0\u8EAC\uC0D1\u8EAC\uC0D2\u8EAC\uC0D3\u8EAC\uC0D4" + // 3570 - 3574
+ "\u8EAC\uC0D5\u8EAC\uC0D6\u8EAC\uC0D7\u8EAC\uC0D8\u8EAC\uC0D9" + // 3575 - 3579
+ "\u8EAC\uC0DA\u8EAC\uC0DB\u8EAC\uC0DC\u8EAC\uC0DD\u8EAC\uC0DE" + // 3580 - 3584
+ "\u8EAC\uC0DF\u8EAC\uC0E0\u8EAC\uC0E1\u8EAC\uC0E2\u8EAC\uC0E3" + // 3585 - 3589
+ "\u8EAC\uC0E4\u8EAC\uC0E5\u8EAC\uC0E6\u8EAC\uC0E7\u8EAC\uC0E8" + // 3590 - 3594
+ "\u8EAC\uC0E9\u8EAC\uC0EA\u8EAC\uC0EB\u8EAC\uC0EC\u8EAC\uC0ED" + // 3595 - 3599
+ "\u8EAC\uC0EE\u8EAC\uC0EF\u8EAC\uC0F0\u8EAC\uC0F1\u8EAC\uC0F2" + // 3600 - 3604
+ "\u8EAC\uC0F3\u8EAC\uC0F4\u8EAC\uC0F5\u8EAC\uC0F6\u8EAC\uC0F7" + // 3605 - 3609
+ "\u8EAC\uC0F8\u8EAC\uC0F9\u8EAC\uC0FA\u8EAC\uC0FB\u8EAC\uC0FC" + // 3610 - 3614
+ "\u8EAC\uC0FD\u8EAC\uC0FE\u8EAC\uBFDD\u8EAC\uBFDE\u8EAC\uBFDF" + // 3615 - 3619
+ "\u8EAC\uBFE0\u8EAC\uBFE1\u8EAC\uBFE2\u8EAC\uBFE3\u8EAC\uBFE4" + // 3620 - 3624
+ "\u8EAC\uBFE5\u8EAC\uBFE6\u8EAC\uBFE7\u8EAC\uBFE8\u8EAC\uBFE9" + // 3625 - 3629
+ "\u8EAC\uBFEA\u8EAC\uBFEB\u8EAC\uBFEC\u8EAC\uBFED\u8EAC\uBFEE" + // 3630 - 3634
+ "\u8EAC\uBFEF\u8EAC\uBFF0\u8EAC\uBFF1\u8EAC\uBFF2\u8EAC\uBFF3" + // 3635 - 3639
+ "\u8EAC\uBFF4\u8EAC\uBFF5\u8EAC\uBFF6\u8EAC\uBFF7\u8EAC\uBFF8" + // 3640 - 3644
+ "\u8EAC\uBFF9\u8EAC\uBFFA\u8EAC\uBFFB\u8EAC\uBFFC\u8EAC\uBFFD" + // 3645 - 3649
+ "\u8EAC\uBFFE\u8EAC\uC0A1\u8EAC\uC0A2\u8EAC\uC0A3\u8EAC\uC0A4" + // 3650 - 3654
+ "\u8EAC\uC0A5\u8EAC\uC0A6\u8EAC\uC0A7\u8EAC\uC0A8\u8EAC\uC0A9" + // 3655 - 3659
+ "\u8EAC\uC0AA\u8EAC\uC0AB\u8EAC\uC0AC\u8EAC\uC0AD\u8EAC\uC0AE" + // 3660 - 3664
+ "\u8EAC\uC0AF\u8EAC\uC0B0\u8EAC\uC0B1\u8EAC\uC0B2\u8EAC\uC0B3" + // 3665 - 3669
+ "\u8EAC\uC0B4\u8EAC\uC0B5\u8EAC\uC0B6\u8EAC\uC0B7\u8EAC\uC0B8" + // 3670 - 3674
+ "\u8EAC\uC0B9\u8EAC\uC0BA\u8EAC\uC0BB\u8EAC\uC0BC\u8EAC\uC0BD" + // 3675 - 3679
+ "\u8EAC\uC0BE\u8EAC\uBEFB\u8EAC\uBEFC\u8EAC\uBEFD\u8EAC\uBEFE" + // 3680 - 3684
+ "\u8EAC\uBFA1\u8EAC\uBFA2\u8EAC\uBFA3\u8EAC\uBFA4\u8EAC\uBFA5" + // 3685 - 3689
+ "\u8EAC\uBFA6\u8EAC\uBFA7\u8EAC\uBFA8\u8EAC\uBFA9\u8EAC\uBFAA" + // 3690 - 3694
+ "\u8EAC\uBFAB\u8EAC\uBFAC\u8EAC\uBFAD\u8EAC\uBFAE\u8EAC\uBFAF" + // 3695 - 3699
+ "\u8EAC\uBFB0\u8EAC\uBFB1\u8EAC\uBFB2\u8EAC\uBFB3\u8EAC\uBFB4" + // 3700 - 3704
+ "\u8EAC\uBFB5\u8EAC\uBFB6\u8EAC\uBFB7\u8EAC\uBFB8\u8EAC\uBFB9" + // 3705 - 3709
+ "\u8EAC\uBFBA\u8EAC\uBFBB\u8EAC\uBFBC\u8EAC\uBFBD\u8EAC\uBFBE" + // 3710 - 3714
+ "\u8EAC\uBFBF\u8EAC\uBFC0\u8EAC\uBFC1\u8EAC\uBFC2\u8EAC\uBFC3" + // 3715 - 3719
+ "\u8EAC\uBFC4\u8EAC\uBFC5\u8EAC\uBFC6\u8EAC\uBFC7\u8EAC\uBFC8" + // 3720 - 3724
+ "\u8EAC\uBFC9\u8EAC\uBFCA\u8EAC\uBFCB\u8EAC\uBFCC\u8EAC\uBFCD" + // 3725 - 3729
+ "\u8EAC\uBFCE\u8EAC\uBFCF\u8EAC\uBFD0\u8EAC\uBFD1\u8EAC\uBFD2" + // 3730 - 3734
+ "\u8EAC\uBFD3\u8EAC\uBFD4\u8EAC\uBFD5\u8EAC\uBFD6\u8EAC\uBFD7" + // 3735 - 3739
+ "\u8EAC\uBFD8\u8EAC\uBFD9\u8EAC\uBFDA\u8EAC\uBFDB\u8EAC\uBFDC" + // 3740 - 3744
+ "\u8EAC\uBEBB\u8EAC\uBEBC\u8EAC\uBEBD\u8EAC\uBEBE\u8EAC\uBEBF" + // 3745 - 3749
+ "\u8EAC\uBEC0\u8EAC\uBEC1\u8EAC\uBEC2\u8EAC\uBEC3\u8EAC\uBEC4" + // 3750 - 3754
+ "\u8EAC\uBEC5\u8EAC\uBEC6\u8EAC\uBEC7\u8EAC\uBEC8\u8EAC\uBEC9" + // 3755 - 3759
+ "\u8EAC\uBECA\u8EAC\uBECB\u8EAC\uBECC\u8EAC\uBECD\u8EAC\uBECE" + // 3760 - 3764
+ "\u8EAC\uBECF\u8EAC\uBED0\u8EAC\uBED1\u8EAC\uBED2\u8EAC\uBED3" + // 3765 - 3769
+ "\u8EAC\uBED4\u8EAC\uBED5\u8EAC\uBED6\u8EAC\uBED7\u8EAC\uBED8" + // 3770 - 3774
+ "\u8EAC\uBED9\u8EAC\uBEDA\u8EAC\uBEDB\u8EAC\uBEDC\u8EAC\uBEDD" + // 3775 - 3779
+ "\u8EAC\uBEDE\u8EAC\uBEDF\u8EAC\uBEE0\u8EAC\uBEE1\u8EAC\uBEE2" + // 3780 - 3784
+ "\u8EAC\uBEE3\u8EAC\uBEE4\u8EAC\uBEE5\u8EAC\uBEE6\u8EAC\uBEE7" + // 3785 - 3789
+ "\u8EAC\uBEE8\u8EAC\uBEE9\u8EAC\uBEEA\u8EAC\uBEEB\u8EAC\uBEEC" + // 3790 - 3794
+ "\u8EAC\uBEED\u8EAC\uBEEE\u8EAC\uBEEF\u8EAC\uBEF0\u8EAC\uBEF1" + // 3795 - 3799
+ "\u8EAC\uBEF2\u8EAC\uBEF3\u8EAC\uBEF4\u8EAC\uBEF5\u8EAC\uBEF6" + // 3800 - 3804
+ "\u8EAC\uBEF7\u8EAC\uBEF8\u8EAC\uBEF9\u8EAC\uBEFA\u8EAC\uBDD9" + // 3805 - 3809
+ "\u8EAC\uBDDA\u8EAC\uBDDB\u8EAC\uBDDC\u8EAC\uBDDD\u8EAC\uBDDE" + // 3810 - 3814
+ "\u8EAC\uBDDF\u8EAC\uBDE0\u8EAC\uBDE1\u8EAC\uBDE2\u8EAC\uBDE3" + // 3815 - 3819
+ "\u8EAC\uBDE4\u8EAC\uBDE5\u8EAC\uBDE6\u8EAC\uBDE7\u8EAC\uBDE8" + // 3820 - 3824
+ "\u8EAC\uBDE9\u8EAC\uBDEA\u8EAC\uBDEB\u8EAC\uBDEC\u8EAC\uBDED" + // 3825 - 3829
+ "\u8EAC\uBDEE\u8EAC\uBDEF\u8EAC\uBDF0\u8EAC\uBDF1\u8EAC\uBDF2" + // 3830 - 3834
+ "\u8EAC\uBDF3\u8EAC\uBDF4\u8EAC\uBDF5\u8EAC\uBDF6\u8EAC\uBDF7" + // 3835 - 3839
+ "\u8EAC\uBDF8\u8EAC\uBDF9\u8EAC\uBDFA\u8EAC\uBDFB\u8EAC\uBDFC" + // 3840 - 3844
+ "\u8EAC\uBDFD\u8EAC\uBDFE\u8EAC\uBEA1\u8EAC\uBEA2\u8EAC\uBEA3" + // 3845 - 3849
+ "\u8EAC\uBEA4\u8EAC\uBEA5\u8EAC\uBEA6\u8EAC\uBEA7\u8EAC\uBEA8" + // 3850 - 3854
+ "\u8EAC\uBEA9\u8EAC\uBEAA\u8EAC\uBEAB\u8EAC\uBEAC\u8EAC\uBEAD" + // 3855 - 3859
+ "\u8EAC\uBEAE\u8EAC\uBEAF\u8EAC\uBEB0\u8EAC\uBEB1\u8EAC\uBEB2" + // 3860 - 3864
+ "\u8EAC\uBEB3\u8EAC\uBEB4\u8EAC\uBEB5\u8EAC\uBEB6\u8EAC\uBEB7" + // 3865 - 3869
+ "\u8EAC\uBEB8\u8EAC\uBEB9\u8EAC\uBEBA\u8EAC\uBCF7\u8EAC\uBCF8" + // 3870 - 3874
+ "\u8EAC\uBCF9\u8EAC\uBCFA\u8EAC\uBCFB\u8EAC\uBCFC\u8EAC\uBCFD" + // 3875 - 3879
+ "\u8EAC\uBCFE\u8EAC\uBDA1\u8EAC\uBDA2\u8EAC\uBDA3\u8EAC\uBDA4" + // 3880 - 3884
+ "\u8EAC\uBDA5\u8EAC\uBDA6\u8EAC\uBDA7\u8EAC\uBDA8\u8EAC\uBDA9" + // 3885 - 3889
+ "\u8EAC\uBDAA\u8EAC\uBDAB\u8EAC\uBDAC\u8EAC\uBDAD\u8EAC\uBDAE" + // 3890 - 3894
+ "\u8EAC\uBDAF\u8EAC\uBDB0\u8EAC\uBDB1\u8EAC\uBDB2\u8EAC\uBDB3" + // 3895 - 3899
+ "\u8EAC\uBDB4\u8EAC\uBDB5\u8EAC\uBDB6\u8EAC\uBDB7\u8EAC\uBDB8" + // 3900 - 3904
+ "\u8EAC\uBDB9\u8EAC\uBDBA\u8EAC\uBDBB\u8EAC\uBDBC\u8EAC\uBDBD" + // 3905 - 3909
+ "\u8EAC\uBDBE\u8EAC\uBDBF\u8EAC\uBDC0\u8EAC\uBDC1\u8EAC\uBDC2" + // 3910 - 3914
+ "\u8EAC\uBDC3\u8EAC\uBDC4\u8EAC\uBDC5\u8EAC\uBDC6\u8EAC\uBDC7" + // 3915 - 3919
+ "\u8EAC\uBDC8\u8EAC\uBDC9\u8EAC\uBDCA\u8EAC\uBDCB\u8EAC\uBDCC" + // 3920 - 3924
+ "\u8EAC\uBDCD\u8EAC\uBDCE\u8EAC\uBDCF\u8EAC\uBDD0\u8EAC\uBDD1" + // 3925 - 3929
+ "\u8EAC\uBDD2\u8EAC\uBDD3\u8EAC\uBDD4\u8EAC\uBDD5\u8EAC\uBDD6" + // 3930 - 3934
+ "\u8EAC\uBDD7\u8EAC\uBDD8\u8EAC\uBCB7\u8EAC\uBCB8\u8EAC\uBCB9" + // 3935 - 3939
+ "\u8EAC\uBCBA\u8EAC\uBCBB\u8EAC\uBCBC\u8EAC\uBCBD\u8EAC\uBCBE" + // 3940 - 3944
+ "\u8EAC\uBCBF\u8EAC\uBCC0\u8EAC\uBCC1\u8EAC\uBCC2\u8EAC\uBCC3" + // 3945 - 3949
+ "\u8EAC\uBCC4\u8EAC\uBCC5\u8EAC\uBCC6\u8EAC\uBCC7\u8EAC\uBCC8" + // 3950 - 3954
+ "\u8EAC\uBCC9\u8EAC\uBCCA\u8EAC\uBCCB\u8EAC\uBCCC\u8EAC\uBCCD" + // 3955 - 3959
+ "\u8EAC\uBCCE\u8EAC\uBCCF\u8EAC\uBCD0\u8EAC\uBCD1\u8EAC\uBCD2" + // 3960 - 3964
+ "\u8EAC\uBCD3\u8EAC\uBCD4\u8EAC\uBCD5\u8EAC\uBCD6\u8EAC\uBCD7" + // 3965 - 3969
+ "\u8EAC\uBCD8\u8EAC\uBCD9\u8EAC\uBCDA\u8EAC\uBCDB\u8EAC\uBCDC" + // 3970 - 3974
+ "\u8EAC\uBCDD\u8EAC\uBCDE\u8EAC\uBCDF\u8EAC\uBCE0\u8EAC\uBCE1" + // 3975 - 3979
+ "\u8EAC\uBCE2\u8EAC\uBCE3\u8EAC\uBCE4\u8EAC\uBCE5\u8EAC\uBCE6" + // 3980 - 3984
+ "\u8EAC\uBCE7\u8EAC\uBCE8\u8EAC\uBCE9\u8EAC\uBCEA\u8EAC\uBCEB" + // 3985 - 3989
+ "\u8EAC\uBCEC\u8EAC\uBCED\u8EAC\uBCEE\u8EAC\uBCEF\u8EAC\uBCF0" + // 3990 - 3994
+ "\u8EAC\uBCF1\u8EAC\uBCF2\u8EAC\uBCF3\u8EAC\uBCF4\u8EAC\uBCF5" + // 3995 - 3999
+ "\u8EAC\uBCF6\u8EAC\uBBD5\u8EAC\uBBD6\u8EAC\uBBD7\u8EAC\uBBD8" + // 4000 - 4004
+ "\u8EAC\uBBD9\u8EAC\uBBDA\u8EAC\uBBDB\u8EAC\uBBDC\u8EAC\uBBDD" + // 4005 - 4009
+ "\u8EAC\uBBDE\u8EAC\uBBDF\u8EAC\uBBE0\u8EAC\uBBE1\u8EAC\uBBE2" + // 4010 - 4014
+ "\u8EAC\uBBE3\u8EAC\uBBE4\u8EAC\uBBE5\u8EAC\uBBE6\u8EAC\uBBE7" + // 4015 - 4019
+ "\u8EAC\uBBE8\u8EAC\uBBE9\u8EAC\uBBEA\u8EAC\uBBEB\u8EAC\uBBEC" + // 4020 - 4024
+ "\u8EAC\uBBED\u8EAC\uBBEE\u8EAC\uBBEF\u8EAC\uBBF0\u8EAC\uBBF1" + // 4025 - 4029
+ "\u8EAC\uBBF2\u8EAC\uBBF3\u8EAC\uBBF4\u8EAC\uBBF5\u8EAC\uBBF6" + // 4030 - 4034
+ "\u8EAC\uBBF7\u8EAC\uBBF8\u8EAC\uBBF9\u8EAC\uBBFA\u8EAC\uBBFB" + // 4035 - 4039
+ "\u8EAC\uBBFC\u8EAC\uBBFD\u8EAC\uBBFE\u8EAC\uBCA1\u8EAC\uBCA2" + // 4040 - 4044
+ "\u8EAC\uBCA3\u8EAC\uBCA4\u8EAC\uBCA5\u8EAC\uBCA6\u8EAC\uBCA7" + // 4045 - 4049
+ "\u8EAC\uBCA8\u8EAC\uBCA9\u8EAC\uBCAA\u8EAC\uBCAB\u8EAC\uBCAC" + // 4050 - 4054
+ "\u8EAC\uBCAD\u8EAC\uBCAE\u8EAC\uBCAF\u8EAC\uBCB0\u8EAC\uBCB1" + // 4055 - 4059
+ "\u8EAC\uBCB2\u8EAC\uBCB3\u8EAC\uBCB4\u8EAC\uBCB5\u8EAC\uBCB6" + // 4060 - 4064
+ "\u8EAC\uBAF3\u8EAC\uBAF4\u8EAC\uBAF5\u8EAC\uBAF6\u8EAC\uBAF7" + // 4065 - 4069
+ "\u8EAC\uBAF8\u8EAC\uBAF9\u8EAC\uBAFA\u8EAC\uBAFB\u8EAC\uBAFC" + // 4070 - 4074
+ "\u8EAC\uBAFD\u8EAC\uBAFE\u8EAC\uBBA1\u8EAC\uBBA2\u8EAC\uBBA3" + // 4075 - 4079
+ "\u8EAC\uBBA4\u8EAC\uBBA5\u8EAC\uBBA6\u8EAC\uBBA7\u8EAC\uBBA8" + // 4080 - 4084
+ "\u8EAC\uBBA9\u8EAC\uBBAA\u8EAC\uBBAB\u8EAC\uBBAC\u8EAC\uBBAD" + // 4085 - 4089
+ "\u8EAC\uBBAE\u8EAC\uBBAF\u8EAC\uBBB0\u8EAC\uBBB1\u8EAC\uBBB2" + // 4090 - 4094
+ "\u8EAC\uBBB3\u8EAC\uBBB4\u8EAC\uBBB5\u8EAC\uBBB6\u8EAC\uBBB7" + // 4095 - 4099
+ "\u8EAC\uBBB8\u8EAC\uBBB9\u8EAC\uBBBA\u8EAC\uBBBB\u8EAC\uBBBC" + // 4100 - 4104
+ "\u8EAC\uBBBD\u8EAC\uBBBE\u8EAC\uBBBF\u8EAC\uBBC0\u8EAC\uBBC1" + // 4105 - 4109
+ "\u8EAC\uBBC2\u8EAC\uBBC3\u8EAC\uBBC4\u8EAC\uBBC5\u8EAC\uBBC6" + // 4110 - 4114
+ "\u8EAC\uBBC7\u8EAC\uBBC8\u8EAC\uBBC9\u8EAC\uBBCA\u8EAC\uBBCB" + // 4115 - 4119
+ "\u8EAC\uBBCC\u8EAC\uBBCD\u8EAC\uBBCE\u8EAC\uBBCF\u8EAC\uBBD0" + // 4120 - 4124
+ "\u8EAC\uBBD1\u8EAC\uBBD2\u8EAC\uBBD3\u8EAC\uBBD4\u8EAC\uBAB3" + // 4125 - 4129
+ "\u8EAC\uBAB4\u8EAC\uBAB5\u8EAC\uBAB6\u8EAC\uBAB7\u8EAC\uBAB8" + // 4130 - 4134
+ "\u8EAC\uBAB9\u8EAC\uBABA\u8EAC\uBABB\u8EAC\uBABC\u8EAC\uBABD" + // 4135 - 4139
+ "\u8EAC\uBABE\u8EAC\uBABF\u8EAC\uBAC0\u8EAC\uBAC1\u8EAC\uBAC2" + // 4140 - 4144
+ "\u8EAC\uBAC3\u8EAC\uBAC4\u8EAC\uBAC5\u8EAC\uBAC6\u8EAC\uBAC7" + // 4145 - 4149
+ "\u8EAC\uBAC8\u8EAC\uBAC9\u8EAC\uBACA\u8EAC\uBACB\u8EAC\uBACC" + // 4150 - 4154
+ "\u8EAC\uBACD\u8EAC\uBACE\u8EAC\uBACF\u8EAC\uBAD0\u8EAC\uBAD1" + // 4155 - 4159
+ "\u8EAC\uBAD2\u8EAC\uBAD3\u8EAC\uBAD4\u8EAC\uBAD5\u8EAC\uBAD6" + // 4160 - 4164
+ "\u8EAC\uBAD7\u8EAC\uBAD8\u8EAC\uBAD9\u8EAC\uBADA\u8EAC\uBADB" + // 4165 - 4169
+ "\u8EAC\uBADC\u8EAC\uBADD\u8EAC\uBADE\u8EAC\uBADF\u8EAC\uBAE0" + // 4170 - 4174
+ "\u8EAC\uBAE1\u8EAC\uBAE2\u8EAC\uBAE3\u8EAC\uBAE4\u8EAC\uBAE5" + // 4175 - 4179
+ "\u8EAC\uBAE6\u8EAC\uBAE7\u8EAC\uBAE8\u8EAC\uBAE9\u8EAC\uBAEA" + // 4180 - 4184
+ "\u8EAC\uBAEB\u8EAC\uBAEC\u8EAC\uBAED\u8EAC\uBAEE\u8EAC\uBAEF" + // 4185 - 4189
+ "\u8EAC\uBAF0\u8EAC\uBAF1\u8EAC\uBAF2\u8EAC\uB9D1\u8EAC\uB9D2" + // 4190 - 4194
+ "\u8EAC\uB9D3\u8EAC\uB9D4\u8EAC\uB9D5\u8EAC\uB9D6\u8EAC\uB9D7" + // 4195 - 4199
+ "\u8EAC\uB9D8\u8EAC\uB9D9\u8EAC\uB9DA\u8EAC\uB9DB\u8EAC\uB9DC" + // 4200 - 4204
+ "\u8EAC\uB9DD\u8EAC\uB9DE\u8EAC\uB9DF\u8EAC\uB9E0\u8EAC\uB9E1" + // 4205 - 4209
+ "\u8EAC\uB9E2\u8EAC\uB9E3\u8EAC\uB9E4\u8EAC\uB9E5\u8EAC\uB9E6" + // 4210 - 4214
+ "\u8EAC\uB9E7\u8EAC\uB9E8\u8EAC\uB9E9\u8EAC\uB9EA\u8EAC\uB9EB" + // 4215 - 4219
+ "\u8EAC\uB9EC\u8EAC\uB9ED\u8EAC\uB9EE\u8EAC\uB9EF\u8EAC\uB9F0" + // 4220 - 4224
+ "\u8EAC\uB9F1\u8EAC\uB9F2\u8EAC\uB9F3\u8EAC\uB9F4\u8EAC\uB9F5" + // 4225 - 4229
+ "\u8EAC\uB9F6\u8EAC\uB9F7\u8EAC\uB9F8\u8EAC\uB9F9\u8EAC\uB9FA" + // 4230 - 4234
+ "\u8EAC\uB9FB\u8EAC\uB9FC\u8EAC\uB9FD\u8EAC\uB9FE\u8EAC\uBAA1" + // 4235 - 4239
+ "\u8EAC\uBAA2\u8EAC\uBAA3\u8EAC\uBAA4\u8EAC\uBAA5\u8EAC\uBAA6" + // 4240 - 4244
+ "\u8EAC\uBAA7\u8EAC\uBAA8\u8EAC\uBAA9\u8EAC\uBAAA\u8EAC\uBAAB" + // 4245 - 4249
+ "\u8EAC\uBAAC\u8EAC\uBAAD\u8EAC\uBAAE\u8EAC\uBAAF\u8EAC\uBAB0" + // 4250 - 4254
+ "\u8EAC\uBAB1\u8EAC\uBAB2\u8EAC\uB8EF\u8EAC\uB8F0\u8EAC\uB8F1" + // 4255 - 4259
+ "\u8EAC\uB8F2\u8EAC\uB8F3\u8EAC\uB8F4\u8EAC\uB8F5\u8EAC\uB8F6" + // 4260 - 4264
+ "\u8EAC\uB8F7\u8EAC\uB8F8\u8EAC\uB8F9\u8EAC\uB8FA\u8EAC\uB8FB" + // 4265 - 4269
+ "\u8EAC\uB8FC\u8EAC\uB8FD\u8EAC\uB8FE\u8EAC\uB9A1\u8EAC\uB9A2" + // 4270 - 4274
+ "\u8EAC\uB9A3\u8EAC\uB9A4\u8EAC\uB9A5\u8EAC\uB9A6\u8EAC\uB9A7" + // 4275 - 4279
+ "\u8EAC\uB9A8\u8EAC\uB9A9\u8EAC\uB9AA\u8EAC\uB9AB\u8EAC\uB9AC" + // 4280 - 4284
+ "\u8EAC\uB9AD\u8EAC\uB9AE\u8EAC\uB9AF\u8EAC\uB9B0\u8EAC\uB9B1" + // 4285 - 4289
+ "\u8EAC\uB9B2\u8EAC\uB9B3\u8EAC\uB9B4\u8EAC\uB9B5\u8EAC\uB9B6" + // 4290 - 4294
+ "\u8EAC\uB9B7\u8EAC\uB9B8\u8EAC\uB9B9\u8EAC\uB9BA\u8EAC\uB9BB" + // 4295 - 4299
+ "\u8EAC\uB9BC\u8EAC\uB9BD\u8EAC\uB9BE\u8EAC\uB9BF\u8EAC\uB9C0" + // 4300 - 4304
+ "\u8EAC\uB9C1\u8EAC\uB9C2\u8EAC\uB9C3\u8EAC\uB9C4\u8EAC\uB9C5" + // 4305 - 4309
+ "\u8EAC\uB9C6\u8EAC\uB9C7\u8EAC\uB9C8\u8EAC\uB9C9\u8EAC\uB9CA" + // 4310 - 4314
+ "\u8EAC\uB9CB\u8EAC\uB9CC\u8EAC\uB9CD\u8EAC\uB9CE\u8EAC\uB9CF" + // 4315 - 4319
+ "\u8EAC\uB9D0\u8EAC\uB8AF\u8EAC\uB8B0\u8EAC\uB8B1\u8EAC\uB8B2" + // 4320 - 4324
+ "\u8EAC\uB8B3\u8EAC\uB8B4\u8EAC\uB8B5\u8EAC\uB8B6\u8EAC\uB8B7" + // 4325 - 4329
+ "\u8EAC\uB8B8\u8EAC\uB8B9\u8EAC\uB8BA\u8EAC\uB8BB\u8EAC\uB8BC" + // 4330 - 4334
+ "\u8EAC\uB8BD\u8EAC\uB8BE\u8EAC\uB8BF\u8EAC\uB8C0\u8EAC\uB8C1" + // 4335 - 4339
+ "\u8EAC\uB8C2\u8EAC\uB8C3\u8EAC\uB8C4\u8EAC\uB8C5\u8EAC\uB8C6" + // 4340 - 4344
+ "\u8EAC\uB8C7\u8EAC\uB8C8\u8EAC\uB8C9\u8EAC\uB8CA\u8EAC\uB8CB" + // 4345 - 4349
+ "\u8EAC\uB8CC\u8EAC\uB8CD\u8EAC\uB8CE\u8EAC\uB8CF\u8EAC\uB8D0" + // 4350 - 4354
+ "\u8EAC\uB8D1\u8EAC\uB8D2\u8EAC\uB8D3\u8EAC\uB8D4\u8EAC\uB8D5" + // 4355 - 4359
+ "\u8EAC\uB8D6\u8EAC\uB8D7\u8EAC\uB8D8\u8EAC\uB8D9\u8EAC\uB8DA" + // 4360 - 4364
+ "\u8EAC\uB8DB\u8EAC\uB8DC\u8EAC\uB8DD\u8EAC\uB8DE\u8EAC\uB8DF" + // 4365 - 4369
+ "\u8EAC\uB8E0\u8EAC\uB8E1\u8EAC\uB8E2\u8EAC\uB8E3\u8EAC\uB8E4" + // 4370 - 4374
+ "\u8EAC\uB8E5\u8EAC\uB8E6\u8EAC\uB8E7\u8EAC\uB8E8\u8EAC\uB8E9" + // 4375 - 4379
+ "\u8EAC\uB8EA\u8EAC\uB8EB\u8EAC\uB8EC\u8EAC\uB8ED\u8EAC\uB8EE" + // 4380 - 4384
+ "\u8EAC\uB7CD\u8EAC\uB7CE\u8EAC\uB7CF\u8EAC\uB7D0\u8EAC\uB7D1" + // 4385 - 4389
+ "\u8EAC\uB7D2\u8EAC\uB7D3\u8EAC\uB7D4\u8EAC\uB7D5\u8EAC\uB7D6" + // 4390 - 4394
+ "\u8EAC\uB7D7\u8EAC\uB7D8\u8EAC\uB7D9\u8EAC\uB7DA\u8EAC\uB7DB" + // 4395 - 4399
+ "\u8EAC\uB7DC\u8EAC\uB7DD\u8EAC\uB7DE\u8EAC\uB7DF\u8EAC\uB7E0" + // 4400 - 4404
+ "\u8EAC\uB7E1\u8EAC\uB7E2\u8EAC\uB7E3\u8EAC\uB7E4\u8EAC\uB7E5" + // 4405 - 4409
+ "\u8EAC\uB7E6\u8EAC\uB7E7\u8EAC\uB7E8\u8EAC\uB7E9\u8EAC\uB7EA" + // 4410 - 4414
+ "\u8EAC\uB7EB\u8EAC\uB7EC\u8EAC\uB7ED\u8EAC\uB7EE\u8EAC\uB7EF" + // 4415 - 4419
+ "\u8EAC\uB7F0\u8EAC\uB7F1\u8EAC\uB7F2\u8EAC\uB7F3\u8EAC\uB7F4" + // 4420 - 4424
+ "\u8EAC\uB7F5\u8EAC\uB7F6\u8EAC\uB7F7\u8EAC\uB7F8\u8EAC\uB7F9" + // 4425 - 4429
+ "\u8EAC\uB7FA\u8EAC\uB7FB\u8EAC\uB7FC\u8EAC\uB7FD\u8EAC\uB7FE" + // 4430 - 4434
+ "\u8EAC\uB8A1\u8EAC\uB8A2\u8EAC\uB8A3\u8EAC\uB8A4\u8EAC\uB8A5" + // 4435 - 4439
+ "\u8EAC\uB8A6\u8EAC\uB8A7\u8EAC\uB8A8\u8EAC\uB8A9\u8EAC\uB8AA" + // 4440 - 4444
+ "\u8EAC\uB8AB\u8EAC\uB8AC\u8EAC\uB8AD\u8EAC\uB8AE\u8EAC\uB6EB" + // 4445 - 4449
+ "\u8EAC\uB6EC\u8EAC\uB6ED\u8EAC\uB6EE\u8EAC\uB6EF\u8EAC\uB6F0" + // 4450 - 4454
+ "\u8EAC\uB6F1\u8EAC\uB6F2\u8EAC\uB6F3\u8EAC\uB6F4\u8EAC\uB6F5" + // 4455 - 4459
+ "\u8EAC\uB6F6\u8EAC\uB6F7\u8EAC\uB6F8\u8EAC\uB6F9\u8EAC\uB6FA" + // 4460 - 4464
+ "\u8EAC\uB6FB\u8EAC\uB6FC\u8EAC\uB6FD\u8EAC\uB6FE\u8EAC\uB7A1" + // 4465 - 4469
+ "\u8EAC\uB7A2\u8EAC\uB7A3\u8EAC\uB7A4\u8EAC\uB7A5\u8EAC\uB7A6" + // 4470 - 4474
+ "\u8EAC\uB7A7\u8EAC\uB7A8\u8EAC\uB7A9\u8EAC\uB7AA\u8EAC\uB7AB" + // 4475 - 4479
+ "\u8EAC\uB7AC\u8EAC\uB7AD\u8EAC\uB7AE\u8EAC\uB7AF\u8EAC\uB7B0" + // 4480 - 4484
+ "\u8EAC\uB7B1\u8EAC\uB7B2\u8EAC\uB7B3\u8EAC\uB7B4\u8EAC\uB7B5" + // 4485 - 4489
+ "\u8EAC\uB7B6\u8EAC\uB7B7\u8EAC\uB7B8\u8EAC\uB7B9\u8EAC\uB7BA" + // 4490 - 4494
+ "\u8EAC\uB7BB\u8EAC\uB7BC\u8EAC\uB7BD\u8EAC\uB7BE\u8EAC\uB7BF" + // 4495 - 4499
+ "\u8EAC\uB7C0\u8EAC\uB7C1\u8EAC\uB7C2\u8EAC\uB7C3\u8EAC\uB7C4" + // 4500 - 4504
+ "\u8EAC\uB7C5\u8EAC\uB7C6\u8EAC\uB7C7\u8EAC\uB7C8\u8EAC\uB7C9" + // 4505 - 4509
+ "\u8EAC\uB7CA\u8EAC\uB7CB\u8EAC\uB7CC\u8EAC\uB6AB\u8EAC\uB6AC" + // 4510 - 4514
+ "\u8EAC\uB6AD\u8EAC\uB6AE\u8EAC\uB6AF\u8EAC\uB6B0\u8EAC\uB6B1" + // 4515 - 4519
+ "\u8EAC\uB6B2\u8EAC\uB6B3\u8EAC\uB6B4\u8EAC\uB6B5\u8EAC\uB6B6" + // 4520 - 4524
+ "\u8EAC\uB6B7\u8EAC\uB6B8\u8EAC\uB6B9\u8EAC\uB6BA\u8EAC\uB6BB" + // 4525 - 4529
+ "\u8EAC\uB6BC\u8EAC\uB6BD\u8EAC\uB6BE\u8EAC\uB6BF\u8EAC\uB6C0" + // 4530 - 4534
+ "\u8EAC\uB6C1\u8EAC\uB6C2\u8EAC\uB6C3\u8EAC\uB6C4\u8EAC\uB6C5" + // 4535 - 4539
+ "\u8EAC\uB6C6\u8EAC\uB6C7\u8EAC\uB6C8\u8EAC\uB6C9\u8EAC\uB6CA" + // 4540 - 4544
+ "\u8EAC\uB6CB\u8EAC\uB6CC\u8EAC\uB6CD\u8EAC\uB6CE\u8EAC\uB6CF" + // 4545 - 4549
+ "\u8EAC\uB6D0\u8EAC\uB6D1\u8EAC\uB6D2\u8EAC\uB6D3\u8EAC\uB6D4" + // 4550 - 4554
+ "\u8EAC\uB6D5\u8EAC\uB6D6\u8EAC\uB6D7\u8EAC\uB6D8\u8EAC\uB6D9" + // 4555 - 4559
+ "\u8EAC\uB6DA\u8EAC\uB6DB\u8EAC\uB6DC\u8EAC\uB6DD\u8EAC\uB6DE" + // 4560 - 4564
+ "\u8EAC\uB6DF\u8EAC\uB6E0\u8EAC\uB6E1\u8EAC\uB6E2\u8EAC\uB6E3" + // 4565 - 4569
+ "\u8EAC\uB6E4\u8EAC\uB6E5\u8EAC\uB6E6\u8EAC\uB6E7\u8EAC\uB6E8" + // 4570 - 4574
+ "\u8EAC\uB6E9\u8EAC\uB6EA\u8EAC\uB5C9\u8EAC\uB5CA\u8EAC\uB5CB" + // 4575 - 4579
+ "\u8EAC\uB5CC\u8EAC\uB5CD\u8EAC\uB5CE\u8EAC\uB5CF\u8EAC\uB5D0" + // 4580 - 4584
+ "\u8EAC\uB5D1\u8EAC\uB5D2\u8EAC\uB5D3\u8EAC\uB5D4\u8EAC\uB5D5" + // 4585 - 4589
+ "\u8EAC\uB5D6\u8EAC\uB5D7\u8EAC\uB5D8\u8EAC\uB5D9\u8EAC\uB5DA" + // 4590 - 4594
+ "\u8EAC\uB5DB\u8EAC\uB5DC\u8EAC\uB5DD\u8EAC\uB5DE\u8EAC\uB5DF" + // 4595 - 4599
+ "\u8EAC\uB5E0\u8EAC\uB5E1\u8EAC\uB5E2\u8EAC\uB5E3\u8EAC\uB5E4" + // 4600 - 4604
+ "\u8EAC\uB5E5\u8EAC\uB5E6\u8EAC\uB5E7\u8EAC\uB5E8\u8EAC\uB5E9" + // 4605 - 4609
+ "\u8EAC\uB5EA\u8EAC\uB5EB\u8EAC\uB5EC\u8EAC\uB5ED\u8EAC\uB5EE" + // 4610 - 4614
+ "\u8EAC\uB5EF\u8EAC\uB5F0\u8EAC\uB5F1\u8EAC\uB5F2\u8EAC\uB5F3" + // 4615 - 4619
+ "\u8EAC\uB5F4\u8EAC\uB5F5\u8EAC\uB5F6\u8EAC\uB5F7\u8EAC\uB5F8" + // 4620 - 4624
+ "\u8EAC\uB5F9\u8EAC\uB5FA\u8EAC\uB5FB\u8EAC\uB5FC\u8EAC\uB5FD" + // 4625 - 4629
+ "\u8EAC\uB5FE\u8EAC\uB6A1\u8EAC\uB6A2\u8EAC\uB6A3\u8EAC\uB6A4" + // 4630 - 4634
+ "\u8EAC\uB6A5\u8EAC\uB6A6\u8EAC\uB6A7\u8EAC\uB6A8\u8EAC\uB6A9" + // 4635 - 4639
+ "\u8EAC\uB6AA\u8EAC\uB4E7\u8EAC\uB4E8\u8EAC\uB4E9\u8EAC\uB4EA" + // 4640 - 4644
+ "\u8EAC\uB4EB\u8EAC\uB4EC\u8EAC\uB4ED\u8EAC\uB4EE\u8EAC\uB4EF" + // 4645 - 4649
+ "\u8EAC\uB4F0\u8EAC\uB4F1\u8EAC\uB4F2\u8EAC\uB4F3\u8EAC\uB4F4" + // 4650 - 4654
+ "\u8EAC\uB4F5\u8EAC\uB4F6\u8EAC\uB4F7\u8EAC\uB4F8\u8EAC\uB4F9" + // 4655 - 4659
+ "\u8EAC\uB4FA\u8EAC\uB4FB\u8EAC\uB4FC\u8EAC\uB4FD\u8EAC\uB4FE" + // 4660 - 4664
+ "\u8EAC\uB5A1\u8EAC\uB5A2\u8EAC\uB5A3\u8EAC\uB5A4\u8EAC\uB5A5" + // 4665 - 4669
+ "\u8EAC\uB5A6\u8EAC\uB5A7\u8EAC\uB5A8\u8EAC\uB5A9\u8EAC\uB5AA" + // 4670 - 4674
+ "\u8EAC\uB5AB\u8EAC\uB5AC\u8EAC\uB5AD\u8EAC\uB5AE\u8EAC\uB5AF" + // 4675 - 4679
+ "\u8EAC\uB5B0\u8EAC\uB5B1\u8EAC\uB5B2\u8EAC\uB5B3\u8EAC\uB5B4" + // 4680 - 4684
+ "\u8EAC\uB5B5\u8EAC\uB5B6\u8EAC\uB5B7\u8EAC\uB5B8\u8EAC\uB5B9" + // 4685 - 4689
+ "\u8EAC\uB5BA\u8EAC\uB5BB\u8EAC\uB5BC\u8EAC\uB5BD\u8EAC\uB5BE" + // 4690 - 4694
+ "\u8EAC\uB5BF\u8EAC\uB5C0\u8EAC\uB5C1\u8EAC\uB5C2\u8EAC\uB5C3" + // 4695 - 4699
+ "\u8EAC\uB5C4\u8EAC\uB5C5\u8EAC\uB5C6\u8EAC\uB5C7\u8EAC\uB5C8" + // 4700 - 4704
+ "\u8EAC\uB4A7\u8EAC\uB4A8\u8EAC\uB4A9\u8EAC\uB4AA\u8EAC\uB4AB" + // 4705 - 4709
+ "\u8EAC\uB4AC\u8EAC\uB4AD\u8EAC\uB4AE\u8EAC\uB4AF\u8EAC\uB4B0" + // 4710 - 4714
+ "\u8EAC\uB4B1\u8EAC\uB4B2\u8EAC\uB4B3\u8EAC\uB4B4\u8EAC\uB4B5" + // 4715 - 4719
+ "\u8EAC\uB4B6\u8EAC\uB4B7\u8EAC\uB4B8\u8EAC\uB4B9\u8EAC\uB4BA" + // 4720 - 4724
+ "\u8EAC\uB4BB\u8EAC\uB4BC\u8EAC\uB4BD\u8EAC\uB4BE\u8EAC\uB4BF" + // 4725 - 4729
+ "\u8EAC\uB4C0\u8EAC\uB4C1\u8EAC\uB4C2\u8EAC\uB4C3\u8EAC\uB4C4" + // 4730 - 4734
+ "\u8EAC\uB4C5\u8EAC\uB4C6\u8EAC\uB4C7\u8EAC\uB4C8\u8EAC\uB4C9" + // 4735 - 4739
+ "\u8EAC\uB4CA\u8EAC\uB4CB\u8EAC\uB4CC\u8EAC\uB4CD\u8EAC\uB4CE" + // 4740 - 4744
+ "\u8EAC\uB4CF\u8EAC\uB4D0\u8EAC\uB4D1\u8EAC\uB4D2\u8EAC\uB4D3" + // 4745 - 4749
+ "\u8EAC\uB4D4\u8EAC\uB4D5\u8EAC\uB4D6\u8EAC\uB4D7\u8EAC\uB4D8" + // 4750 - 4754
+ "\u8EAC\uB4D9\u8EAC\uB4DA\u8EAC\uB4DB\u8EAC\uB4DC\u8EAC\uB4DD" + // 4755 - 4759
+ "\u8EAC\uB4DE\u8EAC\uB4DF\u8EAC\uB4E0\u8EAC\uB4E1\u8EAC\uB4E2" + // 4760 - 4764
+ "\u8EAC\uB4E3\u8EAC\uB4E4\u8EAC\uB4E5\u8EAC\uB4E6\u8EAC\uB3C5" + // 4765 - 4769
+ "\u8EAC\uB3C6\u8EAC\uB3C7\u8EAC\uB3C8\u8EAC\uB3C9\u8EAC\uB3CA" + // 4770 - 4774
+ "\u8EAC\uB3CB\u8EAC\uB3CC\u8EAC\uB3CD\u8EAC\uB3CE\u8EAC\uB3CF" + // 4775 - 4779
+ "\u8EAC\uB3D0\u8EAC\uB3D1\u8EAC\uB3D2\u8EAC\uB3D3\u8EAC\uB3D4" + // 4780 - 4784
+ "\u8EAC\uB3D5\u8EAC\uB3D6\u8EAC\uB3D7\u8EAC\uB3D8\u8EAC\uB3D9" + // 4785 - 4789
+ "\u8EAC\uB3DA\u8EAC\uB3DB\u8EAC\uB3DC\u8EAC\uB3DD\u8EAC\uB3DE" + // 4790 - 4794
+ "\u8EAC\uB3DF\u8EAC\uB3E0\u8EAC\uB3E1\u8EAC\uB3E2\u8EAC\uB3E3" + // 4795 - 4799
+ "\u8EAC\uB3E4\u8EAC\uB3E5\u8EAC\uB3E6\u8EAC\uB3E7\u8EAC\uB3E8" + // 4800 - 4804
+ "\u8EAC\uB3E9\u8EAC\uB3EA\u8EAC\uB3EB\u8EAC\uB3EC\u8EAC\uB3ED" + // 4805 - 4809
+ "\u8EAC\uB3EE\u8EAC\uB3EF\u8EAC\uB3F0\u8EAC\uB3F1\u8EAC\uB3F2" + // 4810 - 4814
+ "\u8EAC\uB3F3\u8EAC\uB3F4\u8EAC\uB3F5\u8EAC\uB3F6\u8EAC\uB3F7" + // 4815 - 4819
+ "\u8EAC\uB3F8\u8EAC\uB3F9\u8EAC\uB3FA\u8EAC\uB3FB\u8EAC\uB3FC" + // 4820 - 4824
+ "\u8EAC\uB3FD\u8EAC\uB3FE\u8EAC\uB4A1\u8EAC\uB4A2\u8EAC\uB4A3" + // 4825 - 4829
+ "\u8EAC\uB4A4\u8EAC\uB4A5\u8EAC\uB4A6\u8EAC\uB2E3\u8EAC\uB2E4" + // 4830 - 4834
+ "\u8EAC\uB2E5\u8EAC\uB2E6\u8EAC\uB2E7\u8EAC\uB2E8\u8EAC\uB2E9" + // 4835 - 4839
+ "\u8EAC\uB2EA\u8EAC\uB2EB\u8EAC\uB2EC\u8EAC\uB2ED\u8EAC\uB2EE" + // 4840 - 4844
+ "\u8EAC\uB2EF\u8EAC\uB2F0\u8EAC\uB2F1\u8EAC\uB2F2\u8EAC\uB2F3" + // 4845 - 4849
+ "\u8EAC\uB2F4\u8EAC\uB2F5\u8EAC\uB2F6\u8EAC\uB2F7\u8EAC\uB2F8" + // 4850 - 4854
+ "\u8EAC\uB2F9\u8EAC\uB2FA\u8EAC\uB2FB\u8EAC\uB2FC\u8EAC\uB2FD" + // 4855 - 4859
+ "\u8EAC\uB2FE\u8EAC\uB3A1\u8EAC\uB3A2\u8EAC\uB3A3\u8EAC\uB3A4" + // 4860 - 4864
+ "\u8EAC\uB3A5\u8EAC\uB3A6\u8EAC\uB3A7\u8EAC\uB3A8\u8EAC\uB3A9" + // 4865 - 4869
+ "\u8EAC\uB3AA\u8EAC\uB3AB\u8EAC\uB3AC\u8EAC\uB3AD\u8EAC\uB3AE" + // 4870 - 4874
+ "\u8EAC\uB3AF\u8EAC\uB3B0\u8EAC\uB3B1\u8EAC\uB3B2\u8EAC\uB3B3" + // 4875 - 4879
+ "\u8EAC\uB3B4\u8EAC\uB3B5\u8EAC\uB3B6\u8EAC\uB3B7\u8EAC\uB3B8" + // 4880 - 4884
+ "\u8EAC\uB3B9\u8EAC\uB3BA\u8EAC\uB3BB\u8EAC\uB3BC\u8EAC\uB3BD" + // 4885 - 4889
+ "\u8EAC\uB3BE\u8EAC\uB3BF\u8EAC\uB3C0\u8EAC\uB3C1\u8EAC\uB3C2" + // 4890 - 4894
+ "\u8EAC\uB3C3\u8EAC\uB3C4\u8EAC\uB2A3\u8EAC\uB2A4\u8EAC\uB2A5" + // 4895 - 4899
+ "\u8EAC\uB2A6\u8EAC\uB2A7\u8EAC\uB2A8\u8EAC\uB2A9\u8EAC\uB2AA" + // 4900 - 4904
+ "\u8EAC\uB2AB\u8EAC\uB2AC\u8EAC\uB2AD\u8EAC\uB2AE\u8EAC\uB2AF" + // 4905 - 4909
+ "\u8EAC\uB2B0\u8EAC\uB2B1\u8EAC\uB2B2\u8EAC\uB2B3\u8EAC\uB2B4" + // 4910 - 4914
+ "\u8EAC\uB2B5\u8EAC\uB2B6\u8EAC\uB2B7\u8EAC\uB2B8\u8EAC\uB2B9" + // 4915 - 4919
+ "\u8EAC\uB2BA\u8EAC\uB2BB\u8EAC\uB2BC\u8EAC\uB2BD\u8EAC\uB2BE" + // 4920 - 4924
+ "\u8EAC\uB2BF\u8EAC\uB2C0\u8EAC\uB2C1\u8EAC\uB2C2\u8EAC\uB2C3" + // 4925 - 4929
+ "\u8EAC\uB2C4\u8EAC\uB2C5\u8EAC\uB2C6\u8EAC\uB2C7\u8EAC\uB2C8" + // 4930 - 4934
+ "\u8EAC\uB2C9\u8EAC\uB2CA\u8EAC\uB2CB\u8EAC\uB2CC\u8EAC\uB2CD" + // 4935 - 4939
+ "\u8EAC\uB2CE\u8EAC\uB2CF\u8EAC\uB2D0\u8EAC\uB2D1\u8EAC\uB2D2" + // 4940 - 4944
+ "\u8EAC\uB2D3\u8EAC\uB2D4\u8EAC\uB2D5\u8EAC\uB2D6\u8EAC\uB2D7" + // 4945 - 4949
+ "\u8EAC\uB2D8\u8EAC\uB2D9\u8EAC\uB2DA\u8EAC\uB2DB\u8EAC\uB2DC" + // 4950 - 4954
+ "\u8EAC\uB2DD\u8EAC\uB2DE\u8EAC\uB2DF\u8EAC\uB2E0\u8EAC\uB2E1" + // 4955 - 4959
+ "\u8EAC\uB2E2\u8EAC\uB1C1\u8EAC\uB1C2\u8EAC\uB1C3\u8EAC\uB1C4" + // 4960 - 4964
+ "\u8EAC\uB1C5\u8EAC\uB1C6\u8EAC\uB1C7\u8EAC\uB1C8\u8EAC\uB1C9" + // 4965 - 4969
+ "\u8EAC\uB1CA\u8EAC\uB1CB\u8EAC\uB1CC\u8EAC\uB1CD\u8EAC\uB1CE" + // 4970 - 4974
+ "\u8EAC\uB1CF\u8EAC\uB1D0\u8EAC\uB1D1\u8EAC\uB1D2\u8EAC\uB1D3" + // 4975 - 4979
+ "\u8EAC\uB1D4\u8EAC\uB1D5\u8EAC\uB1D6\u8EAC\uB1D7\u8EAC\uB1D8" + // 4980 - 4984
+ "\u8EAC\uB1D9\u8EAC\uB1DA\u8EAC\uB1DB\u8EAC\uB1DC\u8EAC\uB1DD" + // 4985 - 4989
+ "\u8EAC\uB1DE\u8EAC\uB1DF\u8EAC\uB1E0\u8EAC\uB1E1\u8EAC\uB1E2" + // 4990 - 4994
+ "\u8EAC\uB1E3\u8EAC\uB1E4\u8EAC\uB1E5\u8EAC\uB1E6\u8EAC\uB1E7" + // 4995 - 4999
+ "\u8EAC\uB1E8\u8EAC\uB1E9\u8EAC\uB1EA\u8EAC\uB1EB\u8EAC\uB1EC" + // 5000 - 5004
+ "\u8EAC\uB1ED\u8EAC\uB1EE\u8EAC\uB1EF\u8EAC\uB1F0\u8EAC\uB1F1" + // 5005 - 5009
+ "\u8EAC\uB1F2\u8EAC\uB1F3\u8EAC\uB1F4\u8EAC\uB1F5\u8EAC\uB1F6" + // 5010 - 5014
+ "\u8EAC\uB1F7\u8EAC\uB1F8\u8EAC\uB1F9\u8EAC\uB1FA\u8EAC\uB1FB" + // 5015 - 5019
+ "\u8EAC\uB1FC\u8EAC\uB1FD\u8EAC\uB1FE\u8EAC\uB2A1\u8EAC\uB2A2" + // 5020 - 5024
+ "\u8EAC\uB0DF\u8EAC\uB0E0\u8EAC\uB0E1\u8EAC\uB0E2\u8EAC\uB0E3" + // 5025 - 5029
+ "\u8EAC\uB0E4\u8EAC\uB0E5\u8EAC\uB0E6\u8EAC\uB0E7\u8EAC\uB0E8" + // 5030 - 5034
+ "\u8EAC\uB0E9\u8EAC\uB0EA\u8EAC\uB0EB\u8EAC\uB0EC\u8EAC\uB0ED" + // 5035 - 5039
+ "\u8EAC\uB0EE\u8EAC\uB0EF\u8EAC\uB0F0\u8EAC\uB0F1\u8EAC\uB0F2" + // 5040 - 5044
+ "\u8EAC\uB0F3\u8EAC\uB0F4\u8EAC\uB0F5\u8EAC\uB0F6\u8EAC\uB0F7" + // 5045 - 5049
+ "\u8EAC\uB0F8\u8EAC\uB0F9\u8EAC\uB0FA\u8EAC\uB0FB\u8EAC\uB0FC" + // 5050 - 5054
+ "\u8EAC\uB0FD\u8EAC\uB0FE\u8EAC\uB1A1\u8EAC\uB1A2\u8EAC\uB1A3" + // 5055 - 5059
+ "\u8EAC\uB1A4\u8EAC\uB1A5\u8EAC\uB1A6\u8EAC\uB1A7\u8EAC\uB1A8" + // 5060 - 5064
+ "\u8EAC\uB1A9\u8EAC\uB1AA\u8EAC\uB1AB\u8EAC\uB1AC\u8EAC\uB1AD" + // 5065 - 5069
+ "\u8EAC\uB1AE\u8EAC\uB1AF\u8EAC\uB1B0\u8EAC\uB1B1\u8EAC\uB1B2" + // 5070 - 5074
+ "\u8EAC\uB1B3\u8EAC\uB1B4\u8EAC\uB1B5\u8EAC\uB1B6\u8EAC\uB1B7" + // 5075 - 5079
+ "\u8EAC\uB1B8\u8EAC\uB1B9\u8EAC\uB1BA\u8EAC\uB1BB\u8EAC\uB1BC" + // 5080 - 5084
+ "\u8EAC\uB1BD\u8EAC\uB1BE\u8EAC\uB1BF\u8EAC\uB1C0\u8EAC\uAFFD" + // 5085 - 5089
+ "\u8EAC\uAFFE\u8EAC\uB0A1\u8EAC\uB0A2\u8EAC\uB0A3\u8EAC\uB0A4" + // 5090 - 5094
+ "\u8EAC\uB0A5\u8EAC\uB0A6\u8EAC\uB0A7\u8EAC\uB0A8\u8EAC\uB0A9" + // 5095 - 5099
+ "\u8EAC\uB0AA\u8EAC\uB0AB\u8EAC\uB0AC\u8EAC\uB0AD\u8EAC\uB0AE" + // 5100 - 5104
+ "\u8EAC\uB0AF\u8EAC\uB0B0\u8EAC\uB0B1\u8EAC\uB0B2\u8EAC\uB0B3" + // 5105 - 5109
+ "\u8EAC\uB0B4\u8EAC\uB0B5\u8EAC\uB0B6\u8EAC\uB0B7\u8EAC\uB0B8" + // 5110 - 5114
+ "\u8EAC\uB0B9\u8EAC\uB0BA\u8EAC\uB0BB\u8EAC\uB0BC\u8EAC\uB0BD" + // 5115 - 5119
+ "\u8EAC\uB0BE\u8EAC\uB0BF\u8EAC\uB0C0\u8EAC\uB0C1\u8EAC\uB0C2" + // 5120 - 5124
+ "\u8EAC\uB0C3\u8EAC\uB0C4\u8EAC\uB0C5\u8EAC\uB0C6\u8EAC\uB0C7" + // 5125 - 5129
+ "\u8EAC\uB0C8\u8EAC\uB0C9\u8EAC\uB0CA\u8EAC\uB0CB\u8EAC\uB0CC" + // 5130 - 5134
+ "\u8EAC\uB0CD\u8EAC\uB0CE\u8EAC\uB0CF\u8EAC\uB0D0\u8EAC\uB0D1" + // 5135 - 5139
+ "\u8EAC\uB0D2\u8EAC\uB0D3\u8EAC\uB0D4\u8EAC\uB0D5\u8EAC\uB0D6" + // 5140 - 5144
+ "\u8EAC\uB0D7\u8EAC\uB0D8\u8EAC\uB0D9\u8EAC\uB0DA\u8EAC\uB0DB" + // 5145 - 5149
+ "\u8EAC\uB0DC\u8EAC\uB0DD\u8EAC\uB0DE\u8EAC\uAFBD\u8EAC\uAFBE" + // 5150 - 5154
+ "\u8EAC\uAFBF\u8EAC\uAFC0\u8EAC\uAFC1\u8EAC\uAFC2\u8EAC\uAFC3" + // 5155 - 5159
+ "\u8EAC\uAFC4\u8EAC\uAFC5\u8EAC\uAFC6\u8EAC\uAFC7\u8EAC\uAFC8" + // 5160 - 5164
+ "\u8EAC\uAFC9\u8EAC\uAFCA\u8EAC\uAFCB\u8EAC\uAFCC\u8EAC\uAFCD" + // 5165 - 5169
+ "\u8EAC\uAFCE\u8EAC\uAFCF\u8EAC\uAFD0\u8EAC\uAFD1\u8EAC\uAFD2" + // 5170 - 5174
+ "\u8EAC\uAFD3\u8EAC\uAFD4\u8EAC\uAFD5\u8EAC\uAFD6\u8EAC\uAFD7" + // 5175 - 5179
+ "\u8EAC\uAFD8\u8EAC\uAFD9\u8EAC\uAFDA\u8EAC\uAFDB\u8EAC\uAFDC" + // 5180 - 5184
+ "\u8EAC\uAFDD\u8EAC\uAFDE\u8EAC\uAFDF\u8EAC\uAFE0\u8EAC\uAFE1" + // 5185 - 5189
+ "\u8EAC\uAFE2\u8EAC\uAFE3\u8EAC\uAFE4\u8EAC\uAFE5\u8EAC\uAFE6" + // 5190 - 5194
+ "\u8EAC\uAFE7\u8EAC\uAFE8\u8EAC\uAFE9\u8EAC\uAFEA\u8EAC\uAFEB" + // 5195 - 5199
+ "\u8EAC\uAFEC\u8EAC\uAFED\u8EAC\uAFEE\u8EAC\uAFEF\u8EAC\uAFF0" + // 5200 - 5204
+ "\u8EAC\uAFF1\u8EAC\uAFF2\u8EAC\uAFF3\u8EAC\uAFF4\u8EAC\uAFF5" + // 5205 - 5209
+ "\u8EAC\uAFF6\u8EAC\uAFF7\u8EAC\uAFF8\u8EAC\uAFF9\u8EAC\uAFFA" + // 5210 - 5214
+ "\u8EAC\uAFFB\u8EAC\uAFFC\u8EAC\uAEDB\u8EAC\uAEDC\u8EAC\uAEDD" + // 5215 - 5219
+ "\u8EAC\uAEDE\u8EAC\uAEDF\u8EAC\uAEE0\u8EAC\uAEE1\u8EAC\uAEE2" + // 5220 - 5224
+ "\u8EAC\uAEE3\u8EAC\uAEE4\u8EAC\uAEE5\u8EAC\uAEE6\u8EAC\uAEE7" + // 5225 - 5229
+ "\u8EAC\uAEE8\u8EAC\uAEE9\u8EAC\uAEEA\u8EAC\uAEEB\u8EAC\uAEEC" + // 5230 - 5234
+ "\u8EAC\uAEED\u8EAC\uAEEE\u8EAC\uAEEF\u8EAC\uAEF0\u8EAC\uAEF1" + // 5235 - 5239
+ "\u8EAC\uAEF2\u8EAC\uAEF3\u8EAC\uAEF4\u8EAC\uAEF5\u8EAC\uAEF6" + // 5240 - 5244
+ "\u8EAC\uAEF7\u8EAC\uAEF8\u8EAC\uAEF9\u8EAC\uAEFA\u8EAC\uAEFB" + // 5245 - 5249
+ "\u8EAC\uAEFC\u8EAC\uAEFD\u8EAC\uAEFE\u8EAC\uAFA1\u8EAC\uAFA2" + // 5250 - 5254
+ "\u8EAC\uAFA3\u8EAC\uAFA4\u8EAC\uAFA5\u8EAC\uAFA6\u8EAC\uAFA7" + // 5255 - 5259
+ "\u8EAC\uAFA8\u8EAC\uAFA9\u8EAC\uAFAA\u8EAC\uAFAB\u8EAC\uAFAC" + // 5260 - 5264
+ "\u8EAC\uAFAD\u8EAC\uAFAE\u8EAC\uAFAF\u8EAC\uAFB0\u8EAC\uAFB1" + // 5265 - 5269
+ "\u8EAC\uAFB2\u8EAC\uAFB3\u8EAC\uAFB4\u8EAC\uAFB5\u8EAC\uAFB6" + // 5270 - 5274
+ "\u8EAC\uAFB7\u8EAC\uAFB8\u8EAC\uAFB9\u8EAC\uAFBA\u8EAC\uAFBB" + // 5275 - 5279
+ "\u8EAC\uAFBC\u8EAC\uADF9\u8EAC\uADFA\u8EAC\uADFB\u8EAC\uADFC" + // 5280 - 5284
+ "\u8EAC\uADFD\u8EAC\uADFE\u8EAC\uAEA1\u8EAC\uAEA2\u8EAC\uAEA3" + // 5285 - 5289
+ "\u8EAC\uAEA4\u8EAC\uAEA5\u8EAC\uAEA6\u8EAC\uAEA7\u8EAC\uAEA8" + // 5290 - 5294
+ "\u8EAC\uAEA9\u8EAC\uAEAA\u8EAC\uAEAB\u8EAC\uAEAC\u8EAC\uAEAD" + // 5295 - 5299
+ "\u8EAC\uAEAE\u8EAC\uAEAF\u8EAC\uAEB0\u8EAC\uAEB1\u8EAC\uAEB2" + // 5300 - 5304
+ "\u8EAC\uAEB3\u8EAC\uAEB4\u8EAC\uAEB5\u8EAC\uAEB6\u8EAC\uAEB7" + // 5305 - 5309
+ "\u8EAC\uAEB8\u8EAC\uAEB9\u8EAC\uAEBA\u8EAC\uAEBB\u8EAC\uAEBC" + // 5310 - 5314
+ "\u8EAC\uAEBD\u8EAC\uAEBE\u8EAC\uAEBF\u8EAC\uAEC0\u8EAC\uAEC1" + // 5315 - 5319
+ "\u8EAC\uAEC2\u8EAC\uAEC3\u8EAC\uAEC4\u8EAC\uAEC5\u8EAC\uAEC6" + // 5320 - 5324
+ "\u8EAC\uAEC7\u8EAC\uAEC8\u8EAC\uAEC9\u8EAC\uAECA\u8EAC\uAECB" + // 5325 - 5329
+ "\u8EAC\uAECC\u8EAC\uAECD\u8EAC\uAECE\u8EAC\uAECF\u8EAC\uAED0" + // 5330 - 5334
+ "\u8EAC\uAED1\u8EAC\uAED2\u8EAC\uAED3\u8EAC\uAED4\u8EAC\uAED5" + // 5335 - 5339
+ "\u8EAC\uAED6\u8EAC\uAED7\u8EAC\uAED8\u8EAC\uAED9\u8EAC\uAEDA" + // 5340 - 5344
+ "\u8EAC\uADB9\u8EAC\uADBA\u8EAC\uADBB\u8EAC\uADBC\u8EAC\uADBD" + // 5345 - 5349
+ "\u8EAC\uADBE\u8EAC\uADBF\u8EAC\uADC0\u8EAC\uADC1\u8EAC\uADC2" + // 5350 - 5354
+ "\u8EAC\uADC3\u8EAC\uADC4\u8EAC\uADC5\u8EAC\uADC6\u8EAC\uADC7" + // 5355 - 5359
+ "\u8EAC\uADC8\u8EAC\uADC9\u8EAC\uADCA\u8EAC\uADCB\u8EAC\uADCC" + // 5360 - 5364
+ "\u8EAC\uADCD\u8EAC\uADCE\u8EAC\uADCF\u8EAC\uADD0\u8EAC\uADD1" + // 5365 - 5369
+ "\u8EAC\uADD2\u8EAC\uADD3\u8EAC\uADD4\u8EAC\uADD5\u8EAC\uADD6" + // 5370 - 5374
+ "\u8EAC\uADD7\u8EAC\uADD8\u8EAC\uADD9\u8EAC\uADDA\u8EAC\uADDB" + // 5375 - 5379
+ "\u8EAC\uADDC\u8EAC\uADDD\u8EAC\uADDE\u8EAC\uADDF\u8EAC\uADE0" + // 5380 - 5384
+ "\u8EAC\uADE1\u8EAC\uADE2\u8EAC\uADE3\u8EAC\uADE4\u8EAC\uADE5" + // 5385 - 5389
+ "\u8EAC\uADE6\u8EAC\uADE7\u8EAC\uADE8\u8EAC\uADE9\u8EAC\uADEA" + // 5390 - 5394
+ "\u8EAC\uADEB\u8EAC\uADEC\u8EAC\uADED\u8EAC\uADEE\u8EAC\uADEF" + // 5395 - 5399
+ "\u8EAC\uADF0\u8EAC\uADF1\u8EAC\uADF2\u8EAC\uADF3\u8EAC\uADF4" + // 5400 - 5404
+ "\u8EAC\uADF5\u8EAC\uADF6\u8EAC\uADF7\u8EAC\uADF8\u8EAC\uACD7" + // 5405 - 5409
+ "\u8EAC\uACD8\u8EAC\uACD9\u8EAC\uACDA\u8EAC\uACDB\u8EAC\uACDC" + // 5410 - 5414
+ "\u8EAC\uACDD\u8EAC\uACDE\u8EAC\uACDF\u8EAC\uACE0\u8EAC\uACE1" + // 5415 - 5419
+ "\u8EAC\uACE2\u8EAC\uACE3\u8EAC\uACE4\u8EAC\uACE5\u8EAC\uACE6" + // 5420 - 5424
+ "\u8EAC\uACE7\u8EAC\uACE8\u8EAC\uACE9\u8EAC\uACEA\u8EAC\uACEB" + // 5425 - 5429
+ "\u8EAC\uACEC\u8EAC\uACED\u8EAC\uACEE\u8EAC\uACEF\u8EAC\uACF0" + // 5430 - 5434
+ "\u8EAC\uACF1\u8EAC\uACF2\u8EAC\uACF3\u8EAC\uACF4\u8EAC\uACF5" + // 5435 - 5439
+ "\u8EAC\uACF6\u8EAC\uACF7\u8EAC\uACF8\u8EAC\uACF9\u8EAC\uACFA" + // 5440 - 5444
+ "\u8EAC\uACFB\u8EAC\uACFC\u8EAC\uACFD\u8EAC\uACFE\u8EAC\uADA1" + // 5445 - 5449
+ "\u8EAC\uADA2\u8EAC\uADA3\u8EAC\uADA4\u8EAC\uADA5\u8EAC\uADA6" + // 5450 - 5454
+ "\u8EAC\uADA7\u8EAC\uADA8\u8EAC\uADA9\u8EAC\uADAA\u8EAC\uADAB" + // 5455 - 5459
+ "\u8EAC\uADAC\u8EAC\uADAD\u8EAC\uADAE\u8EAC\uADAF\u8EAC\uADB0" + // 5460 - 5464
+ "\u8EAC\uADB1\u8EAC\uADB2\u8EAC\uADB3\u8EAC\uADB4\u8EAC\uADB5" + // 5465 - 5469
+ "\u8EAC\uADB6\u8EAC\uADB7\u8EAC\uADB8\u8EAC\uABF5\u8EAC\uABF6" + // 5470 - 5474
+ "\u8EAC\uABF7\u8EAC\uABF8\u8EAC\uABF9\u8EAC\uABFA\u8EAC\uABFB" + // 5475 - 5479
+ "\u8EAC\uABFC\u8EAC\uABFD\u8EAC\uABFE\u8EAC\uACA1\u8EAC\uACA2" + // 5480 - 5484
+ "\u8EAC\uACA3\u8EAC\uACA4\u8EAC\uACA5\u8EAC\uACA6\u8EAC\uACA7" + // 5485 - 5489
+ "\u8EAC\uACA8\u8EAC\uACA9\u8EAC\uACAA\u8EAC\uACAB\u8EAC\uACAC" + // 5490 - 5494
+ "\u8EAC\uACAD\u8EAC\uACAE\u8EAC\uACAF\u8EAC\uACB0\u8EAC\uACB1" + // 5495 - 5499
+ "\u8EAC\uACB2\u8EAC\uACB3\u8EAC\uACB4\u8EAC\uACB5\u8EAC\uACB6" + // 5500 - 5504
+ "\u8EAC\uACB7\u8EAC\uACB8\u8EAC\uACB9\u8EAC\uACBA\u8EAC\uACBB" + // 5505 - 5509
+ "\u8EAC\uACBC\u8EAC\uACBD\u8EAC\uACBE\u8EAC\uACBF\u8EAC\uACC0" + // 5510 - 5514
+ "\u8EAC\uACC1\u8EAC\uACC2\u8EAC\uACC3\u8EAC\uACC4\u8EAC\uACC5" + // 5515 - 5519
+ "\u8EAC\uACC6\u8EAC\uACC7\u8EAC\uACC8\u8EAC\uACC9\u8EAC\uACCA" + // 5520 - 5524
+ "\u8EAC\uACCB\u8EAC\uACCC\u8EAC\uACCD\u8EAC\uACCE\u8EAC\uACCF" + // 5525 - 5529
+ "\u8EAC\uACD0\u8EAC\uACD1\u8EAC\uACD2\u8EAC\uACD3\u8EAC\uACD4" + // 5530 - 5534
+ "\u8EAC\uACD5\u8EAC\uACD6\u8EAC\uABB5\u8EAC\uABB6\u8EAC\uABB7" + // 5535 - 5539
+ "\u8EAC\uABB8\u8EAC\uABB9\u8EAC\uABBA\u8EAC\uABBB\u8EAC\uABBC" + // 5540 - 5544
+ "\u8EAC\uABBD\u8EAC\uABBE\u8EAC\uABBF\u8EAC\uABC0\u8EAC\uABC1" + // 5545 - 5549
+ "\u8EAC\uABC2\u8EAC\uABC3\u8EAC\uABC4\u8EAC\uABC5\u8EAC\uABC6" + // 5550 - 5554
+ "\u8EAC\uABC7\u8EAC\uABC8\u8EAC\uABC9\u8EAC\uABCA\u8EAC\uABCB" + // 5555 - 5559
+ "\u8EAC\uABCC\u8EAC\uABCD\u8EAC\uABCE\u8EAC\uABCF\u8EAC\uABD0" + // 5560 - 5564
+ "\u8EAC\uABD1\u8EAC\uABD2\u8EAC\uABD3\u8EAC\uABD4\u8EAC\uABD5" + // 5565 - 5569
+ "\u8EAC\uABD6\u8EAC\uABD7\u8EAC\uABD8\u8EAC\uABD9\u8EAC\uABDA" + // 5570 - 5574
+ "\u8EAC\uABDB\u8EAC\uABDC\u8EAC\uABDD\u8EAC\uABDE\u8EAC\uABDF" + // 5575 - 5579
+ "\u8EAC\uABE0\u8EAC\uABE1\u8EAC\uABE2\u8EAC\uABE3\u8EAC\uABE4" + // 5580 - 5584
+ "\u8EAC\uABE5\u8EAC\uABE6\u8EAC\uABE7\u8EAC\uABE8\u8EAC\uABE9" + // 5585 - 5589
+ "\u8EAC\uABEA\u8EAC\uABEB\u8EAC\uABEC\u8EAC\uABED\u8EAC\uABEE" + // 5590 - 5594
+ "\u8EAC\uABEF\u8EAC\uABF0\u8EAC\uABF1\u8EAC\uABF2\u8EAC\uABF3" + // 5595 - 5599
+ "\u8EAC\uABF4\u8EAC\uAAD3\u8EAC\uAAD4\u8EAC\uAAD5\u8EAC\uAAD6" + // 5600 - 5604
+ "\u8EAC\uAAD7\u8EAC\uAAD8\u8EAC\uAAD9\u8EAC\uAADA\u8EAC\uAADB" + // 5605 - 5609
+ "\u8EAC\uAADC\u8EAC\uAADD\u8EAC\uAADE\u8EAC\uAADF\u8EAC\uAAE0" + // 5610 - 5614
+ "\u8EAC\uAAE1\u8EAC\uAAE2\u8EAC\uAAE3\u8EAC\uAAE4\u8EAC\uAAE5" + // 5615 - 5619
+ "\u8EAC\uAAE6\u8EAC\uAAE7\u8EAC\uAAE8\u8EAC\uAAE9\u8EAC\uAAEA" + // 5620 - 5624
+ "\u8EAC\uAAEB\u8EAC\uAAEC\u8EAC\uAAED\u8EAC\uAAEE\u8EAC\uAAEF" + // 5625 - 5629
+ "\u8EAC\uAAF0\u8EAC\uAAF1\u8EAC\uAAF2\u8EAC\uAAF3\u8EAC\uAAF4" + // 5630 - 5634
+ "\u8EAC\uAAF5\u8EAC\uAAF6\u8EAC\uAAF7\u8EAC\uAAF8\u8EAC\uAAF9" + // 5635 - 5639
+ "\u8EAC\uAAFA\u8EAC\uAAFB\u8EAC\uAAFC\u8EAC\uAAFD\u8EAC\uAAFE" + // 5640 - 5644
+ "\u8EAC\uABA1\u8EAC\uABA2\u8EAC\uABA3\u8EAC\uABA4\u8EAC\uABA5" + // 5645 - 5649
+ "\u8EAC\uABA6\u8EAC\uABA7\u8EAC\uABA8\u8EAC\uABA9\u8EAC\uABAA" + // 5650 - 5654
+ "\u8EAC\uABAB\u8EAC\uABAC\u8EAC\uABAD\u8EAC\uABAE\u8EAC\uABAF" + // 5655 - 5659
+ "\u8EAC\uABB0\u8EAC\uABB1\u8EAC\uABB2\u8EAC\uABB3\u8EAC\uABB4" + // 5660 - 5664
+ "\u8EAC\uA9F1\u8EAC\uA9F2\u8EAC\uA9F3\u8EAC\uA9F4\u8EAC\uA9F5" + // 5665 - 5669
+ "\u8EAC\uA9F6\u8EAC\uA9F7\u8EAC\uA9F8\u8EAC\uA9F9\u8EAC\uA9FA" + // 5670 - 5674
+ "\u8EAC\uA9FB\u8EAC\uA9FC\u8EAC\uA9FD\u8EAC\uA9FE\u8EAC\uAAA1" + // 5675 - 5679
+ "\u8EAC\uAAA2\u8EAC\uAAA3\u8EAC\uAAA4\u8EAC\uAAA5\u8EAC\uAAA6" + // 5680 - 5684
+ "\u8EAC\uAAA7\u8EAC\uAAA8\u8EAC\uAAA9\u8EAC\uAAAA\u8EAC\uAAAB" + // 5685 - 5689
+ "\u8EAC\uAAAC\u8EAC\uAAAD\u8EAC\uAAAE\u8EAC\uAAAF\u8EAC\uAAB0" + // 5690 - 5694
+ "\u8EAC\uAAB1\u8EAC\uAAB2\u8EAC\uAAB3\u8EAC\uAAB4\u8EAC\uAAB5" + // 5695 - 5699
+ "\u8EAC\uAAB6\u8EAC\uAAB7\u8EAC\uAAB8\u8EAC\uAAB9\u8EAC\uAABA" + // 5700 - 5704
+ "\u8EAC\uAABB\u8EAC\uAABC\u8EAC\uAABD\u8EAC\uAABE\u8EAC\uAABF" + // 5705 - 5709
+ "\u8EAC\uAAC0\u8EAC\uAAC1\u8EAC\uAAC2\u8EAC\uAAC3\u8EAC\uAAC4" + // 5710 - 5714
+ "\u8EAC\uAAC5\u8EAC\uAAC6\u8EAC\uAAC7\u8EAC\uAAC8\u8EAC\uAAC9" + // 5715 - 5719
+ "\u8EAC\uAACA\u8EAC\uAACB\u8EAC\uAACC\u8EAC\uAACD\u8EAC\uAACE" + // 5720 - 5724
+ "\u8EAC\uAACF\u8EAC\uAAD0\u8EAC\uAAD1\u8EAC\uAAD2\u8EAC\uA9B1" + // 5725 - 5729
+ "\u8EAC\uA9B2\u8EAC\uA9B3\u8EAC\uA9B4\u8EAC\uA9B5\u8EAC\uA9B6" + // 5730 - 5734
+ "\u8EAC\uA9B7\u8EAC\uA9B8\u8EAC\uA9B9\u8EAC\uA9BA\u8EAC\uA9BB" + // 5735 - 5739
+ "\u8EAC\uA9BC\u8EAC\uA9BD\u8EAC\uA9BE\u8EAC\uA9BF\u8EAC\uA9C0" + // 5740 - 5744
+ "\u8EAC\uA9C1\u8EAC\uA9C2\u8EAC\uA9C3\u8EAC\uA9C4\u8EAC\uA9C5" + // 5745 - 5749
+ "\u8EAC\uA9C6\u8EAC\uA9C7\u8EAC\uA9C8\u8EAC\uA9C9\u8EAC\uA9CA" + // 5750 - 5754
+ "\u8EAC\uA9CB\u8EAC\uA9CC\u8EAC\uA9CD\u8EAC\uA9CE\u8EAC\uA9CF" + // 5755 - 5759
+ "\u8EAC\uA9D0\u8EAC\uA9D1\u8EAC\uA9D2\u8EAC\uA9D3\u8EAC\uA9D4" + // 5760 - 5764
+ "\u8EAC\uA9D5\u8EAC\uA9D6\u8EAC\uA9D7\u8EAC\uA9D8\u8EAC\uA9D9" + // 5765 - 5769
+ "\u8EAC\uA9DA\u8EAC\uA9DB\u8EAC\uA9DC\u8EAC\uA9DD\u8EAC\uA9DE" + // 5770 - 5774
+ "\u8EAC\uA9DF\u8EAC\uA9E0\u8EAC\uA9E1\u8EAC\uA9E2\u8EAC\uA9E3" + // 5775 - 5779
+ "\u8EAC\uA9E4\u8EAC\uA9E5\u8EAC\uA9E6\u8EAC\uA9E7\u8EAC\uA9E8" + // 5780 - 5784
+ "\u8EAC\uA9E9\u8EAC\uA9EA\u8EAC\uA9EB\u8EAC\uA9EC\u8EAC\uA9ED" + // 5785 - 5789
+ "\u8EAC\uA9EE\u8EAC\uA9EF\u8EAC\uA9F0\u8EAC\uA8CF\u8EAC\uA8D0" + // 5790 - 5794
+ "\u8EAC\uA8D1\u8EAC\uA8D2\u8EAC\uA8D3\u8EAC\uA8D4\u8EAC\uA8D5" + // 5795 - 5799
+ "\u8EAC\uA8D6\u8EAC\uA8D7\u8EAC\uA8D8\u8EAC\uA8D9\u8EAC\uA8DA" + // 5800 - 5804
+ "\u8EAC\uA8DB\u8EAC\uA8DC\u8EAC\uA8DD\u8EAC\uA8DE\u8EAC\uA8DF" + // 5805 - 5809
+ "\u8EAC\uA8E0\u8EAC\uA8E1\u8EAC\uA8E2\u8EAC\uA8E3\u8EAC\uA8E4" + // 5810 - 5814
+ "\u8EAC\uA8E5\u8EAC\uA8E6\u8EAC\uA8E7\u8EAC\uA8E8\u8EAC\uA8E9" + // 5815 - 5819
+ "\u8EAC\uA8EA\u8EAC\uA8EB\u8EAC\uA8EC\u8EAC\uA8ED\u8EAC\uA8EE" + // 5820 - 5824
+ "\u8EAC\uA8EF\u8EAC\uA8F0\u8EAC\uA8F1\u8EAC\uA8F2\u8EAC\uA8F3" + // 5825 - 5829
+ "\u8EAC\uA8F4\u8EAC\uA8F5\u8EAC\uA8F6\u8EAC\uA8F7\u8EAC\uA8F8" + // 5830 - 5834
+ "\u8EAC\uA8F9\u8EAC\uA8FA\u8EAC\uA8FB\u8EAC\uA8FC\u8EAC\uA8FD" + // 5835 - 5839
+ "\u8EAC\uA8FE\u8EAC\uA9A1\u8EAC\uA9A2\u8EAC\uA9A3\u8EAC\uA9A4" + // 5840 - 5844
+ "\u8EAC\uA9A5\u8EAC\uA9A6\u8EAC\uA9A7\u8EAC\uA9A8\u8EAC\uA9A9" + // 5845 - 5849
+ "\u8EAC\uA9AA\u8EAC\uA9AB\u8EAC\uA9AC\u8EAC\uA9AD\u8EAC\uA9AE" + // 5850 - 5854
+ "\u8EAC\uA9AF\u8EAC\uA9B0\u8EAC\uA7ED\u8EAC\uA7EE\u8EAC\uA7EF" + // 5855 - 5859
+ "\u8EAC\uA7F0\u8EAC\uA7F1\u8EAC\uA7F2\u8EAC\uA7F3\u8EAC\uA7F4" + // 5860 - 5864
+ "\u8EAC\uA7F5\u8EAC\uA7F6\u8EAC\uA7F7\u8EAC\uA7F8\u8EAC\uA7F9" + // 5865 - 5869
+ "\u8EAC\uA7FA\u8EAC\uA7FB\u8EAC\uA7FC\u8EAC\uA7FD\u8EAC\uA7FE" + // 5870 - 5874
+ "\u8EAC\uA8A1\u8EAC\uA8A2\u8EAC\uA8A3\u8EAC\uA8A4\u8EAC\uA8A5" + // 5875 - 5879
+ "\u8EAC\uA8A6\u8EAC\uA8A7\u8EAC\uA8A8\u8EAC\uA8A9\u8EAC\uA8AA" + // 5880 - 5884
+ "\u8EAC\uA8AB\u8EAC\uA8AC\u8EAC\uA8AD\u8EAC\uA8AE\u8EAC\uA8AF" + // 5885 - 5889
+ "\u8EAC\uA8B0\u8EAC\uA8B1\u8EAC\uA8B2\u8EAC\uA8B3\u8EAC\uA8B4" + // 5890 - 5894
+ "\u8EAC\uA8B5\u8EAC\uA8B6\u8EAC\uA8B7\u8EAC\uA8B8\u8EAC\uA8B9" + // 5895 - 5899
+ "\u8EAC\uA8BA\u8EAC\uA8BB\u8EAC\uA8BC\u8EAC\uA8BD\u8EAC\uA8BE" + // 5900 - 5904
+ "\u8EAC\uA8BF\u8EAC\uA8C0\u8EAC\uA8C1\u8EAC\uA8C2\u8EAC\uA8C3" + // 5905 - 5909
+ "\u8EAC\uA8C4\u8EAC\uA8C5\u8EAC\uA8C6\u8EAC\uA8C7\u8EAC\uA8C8" + // 5910 - 5914
+ "\u8EAC\uA8C9\u8EAC\uA8CA\u8EAC\uA8CB\u8EAC\uA8CC\u8EAC\uA8CD" + // 5915 - 5919
+ "\u8EAC\uA8CE\u8EAC\uA7AD\u8EAC\uA7AE\u8EAC\uA7AF\u8EAC\uA7B0" + // 5920 - 5924
+ "\u8EAC\uA7B1\u8EAC\uA7B2\u8EAC\uA7B3\u8EAC\uA7B4\u8EAC\uA7B5" + // 5925 - 5929
+ "\u8EAC\uA7B6\u8EAC\uA7B7\u8EAC\uA7B8\u8EAC\uA7B9\u8EAC\uA7BA" + // 5930 - 5934
+ "\u8EAC\uA7BB\u8EAC\uA7BC\u8EAC\uA7BD\u8EAC\uA7BE\u8EAC\uA7BF" + // 5935 - 5939
+ "\u8EAC\uA7C0\u8EAC\uA7C1\u8EAC\uA7C2\u8EAC\uA7C3\u8EAC\uA7C4" + // 5940 - 5944
+ "\u8EAC\uA7C5\u8EAC\uA7C6\u8EAC\uA7C7\u8EAC\uA7C8\u8EAC\uA7C9" + // 5945 - 5949
+ "\u8EAC\uA7CA\u8EAC\uA7CB\u8EAC\uA7CC\u8EAC\uA7CD\u8EAC\uA7CE" + // 5950 - 5954
+ "\u8EAC\uA7CF\u8EAC\uA7D0\u8EAC\uA7D1\u8EAC\uA7D2\u8EAC\uA7D3" + // 5955 - 5959
+ "\u8EAC\uA7D4\u8EAC\uA7D5\u8EAC\uA7D6\u8EAC\uA7D7\u8EAC\uA7D8" + // 5960 - 5964
+ "\u8EAC\uA7D9\u8EAC\uA7DA\u8EAC\uA7DB\u8EAC\uA7DC\u8EAC\uA7DD" + // 5965 - 5969
+ "\u8EAC\uA7DE\u8EAC\uA7DF\u8EAC\uA7E0\u8EAC\uA7E1\u8EAC\uA7E2" + // 5970 - 5974
+ "\u8EAC\uA7E3\u8EAC\uA7E4\u8EAC\uA7E5\u8EAC\uA7E6\u8EAC\uA7E7" + // 5975 - 5979
+ "\u8EAC\uA7E8\u8EAC\uA7E9\u8EAC\uA7EA\u8EAC\uA7EB\u8EAC\uA7EC" + // 5980 - 5984
+ "\u8EAC\uA6CB\u8EAC\uA6CC\u8EAC\uA6CD\u8EAC\uA6CE\u8EAC\uA6CF" + // 5985 - 5989
+ "\u8EAC\uA6D0\u8EAC\uA6D1\u8EAC\uA6D2\u8EAC\uA6D3\u8EAC\uA6D4" + // 5990 - 5994
+ "\u8EAC\uA6D5\u8EAC\uA6D6\u8EAC\uA6D7\u8EAC\uA6D8\u8EAC\uA6D9" + // 5995 - 5999
+ "\u8EAC\uA6DA\u8EAC\uA6DB\u8EAC\uA6DC\u8EAC\uA6DD\u8EAC\uA6DE" + // 6000 - 6004
+ "\u8EAC\uA6DF\u8EAC\uA6E0\u8EAC\uA6E1\u8EAC\uA6E2\u8EAC\uA6E3" + // 6005 - 6009
+ "\u8EAC\uA6E4\u8EAC\uA6E5\u8EAC\uA6E6\u8EAC\uA6E7\u8EAC\uA6E8" + // 6010 - 6014
+ "\u8EAC\uA6E9\u8EAC\uA6EA\u8EAC\uA6EB\u8EAC\uA6EC\u8EAC\uA6ED" + // 6015 - 6019
+ "\u8EAC\uA6EE\u8EAC\uA6EF\u8EAC\uA6F0\u8EAC\uA6F1\u8EAC\uA6F2" + // 6020 - 6024
+ "\u8EAC\uA6F3\u8EAC\uA6F4\u8EAC\uA6F5\u8EAC\uA6F6\u8EAC\uA6F7" + // 6025 - 6029
+ "\u8EAC\uA6F8\u8EAC\uA6F9\u8EAC\uA6FA\u8EAC\uA6FB\u8EAC\uA6FC" + // 6030 - 6034
+ "\u8EAC\uA6FD\u8EAC\uA6FE\u8EAC\uA7A1\u8EAC\uA7A2\u8EAC\uA7A3" + // 6035 - 6039
+ "\u8EAC\uA7A4\u8EAC\uA7A5\u8EAC\uA7A6\u8EAC\uA7A7\u8EAC\uA7A8" + // 6040 - 6044
+ "\u8EAC\uA7A9\u8EAC\uA7AA\u8EAC\uA7AB\u8EAC\uA7AC\u8EAC\uA5E9" + // 6045 - 6049
+ "\u8EAC\uA5EA\u8EAC\uA5EB\u8EAC\uA5EC\u8EAC\uA5ED\u8EAC\uA5EE" + // 6050 - 6054
+ "\u8EAC\uA5EF\u8EAC\uA5F0\u8EAC\uA5F1\u8EAC\uA5F2\u8EAC\uA5F3" + // 6055 - 6059
+ "\u8EAC\uA5F4\u8EAC\uA5F5\u8EAC\uA5F6\u8EAC\uA5F7\u8EAC\uA5F8" + // 6060 - 6064
+ "\u8EAC\uA5F9\u8EAC\uA5FA\u8EAC\uA5FB\u8EAC\uA5FC\u8EAC\uA5FD" + // 6065 - 6069
+ "\u8EAC\uA5FE\u8EAC\uA6A1\u8EAC\uA6A2\u8EAC\uA6A3\u8EAC\uA6A4" + // 6070 - 6074
+ "\u8EAC\uA6A5\u8EAC\uA6A6\u8EAC\uA6A7\u8EAC\uA6A8\u8EAC\uA6A9" + // 6075 - 6079
+ "\u8EAC\uA6AA\u8EAC\uA6AB\u8EAC\uA6AC\u8EAC\uA6AD\u8EAC\uA6AE" + // 6080 - 6084
+ "\u8EAC\uA6AF\u8EAC\uA6B0\u8EAC\uA6B1\u8EAC\uA6B2\u8EAC\uA6B3" + // 6085 - 6089
+ "\u8EAC\uA6B4\u8EAC\uA6B5\u8EAC\uA6B6\u8EAC\uA6B7\u8EAC\uA6B8" + // 6090 - 6094
+ "\u8EAC\uA6B9\u8EAC\uA6BA\u8EAC\uA6BB\u8EAC\uA6BC\u8EAC\uA6BD" + // 6095 - 6099
+ "\u8EAC\uA6BE\u8EAC\uA6BF\u8EAC\uA6C0\u8EAC\uA6C1\u8EAC\uA6C2" + // 6100 - 6104
+ "\u8EAC\uA6C3\u8EAC\uA6C4\u8EAC\uA6C5\u8EAC\uA6C6\u8EAC\uA6C7" + // 6105 - 6109
+ "\u8EAC\uA6C8\u8EAC\uA6C9\u8EAC\uA6CA\u8EAC\uA5A9\u8EAC\uA5AA" + // 6110 - 6114
+ "\u8EAC\uA5AB\u8EAC\uA5AC\u8EAC\uA5AD\u8EAC\uA5AE\u8EAC\uA5AF" + // 6115 - 6119
+ "\u8EAC\uA5B0\u8EAC\uA5B1\u8EAC\uA5B2\u8EAC\uA5B3\u8EAC\uA5B4" + // 6120 - 6124
+ "\u8EAC\uA5B5\u8EAC\uA5B6\u8EAC\uA5B7\u8EAC\uA5B8\u8EAC\uA5B9" + // 6125 - 6129
+ "\u8EAC\uA5BA\u8EAC\uA5BB\u8EAC\uA5BC\u8EAC\uA5BD\u8EAC\uA5BE" + // 6130 - 6134
+ "\u8EAC\uA5BF\u8EAC\uA5C0\u8EAC\uA5C1\u8EAC\uA5C2\u8EAC\uA5C3" + // 6135 - 6139
+ "\u8EAC\uA5C4\u8EAC\uA5C5\u8EAC\uA5C6\u8EAC\uA5C7\u8EAC\uA5C8" + // 6140 - 6144
+ "\u8EAC\uA5C9\u8EAC\uA5CA\u8EAC\uA5CB\u8EAC\uA5CC\u8EAC\uA5CD" + // 6145 - 6149
+ "\u8EAC\uA5CE\u8EAC\uA5CF\u8EAC\uA5D0\u8EAC\uA5D1\u8EAC\uA5D2" + // 6150 - 6154
+ "\u8EAC\uA5D3\u8EAC\uA5D4\u8EAC\uA5D5\u8EAC\uA5D6\u8EAC\uA5D7" + // 6155 - 6159
+ "\u8EAC\uA5D8\u8EAC\uA5D9\u8EAC\uA5DA\u8EAC\uA5DB\u8EAC\uA5DC" + // 6160 - 6164
+ "\u8EAC\uA5DD\u8EAC\uA5DE\u8EAC\uA5DF\u8EAC\uA5E0\u8EAC\uA5E1" + // 6165 - 6169
+ "\u8EAC\uA5E2\u8EAC\uA5E3\u8EAC\uA5E4\u8EAC\uA5E5\u8EAC\uA5E6" + // 6170 - 6174
+ "\u8EAC\uA5E7\u8EAC\uA5E8\u8EAC\uA4C7\u8EAC\uA4C8\u8EAC\uA4C9" + // 6175 - 6179
+ "\u8EAC\uA4CA\u8EAC\uA4CB\u8EAC\uA4CC\u8EAC\uA4CD\u8EAC\uA4CE" + // 6180 - 6184
+ "\u8EAC\uA4CF\u8EAC\uA4D0\u8EAC\uA4D1\u8EAC\uA4D2\u8EAC\uA4D3" + // 6185 - 6189
+ "\u8EAC\uA4D4\u8EAC\uA4D5\u8EAC\uA4D6\u8EAC\uA4D7\u8EAC\uA4D8" + // 6190 - 6194
+ "\u8EAC\uA4D9\u8EAC\uA4DA\u8EAC\uA4DB\u8EAC\uA4DC\u8EAC\uA4DD" + // 6195 - 6199
+ "\u8EAC\uA4DE\u8EAC\uA4DF\u8EAC\uA4E0\u8EAC\uA4E1\u8EAC\uA4E2" + // 6200 - 6204
+ "\u8EAC\uA4E3\u8EAC\uA4E4\u8EAC\uA4E5\u8EAC\uA4E6\u8EAC\uA4E7" + // 6205 - 6209
+ "\u8EAC\uA4E8\u8EAC\uA4E9\u8EAC\uA4EA\u8EAC\uA4EB\u8EAC\uA4EC" + // 6210 - 6214
+ "\u8EAC\uA4ED\u8EAC\uA4EE\u8EAC\uA4EF\u8EAC\uA4F0\u8EAC\uA4F1" + // 6215 - 6219
+ "\u8EAC\uA4F2\u8EAC\uA4F3\u8EAC\uA4F4\u8EAC\uA4F5\u8EAC\uA4F6" + // 6220 - 6224
+ "\u8EAC\uA4F7\u8EAC\uA4F8\u8EAC\uA4F9\u8EAC\uA4FA\u8EAC\uA4FB" + // 6225 - 6229
+ "\u8EAC\uA4FC\u8EAC\uA4FD\u8EAC\uA4FE\u8EAC\uA5A1\u8EAC\uA5A2" + // 6230 - 6234
+ "\u8EAC\uA5A3\u8EAC\uA5A4\u8EAC\uA5A5\u8EAC\uA5A6\u8EAC\uA5A7" + // 6235 - 6239
+ "\u8EAC\uA5A8\u8EAC\uA3E5\u8EAC\uA3E6\u8EAC\uA3E7\u8EAC\uA3E8" + // 6240 - 6244
+ "\u8EAC\uA3E9\u8EAC\uA3EA\u8EAC\uA3EB\u8EAC\uA3EC\u8EAC\uA3ED" + // 6245 - 6249
+ "\u8EAC\uA3EE\u8EAC\uA3EF\u8EAC\uA3F0\u8EAC\uA3F1\u8EAC\uA3F2" + // 6250 - 6254
+ "\u8EAC\uA3F3\u8EAC\uA3F4\u8EAC\uA3F5\u8EAC\uA3F6\u8EAC\uA3F7" + // 6255 - 6259
+ "\u8EAC\uA3F8\u8EAC\uA3F9\u8EAC\uA3FA\u8EAC\uA3FB\u8EAC\uA3FC" + // 6260 - 6264
+ "\u8EAC\uA3FD\u8EAC\uA3FE\u8EAC\uA4A1\u8EAC\uA4A2\u8EAC\uA4A3" + // 6265 - 6269
+ "\u8EAC\uA4A4\u8EAC\uA4A5\u8EAC\uA4A6\u8EAC\uA4A7\u8EAC\uA4A8" + // 6270 - 6274
+ "\u8EAC\uA4A9\u8EAC\uA4AA\u8EAC\uA4AB\u8EAC\uA4AC\u8EAC\uA4AD" + // 6275 - 6279
+ "\u8EAC\uA4AE\u8EAC\uA4AF\u8EAC\uA4B0\u8EAC\uA4B1\u8EAC\uA4B2" + // 6280 - 6284
+ "\u8EAC\uA4B3\u8EAC\uA4B4\u8EAC\uA4B5\u8EAC\uA4B6\u8EAC\uA4B7" + // 6285 - 6289
+ "\u8EAC\uA4B8\u8EAC\uA4B9\u8EAC\uA4BA\u8EAC\uA4BB\u8EAC\uA4BC" + // 6290 - 6294
+ "\u8EAC\uA4BD\u8EAC\uA4BE\u8EAC\uA4BF\u8EAC\uA4C0\u8EAC\uA4C1" + // 6295 - 6299
+ "\u8EAC\uA4C2\u8EAC\uA4C3\u8EAC\uA4C4\u8EAC\uA4C5\u8EAC\uA4C6" + // 6300 - 6304
+ "\u8EAC\uA3A5\u8EAC\uA3A6\u8EAC\uA3A7\u8EAC\uA3A8\u8EAC\uA3A9" + // 6305 - 6309
+ "\u8EAC\uA3AA\u8EAC\uA3AB\u8EAC\uA3AC\u8EAC\uA3AD\u8EAC\uA3AE" + // 6310 - 6314
+ "\u8EAC\uA3AF\u8EAC\uA3B0\u8EAC\uA3B1\u8EAC\uA3B2\u8EAC\uA3B3" + // 6315 - 6319
+ "\u8EAC\uA3B4\u8EAC\uA3B5\u8EAC\uA3B6\u8EAC\uA3B7\u8EAC\uA3B8" + // 6320 - 6324
+ "\u8EAC\uA3B9\u8EAC\uA3BA\u8EAC\uA3BB\u8EAC\uA3BC\u8EAC\uA3BD" + // 6325 - 6329
+ "\u8EAC\uA3BE\u8EAC\uA3BF\u8EAC\uA3C0\u8EAC\uA3C1\u8EAC\uA3C2" + // 6330 - 6334
+ "\u8EAC\uA3C3\u8EAC\uA3C4\u8EAC\uA3C5\u8EAC\uA3C6\u8EAC\uA3C7" + // 6335 - 6339
+ "\u8EAC\uA3C8\u8EAC\uA3C9\u8EAC\uA3CA\u8EAC\uA3CB\u8EAC\uA3CC" + // 6340 - 6344
+ "\u8EAC\uA3CD\u8EAC\uA3CE\u8EAC\uA3CF\u8EAC\uA3D0\u8EAC\uA3D1" + // 6345 - 6349
+ "\u8EAC\uA3D2\u8EAC\uA3D3\u8EAC\uA3D4\u8EAC\uA3D5\u8EAC\uA3D6" + // 6350 - 6354
+ "\u8EAC\uA3D7\u8EAC\uA3D8\u8EAC\uA3D9\u8EAC\uA3DA\u8EAC\uA3DB" + // 6355 - 6359
+ "\u8EAC\uA3DC\u8EAC\uA3DD\u8EAC\uA3DE\u8EAC\uA3DF\u8EAC\uA3E0" + // 6360 - 6364
+ "\u8EAC\uA3E1\u8EAC\uA3E2\u8EAC\uA3E3\u8EAC\uA3E4\u8EAC\uA2C3" + // 6365 - 6369
+ "\u8EAC\uA2C4\u8EAC\uA2C5\u8EAC\uA2C6\u8EAC\uA2C7\u8EAC\uA2C8" + // 6370 - 6374
+ "\u8EAC\uA2C9\u8EAC\uA2CA\u8EAC\uA2CB\u8EAC\uA2CC\u8EAC\uA2CD" + // 6375 - 6379
+ "\u8EAC\uA2CE\u8EAC\uA2CF\u8EAC\uA2D0\u8EAC\uA2D1\u8EAC\uA2D2" + // 6380 - 6384
+ "\u8EAC\uA2D3\u8EAC\uA2D4\u8EAC\uA2D5\u8EAC\uA2D6\u8EAC\uA2D7" + // 6385 - 6389
+ "\u8EAC\uA2D8\u8EAC\uA2D9\u8EAC\uA2DA\u8EAC\uA2DB\u8EAC\uA2DC" + // 6390 - 6394
+ "\u8EAC\uA2DD\u8EAC\uA2DE\u8EAC\uA2DF\u8EAC\uA2E0\u8EAC\uA2E1" + // 6395 - 6399
+ "\u8EAC\uA2E2\u8EAC\uA2E3\u8EAC\uA2E4\u8EAC\uA2E5\u8EAC\uA2E6" + // 6400 - 6404
+ "\u8EAC\uA2E7\u8EAC\uA2E8\u8EAC\uA2E9\u8EAC\uA2EA\u8EAC\uA2EB" + // 6405 - 6409
+ "\u8EAC\uA2EC\u8EAC\uA2ED\u8EAC\uA2EE\u8EAC\uA2EF\u8EAC\uA2F0" + // 6410 - 6414
+ "\u8EAC\uA2F1\u8EAC\uA2F2\u8EAC\uA2F3\u8EAC\uA2F4\u8EAC\uA2F5" + // 6415 - 6419
+ "\u8EAC\uA2F6\u8EAC\uA2F7\u8EAC\uA2F8\u8EAC\uA2F9\u8EAC\uA2FA" + // 6420 - 6424
+ "\u8EAC\uA2FB\u8EAC\uA2FC\u8EAC\uA2FD\u8EAC\uA2FE\u8EAC\uA3A1" + // 6425 - 6429
+ "\u8EAC\uA3A2\u8EAC\uA3A3\u8EAC\uA3A4\u8EAC\uA1E1\u8EAC\uA1E2" + // 6430 - 6434
+ "\u8EAC\uA1E3\u8EAC\uA1E4\u8EAC\uA1E5\u8EAC\uA1E6\u8EAC\uA1E7" + // 6435 - 6439
+ "\u8EAC\uA1E8\u8EAC\uA1E9\u8EAC\uA1EA\u8EAC\uA1EB\u8EAC\uA1EC" + // 6440 - 6444
+ "\u8EAC\uA1ED\u8EAC\uA1EE\u8EAC\uA1EF\u8EAC\uA1F0\u8EAC\uA1F1" + // 6445 - 6449
+ "\u8EAC\uA1F2\u8EAC\uA1F3\u8EAC\uA1F4\u8EAC\uA1F5\u8EAC\uA1F6" + // 6450 - 6454
+ "\u8EAC\uA1F7\u8EAC\uA1F8\u8EAC\uA1F9\u8EAC\uA1FA\u8EAC\uA1FB" + // 6455 - 6459
+ "\u8EAC\uA1FC\u8EAC\uA1FD\u8EAC\uA1FE\u8EAC\uA2A1\u8EAC\uA2A2" + // 6460 - 6464
+ "\u8EAC\uA2A3\u8EAC\uA2A4\u8EAC\uA2A5\u8EAC\uA2A6\u8EAC\uA2A7" + // 6465 - 6469
+ "\u8EAC\uA2A8\u8EAC\uA2A9\u8EAC\uA2AA\u8EAC\uA2AB\u8EAC\uA2AC" + // 6470 - 6474
+ "\u8EAC\uA2AD\u8EAC\uA2AE\u8EAC\uA2AF\u8EAC\uA2B0\u8EAC\uA2B1" + // 6475 - 6479
+ "\u8EAC\uA2B2\u8EAC\uA2B3\u8EAC\uA2B4\u8EAC\uA2B5\u8EAC\uA2B6" + // 6480 - 6484
+ "\u8EAC\uA2B7\u8EAC\uA2B8\u8EAC\uA2B9\u8EAC\uA2BA\u8EAC\uA2BB" + // 6485 - 6489
+ "\u8EAC\uA2BC\u8EAC\uA2BD\u8EAC\uA2BE\u8EAC\uA2BF\u8EAC\uA2C0" + // 6490 - 6494
+ "\u8EAC\uA2C1\u8EAC\uA2C2\u8EAC\uA1A1\u8EAC\uA1A2\u8EAC\uA1A3" + // 6495 - 6499
+ "\u8EAC\uA1A4\u8EAC\uA1A5\u8EAC\uA1A6\u8EAC\uA1A7\u8EAC\uA1A8" + // 6500 - 6504
+ "\u8EAC\uA1A9\u8EAC\uA1AA\u8EAC\uA1AB\u8EAC\uA1AC\u8EAC\uA1AD" + // 6505 - 6509
+ "\u8EAC\uA1AE\u8EAC\uA1AF\u8EAC\uA1B0\u8EAC\uA1B1\u8EAC\uA1B2" + // 6510 - 6514
+ "\u8EAC\uA1B3\u8EAC\uA1B4\u8EAC\uA1B5\u8EAC\uA1B6\u8EAC\uA1B7" + // 6515 - 6519
+ "\u8EAC\uA1B8\u8EAC\uA1B9\u8EAC\uA1BA\u8EAC\uA1BB\u8EAC\uA1BC" + // 6520 - 6524
+ "\u8EAC\uA1BD\u8EAC\uA1BE\u8EAC\uA1BF\u8EAC\uA1C0\u8EAC\uA1C1" + // 6525 - 6529
+ "\u8EAC\uA1C2\u8EAC\uA1C3\u8EAC\uA1C4\u8EAC\uA1C5\u8EAC\uA1C6" + // 6530 - 6534
+ "\u8EAC\uA1C7\u8EAC\uA1C8\u8EAC\uA1C9\u8EAC\uA1CA\u8EAC\uA1CB" + // 6535 - 6539
+ "\u8EAC\uA1CC\u8EAC\uA1CD\u8EAC\uA1CE\u8EAC\uA1CF\u8EAC\uA1D0" + // 6540 - 6544
+ "\u8EAC\uA1D1\u8EAC\uA1D2\u8EAC\uA1D3\u8EAC\uA1D4\u8EAC\uA1D5" + // 6545 - 6549
+ "\u8EAC\uA1D6\u8EAC\uA1D7\u8EAC\uA1D8\u8EAC\uA1D9\u8EAC\uA1DA" + // 6550 - 6554
+ "\u8EAC\uA1DB\u8EAC\uA1DC\u8EAC\uA1DD\u8EAC\uA1DE\u8EAC\uA1DF" + // 6555 - 6559
+ "\u8EAC\uA1E0\u8EA2\uE8E4\u8EA2\uE8E5\u8EA2\uEEF9\u8EA2\uF0AD" + // 6560 - 6564
+ "\u0000\u0000\u0000\u0000\u8EA2\uF0F8\u8EA2\uF1D5\u8EA2\uF2A9" + // 6565 - 6569
+ "\u8EA2\uF2C3\u0000\uEBFD\u0000\uF6BA\u8EA2\uE5B5\u8EA2\uE8E6" + // 6570 - 6574
+ "\u8EA2\uEDC0\u8EA2\uF0AE\u0000\u0000\u0000\u0000\u0000\uF0AF" + // 6575 - 6579
+ "\u0000\u0000\u8EA2\uE1C1\u8EA2\uE5B6\u8EA2\uE8E7\u8EA2\uE8E8" + // 6580 - 6584
+ "\u8EA2\uE8E9\u8EA2\uEBCC\u0000\u0000\u8EA2\uEBC8\u0000\uFBD4" + // 6585 - 6589
+ "\u8EA2\uEBCB\u8EA2\uEBCA\u0000\uFADF\u8EA2\uEBC9\u0000\uFAE1" + // 6590 - 6594
+ "\u0000\u0000\u0000\uFAE0\u8EA2\uEDC2\u8EA2\uEDC1\u0000\uFBD5" + // 6595 - 6599
+ "\u0000\uFBD6\u0000\u0000\u0000\u0000\u0000\uFCB2\u8EA2\uEEFA" + // 6600 - 6604
+ "\u0000\uFCB1\u0000\u0000\u8EA2\uF0B1\u8EA2\uF0B2\u8EA2\uF0B0" + // 6605 - 6609
+ "\u8EA2\uF0AF\u0000\uFDA1\u0000\u0000\u8EA2\uF0F9\u8EA2\uF0FA" + // 6610 - 6614
+ "\u8EA2\uF0FB\u0000\uFCFE\u8EA2\uF1D6\u8EA2\uF1D9\u8EA2\uF1D8" + // 6615 - 6619
+ "\u8EA2\uF1D7\u0000\u0000\u0000\u0000\u8EA2\uF2C2\u0000\u0000" + // 6620 - 6624
+ "\u0000\uC4A1\u0000\uC4A3\u0000\u0000\u0000\uC4A4\u0000\u0000" + // 6625 - 6629
+ "\u0000\u0000\u0000\u0000\u8EA2\uA1A6\u0000\uC4B7\u0000\uC4B5" + // 6630 - 6634
+ "\u0000\uC4B8\u0000\uC4B6\u8EA2\uA1A7\u0000\uC4E2\u8EA2\uA1AF" + // 6635 - 6639
+ "\u8EA2\uA1AD\u0000\uC4E1\u0000\uC4E0\u0000\u0000\u0000\u0000" + // 6640 - 6644
+ "\u0000\uC5E2\u0000\uC5E1\u0000\uC5E0\u0000\u0000\u0000\uC5E3" + // 6645 - 6649
+ "\u0000\uC5DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 6650 - 6654
+ "\u0000\uC7A2\u0000\uC7A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 6655 - 6659
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBE4\u0000\u0000" + // 6660 - 6664
+ "\u0000\uA7A2\u0000\u0000\u0000\u0000\u0000\uC4B9\u0000\u0000" + // 6665 - 6669
+ "\u0000\uC4E3\u8EA2\uA1B0\u0000\u0000\u0000\uC4E4\u8EA2\uA1C3" + // 6670 - 6674
+ "\u0000\uC8EB\u8EA2\uA5B1\u0000\u0000\u0000\u0000\u0000\uA7A3" + // 6675 - 6679
+ "\u0000\u0000\u0000\uC4BA\u0000\uC4E5\u0000\u0000\u0000\uC5E4" + // 6680 - 6684
+ "\u8EA2\uA1C4\u0000\u0000\u0000\u0000\u0000\uA7A4\u8EA2\uE5AE" + // 6685 - 6689
+ "\u8EA2\uE5AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 6690 - 6694
+ "\u8EA2\uF0A8\u0000\uFCFD\u0000\u0000\u8EA2\uF1D4\u8EA2\uF1EE" + // 6695 - 6699
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7EF\u8EA2\uD6BD" + // 6700 - 6704
+ "\u8EA2\uD6BE\u0000\u0000\u8EA2\uDCC3\u0000\uE7F0\u0000\u0000" + // 6705 - 6709
+ "\u0000\uF8A9\u8EA2\uE5AF\u0000\u0000\u8EA2\uEDBD\u0000\uFBD3" + // 6710 - 6714
+ "\u8EA2\uEDBE\u8EA2\uEDBC\u8EA2\uF0A9\u0000\u0000\u8EA2\uF0F7" + // 6715 - 6719
+ "\u0000\u0000\u0000\uE7F1\u0000\u0000\u8EA2\uE1C0\u8EA2\uE1BF" + // 6720 - 6724
+ "\u8EA2\uE1BE\u8EA2\uE5B0\u0000\u0000\u0000\u0000\u8EA2\uE5B4" + // 6725 - 6729
+ "\u8EA2\uE5B3\u8EA2\uE5B2\u8EA2\uE5B1\u0000\uF8AA\u8EA2\uE8E3" + // 6730 - 6734
+ "\u8EA2\uEBC7\u0000\uFADE\u8EA2\uEBC6\u8EA2\uEDBF\u8EA2\uEEF8" + // 6735 - 6739
+ "\u8EA2\uEEF7\u0000\uFCB0\u8EA2\uEEF6\u8EA2\uF0AC\u8EA2\uF0AB" + // 6740 - 6744
+ "\u8EA2\uF0AA\u0000\u0000\u0000\u0000\u0000\uEBFC\u0000\u0000" + // 6745 - 6749
+ "\u8EA2\uDCC4\u0000\uF6B9\u0000\u0000\u8EAD\uA2E7\u8EAD\uA2E8" + // 6750 - 6754
+ "\u8EAD\uA2E9\u8EAD\uA2EA\u8EAD\uA2EB\u8EAD\uA2EC\u8EAD\uA2ED" + // 6755 - 6759
+ "\u8EAD\uA2EE\u8EAD\uA2EF\u8EAD\uA2F0\u8EAD\uA2F1\u8EAD\uA2F2" + // 6760 - 6764
+ "\u8EAD\uA2F3\u8EAD\uA2F4\u8EAD\uA2F5\u8EAD\uA2F6\u8EAD\uA2F7" + // 6765 - 6769
+ "\u8EAD\uA2F8\u8EAD\uA2F9\u8EAD\uA2FA\u8EAD\uA2FB\u8EAD\uA2FC" + // 6770 - 6774
+ "\u8EAD\uA2FD\u8EAD\uA2FE\u8EAD\uA3A1\u8EAD\uA3A2\u8EAD\uA3A3" + // 6775 - 6779
+ "\u8EAD\uA3A4\u8EAD\uA3A5\u8EAD\uA3A6\u8EAD\uA3A7\u8EAD\uA3A8" + // 6780 - 6784
+ "\u8EAD\uA3A9\u8EAD\uA3AA\u8EAD\uA3AB\u8EAD\uA3AC\u8EAD\uA3AD" + // 6785 - 6789
+ "\u8EAD\uA3AE\u8EAD\uA3AF\u8EAD\uA3B0\u8EAD\uA3B1\u8EAD\uA3B2" + // 6790 - 6794
+ "\u8EAD\uA3B3\u8EAD\uA3B4\u8EAD\uA3B5\u8EAD\uA3B6\u8EAD\uA3B7" + // 6795 - 6799
+ "\u8EAD\uA3B8\u8EAD\uA3B9\u8EAD\uA3BA\u8EAD\uA3BB\u8EAD\uA3BC" + // 6800 - 6804
+ "\u8EAD\uA3BD\u8EAD\uA3BE\u8EAD\uA3BF\u0000\u0000\u0000\u0000" + // 6805 - 6809
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1AE\u8EAD\uA1A5" + // 6810 - 6814
+ "\u8EAD\uA1A6\u0000\u0000\u0000\uD5E9\u8EA2\uAFD4\u8EA2\uAFD2" + // 6815 - 6819
+ "\u8EA2\uAFD3\u0000\uD5EA\u8EA2\uAFD1\u0000\u0000\u0000\u0000" + // 6820 - 6824
+ "\u0000\u0000\u0000\u0000\u0000\uDBA1\u0000\uDBA2\u8EA2\uB5EA" + // 6825 - 6829
+ "\u0000\uDBA3\u0000\uDAFE\u8EA2\uBCC2\u0000\u0000\u8EA2\uBCC3" + // 6830 - 6834
+ "\u8EA2\uC3C4\u0000\u0000\u0000\u0000\u0000\uE9A2\u0000\uE9A1" + // 6835 - 6839
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCFC\u8EA2\uE1E5\u0000\u0000" + // 6840 - 6844
+ "\u8EA2\uE5D5\u8EA2\uE5D4\u8EA2\uE8FB\u0000\uA7E6\u8EA2\uA1BE" + // 6845 - 6849
+ "\u0000\uD1CD\u0000\u0000\u0000\u0000\u0000\uC5CA\u0000\uC6D9" + // 6850 - 6854
+ "\u0000\u0000\u0000\uC8AF\u0000\uC8AE\u0000\u0000\u0000\u0000" + // 6855 - 6859
+ "\u0000\uC8B0\u0000\uC8B1\u8EA2\uA2CF\u8EA2\uA2CE\u8EA2\uA4B9" + // 6860 - 6864
+ "\u0000\uCAD4\u8EA2\uA4BC\u8EA2\uA4BB\u8EA2\uA4BA\u8EA2\uA4BD" + // 6865 - 6869
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDF6" + // 6870 - 6874
+ "\u8EA2\uA7AA\u8EA2\uA7A6\u8EA2\uA7AF\u0000\u0000\u0000\u0000" + // 6875 - 6879
+ "\u8EA2\uA3A6\u0000\u0000\u0000\uC8FB\u0000\u0000\u0000\u0000" + // 6880 - 6884
+ "\u0000\uC8FE\u0000\uC8EF\u0000\uC9A9\u8EA2\uA2FD\u0000\u0000" + // 6885 - 6889
+ "\u0000\u0000\u8EA2\uA5BD\u0000\uC8ED\u0000\uC9A5\u0000\uC8EE" + // 6890 - 6894
+ "\u0000\uC8F6\u0000\uC8F7\u8EA2\uA3A4\u8EA2\uA2FE\u0000\uC8FC" + // 6895 - 6899
+ "\u0000\uC8F4\u8EA2\uA2FA\u0000\uC8F0\u8EA2\uA3A7\u0000\uC9A7" + // 6900 - 6904
+ "\u0000\uC9AA\u0000\uC8F3\u0000\uC9A2\u0000\uC9A8\u0000\uC8F1" + // 6905 - 6909
+ "\u8EA2\uA3A5\u0000\uC9A3\u8EA2\uA3AB\u8EA2\uA2FC\u0000\uC9A1" + // 6910 - 6914
+ "\u8EA2\uA3A1\u0000\u0000\u0000\u0000\u8EA2\uA3A3\u0000\u0000" + // 6915 - 6919
+ "\u0000\uCBF9\u8EA2\uA5BF\u8EA2\uA5CB\u0000\uCBF1\u0000\u0000" + // 6920 - 6924
+ "\u8EA2\uA5CC\u0000\uCBEC\u0000\uCBF6\u0000\u0000\u0000\u0000" + // 6925 - 6929
+ "\u0000\uCBEF\u8EA2\uA5B9\u0000\uCBF7\u8EA2\uA5B8\u8EA2\uA5BC" + // 6930 - 6934
+ "\u8EA2\uA5C3\u8EA2\uA5C1\u0000\uCCA1\u0000\uCBFA\u8EA2\uA5B3" + // 6935 - 6939
+ "\u8EA2\uA5B5\u0000\uCBFC\u0000\uCBF0\u8EA2\uE8E1\u0000\u0000" + // 6940 - 6944
+ "\u8EA2\uF0A4\u0000\uE3A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 6945 - 6949
+ "\u0000\u0000\u8EA2\uE1BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 6950 - 6954
+ "\u0000\uFDB1\u0000\uE3A8\u0000\uF0AD\u0000\uF6B4\u8EA2\uF0A5" + // 6955 - 6959
+ "\u0000\uE3A9\u0000\u0000\u8EA2\uD6BC\u0000\uF3BD\u8EA2\uDCC0" + // 6960 - 6964
+ "\u8EA2\uDCC1\u0000\u0000\u0000\uF3BC\u0000\u0000\u8EA2\uE1BB" + // 6965 - 6969
+ "\u0000\uF6B8\u0000\uF6B6\u0000\uF6B7\u0000\uF6B5\u8EA2\uE5AC" + // 6970 - 6974
+ "\u0000\uF8A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBC3" + // 6975 - 6979
+ "\u8EA2\uEBC2\u8EA2\uEBC5\u8EA2\uEBC4\u0000\uFADD\u0000\u0000" + // 6980 - 6984
+ "\u0000\u0000\u8EA2\uEDB9\u0000\u0000\u8EA2\uEDBB\u8EA2\uEDBA" + // 6985 - 6989
+ "\u0000\uFBD2\u8EA2\uEEF5\u0000\u0000\u8EA2\uF0A6\u8EA2\uF0A7" + // 6990 - 6994
+ "\u0000\uFCDC\u8EA2\uF1D3\u8EA2\uF1ED\u0000\uFDC2\u0000\u0000" + // 6995 - 6999
+ "\u8EA2\uC1D5\u8EA2\uDCC2\u8EA2\uE1BC\u8EA2\uE8E2\u8EA2\uC8F5" + // 7000 - 7004
+ "\u0000\u0000\u8EA2\uE1BD\u8EA2\uC8F4\u0000\u0000\u0000\uE7EE" + // 7005 - 7009
+ "\u8EA2\uD6BB\u0000\u0000\u0000\u0000\u8EA2\uDCBC\u8EA2\uDCBD" + // 7010 - 7014
+ "\u8EA2\uDCBB\u8EA2\uE1B7\u8EA2\uE1B6\u0000\uF6B3\u8EA2\uE5AB" + // 7015 - 7019
+ "\u8EA2\uE1B8\u8EA2\uE5AA\u0000\u0000\u0000\u0000\u8EA2\uE8E0" + // 7020 - 7024
+ "\u0000\uF9DD\u0000\uF9DF\u8EA2\uE8DF\u0000\u0000\u0000\u0000" + // 7025 - 7029
+ "\u0000\uF9DE\u0000\u0000\u8EA2\uEBBF\u8EA2\uEBC1\u8EA2\uEBC0" + // 7030 - 7034
+ "\u8EA2\uEDB8\u0000\uFBD1\u0000\u0000\u0000\uFCDB\u8EA2\uF0F6" + // 7035 - 7039
+ "\u8EA2\uF1D2\u0000\u0000\u0000\u0000\u8EA2\uF2C1\u0000\uDEA7" + // 7040 - 7044
+ "\u0000\u0000\u8EA2\uCFCD\u0000\u0000\u0000\uF0AB\u0000\u0000" + // 7045 - 7049
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCBF\u8EA2\uDCBE\u0000\u0000" + // 7050 - 7054
+ "\u8EA2\uE1B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E0" + // 7055 - 7059
+ "\u0000\uFADC\u8EA2\uEEF4\u8EA2\uF2B9\u0000\u0000\u0000\u0000" + // 7060 - 7064
+ "\u0000\u0000\u0000\uDEA8\u0000\uEBFB\u0000\u0000\u0000\uF0AC" + // 7065 - 7069
+ "\u0000\u0000\u8EAD\uA2B4\u8EAD\uA2B5\u8EAD\uA2B6\u8EAD\uA2B7" + // 7070 - 7074
+ "\u8EAD\uA2B8\u8EAD\uA2B9\u8EAD\uA2BA\u8EAD\uA2BB\u8EAD\uA2BC" + // 7075 - 7079
+ "\u8EAD\uA2BD\u8EAD\uA2BE\u8EAD\uA2BF\u8EAD\uA2C0\u8EAD\uA2C1" + // 7080 - 7084
+ "\u8EAD\uA2C2\u8EAD\uA2C3\u8EAD\uA2C4\u8EAD\uA2C5\u8EAD\uA2C6" + // 7085 - 7089
+ "\u8EAD\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7090 - 7094
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1A1\u8EAD\uA1A2" + // 7095 - 7099
+ "\u8EAD\uA1A7\u8EAD\uA1A8\u0000\u0000\u0000\u0000\u8EAD\uA2C8" + // 7100 - 7104
+ "\u8EAD\uA2C9\u8EAD\uA2CA\u8EAD\uA2CB\u8EAD\uA2CC\u8EAD\uA2CD" + // 7105 - 7109
+ "\u8EAD\uA2CE\u8EAD\uA2CF\u8EAD\uA2D0\u8EAD\uA2D1\u8EAD\uA2D2" + // 7110 - 7114
+ "\u8EAD\uA2D3\u8EAD\uA2D4\u8EAD\uA2D5\u8EAD\uA2D6\u8EAD\uA2D7" + // 7115 - 7119
+ "\u8EAD\uA2D8\u8EAD\uA2D9\u8EAD\uA2DA\u8EAD\uA2DB\u8EAD\uA2DC" + // 7120 - 7124
+ "\u8EAD\uA2DD\u8EAD\uA2DE\u8EAD\uA2DF\u8EAD\uA2E0\u8EAD\uA2E1" + // 7125 - 7129
+ "\u8EAD\uA2E2\u8EAD\uA2E3\u8EAD\uA2E4\u8EAD\uA2E5\u8EAD\uA2E6" + // 7130 - 7134
+ "\u8EA2\uF0F0\u8EA2\uF0F1\u8EA2\uF0EA\u8EA2\uF0ED\u8EA2\uF0F5" + // 7135 - 7139
+ "\u8EA2\uF0EF\u8EA2\uF0EE\u8EA2\uF0EC\u0000\u0000\u8EA2\uF0F2" + // 7140 - 7144
+ "\u0000\u0000\u8EA2\uF1CC\u0000\u0000\u8EA2\uF1CD\u0000\u0000" + // 7145 - 7149
+ "\u8EA2\uF1CF\u8EA2\uF1CE\u8EA2\uF1D1\u8EA2\uF1D0\u8EA2\uF1EC" + // 7150 - 7154
+ "\u8EA2\uF1EB\u8EA2\uF2A7\u0000\u0000\u8EA2\uF2A8\u0000\u0000" + // 7155 - 7159
+ "\u8EA2\uF2B4\u0000\uFDC5\u0000\uFDC9\u0000\u0000\u8EA2\uF2BD" + // 7160 - 7164
+ "\u0000\uFDCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7165 - 7169
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7170 - 7174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7175 - 7179
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7180 - 7184
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7185 - 7189
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7190 - 7194
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7195 - 7199
+ "\u0000\u0000\u0000\uA2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 7200 - 7204
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7205 - 7209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7210 - 7214
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7215 - 7219
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7220 - 7224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7225 - 7229
+ "\u0000\uCBD0\u0000\uE2CB\u0000\u0000\u0000\u0000\u0000\uE7A8" + // 7230 - 7234
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBBE\u0000\u0000" + // 7235 - 7239
+ "\u0000\u0000\u0000\uF2D6\u0000\u0000\u0000\uF2D5\u0000\u0000" + // 7240 - 7244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9B0\u0000\uFAA9" + // 7245 - 7249
+ "\u0000\uFBB3\u0000\uCBD1\u0000\uD8C9\u0000\uE7A9\u0000\u0000" + // 7250 - 7254
+ "\u8EA2\uE7C7\u0000\uA8E3\u0000\u0000\u0000\u0000\u0000\u0000" + // 7255 - 7259
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7260 - 7264
+ "\u0000\u0000\u8EA2\uA5A6\u8EA2\uE8CB\u8EA2\uE8C6\u8EA2\uE8D9" + // 7265 - 7269
+ "\u0000\u0000\u8EA2\uE8C8\u8EA2\uE8D6\u8EA2\uE8CD\u8EA2\uE8DD" + // 7270 - 7274
+ "\u8EA2\uE8C9\u0000\uF9D8\u8EA2\uE8C7\u8EA2\uE8CE\u8EA2\uE8CF" + // 7275 - 7279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBAD\u0000\u0000" + // 7280 - 7284
+ "\u8EA2\uEBAB\u0000\u0000\u8EA2\uEBB0\u0000\u0000\u8EA2\uEBBC" + // 7285 - 7289
+ "\u8EA2\uEBB3\u8EA2\uEBAC\u8EA2\uEBA8\u8EA2\uEBB5\u8EA2\uEBAE" + // 7290 - 7294
+ "\u8EA2\uEBB1\u8EA2\uEBAA\u8EA2\uEBB8\u8EA2\uEBA7\u8EA2\uEBAF" + // 7295 - 7299
+ "\u8EA2\uEBB4\u8EA2\uEBB6\u8EA2\uEBB9\u8EA2\uEBA9\u0000\u0000" + // 7300 - 7304
+ "\u8EA2\uEBBD\u8EA2\uEBBE\u8EA2\uEBB7\u8EA2\uEBBB\u8EA2\uEBB2" + // 7305 - 7309
+ "\u0000\u0000\u8EA2\uEDAF\u8EA2\uEDB2\u0000\u0000\u0000\uFBCD" + // 7310 - 7314
+ "\u0000\u0000\u8EA2\uEDB1\u8EA2\uEDB6\u8EA2\uEDB4\u0000\uFBCE" + // 7315 - 7319
+ "\u8EA2\uEDAB\u8EA2\uEDA1\u8EA2\uECFE\u0000\uFBD0\u8EA2\uEDAD" + // 7320 - 7324
+ "\u8EA2\uEDAE\u8EA2\uEDAA\u8EA2\uEDA2\u0000\u0000\u8EA2\uEDA7" + // 7325 - 7329
+ "\u8EA2\uEBBA\u8EA2\uE1B2\u8EA2\uE1A5\u8EA2\uE1AE\u8EA2\uE1AF" + // 7330 - 7334
+ "\u0000\u0000\u8EA2\uE1AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 7335 - 7339
+ "\u0000\u0000\u8EA2\uE4FC\u8EA2\uE4FE\u8EA2\uE5A3\u0000\u0000" + // 7340 - 7344
+ "\u0000\u0000\u8EA2\uE4FB\u0000\u0000\u0000\uF8A5\u8EA2\uE5A5" + // 7345 - 7349
+ "\u8EA2\uE4FA\u8EA2\uE5A6\u0000\u0000\u8EA2\uE5A2\u8EA2\uE5A4" + // 7350 - 7354
+ "\u8EA2\uE5A8\u8EA2\uE5A1\u8EA2\uE5A9\u8EA2\uE4FD\u8EA2\uE4F9" + // 7355 - 7359
+ "\u0000\uF8A6\u0000\u0000\u8EA2\uE5A7\u0000\uF8A7\u0000\uF9D9" + // 7360 - 7364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7365 - 7369
+ "\u8EA2\uE1A6\u8EA2\uE8DE\u8EA2\uE8D5\u0000\uF9DB\u8EA2\uE8D1" + // 7370 - 7374
+ "\u0000\uF9DC\u0000\u0000\u0000\u0000\u8EA2\uE8DA\u8EA2\uE8D4" + // 7375 - 7379
+ "\u8EA2\uE8CA\u0000\uF9DA\u8EA2\uE8D7\u8EA2\uE8D2\u8EA2\uE8D3" + // 7380 - 7384
+ "\u0000\u0000\u8EA2\uE8C5\u8EA2\uE8CC\u8EA2\uE8DB\u0000\u0000" + // 7385 - 7389
+ "\u8EA2\uE8D8\u0000\u0000\u8EA2\uE8D0\u0000\u0000\u8EA2\uE8DC" + // 7390 - 7394
+ "\u8EA2\uD6B5\u0000\u0000\u0000\u0000\u0000\uF0AA\u8EA2\uD6BA" + // 7395 - 7399
+ "\u8EA2\uD6B9\u0000\uF0A8\u8EA2\uD6B4\u8EA2\uD6B8\u0000\uF0A9" + // 7400 - 7404
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7405 - 7409
+ "\u0000\u0000\u8EA2\uDCB8\u0000\u0000\u0000\uF3BA\u0000\u0000" + // 7410 - 7414
+ "\u8EA2\uDCB3\u0000\uF3B6\u0000\u0000\u8EA2\uDCB0\u8EA2\uDCB6" + // 7415 - 7419
+ "\u8EA2\uDCB9\u0000\u0000\u0000\uF3BB\u0000\u0000\u8EA2\uDCB5" + // 7420 - 7424
+ "\u8EA2\uDCB2\u8EA2\uDCBA\u8EA2\uDCB1\u0000\u0000\u8EA2\uDCB7" + // 7425 - 7429
+ "\u0000\uF3B7\u0000\u0000\u8EA2\uDCAF\u0000\uF3B8\u0000\u0000" + // 7430 - 7434
+ "\u0000\uF3B9\u8EA2\uDCB4\u0000\u0000\u0000\u0000\u0000\u0000" + // 7435 - 7439
+ "\u8EA2\uE1B5\u8EA2\uE1A8\u8EA2\uE1A9\u8EA2\uE1AC\u8EA2\uE1AA" + // 7440 - 7444
+ "\u0000\u0000\u8EA2\uE1A4\u0000\u0000\u0000\u0000\u8EA2\uE1A7" + // 7445 - 7449
+ "\u8EA2\uE1B1\u8EA2\uE1AB\u0000\u0000\u0000\u0000\u0000\uF6B1" + // 7450 - 7454
+ "\u0000\u0000\u8EA2\uE1B3\u8EA2\uE1B0\u0000\uF6B2\u8EA2\uEAFE" + // 7455 - 7459
+ "\u8EA2\uEEDD\u0000\u0000\u0000\u0000\u8EA2\uEEDA\u0000\u0000" + // 7460 - 7464
+ "\u8EA2\uEED7\u0000\u0000\u8EA2\uEED8\u0000\uFCAA\u8EA2\uEFE8" + // 7465 - 7469
+ "\u8EA2\uEFEA\u8EA2\uEFED\u8EA2\uEFE9\u8EA2\uEFEE\u0000\u0000" + // 7470 - 7474
+ "\u8EA2\uEFE7\u0000\u0000\u8EA2\uEFE5\u0000\u0000\u0000\uFCD7" + // 7475 - 7479
+ "\u8EA2\uEFEB\u0000\uFCD9\u0000\uFCD8\u8EA2\uEFE6\u8EA2\uEFEC" + // 7480 - 7484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF0E8" + // 7485 - 7489
+ "\u0000\uFCF8\u8EA2\uF0E9\u0000\u0000\u8EA2\uF0E7\u8EA2\uF0E4" + // 7490 - 7494
+ "\u0000\u0000\u0000\u0000\u8EA2\uF0E6\u8EA2\uF0E5\u8EA2\uF1C9" // 7495 - 7499
+ ;
+
+ index2a =
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1CB" + // 7500 - 7504
+ "\u8EA2\uF1CA\u0000\u0000\u0000\u0000\u8EA2\uF1E9\u0000\u0000" + // 7505 - 7509
+ "\u8EA2\uF1E8\u8EA2\uF1E7\u8EA2\uF1EA\u0000\u0000\u0000\uFDC0" + // 7510 - 7514
+ "\u0000\uFDC1\u8EA2\uF2B8\u8EA2\uF2BC\u0000\u0000\u0000\u0000" + // 7515 - 7519
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBAA\u8EA2\uBBA7" + // 7520 - 7524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7525 - 7529
+ "\u8EA2\uBBA8\u8EA2\uBBAB\u8EA2\uBBAF\u0000\u0000\u8EA2\uB4E6" + // 7530 - 7534
+ "\u8EA2\uBBB1\u8EA2\uC2CD\u0000\u0000\u0000\uDEE8\u8EA2\uBBB2" + // 7535 - 7539
+ "\u8EA2\uBAF8\u8EA2\uBBA4\u0000\u0000\u8EA2\uBBA9\u0000\u0000" + // 7540 - 7544
+ "\u0000\u0000\u0000\uDEE6\u0000\uDEE9\u8EA2\uBBB0\u8EA2\uBBB3" + // 7545 - 7549
+ "\u8EA2\uBAFC\u8EA2\uBAF9\u0000\u0000\u0000\u0000\u8EA2\uBAFB" + // 7550 - 7554
+ "\u0000\u0000\u0000\u0000\u8EA2\uBBA2\u8EA2\uBAFE\u0000\uDEEA" + // 7555 - 7559
+ "\u0000\u0000\u8EA2\uBBAC\u0000\u0000\u0000\u0000\u8EA2\uBBA3" + // 7560 - 7564
+ "\u0000\u0000\u8EA2\uBBA5\u8EA2\uBAF7\u8EA2\uC2C1\u8EA2\uC2BF" + // 7565 - 7569
+ "\u0000\uE3E8\u0000\uE3E6\u8EA2\uC2C9\u8EA2\uC2C0\u8EA2\uC2CA" + // 7570 - 7574
+ "\u8EA2\uC2C6\u8EA2\uC2BE\u8EA2\uC2CC\u8EA2\uC2BD\u8EA2\uC2C4" + // 7575 - 7579
+ "\u0000\uE3E5\u0000\uE3E4\u0000\uE3E3\u8EA2\uC2C2\u0000\uF8A4" + // 7580 - 7584
+ "\u8EA2\uE4F1\u0000\u0000\u8EA2\uE4EF\u8EA2\uE4F6\u0000\u0000" + // 7585 - 7589
+ "\u8EA2\uE4EE\u8EA2\uE4ED\u0000\uF8A3\u0000\uF8A1\u0000\uF7FE" + // 7590 - 7594
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7595 - 7599
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F4\u8EA2\uE8BC" + // 7600 - 7604
+ "\u8EA2\uE8C2\u0000\uF9D6\u8EA2\uE8BD\u0000\u0000\u8EA2\uE8C0" + // 7605 - 7609
+ "\u8EA2\uE8C4\u0000\uF9D7\u8EA2\uE8BF\u0000\u0000\u8EA2\uE8B7" + // 7610 - 7614
+ "\u0000\u0000\u8EA2\uE8B6\u8EA2\uE8C3\u8EA2\uE8BA\u0000\u0000" + // 7615 - 7619
+ "\u8EA2\uE8B8\u8EA2\uE8C1\u8EA2\uE8B9\u0000\uF9D5\u0000\uF9D4" + // 7620 - 7624
+ "\u0000\u0000\u8EA2\uE8B4\u8EA2\uE8B5\u8EA2\uE8BE\u0000\u0000" + // 7625 - 7629
+ "\u0000\u0000\u0000\u0000\u8EA2\uE8BB\u0000\u0000\u0000\u0000" + // 7630 - 7634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFA" + // 7635 - 7639
+ "\u8EA2\uEAFD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7640 - 7644
+ "\u0000\uF8A2\u0000\u0000\u0000\u0000\u8EA2\uD0A6\u8EA2\uD0A4" + // 7645 - 7649
+ "\u8EA2\uD0A2\u0000\u0000\u8EA2\uD0A8\u0000\u0000\u8EA2\uD0A7" + // 7650 - 7654
+ "\u0000\uECCD\u0000\uECC8\u0000\u0000\u0000\uECCA\u0000\uECCC" + // 7655 - 7659
+ "\u0000\u0000\u0000\u0000\u8EA2\uD0A9\u8EA2\uD6E1\u0000\u0000" + // 7660 - 7664
+ "\u0000\u0000\u8EA2\uD6E0\u8EA2\uD6DF\u0000\u0000\u8EA2\uD6E2" + // 7665 - 7669
+ "\u8EA2\uD6DB\u0000\u0000\u8EA2\uD6DC\u8EA2\uD6E4\u8EA2\uD6DD" + // 7670 - 7674
+ "\u0000\u0000\u0000\uF0CE\u8EA2\uD6E6\u0000\u0000\u8EA2\uD6E5" + // 7675 - 7679
+ "\u8EA2\uD6DE\u0000\u0000\u8EA2\uDCDD\u0000\uF3D1\u8EA2\uDCDB" + // 7680 - 7684
+ "\u8EA2\uDCE0\u8EA2\uDCDF\u8EA2\uD6E3\u0000\u0000\u0000\uF3D0" + // 7685 - 7689
+ "\u0000\u0000\u8EA2\uDCDE\u8EA2\uDCDA\u8EA2\uDCE2\u8EA2\uDCE1" + // 7690 - 7694
+ "\u0000\uF3CF\u0000\u0000\u8EA2\uDCDC\u0000\u0000\u0000\uF0CF" + // 7695 - 7699
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C0\u0000\u0000" + // 7700 - 7704
+ "\u0000\u0000\u0000\u0000\u8EA2\uE1CD\u8EA2\uE5C6\u8EA2\uE5C7" + // 7705 - 7709
+ "\u8EA2\uE5C8\u8EA2\uDCA1\u0000\u0000\u8EA2\uDCA7\u0000\u0000" + // 7710 - 7714
+ "\u0000\u0000\u8EA2\uDCA2\u8EA2\uE0FE\u8EA2\uDCA3\u8EA2\uDCAE" + // 7715 - 7719
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7720 - 7724
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCAA\u0000\uF3B5\u8EA2\uDCA9" + // 7725 - 7729
+ "\u8EA2\uDCA8\u0000\u0000\u8EA2\uDCAC\u0000\u0000\u0000\u0000" + // 7730 - 7734
+ "\u0000\u0000\u0000\u0000\u8EA2\uE0F6\u8EA2\uE0F9\u0000\u0000" + // 7735 - 7739
+ "\u0000\u0000\u8EA2\uE0F8\u0000\u0000\u8EA2\uE1A2\u8EA2\uE0FB" + // 7740 - 7744
+ "\u8EA2\uE1A1\u0000\u0000\u8EA2\uE0FD\u8EA2\uE0FC\u8EA2\uE0FA" + // 7745 - 7749
+ "\u0000\u0000\u8EA2\uE0F7\u0000\u0000\u0000\uF6AF\u0000\uF6AE" + // 7750 - 7754
+ "\u0000\u0000\u0000\uF6B0\u0000\uF6AD\u8EA2\uE1A3\u0000\u0000" + // 7755 - 7759
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F2" + // 7760 - 7764
+ "\u8EA2\uE4F5\u0000\u0000\u8EA2\uE4F3\u8EA2\uE4F7\u0000\u0000" + // 7765 - 7769
+ "\u0000\u0000\u0000\u0000\u8EA2\uE4F8\u0000\u0000\u8EA2\uE4F0" + // 7770 - 7774
+ "\u8EA2\uE4E3\u0000\uF7F8\u8EA2\uE8AE\u0000\u0000\u0000\u0000" + // 7775 - 7779
+ "\u0000\u0000\u8EA2\uEAF4\u8EA2\uEAF2\u0000\u0000\u0000\u0000" + // 7780 - 7784
+ "\u8EA2\uEAF3\u0000\u0000\u0000\u0000\u8EA2\uECEE\u0000\u0000" + // 7785 - 7789
+ "\u0000\uFBC8\u8EA2\uEED1\u0000\uFCD6\u0000\uFCA8\u0000\uFCD4" + // 7790 - 7794
+ "\u0000\uFCD5\u8EA2\uF0E2\u0000\uFDAF\u0000\u0000\u0000\uD8ED" + // 7795 - 7799
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4E4\u0000\u0000" + // 7800 - 7804
+ "\u0000\u0000\u8EA2\uB3CC\u0000\u0000\u0000\uE7EC\u0000\u0000" + // 7805 - 7809
+ "\u8EA2\uCFC3\u0000\u0000\u0000\u0000\u0000\uEBF5\u8EA2\uCFC4" + // 7810 - 7814
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5FD\u8EA2\uD5FC" + // 7815 - 7819
+ "\u0000\uF3B3\u0000\uF0A1\u0000\uF0A2\u0000\u0000\u8EA2\uD6A2" + // 7820 - 7824
+ "\u8EA2\uD6A1\u8EA2\uD5FE\u0000\u0000\u0000\u0000\u8EA2\uDBFA" + // 7825 - 7829
+ "\u8EA2\uDBFD\u0000\u0000\u8EA2\uDBFC\u8EA2\uDBFB\u0000\uF3B2" + // 7830 - 7834
+ "\u8EA2\uE0F4\u8EA2\uE0F2\u8EA2\uE0F1\u0000\u0000\u0000\uA1A1" + // 7835 - 7839
+ "\u0000\uA1A3\u0000\uA1A4\u0000\uA1F1\u0000\u0000\u8EAD\uA1AB" + // 7840 - 7844
+ "\u8EAD\uA1AC\u8EAD\uA1AD\u0000\uA1D2\u0000\uA1D3\u0000\uA1CE" + // 7845 - 7849
+ "\u0000\uA1CF\u0000\uA1D6\u0000\uA1D7\u0000\uA1DA\u0000\uA1DB" + // 7850 - 7854
+ "\u0000\uA1CA\u0000\uA1CB\u0000\uA2E5\u8EAD\uA1B5\u0000\uA1C6" + // 7855 - 7859
+ "\u0000\uA1C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7860 - 7864
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E8\u0000\uA1E9" + // 7865 - 7869
+ "\u0000\u0000\u0000\u0000\u0000\uA4B5\u0000\uA4B6\u0000\uA4B7" + // 7870 - 7874
+ "\u0000\uA4B8\u0000\uA4B9\u0000\uA4BA\u0000\uA4BB\u0000\uA4BC" + // 7875 - 7879
+ "\u0000\uA4BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7880 - 7884
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7885 - 7889
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7890 - 7894
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7895 - 7899
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAFEE\u0000\uD6AE" + // 7900 - 7904
+ "\u8EA2\uAFEF\u0000\u0000\u8EA2\uAFE3\u0000\uD6A3\u0000\uD6AF" + // 7905 - 7909
+ "\u0000\u0000\u8EA2\uAFDC\u0000\u0000\u8EA2\uAFE5\u8EA2\uAFED" + // 7910 - 7914
+ "\u0000\u0000\u8EA2\uAFDB\u8EA2\uAFF6\u0000\uD5F7\u0000\u0000" + // 7915 - 7919
+ "\u0000\u0000\u0000\u0000\u8EA2\uAFF5\u8EA2\uAFF0\u0000\u0000" + // 7920 - 7924
+ "\u8EA2\uAFF1\u0000\uD6A1\u0000\uD6AC\u8EA2\uAFE7\u0000\u0000" + // 7925 - 7929
+ "\u8EA2\uAFE8\u8EA2\uAFF2\u8EA2\uAFE9\u0000\u0000\u8EA2\uAFE4" + // 7930 - 7934
+ "\u8EA2\uAFDE\u8EA2\uAFDF\u8EA2\uAFEC\u8EA2\uAFE6\u0000\u0000" + // 7935 - 7939
+ "\u0000\u0000\u0000\uD5F8\u0000\uD5FC\u8EA2\uAFF4\u8EA2\uAFE0" + // 7940 - 7944
+ "\u0000\uD6AA\u0000\uD6A6\u0000\u0000\u0000\u0000\u8EA2\uACFC" + // 7945 - 7949
+ "\u0000\uD3AA\u0000\uD3AB\u8EA2\uACFE\u0000\u0000\u8EA2\uACF8" + // 7950 - 7954
+ "\u8EA2\uACFB\u8EA2\uADA6\u8EA2\uADA4\u0000\u0000\u0000\uD3AC" + // 7955 - 7959
+ "\u8EA2\uADAA\u0000\uD3AF\u8EA2\uADA7\u8EA2\uACFD\u8EA2\uACFA" + // 7960 - 7964
+ "\u0000\u0000\u0000\u0000\u8EA2\uBFAE\u8EA2\uADA5\u0000\uD3A7" + // 7965 - 7969
+ "\u8EA2\uADA8\u8EA2\uACF7\u8EA2\uADA2\u0000\uD3A9\u0000\uD3AE" + // 7970 - 7974
+ "\u8EA2\uADA3\u0000\uD3B2\u0000\uD3B0\u0000\u0000\u8EA2\uACF9" + // 7975 - 7979
+ "\u0000\uD3AD\u0000\u0000\u8EA2\uADA1\u0000\uD3B1\u0000\uD3A8" + // 7980 - 7984
+ "\u8EA2\uADA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 7985 - 7989
+ "\u0000\u0000\u0000\u0000\u0000\uD7DE\u0000\u0000\u0000\uD7E7" + // 7990 - 7994
+ "\u0000\uD7DC\u0000\uD7DA\u8EA2\uB2AE\u0000\uD7E2\u0000\uD7DF" + // 7995 - 7999
+ "\u8EA2\uB2B0\u0000\u0000\u0000\u0000\u0000\uD7E1\u8EA2\uB2AF" + // 8000 - 8004
+ "\u8EA2\uB2AD\u8EA2\uB2B2\u0000\uD7E6\u0000\uD7E4\u8EA2\uBFAD" + // 8005 - 8009
+ "\u0000\u0000\u8EA2\uAAE8\u0000\u0000\u8EA2\uAAE9\u0000\u0000" + // 8010 - 8014
+ "\u0000\uD1CA\u8EA2\uAFD0\u0000\u0000\u0000\uD5E6\u0000\uD5E7" + // 8015 - 8019
+ "\u8EA2\uAFCF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8020 - 8024
+ "\u0000\uDAF7\u0000\u0000\u0000\uDAF3\u0000\u0000\u8EA2\uB5E9" + // 8025 - 8029
+ "\u0000\uDAFA\u0000\uDAF9\u0000\uDAF2\u0000\uDAF5\u0000\uDAF8" + // 8030 - 8034
+ "\u0000\uDAF4\u0000\u0000\u0000\u0000\u8EA2\uBCBB\u0000\uDAF1" + // 8035 - 8039
+ "\u0000\uDFD4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD6" + // 8040 - 8044
+ "\u0000\uDFD7\u8EA2\uBCBA\u8EA2\uBCBD\u0000\uDFD5\u8EA2\uBCB8" + // 8045 - 8049
+ "\u8EA2\uBCBC\u0000\u0000\u8EA2\uBCB9\u0000\u0000\u0000\uE4B9" + // 8050 - 8054
+ "\u0000\u0000\u0000\u0000\u8EA2\uC3C2\u0000\u0000\u0000\u0000" + // 8055 - 8059
+ "\u0000\uE8FD\u8EA2\uCADB\u0000\uF0EC\u0000\uEDAE\u8EA2\uD0E4" + // 8060 - 8064
+ "\u0000\uEDAF\u0000\uEDB0\u8EA2\uD0E6\u8EA2\uD0E5\u8EA2\uD0E7" + // 8065 - 8069
+ "\u8EA2\uD7BC\u0000\u0000\u0000\u0000\u8EA2\uD7BB\u0000\uFBC6" + // 8070 - 8074
+ "\u8EA2\uECEB\u8EA2\uECEA\u0000\uFBC5\u8EA2\uECE9\u0000\uFBC4" + // 8075 - 8079
+ "\u8EA2\uECE8\u0000\u0000\u8EA2\uEECC\u8EA2\uEECE\u8EA2\uEECD" + // 8080 - 8084
+ "\u0000\u0000\u8EA2\uEECA\u0000\uFCA7\u8EA2\uEEC7\u8EA2\uEECB" + // 8085 - 8089
+ "\u8EA2\uEED0\u0000\u0000\u8EA2\uEECF\u8EA2\uEEC8\u8EA2\uEEC9" + // 8090 - 8094
+ "\u0000\uFCA6\u8EA2\uEFE0\u0000\uFCD3\u0000\u0000\u8EA2\uEFE1" + // 8095 - 8099
+ "\u0000\uFCD1\u0000\uFCD2\u0000\u0000\u0000\u0000\u8EA2\uF0E1" + // 8100 - 8104
+ "\u0000\uFCF5\u8EA2\uF1E5\u0000\u0000\u0000\uFDB7\u0000\u0000" + // 8105 - 8109
+ "\u8EA2\uF2A3\u0000\uFDB8\u8EA2\uF2A4\u8EA2\uF2A5\u8EA2\uF2B3" + // 8110 - 8114
+ "\u8EA2\uF2B2\u0000\uFDC7\u8EA2\uF2BB\u0000\u0000\u0000\u0000" + // 8115 - 8119
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8120 - 8124
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8125 - 8129
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8130 - 8134
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2F5\u0000\uA2F6" + // 8135 - 8139
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8140 - 8144
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8145 - 8149
+ "\u0000\u0000\u0000\u0000\u0000\uA2F0\u0000\uA2F1\u0000\uA2F2" + // 8150 - 8154
+ "\u0000\u0000\u0000\u0000\u0000\uA2F4\u0000\u0000\u0000\u0000" + // 8155 - 8159
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8160 - 8164
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8165 - 8169
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8170 - 8174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8175 - 8179
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8180 - 8184
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8185 - 8189
+ "\u0000\uA2E6\u0000\uA2E7\u8EAD\uA4C0\u0000\uA2A4\u8EAD\uA4C1" + // 8190 - 8194
+ "\u0000\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8195 - 8199
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8200 - 8204
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8205 - 8209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8210 - 8214
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8215 - 8219
+ "\u0000\u0000\u0000\u0000\u8EAD\uA1BE\u0000\u0000\u8EAD\uA1BF" + // 8220 - 8224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8225 - 8229
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8230 - 8234
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8235 - 8239
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4BD\u0000\u0000" + // 8240 - 8244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8245 - 8249
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8250 - 8254
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8255 - 8259
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8260 - 8264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1C2\u0000\u0000" + // 8265 - 8269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8270 - 8274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8275 - 8279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8280 - 8284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8285 - 8289
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8290 - 8294
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8295 - 8299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8300 - 8304
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8305 - 8309
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8310 - 8314
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C4\u0000\u0000" + // 8315 - 8319
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8320 - 8324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8325 - 8329
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDB1\u0000\uE0C6" + // 8330 - 8334
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4C7\u8EA2\uC4C6" + // 8335 - 8339
+ "\u8EA2\uC4AC\u0000\uE4E3\u0000\u0000\u8EA2\uC4C5\u8EA2\uC4AF" + // 8340 - 8344
+ "\u8EA2\uC4B0\u0000\u0000\u0000\uE4ED\u8EA2\uC4CE\u0000\uE4E8" + // 8345 - 8349
+ "\u8EA2\uC4C4\u0000\u0000\u8EA2\uC4A9\u0000\uE4EE\u0000\uE4E4" + // 8350 - 8354
+ "\u8EA2\uC4B8\u8EA2\uC4AE\u8EA2\uC4B1\u8EA2\uC4C9\u0000\uE4DE" + // 8355 - 8359
+ "\u8EA2\uC4D0\u8EA2\uC4C8\u0000\uE4E7\u8EA2\uC4BD\u0000\uE4F2" + // 8360 - 8364
+ "\u0000\u0000\u0000\u0000\u0000\uE4F1\u0000\uE4EB\u0000\u0000" + // 8365 - 8369
+ "\u0000\u0000\u8EA2\uC4CF\u0000\uE4DF\u8EA2\uC4BB\u8EA2\uC4B2" + // 8370 - 8374
+ "\u8EA2\uC4BF\u8EA2\uC4CB\u0000\uE4F3\u0000\u0000\u0000\uE4E1" + // 8375 - 8379
+ "\u8EA2\uC4BA\u8EAD\uA4CB\u8EA2\uC4B3\u0000\uE4EA\u0000\u0000" + // 8380 - 8384
+ "\u0000\uE4E9\u8EA2\uC4B6\u8EA2\uC4C0\u8EA2\uC4CA\u8EA2\uCFB7" + // 8385 - 8389
+ "\u0000\u0000\u8EA2\uCFB6\u0000\uEBEE\u0000\u0000\u0000\uEBEF" + // 8390 - 8394
+ "\u0000\u0000\u8EA2\uCFB8\u8EA2\uD5E8\u0000\uEBF1\u0000\uEFF2" + // 8395 - 8399
+ "\u0000\u0000\u0000\uEBF0\u0000\u0000\u0000\u0000\u0000\u0000" + // 8400 - 8404
+ "\u0000\uF3A7\u8EA2\uD5EA\u0000\uEFF4\u0000\uEFF3\u8EA2\uD5EB" + // 8405 - 8409
+ "\u8EA2\uD5EE\u8EA2\uD5EC\u8EA2\uD5ED\u0000\uEFF5\u0000\u0000" + // 8410 - 8414
+ "\u0000\uF3AC\u0000\uF3AA\u0000\u0000\u0000\u0000\u0000\uF3A9" + // 8415 - 8419
+ "\u8EA2\uDBE9\u0000\u0000\u0000\uF3AB\u0000\u0000\u0000\u0000" + // 8420 - 8424
+ "\u8EA2\uDBE8\u8EA2\uE0D7\u0000\u0000\u8EA2\uDBEA\u0000\uF3A8" + // 8425 - 8429
+ "\u8EA2\uDBEB\u8EA2\uE0DA\u8EA2\uE0D8\u8EA2\uE0D9\u8EA2\uE0DE" + // 8430 - 8434
+ "\u0000\uF7F5\u8EA2\uE0DD\u8EA2\uE0E0\u8EA2\uE0DF\u8EA2\uE0DC" + // 8435 - 8439
+ "\u8EA2\uE0DB\u0000\u0000\u0000\uF6AA\u0000\u0000\u0000\u0000" + // 8440 - 8444
+ "\u0000\u0000\u0000\u0000\u8EA2\uE4D8\u0000\u0000\u8EA2\uE4D7" + // 8445 - 8449
+ "\u0000\uF7F4\u0000\uF7F2\u0000\uF7F3\u8EA2\uECE3\u8EA2\uEAE0" + // 8450 - 8454
+ "\u8EA2\uEAE1\u0000\u0000\u0000\uFAD1\u0000\u0000\u8EA2\uECE2" + // 8455 - 8459
+ "\u0000\u0000\u0000\u0000\u8EA2\uECE1\u0000\u0000\u8EA2\uEEC4" + // 8460 - 8464
+ "\u8EA2\uF1FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8465 - 8469
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8470 - 8474
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8475 - 8479
+ "\u0000\uD3F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FA" + // 8480 - 8484
+ "\u0000\u0000\u0000\u0000\u0000\uD8EA\u8EA2\uB3CB\u0000\u0000" + // 8485 - 8489
+ "\u8EA2\uBAB3\u0000\u0000\u0000\uE2FD\u0000\u0000\u0000\uE3A2" + // 8490 - 8494
+ "\u0000\uE2FE\u8EA2\uC1D3\u0000\u0000\u0000\uE3A4\u0000\u0000" + // 8495 - 8499
+ "\u0000\uE3A1\u0000\u0000\u0000\u0000\u0000\uE3A3\u0000\u0000" + // 8500 - 8504
+ "\u0000\uE7E6\u0000\u0000\u8EA2\uC8E8\u0000\u0000\u0000\u0000" + // 8505 - 8509
+ "\u8EA2\uC8E9\u8EA2\uD5E9\u0000\u0000\u0000\uE7E5\u0000\uE7E7" + // 8510 - 8514
+ "\u0000\uE7E8\u0000\u0000\u0000\uA2D1\u0000\u0000\u0000\uA2D2" + // 8515 - 8519
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8520 - 8524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8525 - 8529
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8530 - 8534
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8535 - 8539
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8540 - 8544
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8545 - 8549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8550 - 8554
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CE" + // 8555 - 8559
+ "\u0000\u0000\u0000\u0000\u8EAD\uA1CD\u0000\u0000\u8EAD\uA1CC" + // 8560 - 8564
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8565 - 8569
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8570 - 8574
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8575 - 8579
+ "\u0000\u0000\u8EA2\uBAE9\u8EA2\uC2AE\u0000\uE3DB\u0000\uE3DE" + // 8580 - 8584
+ "\u0000\uE3D9\u8EA2\uC2AD\u8EA2\uC2B1\u8EA2\uC2AC\u0000\u0000" + // 8585 - 8589
+ "\u0000\uE3D3\u0000\uE3DD\u8EA2\uC2A9\u0000\uE3D7\u8EA2\uC2B0" + // 8590 - 8594
+ "\u0000\u0000\u0000\uE3D5\u0000\uE3D4\u8EA2\uC2B3\u0000\uE3D6" + // 8595 - 8599
+ "\u8EA2\uC2B5\u0000\u0000\u8EA2\uC2B2\u0000\uE3D2\u0000\u0000" + // 8600 - 8604
+ "\u0000\u0000\u0000\u0000\u0000\uE3DC\u8EA2\uC2B7\u8EA2\uC2AB" + // 8605 - 8609
+ "\u8EA2\uC2B4\u0000\u0000\u0000\u0000\u8EA2\uC2AA\u0000\u0000" + // 8610 - 8614
+ "\u0000\u0000\u0000\uE3D8\u0000\u0000\u0000\uE3DA\u0000\u0000" + // 8615 - 8619
+ "\u8EA2\uC2AF\u0000\u0000\u8EA2\uC2B8\u0000\u0000\u0000\u0000" + // 8620 - 8624
+ "\u8EA2\uC9C4\u0000\uE8B8\u8EA2\uC9CA\u0000\u0000\u0000\u0000" + // 8625 - 8629
+ "\u0000\uE8BD\u8EA2\uC9C6\u8EA2\uC9CD\u8EA2\uC9BE\u0000\uE8BF" + // 8630 - 8634
+ "\u0000\uE8B9\u8EA2\uC9C3\u8EA2\uEFDF\u0000\uD3F7\u0000\uDEA1" + // 8635 - 8639
+ "\u0000\uDEA2\u8EA2\uBAB2\u0000\uE2FA\u0000\uE2FB\u8EA2\uC1D1" + // 8640 - 8644
+ "\u0000\uE2FC\u0000\u0000\u0000\uE7E2\u0000\u0000\u0000\uE7E4" + // 8645 - 8649
+ "\u8EA2\uC8E5\u8EA2\uC8E6\u8EA2\uC8E4\u0000\uE7DF\u0000\uE7E0" + // 8650 - 8654
+ "\u0000\uE7E3\u0000\uE7E1\u0000\u0000\u0000\u0000\u8EA2\uCFB3" + // 8655 - 8659
+ "\u0000\uEBEA\u0000\uEBEB\u0000\u0000\u0000\u0000\u8EA2\uD5E5" + // 8660 - 8664
+ "\u0000\uEFF0\u8EA2\uD5E0\u8EA2\uD5DF\u0000\u0000\u8EA2\uD5E4" + // 8665 - 8669
+ "\u0000\uEFEE\u0000\u0000\u0000\u0000\u0000\uF3A6\u0000\u0000" + // 8670 - 8674
+ "\u8EA2\uD5E1\u8EA2\uD5E6\u8EA2\uD5E3\u8EA2\uD5E2\u0000\u0000" + // 8675 - 8679
+ "\u0000\uEFEF\u0000\u0000\u0000\uF3A4\u0000\u0000\u8EA2\uDBE6" + // 8680 - 8684
+ "\u0000\uF2FE\u0000\u0000\u8EA2\uDBE7\u0000\u0000\u0000\u0000" + // 8685 - 8689
+ "\u8EA2\uDBE5\u0000\u0000\u0000\uF3A3\u0000\uF3A1\u0000\uF3A5" + // 8690 - 8694
+ "\u0000\u0000\u0000\uF3A2\u0000\u0000\u0000\u0000\u0000\u0000" + // 8695 - 8699
+ "\u0000\u0000\u8EA2\uA1A1\u0000\uC4A5\u0000\u0000\u0000\uC4BC" + // 8700 - 8704
+ "\u0000\u0000\u8EA2\uA1A8\u0000\uC4BD\u0000\u0000\u0000\u0000" + // 8705 - 8709
+ "\u0000\uC4E6\u0000\u0000\u0000\uC5E5\u0000\uC5E7\u0000\uC5E6" + // 8710 - 8714
+ "\u0000\u0000\u0000\u0000\u0000\uC7A4\u0000\uC7A5\u0000\u0000" + // 8715 - 8719
+ "\u0000\u0000\u0000\uCBE5\u0000\u0000\u0000\uD3FD\u0000\uC4A2" + // 8720 - 8724
+ "\u0000\u0000\u0000\u0000\u8EA2\uA1A2\u0000\uC4A6\u0000\uC4BF" + // 8725 - 8729
+ "\u0000\uC4BE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8730 - 8734
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8735 - 8739
+ "\u0000\uC7A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8740 - 8744
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8745 - 8749
+ "\u0000\uCBE6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8750 - 8754
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 8755 - 8759
+ "\u0000\u0000\u0000\uD8F1\u8EA2\uB3CE\u8EA2\uCFAB\u8EA2\uCFAF" + // 8760 - 8764
+ "\u8EA2\uCFAC\u8EA2\uCFAA\u8EA2\uCFAE\u0000\uEBE8\u0000\u0000" + // 8765 - 8769
+ "\u0000\u0000\u8EA2\uD5DC\u0000\u0000\u8EA2\uD5DA\u0000\uEFEC" + // 8770 - 8774
+ "\u0000\u0000\u0000\uEFEB\u8EA2\uD5DB\u0000\uEFED\u0000\u0000" + // 8775 - 8779
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBE2\u0000\u0000" + // 8780 - 8784
+ "\u0000\u0000\u8EA2\uDBE1\u0000\uF2FD\u8EA2\uDBE0\u8EA2\uE0C9" + // 8785 - 8789
+ "\u0000\u0000\u8EA2\uE0CB\u8EA2\uE0CD\u8EA2\uE0CC\u0000\u0000" + // 8790 - 8794
+ "\u0000\uF6A6\u8EA2\uE0CA\u8EA2\uE4CB\u0000\uF7E8\u8EA2\uE4C9" + // 8795 - 8799
+ "\u8EA2\uE4CC\u0000\uF7E9\u0000\u0000\u8EA2\uE4C7\u0000\u0000" + // 8800 - 8804
+ "\u8EA2\uE4CA\u8EA2\uE4C8\u8EA2\uE4C5\u0000\uF7EA\u8EA2\uE4C6" + // 8805 - 8809
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7EC" + // 8810 - 8814
+ "\u0000\u0000\u0000\u0000\u8EA2\uE7EE\u8EA2\uE7ED\u0000\u0000" + // 8815 - 8819
+ "\u8EA2\uEAD8\u0000\u0000\u8EA2\uEAD9\u0000\u0000\u0000\u0000" + // 8820 - 8824
+ "\u0000\u0000\u8EA2\uECDE\u0000\uEBE6\u0000\u0000\u8EA2\uD5D8" + // 8825 - 8829
+ "\u0000\u0000\u0000\uEFE6\u8EA2\uD5D6\u0000\uEFE7\u0000\uEFE8" + // 8830 - 8834
+ "\u8EA2\uD5D7\u0000\uEFE9\u0000\u0000\u8EA2\uDBDD\u0000\u0000" + // 8835 - 8839
+ "\u0000\uF2F7\u0000\uF2F4\u0000\uF2F9\u8EA2\uDBDF\u0000\uF2F5" + // 8840 - 8844
+ "\u8EA2\uDBDE\u0000\uF2F8\u0000\u0000\u0000\u0000\u0000\uF2F6" + // 8845 - 8849
+ "\u0000\u0000\u8EA2\uE0C6\u8EA2\uE0C8\u0000\u0000\u0000\u0000" + // 8850 - 8854
+ "\u0000\uF6A4\u8EA2\uE0C7\u0000\uF6A5\u8EA2\uE0C5\u8EA2\uE0C4" + // 8855 - 8859
+ "\u0000\u0000\u8EA2\uE4C3\u8EA2\uE4C2\u0000\uF7E7\u8EA2\uE4C4" + // 8860 - 8864
+ "\u8EA2\uE7EB\u0000\uF9C7\u8EA2\uE7EA\u8EA2\uE7E7\u0000\uF9C6" + // 8865 - 8869
+ "\u8EA2\uE7E8\u8EA2\uE7E9\u0000\u0000\u8EA2\uEAD6\u8EA2\uEAD7" + // 8870 - 8874
+ "\u0000\uFAD0\u0000\u0000\u0000\uFBBF\u0000\u0000\u0000\u0000" + // 8875 - 8879
+ "\u8EA2\uECDC\u0000\u0000\u0000\u0000\u0000\uFBBD\u0000\uFBBE" + // 8880 - 8884
+ "\u8EA2\uECDD\u0000\u0000\u0000\u0000\u0000\uFBFE\u0000\uFCA1" + // 8885 - 8889
+ "\u8EA2\uEEC0\u0000\uDDFA\u0000\uE2F2\u8EA2\uC1C9\u8EA2\uC1CB" + // 8890 - 8894
+ "\u0000\uE2F4\u0000\uE2F3\u0000\uE2F5\u0000\uE2F6\u8EA2\uC1CA" + // 8895 - 8899
+ "\u0000\uE7D6\u0000\uE7D7\u0000\uE7D5\u0000\uEBE4\u0000\uE7D4" + // 8900 - 8904
+ "\u8EA2\uC8DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBE5" + // 8905 - 8909
+ "\u8EA2\uD5D5\u8EA2\uDBDC\u0000\uF2F3\u0000\uF6A3\u8EA2\uE4BC" + // 8910 - 8914
+ "\u8EA2\uE4C0\u0000\uF7E4\u8EA2\uE4BD\u0000\uF7E5\u0000\uF7E3" + // 8915 - 8919
+ "\u8EA2\uE4C1\u0000\uF7E6\u8EA2\uE4BF\u0000\u0000\u8EA2\uE7E6" + // 8920 - 8924
+ "\u0000\uF7E2\u0000\uF9C5\u0000\u0000\u8EA2\uF0DB\u0000\u0000" + // 8925 - 8929
+ "\u0000\u0000\u0000\uCFE4\u0000\uDDFC\u0000\uDDFB\u0000\u0000" + // 8930 - 8934
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2F7\u8EA2\uC1CD" + // 8935 - 8939
+ "\u8EA2\uC1CC\u0000\uE2F8\u0000\u0000\u0000\u0000\u8EA2\uC8DF" + // 8940 - 8944
+ "\u0000\uE7DB\u0000\uE7D8\u8EA2\uC8DE\u0000\uE7DA\u8EA2\uC8DC" + // 8945 - 8949
+ "\u0000\uE7D9\u0000\u0000\u8EA2\uC8DD\u0000\u0000\u8EA2\uCFA5" + // 8950 - 8954
+ "\u8EA2\uC1C8\u0000\u0000\u0000\u0000\u8EA2\uC1C7\u0000\uE2F1" + // 8955 - 8959
+ "\u0000\uE2ED\u0000\uE2EE\u8EA2\uC1C3\u8EA2\uC1C5\u8EA2\uC1C6" + // 8960 - 8964
+ "\u0000\uE2E9\u0000\uE2EB\u0000\u0000\u0000\uE2EF\u0000\uE2EA" + // 8965 - 8969
+ "\u0000\u0000\u0000\u0000\u8EA2\uC8D9\u8EA2\uC8D7\u8EA2\uC8D8" + // 8970 - 8974
+ "\u0000\uE7D2\u0000\uE7D3\u0000\u0000\u8EA2\uC8DA\u0000\uE7D1" + // 8975 - 8979
+ "\u0000\uEBE1\u0000\u0000\u0000\uEBE3\u0000\uEBE2\u0000\u0000" + // 8980 - 8984
+ "\u8EA2\uCFA3\u0000\u0000\u0000\u0000\u8EA2\uCFA4\u8EA2\uD5D4" + // 8985 - 8989
+ "\u0000\u0000\u8EA2\uD5D3\u0000\u0000\u0000\u0000\u0000\uF2F0" + // 8990 - 8994
+ "\u0000\uF2F1\u8EA2\uDBDB\u0000\uF2F2\u0000\u0000\u8EA2\uE0C3" + // 8995 - 8999
+ "\u0000\u0000\u8EA2\uE0C1\u0000\u0000\u8EA2\uE0C2\u0000\uF6A1" + // 9000 - 9004
+ "\u0000\u0000\u8EA2\uE4BB\u0000\uF9C4\u0000\u0000\u0000\uA8EC" + // 9005 - 9009
+ "\u0000\u0000\u0000\uF6A2\u0000\uCFE3\u0000\u0000\u0000\uD8E9" + // 9010 - 9014
+ "\u8EA2\uB3CA\u0000\u0000\u0000\u0000\u8EA2\uBAB0\u0000\uCFDE" + // 9015 - 9019
+ "\u0000\u0000\u0000\uCFE2\u8EA2\uA8FC\u0000\uCFE1\u0000\u0000" + // 9020 - 9024
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADE7" + // 9025 - 9029
+ "\u0000\uD3EF\u0000\uD3F0\u0000\uD3F1\u8EA2\uADE8\u8EA2\uADE4" + // 9030 - 9034
+ "\u0000\uD3EE\u8EA2\uADE5\u0000\u0000\u8EA2\uADE6\u8EA2\uADE3" + // 9035 - 9039
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8E7\u0000\u0000" + // 9040 - 9044
+ "\u0000\u0000\u0000\uD8E4\u8EA2\uB3C8\u0000\uD8E5\u0000\uD8E8" + // 9045 - 9049
+ "\u8EA2\uB3C9\u0000\u0000\u0000\uD8E3\u0000\uD8E1\u0000\uD8E2" + // 9050 - 9054
+ "\u0000\uD8E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9055 - 9059
+ "\u0000\u0000\u0000\uDDF1\u8EA2\uBAAD\u0000\uDDF9\u8EA2\uBAAC" + // 9060 - 9064
+ "\u0000\u0000\u8EA2\uBAAF\u0000\uDDF5\u8EA2\uBAAE\u0000\uE2F0" + // 9065 - 9069
+ "\u0000\uDDF3\u0000\uDDF6\u0000\uDDF2\u0000\uDDF7\u0000\uDDF8" + // 9070 - 9074
+ "\u0000\uDDF4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAAB" + // 9075 - 9079
+ "\u0000\uE2EC\u8EA2\uC1C4\u0000\u0000\u0000\uA3B9\u8EAD\uA4A4" + // 9080 - 9084
+ "\u0000\uA3BA\u8EAD\uA4A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 9085 - 9089
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9090 - 9094
+ "\u0000\uA3BC\u0000\u0000\u0000\u0000\u8EAD\uA4A6\u0000\uA3BD" + // 9095 - 9099
+ "\u0000\u0000\u0000\u0000\u8EAD\uA4A7\u0000\uA3BE\u0000\u0000" + // 9100 - 9104
+ "\u0000\u0000\u8EAD\uA4A9\u0000\uA3BF\u0000\u0000\u0000\u0000" + // 9105 - 9109
+ "\u8EAD\uA4A8\u0000\uA3B7\u8EAD\uA4B4\u0000\u0000\u0000\u0000" + // 9110 - 9114
+ "\u8EAD\uA4AF\u0000\u0000\u0000\u0000\u8EAD\uA4AA\u0000\uA3B6" + // 9115 - 9119
+ "\u8EAD\uA4B6\u0000\u0000\u0000\u0000\u8EAD\uA4B1\u0000\u0000" + // 9120 - 9124
+ "\u0000\u0000\u8EAD\uA4AC\u0000\uA3B5\u0000\u0000\u0000\u0000" + // 9125 - 9129
+ "\u8EAD\uA4B0\u8EAD\uA4B5\u0000\u0000\u0000\u0000\u8EAD\uA4AB" + // 9130 - 9134
+ "\u0000\uA3B4\u0000\u0000\u0000\u0000\u8EAD\uA4B2\u8EAD\uA4B7" + // 9135 - 9139
+ "\u0000\u0000\u0000\u0000\u8EAD\uA4AD\u0000\uA3B3\u0000\u0000" + // 9140 - 9144
+ "\u0000\u0000\u8EAD\uA4B3\u8EA2\uE0BC\u0000\u0000\u0000\u0000" + // 9145 - 9149
+ "\u8EA2\uE0BE\u0000\u0000\u8EA2\uE0BF\u0000\uF5FE\u8EA2\uE0BB" + // 9150 - 9154
+ "\u0000\uF5FD\u8EA2\uE0BD\u0000\uF5FA\u0000\uF5FB\u0000\uF5FC" + // 9155 - 9159
+ "\u8EA2\uDBD3\u0000\u0000\u0000\u0000\u0000\uF7E0\u8EA2\uE4BA" + // 9160 - 9164
+ "\u8EA2\uE4B8\u8EA2\uE4B9\u0000\uF7DE\u0000\uF7E1\u0000\uF7DF" + // 9165 - 9169
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7E4\u8EA2\uE7E5" + // 9170 - 9174
+ "\u0000\uF9C3\u0000\u0000\u8EA2\uEAD3\u8EA2\uEAD5\u8EA2\uEAD4" + // 9175 - 9179
+ "\u0000\uFACF\u0000\uFBBC\u8EA2\uECDB\u8EA2\uECDA\u8EA2\uECD9" + // 9180 - 9184
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9185 - 9189
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9190 - 9194
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9195 - 9199
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9200 - 9204
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9205 - 9209
+ "\u0000\u0000\u0000\uA2BD\u0000\u0000\u0000\u0000\u0000\u0000" + // 9210 - 9214
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9215 - 9219
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9220 - 9224
+ "\u0000\uA2BB\u0000\uA2BE\u0000\u0000\u0000\u0000\u0000\u0000" + // 9225 - 9229
+ "\u0000\u0000\u0000\uA2B9\u0000\uA2BA\u0000\u0000\u0000\u0000" + // 9230 - 9234
+ "\u8EAD\uA1C5\u8EAD\uA1C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 9235 - 9239
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9240 - 9244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9245 - 9249
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9250 - 9254
+ "\u0000\u0000\u0000\u0000\u0000\uA2D8\u0000\uA2D5\u0000\uA2D7" + // 9255 - 9259
+ "\u0000\uA2D6\u0000\u0000\u0000\u0000\u0000\uA2D9\u0000\uA2DA" + // 9260 - 9264
+ "\u0000\uA2DC\u0000\uA2DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 9265 - 9269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9270 - 9274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9275 - 9279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9280 - 9284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9285 - 9289
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9290 - 9294
+ "\u0000\u0000\u0000\u0000\u8EAD\uA4BE\u8EAD\uA4BF\u0000\u0000" + // 9295 - 9299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9300 - 9304
+ "\u0000\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9305 - 9309
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9310 - 9314
+ "\u0000\uA2F3\u0000\u0000\u0000\u0000\u0000\uA2CC\u0000\uA2CB" + // 9315 - 9319
+ "\u0000\u0000\u0000\u0000\u0000\uA2EF\u0000\u0000\u0000\u0000" + // 9320 - 9324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9325 - 9329
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9330 - 9334
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9335 - 9339
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9340 - 9344
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9345 - 9349
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9350 - 9354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9355 - 9359
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9360 - 9364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9365 - 9369
+ "\u0000\u0000\u0000\uA1AB\u0000\uA1B6\u0000\uA1B8\u0000\uA1BA" + // 9370 - 9374
+ "\u0000\uA1BC\u0000\uA1C0\u0000\uA1C1\u0000\uA1C4\u0000\uA1C5" + // 9375 - 9379
+ "\u0000\uA1C8\u0000\uA1C9\u0000\uA1CC\u0000\uA1CD\u0000\uA1D0" + // 9380 - 9384
+ "\u0000\uA1D1\u0000\uA1D4\u0000\uCFDC\u0000\u0000\u0000\uD3ED" + // 9385 - 9389
+ "\u0000\uD8E0\u0000\u0000\u0000\u0000\u8EA2\uBAA9\u0000\u0000" + // 9390 - 9394
+ "\u8EA2\uBAAA\u0000\uDDF0\u0000\u0000\u0000\uE2E4\u8EA2\uC1C1" + // 9395 - 9399
+ "\u8EA2\uC1C0\u0000\uE2E8\u0000\uE2E3\u8EA2\uC1C2\u0000\uE2E5" + // 9400 - 9404
+ "\u0000\uE2E7\u0000\uE2E6\u0000\uE2E2\u0000\u0000\u0000\u0000" + // 9405 - 9409
+ "\u0000\u0000\u0000\uE7D0\u0000\u0000\u0000\u0000\u8EA2\uC8D6" + // 9410 - 9414
+ "\u8EA2\uC8D4\u0000\u0000\u8EA2\uC8D5\u8EA2\uC8D3\u0000\u0000" + // 9415 - 9419
+ "\u0000\uEBDB\u0000\u0000\u0000\uEBDE\u0000\uEBE0\u0000\uEBDF" + // 9420 - 9424
+ "\u0000\u0000\u0000\u0000\u0000\uEBDC\u0000\uEBDD\u0000\u0000" + // 9425 - 9429
+ "\u8EA2\uD5D0\u8EA2\uD5CF\u0000\uEFE4\u8EA2\uD5D1\u0000\u0000" + // 9430 - 9434
+ "\u8EA2\uD5D2\u0000\uEFE5\u0000\u0000\u0000\u0000\u0000\u0000" + // 9435 - 9439
+ "\u8EA2\uDBD9\u8EA2\uDBD7\u8EA2\uE0C0\u0000\u0000\u8EA2\uDBD5" + // 9440 - 9444
+ "\u8EA2\uDBD6\u0000\uF2EF\u8EA2\uDBD2\u8EA2\uDBDA\u8EA2\uDBD4" + // 9445 - 9449
+ "\u8EA2\uDBD8\u8EA2\uF2B0\u8EA2\uF2B1\u8EA2\uF2AF\u8EA2\uF2B7" + // 9450 - 9454
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9455 - 9459
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9460 - 9464
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9465 - 9469
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9470 - 9474
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9475 - 9479
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9480 - 9484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9485 - 9489
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9490 - 9494
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9495 - 9499
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9500 - 9504
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9505 - 9509
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9510 - 9514
+ "\u8EAD\uA1A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9515 - 9519
+ "\u0000\u0000\u8EA2\uA1BA\u0000\u0000\u0000\u0000\u8EA2\uA3D0" + // 9520 - 9524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA7C2\u0000\u0000" + // 9525 - 9529
+ "\u8EA2\uA6A3\u8EA2\uA9E1\u8EA2\uAEDB\u0000\uD4EE\u0000\u0000" + // 9530 - 9534
+ "\u0000\u0000\u8EA2\uE5C5\u0000\u0000\u0000\uFAE7\u0000\uC4CA" + // 9535 - 9539
+ "\u0000\uC6C0\u8EA2\uA1D1\u0000\u0000\u0000\uC7E8\u0000\uC7E9" + // 9540 - 9544
+ "\u0000\u0000\u0000\uCCDF\u0000\u0000\u0000\u0000\u0000\u0000" + // 9545 - 9549
+ "\u0000\uD9DC\u0000\u0000\u0000\uE8C2\u0000\u0000\u0000\uE8C3" + // 9550 - 9554
+ "\u0000\uE8C1\u0000\u0000\u0000\uC4CB\u0000\u0000\u0000\uC5B2" + // 9555 - 9559
+ "\u0000\uC5B4\u0000\uC5B3\u8EA2\uA1BB\u0000\uC5B5\u0000\uC6C1" + // 9560 - 9564
+ "\u8EA2\uA1D2\u0000\u0000\u0000\uC6C2\u0000\u0000\u0000\u0000" + // 9565 - 9569
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7EA\u0000\uC7EB" + // 9570 - 9574
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2AB\u0000\u0000" + // 9575 - 9579
+ "\u0000\uC9E8\u0000\u0000\u0000\uC2A1\u0000\uC2A2\u0000\uC2A3" + // 9580 - 9584
+ "\u0000\uC2A4\u0000\uC2A5\u0000\uC2A6\u0000\uC2A7\u0000\uC2A8" + // 9585 - 9589
+ "\u0000\uC2A9\u0000\uC2AA\u0000\uC2AB\u0000\uC2AC\u0000\uC2AD" + // 9590 - 9594
+ "\u0000\uC2AE\u0000\uC2AF\u0000\uC2B0\u0000\uC2B1\u0000\uC2B2" + // 9595 - 9599
+ "\u0000\uC2B3\u0000\uC2B4\u0000\uC2B5\u0000\uC2B6\u0000\uC2B7" + // 9600 - 9604
+ "\u0000\uC2B8\u0000\uC2B9\u0000\uC2BA\u0000\uC2BB\u0000\uC2BC" + // 9605 - 9609
+ "\u0000\uC2BD\u0000\uC2BE\u0000\uC2BF\u0000\uC2C0\u0000\u0000" + // 9610 - 9614
+ "\u0000\uC2C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9615 - 9619
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9620 - 9624
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9625 - 9629
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9630 - 9634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9635 - 9639
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9640 - 9644
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6A1\u0000\uA6A2" + // 9645 - 9649
+ "\u0000\uA6A3\u0000\uA6A4\u0000\uA6A5\u0000\uA6A6\u0000\uA6A7" + // 9650 - 9654
+ "\u0000\uA6A8\u0000\uA6A9\u0000\uA6AA\u0000\u0000\u0000\u0000" + // 9655 - 9659
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9660 - 9664
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6AB\u0000\uA6AC" + // 9665 - 9669
+ "\u0000\uA6AD\u0000\uA6AE\u0000\uA6AF\u0000\uA6B0\u0000\uA6B1" + // 9670 - 9674
+ "\u0000\uA6B2\u0000\uA6B3\u0000\uA6B4\u0000\u0000\u0000\u0000" + // 9675 - 9679
+ "\u8EA2\uCCE4\u0000\u0000\u0000\uEAB1\u8EA2\uCCDF\u0000\u0000" + // 9680 - 9684
+ "\u0000\uEAB0\u8EA2\uCCD5\u0000\u0000\u8EA2\uCCD7\u0000\uEAA9" + // 9685 - 9689
+ "\u8EA2\uCCDC\u8EA2\uCCDB\u8EA2\uCCDE\u0000\uEAAE\u8EA2\uCCD9" + // 9690 - 9694
+ "\u8EA2\uCCD8\u0000\u0000\u0000\u0000\u0000\uEAAD\u0000\uEAA8" + // 9695 - 9699
+ "\u8EA2\uCCDA\u0000\uEAAB\u8EA2\uCCE0\u8EA2\uCCE2\u0000\u0000" + // 9700 - 9704
+ "\u8EA2\uCCDD\u8EA2\uCCD6\u0000\uEAAC\u0000\u0000\u0000\u0000" + // 9705 - 9709
+ "\u0000\uEEB4\u0000\uEAA7\u0000\u0000\u0000\u0000\u8EA2\uCCE3" + // 9710 - 9714
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9715 - 9719
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2E1\u0000\uEEAD\u0000\u0000" + // 9720 - 9724
+ "\u8EA2\uD2E3\u0000\u0000\u0000\uEEAE\u0000\u0000\u0000\u0000" + // 9725 - 9729
+ "\u0000\uEEB0\u8EA2\uD2E6\u0000\u0000\u8EA2\uD2DE\u0000\uEAAF" + // 9730 - 9734
+ "\u8EA2\uD2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9735 - 9739
+ "\u8EA2\uD2E0\u0000\u0000\u0000\uF0DF\u0000\uF0E6\u8EA2\uD7B6" + // 9740 - 9744
+ "\u0000\uF0E4\u0000\uF0DE\u0000\u0000\u0000\uF0E5\u0000\u0000" + // 9745 - 9749
+ "\u8EA2\uD7B3\u0000\uF3E4\u0000\uF0E0\u0000\u0000\u0000\uF0E7" + // 9750 - 9754
+ "\u0000\uF3E3\u8EA2\uD7B2\u8EA2\uD7B1\u0000\u0000\u0000\uF0E9" + // 9755 - 9759
+ "\u0000\u0000\u0000\uF0EA\u0000\u0000\u8EA2\uD7B0\u8EA2\uD7AF" + // 9760 - 9764
+ "\u0000\uF3E5\u8EA2\uD7B9\u0000\uF0E3\u8EA2\uD7B7\u0000\u0000" + // 9765 - 9769
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3E6\u0000\u0000" + // 9770 - 9774
+ "\u0000\uF3EB\u8EA2\uDCF5\u8EA2\uDCF7\u0000\u0000\u0000\uF3E8" + // 9775 - 9779
+ "\u0000\u0000\u8EA2\uDCF8\u8EA2\uDCF4\u0000\u0000\u8EA2\uDCF6" + // 9780 - 9784
+ "\u0000\uF3E9\u0000\uF3EC\u0000\u0000\u8EA2\uDCF3\u0000\uF3E7" + // 9785 - 9789
+ "\u0000\uF3EA\u0000\uF6C5\u8EA2\uD7B8\u0000\uF6C4\u0000\u0000" + // 9790 - 9794
+ "\u0000\u0000\u0000\uF6CA\u8EA2\uE1E0\u0000\u0000\u0000\uF6C8" + // 9795 - 9799
+ "\u0000\uF6C9\u8EA2\uE1E3\u8EA2\uE1DF\u0000\uF6C6\u8EA2\uE1DD" + // 9800 - 9804
+ "\u8EA2\uECD7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBFB" + // 9805 - 9809
+ "\u8EA2\uEEBC\u8EA2\uEEBF\u8EA2\uEEBB\u8EA2\uEEBD\u8EA2\uEEBE" + // 9810 - 9814
+ "\u8EA2\uEEB8\u8EA2\uEEB9\u8EA2\uEEB6\u0000\u0000\u0000\u0000" + // 9815 - 9819
+ "\u8EA2\uEEBA\u8EA2\uEEB7\u0000\uFBFC\u0000\uFBFD\u0000\u0000" + // 9820 - 9824
+ "\u0000\u0000\u8EA2\uEFD9\u0000\u0000\u8EA2\uEFDB\u0000\u0000" + // 9825 - 9829
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFDA" + // 9830 - 9834
+ "\u8EA2\uEFDC\u0000\u0000\u0000\uFCCC\u0000\u0000\u8EA2\uEFD8" + // 9835 - 9839
+ "\u0000\uFCCB\u0000\uFCCD\u0000\u0000\u0000\u0000\u0000\u0000" + // 9840 - 9844
+ "\u8EA2\uF0D9\u8EA2\uF0DA\u0000\uFCEF\u8EA2\uF0D8\u0000\u0000" + // 9845 - 9849
+ "\u8EA2\uF1C2\u8EA2\uF1C1\u8EA2\uF1C3\u0000\uFDAC\u8EA2\uF1C4" + // 9850 - 9854
+ "\u0000\uFDAB\u8EA2\uF1C5\u8EA2\uF1E1\u8EA2\uF1E4\u8EA2\uF1E3" + // 9855 - 9859
+ "\u0000\uFDB5\u8EA2\uF1E2\u0000\u0000\u0000\u0000\u0000\u0000" + // 9860 - 9864
+ "\u0000\uFDBF\u0000\uFDBD\u0000\uFDBE\u0000\uFDC4\u8EA2\uEAC2" + // 9865 - 9869
+ "\u0000\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000\u0000" + // 9870 - 9874
+ "\u8EA2\uEAD2\u8EA2\uEAC4\u0000\u0000\u8EA2\uEAC9\u8EA2\uEACC" + // 9875 - 9879
+ "\u8EA2\uEAB5\u8EA2\uEACF\u8EA2\uEAC0\u8EA2\uEAC5\u8EA2\uEAB9" + // 9880 - 9884
+ "\u8EA2\uEABD\u8EA2\uEAD1\u8EA2\uEAC7\u8EA2\uEAB6\u8EA2\uEABA" + // 9885 - 9889
+ "\u8EA2\uEABC\u8EA2\uEAC6\u0000\u0000\u0000\uFACC\u8EA2\uEABF" + // 9890 - 9894
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9895 - 9899
+ "\u0000\u0000\u8EA2\uEAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 9900 - 9904
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEABE" + // 9905 - 9909
+ "\u8EA2\uECD0\u8EA2\uECD4\u0000\uFBBB\u8EA2\uECD6\u0000\u0000" + // 9910 - 9914
+ "\u0000\uFBB5\u0000\u0000\u8EA2\uECD2\u8EA2\uECD8\u0000\uFBBA" + // 9915 - 9919
+ "\u0000\uFBB6\u0000\u0000\u0000\uFBB7\u8EA2\uECCF\u8EA2\uECD5" + // 9920 - 9924
+ "\u0000\uFBB9\u8EA2\uECD3\u0000\uFBB8\u8EA2\uECCE\u8EA2\uEACB" + // 9925 - 9929
+ "\u8EA2\uECD1\u0000\u0000\u8EA2\uECCD\u8EA2\uE7DF\u0000\u0000" + // 9930 - 9934
+ "\u8EA2\uE7CF\u0000\uF9B8\u8EA2\uE7DD\u0000\u0000\u0000\u0000" + // 9935 - 9939
+ "\u8EA2\uE7CD\u0000\uF9B9\u0000\u0000\u8EA2\uE7D8\u0000\u0000" + // 9940 - 9944
+ "\u8EA2\uE7D4\u0000\uF9BE\u8EA2\uE7DE\u8EA2\uE7CE\u8EA2\uE7D1" + // 9945 - 9949
+ "\u0000\uF9B6\u8EA2\uE7E0\u0000\u0000\u8EA2\uE7D9\u8EA2\uE7DC" + // 9950 - 9954
+ "\u0000\uF9BC\u0000\uF9C1\u0000\uF9BF\u8EA2\uE7D5\u8EA2\uE7D0" + // 9955 - 9959
+ "\u0000\u0000\u0000\uF9BA\u0000\uF9BB\u8EA2\uE7CC\u0000\uF9B7" + // 9960 - 9964
+ "\u0000\u0000\u0000\uF9B5\u0000\uF9BD\u8EA2\uE7DB\u0000\uF9C0" + // 9965 - 9969
+ "\u0000\u0000\u8EA2\uE7D7\u8EA2\uE7E2\u0000\uF9C2\u0000\u0000" + // 9970 - 9974
+ "\u0000\u0000\u0000\u0000\u8EA2\uE7D3\u0000\u0000\u8EA2\uE7DA" + // 9975 - 9979
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 9980 - 9984
+ "\u0000\u0000\u8EA2\uEAC1\u8EA2\uEAD0\u8EA2\uEAC3\u8EA2\uEACA" + // 9985 - 9989
+ "\u8EA2\uE7D2\u8EA2\uEAC8\u8EA2\uEAB7\u8EA2\uEACE\u0000\uFACE" + // 9990 - 9994
+ "\u8EA2\uEABB\u8EA2\uEACD\u8EA2\uE4AF\u0000\u0000\u0000\uF5ED" + // 9995 - 9999
+ "\u8EA2\uDFFA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10000 - 10004
+ "\u8EA2\uE4AC\u8EA2\uE4A5\u0000\uF7D4\u0000\u0000\u8EA2\uE3FE" + // 10005 - 10009
+ "\u8EA2\uE4B0\u8EA2\uE4A7\u8EA2\uE0AA\u0000\u0000\u8EA2\uE4B2" + // 10010 - 10014
+ "\u8EA2\uE4A1\u0000\u0000\u0000\uF7D3\u8EA2\uE4AB\u0000\uF7D5" + // 10015 - 10019
+ "\u0000\uF7DD\u0000\uF7DB\u8EA2\uE4AD\u0000\uF7DC\u8EA2\uE4A3" + // 10020 - 10024
+ "\u0000\u0000\u8EA2\uE4A4\u8EA2\uE4A9\u8EA2\uE4AE\u0000\u0000" + // 10025 - 10029
+ "\u8EA2\uDFF9\u0000\uF7D6\u8EA2\uE4B7\u8EA2\uE4B4\u8EA2\uE7E1" + // 10030 - 10034
+ "\u8EA2\uE4AA\u8EA2\uE4A6\u8EA2\uE4B5\u8EA2\uE7D6\u8EA2\uE4A8" + // 10035 - 10039
+ "\u0000\u0000\u0000\uF7D9\u0000\u0000\u0000\uF7D8\u8EA2\uDFFB" + // 10040 - 10044
+ "\u0000\uF7DA\u8EA2\uE4B1\u8EA2\uE4B3\u0000\uF7D7\u8EA2\uE4B6" + // 10045 - 10049
+ "\u8EA2\uE3FD\u0000\u0000\u8EA2\uE4A2\u0000\u0000\u0000\u0000" + // 10050 - 10054
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10055 - 10059
+ "\u0000\u0000\u8EA2\uDBB8\u8EA2\uDFFE\u0000\u0000\u8EA2\uE0A5" + // 10060 - 10064
+ "\u0000\uF5F0\u0000\uF5F2\u8EA2\uE0AB\u0000\uF5EC\u8EA2\uE0B9" + // 10065 - 10069
+ "\u8EA2\uE0B1\u8EA2\uE0A6\u8EA2\uE0A7\u8EA2\uE0B0\u0000\u0000" + // 10070 - 10074
+ "\u0000\uF5F9\u8EA2\uE0AF\u8EA2\uDFFD\u8EA2\uE0AE\u8EA2\uE0A2" + // 10075 - 10079
+ "\u8EA2\uE0BA\u0000\uF5F8\u0000\uF5F6\u8EA2\uE0A3\u0000\u0000" + // 10080 - 10084
+ "\u8EA2\uE0B6\u0000\u0000\u8EA2\uE0A8\u8EA2\uE0B5\u0000\u0000" + // 10085 - 10089
+ "\u8EA2\uE0B7\u8EA2\uDFFC\u0000\uF5F1\u0000\u0000\u8EA2\uE0B8" + // 10090 - 10094
+ "\u0000\u0000\u0000\u0000\u8EA2\uE0AC\u0000\u0000\u0000\uF5F5" + // 10095 - 10099
+ "\u8EA2\uE0A9\u0000\u0000\u0000\u0000\u0000\uF5F7\u8EA2\uE0B2" + // 10100 - 10104
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF5EF\u8EA2\uE0A4" + // 10105 - 10109
+ "\u8EA2\uE0B3\u0000\u0000\u8EA2\uE0AD\u8EA2\uDBB1\u8EA2\uE0B4" + // 10110 - 10114
+ "\u8EA2\uE0A1\u0000\u0000\u0000\uF5F4\u0000\u0000\u8EAD\uA1C0" + // 10115 - 10119
+ "\u0000\u0000\u8EAD\uA1C3\u8EAD\uA1C1\u0000\u0000\u0000\u0000" + // 10120 - 10124
+ "\u0000\u0000\u8EAD\uA1C4\u8EAD\uA1B6\u0000\u0000\u0000\u0000" + // 10125 - 10129
+ "\u8EAD\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10130 - 10134
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10135 - 10139
+ "\u0000\uA2E1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10140 - 10144
+ "\u0000\uA2B5\u0000\u0000\u0000\u0000\u8EAD\uA1C8\u0000\uA2BC" + // 10145 - 10149
+ "\u0000\uA2C9\u0000\uA2C8\u0000\u0000\u0000\u0000\u0000\u0000" + // 10150 - 10154
+ "\u0000\u0000\u0000\uA2DD\u0000\u0000\u8EAD\uA1BC\u8EAD\uA1BD" + // 10155 - 10159
+ "\u0000\uA2C5\u0000\uA2C6\u0000\uA2CD\u8EAD\uA1C9\u0000\u0000" + // 10160 - 10164
+ "\u0000\uA2CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10165 - 10169
+ "\u0000\u0000\u0000\uA2D0\u0000\uA2CF\u0000\u0000\u0000\u0000" + // 10170 - 10174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C4" + // 10175 - 10179
+ "\u8EAD\uA1C7\u0000\u0000\u0000\u0000\u8EA2\uE2C1\u0000\u0000" + // 10180 - 10184
+ "\u8EA2\uE6A7\u0000\u0000\u0000\u0000\u0000\uF8D4\u0000\u0000" + // 10185 - 10189
+ "\u8EA2\uE6A5\u8EA2\uE6A6\u0000\u0000\u8EA2\uE9C3\u8EA2\uE9C6" + // 10190 - 10194
+ "\u8EA2\uE9C4\u8EA2\uE9C5\u8EA2\uEBEE\u0000\u0000\u0000\u0000" + // 10195 - 10199
+ "\u0000\uFAFA\u8EA2\uEFBA\u8EA2\uF0C2\u0000\u0000\u0000\uFCE3" + // 10200 - 10204
+ "\u8EA2\uF1A8\u8EA2\uF1A9\u0000\uFDB3\u0000\uC6F9\u0000\uD2E4" + // 10205 - 10209
+ "\u0000\u0000\u8EA2\uBEC7\u0000\u0000\u8EA2\uC5C9\u0000\u0000" + // 10210 - 10214
+ "\u0000\uC6FA\u0000\uCBB2\u0000\u0000\u0000\uCFA1\u0000\u0000" + // 10215 - 10219
+ "\u8EA2\uACCA\u8EA2\uACCB\u0000\uD6FB\u0000\u0000\u0000\u0000" + // 10220 - 10224
+ "\u8EA2\uBEC8\u0000\uE0FB\u0000\uE5CE\u0000\uF4CC\u8EA2\uDDEE" + // 10225 - 10229
+ "\u8EA2\uE6A8\u8EA2\uE9C7\u0000\uC6FB\u0000\u0000\u0000\u0000" + // 10230 - 10234
+ "\u0000\u0000\u8EA2\uA8C1\u8EA2\uA8BC\u8EA2\uA8BE\u8EA2\uA8C0" + // 10235 - 10239
+ "\u8EA2\uA8BF\u8EA2\uA8BD\u0000\uCFA2\u0000\u0000\u0000\u0000" + // 10240 - 10244
+ "\u0000\uD2E5\u8EA2\uACD4\u0000\u0000\u8EA2\uACCF\u8EA2\uACCC" + // 10245 - 10249
+ "\u0000\u0000\u0000\u0000\u8EA2\uACD3\u0000\u0000\u0000\u0000" + // 10250 - 10254
+ "\u0000\uD2E7\u0000\uD2E8\u8EA2\uACD2\u8EA2\uACD1\u8EA2\uACD0" + // 10255 - 10259
+ "\u8EA2\uACCD\u8EA2\uACCE\u8EA2\uACD5\u0000\uD2E6\u0000\u0000" + // 10260 - 10264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10265 - 10269
+ "\u0000\u0000\u0000\u0000\u0000\uD7A1\u0000\u0000\u0000\uD7A7" + // 10270 - 10274
+ "\u0000\uD7A6\u8EA2\uB1C4\u8EA2\uB1BE\u8EA2\uB1BC\u0000\u0000" + // 10275 - 10279
+ "\u0000\uD7A4\u8EA2\uB7DC\u0000\uD6FD\u8EA2\uB1C1\u8EA2\uB1C5" + // 10280 - 10284
+ "\u8EA2\uB1C7\u8EA2\uB1C3\u8EA2\uB1BD\u0000\uD7A5\u8EA2\uB1C2" + // 10285 - 10289
+ "\u8EA2\uB1C0\u0000\uD6FC\u8EA2\uB1C8\u0000\uD7A8\u8EA2\uB1C6" + // 10290 - 10294
+ "\u0000\uD7A2\u8EA2\uB1BF\u0000\u0000\u0000\uD7A3\u0000\uD6FE" + // 10295 - 10299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10300 - 10304
+ "\u0000\u0000\u0000\u0000\u0000\uA5C7\u0000\uA5C8\u0000\uA5C9" + // 10305 - 10309
+ "\u0000\uA5CA\u0000\uA5CB\u0000\uA5CC\u0000\uA5CD\u0000\uA5CE" + // 10310 - 10314
+ "\u0000\uA5CF\u0000\uA5D0\u0000\uA5D1\u0000\uA5D2\u0000\uA5D3" + // 10315 - 10319
+ "\u0000\uA5D4\u0000\uA5D5\u0000\uA5D6\u0000\uA5D7\u0000\uA5D8" + // 10320 - 10324
+ "\u0000\uA5D9\u0000\uA5DA\u0000\uA5DB\u0000\uA5DC\u0000\uA5DD" + // 10325 - 10329
+ "\u0000\uA5DE\u0000\uA5DF\u0000\uA5E0\u0000\uA5E1\u0000\uA5E2" + // 10330 - 10334
+ "\u0000\uA5E3\u0000\uA5E4\u0000\uA5E5\u0000\uA5E6\u0000\uA5E7" + // 10335 - 10339
+ "\u0000\uA5E8\u0000\uA5E9\u0000\uA5EA\u0000\uA5EB\u0000\u0000" + // 10340 - 10344
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10345 - 10349
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10350 - 10354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10355 - 10359
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10360 - 10364
+ "\u0000\u0000\u0000\uA4F5\u0000\uA4F6\u0000\uA4F7\u0000\uA4F8" + // 10365 - 10369
+ "\u0000\uA4F9\u0000\uA4FA\u0000\uA4FB\u0000\uA4FC\u0000\uA4FD" + // 10370 - 10374
+ "\u0000\uA4FE\u0000\uA5A1\u0000\uA5A2\u0000\uA5A3\u0000\uA5A4" + // 10375 - 10379
+ "\u0000\uA5A5\u0000\uA5A6\u0000\uA5A7\u0000\u0000\u0000\uA5A8" + // 10380 - 10384
+ "\u0000\uA5A9\u0000\uA5AA\u0000\uA5AB\u0000\uA5AC\u0000\uA5AD" + // 10385 - 10389
+ "\u0000\uA5AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10390 - 10394
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5AF\u0000\uA5B0" + // 10395 - 10399
+ "\u0000\uA5B1\u0000\uA5B2\u0000\uA5B3\u0000\uA5B4\u0000\uA5B5" + // 10400 - 10404
+ "\u0000\uA5B6\u0000\uA5B7\u0000\uA5B8\u0000\uA5B9\u0000\uA5BA" + // 10405 - 10409
+ "\u0000\uA5BB\u0000\uA5BC\u0000\uA5BD\u8EA2\uDBCF\u8EA2\uDBB7" + // 10410 - 10414
+ "\u8EA2\uDBC3\u0000\u0000\u0000\uF2E7\u0000\u0000\u8EA2\uDBAF" + // 10415 - 10419
+ "\u0000\u0000\u8EA2\uDBAD\u8EA2\uDBCE\u0000\u0000\u8EA2\uDBCC" + // 10420 - 10424
+ "\u8EA2\uDBCB\u8EA2\uDBBB\u8EA2\uDBBA\u8EA2\uDBB0\u0000\uF2E9" + // 10425 - 10429
+ "\u0000\u0000\u8EA2\uDBB6\u8EA2\uDBBF\u8EA2\uDBCA\u0000\uF2EC" + // 10430 - 10434
+ "\u8EA2\uDBD1\u0000\u0000\u0000\uF5F3\u0000\uF2EE\u0000\uF2E8" + // 10435 - 10439
+ "\u8EA2\uDBB4\u0000\u0000\u8EA2\uDBBD\u8EA2\uDBAC\u8EA2\uDBAE" + // 10440 - 10444
+ "\u0000\uF2DF\u0000\uF2EB\u0000\uF2E4\u8EA2\uDBB5\u8EA2\uDBC4" + // 10445 - 10449
+ "\u8EA2\uD5CB\u0000\uF2EA\u8EA2\uDBAB\u0000\uF5EE\u8EA2\uDBC6" + // 10450 - 10454
+ "\u8EA2\uDBC9\u0000\uF2E6\u0000\u0000\u8EA2\uDBB9\u0000\uF2ED" + // 10455 - 10459
+ "\u0000\uF2E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2E2" + // 10460 - 10464
+ "\u8EA2\uDBC2\u8EA2\uDBC8\u0000\uF2E0\u0000\u0000\u8EA2\uDBB2" + // 10465 - 10469
+ "\u8EA2\uDBC7\u0000\u0000\u0000\u0000\u8EA2\uDBB3\u0000\u0000" + // 10470 - 10474
+ "\u0000\u0000\u0000\u0000\u0000\uF4C3\u8EA2\uDDE0\u0000\u0000" + // 10475 - 10479
+ "\u0000\u0000\u0000\uF4C2\u8EA2\uDDE3\u8EA2\uDDE1\u8EA2\uDDE2" + // 10480 - 10484
+ "\u0000\u0000\u0000\u0000\u0000\uF4C4\u0000\u0000\u0000\u0000" + // 10485 - 10489
+ "\u0000\u0000\u8EA2\uE2BA\u0000\u0000\u0000\uF6EB\u8EA2\uE2BB" + // 10490 - 10494
+ "\u0000\u0000\u0000\u0000\u0000\uF6E9\u8EA2\uE2BC\u0000\uF6EA" + // 10495 - 10499
+ "\u8EA2\uE2B9\u8EA2\uE2BD\u0000\u0000\u8EA2\uE2B7\u0000\u0000" + // 10500 - 10504
+ "\u0000\u0000\u0000\uF8D2\u8EA2\uE6A4\u0000\uF8D3\u0000\uF9FA" + // 10505 - 10509
+ "\u0000\u0000\u8EA2\uE2B8\u0000\uF9FB\u0000\u0000\u0000\u0000" + // 10510 - 10514
+ "\u0000\u0000\u0000\uFAF9\u8EA2\uEBED\u0000\u0000\u0000\uFBEA" + // 10515 - 10519
+ "\u8EA2\uEDE2\u0000\uFBE9\u0000\u0000\u8EA2\uEFB9\u0000\uFCE1" + // 10520 - 10524
+ "\u0000\uFCE2\u0000\u0000\u0000\u0000\u8EA2\uF2BA\u0000\uA8AA" + // 10525 - 10529
+ "\u0000\u0000\u0000\uD2D4\u8EA2\uACC0\u0000\u0000\u0000\uE0F4" + // 10530 - 10534
+ "\u0000\uE0F5\u0000\uC6F5\u0000\uC8CB\u8EA2\uA2E7\u8EA2\uD5AF" + // 10535 - 10539
+ "\u0000\uEFDD\u8EA2\uD5BB\u8EA2\uD5AD\u8EA2\uD5AE\u0000\uEFD8" + // 10540 - 10544
+ "\u8EA2\uD5CC\u0000\uEFE1\u8EA2\uD5BE\u8EA2\uD5C3\u8EA2\uD5BD" + // 10545 - 10549
+ "\u8EA2\uDBBC\u8EA2\uD5B9\u8EA2\uD5C1\u8EA2\uD5BF\u8EA2\uD5B2" + // 10550 - 10554
+ "\u8EA2\uD5AC\u8EA2\uD5C7\u0000\uEFE0\u8EA2\uD5C8\u0000\u0000" + // 10555 - 10559
+ "\u8EA2\uD5C2\u0000\u0000\u8EA2\uD5B7\u8EA2\uD5B5\u8EA2\uD5B0" + // 10560 - 10564
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5B8\u8EA2\uD5C5" + // 10565 - 10569
+ "\u8EA2\uD5B4\u8EA2\uD5C4\u8EA2\uD5CA\u0000\u0000\u0000\u0000" + // 10570 - 10574
+ "\u0000\uEFDC\u0000\u0000\u8EA2\uD5C0\u8EA2\uD5C6\u8EA2\uD5BC" + // 10575 - 10579
+ "\u8EA2\uD5B6\u0000\uEFDB\u0000\u0000\u0000\u0000\u0000\u0000" + // 10580 - 10584
+ "\u8EA2\uCEEE\u8EA2\uD5BA\u0000\uEFE2\u8EA2\uD5B3\u0000\u0000" + // 10585 - 10589
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBC1" + // 10590 - 10594
+ "\u0000\uF2E1\u8EA2\uDBC0\u8EA2\uDBBE\u8EA2\uDBD0\u0000\uF2E5" + // 10595 - 10599
+ "\u0000\u0000\u8EA2\uDBCD\u8EA2\uDBC5\u0000\uEBD1\u0000\u0000" + // 10600 - 10604
+ "\u8EA2\uCEF0\u8EA2\uC8BC\u0000\u0000\u0000\uEBD2\u8EA2\uCEF7" + // 10605 - 10609
+ "\u8EA2\uCEFC\u8EA2\uCEF4\u0000\u0000\u8EA2\uCEF6\u8EA2\uCFA1" + // 10610 - 10614
+ "\u8EA2\uCEF8\u8EA2\uCEE6\u8EA2\uCEEF\u0000\u0000\u0000\u0000" + // 10615 - 10619
+ "\u0000\uEBDA\u0000\u0000\u0000\uEBD6\u8EA2\uCEE4\u8EA2\uCEF1" + // 10620 - 10624
+ "\u0000\uEBD4\u8EA2\uCEEB\u0000\uEBD3\u8EA2\uCEF9\u8EA2\uCEE8" + // 10625 - 10629
+ "\u8EA2\uCEE1\u0000\uEBD7\u8EA2\uCEFE\u0000\u0000\u0000\u0000" + // 10630 - 10634
+ "\u8EA2\uCEE3\u8EA2\uCEF5\u8EA2\uCEF2\u8EA2\uCEED\u8EA2\uCEDF" + // 10635 - 10639
+ "\u8EA2\uCEDE\u8EA2\uCEE7\u8EA2\uCEFA\u0000\uEBD8\u8EA2\uCEFD" + // 10640 - 10644
+ "\u8EA2\uCEE5\u8EA2\uCEE9\u0000\uEBD0\u0000\u0000\u0000\u0000" + // 10645 - 10649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFE3\u0000\uEFDE" + // 10650 - 10654
+ "\u8EA2\uD5CD\u8EA2\uD5C9\u8EA2\uD5B1\u0000\uEFDA\u0000\u0000" + // 10655 - 10659
+ "\u0000\u0000\u0000\u0000\u0000\uEFD9\u0000\uEFDF\u0000\u0000" + // 10660 - 10664
+ "\u0000\u0000\u0000\u0000\u8EA2\uA7F8\u8EA2\uA7FA\u8EA2\uA7F5" + // 10665 - 10669
+ "\u8EA2\uA7F2\u8EA2\uA7F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 10670 - 10674
+ "\u0000\uCEE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEE3" + // 10675 - 10679
+ "\u0000\u0000\u0000\u0000\u8EA2\uA7F6\u0000\uCEE4\u8EA2\uA7F3" + // 10680 - 10684
+ "\u8EA2\uA7F0\u0000\uCEE2\u8EA2\uA7F7\u0000\u0000\u8EA2\uA7F1" + // 10685 - 10689
+ "\u0000\uCEE6\u8EA2\uA7F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 10690 - 10694
+ "\u0000\u0000\u8EA2\uABEF\u0000\u0000\u8EA2\uABF3\u0000\u0000" + // 10695 - 10699
+ "\u0000\u0000\u0000\uD2BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 10700 - 10704
+ "\u0000\u0000\u8EA2\uABF6\u0000\u0000\u0000\uD2B2\u0000\uD2B5" + // 10705 - 10709
+ "\u0000\uD2B7\u0000\uD2B9\u0000\uD2B6\u8EA2\uABF2\u8EA2\uABF1" + // 10710 - 10714
+ "\u0000\u0000\u0000\uD2B4\u8EA2\uABF4\u8EA2\uABF5\u0000\u0000" + // 10715 - 10719
+ "\u8EA2\uABEE\u0000\uD2B8\u0000\u0000\u0000\uD2B3\u0000\u0000" + // 10720 - 10724
+ "\u0000\u0000\u0000\u0000\u8EA2\uABF0\u0000\u0000\u8EAD\uA3F2" + // 10725 - 10729
+ "\u8EAD\uA3F3\u8EAD\uA3F4\u8EAD\uA3F5\u8EAD\uA3F6\u8EAD\uA3F7" + // 10730 - 10734
+ "\u8EAD\uA3F8\u8EAD\uA3F9\u8EAD\uA3FA\u8EAD\uA3FB\u8EAD\uA3FC" + // 10735 - 10739
+ "\u8EAD\uA3FD\u8EAD\uA3FE\u8EAD\uA4A1\u8EAD\uA4A2\u8EAD\uA4A3" + // 10740 - 10744
+ "\u0000\u0000\u8EAD\uA3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 10745 - 10749
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10750 - 10754
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10755 - 10759
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10760 - 10764
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10765 - 10769
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10770 - 10774
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10775 - 10779
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10780 - 10784
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10785 - 10789
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10790 - 10794
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10795 - 10799
+ "\u0000\uDEA5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADB" + // 10800 - 10804
+ "\u8EA2\uEDB7\u0000\u0000\u0000\uFCFB\u0000\uFCFC\u0000\u0000" + // 10805 - 10809
+ "\u0000\uDEA6\u0000\uE7C3\u0000\u0000\u0000\u0000\u0000\u0000" + // 10810 - 10814
+ "\u0000\u0000\u0000\uE7CC\u8EA2\uC8BF\u0000\u0000\u8EA2\uC8B4" + // 10815 - 10819
+ "\u0000\uE7CA\u8EA2\uC8BE\u0000\uE7C6\u8EA2\uC8D0\u0000\uE7CB" + // 10820 - 10824
+ "\u8EA2\uC8CE\u8EA2\uC8C2\u8EA2\uC8CC\u0000\uE7C8\u8EA2\uC8B5" + // 10825 - 10829
+ "\u8EA2\uC8CF\u8EA2\uC8CA\u0000\u0000\u8EA2\uC8D1\u0000\uE7C0" + // 10830 - 10834
+ "\u0000\u0000\u0000\u0000\u0000\uE7CF\u0000\uE7C5\u0000\u0000" + // 10835 - 10839
+ "\u0000\u0000\u8EA2\uC8BB\u0000\u0000\u8EA2\uC8C3\u8EA2\uC8C7" + // 10840 - 10844
+ "\u0000\u0000\u8EA2\uC8CB\u0000\uE7C7\u8EA2\uC8BA\u8EA2\uC8B8" + // 10845 - 10849
+ "\u8EA2\uC8C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10850 - 10854
+ "\u8EA2\uC8C1\u8EA2\uC8C0\u0000\u0000\u8EA2\uC8C5\u8EA2\uC8C8" + // 10855 - 10859
+ "\u0000\u0000\u8EA2\uC8CD\u0000\u0000\u0000\u0000\u0000\u0000" + // 10860 - 10864
+ "\u8EA2\uCEE0\u0000\u0000\u0000\uEBCF\u8EA2\uCEEA\u8EA2\uCEE2" + // 10865 - 10869
+ "\u0000\uEBD5\u0000\uEBD9\u8EA2\uCEF3\u8EA2\uCEFB\u8EA2\uCEEC" + // 10870 - 10874
+ "\u8EA2\uC1B1\u8EA2\uC1A9\u8EA2\uC1B8\u8EA2\uC1AC\u8EA2\uC1B6" + // 10875 - 10879
+ "\u8EA2\uC1BD\u8EA2\uC1B5\u0000\uE2E0\u0000\u0000\u0000\uE2DC" + // 10880 - 10884
+ "\u8EA2\uC1AA\u0000\u0000\u8EA2\uC1B0\u0000\uE2DE\u0000\u0000" + // 10885 - 10889
+ "\u8EA2\uC1AF\u0000\uE2DF\u0000\uE2E1\u8EA2\uC1B2\u0000\u0000" + // 10890 - 10894
+ "\u0000\uE2D9\u0000\uE2DA\u8EA2\uC1BE\u8EA2\uC1BC\u0000\u0000" + // 10895 - 10899
+ "\u8EA2\uC1BB\u8EA2\uC1AD\u0000\u0000\u8EA2\uC1B9\u0000\u0000" + // 10900 - 10904
+ "\u0000\uE2DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10905 - 10909
+ "\u0000\uE2DB\u8EA2\uC1BA\u8EA2\uC1AB\u8EA2\uC1AE\u8EA2\uC1B7" + // 10910 - 10914
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10915 - 10919
+ "\u8EA2\uCFA2\u8EA2\uC8BD\u0000\u0000\u8EA2\uC8B6\u8EA2\uC8C9" + // 10920 - 10924
+ "\u8EA2\uC8D2\u8EA2\uC8B9\u0000\uE7C9\u0000\u0000\u8EA2\uC8C6" + // 10925 - 10929
+ "\u0000\uE7BF\u0000\uE7C1\u0000\uE7CD\u8EA2\uC8B7\u0000\u0000" + // 10930 - 10934
+ "\u0000\u0000\u0000\uE7C2\u0000\uE7C4\u0000\uE7CE\u0000\uFCEE" + // 10935 - 10939
+ "\u0000\uFDAA\u8EA2\uF0D7\u8EA2\uF1E0\u0000\u0000\u0000\uFDBC" + // 10940 - 10944
+ "\u0000\uCBDD\u0000\uCFD9\u0000\u0000\u0000\uE7BE\u0000\u0000" + // 10945 - 10949
+ "\u0000\uFACB\u0000\uCBDE\u0000\uD3EC\u0000\uDDE9\u0000\uE2D8" + // 10950 - 10954
+ "\u0000\uF7D2\u0000\uCFDA\u0000\u0000\u8EA2\uADE2\u8EA2\uADE1" + // 10955 - 10959
+ "\u8EA2\uB3C5\u0000\u0000\u0000\uD8DD\u0000\uD8DB\u0000\uD8DF" + // 10960 - 10964
+ "\u8EA2\uB3C7\u0000\u0000\u0000\uD8DE\u0000\uD8DC\u0000\u0000" + // 10965 - 10969
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB3C6\u0000\uDDEC" + // 10970 - 10974
+ "\u8EA2\uBAA1\u0000\u0000\u0000\uDDEB\u0000\uDDED\u8EA2\uBAA6" + // 10975 - 10979
+ "\u0000\uDDEF\u8EA2\uBAA3\u8EA2\uBAA4\u8EA2\uB9FA\u0000\uDDEE" + // 10980 - 10984
+ "\u8EA2\uBAA7\u0000\u0000\u0000\u0000\u8EA2\uB9FC\u0000\u0000" + // 10985 - 10989
+ "\u8EA2\uB9FD\u8EA2\uB9FB\u0000\uDDEA\u0000\u0000\u8EA2\uBAA5" + // 10990 - 10994
+ "\u8EA2\uB9FE\u8EA2\uBAA2\u0000\u0000\u0000\u0000\u0000\u0000" + // 10995 - 10999
+ "\u8EA2\uC1B4\u0000\u0000\u8EA2\uC1B3\u8EA2\uD5AB\u8EA2\uD5A8" + // 11000 - 11004
+ "\u8EA2\uD5A9\u0000\uEFD7\u8EA2\uD5AA\u8EA2\uD5A5\u8EA2\uD5A6" + // 11005 - 11009
+ "\u0000\uEFD4\u0000\u0000\u0000\uEFD5\u8EA2\uD5A7\u0000\uEFD6" + // 11010 - 11014
+ "\u0000\u0000\u8EA2\uDBA9\u0000\u0000\u8EA2\uDBAA\u8EA2\uDBA7" + // 11015 - 11019
+ "\u8EA2\uDBA8\u0000\uF2DE\u8EA2\uDBA6\u0000\u0000\u0000\u0000" + // 11020 - 11024
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDFF4\u8EA2\uDFF1" + // 11025 - 11029
+ "\u8EA2\uDFF3\u0000\uF5EB\u8EA2\uDFF7\u0000\uF5EA\u8EA2\uDFF5" + // 11030 - 11034
+ "\u8EA2\uDFF8\u8EA2\uDFF6\u8EA2\uDFF2\u0000\uF5E9\u0000\u0000" + // 11035 - 11039
+ "\u8EA2\uE3F9\u0000\u0000\u8EA2\uE3FA\u8EA2\uE3F8\u0000\u0000" + // 11040 - 11044
+ "\u8EA2\uE3FC\u0000\uF7D0\u0000\uF7D1\u8EA2\uE7CB\u0000\uF9B4" + // 11045 - 11049
+ "\u8EA2\uE3FB\u8EA2\uE7CA\u0000\uF9B3\u8EA2\uEAB3\u8EA2\uEAB4" + // 11050 - 11054
+ "\u0000\uFACA\u8EA2\uEAB2\u0000\u0000\u8EA2\uEAB1\u0000\u0000" + // 11055 - 11059
+ "\u8EA2\uECCC\u0000\uFBB4\u0000\u0000\u8EA2\uEFD7\u8EA2\uF0D6" + // 11060 - 11064
+ "\u8EA2\uF0D5\u0000\u0000\u0000\uA5BE\u0000\uA5BF\u0000\u0000" + // 11065 - 11069
+ "\u0000\uA5C0\u0000\uA5C1\u0000\uA5C2\u0000\uA5C3\u0000\uA5C4" + // 11070 - 11074
+ "\u0000\uA5C5\u0000\uA5C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 11075 - 11079
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11080 - 11084
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11085 - 11089
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11090 - 11094
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11095 - 11099
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11100 - 11104
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11105 - 11109
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11110 - 11114
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11115 - 11119
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11120 - 11124
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11125 - 11129
+ "\u0000\u0000\u0000\u0000\u0000\uCFDB\u0000\u0000\u0000\u0000" + // 11130 - 11134
+ "\u8EA2\uBAA8\u8EA2\uC1BF\u8EA2\uD5CE\u8EA2\uE7E3\u0000\u0000" + // 11135 - 11139
+ "\u0000\u0000\u0000\uCEFC\u0000\uD2DA\u8EA2\uACC1\u0000\uD2DB" + // 11140 - 11144
+ "\u0000\uD2D9\u0000\u0000\u0000\uD2D8\u8EA2\uB1AF\u0000\uD6F4" + // 11145 - 11149
+ "\u0000\u0000\u0000\u0000\u0000\uD6F5\u0000\uD6F6\u0000\u0000" + // 11150 - 11154
+ "\u0000\u0000\u0000\u0000\u0000\uDCB5\u8EA2\uB7CA\u0000\uDCB4" + // 11155 - 11159
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11160 - 11164
+ "\u8EA2\uBEBD\u0000\uDCB6\u0000\uE0F9\u8EA2\uC5BD\u0000\uE5C0" + // 11165 - 11169
+ "\u0000\uE5C1\u0000\u0000\u0000\uE9F0\u0000\u0000\u0000\uE9F1" + // 11170 - 11174
+ "\u0000\uEDF5\u0000\uF1CE\u8EA2\uD8E1\u0000\uF1CD\u0000\u0000" + // 11175 - 11179
+ "\u8EA2\uDDE5\u0000\uF4C5\u0000\u0000\u8EA2\uE2C0\u8EA2\uE9C2" + // 11180 - 11184
+ "\u0000\uC6F8\u0000\uCBB1\u8EA2\uA8BA\u8EA2\uA8B9\u0000\uCEFD" + // 11185 - 11189
+ "\u8EA2\uA8B8\u0000\uCEFE\u8EA2\uA8BB\u0000\u0000\u8EA2\uACC7" + // 11190 - 11194
+ "\u0000\uD2DE\u0000\uD2DD\u8EA2\uACC9\u8EA2\uACC8\u0000\uD2E2" + // 11195 - 11199
+ "\u0000\u0000\u0000\uD2E1\u0000\u0000\u8EA2\uD7A9\u0000\uF3DD" + // 11200 - 11204
+ "\u8EA2\uDCEA\u0000\u0000\u8EA2\uD7A6\u8EA2\uD7A8\u0000\uF3DE" + // 11205 - 11209
+ "\u0000\uF0DC\u0000\uF3DC\u0000\uF0DB\u0000\uF3E0\u8EA2\uD7AA" + // 11210 - 11214
+ "\u0000\uF0D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11215 - 11219
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1DB" + // 11220 - 11224
+ "\u0000\u0000\u8EA2\uE1D3\u0000\u0000\u0000\u0000\u0000\u0000" + // 11225 - 11229
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCF2\u8EA2\uE1D4\u8EA2\uDCEE" + // 11230 - 11234
+ "\u0000\u0000\u0000\u0000\u0000\uF6C2\u8EA2\uDCF0\u8EA2\uDCEF" + // 11235 - 11239
+ "\u0000\uF3DF\u8EA2\uDCED\u8EA2\uDCF1\u8EA2\uE1DC\u8EA2\uE1D8" + // 11240 - 11244
+ "\u8EA2\uE1DA\u0000\u0000\u8EA2\uE1D5\u8EA2\uE1D6\u0000\u0000" + // 11245 - 11249
+ "\u8EA2\uE1D9\u8EA2\uE1D7\u0000\uF8B4\u0000\u0000\u0000\u0000" + // 11250 - 11254
+ "\u0000\uF8B7\u0000\uF8B6\u0000\uF8B5\u0000\uF9EC\u8EA2\uE8F6" + // 11255 - 11259
+ "\u0000\uF9ED\u8EA2\uE5CC\u0000\uFAEA\u8EA2\uEBDA\u0000\uFAEB" + // 11260 - 11264
+ "\u0000\uFBE0\u8EA2\uE7C8\u8EA2\uEAB0\u0000\u0000\u8EA2\uEAAF" + // 11265 - 11269
+ "\u8EA2\uECCA\u8EA2\uECCB\u8EA2\uECC9\u8EA2\uEEB5\u0000\uFBFA" + // 11270 - 11274
+ "\u0000\uCBDC\u0000\uD3EB\u0000\uD3EA\u0000\uD8DA\u0000\uD8D9" + // 11275 - 11279
+ "\u8EA2\uB3C3\u8EA2\uB3C4\u8EA2\uB3C2\u0000\u0000\u0000\uD8D8" + // 11280 - 11284
+ "\u8EA2\uB9F8\u0000\u0000\u8EA2\uB9F9\u8EA2\uB9F5\u0000\uDDE8" + // 11285 - 11289
+ "\u8EA2\uB9F6\u0000\u0000\u8EA2\uB9F7\u0000\u0000\u0000\u0000" + // 11290 - 11294
+ "\u0000\u0000\u0000\u0000\u8EA2\uC1A6\u8EA2\uC1A8\u8EA2\uC1A4" + // 11295 - 11299
+ "\u8EA2\uC1A7\u0000\uE2D6\u8EA2\uC1A5\u0000\uE2D7\u0000\u0000" + // 11300 - 11304
+ "\u0000\u0000\u8EA2\uC2F9\u0000\uE7BD\u0000\uE7BC\u0000\u0000" + // 11305 - 11309
+ "\u0000\uE7BB\u0000\u0000\u8EA2\uC8B2\u8EA2\uC8B3\u0000\u0000" + // 11310 - 11314
+ "\u0000\u0000\u8EA2\uCEDB\u8EA2\uCEDD\u0000\uEBCE\u0000\uEBCB" + // 11315 - 11319
+ "\u0000\u0000\u0000\uEBCD\u0000\uEBCC\u8EA2\uCEDC\u8EA2\uCEDA" + // 11320 - 11324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11325 - 11329
+ "\u0000\uD9B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11330 - 11334
+ "\u0000\uC4B4\u0000\uC4C6\u0000\uC5AF\u0000\uC5AE\u0000\u0000" + // 11335 - 11339
+ "\u0000\uC5B0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11340 - 11344
+ "\u0000\u0000\u0000\u0000\u0000\uCCBE\u0000\u0000\u0000\uCCBD" + // 11345 - 11349
+ "\u0000\uCCBF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0B5" + // 11350 - 11354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4D1\u0000\u0000" + // 11355 - 11359
+ "\u8EA2\uD6C6\u0000\uF6BB\u0000\uC4C7\u0000\uC6AC\u0000\uC6BB" + // 11360 - 11364
+ "\u0000\uC6B6\u0000\u0000\u0000\uC6B1\u0000\uC6B0\u0000\uC6B7" + // 11365 - 11369
+ "\u0000\uC6B5\u0000\uC6AE\u0000\uC6BC\u0000\uC6AF\u0000\uC6AB" + // 11370 - 11374
+ "\u0000\uC6BA\u0000\uC6B9\u0000\uC6B8\u0000\uC6AD\u0000\u0000" + // 11375 - 11379
+ "\u0000\uC6B4\u0000\u0000\u0000\u0000\u0000\uC6B3\u0000\u0000" + // 11380 - 11384
+ "\u0000\u0000\u0000\uC6BD\u0000\uC6B2\u0000\u0000\u0000\u0000" + // 11385 - 11389
+ "\u0000\u0000\u0000\uF6D3\u0000\uF6D0\u0000\u0000\u8EA2\uE1E9" + // 11390 - 11394
+ "\u8EA2\uE1ED\u8EA2\uE1F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11395 - 11399
+ "\u8EA2\uE5DC\u8EA2\uE5D9\u8EA2\uE5E2\u0000\u0000\u8EA2\uE5E1" + // 11400 - 11404
+ "\u8EA2\uE5DF\u8EA2\uE5DA\u0000\u0000\u0000\uF8BF\u0000\u0000" + // 11405 - 11409
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE5DB" + // 11410 - 11414
+ "\u0000\uF8BE\u0000\uF3F6\u8EA2\uE5DE\u0000\uF8BD\u8EA2\uE5E3" + // 11415 - 11419
+ "\u8EA2\uE5DD\u8EA2\uE5D8\u8EA2\uE1EC\u0000\u0000\u0000\u0000" + // 11420 - 11424
+ "\u0000\u0000\u0000\uF8BC\u0000\u0000\u8EA2\uE5D7\u8EA2\uE9A4" + // 11425 - 11429
+ "\u0000\u0000\u8EA2\uE9A3\u8EA2\uE5E0\u0000\uF9F3\u0000\u0000" + // 11430 - 11434
+ "\u8EA2\uE9A7\u8EA2\uE9A8\u8EA2\uE9A2\u8EA2\uE9A6\u0000\u0000" + // 11435 - 11439
+ "\u8EA2\uE9A1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11440 - 11444
+ "\u8EA2\uEBDF\u8EA2\uE9A5\u0000\uFAF2\u0000\uFAF0\u8EA2\uEBDD" + // 11445 - 11449
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDDA\u0000\u0000" + // 11450 - 11454
+ "\u0000\uCDD8\u0000\u0000\u0000\uCDF0\u0000\uCDE8\u0000\uCDE2" + // 11455 - 11459
+ "\u0000\uCDD6\u8EA2\uA6F8\u0000\uCDE1\u0000\uCDD7\u0000\uCDE9" + // 11460 - 11464
+ "\u0000\uCDF2\u8EA2\uAAD5\u0000\uCDE6\u8EA2\uA6F4\u0000\uCDDC" + // 11465 - 11469
+ "\u0000\uCDDF\u0000\uCDE0\u0000\u0000\u0000\uCDEE\u0000\uCDEF" + // 11470 - 11474
+ "\u0000\uCDED\u0000\uCDE7\u0000\uCDEB\u0000\uCDDD\u0000\uD1B8" + // 11475 - 11479
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11480 - 11484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11485 - 11489
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAADB" + // 11490 - 11494
+ "\u0000\uD1C4\u0000\uD1BC\u0000\uD1BE\u0000\uD1C3\u8EA2\uAAE7" + // 11495 - 11499
+ "\u0000\uD1C1\u8EA2\uAFB3\u0000\uD5D3\u0000\uD1C6\u8EA2\uAAD8" + // 11500 - 11504
+ "\u8EA2\uAAE0\u0000\uD1C2\u8EA2\uAADF\u8EA2\uAADC\u8EA2\uAAE4" + // 11505 - 11509
+ "\u8EA2\uAAE6\u0000\uD1BB\u0000\uD1BF\u0000\uD1C5\u0000\uD5D5" + // 11510 - 11514
+ "\u8EA2\uC0FE\u8EA2\uC0FD\u0000\uE2D2\u8EA2\uC1A3\u8EA2\uC0F7" + // 11515 - 11519
+ "\u8EA2\uC1A2\u8EA2\uC0F5\u8EA2\uC1A1\u8EA2\uC0FA\u0000\uE2D4" + // 11520 - 11524
+ "\u0000\u0000\u8EA2\uC8B0\u0000\u0000\u8EA2\uC8AB\u8EA2\uC8B1" + // 11525 - 11529
+ "\u8EA2\uC8AC\u8EA2\uC8AA\u8EA2\uC8AD\u0000\uE7B9\u0000\u0000" + // 11530 - 11534
+ "\u8EA2\uC8AF\u0000\u0000\u8EA2\uC8AE\u0000\uE7BA\u0000\uEBC9" + // 11535 - 11539
+ "\u0000\uEBC8\u8EA2\uCED6\u8EA2\uCED9\u8EA2\uCED1\u8EA2\uCED5" + // 11540 - 11544
+ "\u0000\uEBCA\u8EA2\uCED4\u8EA2\uCED2\u8EA2\uCED8\u8EA2\uCED3" + // 11545 - 11549
+ "\u8EA2\uCED0\u8EA2\uCED7\u0000\u0000\u8EA2\uD5A3\u0000\uEFD2" + // 11550 - 11554
+ "\u8EA2\uE3F4\u8EA2\uD4FE\u8EA2\uD5A1\u8EA2\uD4FD\u8EA2\uC0F6" + // 11555 - 11559
+ "\u0000\uEFD1\u8EA2\uD5A4\u8EA2\uD4FC\u0000\uEFD0\u0000\uEFD3" + // 11560 - 11564
+ "\u8EA2\uD5A2\u8EA2\uDBA3\u0000\uF2DD\u8EA2\uDBA4\u8EA2\uDBA5" + // 11565 - 11569
+ "\u0000\u0000\u8EA2\uDFF0\u0000\uF5E8\u8EA2\uE3F5\u8EA2\uE3F6" + // 11570 - 11574
+ "\u0000\u0000\u0000\u0000\u8EA2\uE3F7\u8EA2\uE7C9\u0000\uF5E7" + // 11575 - 11579
+ "\u0000\uF5E5\u0000\uF5E6\u0000\uF7CE\u0000\uF5E4\u8EA2\uDFEE" + // 11580 - 11584
+ "\u8EA2\uDBA1\u0000\uF7CD\u0000\uF7CF\u0000\u0000\u0000\uF9B1" + // 11585 - 11589
+ "\u0000\uF9B2\u0000\u0000\u8EA2\uEAAE\u0000\u0000\u0000\uFCCA" + // 11590 - 11594
+ "\u0000\uFCC9\u0000\uCBD7\u0000\u0000\u0000\u0000\u8EA2\uA2F5" + // 11595 - 11599
+ "\u0000\uD8D4\u0000\u0000\u8EA2\uA2F2\u8EA2\uA2F3\u8EA2\uA2F1" + // 11600 - 11604
+ "\u0000\u0000\u8EA2\uA2F4\u0000\u0000\u0000\u0000\u8EA2\uA5AA" + // 11605 - 11609
+ "\u8EA2\uA5A7\u8EA2\uA5AC\u8EA2\uA5A8\u0000\uCBD8\u0000\uCBDB" + // 11610 - 11614
+ "\u0000\u0000\u8EA2\uA5A9\u0000\uCBDA\u8EA2\uA5AB\u0000\u0000" + // 11615 - 11619
+ "\u0000\u0000\u0000\uCBD9\u0000\u0000\u0000\u0000\u0000\u0000" + // 11620 - 11624
+ "\u0000\u0000\u8EA2\uA8F5\u8EA2\uA8F7\u0000\uCFD7\u8EA2\uA8F3" + // 11625 - 11629
+ "\u8EA2\uA8F6\u8EA2\uA8F4\u0000\uCFD5\u0000\uCFD8\u0000\u0000" + // 11630 - 11634
+ "\u0000\uCFD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11635 - 11639
+ "\u8EA2\uADD9\u8EA2\uADDD\u8EA2\uADDA\u0000\uD8CD\u0000\uD8CA" + // 11640 - 11644
+ "\u8EA2\uB3B0\u0000\uD8D0\u8EA2\uB3B3\u0000\uD8D2\u0000\uD8CB" + // 11645 - 11649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB9E6" + // 11650 - 11654
+ "\u8EA2\uB9E9\u0000\uDDD6\u0000\u0000\u0000\uDDE0\u0000\uDDDC" + // 11655 - 11659
+ "\u8EA2\uB9E7\u0000\u0000\u0000\u0000\u0000\uDDE4\u0000\uDDDD" + // 11660 - 11664
+ "\u0000\uDDE2\u0000\uDDD8\u0000\u0000\u0000\uDDD5\u0000\uDDD7" + // 11665 - 11669
+ "\u0000\uDDE3\u8EA2\uB9E8\u0000\uDDDB\u0000\uDDDE\u0000\uDDDA" + // 11670 - 11674
+ "\u0000\uDDDF\u8EA2\uB9EA\u0000\uDDE1\u0000\uDDD9\u8EA2\uB9E5" + // 11675 - 11679
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11680 - 11684
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0F2\u0000\uE2CC" + // 11685 - 11689
+ "\u8EA2\uC0F4\u0000\u0000\u0000\uE2CE\u0000\uE2D0\u0000\u0000" + // 11690 - 11694
+ "\u8EA2\uC0F3\u0000\uE2CD\u0000\uE2D1\u0000\u0000\u0000\uE2CF" + // 11695 - 11699
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AF\u8EA2\uC8A9" + // 11700 - 11704
+ "\u0000\uE7B7\u8EA2\uC8A6\u8EA2\uDFED\u0000\u0000\u0000\uF5DF" + // 11705 - 11709
+ "\u8EA2\uDFEC\u0000\uF5DD\u0000\uF5E0\u8EA2\uE3F0\u8EA2\uE3F1" + // 11710 - 11714
+ "\u8EA2\uE3F2\u0000\uF7CB\u0000\u0000\u8EA2\uE3F3\u0000\u0000" + // 11715 - 11719
+ "\u0000\uF7CC\u0000\uF9AF\u8EA2\uE7C4\u8EA2\uE7C5\u8EA2\uE7C3" + // 11720 - 11724
+ "\u8EA2\uE7C2\u8EA2\uE7C6\u0000\uF9AE\u8EA2\uEAAB\u8EA2\uEAA9" + // 11725 - 11729
+ "\u8EA2\uEAAA\u8EA2\uEAAC\u8EA2\uEAA8\u8EA2\uEAAD\u8EA2\uECC7" + // 11730 - 11734
+ "\u0000\u0000\u8EA2\uECC8\u8EA2\uECC6\u0000\uFBB2\u8EA2\uEEB3" + // 11735 - 11739
+ "\u0000\uFBF9\u8EA2\uEEB4\u8EA2\uEFD6\u8EA2\uEFD5\u0000\u0000" + // 11740 - 11744
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11745 - 11749
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11750 - 11754
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11755 - 11759
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11760 - 11764
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11765 - 11769
+ "\u0000\u0000\u0000\uA2B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 11770 - 11774
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11775 - 11779
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11780 - 11784
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11785 - 11789
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11790 - 11794
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11795 - 11799
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2B3\u0000\u0000" + // 11800 - 11804
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11805 - 11809
+ "\u0000\u0000\u0000\u0000\u0000\uE4B8\u0000\u0000\u0000\u0000" + // 11810 - 11814
+ "\u8EA2\uC3A4\u8EA2\uC3B7\u8EA2\uC3BC\u8EA2\uC3B0\u0000\uE4B4" + // 11815 - 11819
+ "\u8EA2\uC3C1\u0000\uE4B1\u8EA2\uC3A2\u0000\u0000\u8EA2\uC3A3" + // 11820 - 11824
+ "\u0000\uE4AA\u0000\uE4B3\u8EA2\uC3AA\u0000\uE4B6\u0000\uE4B7" + // 11825 - 11829
+ "\u8EA2\uC3AB\u0000\u0000\u8EA2\uC3B8\u8EA2\uC3BE\u0000\uE4B2" + // 11830 - 11834
+ "\u0000\u0000\u0000\uE4AC\u8EA2\uC3A9\u8EA2\uC3A5\u8EA2\uC3C0" + // 11835 - 11839
+ "\u8EA2\uC3AE\u8EA2\uC3AF\u8EA2\uC3A6\u8EA2\uC3BA\u8EA2\uC3B1" + // 11840 - 11844
+ "\u8EA2\uC3BB\u8EA2\uC3B3\u0000\u0000\u0000\uE4AD\u8EA2\uCAC0" + // 11845 - 11849
+ "\u0000\uE4B0\u0000\uE4AE\u8EA2\uC3BF\u8EA2\uC3B6\u8EA2\uC3B2" + // 11850 - 11854
+ "\u0000\u0000\u0000\u0000\u8EA2\uC3A7\u0000\uE8FA\u8EA2\uC3B5" + // 11855 - 11859
+ "\u0000\uE4B5\u8EA2\uC3AD\u0000\u0000\u8EA2\uC3AC\u0000\u0000" + // 11860 - 11864
+ "\u0000\u0000\u0000\u0000\u0000\uE4AF\u0000\uE4AB\u8EA2\uCAD5" + // 11865 - 11869
+ "\u8EA2\uC7FD\u8EA2\uC7FC\u8EA2\uC8A3\u0000\uE7A4\u0000\u0000" + // 11870 - 11874
+ "\u8EA2\uC7FE\u8EA2\uC7FA\u8EA2\uC8A1\u8EA2\uC8A2\u0000\uE7A5" + // 11875 - 11879
+ "\u0000\uE7A7\u8EA2\uC8A4\u0000\u0000\u8EA2\uCECF\u8EA2\uCECE" + // 11880 - 11884
+ "\u0000\u0000\u8EA2\uCECC\u8EA2\uCECD\u0000\uEBBB\u0000\uEBBD" + // 11885 - 11889
+ "\u0000\uEBBA\u0000\uEBBC\u8EA2\uD4F5\u8EA2\uD4F6\u8EA2\uD4F1" + // 11890 - 11894
+ "\u0000\u0000\u8EA2\uD4F2\u0000\uEFC3\u0000\uEFC8\u0000\uEFC2" + // 11895 - 11899
+ "\u0000\uEFC9\u0000\uEFC4\u8EA2\uD4F3\u0000\u0000\u0000\u0000" + // 11900 - 11904
+ "\u8EA2\uD4F4\u8EA2\uD4F0\u0000\uEFCA\u0000\uEFC6\u0000\u0000" + // 11905 - 11909
+ "\u0000\u0000\u0000\uEFC5\u0000\uEFC7\u0000\u0000\u8EA2\uD4EF" + // 11910 - 11914
+ "\u0000\u0000\u8EA2\uDAF6\u0000\uF2D2\u0000\u0000\u0000\u0000" + // 11915 - 11919
+ "\u8EA2\uDAF8\u0000\uF2D4\u8EA2\uDAFB\u8EA2\uDAF7\u8EA2\uDAF5" + // 11920 - 11924
+ "\u8EA2\uDAFA\u0000\uF2D3\u8EA2\uDAF9\u0000\u0000\u0000\uF2D1" + // 11925 - 11929
+ "\u0000\u0000\u0000\u0000\u0000\uF5DE\u0000\uF5E1\u0000\uF7CA" + // 11930 - 11934
+ "\u0000\u0000\u8EA2\uE7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11935 - 11939
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1FA\u0000\uCBCF" + // 11940 - 11944
+ "\u0000\uCFD1\u0000\uD3DC\u0000\uD3DB\u0000\u0000\u0000\uD8C8" + // 11945 - 11949
+ "\u0000\u0000\u8EA2\uB3AC\u0000\uD8C6\u8EA2\uB3AD\u0000\uD8C7" + // 11950 - 11954
+ "\u0000\u0000\u0000\u0000\u8EA2\uB9E2\u8EA2\uB9DE\u0000\u0000" + // 11955 - 11959
+ "\u0000\u0000\u0000\uDDD3\u8EA2\uB9E1\u8EA2\uB9E0\u8EA2\uB9DF" + // 11960 - 11964
+ "\u0000\uDDD4\u8EA2\uB9E3\u8EA2\uB9E4\u0000\u0000\u0000\u0000" + // 11965 - 11969
+ "\u0000\u0000\u8EA2\uC0E8\u8EA2\uC0E6\u8EA2\uC0EA\u8EA2\uC0EB" + // 11970 - 11974
+ "\u8EA2\uC0F1\u0000\u0000\u8EA2\uC0ED\u8EA2\uC0EF\u0000\u0000" + // 11975 - 11979
+ "\u8EA2\uC0E7\u8EA2\uC0E2\u0000\u0000\u8EA2\uC0EE\u0000\u0000" + // 11980 - 11984
+ "\u0000\u0000\u8EA2\uC0F0\u8EA2\uC0E9\u8EA2\uC0EC\u8EA2\uC0E3" + // 11985 - 11989
+ "\u0000\uE2C9\u8EA2\uC0E5\u8EA2\uC0E4\u0000\uE2C8\u0000\uE2CA" + // 11990 - 11994
+ "\u0000\u0000\u0000\uE7A6\u8EA2\uC7FB\u8EA2\uDAEC\u8EA2\uDAF1" + // 11995 - 11999
+ "\u0000\uF2CE\u0000\u0000\u0000\uF2CB\u8EA2\uDAED\u0000\u0000" + // 12000 - 12004
+ "\u8EA2\uDFEB\u0000\uF5DB\u0000\uF5D9\u0000\uF5DC\u0000\uF5DA" + // 12005 - 12009
+ "\u8EA2\uDFEA\u8EA2\uDFE7\u8EA2\uDFE6\u0000\u0000\u8EA2\uDFE9" + // 12010 - 12014
+ "\u0000\u0000\u0000\u0000\u8EA2\uDFE8\u8EA2\uE3EF\u0000\uF7C9" + // 12015 - 12019
+ "\u8EA2\uE3E6\u8EA2\uE3E5\u0000\u0000\u0000\uF7C4\u8EA2\uE3EB" + // 12020 - 12024
+ "\u8EA2\uE3EA\u8EA2\uE3E2\u8EA2\uE3ED\u8EA2\uE3E7\u0000\uF7C8" + // 12025 - 12029
+ "\u8EA2\uE3E4\u8EA2\uE3EC\u8EA2\uE3E3\u0000\uF7C5\u0000\uF7C7" + // 12030 - 12034
+ "\u8EA2\uE3E8\u0000\uF7C6\u8EA2\uE3E9\u0000\u0000\u8EA2\uE3EE" + // 12035 - 12039
+ "\u8EA2\uE7BE\u0000\u0000\u0000\uF9AB\u8EA2\uE7BB\u0000\u0000" + // 12040 - 12044
+ "\u8EA2\uE7BF\u0000\u0000\u0000\u0000\u0000\uF9A8\u8EA2\uE7BD" + // 12045 - 12049
+ "\u0000\uF9AD\u0000\u0000\u0000\uF9AA\u0000\u0000\u8EA2\uE7BC" + // 12050 - 12054
+ "\u0000\u0000\u0000\uF9AC\u8EA2\uE7C0\u0000\uF9A7\u0000\u0000" + // 12055 - 12059
+ "\u0000\u0000\u0000\u0000\u0000\uE4CD\u8EA2\uC5AC\u0000\u0000" + // 12060 - 12064
+ "\u0000\u0000\u0000\uE4D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 12065 - 12069
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCAF0\u8EA2\uCAEE" + // 12070 - 12074
+ "\u0000\u0000\u8EA2\uCBA6\u8EA2\uCAEC\u0000\u0000\u8EA2\uCAFE" + // 12075 - 12079
+ "\u0000\uE4C5\u0000\uE9A8\u8EA2\uCAE8\u8EA2\uCBA5\u0000\u0000" + // 12080 - 12084
+ "\u8EA2\uCAED\u8EA2\uCAFB\u0000\uE9AD\u0000\uE9A6\u0000\u0000" + // 12085 - 12089
+ "\u8EA2\uCBA3\u0000\u0000\u8EA2\uCAE6\u8EA2\uCBA2\u0000\u0000" + // 12090 - 12094
+ "\u0000\uE9B8\u8EA2\uCAF7\u8EA2\uCBA9\u0000\uE9B6\u8EA2\uCAEF" + // 12095 - 12099
+ "\u0000\uE9A7\u8EA2\uCAF1\u8EA2\uCBA1\u0000\uE9B0\u8EA2\uCAEA" + // 12100 - 12104
+ "\u0000\uE9B4\u0000\uE9AA\u8EA2\uCAF3\u8EA2\uCAE9\u8EA2\uCAE3" + // 12105 - 12109
+ "\u0000\u0000\u8EA2\uCAFD\u0000\uE9B1\u8EA2\uCBA8\u8EA2\uCAE4" + // 12110 - 12114
+ "\u0000\uE9AE\u0000\u0000\u8EA2\uCAF9\u0000\u0000\u0000\uE9AF" + // 12115 - 12119
+ "\u8EA2\uCAEB\u8EA2\uCAF6\u8EA2\uCAF2\u8EA2\uCAF4\u8EA2\uCECA" + // 12120 - 12124
+ "\u0000\u0000\u8EA2\uCEC0\u8EA2\uCEC5\u8EA2\uCECB\u8EA2\uCEC8" + // 12125 - 12129
+ "\u8EA2\uCEC7\u8EA2\uCEC6\u0000\u0000\u8EA2\uCEBF\u8EA2\uCEC4" + // 12130 - 12134
+ "\u0000\u0000\u0000\u0000\u8EA2\uCEC2\u0000\u0000\u0000\uEFBC" + // 12135 - 12139
+ "\u0000\uEFB9\u8EA2\uD4E4\u8EA2\uD4E9\u8EA2\uD4EB\u8EA2\uD4E8" + // 12140 - 12144
+ "\u8EA2\uD4E1\u8EA2\uD4E3\u8EA2\uD4ED\u8EA2\uD4EA\u8EA2\uD4E5" + // 12145 - 12149
+ "\u8EA2\uD4EE\u8EA2\uD4E2\u8EA2\uD4EC\u0000\uEFBA\u0000\uEFC0" + // 12150 - 12154
+ "\u0000\uEFBE\u8EA2\uD4DC\u0000\uEFBF\u0000\uEFBB\u8EA2\uD4DD" + // 12155 - 12159
+ "\u8EA2\uD4DF\u8EA2\uD4DE\u8EA2\uD4E6\u8EA2\uD4E7\u0000\u0000" + // 12160 - 12164
+ "\u0000\uEFBD\u0000\u0000\u0000\uEFB8\u0000\u0000\u0000\u0000" + // 12165 - 12169
+ "\u8EA2\uD4E0\u0000\u0000\u8EA2\uDAF2\u0000\uF2CC\u0000\u0000" + // 12170 - 12174
+ "\u8EA2\uDAE9\u0000\uF2CD\u0000\uF2D0\u8EA2\uDAEE\u0000\u0000" + // 12175 - 12179
+ "\u8EA2\uDAEB\u0000\uF2CF\u0000\u0000\u0000\u0000\u8EA2\uDAEF" + // 12180 - 12184
+ "\u8EA2\uDAF0\u8EA2\uDAEA\u8EA2\uDAF3\u8EA2\uC0D4\u0000\uE2BF" + // 12185 - 12189
+ "\u0000\u0000\u0000\u0000\u8EA2\uC0D3\u0000\uE2BE\u0000\u0000" + // 12190 - 12194
+ "\u0000\u0000\u0000\u0000\u8EA2\uC0D5\u0000\uE2BD\u0000\u0000" + // 12195 - 12199
+ "\u8EA2\uC7E5\u8EA2\uC7E8\u8EA2\uC7E6\u8EA2\uC7E7\u8EA2\uC7EB" + // 12200 - 12204
+ "\u8EA2\uC7E4\u8EA2\uC7EC\u8EA2\uC7E9\u8EA2\uC7EA\u0000\uEBB8" + // 12205 - 12209
+ "\u8EA2\uCEBE\u0000\u0000\u0000\u0000\u0000\uEBB7\u0000\u0000" + // 12210 - 12214
+ "\u8EA2\uD4DB\u8EA2\uD4D9\u0000\u0000\u0000\u0000\u0000\uEFB6" + // 12215 - 12219
+ "\u8EA2\uD4D8\u8EA2\uD4DA\u0000\u0000\u0000\uEFB7\u0000\u0000" + // 12220 - 12224
+ "\u8EA2\uDAE7\u0000\u0000\u8EA2\uDAE8\u0000\uF5D8\u0000\u0000" + // 12225 - 12229
+ "\u8EA2\uE7B8\u8EA2\uE7BA\u8EA2\uE7B7\u8EA2\uE7B9\u8EA2\uEAA4" + // 12230 - 12234
+ "\u8EA2\uECC3\u0000\u0000\u0000\u0000\u8EA2\uF1DE\u0000\uCBCD" + // 12235 - 12239
+ "\u0000\uD3DA\u8EA2\uB3A9\u8EA2\uB3AB\u8EA2\uB3AA\u0000\u0000" + // 12240 - 12244
+ "\u8EA2\uB9DB\u0000\uDDD2\u0000\u0000\u8EA2\uB9D9\u0000\u0000" + // 12245 - 12249
+ "\u0000\uDDD1\u8EA2\uB9DC\u8EA2\uE3E1\u0000\u0000\u8EA2\uE3E0" + // 12250 - 12254
+ "\u0000\u0000\u8EA2\uE3DF\u0000\uF7C3\u8EA2\uE7B4\u8EA2\uE7B5" + // 12255 - 12259
+ "\u0000\uF9A5\u8EA2\uE7B6\u0000\uF9A6\u0000\u0000\u0000\u0000" + // 12260 - 12264
+ "\u0000\uFAC5\u0000\u0000\u0000\uFAC4\u8EA2\uECC1\u0000\u0000" + // 12265 - 12269
+ "\u0000\u0000\u0000\uFBAE\u8EA2\uECC2\u8EA2\uEEAB\u0000\uFBF5" + // 12270 - 12274
+ "\u0000\uFBF6\u0000\u0000\u8EA2\uEFD3\u0000\u0000\u0000\uFCED" + // 12275 - 12279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12280 - 12284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12285 - 12289
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12290 - 12294
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12295 - 12299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12300 - 12304
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12305 - 12309
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12310 - 12314
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12315 - 12319
+ "\u0000\uD8EC\u0000\u0000\u0000\u0000\u8EA2\uC8EF\u0000\u0000" + // 12320 - 12324
+ "\u8EA2\uC8EE\u0000\u0000\u0000\uEBF3\u0000\uEBF4\u8EA2\uCFC2" + // 12325 - 12329
+ "\u0000\u0000\u8EA2\uD5FB\u8EA2\uDBF8\u0000\u0000\u0000\u0000" + // 12330 - 12334
+ "\u0000\uEFFE\u0000\uF3B0\u8EA2\uDBF6\u0000\u0000\u8EA2\uDBF9" + // 12335 - 12339
+ "\u0000\uF3B1\u0000\u0000\u8EA2\uE0F0\u8EA2\uDBF7\u0000\uE2B7" + // 12340 - 12344
+ "\u0000\uE2B5\u0000\uE6F6\u0000\uE6F5\u0000\uE6F3\u0000\uE6F7" + // 12345 - 12349
+ "\u0000\u0000\u0000\uE6F1\u0000\uE6F2\u0000\u0000\u0000\uE6F0" + // 12350 - 12354
+ "\u0000\u0000\u8EA2\uC7E1\u0000\u0000\u0000\u0000\u8EA2\uCEBC" + // 12355 - 12359
+ "\u0000\u0000\u0000\uEBB4\u0000\uEBB5\u0000\uEBB3\u0000\u0000" + // 12360 - 12364
+ "\u8EA2\uCEBB\u0000\u0000\u8EA2\uCEBD\u0000\u0000\u8EA2\uD4D3" + // 12365 - 12369
+ "\u8EA2\uD4D5\u0000\u0000\u0000\uEFB2\u8EA2\uD4D6\u0000\uEFAB" + // 12370 - 12374
+ "\u8EA2\uD4D2\u0000\uEFAA\u0000\uEFB4\u0000\uEFB0\u0000\uEFB1" + // 12375 - 12379
+ "\u0000\uEFAD\u8EA2\uD4D1\u0000\uEFAC\u8EA2\uD4D7\u8EA2\uD4D4" + // 12380 - 12384
+ "\u0000\u0000\u0000\uEFB3\u0000\u0000\u0000\uEFAE\u0000\uEFAF" + // 12385 - 12389
+ "\u8EA2\uDAE1\u0000\u0000\u8EA2\uDAE3\u8EA2\uDAE2\u0000\u0000" + // 12390 - 12394
+ "\u8EA2\uDAE4\u0000\uF2CA\u8EA2\uDAE0\u0000\u0000\u0000\u0000" + // 12395 - 12399
+ "\u0000\uF5D6\u8EA2\uDFE4\u0000\uF5D3\u0000\uF5D7\u0000\uF5D5" + // 12400 - 12404
+ "\u0000\uF5D4\u8EA2\uE3DE\u0000\u0000\u0000\u0080\u0000\u0081" + // 12405 - 12409
+ "\u0000\u0082\u0000\u0083\u0000\u0084\u0000\u0085\u0000\u0086" + // 12410 - 12414
+ "\u0000\u0087\u0000\u0088\u0000\u0089\u0000\u008A\u0000\u008B" + // 12415 - 12419
+ "\u0000\u008C\u0000\u008D\u0000\u0000\u0000\u0000\u0000\u0090" + // 12420 - 12424
+ "\u0000\u0091\u0000\u0092\u0000\u0093\u0000\u0094\u0000\u0095" + // 12425 - 12429
+ "\u0000\u0096\u0000\u0097\u0000\u0098\u0000\u0099\u0000\u009A" + // 12430 - 12434
+ "\u0000\u009B\u0000\u009C\u0000\u009D\u0000\u009E\u0000\u009F" + // 12435 - 12439
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12440 - 12444
+ "\u0000\u0000\u0000\u0000\u0000\uA1F0\u8EAD\uA1A3\u0000\u0000" + // 12445 - 12449
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12450 - 12454
+ "\u0000\u0000\u0000\uA2F8\u0000\uA2B4\u0000\u0000\u0000\u0000" + // 12455 - 12459
+ "\u8EAD\uA1B2\u0000\u0000\u8EAD\uA1D1\u0000\uA1B1\u0000\u0000" + // 12460 - 12464
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12465 - 12469
+ "\u0000\u0000\u0000\u0000\u8EA2\uAAAC\u8EA2\uAAA5\u8EA2\uAAAB" + // 12470 - 12474
+ "\u8EA2\uAAA4\u8EA2\uAAA6\u8EA2\uA9FE\u8EA2\uA9FC\u0000\u0000" + // 12475 - 12479
+ "\u8EA2\uAAAD\u8EA2\uAAAA\u8EA2\uA9FA\u0000\u0000\u0000\uD0F2" + // 12480 - 12484
+ "\u8EA2\uAAA8\u8EA2\uAAA9\u0000\u0000\u8EA2\uAAA7\u8EA2\uA9FD" + // 12485 - 12489
+ "\u8EA2\uA9FB\u0000\uD0F1\u8EA2\uAAA3\u8EA2\uAAA1\u0000\u0000" + // 12490 - 12494
+ "\u0000\u0000\u8EA2\uAAA2\u8EA2\uAAAE\u0000\u0000\u0000\u0000" + // 12495 - 12499
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12500 - 12504
+ "\u0000\u0000\u0000\uD5B3\u0000\u0000\u0000\uD5B2\u0000\u0000" + // 12505 - 12509
+ "\u8EA2\uAEEE\u0000\uD5AF\u8EA2\uAEF0\u0000\u0000\u0000\uD5B4" + // 12510 - 12514
+ "\u8EA2\uAEF1\u0000\u0000\u0000\u0000\u0000\uD5B7\u0000\u0000" + // 12515 - 12519
+ "\u0000\uD5B5\u8EA2\uAEF2\u8EA2\uAAAF\u8EA2\uAEF4\u0000\u0000" + // 12520 - 12524
+ "\u0000\uD5B1\u0000\u0000\u0000\uD5B0\u0000\u0000\u8EA2\uAEEF" + // 12525 - 12529
+ "\u8EA2\uC0CD\u8EA2\uC0CC\u0000\uE2B0\u0000\u0000\u8EA2\uC7DF" + // 12530 - 12534
+ "\u8EA2\uC7E0\u8EA2\uC7DE\u0000\u0000\u0000\u0000\u0000\uE6EF" + // 12535 - 12539
+ "\u0000\uE6EE\u0000\u0000\u0000\uEBB2\u0000\uEBB1\u0000\u0000" + // 12540 - 12544
+ "\u8EA2\uD4D0\u8EA2\uDADF\u8EA2\uDADD\u8EA2\uDADE\u0000\uF2C9" + // 12545 - 12549
+ "\u8EA2\uDFE3\u8EA2\uDFE2\u0000\u0000\u8EA2\uE3DD\u8EA2\uE3DC" + // 12550 - 12554
+ "\u8EA2\uE3DB\u8EA2\uE7B3\u0000\u0000\u8EA2\uF1F8\u0000\uCBCA" + // 12555 - 12559
+ "\u0000\uD3D6\u0000\u0000\u0000\uD3D7\u0000\uD8C2\u0000\uD8C3" + // 12560 - 12564
+ "\u8EA2\uB3A6\u8EA2\uB3A5\u8EA2\uB9D5\u0000\u0000\u0000\uDDCE" + // 12565 - 12569
+ "\u0000\uDDCC\u0000\uDDC9\u0000\uDDCD\u0000\uDDCB\u0000\uDDCA" + // 12570 - 12574
+ "\u0000\u0000\u0000\u0000\u0000\uE2B1\u8EA2\uC0D0\u0000\u0000" + // 12575 - 12579
+ "\u0000\uE6F4\u0000\uE2B3\u0000\uE2B8\u8EA2\uC0D2\u0000\uE2BA" + // 12580 - 12584
+ "\u0000\uE2B9\u0000\uE2BC\u8EA2\uC0D1\u8EA2\uC0CE\u0000\uE2B6" + // 12585 - 12589
+ "\u0000\uE2B2\u0000\uE2B4\u8EA2\uC0CF\u0000\uE2BB\u0000\uFBF4" + // 12590 - 12594
+ "\u0000\u0000\u8EA2\uEEA7\u0000\u0000\u8EA2\uEEA6\u8EA2\uEEA9" + // 12595 - 12599
+ "\u8EA2\uEEA8\u0000\u0000\u8EA2\uEFD1\u0000\u0000\u0000\uFCC8" + // 12600 - 12604
+ "\u8EA2\uEFD0\u8EA2\uEFCE\u0000\u0000\u8EA2\uEFCF\u0000\u0000" + // 12605 - 12609
+ "\u0000\u0000\u0000\u0000\u0000\uFCEA\u0000\uFCE9\u8EA2\uF0CF" + // 12610 - 12614
+ "\u8EA2\uF0D0\u0000\uFCEB\u0000\u0000\u8EA2\uF1BC\u8EA2\uF1BD" + // 12615 - 12619
+ "\u0000\uFDB4\u0000\u0000\u0000\uFDBA\u0000\u0000\u8EA2\uF1F7" + // 12620 - 12624
+ "\u8EA2\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12625 - 12629
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12630 - 12634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12635 - 12639
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12640 - 12644
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12645 - 12649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12650 - 12654
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA4AB\u0000\uA4AC" + // 12655 - 12659
+ "\u0000\uA4AD\u0000\uA4AE\u0000\uA4AF\u0000\uA4B0\u0000\uA4B1" + // 12660 - 12664
+ "\u0000\uA4B2\u0000\uA4B3\u0000\uA4B4\u0000\u0000\u0000\u0000" + // 12665 - 12669
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6B5" + // 12670 - 12674
+ "\u0000\uA6B6\u0000\uA6B7\u0000\uA6B8\u0000\uA6B9\u0000\uA6BA" + // 12675 - 12679
+ "\u0000\uA6BB\u0000\uA6BC\u0000\uA6BD\u0000\uA6BE\u0000\u0000" + // 12680 - 12684
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12685 - 12689
+ "\u8EA2\uEAFB\u8EA2\uEBA3\u8EA2\uEBA1\u8EA2\uEAF9\u8EA2\uEBA6" + // 12690 - 12694
+ "\u0000\u0000\u8EA2\uEAF8\u0000\u0000\u0000\uFADA\u8EA2\uEBA2" + // 12695 - 12699
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFC\u0000\uFAD9" + // 12700 - 12704
+ "\u8EA2\uEBA5\u0000\u0000\u0000\u0000\u8EA2\uEBA4\u0000\u0000" + // 12705 - 12709
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECF7\u8EA2\uECF6" + // 12710 - 12714
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECFD\u0000\u0000" + // 12715 - 12719
+ "\u8EA2\uECF9\u8EA2\uECFC\u0000\uFBCC\u0000\u0000\u0000\u0000" + // 12720 - 12724
+ "\u8EA2\uECFA\u8EA2\uECFB\u0000\u0000\u8EA2\uECF5\u8EA2\uECF8" + // 12725 - 12729
+ "\u0000\uFBCB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB" + // 12730 - 12734
+ "\u8EA2\uEEE1\u8EA2\uEEDC\u8EA2\uEEE0\u0000\u0000\u8EA2\uEEE3" + // 12735 - 12739
+ "\u8EA2\uEEDF\u0000\u0000\u8EA2\uEEDB\u0000\u0000\u0000\uFCAD" + // 12740 - 12744
+ "\u8EA2\uEEDE\u8EA2\uEEE2\u0000\uFCAC\u8EA2\uEED9\u8EA2\uE7A6" + // 12745 - 12749
+ "\u0000\uF8FA\u8EA2\uE7AD\u0000\u0000\u0000\u0000\u8EA2\uECBE" + // 12750 - 12754
+ "\u0000\uF9A3\u8EA2\uE3CB\u8EA2\uE7A4\u0000\uF8FD\u8EA2\uE7A5" + // 12755 - 12759
+ "\u8EA2\uE7AA\u0000\u0000\u0000\u0000\u0000\uF9A1\u0000\uF9A2" + // 12760 - 12764
+ "\u8EA2\uE7A3\u8EA2\uE7AC\u8EA2\uE7AE\u8EA2\uE7A7\u8EA2\uE7A9" + // 12765 - 12769
+ "\u8EA2\uE7AB\u8EA2\uE7A8\u8EA2\uE7AF\u0000\uF8FC\u0000\uF9A4" + // 12770 - 12774
+ "\u0000\uF8FE\u0000\u0000\u0000\uF8FB\u8EA2\uE9FC\u0000\u0000" + // 12775 - 12779
+ "\u0000\uFAC2\u8EA2\uE9FA\u0000\u0000\u0000\u0000\u8EA2\uE9FE" + // 12780 - 12784
+ "\u0000\u0000\u8EA2\uEAA1\u0000\uFAC0\u8EA2\uEAA2\u8EA2\uE9FD" + // 12785 - 12789
+ "\u0000\u0000\u8EA2\uE9FB\u0000\uFAC3\u0000\uFABF\u8EA2\uEAA3" + // 12790 - 12794
+ "\u0000\u0000\u0000\uFAC1\u0000\uFABE\u0000\u0000\u0000\u0000" + // 12795 - 12799
+ "\u0000\u0000\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\uFBAC" + // 12800 - 12804
+ "\u8EA2\uECBD\u8EA2\uECBC\u8EA2\uECBF\u8EA2\uECC0\u0000\u0000" + // 12805 - 12809
+ "\u0000\uFBAD\u8EA2\uEEA5\u8EA2\uEEAA\u0000\uF2BB\u0000\uF2C0" + // 12810 - 12814
+ "\u0000\uF2C1\u0000\u0000\u0000\uF5CE\u8EA2\uDFD0\u8EA2\uDFD9" + // 12815 - 12819
+ "\u8EA2\uDFD6\u8EA2\uDFD8\u0000\u0000\u0000\uF5CB\u8EA2\uDFD1" + // 12820 - 12824
+ "\u0000\u0000\u8EA2\uDFD7\u0000\uF5C7\u8EA2\uDFD3\u0000\uF5CF" + // 12825 - 12829
+ "\u8EA2\uDFCF\u8EA2\uDFD4\u8EA2\uDFDB\u8EA2\uDAD2\u8EA2\uDFD5" + // 12830 - 12834
+ "\u8EA2\uDFCE\u0000\uF5C8\u8EA2\uDFCD\u0000\uF5C9\u8EA2\uDFDC" + // 12835 - 12839
+ "\u0000\uF5CA\u8EA2\uDFDA\u0000\uF5CD\u8EA2\uDFCC\u0000\u0000" + // 12840 - 12844
+ "\u0000\uF5CC\u0000\u0000\u8EA2\uDFD2\u8EA2\uE3C7\u8EA2\uE3D5" + // 12845 - 12849
+ "\u8EA2\uE3D0\u8EA2\uE3D2\u8EA2\uE3C6\u0000\uF7BE\u0000\u0000" + // 12850 - 12854
+ "\u8EA2\uE3C5\u0000\uF7C1\u0000\uF7C0\u0000\u0000\u8EA2\uE3D4" + // 12855 - 12859
+ "\u8EA2\uE3CC\u8EA2\uE3C9\u8EA2\uE3CF\u0000\u0000\u8EA2\uE3C8" + // 12860 - 12864
+ "\u0000\u0000\u8EA2\uE3CA\u8EA2\uE3D3\u8EA2\uE3D1\u0000\u0000" + // 12865 - 12869
+ "\u0000\uF7BF\u8EA2\uE3D8\u8EA2\uE3D6\u8EA2\uE3CD\u8EA2\uE3D7" + // 12870 - 12874
+ "\u8EA2\uE3CE\u0000\u0000\u0000\uA4DB\u0000\uA4DC\u0000\uA4DD" + // 12875 - 12879
+ "\u0000\uA4DE\u0000\uA4DF\u0000\uA4E0\u0000\uA4E1\u0000\uA4E2" + // 12880 - 12884
+ "\u0000\uA4E3\u0000\uA4E4\u0000\uA4E5\u0000\uA4E6\u0000\uA4E7" + // 12885 - 12889
+ "\u0000\uA4E8\u0000\uA4E9\u0000\uA4EA\u0000\uA4EB\u0000\uA4EC" + // 12890 - 12894
+ "\u0000\uA4ED\u0000\uA4EE\u0000\uA4EF\u0000\uA4F0\u0000\uA4F1" + // 12895 - 12899
+ "\u0000\uA4F2\u0000\uA4F3\u0000\uA4F4\u0000\uA1C2\u0000\uA2DE" + // 12900 - 12904
+ "\u0000\uA1C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12905 - 12909
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12910 - 12914
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12915 - 12919
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12920 - 12924
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12925 - 12929
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12930 - 12934
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12935 - 12939
+ "\u0000\u0000\u0000\u0000\u0000\uCBCB\u0000\u0000\u0000\uDDD0" + // 12940 - 12944
+ "\u0000\uDDCF\u8EA2\uC7E2\u8EA2\uC7E3\u0000\u0000\u0000\uEBB6" + // 12945 - 12949
+ "\u8EA2\uDAE5\u0000\uEFB5\u8EA2\uDAE6\u8EA2\uDFE5\u0000\uCBCC" + // 12950 - 12954
+ "\u0000\u0000\u8EA2\uADD3\u0000\uD3D9\u0000\uD3D8\u0000\u0000" + // 12955 - 12959
+ "\u8EA2\uB3A7\u0000\uD8C4\u8EA2\uB3A8\u8EA2\uB9D8\u0000\u0000" + // 12960 - 12964
+ "\u8EA2\uB9D7\u0000\u0000\u8EA2\uB9D6\u0000\u0000\u0000\u0000" + // 12965 - 12969
+ "\u0000\uC6CF\u8EA2\uA2BD\u0000\u0000\u0000\uCAAD\u8EA2\uA3F2" + // 12970 - 12974
+ "\u0000\u0000\u8EA2\uAABC\u0000\uD0FB\u0000\u0000\u0000\uE8E2" + // 12975 - 12979
+ "\u0000\uC4DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8A2" + // 12980 - 12984
+ "\u0000\u0000\u0000\u0000\u0000\uE3EF\u0000\uC4DE\u0000\uC5BE" + // 12985 - 12989
+ "\u0000\uC5BF\u0000\u0000\u0000\uC6D1\u0000\uC6D0\u0000\u0000" + // 12990 - 12994
+ "\u8EA2\uA2BE\u0000\uC8A3\u0000\u0000\u8EA2\uA3F3\u0000\u0000" + // 12995 - 12999
+ "\u0000\uCAAE\u0000\u0000\u0000\u0000\u8EA2\uA6D2\u8EA2\uA6D3" + // 13000 - 13004
+ "\u8EA2\uA6D4\u0000\u0000\u0000\uCDB8\u0000\uCDB9\u8EA2\uA6D1" + // 13005 - 13009
+ "\u0000\uCDBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0FC" + // 13010 - 13014
+ "\u8EA2\uAABD\u0000\u0000\u8EA2\uAEFC\u0000\uD5BE\u0000\u0000" + // 13015 - 13019
+ "\u8EA2\uAEFB\u0000\u0000\u0000\uDAAF\u8EA2\uB5B0\u0000\uDAB0" + // 13020 - 13024
+ "\u8EA2\uB5B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFA4" + // 13025 - 13029
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC6CB\u0000\uC6CC" + // 13030 - 13034
+ "\u8EA2\uA1D9\u0000\u0000\u0000\uC7FD\u0000\u0000\u0000\u0000" + // 13035 - 13039
+ "\u0000\u0000\u8EA2\uA3EB\u0000\u0000\u0000\uCAA8\u0000\u0000" + // 13040 - 13044
+ "\u8EA2\uA3EC\u0000\u0000\u0000\u0000\u0000\uCDB0\u0000\u0000" + // 13045 - 13049
+ "\u0000\u0000\u8EA2\uA6CF\u0000\uCDAE\u0000\uCDAD\u8EA2\uA6CE" + // 13050 - 13054
+ "\u0000\uCDAB\u8EA2\uA6D0\u0000\uCDAC\u0000\uCDAF\u0000\u0000" + // 13055 - 13059
+ "\u0000\uD0F4\u0000\u0000\u0000\uD0F6\u8EA2\uAAB4\u8EA2\uAAB1" + // 13060 - 13064
+ "\u8EA2\uAAB2\u8EA2\uAAB3\u8EA2\uAAB5\u0000\uD0F5\u0000\u0000" + // 13065 - 13069
+ "\u0000\u0000\u8EA2\uAEF6\u8EA2\uAEF5\u0000\u0000\u0000\uD5BA" + // 13070 - 13074
+ "\u0000\u0000\u0000\uD5B9\u0000\u0000\u0000\u0000\u0000\u0000" + // 13075 - 13079
+ "\u0000\u0000\u0000\u0000\u0000\uDAA8\u8EA2\uB5AA\u0000\u0000" + // 13080 - 13084
+ "\u0000\uDAA7\u0000\uDAA9\u0000\uDAA6\u0000\u0000\u0000\u0000" + // 13085 - 13089
+ "\u0000\u0000\u0000\u0000\u0000\uDEFA\u8EA2\uB5A9\u0000\u0000" + // 13090 - 13094
+ "\u0000\u0040\u0000\u0041\u0000\u0042\u0000\u0043\u0000\u0044" + // 13095 - 13099
+ "\u0000\u0045\u0000\u0046\u0000\u0047\u0000\u0048\u0000\u0049" + // 13100 - 13104
+ "\u0000\u004A\u0000\u004B\u0000\u004C\u0000\u004D\u0000\u004E" + // 13105 - 13109
+ "\u0000\u004F\u0000\u0050\u0000\u0051\u0000\u0052\u0000\u0053" + // 13110 - 13114
+ "\u0000\u0054\u0000\u0055\u0000\u0056\u0000\u0057\u0000\u0058" + // 13115 - 13119
+ "\u0000\u0059\u0000\u005A\u0000\u005B\u0000\\\u0000\u005D" + // 13120 - 13124
+ "\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0062" + // 13125 - 13129
+ "\u0000\u0063\u0000\u0064\u0000\u0065\u0000\u0066\u0000\u0067" + // 13130 - 13134
+ "\u0000\u0068\u0000\u0069\u0000\u006A\u0000\u006B\u0000\u006C" + // 13135 - 13139
+ "\u0000\u006D\u0000\u006E\u0000\u006F\u0000\u0070\u0000\u0071" + // 13140 - 13144
+ "\u0000\u0072\u0000\u0073\u0000\u0074\u0000\u0075\u0000\u0076" + // 13145 - 13149
+ "\u0000\u0077\u0000\u0078\u0000\u0079\u0000\u007A\u0000\u007B" + // 13150 - 13154
+ "\u0000\u007C\u0000\u007D\u0000\u007E\u0000\u007F\u8EA2\uD4C7" + // 13155 - 13159
+ "\u0000\u0000\u0000\uEEFD\u8EA2\uD4CA\u0000\uEEF7\u8EA2\uD4C8" + // 13160 - 13164
+ "\u8EA2\uD4BE\u0000\uEEF6\u8EA2\uDAD6\u0000\uEEFC\u0000\u0000" + // 13165 - 13169
+ "\u0000\uEEF9\u0000\u0000\u0000\uEFA3\u0000\u0000\u8EA2\uD4BD" + // 13170 - 13174
+ "\u0000\u0000\u8EA2\uD4C1\u0000\uEEF5\u8EA2\uD4C0\u8EA2\uD4C2" + // 13175 - 13179
+ "\u8EA2\uD4C3\u0000\uEFA2\u8EA2\uD4C5\u8EA2\uD4C9\u8EA2\uD4CD" + // 13180 - 13184
+ "\u0000\u0000\u0000\uEFA6\u0000\uF2BC\u8EA2\uDAD1\u8EA2\uDAD7" + // 13185 - 13189
+ "\u8EA2\uDAD4\u8EA2\uDACC\u8EA2\uDAD8\u8EA2\uDACD\u0000\u0000" + // 13190 - 13194
+ "\u8EA2\uDAD3\u0000\u0000\u0000\uF2B7\u0000\uF2BD\u8EA2\uDAD9" + // 13195 - 13199
+ "\u0000\u0000\u0000\u0000\u0000\uF2B9\u0000\u0000\u0000\uF2C3" + // 13200 - 13204
+ "\u0000\uF2BE\u8EA2\uDADB\u8EA2\uDAD5\u0000\uF2BA\u8EA2\uDACE" + // 13205 - 13209
+ "\u0000\uF2C4\u8EA2\uDACF\u8EA2\uDAD0\u0000\uF2C5\u0000\uF2C2" + // 13210 - 13214
+ "\u0000\uEEFA\u0000\u0000\u0000\uF2B8\u8EA2\uDADC\u0000\uF2C6" + // 13215 - 13219
+ "\u0000\u0000\u0000\uF2BF\u8EA2\uDADA\u8EA2\uC0C0\u0000\uE2A6" + // 13220 - 13224
+ "\u0000\u0000\u0000\u0000\u8EA2\uC0C3\u8EA2\uC0C4\u0000\uE2AA" + // 13225 - 13229
+ "\u0000\u0000\u8EA2\uC0C6\u0000\u0000\u8EA2\uC0C8\u0000\u0000" + // 13230 - 13234
+ "\u8EA2\uC0C9\u8EA2\uC0BD\u8EA2\uC0BC\u8EA2\uC0CA\u0000\uE2A9" + // 13235 - 13239
+ "\u8EA2\uC0C7\u8EA2\uC0C5\u0000\u0000\u0000\uE2A7\u0000\uE2A3" + // 13240 - 13244
+ "\u0000\uE2AE\u8EA2\uC0C1\u8EA2\uC0C2\u8EA2\uC0BF\u0000\u0000" + // 13245 - 13249
+ "\u0000\uE2A8\u0000\u0000\u0000\u0000\u0000\uE2A4\u0000\u0000" + // 13250 - 13254
+ "\u0000\uE2A2\u8EA2\uC7CE\u0000\uE6E6\u0000\uE6E1\u0000\u0000" + // 13255 - 13259
+ "\u0000\u0000\u0000\uE6DC\u0000\u0000\u0000\uE6EC\u0000\uE6DD" + // 13260 - 13264
+ "\u0000\u0000\u0000\uE6D9\u0000\uE6E8\u0000\uE6E5\u0000\uE6E7" + // 13265 - 13269
+ "\u0000\u0000\u0000\uE6DE\u0000\uE6E3\u0000\uE6DA\u0000\uE6DB" + // 13270 - 13274
+ "\u8EA2\uC7D6\u8EA2\uC7D3\u8EA2\uC7CB\u8EA2\uC7D0\u0000\u0000" + // 13275 - 13279
+ "\u0000\uE6E9\u8EA2\uC7D7\u0000\uE6EA\u0000\uE6E0\u0000\u0000" + // 13280 - 13284
+ "\u0000\u0000\u8EA2\uC7CD\u0000\uCBC6\u0000\u0000\u0000\uD3D4" + // 13285 - 13289
+ "\u0000\uD3D5\u8EA2\uADD1\u0000\u0000\u0000\u0000\u8EA2\uADD2" + // 13290 - 13294
+ "\u0000\uD3D3\u0000\u0000\u0000\uD8B9\u0000\u0000\u0000\uD8B7" + // 13295 - 13299
+ "\u0000\u0000\u0000\uD8B6\u0000\uD8BD\u0000\uD8B5\u0000\uD8BE" + // 13300 - 13304
+ "\u8EA2\uB3A1\u0000\uD8BB\u0000\u0000\u0000\uD8B8\u0000\uD8BC" + // 13305 - 13309
+ "\u0000\uD8BA\u0000\uD8B4\u0000\u0000\u0000\u0000\u0000\uDDC5" + // 13310 - 13314
+ "\u0000\u0000\u0000\uDDBF\u8EA2\uB9CF\u0000\uDDC4\u0000\u0000" + // 13315 - 13319
+ "\u0000\u0000\u0000\uDDC6\u0000\uDDC0\u0000\u0000\u0000\uDDC1" + // 13320 - 13324
+ "\u0000\u0000\u8EA2\uB9CD\u0000\u0000\u0000\u0000\u0000\uDDBE" + // 13325 - 13329
+ "\u0000\u0000\u8EA2\uB9CE\u0000\uDDC3\u0000\u0000\u0000\u0000" + // 13330 - 13334
+ "\u8EA2\uB9CC\u0000\uDDC2\u0000\u0000\u0000\u0000\u0000\uE2AB" + // 13335 - 13339
+ "\u0000\u0000\u0000\uE2AD\u0000\u0000\u0000\u0000\u8EA2\uC0BE" + // 13340 - 13344
+ "\u0000\uE2AC\u0000\uE2A1\u0000\uE2A5\u0000\u0000\u0000\uE6EB" + // 13345 - 13349
+ "\u8EA2\uC7CF\u0000\uFDA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 13350 - 13354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13355 - 13359
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13360 - 13364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC5" + // 13365 - 13369
+ "\u8EA2\uADD0\u0000\uD3D2\u8EA2\uB9CB\u8EA2\uB9C9\u0000\u0000" + // 13370 - 13374
+ "\u0000\u0000\u8EA2\uB9CA\u8EA2\uC0BA\u8EA2\uC0BB\u8EA2\uC7C9" + // 13375 - 13379
+ "\u8EA2\uC0B9\u0000\u0000\u8EA2\uC7C3\u8EA2\uC7C7\u8EA2\uC7C6" + // 13380 - 13384
+ "\u8EA2\uC7C8\u0000\uE6D8\u8EA2\uC7C5\u8EA2\uC7C4\u8EA2\uC7CA" + // 13385 - 13389
+ "\u0000\u0000\u8EA2\uCEB1\u8EA2\uCEAF\u0000\u0000\u8EA2\uCEB0" + // 13390 - 13394
+ "\u8EA2\uD4BC\u8EA2\uD4BA\u0000\u0000\u0000\u0000\u8EA2\uD4BB" + // 13395 - 13399
+ "\u8EA2\uDACB\u8EA2\uDFCA\u8EA2\uDFCB\u0000\uF7BD\u0000\u0000" + // 13400 - 13404
+ "\u8EA2\uE7A2\u8EA2\uE9F9\u0000\uFABD\u0000\u0000\u8EA2\uECBB" + // 13405 - 13409
+ "\u8EA2\uEEA4\u0000\uFBF3\u0000\u0000\u8EA2\uEFCD\u8EA2\uF1BB" + // 13410 - 13414
+ "\u8EA2\uC0AD\u0000\uE1FA\u0000\uE1FB\u0000\u0000\u0000\u0000" + // 13415 - 13419
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0B5" + // 13420 - 13424
+ "\u0000\uE6D4\u8EA2\uC7B9\u8EA2\uC7BF\u8EA2\uC7BA\u8EA2\uC7BB" + // 13425 - 13429
+ "\u0000\u0000\u8EA2\uC7C0\u0000\u0000\u0000\uE6D6\u0000\u0000" + // 13430 - 13434
+ "\u0000\uE6CE\u0000\uE6D5\u8EA2\uC7B8\u8EA2\uC0AA\u0000\uE6D1" + // 13435 - 13439
+ "\u0000\uE6CF\u8EA2\uC7BE\u8EA2\uC7BD\u0000\uE6D0\u0000\uE6D2" + // 13440 - 13444
+ "\u8EA2\uC7BC\u0000\uE6CD\u0000\u0000\u0000\uE6D3\u0000\u0000" + // 13445 - 13449
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDFD" + // 13450 - 13454
+ "\u0000\uEAFC\u0000\u0000\u0000\u0000\u8EA2\uCEAA\u8EA2\uCEA9" + // 13455 - 13459
+ "\u0000\u0000\u8EA2\uCEA4\u0000\uEAFE\u8EA2\uCEA8\u8EA2\uCDFE" + // 13460 - 13464
+ "\u8EA2\uCEA1\u0000\uEAF6\u0000\uEAF8\u0000\u0000\u8EA2\uCEA6" + // 13465 - 13469
+ "\u8EA2\uCDFC\u0000\uEAFA\u0000\uEAF9\u8EA2\uCEA2\u8EA2\uCEA7" + // 13470 - 13474
+ "\u8EA2\uCEA5\u0000\uEAFB\u8EA2\uCEA3\u0000\u0000\u0000\uA1AA" + // 13475 - 13479
+ "\u8EAD\uA4C3\u0000\uA1EC\u0000\uA2E3\u0000\uA2E8\u0000\uA1ED" + // 13480 - 13484
+ "\u8EAD\uA4C2\u0000\uA1BE\u0000\uA1BF\u0000\uA1EE\u0000\uA2B0" + // 13485 - 13489
+ "\u0000\uA1A2\u0000\uA2B1\u0000\uA1A5\u0000\uA2DF\u0000\uA4A1" + // 13490 - 13494
+ "\u0000\uA4A2\u0000\uA4A3\u0000\uA4A4\u0000\uA4A5\u0000\uA4A6" + // 13495 - 13499
+ "\u0000\uA4A7\u0000\uA4A8\u0000\uA4A9\u0000\uA4AA\u0000\uA1A8" + // 13500 - 13504
+ "\u0000\uA1A7\u0000\uA2B6\u0000\uA2B8\u0000\uA2B7\u0000\uA1A9" + // 13505 - 13509
+ "\u0000\uA2E9\u0000\uA4C1\u0000\uA4C2\u0000\uA4C3\u0000\uA4C4" + // 13510 - 13514
+ "\u0000\uA4C5\u0000\uA4C6\u0000\uA4C7\u0000\uA4C8\u0000\uA4C9" + // 13515 - 13519
+ "\u0000\uA4CA\u0000\uA4CB\u0000\uA4CC\u0000\uA4CD\u0000\uA4CE" + // 13520 - 13524
+ "\u0000\uA4CF\u0000\uA4D0\u0000\uA4D1\u0000\uA4D2\u0000\uA4D3" + // 13525 - 13529
+ "\u0000\uA4D4\u0000\uA4D5\u0000\uA4D6\u0000\uA4D7\u0000\uA4D8" + // 13530 - 13534
+ "\u0000\uA4D9\u0000\uA4DA\u8EAD\uA1B0\u0000\uA2E0\u8EAD\uA1B1" + // 13535 - 13539
+ "\u8EAD\uA1A4\u0000\uA2A5\u8EA2\uB2F7\u0000\uD8B0\u0000\uD8B1" + // 13540 - 13544
+ "\u8EA2\uB2FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13545 - 13549
+ "\u0000\uDDB6\u8EA2\uB9B5\u0000\u0000\u0000\uDDBB\u8EA2\uB9C5" + // 13550 - 13554
+ "\u0000\uDDBA\u8EA2\uB9C7\u0000\u0000\u0000\u0000\u8EA2\uB9BB" + // 13555 - 13559
+ "\u0000\uDDB8\u8EA2\uB9C6\u0000\u0000\u8EA2\uB9B6\u0000\uDDB9" + // 13560 - 13564
+ "\u8EA2\uB9C2\u8EA2\uB9BE\u8EA2\uB9C0\u8EA2\uB9BA\u8EA2\uB9C1" + // 13565 - 13569
+ "\u0000\u0000\u0000\u0000\u0000\uDDB5\u8EA2\uB9BD\u0000\u0000" + // 13570 - 13574
+ "\u8EA2\uB9BC\u8EA2\uB9B8\u0000\u0000\u8EA2\uB9C3\u0000\u0000" + // 13575 - 13579
+ "\u0000\u0000\u8EA2\uB9BF\u8EA2\uB9B7\u0000\u0000\u8EA2\uB9B9" + // 13580 - 13584
+ "\u0000\uDDB7\u8EA2\uB9C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 13585 - 13589
+ "\u0000\u0000\u0000\uE1FC\u8EA2\uC0B3\u0000\u0000\u0000\u0000" + // 13590 - 13594
+ "\u0000\u0000\u8EA2\uC0AF\u8EA2\uC0B1\u8EA2\uC0AC\u8EA2\uC0AB" + // 13595 - 13599
+ "\u8EA2\uC0A9\u0000\u0000\u8EA2\uC0B0\u8EA2\uC0B2\u8EA2\uC0AE" + // 13600 - 13604
+ "\u0000\u0000\u0000\uEBF6\u0000\uEBF7\u8EA2\uD6A4\u0000\uF0A5" + // 13605 - 13609
+ "\u0000\uF0A4\u8EA2\uD6A3\u0000\u0000\u8EA2\uE0F5\u0000\u0000" + // 13610 - 13614
+ "\u8EA2\uE4EA\u8EA2\uE4EC\u8EA2\uE4EB\u0000\uF7FD\u0000\uF7FC" + // 13615 - 13619
+ "\u0000\uF7FB\u0000\u0000\u0000\uFBCA\u8EA2\uECF4\u0000\u0000" + // 13620 - 13624
+ "\u0000\uFBC9\u8EA2\uEED6\u8EA2\uEED5\u0000\u0000\u0000\uFCF7" + // 13625 - 13629
+ "\u8EA2\uF0E3\u0000\uDEA3\u8EA2\uC8F0\u0000\u0000\u0000\u0000" + // 13630 - 13634
+ "\u0000\u0000\u8EA2\uCFC9\u8EA2\uCFC7\u8EA2\uCFC8\u0000\u0000" + // 13635 - 13639
+ "\u0000\u0000\u8EA2\uD6AD\u0000\u0000\u8EA2\uD6A8\u8EA2\uD6A5" + // 13640 - 13644
+ "\u8EA2\uD6AC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6AE" + // 13645 - 13649
+ "\u0000\u0000\u0000\u0000\u0000\uF0A7\u8EA2\uD6AB\u8EA2\uD6A7" + // 13650 - 13654
+ "\u0000\u0000\u0000\u0000\u8EA2\uD6A6\u8EA2\uD6AA\u8EA2\uD6A9" + // 13655 - 13659
+ "\u0000\uF0A6\u0000\u0000\u0000\u0000\u8EA2\uDCAB\u8EA2\uDCA6" + // 13660 - 13664
+ "\u8EA2\uDCA4\u8EA2\uDCAD\u8EA2\uDCA5\u0000\u0000\u8EA2\uEDA3" + // 13665 - 13669
+ "\u0000\uFBCF\u8EA2\uEDA9\u0000\u0000\u8EA2\uEDA8\u0000\u0000" + // 13670 - 13674
+ "\u8EA2\uEDA4\u8EA2\uEDB0\u0000\u0000\u8EA2\uEDA5\u8EA2\uEEE8" + // 13675 - 13679
+ "\u8EA2\uEDB3\u8EA2\uEDB5\u8EA2\uEDAC\u8EA2\uEDA6\u8EA2\uEEE9" + // 13680 - 13684
+ "\u8EA2\uEEEB\u8EA2\uEEE5\u0000\uFCAE\u0000\u0000\u8EA2\uEEF2" + // 13685 - 13689
+ "\u8EA2\uEEF0\u0000\uFCAF\u8EA2\uEEEF\u8EA2\uEEEE\u8EA2\uEEE7" + // 13690 - 13694
+ "\u8EA2\uEEE4\u8EA2\uEEEA\u8EA2\uEEF3\u8EA2\uEEE6\u8EA2\uEEEC" + // 13695 - 13699
+ "\u0000\u0000\u8EA2\uEFF7\u8EA2\uEFFC\u8EA2\uEFF2\u8EA2\uEFF5" + // 13700 - 13704
+ "\u0000\uFCDA\u8EA2\uEFF9\u0000\u0000\u8EA2\uF0A2\u8EA2\uEEED" + // 13705 - 13709
+ "\u0000\u0000\u8EA2\uEFF3\u8EA2\uEFFD\u8EA2\uF0A3\u8EA2\uEFF8" + // 13710 - 13714
+ "\u8EA2\uEFF1\u8EA2\uEFFB\u0000\u0000\u8EA2\uEFFA\u8EA2\uF0A1" + // 13715 - 13719
+ "\u8EA2\uEFFE\u8EA2\uEEF1\u8EA2\uEFF6\u8EA2\uEFF0\u8EA2\uEFF4" + // 13720 - 13724
+ "\u0000\uFCF9\u0000\uFCFA\u8EA2\uEFEF\u0000\u0000\u8EA2\uF0F4" + // 13725 - 13729
+ "\u8EA2\uF0EB\u8EA2\uF0F3\u0000\uC8E6\u8EA2\uADCB\u0000\u0000" + // 13730 - 13734
+ "\u8EA2\uB2F1\u8EA2\uB2F2\u0000\u0000\u0000\u0000\u0000\u0000" + // 13735 - 13739
+ "\u8EA2\uC0A6\u0000\u0000\u8EA2\uECB6\u8EA2\uF0CE\u0000\uC8E7" + // 13740 - 13744
+ "\u0000\uD3CF\u8EA2\uADCC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13745 - 13749
+ "\u8EA2\uB9B4\u0000\uDDB4\u0000\u0000\u8EA2\uC0A8\u8EA2\uC0A7" + // 13750 - 13754
+ "\u0000\uE1F9\u0000\u0000\u0000\uE6CC\u8EA2\uD4AA\u0000\uEEEC" + // 13755 - 13759
+ "\u0000\u0000\u0000\uEEED\u0000\u0000\u0000\u0000\u0000\u0000" + // 13760 - 13764
+ "\u0000\uF2AF\u0000\uFCE8\u0000\uC8E8\u0000\u0000\u0000\u0000" + // 13765 - 13769
+ "\u0000\u0000\u8EA2\uADCD\u0000\uCFD0\u8EA2\uADCF\u8EA2\uADCE" + // 13770 - 13774
+ "\u0000\uD3D0\u0000\u0000\u8EA2\uB2F3\u0000\u0000\u8EA2\uB2FA" + // 13775 - 13779
+ "\u0000\uD8AE\u8EA2\uB2F8\u8EA2\uB2F6\u0000\u0000\u8EA2\uB2FD" + // 13780 - 13784
+ "\u8EA2\uB2F4\u8EA2\uB2F5\u0000\uD8AF\u0000\u0000\u0000\uD8B3" + // 13785 - 13789
+ "\u0000\u0000\u0000\u0000\u8EA2\uB2FE\u0000\uD8B2\u8EA2\uB2FC" + // 13790 - 13794
+ "\u8EA2\uB2F9\u8EA2\uE6E6\u8EA2\uE3B9\u8EA2\uE6F3\u8EA2\uE6E8" + // 13795 - 13799
+ "\u0000\u0000\u0000\uF8F2\u8EA2\uE6EE\u0000\u0000\u8EA2\uE6F0" + // 13800 - 13804
+ "\u8EA2\uE6EB\u8EA2\uE6F2\u8EA2\uE6ED\u8EA2\uE6EC\u0000\uF8F3" + // 13805 - 13809
+ "\u0000\u0000\u0000\u0000\u8EA2\uE9F1\u8EA2\uE9F2\u0000\u0000" + // 13810 - 13814
+ "\u8EA2\uE9F4\u0000\uFAB9\u0000\uFABA\u8EA2\uE9F5\u8EA2\uE9F3" + // 13815 - 13819
+ "\u0000\u0000\u8EA2\uE9F0\u0000\u0000\u8EA2\uECB1\u8EA2\uECB4" + // 13820 - 13824
+ "\u8EA2\uECB0\u0000\u0000\u0000\uFBA7\u8EA2\uECB2\u0000\uFBA6" + // 13825 - 13829
+ "\u0000\uFBA5\u0000\uFBA4\u8EA2\uECB3\u8EA2\uEDFE\u8EA2\uEDFC" + // 13830 - 13834
+ "\u0000\u0000\u8EA2\uEDFB\u8EA2\uECAF\u8EA2\uEDFD\u8EA2\uECB5" + // 13835 - 13839
+ "\u8EA2\uEDFA\u0000\u0000\u8EA2\uEFC8\u8EA2\uEFA6\u8EA2\uEFC6" + // 13840 - 13844
+ "\u0000\uFCC7\u8EA2\uEFC7\u8EA2\uEFC9\u0000\u0000\u8EA2\uF0CD" + // 13845 - 13849
+ "\u0000\uFCE6\u8EA2\uF0CC\u8EA2\uF0CB\u0000\uFCE7\u0000\u0000" + // 13850 - 13854
+ "\u0000\uFDA7\u8EA2\uF1DD\u8EA2\uF1F5\u8EA2\uF1F4\u8EA2\uF1F6" + // 13855 - 13859
+ "\u0000\uF5B7\u0000\u0000\u8EA2\uDFB2\u8EA2\uDFB1\u8EA2\uDFB6" + // 13860 - 13864
+ "\u8EA2\uDFA9\u0000\uF5BB\u0000\u0000\u0000\uF5BF\u8EA2\uDFB0" + // 13865 - 13869
+ "\u8EA2\uDFB7\u0000\uF5C0\u8EA2\uDFB3\u0000\u0000\u0000\u0000" + // 13870 - 13874
+ "\u0000\u0000\u0000\u0000\u0000\uF5B8\u0000\uF5BA\u8EA2\uE3B3" + // 13875 - 13879
+ "\u8EA2\uE3B1\u0000\u0000\u0000\u0000\u8EA2\uE3B7\u8EA2\uE3B5" + // 13880 - 13884
+ "\u8EA2\uE3B8\u0000\u0000\u8EA2\uE3AA\u8EA2\uE3B2\u8EA2\uE3BC" + // 13885 - 13889
+ "\u8EA2\uDFBD\u8EA2\uE3AE\u0000\uF7BA\u8EA2\uD3EC\u8EA2\uE3A9" + // 13890 - 13894
+ "\u8EA2\uE3B6\u8EA2\uE3B0\u8EA2\uE3AD\u8EA2\uE3A8\u8EA2\uE3A7" + // 13895 - 13899
+ "\u8EA2\uE3BB\u0000\u0000\u8EA2\uE3AC\u8EA2\uE3AB\u0000\uF7B8" + // 13900 - 13904
+ "\u8EA2\uE3B4\u0000\u0000\u0000\uF7B7\u0000\u0000\u0000\u0000" + // 13905 - 13909
+ "\u0000\uF7B9\u8EA2\uE3AF\u8EA2\uE3BA\u0000\u0000\u8EA2\uE6E9" + // 13910 - 13914
+ "\u8EA2\uE6EA\u0000\u0000\u0000\uF8F4\u8EA2\uE6E7\u0000\uF8F1" + // 13915 - 13919
+ "\u8EA2\uE6EF\u0000\u0000\u0000\uF8F5\u8EA2\uE6F1\u8EA2\uCDE0" + // 13920 - 13924
+ "\u8EA2\uCDE8\u8EA2\uCDF4\u8EA2\uCDE6\u0000\u0000\u0000\u0000" + // 13925 - 13929
+ "\u8EA2\uCDEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13930 - 13934
+ "\u0000\u0000\u0000\uEEEA\u8EA2\uC7B0\u8EA2\uD3F9\u8EA2\uD4A4" + // 13935 - 13939
+ "\u8EA2\uD3F8\u8EA2\uD3F4\u8EA2\uD3F1\u0000\uEEEB\u8EA2\uD3EF" + // 13940 - 13944
+ "\u0000\uEAF3\u8EA2\uD3E8\u0000\uEEE9\u8EA2\uD3EE\u0000\uEEE8" + // 13945 - 13949
+ "\u8EA2\uD3F3\u8EA2\uD3F0\u8EA2\uD4A2\u8EA2\uD3FB\u8EA2\uD3F5" + // 13950 - 13954
+ "\u8EA2\uD3FA\u0000\uEEE4\u8EA2\uD3F2\u8EA2\uD4A7\u8EA2\uD3E9" + // 13955 - 13959
+ "\u8EA2\uD3EA\u8EA2\uD4A3\u0000\uEEE5\u8EA2\uD4A8\u0000\uEEE7" + // 13960 - 13964
+ "\u8EA2\uD4A9\u8EA2\uD3F7\u8EA2\uCDDF\u8EA2\uD3FD\u8EA2\uD3F6" + // 13965 - 13969
+ "\u8EA2\uD4A1\u8EA2\uD3FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13970 - 13974
+ "\u8EA2\uD3ED\u0000\uEEE2\u8EA2\uD4A6\u0000\uEEE3\u8EA2\uD3EB" + // 13975 - 13979
+ "\u0000\uEEE6\u8EA2\uDAB2\u8EA2\uD3FE\u8EA2\uD4A5\u0000\u0000" + // 13980 - 13984
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4B8\u0000\u0000" + // 13985 - 13989
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13990 - 13994
+ "\u0000\u0000\u0000\u0000\u8EAD\uA4AE\u0000\u0000\u0000\u0000" + // 13995 - 13999
+ "\u0000\u0000\u0000\u0000\u0000\uA3C4\u0000\u0000\u0000\u0000" + // 14000 - 14004
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14005 - 14009
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14010 - 14014
+ "\u0000\u0000\u0000\uA3C5\u0000\u0000\u0000\u0000\u0000\uA3C7" + // 14015 - 14019
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14020 - 14024
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3C6\u0000\u0000" + // 14025 - 14029
+ "\u0000\u0000\u0000\uA3C0\u0000\uA3C1\u0000\uA3C3\u0000\uA3C2" + // 14030 - 14034
+ "\u0000\uA3CC\u0000\uA3CD\u0000\uA3CE\u0000\uA1BB\u0000\u0000" + // 14035 - 14039
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14040 - 14044
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14045 - 14049
+ "\u0000\uA5EF\u0000\u0000\u0000\uA5ED\u0000\uA5EE\u0000\uA5F0" + // 14050 - 14054
+ "\u0000\u0000\u0000\uA2A6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14055 - 14059
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14060 - 14064
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5EC\u0000\u0000" + // 14065 - 14069
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14070 - 14074
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14075 - 14079
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14080 - 14084
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14085 - 14089
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14090 - 14094
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14095 - 14099
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14100 - 14104
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F8" + // 14105 - 14109
+ "\u8EA2\uC1D2\u0000\u0000\u0000\u0000\u8EA2\uC8E7\u8EA2\uCFB4" + // 14110 - 14114
+ "\u8EA2\uCFB5\u0000\uEBEC\u0000\u0000\u0000\uEBED\u8EA2\uD5E7" + // 14115 - 14119
+ "\u0000\uEFF1\u0000\u0000\u0000\u0000\u0000\uF6A9\u0000\u0000" + // 14120 - 14124
+ "\u8EA2\uE4D5\u0000\u0000\u0000\uF7F1\u8EA2\uE7F8\u0000\uF9CE" + // 14125 - 14129
+ "\u8EA2\uE7F7\u8EA2\uE7F9\u8EA2\uE7F6\u0000\uE6C5\u8EA2\uC7B4" + // 14130 - 14134
+ "\u0000\uE6C8\u0000\uE6C9\u8EA2\uC7AA\u8EA2\uC7B7\u0000\uE6CA" + // 14135 - 14139
+ "\u0000\uE6C4\u0000\uE6C3\u8EA2\uC7B3\u0000\uE6CB\u8EA2\uC7A9" + // 14140 - 14144
+ "\u8EA2\uC7AC\u8EA2\uC7B6\u8EA2\uC7B2\u0000\u0000\u0000\u0000" + // 14145 - 14149
+ "\u8EA2\uCDFB\u8EA2\uCDF0\u0000\uE6C2\u0000\u0000\u0000\u0000" + // 14150 - 14154
+ "\u0000\u0000\u0000\u0000\u0000\uEAF2\u8EA2\uCDE4\u8EA2\uCDF9" + // 14155 - 14159
+ "\u8EA2\uCDE5\u0000\uEAED\u0000\u0000\u8EA2\uCDE2\u0000\u0000" + // 14160 - 14164
+ "\u8EA2\uCDEB\u8EA2\uCDE3\u0000\uEAEF\u8EA2\uCDDD\u8EA2\uCDF8" + // 14165 - 14169
+ "\u0000\uEAF0\u8EA2\uCDF5\u8EA2\uCDF6\u8EA2\uCDDE\u0000\uEAF5" + // 14170 - 14174
+ "\u8EA2\uCDED\u0000\u0000\u8EA2\uCDE7\u8EA2\uCDEE\u8EA2\uCDE1" + // 14175 - 14179
+ "\u0000\u0000\u8EA2\uCDFA\u8EA2\uCDF2\u8EA2\uCDEC\u8EA2\uCDDC" + // 14180 - 14184
+ "\u0000\uEAF1\u8EA2\uCDF3\u0000\u0000\u0000\uEAF4\u8EA2\uCDF7" + // 14185 - 14189
+ "\u0000\u0000\u8EA2\uCDF1\u0000\uEAEE\u8EA2\uCDEF\u0000\u0000" + // 14190 - 14194
+ "\u8EA2\uCDE9\u0000\uEAEC\u0000\uDDAB\u8EA2\uB9A5\u8EA2\uB9A4" + // 14195 - 14199
+ "\u8EA2\uB9B1\u0000\uDDAD\u8EA2\uB9A6\u0000\uDDAF\u0000\uDDAA" + // 14200 - 14204
+ "\u8EA2\uB9A9\u0000\uDDB3\u0000\u0000\u0000\uDDB0\u8EA2\uB9AD" + // 14205 - 14209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1F7\u8EA2\uC0A5" + // 14210 - 14214
+ "\u0000\u0000\u8EA2\uBFF8\u0000\uE1F4\u0000\u0000\u8EA2\uC7AE" + // 14215 - 14219
+ "\u8EA2\uC0A3\u8EA2\uBFF5\u0000\uE1F2\u8EA2\uBFFA\u0000\uE1F5" + // 14220 - 14224
+ "\u8EA2\uBFFE\u8EA2\uBFFC\u0000\uE1F8\u0000\uE1F1\u0000\u0000" + // 14225 - 14229
+ "\u0000\u0000\u8EA2\uBFF6\u8EA2\uBFF9\u0000\uE1F6\u0000\u0000" + // 14230 - 14234
+ "\u8EA2\uBFF7\u0000\u0000\u8EA2\uC0A4\u8EA2\uC0A2\u8EA2\uBFFB" + // 14235 - 14239
+ "\u8EA2\uBFFD\u8EA2\uC0A1\u0000\uE1F3\u0000\u0000\u0000\u0000" + // 14240 - 14244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14245 - 14249
+ "\u8EA2\uC7AF\u8EA2\uC7B5\u8EA2\uC7AB\u8EA2\uC7B1\u0000\uE6C1" + // 14250 - 14254
+ "\u8EA2\uC7AD\u0000\uE6C7\u0000\u0000\u0000\u0000\u0000\uE6C6" + // 14255 - 14259
+ "\u0000\u0000\u8EA2\uE0F3\u0000\u0000\u0000\uF7F9\u8EA2\uE4E6" + // 14260 - 14264
+ "\u8EA2\uE4E7\u0000\uF7FA\u0000\u0000\u8EA2\uE4E5\u0000\u0000" + // 14265 - 14269
+ "\u8EA2\uE8B0\u8EA2\uE8AF\u8EA2\uE8B2\u0000\uF9D3\u8EA2\uE8B1" + // 14270 - 14274
+ "\u0000\u0000\u8EA2\uEAF5\u8EA2\uEAF7\u8EA2\uEAF6\u0000\u0000" + // 14275 - 14279
+ "\u0000\u0000\u8EA2\uECEF\u8EA2\uECF2\u8EA2\uECF0\u8EA2\uECF1" + // 14280 - 14284
+ "\u8EA2\uEED2\u0000\uFCA9\u0000\u0000\u0000\u0000\u0000\u0000" + // 14285 - 14289
+ "\u8EA2\uEFE2\u8EA2\uEFE3\u8EA2\uEFE4\u0000\u0000\u0000\uFCF6" + // 14290 - 14294
+ "\u0000\uFDB0\u8EA2\uF2A6\u0000\uD8EE\u0000\u0000\u0000\uF0A3" + // 14295 - 14299
+ "\u0000\uF3B4\u8EA2\uE4E8\u0000\u0000\u8EA2\uEED3\u0000\u0000" + // 14300 - 14304
+ "\u0000\u0000\u8EA2\uF1E6\u8EA2\uB3CD\u0000\u0000\u0000\uFDC8" + // 14305 - 14309
+ "\u0000\uD8EF\u8EA2\uDBFE\u0000\u0000\u8EA2\uE4E9\u0000\u0000" + // 14310 - 14314
+ "\u8EA2\uE8B3\u0000\u0000\u0000\u0000\u8EA2\uECF3\u8EA2\uEED4" + // 14315 - 14319
+ "\u0000\uD8F0\u0000\u0000\u8EA2\uCFC5\u8EA2\uCFC6\u8EA2\uEFC0" + // 14320 - 14324
+ "\u0000\u0000\u0000\u0000\u8EA2\uF0CA\u0000\u0000\u0000\u0000" + // 14325 - 14329
+ "\u8EA2\uF1B4\u8EA2\uF1B5\u8EA2\uF1B6\u0000\u0000\u0000\u0000" + // 14330 - 14334
+ "\u8EA2\uF2B5\u8EA2\uF2AD\u8EA2\uA2EF\u0000\uCFCD\u0000\u0000" + // 14335 - 14339
+ "\u0000\uD3CB\u0000\u0000\u8EA2\uB2DA\u8EA2\uB2D9\u0000\uD8A5" + // 14340 - 14344
+ "\u0000\uDDA8\u8EA2\uB9A1\u0000\u0000\u0000\u0000\u8EA2\uB8FE" + // 14345 - 14349
+ "\u0000\u0000\u0000\uE1F0\u0000\uE6BF\u0000\u0000\u0000\uE6BE" + // 14350 - 14354
+ "\u0000\uE6C0\u0000\u0000\u8EA2\uCDDB\u8EA2\uD3E7\u8EA2\uDAA5" + // 14355 - 14359
+ "\u8EA2\uDAA7\u8EA2\uDAA6\u0000\u0000\u0000\uF5B6\u8EA2\uDFA5" + // 14360 - 14364
+ "\u8EA2\uE3A6\u8EA2\uF1F3\u0000\uC8E5\u0000\u0000\u8EA2\uA8E9" + // 14365 - 14369
+ "\u8EA2\uA8EA\u8EA2\uA8E8\u8EA2\uA8E7\u0000\uCFCE\u0000\u0000" + // 14370 - 14374
+ "\u8EA2\uADCA\u8EA2\uADC8\u0000\u0000\u0000\u0000\u8EA2\uADC7" + // 14375 - 14379
+ "\u0000\u0000\u0000\uD3CC\u0000\uD3CE\u0000\uD3CD\u8EA2\uADC9" + // 14380 - 14384
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCACD\u0000\u0000" + // 14385 - 14389
+ "\u0000\u0000\u8EA2\uD0D8\u0000\u0000\u0000\uE8F1\u0000\uECFC" + // 14390 - 14394
+ "\u8EA2\uD7B5\u8EA2\uD0DD\u8EA2\uD0DC\u8EA2\uD0DE\u0000\u0000" + // 14395 - 14399
+ "\u0000\u0000\u8EA2\uD0DB\u0000\uECFD\u8EAD\uA4C7\u0000\uEDA5" + // 14400 - 14404
+ "\u0000\uEDA2\u0000\u0000\u0000\uEDA3\u8EA2\uD0D6\u8EA2\uD0D9" + // 14405 - 14409
+ "\u8EA2\uD0E3\u0000\uEDAB\u0000\uEDA9\u0000\u0000\u8EA2\uD0DA" + // 14410 - 14414
+ "\u8EA2\uBBFD\u0000\uECFA\u8EA2\uD0E0\u8EA2\uD0D7\u0000\u0000" + // 14415 - 14419
+ "\u0000\uEDAC\u8EA2\uD0DF\u0000\uE8F4\u0000\uEDA1\u8EA2\uCACB" + // 14420 - 14424
+ "\u0000\u0000\u0000\u0000\u0000\uEDA4\u0000\u0000\u0000\uEDA8" + // 14425 - 14429
+ "\u0000\uEDAA\u0000\uEDA7\u0000\uEDA6\u0000\u0000\u0000\uECFE" + // 14430 - 14434
+ "\u8EA2\uD0E2\u0000\uECFB\u0000\uEDAD\u0000\u0000\u0000\u0000" + // 14435 - 14439
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14440 - 14444
+ "\u0000\uF0E1\u0000\uF0E2\u8EA2\uD7B4\u0000\uF0EB\u0000\uF0E8" + // 14445 - 14449
+ "\u8EA2\uE9E9\u8EA2\uE9E6\u0000\u0000\u0000\u0000\u8EA2\uE9EB" + // 14450 - 14454
+ "\u8EA2\uE9ED\u0000\uFAB5\u0000\uFAB7\u0000\u0000\u8EA2\uE9EC" + // 14455 - 14459
+ "\u0000\uFAB8\u0000\uFAB6\u8EA2\uE9EE\u0000\u0000\u0000\u0000" + // 14460 - 14464
+ "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000\u0000\u0000" + // 14465 - 14469
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBA1\u8EA2\uECA1" + // 14470 - 14474
+ "\u8EA2\uECA7\u0000\uFBA3\u8EA2\uE9E8\u8EA2\uECA6\u0000\u0000" + // 14475 - 14479
+ "\u8EA2\uECAD\u8EA2\uECA4\u8EA2\uECAB\u8EA2\uECAA\u8EA2\uE9E4" + // 14480 - 14484
+ "\u8EA2\uECA5\u8EA2\uE3A2\u8EA2\uECAE\u8EA2\uECA3\u8EA2\uECA8" + // 14485 - 14489
+ "\u0000\u0000\u8EA2\uECAC\u8EA2\uECA2\u0000\u0000\u8EA2\uEDF7" + // 14490 - 14494
+ "\u0000\uFBA2\u8EA2\uECA9\u0000\u0000\u0000\u0000\u8EA2\uEFC3" + // 14495 - 14499
+ "\u8EA2\uEDF8\u8EA2\uEDF6\u8EA2\uEDF4\u8EA2\uEDF5\u8EA2\uEDF9" + // 14500 - 14504
+ "\u0000\u0000\u0000\uFCC5\u8EA2\uEFC1\u8EA2\uEFBF\u8EA2\uEFC4" + // 14505 - 14509
+ "\u8EA2\uEFC2\u0000\u0000\u8EA2\uEFC5\u0000\uFCC6\u8EA2\uE2F0" + // 14510 - 14514
+ "\u0000\u0000\u8EA2\uE2F2\u8EA2\uE2F1\u8EA2\uE2F7\u8EA2\uE2FC" + // 14515 - 14519
+ "\u8EA2\uE2EF\u8EA2\uE2F6\u8EA2\uE2FB\u0000\uF7B3\u0000\u0000" + // 14520 - 14524
+ "\u8EA2\uE2F9\u0000\u0000\u0000\uF7B1\u8EA2\uE2FA\u0000\uF7AF" + // 14525 - 14529
+ "\u0000\uF7B2\u8EA2\uE6E0\u8EA2\uE3A1\u0000\u0000\u0000\u0000" + // 14530 - 14534
+ "\u0000\uF8ED\u0000\u0000\u8EA2\uE6D8\u8EA2\uE6DC\u8EA2\uE6D4" + // 14535 - 14539
+ "\u8EA2\uE6D7\u0000\u0000\u8EA2\uE6DF\u0000\uF8EB\u8EA2\uE6E4" + // 14540 - 14544
+ "\u8EA2\uE6DD\u0000\u0000\u8EA2\uE6D5\u8EA2\uE6E5\u8EA2\uE6DE" + // 14545 - 14549
+ "\u0000\uF8EE\u0000\uF8EF\u8EA2\uE6E2\u0000\u0000\u8EA2\uE6D6" + // 14550 - 14554
+ "\u0000\uF8EA\u0000\uF8EC\u8EA2\uE6D1\u8EA2\uE6D9\u8EA2\uE6D3" + // 14555 - 14559
+ "\u0000\u0000\u8EA2\uE6E3\u8EA2\uE6E1\u8EA2\uE6D2\u8EA2\uE6DA" + // 14560 - 14564
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9EA\u0000\uF8F0" + // 14565 - 14569
+ "\u8EA2\uE6DB\u0000\uFAB2\u0000\uFAB4\u0000\uFAB1\u0000\u0000" + // 14570 - 14574
+ "\u8EA2\uE9EF\u8EA2\uE9E7\u8EA2\uE9E5\u8EA2\uDEE1\u8EA2\uDEF9" + // 14575 - 14579
+ "\u8EA2\uDEFB\u8EA2\uDEE0\u0000\uF5AB\u8EA2\uDEFD\u8EA2\uDEF5" + // 14580 - 14584
+ "\u0000\uF5B2\u8EA2\uDEFC\u8EA2\uDEEE\u0000\uF5B4\u8EA2\uDEE6" + // 14585 - 14589
+ "\u8EA2\uD9FD\u8EA2\uDEF6\u8EA2\uDEF3\u8EA2\uDEE2\u8EA2\uDFA3" + // 14590 - 14594
+ "\u0000\uF5AE\u0000\u0000\u0000\u0000\u0000\uF5AF\u8EA2\uDEE4" + // 14595 - 14599
+ "\u8EA2\uDEF4\u0000\u0000\u8EA2\uDFA2\u8EA2\uDEF7\u8EA2\uDEEA" + // 14600 - 14604
+ "\u0000\uF5B1\u0000\uF5AD\u8EA2\uDEF8\u8EA2\uDEEB\u8EA2\uDFA4" + // 14605 - 14609
+ "\u8EA2\uDEE5\u8EA2\uDEEF\u8EA2\uDEFA\u8EA2\uDEE7\u8EA2\uDEE9" + // 14610 - 14614
+ "\u0000\u0000\u0000\uF5B5\u8EA2\uDEE3\u0000\uF5B3\u0000\uF7B0" + // 14615 - 14619
+ "\u0000\uF5AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14620 - 14624
+ "\u0000\uF5B0\u0000\uF7B4\u8EA2\uE2FD\u0000\u0000\u8EA2\uE2F3" + // 14625 - 14629
+ "\u8EA2\uE2EE\u8EA2\uE2F4\u8EA2\uE2FE\u8EA2\uE3A4\u8EA2\uE3A3" + // 14630 - 14634
+ "\u0000\uF7B6\u0000\uF7B5\u0000\u0000\u0000\u0000\u8EA2\uE2F5" + // 14635 - 14639
+ "\u8EA2\uE3A5\u8EA2\uE2F8\u8EA2\uD9EB\u8EA2\uD9EE\u0000\u0000" + // 14640 - 14644
+ "\u0000\uF2A5\u8EA2\uD9F0\u8EA2\uD9E5\u8EA2\uD9EC\u8EA2\uD9F2" + // 14645 - 14649
+ "\u0000\uF2A2\u0000\uF2A6\u0000\uF1FE\u0000\u0000\u0000\u0000" + // 14650 - 14654
+ "\u8EA2\uD9E7\u8EA2\uD9F7\u0000\u0000\u0000\u0000\u8EA2\uD9F1" + // 14655 - 14659
+ "\u0000\u0000\u8EA2\uD9E8\u8EA2\uDAA2\u8EA2\uD9FA\u8EA2\uD9E4" + // 14660 - 14664
+ "\u8EA2\uDEF2\u8EA2\uD9EA\u0000\uF2A1\u0000\u0000\u8EA2\uD9F5" + // 14665 - 14669
+ "\u0000\u0000\u8EA2\uDAA1\u0000\uF2A9\u0000\u0000\u8EA2\uD9FC" + // 14670 - 14674
+ "\u8EA2\uD9E9\u8EA2\uD9EF\u8EA2\uD9F3\u8EA2\uD9ED\u8EA2\uDAA3" + // 14675 - 14679
+ "\u8EA2\uD9FE\u8EA2\uD9FB\u0000\uF2A3\u0000\uF2A4\u0000\uF2A8" + // 14680 - 14684
+ "\u8EA2\uD9E6\u8EA2\uDAA4\u0000\uF2A7\u8EA2\uD9F8\u0000\u0000" + // 14685 - 14689
+ "\u0000\u0000\u8EA2\uD9F6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14690 - 14694
+ "\u8EA2\uD9F9\u8EA2\uDFA1\u8EA2\uDEEC\u8EA2\uDEF1\u8EA2\uDEFE" + // 14695 - 14699
+ "\u8EA2\uDEF0\u8EA2\uDEE8\u8EA2\uDEED\u0000\u0000\u0000\uF5AC" + // 14700 - 14704
+ "\u0000\u0000\u0000\uF6AB\u8EA2\uE0E4\u8EA2\uE0EF\u8EA2\uE4DD" + // 14705 - 14709
+ "\u8EA2\uE4E0\u8EA2\uE4E2\u8EA2\uE4E1\u0000\u0000\u8EA2\uE4DB" + // 14710 - 14714
+ "\u8EA2\uE4DF\u8EA2\uE4DA\u0000\u0000\u8EA2\uE4DC\u0000\uF7F7" + // 14715 - 14719
+ "\u8EA2\uE4D9\u0000\u0000\u8EA2\uE4DE\u0000\u0000\u0000\u0000" + // 14720 - 14724
+ "\u8EA2\uE8AD\u8EA2\uE8A2\u0000\uF9D1\u0000\u0000\u0000\u0000" + // 14725 - 14729
+ "\u0000\uF9D2\u8EA2\uE8A1\u8EA2\uE8A6\u8EA2\uE8AC\u8EA2\uE8A4" + // 14730 - 14734
+ "\u8EA2\uE8AB\u0000\u0000\u8EA2\uE8A8\u0000\u0000\u8EA2\uE8A7" + // 14735 - 14739
+ "\u8EA2\uE8AA\u8EA2\uE8A5\u8EA2\uE8A3\u0000\u0000\u8EA2\uE8A9" + // 14740 - 14744
+ "\u0000\u0000\u8EA2\uEAEE\u8EA2\uEAEC\u0000\uFAD5\u8EA2\uEAEB" + // 14745 - 14749
+ "\u8EA2\uEAF1\u8EA2\uEAEF\u0000\u0000\u0000\uFAD6\u8EA2\uEAEA" + // 14750 - 14754
+ "\u8EA2\uEAE8\u0000\u0000\u8EA2\uEAE9\u0000\uFAD8\u8EA2\uEAED" + // 14755 - 14759
+ "\u0000\uFAD7\u8EA2\uEAF0\u8EA2\uECE6\u8EA2\uECEC\u0000\u0000" + // 14760 - 14764
+ "\u0000\u0000\u8EA2\uECE7\u0000\uFBC7\u8EA2\uECED\u8EA2\uD3B8" + // 14765 - 14769
+ "\u0000\u0000\u8EA2\uD3D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14770 - 14774
+ "\u0000\uEEE0\u8EA2\uC6E2\u8EA2\uD3C4\u8EA2\uD3BB\u8EA2\uD3BE" + // 14775 - 14779
+ "\u8EA2\uD3E4\u8EA2\uD3C5\u8EA2\uD3BC\u8EA2\uD3BA\u8EA2\uD3B7" + // 14780 - 14784
+ "\u0000\u0000\u0000\uEED9\u8EA2\uD3CE\u0000\uEED8\u0000\uEEDC" + // 14785 - 14789
+ "\u8EA2\uD3C9\u8EA2\uD3D1\u0000\uEED2\u8EA2\uD3E1\u8EA2\uD3E5" + // 14790 - 14794
+ "\u0000\uEED4\u0000\u0000\u8EA2\uD3C0\u8EA2\uD3D4\u8EA2\uD3D8" + // 14795 - 14799
+ "\u8EA2\uD3BD\u8EA2\uD3E2\u0000\uEEDB\u0000\u0000\u0000\uEEDA" + // 14800 - 14804
+ "\u8EA2\uD3B5\u0000\uEEDE\u8EA2\uD3DB\u8EA2\uD3BF\u8EA2\uD3D3" + // 14805 - 14809
+ "\u8EA2\uD3B9\u8EA2\uD3C7\u8EA2\uD3C2\u0000\uEED6\u0000\uEED7" + // 14810 - 14814
+ "\u8EA2\uD3D5\u8EA2\uD3E6\u8EA2\uD3E3\u8EA2\uD3DA\u0000\u0000" + // 14815 - 14819
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14820 - 14824
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3B6\u0000\u0000" + // 14825 - 14829
+ "\u0000\uEED3\u8EA2\uD9F4\u0000\u0000\u0000\uEBF2\u8EA2\uCFBF" + // 14830 - 14834
+ "\u8EA2\uCFBB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFC1" + // 14835 - 14839
+ "\u0000\u0000\u8EA2\uD5F5\u0000\u0000\u8EA2\uD5F8\u8EA2\uD5FA" + // 14840 - 14844
+ "\u8EA2\uD5F0\u8EA2\uD5F4\u8EA2\uD5F1\u0000\uEFF7\u0000\uEFFA" + // 14845 - 14849
+ "\u0000\uEFFC\u8EA2\uD5F2\u8EA2\uD5F3\u0000\uEFFB\u8EA2\uD5F6" + // 14850 - 14854
+ "\u8EA2\uD5F9\u8EA2\uD5F7\u0000\uEFFD\u0000\u0000\u0000\uEFF9" + // 14855 - 14859
+ "\u8EA2\uD5EF\u0000\uEFF6\u0000\u0000\u0000\uEFF8\u0000\u0000" + // 14860 - 14864
+ "\u0000\u0000\u0000\uF3AE\u8EA2\uDBF2\u8EA2\uDBF0\u8EA2\uDBEF" + // 14865 - 14869
+ "\u0000\u0000\u8EA2\uDBF5\u0000\u0000\u8EA2\uDBF4\u8EA2\uDBF3" + // 14870 - 14874
+ "\u0000\u0000\u8EA2\uDBEE\u0000\uF3AD\u8EA2\uDBED\u0000\u0000" + // 14875 - 14879
+ "\u8EA2\uDBF1\u0000\uF3AF\u0000\u0000\u0000\u0000\u8EA2\uE0E6" + // 14880 - 14884
+ "\u0000\u0000\u8EA2\uE0EA\u8EA2\uE0E7\u8EA2\uE0E9\u8EA2\uE0E8" + // 14885 - 14889
+ "\u8EA2\uE0E5\u8EA2\uE0EB\u8EA2\uE0EE\u8EA2\uE0EC\u8EA2\uE0ED" + // 14890 - 14894
+ "\u0000\uF6AC\u0000\uEAE6\u8EA2\uCDBF\u8EA2\uCDB9\u0000\u0000" + // 14895 - 14899
+ "\u0000\uEADF\u8EA2\uC6F9\u0000\uEADE\u8EA2\uCDCA\u0000\u0000" + // 14900 - 14904
+ "\u0000\uEADC\u0000\uEAEB\u0000\uEAE4\u8EA2\uCDCB\u8EA2\uCDC0" + // 14905 - 14909
+ "\u8EA2\uCDB8\u8EA2\uCDD3\u8EA2\uCDC4\u0000\uEAEA\u8EA2\uCDD7" + // 14910 - 14914
+ "\u0000\uEAE7\u8EA2\uCDD6\u0000\u0000\u8EA2\uCDD0\u8EA2\uCDD5" + // 14915 - 14919
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDD8\u0000\u0000" + // 14920 - 14924
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14925 - 14929
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14930 - 14934
+ "\u8EA2\uD3DC\u8EA2\uD3DD\u8EA2\uD3D0\u8EA2\uD3CF\u8EA2\uD3CB" + // 14935 - 14939
+ "\u0000\uEEDD\u0000\u0000\u0000\uEED5\u8EA2\uD3DF\u8EA2\uD3DE" + // 14940 - 14944
+ "\u8EA2\uC6CE\u8EA2\uD3C8\u8EA2\uD3CC\u8EA2\uD3C6\u0000\u0000" + // 14945 - 14949
+ "\u8EA2\uD3D9\u8EA2\uD3CA\u0000\u0000\u8EA2\uD3E0\u8EA2\uD3C3" + // 14950 - 14954
+ "\u8EA2\uD3C1\u8EA2\uD3CD\u8EA2\uD3D7\u8EA2\uD3D2\u0000\uEEDF" + // 14955 - 14959
+ "\u8EA2\uC6D7\u0000\u0000\u8EA2\uC6F0\u8EA2\uC6E8\u8EA2\uC7A3" + // 14960 - 14964
+ "\u8EA2\uC6EB\u0000\uE6BD\u8EA2\uC6FC\u0000\u0000\u0000\uE6B4" + // 14965 - 14969
+ "\u0000\u0000\u8EA2\uC6EE\u8EA2\uC6F6\u8EA2\uC6DB\u8EA2\uC6F5" + // 14970 - 14974
+ "\u0000\u0000\u8EA2\uC7A8\u8EA2\uC6D6\u8EA2\uC6F7\u0000\u0000" + // 14975 - 14979
+ "\u8EA2\uC7A6\u0000\u0000\u8EA2\uC6D0\u0000\uE1E1\u0000\u0000" + // 14980 - 14984
+ "\u8EA2\uC6DE\u8EA2\uC6DD\u0000\uE6B6\u0000\u0000\u8EA2\uC6E1" + // 14985 - 14989
+ "\u8EA2\uC6E3\u8EA2\uC6F2\u8EA2\uC7A5\u0000\uE6B9\u0000\u0000" + // 14990 - 14994
+ "\u0000\uE6BA\u0000\u0000\u8EA2\uC6D5\u0000\uE6B2\u8EA2\uC6D9" // 14995 - 14999
+ ;
+
+ index2b =
+ "\u8EA2\uC7A1\u0000\uE6BB\u0000\u0000\u0000\uE6B3\u0000\uE6B5" + // 15000 - 15004
+ "\u0000\uE6BC\u8EA2\uC7A7\u8EA2\uC6F8\u8EA2\uC6F3\u0000\u0000" + // 15005 - 15009
+ "\u0000\u0000\u8EA2\uC6E0\u8EA2\uC6DF\u0000\uE6B1\u8EA2\uC6D1" + // 15010 - 15014
+ "\u0000\uE6AE\u8EA2\uC6E9\u8EA2\uC6D2\u8EA2\uC6E7\u0000\u0000" + // 15015 - 15019
+ "\u0000\u0000\u8EA2\uC6DC\u8EA2\uC7A2\u0000\u0000\u8EA2\uE4D6" + // 15020 - 15024
+ "\u0000\u0000\u8EA2\uE7FC\u0000\u0000\u0000\uF9CF\u0000\u0000" + // 15025 - 15029
+ "\u8EA2\uE7FB\u8EA2\uE7FA\u0000\uF9D0\u0000\u0000\u8EA2\uEAE6" + // 15030 - 15034
+ "\u8EA2\uEAE5\u0000\u0000\u8EA2\uEAE3\u0000\u0000\u8EA2\uEAE2" + // 15035 - 15039
+ "\u0000\uFAD3\u0000\uFAD2\u8EA2\uEAE7\u8EA2\uEEC5\u0000\uFCA5" + // 15040 - 15044
+ "\u8EA2\uECE5\u0000\uFBC3\u8EA2\uECE4\u8EA2\uEAE4\u0000\u0000" + // 15045 - 15049
+ "\u8EA2\uEEC6\u0000\uFCD0\u0000\u0000\u0000\uFDAE\u8EA2\uF1C8" + // 15050 - 15054
+ "\u0000\u0000\u8EA2\uF2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 15055 - 15059
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15060 - 15064
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15065 - 15069
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15070 - 15074
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15075 - 15079
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15080 - 15084
+ "\u0000\u0000\u0000\u0000\u0000\uCFDD\u0000\u0000\u8EA2\uA1E9" + // 15085 - 15089
+ "\u0000\u0000\u8EA2\uA2F8\u0000\uC8EA\u8EA2\uA2F6\u8EA2\uA2F9" + // 15090 - 15094
+ "\u8EA2\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5AE" + // 15095 - 15099
+ "\u0000\u0000\u0000\uCBE2\u0000\u0000\u0000\uCBE3\u8EA2\uA5B0" + // 15100 - 15104
+ "\u0000\uCBE0\u8EA2\uA5AF\u8EA2\uA5AD\u0000\uCBE1\u0000\uCBDF" + // 15105 - 15109
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15110 - 15114
+ "\u0000\u0000\u8EA2\uA8F8\u8EA2\uA8FB\u0000\uCFE0\u8EA2\uA8FA" + // 15115 - 15119
+ "\u8EA2\uA8F9\u0000\u0000\u0000\uCFDF\u8EA2\uBFC5\u0000\uE1DD" + // 15120 - 15124
+ "\u8EA2\uBFE2\u8EA2\uBFEB\u8EA2\uBFEE\u0000\uE1DB\u8EA2\uBFCD" + // 15125 - 15129
+ "\u8EA2\uBFE6\u8EA2\uBFCE\u8EA2\uBFDC\u0000\uE1E8\u8EA2\uBFD8" + // 15130 - 15134
+ "\u0000\uE1E5\u0000\u0000\u8EA2\uBFD9\u8EA2\uBFC2\u0000\u0000" + // 15135 - 15139
+ "\u8EA2\uBFE7\u0000\u0000\u0000\u0000\u0000\uE1EE\u8EA2\uBFE4" + // 15140 - 15144
+ "\u8EA2\uBFDA\u8EA2\uBFF0\u8EA2\uBFD5\u8EA2\uC6ED\u0000\u0000" + // 15145 - 15149
+ "\u8EA2\uBFF3\u0000\uE1EC\u8EA2\uBFD3\u8EA2\uBFDF\u0000\uE1EF" + // 15150 - 15154
+ "\u0000\uE1DA\u8EA2\uBFD7\u8EA2\uBFF1\u8EA2\uBFD0\u8EA2\uBFC9" + // 15155 - 15159
+ "\u8EA2\uBFD4\u0000\u0000\u8EA2\uBFC8\u8EA2\uBFC6\u0000\uE1D6" + // 15160 - 15164
+ "\u8EA2\uBFE8\u8EA2\uBFCF\u8EA2\uBFEC\u0000\u0000\u8EA2\uBFED" + // 15165 - 15169
+ "\u0000\uE1DE\u0000\uE1E3\u0000\uE1DF\u0000\uE1E7\u8EA2\uBFE3" + // 15170 - 15174
+ "\u0000\uE1E0\u8EA2\uBFDB\u8EA2\uBFCB\u0000\u0000\u0000\uE1D8" + // 15175 - 15179
+ "\u8EA2\uBFC3\u8EA2\uBFE5\u8EA2\uBFEF\u8EA2\uBFCA\u0000\uE1E6" + // 15180 - 15184
+ "\u8EA2\uBFF4\u8EA2\uBFD6\u0000\uD8A1\u8EA2\uB2BF\u8EA2\uB2C3" + // 15185 - 15189
+ "\u0000\uD8A4\u8EA2\uB2B9\u8EA2\uB2D1\u0000\u0000\u8EA2\uB2D0" + // 15190 - 15194
+ "\u8EA2\uB2D8\u0000\uD7F7\u0000\uD7F4\u8EA2\uB2D6\u8EA2\uB2D2" + // 15195 - 15199
+ "\u8EA2\uB2C9\u8EA2\uB2C4\u0000\uD7FA\u0000\uD7F6\u8EA2\uB2BB" + // 15200 - 15204
+ "\u0000\uD7F2\u8EA2\uB2D3\u0000\uD7F3\u0000\u0000\u8EA2\uB2BD" + // 15205 - 15209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15210 - 15214
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15215 - 15219
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15220 - 15224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15225 - 15229
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15230 - 15234
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8E2\u8EA2\uB8E4" + // 15235 - 15239
+ "\u8EA2\uB8E9\u8EA2\uB8FD\u0000\uDDA3\u0000\uDCF7\u0000\u0000" + // 15240 - 15244
+ "\u8EA2\uB8E1\u0000\uDDA4\u0000\uDDA5\u8EA2\uB8EC\u8EA2\uB8F3" + // 15245 - 15249
+ "\u8EA2\uB8F9\u8EA2\uADB3\u0000\uD3C2\u0000\uD3BD\u0000\uD3B6" + // 15250 - 15254
+ "\u0000\uD3BB\u0000\uD3B7\u0000\uD3CA\u8EA2\uADB1\u8EA2\uB2C7" + // 15255 - 15259
+ "\u0000\uD3BE\u0000\u0000\u0000\u0000\u8EA2\uADBD\u8EA2\uA9C2" + // 15260 - 15264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15265 - 15269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB2CA\u0000\uD7FE" + // 15270 - 15274
+ "\u0000\u0000\u8EA2\uB2BA\u0000\u0000\u8EA2\uB2C5\u8EA2\uB2C1" + // 15275 - 15279
+ "\u0000\u0000\u8EA2\uB2D4\u0000\u0000\u8EA2\uB2CC\u0000\u0000" + // 15280 - 15284
+ "\u8EA2\uB2C2\u0000\u0000\u8EA2\uB2CB\u8EA2\uB2BC\u8EA2\uB2C0" + // 15285 - 15289
+ "\u8EA2\uB2D7\u0000\uD8A3\u8EA2\uB2CF\u8EA2\uB2C6\u0000\uD7F1" + // 15290 - 15294
+ "\u8EA2\uB2D5\u8EA2\uB2B8\u0000\u0000\u8EA2\uB2CE\u0000\u0000" + // 15295 - 15299
+ "\u0000\uD8A2\u0000\uD7FB\u8EA2\uB2B7\u0000\uD7F9\u0000\uD7F8" + // 15300 - 15304
+ "\u0000\uD7FD\u8EA2\uB2CD\u0000\uD7F5\u0000\uD7FC\u8EA2\uADB5" + // 15305 - 15309
+ "\u8EA2\uBFC1\u8EA2\uB2C8\u0000\u0000\u0000\u0000\u8EA2\uB2BE" + // 15310 - 15314
+ "\u8EA2\uA8D3\u0000\u0000\u8EA2\uA8E2\u8EA2\uA8E4\u0000\u0000" + // 15315 - 15319
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15320 - 15324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15325 - 15329
+ "\u0000\u0000\u0000\u0000\u0000\uD3C5\u0000\uD3BF\u0000\uD3C7" + // 15330 - 15334
+ "\u0000\uD3C4\u8EA2\uADB4\u8EA2\uADB7\u0000\uD3C0\u0000\u0000" + // 15335 - 15339
+ "\u8EA2\uADAE\u0000\u0000\u0000\uD3B9\u0000\uD3C3\u0000\u0000" + // 15340 - 15344
+ "\u0000\uD3C6\u0000\uD3C8\u8EA2\uADC3\u8EA2\uADBA\u0000\u0000" + // 15345 - 15349
+ "\u0000\uD3B8\u8EA2\uADC2\u0000\uD3BC\u0000\uD3BA\u0000\uD3B5" + // 15350 - 15354
+ "\u8EA2\uADB2\u0000\u0000\u8EA2\uADC1\u8EA2\uADB6\u8EA2\uADB9" + // 15355 - 15359
+ "\u8EA2\uADC6\u0000\u0000\u0000\uD3C9\u8EA2\uADC0\u0000\uD3C1" + // 15360 - 15364
+ "\u8EA2\uADBB\u8EA2\uADC5\u8EA2\uADB8\u8EA2\uADBC\u8EA2\uADBF" + // 15365 - 15369
+ "\u0000\u0000\u0000\u0000\u8EA2\uADB0\u8EA2\uADC4\u8EA2\uADBE" + // 15370 - 15374
+ "\u0000\u0000\u0000\u0000\u8EA2\uADAF\u0000\u0000\u8EA2\uE0D1" + // 15375 - 15379
+ "\u0000\u0000\u8EA2\uE0D6\u8EA2\uE0D2\u8EA2\uE0D5\u0000\uF6A8" + // 15380 - 15384
+ "\u0000\u0000\u8EA2\uDEC1\u8EA2\uE0D4\u8EA2\uE0D3\u0000\u0000" + // 15385 - 15389
+ "\u0000\uF7EE\u0000\uF7EC\u0000\uF7EF\u0000\uF7ED\u8EA2\uE4D2" + // 15390 - 15394
+ "\u8EA2\uE4D3\u8EA2\uE4D4\u0000\uF7F0\u0000\u0000\u0000\u0000" + // 15395 - 15399
+ "\u0000\u0000\u8EA2\uE7F5\u0000\uF9CC\u8EA2\uE7F3\u0000\u0000" + // 15400 - 15404
+ "\u0000\uF9CD\u8EA2\uE7F2\u8EA2\uE7F4\u0000\uF9CB\u8EA2\uEADF" + // 15405 - 15409
+ "\u8EA2\uEADC\u0000\u0000\u8EA2\uEADD\u8EA2\uEADE\u8EA2\uECE0" + // 15410 - 15414
+ "\u0000\uFBC2\u0000\u0000\u0000\uFBC1\u0000\u0000\u8EA2\uEEC3" + // 15415 - 15419
+ "\u8EA2\uEEC2\u0000\uFCA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 15420 - 15424
+ "\u0000\uFCCF\u0000\uFCF4\u0000\uFDAD\u8EA2\uF1C7\u8EA2\uF1FC" + // 15425 - 15429
+ "\u8EA2\uF1FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15430 - 15434
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15435 - 15439
+ "\u0000\u0000\u0000\u0000\u0000\uA1FA\u0000\uA1F9\u0000\u0000" + // 15440 - 15444
+ "\u0000\u0000\u0000\u0000\u0000\uA1F2\u0000\u0000\u0000\u0000" + // 15445 - 15449
+ "\u0000\uA1F6\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 15450 - 15454
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15455 - 15459
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15460 - 15464
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15465 - 15469
+ "\u0000\uA3C8\u0000\uA3C9\u0000\uA3CB\u0000\uA3CA\u0000\u0000" + // 15470 - 15474
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15475 - 15479
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1D2\u0000\u0000" + // 15480 - 15484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15485 - 15489
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15490 - 15494
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15495 - 15499
+ "\u8EAD\uA4C8\u8EAD\uA4CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 15500 - 15504
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15505 - 15509
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15510 - 15514
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15515 - 15519
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15520 - 15524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15525 - 15529
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15530 - 15534
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15535 - 15539
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15540 - 15544
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15545 - 15549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15550 - 15554
+ "\u0000\u0000\u0000\uC8CF\u0000\u0000\u0000\uD2FE\u8EA2\uB0D2" + // 15555 - 15559
+ "\u0000\uD7CD\u0000\u0000\u0000\u0000\u0000\uDCDF\u8EA2\uBFA2" + // 15560 - 15564
+ "\u8EA2\uBFA3\u8EA2\uA2EC\u0000\u0000\u0000\u0000\u8EA2\uA5A2" + // 15565 - 15569
+ "\u8EA2\uA5A3\u8EA2\uA4FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 15570 - 15574
+ "\u0000\u0000\u8EA2\uA5A1\u0000\uCBC2\u0000\u0000\u0000\uCBC3" + // 15575 - 15579
+ "\u8EA2\uA4FC\u8EA2\uA4FA\u8EA2\uA4F9\u8EA2\uA4FD\u0000\uCBC1" + // 15580 - 15584
+ "\u8EA2\uA4FE\u8EA2\uADAD\u0000\u0000\u0000\u0000\u0000\u0000" + // 15585 - 15589
+ "\u8EA2\uA8D6\u0000\uCFBF\u8EA2\uA8D5\u8EA2\uA8D7\u0000\u0000" + // 15590 - 15594
+ "\u0000\uCFBE\u8EA2\uA8DC\u0000\uCFC2\u8EA2\uA8D2\u8EA2\uA8E0" + // 15595 - 15599
+ "\u8EA2\uA8E6\u0000\uCFC9\u8EA2\uA8E3\u0000\uCFC6\u0000\u0000" + // 15600 - 15604
+ "\u8EA2\uA8D9\u8EA2\uA8DF\u8EA2\uA8E1\u0000\u0000\u8EA2\uA8D4" + // 15605 - 15609
+ "\u0000\uCFC5\u0000\uCFC0\u8EA2\uA8DA\u0000\uCFC7\u0000\uCFCA" + // 15610 - 15614
+ "\u0000\uCFC4\u0000\u0000\u0000\uCFBD\u8EA2\uA8DE\u8EA2\uA8D8" + // 15615 - 15619
+ "\u8EA2\uA8E5\u0000\uCFCC\u0000\uCFC8\u0000\uCFC3\u8EA2\uA8DD" + // 15620 - 15624
+ "\u0000\uD7F0\u8EA2\uA8DB\u0000\uCFC1\u0000\uCFCB\u0000\u0000" + // 15625 - 15629
+ "\u0000\uFCA3\u0000\u0000\u0000\uFCA2\u8EA2\uEFDD\u8EA2\uEFDE" + // 15630 - 15634
+ "\u0000\uFCF3\u8EA2\uF0DF\u0000\u0000\u0000\uFDB6\u0000\u0000" + // 15635 - 15639
+ "\u0000\uD3F4\u0000\uE2F9\u8EA2\uCFB2\u8EA2\uCFB1\u8EA2\uD5DE" + // 15640 - 15644
+ "\u8EA2\uD5DD\u0000\u0000\u0000\u0000\u0000\uF6A7\u8EA2\uE0CF" + // 15645 - 15649
+ "\u8EA2\uE0CE\u8EA2\uE4CF\u8EA2\uE4CD\u8EA2\uE4D0\u8EA2\uE4CE" + // 15650 - 15654
+ "\u0000\u0000\u0000\u0000\u0000\uF9C9\u8EA2\uE7EF\u8EA2\uE7F0" + // 15655 - 15659
+ "\u8EA2\uE7F1\u0000\u0000\u8EA2\uECDF\u0000\u0000\u8EA2\uEEC1" + // 15660 - 15664
+ "\u0000\u0000\u8EA2\uF0E0\u0000\u0000\u0000\u0000\u0000\u0000" + // 15665 - 15669
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F5" + // 15670 - 15674
+ "\u0000\u0000\u0000\u0000\u8EA2\uDBE3\u8EA2\uE0D0\u0000\u0000" + // 15675 - 15679
+ "\u0000\uD3F6\u0000\u0000\u0000\u0000\u0000\uEBE9\u0000\u0000" + // 15680 - 15684
+ "\u8EA2\uDBE4\u0000\uF7EB\u8EA2\uE4D1\u0000\uF9CA\u0000\u0000" + // 15685 - 15689
+ "\u8EA2\uEADA\u8EA2\uEADB\u0000\uFBC0\u8EA2\uC6CB\u0000\u0000" + // 15690 - 15694
+ "\u8EA2\uC6CC\u0000\u0000\u8EA2\uC6CA\u8EA2\uC6CD\u0000\u0000" + // 15695 - 15699
+ "\u0000\uE6AC\u0000\u0000\u8EA2\uC6C9\u0000\u0000\u0000\uEADB" + // 15700 - 15704
+ "\u0000\u0000\u0000\u0000\u8EA2\uD3B3\u8EA2\uD3AF\u8EA2\uD3B2" + // 15705 - 15709
+ "\u8EA2\uD3B4\u8EA2\uD3B1\u8EA2\uD3B0\u0000\u0000\u8EA2\uD9E1" + // 15710 - 15714
+ "\u8EA2\uD9E2\u8EA2\uD9E3\u0000\uF1FC\u0000\uF1FD\u8EA2\uDEDE" + // 15715 - 15719
+ "\u8EA2\uDEDD\u8EA2\uDEDF\u0000\u0000\u8EA2\uE2ED\u8EA2\uE2EC" + // 15720 - 15724
+ "\u0000\u0000\u8EA2\uE6CF\u0000\u0000\u8EA2\uE6D0\u8EA2\uE6CE" + // 15725 - 15729
+ "\u0000\u0000\u0000\uFAB0\u0000\u0000\u8EA2\uE9E2\u8EA2\uE9E3" + // 15730 - 15734
+ "\u0000\u0000\u8EA2\uEDF3\u8EA2\uEFBE\u8EA2\uF0C9\u0000\uC8E2" + // 15735 - 15739
+ "\u0000\uCBC0\u0000\u0000\u0000\uF5A9\u0000\uC8E3\u0000\u0000" + // 15740 - 15744
+ "\u8EA2\uB8DC\u8EA2\uBFC0\u0000\u0000\u0000\uFCEC\u8EA2\uA2EA" + // 15745 - 15749
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2EB\u8EA2\uA2ED" + // 15750 - 15754
+ "\u0000\uC8E4\u8EA2\uA2EE\u0000\uD7EA\u8EA2\uB2B4\u0000\uDCEF" + // 15755 - 15759
+ "\u0000\u0000\u8EA2\uBFBC\u0000\uE6AB\u0000\u0000\u0000\uEAD8" + // 15760 - 15764
+ "\u0000\uF1FB\u0000\uF5A8\u0000\uF7AE\u8EA2\uE6CD\u0000\uC8DF" + // 15765 - 15769
+ "\u0000\uCFBC\u0000\u0000\u0000\u0000\u0000\uD7EB\u8EA2\uB8D6" + // 15770 - 15774
+ "\u0000\uE1D4\u0000\u0000\u0000\uEAD9\u8EA2\uCDB2\u8EA2\uD3AE" + // 15775 - 15779
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8E0" + // 15780 - 15784
+ "\u0000\uE1D5\u8EA2\uC6C8\u0000\uEADA\u0000\uC8E1\u8EA2\uA8D1" + // 15785 - 15789
+ "\u8EA2\uADAC\u0000\uD3B4\u0000\u0000\u0000\u0000\u8EA2\uB2B6" + // 15790 - 15794
+ "\u0000\u0000\u0000\u0000\u0000\uD7EE\u0000\u0000\u0000\uD7EC" + // 15795 - 15799
+ "\u0000\uD7ED\u0000\uD7EF\u0000\u0000\u0000\u0000\u8EA2\uB2B5" + // 15800 - 15804
+ "\u0000\u0000\u0000\u0000\u8EA2\uB8DB\u8EA2\uB8D8\u8EA2\uB8DA" + // 15805 - 15809
+ "\u0000\uDCF0\u0000\uDCF2\u0000\uDCF1\u8EA2\uB8D7\u0000\uDCF3" + // 15810 - 15814
+ "\u8EA2\uB8D9\u0000\u0000\u8EA2\uBFBD\u8EA2\uBFBE\u0000\u0000" + // 15815 - 15819
+ "\u8EA2\uBFBF\u0000\uF5A2\u0000\u0000\u0000\uF5A1\u0000\uF4FD" + // 15820 - 15824
+ "\u8EA2\uDED6\u8EA2\uDED9\u0000\uF4FC\u8EA2\uDEDA\u0000\u0000" + // 15825 - 15829
+ "\u0000\uF5A5\u8EA2\uDED8\u0000\u0000\u8EA2\uDED7\u0000\uF7AC" + // 15830 - 15834
+ "\u0000\u0000\u0000\uF7AD\u8EA2\uE2EB\u8EA2\uE2E9\u8EA2\uE2EA" + // 15835 - 15839
+ "\u0000\u0000\u0000\u0000\u8EA2\uE6CC\u0000\u0000\u8EA2\uE6CB" + // 15840 - 15844
+ "\u0000\uF8E9\u8EA2\uE9E1\u0000\uFAAF\u8EA2\uE9E0\u0000\u0000" + // 15845 - 15849
+ "\u8EA2\uEBFE\u8EA2\uEDF2\u0000\uFBF0\u8EA2\uF1B2\u8EA2\uF1B3" + // 15850 - 15854
+ "\u0000\uFCC4\u0000\uC8DB\u0000\u0000\u0000\uCFBA\u8EA2\uBFB7" + // 15855 - 15859
+ "\u0000\uEAD6\u0000\uF5A7\u8EA2\uDEDC\u0000\uC8DC\u0000\u0000" + // 15860 - 15864
+ "\u0000\uD7E9\u0000\uD7E8\u8EA2\uBFB8\u0000\u0000\u0000\u0000" + // 15865 - 15869
+ "\u0000\u0000\u8EA2\uD9E0\u0000\uC8DD\u0000\uD3B3\u0000\u0000" + // 15870 - 15874
+ "\u0000\u0000\u8EA2\uBFB9\u8EA2\uBFBA\u8EA2\uBFBB\u0000\uEAD7" + // 15875 - 15879
+ "\u0000\uF1FA\u0000\uC8DE\u0000\u0000\u0000\uCFBB\u8EA2\uADAB" + // 15880 - 15884
+ "\u0000\uEAD0\u0000\u0000\u0000\uEAD5\u8EA2\uCDAD\u0000\u0000" + // 15885 - 15889
+ "\u0000\u0000\u8EA2\uCDAC\u8EA2\uCDAE\u0000\uEAD2\u8EA2\uCDAB" + // 15890 - 15894
+ "\u0000\uEAD3\u8EA2\uCDB1\u8EA2\uCDB0\u8EA2\uCDAF\u0000\u0000" + // 15895 - 15899
+ "\u0000\uEAD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15900 - 15904
+ "\u0000\u0000\u8EA2\uD3AA\u0000\u0000\u8EA2\uD3AD\u0000\uEED1" + // 15905 - 15909
+ "\u8EA2\uD3AC\u0000\uEED0\u0000\uEECC\u0000\uEECD\u0000\uEECE" + // 15910 - 15914
+ "\u8EA2\uD3A9\u8EA2\uD3A8\u0000\uEECF\u0000\u0000\u8EA2\uD3AB" + // 15915 - 15919
+ "\u8EA2\uD3A7\u0000\u0000\u0000\u0000\u8EA2\uD9D5\u8EA2\uD9DF" + // 15920 - 15924
+ "\u0000\uF1F9\u0000\uF1F8\u0000\u0000\u8EA2\uD9D9\u8EA2\uD9DB" + // 15925 - 15929
+ "\u0000\u0000\u8EA2\uD9D6\u0000\u0000\u8EA2\uD9DA\u8EA2\uD9D4" + // 15930 - 15934
+ "\u8EA2\uD9DD\u0000\uF1F7\u8EA2\uD9DC\u8EA2\uD9D8\u0000\u0000" + // 15935 - 15939
+ "\u8EA2\uD9DE\u0000\u0000\u8EA2\uD9D7\u0000\uF4FE\u8EA2\uDED5" + // 15940 - 15944
+ "\u8EA2\uDEDB\u0000\uF5A4\u0000\uF5A6\u0000\uF5A3\u8EA2\uB2B3" + // 15945 - 15949
+ "\u8EA2\uB2B1\u0000\uD7DB\u0000\u0000\u0000\u0000\u0000\uD7DD" + // 15950 - 15954
+ "\u0000\uD7E0\u0000\u0000\u0000\uD7E3\u0000\u0000\u0000\uD7E5" + // 15955 - 15959
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15960 - 15964
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15965 - 15969
+ "\u8EA2\uB8D2\u0000\uDCE9\u0000\u0000\u8EA2\uB8C9\u8EA2\uB8CB" + // 15970 - 15974
+ "\u0000\u0000\u8EA2\uB8CC\u0000\u0000\u8EA2\uB8D4\u8EA2\uB8D0" + // 15975 - 15979
+ "\u8EA2\uB8CE\u0000\u0000\u8EA2\uB8D1\u8EA2\uB8D5\u0000\uDCEA" + // 15980 - 15984
+ "\u0000\uDCEE\u8EA2\uB8CA\u0000\u0000\u8EA2\uB8D3\u0000\u0000" + // 15985 - 15989
+ "\u0000\uDCEC\u0000\u0000\u0000\uDCEB\u8EA2\uB8CF\u8EA2\uB8CD" + // 15990 - 15994
+ "\u0000\u0000\u0000\uDCE8\u0000\uDCED\u0000\u0000\u0000\u0000" + // 15995 - 15999
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16000 - 16004
+ "\u0000\u0000\u0000\uE1CE\u8EA2\uBFB6\u0000\u0000\u0000\u0000" + // 16005 - 16009
+ "\u8EA2\uBFB4\u0000\uE1D0\u0000\u0000\u0000\uD3E8\u0000\u0000" + // 16010 - 16014
+ "\u0000\uD3E9\u0000\u0000\u8EA2\uADDC\u0000\u0000\u8EA2\uADDE" + // 16015 - 16019
+ "\u8EA2\uADE0\u0000\u0000\u0000\uD3E6\u8EA2\uADDF\u0000\u0000" + // 16020 - 16024
+ "\u0000\u0000\u0000\uD3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 16025 - 16029
+ "\u0000\u0000\u0000\u0000\u8EA2\uB9F1\u8EA2\uADDB\u8EA2\uB3B6" + // 16030 - 16034
+ "\u8EA2\uB3BF\u8EA2\uB3BD\u8EA2\uB3B8\u8EA2\uB3B9\u8EA2\uB3BE" + // 16035 - 16039
+ "\u8EA2\uB3C0\u0000\uD8D6\u0000\u0000\u8EA2\uB3BB\u8EA2\uB3B7" + // 16040 - 16044
+ "\u0000\uD8D5\u0000\uD8D7\u8EA2\uB3BA\u8EA2\uB3C1\u8EA2\uB3BC" + // 16045 - 16049
+ "\u0000\u0000\u0000\u0000\u0000\uDDE5\u8EA2\uB9F4\u8EA2\uB9EC" + // 16050 - 16054
+ "\u8EA2\uB9F2\u8EA2\uB9F3\u0000\uDDE6\u0000\u0000\u8EA2\uB9EB" + // 16055 - 16059
+ "\u8EA2\uB9ED\u8EA2\uADD8\u8EA2\uB9EF\u8EA2\uB9F0\u8EA2\uB9EE" + // 16060 - 16064
+ "\u0000\uE2D3\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0FB" + // 16065 - 16069
+ "\u8EA2\uDBA2\u8EA2\uC0FC\u8EA2\uC0F9\u0000\uDDE7\u0000\uE2D5" + // 16070 - 16074
+ "\u8EA2\uC0F8\u0000\uFAAE\u0000\uC8D2\u0000\u0000\u0000\uC8D3" + // 16075 - 16079
+ "\u0000\uD7D3\u0000\uCFAF\u0000\uD7D2\u8EA2\uACF2\u0000\u0000" + // 16080 - 16084
+ "\u0000\u0000\u0000\u0000\u0000\uE1C6\u0000\uC8D4\u0000\uD3A4" + // 16085 - 16089
+ "\u8EA2\uACF3\u8EA2\uACF4\u0000\uD3A3\u0000\uD3A5\u0000\uC8D5" + // 16090 - 16094
+ "\u0000\u0000\u8EA2\uACF5\u0000\uD7D5\u8EA2\uB2AA\u0000\uD7D7" + // 16095 - 16099
+ "\u0000\uD7D4\u0000\uD7D6\u0000\u0000\u8EA2\uB8C5\u0000\uDCE5" + // 16100 - 16104
+ "\u0000\u0000\u8EA2\uB8C4\u8EA2\uB8C3\u0000\u0000\u8EA2\uC6B8" + // 16105 - 16109
+ "\u0000\u0000\u0000\u0000\u8EA2\uCDA8\u0000\u0000\u0000\uEECB" + // 16110 - 16114
+ "\u0000\u0000\u0000\uF1F6\u8EA2\uD9D2\u8EA2\uD9D1\u0000\u0000" + // 16115 - 16119
+ "\u8EA2\uDED4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBFD" + // 16120 - 16124
+ "\u0000\u0000\u0000\u0000\u0000\uC8D6\u8EA2\uA4F3\u8EA2\uA8CA" + // 16125 - 16129
+ "\u0000\uD3A6\u8EA2\uACF6\u0000\u0000\u8EA2\uB2AC\u0000\u0000" + // 16130 - 16134
+ "\u0000\u0000\u0000\u0000\u0000\uD7D8\u8EA2\uB2AB\u0000\uD7D9" + // 16135 - 16139
+ "\u8EA2\uB2A9\u0000\uD7D1\u8EA2\uB2A8\u8EA2\uB2A7\u0000\u0000" + // 16140 - 16144
+ "\u0000\uD7D0\u0000\u0000\u8EA2\uB8C0\u0000\u0000\u8EA2\uB8C2" + // 16145 - 16149
+ "\u8EA2\uB8BB\u8EA2\uB8BC\u0000\uDCE2\u8EA2\uB8BD\u0000\uDCE3" + // 16150 - 16154
+ "\u8EA2\uB8C1\u8EA2\uB8BE\u8EA2\uB8BF\u0000\uDCE4\u0000\u0000" + // 16155 - 16159
+ "\u0000\uE1C4\u0000\uE1C5\u0000\u0000\u8EA2\uBFA9\u0000\u0000" + // 16160 - 16164
+ "\u0000\u0000\u0000\u0000\u8EA2\uC6B6\u8EA2\uC6B7\u0000\u0000" + // 16165 - 16169
+ "\u8EA2\uCDA7\u0000\uEACB\u0000\uEAC9\u0000\uEACA\u8EA2\uCDA4" + // 16170 - 16174
+ "\u8EA2\uCDA5\u0000\u0000\u8EA2\uCDA6\u8EA2\uD3A3\u0000\u0000" + // 16175 - 16179
+ "\u8EA2\uD3A4\u0000\uEECA\u8EA2\uD3A1\u8EA2\uD2FE\u8EA2\uD3A2" + // 16180 - 16184
+ "\u8EA2\uD2FD\u0000\uF1F5\u8EA2\uD9D0\u0000\uF1F3\u0000\uF1F4" + // 16185 - 16189
+ "\u8EA2\uDED3\u0000\uF4F5\u8EA2\uDED2\u8EA2\uE1B4\u0000\u0000" + // 16190 - 16194
+ "\u8EA2\uE2E6\u8EA2\uE2E7\u0000\uF7A8\u0000\u0000\u0000\uF7A9" + // 16195 - 16199
+ "\u0000\uF4F6\u8EA2\uE6C8\u8EA2\uE6C9\u8EA2\uE9DE\u8EA2\uE9DC" + // 16200 - 16204
+ "\u8EA2\uE9DB\u0000\uFAAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 16205 - 16209
+ "\u8EA2\uEBF9\u8EA2\uEBF6\u8EA2\uEBF7\u0000\u0000\u8EA2\uEBF5" + // 16210 - 16214
+ "\u8EA2\uEBF8\u0000\uFAFD\u8EA2\uEBFA\u0000\u0000\u0000\uFAFC" + // 16215 - 16219
+ "\u0000\u0000\u8EA2\uEDEF\u0000\u0000\u0000\uFCC1\u0000\uFCC3" + // 16220 - 16224
+ "\u8EA2\uEFBD\u0000\uFCC2\u8EA2\uF0C7\u8EA2\uF1AF\u8EA2\uF1B1" + // 16225 - 16229
+ "\u8EA2\uF1AE\u8EA2\uF1B0\u0000\uFDB9\u0000\u0000\u0000\u0000" + // 16230 - 16234
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16235 - 16239
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16240 - 16244
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16245 - 16249
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16250 - 16254
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16255 - 16259
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16260 - 16264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16265 - 16269
+ "\u0000\uDEA4\u8EA2\uC1D4\u8EA2\uC8F3\u0000\u0000\u0000\uE7ED" + // 16270 - 16274
+ "\u8EA2\uC8F1\u0000\u0000\u0000\u0000\u8EA2\uC8F2\u0000\u0000" + // 16275 - 16279
+ "\u0000\u0000\u0000\u0000\u8EA2\uCFCA\u8EA2\uCFCB\u0000\uEBFA" + // 16280 - 16284
+ "\u0000\uEBF8\u8EA2\uCFCC\u0000\uEBF9\u8EA2\uD6B3\u0000\u0000" + // 16285 - 16289
+ "\u8EA2\uD6B6\u8EA2\uD6B0\u8EA2\uD6B7\u8EA2\uD6AF\u8EA2\uD6B1" + // 16290 - 16294
+ "\u0000\u0000\u8EA2\uD6B2\u8EA2\uDEC5\u0000\uF4ED\u8EA2\uDEBF" + // 16295 - 16299
+ "\u0000\uF4E8\u8EA2\uDECC\u0000\uF4EC\u0000\uF4E5\u8EA2\uDEC6" + // 16300 - 16304
+ "\u0000\uF4F0\u8EA2\uDEC4\u0000\u0000\u0000\u0000\u8EA2\uDEC8" + // 16305 - 16309
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2DA\u8EA2\uE2E0" + // 16310 - 16314
+ "\u0000\uF7A5\u8EA2\uE2E3\u0000\uF6FE\u0000\uF7A1\u8EA2\uE2DB" + // 16315 - 16319
+ "\u8EA2\uE2E2\u8EA2\uE2DD\u0000\uF7A6\u0000\uF7A3\u0000\u0000" + // 16320 - 16324
+ "\u8EA2\uE2D9\u0000\u0000\u0000\uF7A2\u8EA2\uE2DF\u8EA2\uE2E1" + // 16325 - 16329
+ "\u0000\uF7A4\u8EA2\uE2DE\u8EA2\uE2DC\u0000\u0000\u0000\u0000" + // 16330 - 16334
+ "\u0000\u0000\u0000\u0000\u8EA2\uE6C2\u0000\uF8E2\u0000\uF8E3" + // 16335 - 16339
+ "\u0000\uF8DF\u0000\u0000\u0000\uF8E0\u0000\u0000\u8EA2\uE6BE" + // 16340 - 16344
+ "\u8EA2\uE6BC\u0000\u0000\u8EA2\uE6C0\u0000\uF8E4\u8EA2\uE6C1" + // 16345 - 16349
+ "\u8EA2\uE6BA\u8EA2\uE6B9\u8EA2\uE6BD\u8EA2\uE6BB\u0000\uF8E1" + // 16350 - 16354
+ "\u8EA2\uE6BF\u8EA2\uE9D9\u0000\uFAAB\u0000\uFAAA\u8EA2\uE9DA" + // 16355 - 16359
+ "\u0000\u0000\u0000\uE7B8\u0000\uE7AD\u0000\u0000\u8EA2\uC8A7" + // 16360 - 16364
+ "\u0000\u0000\u0000\u0000\u0000\uE7B2\u0000\u0000\u8EA2\uC8A8" + // 16365 - 16369
+ "\u0000\uE7AB\u0000\uE7AA\u0000\u0000\u0000\uE7B5\u0000\uE7B4" + // 16370 - 16374
+ "\u0000\uE7B3\u0000\uE7B1\u0000\uE7B6\u8EA2\uC8A5\u0000\uE7AC" + // 16375 - 16379
+ "\u0000\uE7AE\u0000\uE7B0\u0000\u0000\u0000\u0000\u0000\uEBC0" + // 16380 - 16384
+ "\u0000\uEBC3\u0000\u0000\u0000\uEBC7\u0000\uEBC1\u0000\uEBC6" + // 16385 - 16389
+ "\u0000\uEBC4\u0000\u0000\u0000\uEBBF\u0000\u0000\u0000\uEBC5" + // 16390 - 16394
+ "\u0000\uEBC2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD4FA" + // 16395 - 16399
+ "\u0000\uEFCD\u0000\uEFCB\u0000\u0000\u8EA2\uD4FB\u0000\u0000" + // 16400 - 16404
+ "\u0000\uEFCE\u0000\uEFCC\u8EA2\uD4F9\u8EA2\uD4F8\u0000\u0000" + // 16405 - 16409
+ "\u0000\uF2DA\u8EA2\uD4F7\u0000\uF2D8\u0000\uF2D7\u8EA2\uDAFC" + // 16410 - 16414
+ "\u0000\uEFCF\u0000\uF2D9\u8EA2\uDAFD\u0000\uF2DC\u8EA2\uDAFE" + // 16415 - 16419
+ "\u0000\uF2DB\u0000\uF5E3\u8EA2\uDFEF\u0000\uF5E2\u8EA2\uCCEF" + // 16420 - 16424
+ "\u8EA2\uCCEE\u8EA2\uCCEB\u0000\u0000\u8EA2\uCCF3\u8EA2\uCCF0" + // 16425 - 16429
+ "\u8EA2\uCCF4\u0000\uEAC6\u0000\u0000\u8EA2\uCDA2\u0000\uEABB" + // 16430 - 16434
+ "\u8EA2\uCCF5\u8EA2\uCCF6\u0000\u0000\u8EA2\uCCF2\u0000\u0000" + // 16435 - 16439
+ "\u0000\u0000\u0000\u0000\u0000\uEAC5\u0000\u0000\u0000\u0000" + // 16440 - 16444
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2EF\u0000\uEEBB\u0000\uEEC4" + // 16445 - 16449
+ "\u0000\uEEC0\u8EA2\uD2EC\u0000\u0000\u0000\uEEBD\u0000\uEEC1" + // 16450 - 16454
+ "\u8EA2\uD2F8\u0000\uEEB7\u8EA2\uD2F0\u0000\u0000\u0000\uEEBF" + // 16455 - 16459
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2F3\u8EA2\uD2EE\u0000\uEEBE" + // 16460 - 16464
+ "\u0000\uEEC2\u8EA2\uD2ED\u0000\u0000\u0000\uEEBC\u0000\u0000" + // 16465 - 16469
+ "\u8EA2\uD2F7\u0000\uEEB9\u8EA2\uD2F6\u8EA2\uD2F5\u0000\uEEC5" + // 16470 - 16474
+ "\u8EA2\uD0BB\u0000\uEEB8\u0000\u0000\u8EA2\uD2F4\u8EA2\uD2EB" + // 16475 - 16479
+ "\u0000\u0000\u0000\uEEC6\u8EA2\uD2F2\u0000\uEEBA\u0000\u0000" + // 16480 - 16484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1BA\u8EAD\uA1BB" + // 16485 - 16489
+ "\u0000\u0000\u0000\u0000\u8EAD\uA1B8\u8EAD\uA1B9\u0000\u0000" + // 16490 - 16494
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16495 - 16499
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16500 - 16504
+ "\u0000\u0000\u0000\u0000\u0000\uA2D3\u0000\u0000\u0000\u0000" + // 16505 - 16509
+ "\u0000\u0000\u0000\uA2D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16510 - 16514
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16515 - 16519
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C7\u0000\u0000" + // 16520 - 16524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16525 - 16529
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16530 - 16534
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16535 - 16539
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16540 - 16544
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2CA" + // 16545 - 16549
+ "\u8EA2\uC5FE\u0000\uE5F1\u0000\u0000\u8EA2\uC6A7\u8EA2\uC6AB" + // 16550 - 16554
+ "\u8EA2\uC6A3\u8EA2\uC5FD\u0000\u0000\u8EA2\uC5FC\u0000\u0000" + // 16555 - 16559
+ "\u0000\u0000\u0000\u0000\u8EA2\uC6A9\u8EA2\uC6A1\u8EA2\uC6A5" + // 16560 - 16564
+ "\u0000\uE5F2\u0000\u0000\u0000\uE5F0\u8EA2\uC6AD\u0000\uE5EE" + // 16565 - 16569
+ "\u8EA2\uC6AA\u0000\u0000\u8EA2\uCCF9\u0000\u0000\u0000\u0000" + // 16570 - 16574
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB7\u8EA2\uCCF1" + // 16575 - 16579
+ "\u0000\uEEC3\u8EA2\uCCFB\u0000\uEABA\u8EA2\uCDA1\u0000\uEAC0" + // 16580 - 16584
+ "\u8EA2\uCCEC\u0000\u0000\u0000\u0000\u8EA2\uCCFC\u8EA2\uCCE9" + // 16585 - 16589
+ "\u0000\u0000\u8EA2\uCCFE\u8EA2\uCCED\u0000\u0000\u0000\uEAC7" + // 16590 - 16594
+ "\u0000\uEAC4\u8EA2\uCCFD\u8EA2\uCCF7\u0000\uEAB6\u0000\uEABE" + // 16595 - 16599
+ "\u0000\uEABD\u0000\u0000\u0000\uEABC\u0000\uEAC2\u0000\u0000" + // 16600 - 16604
+ "\u8EA2\uCCEA\u0000\uEAC3\u8EA2\uCCF8\u0000\uEABF\u0000\uEAB5" + // 16605 - 16609
+ "\u8EA2\uCCFA\u0000\uEAB8\u0000\uEAB9\u0000\uEAC1\u0000\uDCD7" + // 16610 - 16614
+ "\u8EA2\uB8AF\u0000\uDCDC\u0000\uDCD2\u0000\uDCDA\u8EA2\uB8AC" + // 16615 - 16619
+ "\u0000\uDCD1\u8EA2\uB8B0\u0000\u0000\u0000\u0000\u8EA2\uB8B3" + // 16620 - 16624
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFA1\u8EA2\uBEF6" + // 16625 - 16629
+ "\u0000\uE1B8\u8EA2\uBEFD\u8EA2\uBEFA\u8EA2\uBEF2\u8EA2\uBEFB" + // 16630 - 16634
+ "\u0000\uE1BA\u8EA2\uBEF3\u0000\u0000\u8EA2\uBEEF\u0000\u0000" + // 16635 - 16639
+ "\u0000\u0000\u0000\uE5F3\u8EA2\uBEF8\u0000\u0000\u0000\uE1B7" + // 16640 - 16644
+ "\u8EA2\uBEFE\u0000\u0000\u0000\uE1BE\u0000\uE1C0\u8EA2\uBEF1" + // 16645 - 16649
+ "\u0000\u0000\u0000\u0000\u0000\uE1BF\u8EA2\uBEF4\u0000\uE1B9" + // 16650 - 16654
+ "\u8EA2\uBEFC\u8EA2\uBEF5\u8EA2\uBEF9\u0000\u0000\u8EA2\uBEF7" + // 16655 - 16659
+ "\u0000\uE1BC\u8EA2\uBEF0\u0000\uE1C1\u0000\uDCD3\u0000\uE1BD" + // 16660 - 16664
+ "\u0000\uE1C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16665 - 16669
+ "\u0000\u0000\u0000\uE5EF\u8EA2\uC6A4\u8EA2\uC6A6\u8EA2\uC6A8" + // 16670 - 16674
+ "\u8EA2\uC6AC\u0000\u0000\u8EA2\uC6A2\u0000\uD2F9\u8EA2\uACED" + // 16675 - 16679
+ "\u0000\uD2F7\u8EA2\uACEB\u0000\uD2FC\u0000\uD2F8\u0000\uD2FD" + // 16680 - 16684
+ "\u0000\uD2FB\u8EA2\uACEC\u0000\uD2FA\u0000\uD7C2\u0000\uD7C1" + // 16685 - 16689
+ "\u8EA2\uB1FC\u0000\uD7CA\u8EA2\uB1F5\u8EA2\uB1FB\u0000\uD7C6" + // 16690 - 16694
+ "\u8EA2\uB1F4\u8EA2\uB1FA\u8EA2\uB1F8\u0000\uD7C5\u0000\uD7C7" + // 16695 - 16699
+ "\u8EA2\uB1F7\u0000\uD7C0\u8EA2\uB1F6\u0000\uD7CB\u0000\uD7C8" + // 16700 - 16704
+ "\u0000\uD7CC\u0000\uD7C9\u8EA2\uB1F3\u8EA2\uB1F2\u8EA2\uB1F9" + // 16705 - 16709
+ "\u0000\uD7C3\u0000\uD7BF\u0000\uD7C4\u0000\u0000\u0000\u0000" + // 16710 - 16714
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8B5\u8EA2\uB8AE" + // 16715 - 16719
+ "\u0000\u0000\u0000\uE1BB\u8EA2\uB8AD\u0000\u0000\u0000\uDCD4" + // 16720 - 16724
+ "\u0000\uDCDB\u0000\uDCD8\u0000\uDCDE\u0000\uDCDD\u0000\uDCD9" + // 16725 - 16729
+ "\u0000\u0000\u8EA2\uB8A7\u8EA2\uB8AA\u0000\u0000\u8EA2\uB8A9" + // 16730 - 16734
+ "\u0000\uDCD5\u8EA2\uB8AB\u8EA2\uB8B4\u0000\uDCD6\u8EA2\uB8A8" + // 16735 - 16739
+ "\u8EA2\uB8B1\u8EA2\uB8B2\u8EA2\uACE9\u8EA2\uACEA\u0000\u0000" + // 16740 - 16744
+ "\u0000\u0000\u8EA2\uB1EB\u8EA2\uB1F1\u0000\u0000\u0000\u0000" + // 16745 - 16749
+ "\u8EA2\uB1EF\u0000\uD7BE\u8EA2\uB1ED\u0000\u0000\u8EA2\uB1EE" + // 16750 - 16754
+ "\u8EA2\uB1F0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1EC" + // 16755 - 16759
+ "\u0000\uDCCE\u0000\u0000\u8EA2\uB8A3\u0000\uDCD0\u8EA2\uB8A5" + // 16760 - 16764
+ "\u0000\uDCCF\u8EA2\uB8A4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16765 - 16769
+ "\u0000\u0000\u0000\u0000\u8EA2\uBEEC\u0000\uE1B5\u0000\u0000" + // 16770 - 16774
+ "\u8EA2\uBEEE\u8EA2\uBEEB\u8EA2\uB8A6\u0000\u0000\u0000\uE1B6" + // 16775 - 16779
+ "\u0000\u0000\u0000\u0000\u8EA2\uBEED\u0000\u0000\u0000\u0000" + // 16780 - 16784
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5FB" + // 16785 - 16789
+ "\u0000\u0000\u0000\uE5EB\u8EA2\uC5F9\u0000\uE5EC\u8EA2\uC5FA" + // 16790 - 16794
+ "\u0000\uE5ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB2" + // 16795 - 16799
+ "\u8EA2\uCCE8\u8EA2\uCCE5\u8EA2\uCCE7\u0000\uEAB3\u0000\uEAB4" + // 16800 - 16804
+ "\u8EA2\uCCE6\u0000\uF8DE\u0000\u0000\u0000\u0000\u0000\uFAA5" + // 16805 - 16809
+ "\u0000\u0000\u8EA2\uE9D7\u0000\u0000\u8EA2\uE9D6\u8EA2\uE9D4" + // 16810 - 16814
+ "\u8EA2\uE9D3\u8EA2\uE9D5\u0000\u0000\u0000\uFAA4\u0000\uFAA6" + // 16815 - 16819
+ "\u0000\u0000\u0000\u0000\u0000\uFAFB\u0000\u0000\u0000\u0000" + // 16820 - 16824
+ "\u8EA2\uEBF3\u8EA2\uEBF2\u0000\u0000\u0000\u0000\u8EA2\uEDE8" + // 16825 - 16829
+ "\u0000\u0000\u8EA2\uEDEA\u8EA2\uEDEC\u8EA2\uEDEB\u8EA2\uEDE9" + // 16830 - 16834
+ "\u0000\u0000\u0000\u0000\u0000\uFBED\u0000\uFBEC\u0000\u0000" + // 16835 - 16839
+ "\u0000\u0000\u0000\uFCBF\u0000\uFCBE\u0000\uFCC0\u8EA2\uEFBC" + // 16840 - 16844
+ "\u8EA2\uEFBB\u0000\u0000\u8EA2\uF1AB\u8EA2\uF0C6\u8EA2\uF1AC" + // 16845 - 16849
+ "\u0000\uFDA5\u0000\u0000\u0000\uFDA6\u8EA2\uF1DC\u0000\u0000" + // 16850 - 16854
+ "\u0000\u0000\u0000\uFDCB\u0000\uC8CD\u0000\u0000\u8EA2\uA8C8" + // 16855 - 16859
+ "\u0000\u0000\u0000\u0000\u8EA2\uACE6\u8EA2\uACE7\u8EA2\uACE5" + // 16860 - 16864
+ "\u0000\u0000\u0000\u0000\u0000\uD2F6\u0000\u0000\u8EA2\uACE8" + // 16865 - 16869
+ "\u8EA2\uDEAA\u8EA2\uDEB4\u8EA2\uDEB1\u8EA2\uDEB3\u0000\u0000" + // 16870 - 16874
+ "\u8EA2\uDEA7\u8EA2\uDEB7\u0000\uF4D6\u0000\u0000\u8EA2\uDEB2" + // 16875 - 16879
+ "\u8EA2\uDEBB\u8EA2\uDEAF\u0000\uF4DA\u0000\uF4D7\u8EA2\uDEAD" + // 16880 - 16884
+ "\u8EA2\uDEA8\u8EA2\uDEBA\u0000\uF1DF\u0000\u0000\u0000\u0000" + // 16885 - 16889
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16890 - 16894
+ "\u8EA2\uE2CF\u0000\u0000\u0000\u0000\u8EA2\uE2CD\u8EA2\uE2D3" + // 16895 - 16899
+ "\u0000\uF6FA\u8EA2\uE2D1\u8EA2\uE2D0\u0000\uF6FC\u8EA2\uE2D6" + // 16900 - 16904
+ "\u0000\uF6FB\u0000\u0000\u8EA2\uE2D7\u8EA2\uE2D4\u0000\uF6F8" + // 16905 - 16909
+ "\u8EA2\uE2D5\u8EA2\uE2CE\u0000\uF6F9\u0000\uF6F7\u8EA2\uE6B5" + // 16910 - 16914
+ "\u8EA2\uE2D2\u0000\u0000\u0000\u0000\u8EA2\uE2D8\u0000\u0000" + // 16915 - 16919
+ "\u0000\u0000\u8EA2\uE6B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 16920 - 16924
+ "\u0000\uF8DD\u0000\uF8DB\u8EA2\uE6B4\u0000\u0000\u8EA2\uE6B6" + // 16925 - 16929
+ "\u8EA2\uE6B3\u0000\uF8DC\u0000\uF8D9\u0000\uF8DA\u0000\uE5E7" + // 16930 - 16934
+ "\u0000\uEEB3\u0000\u0000\u0000\u0000\u0000\uEEAF\u0000\u0000" + // 16935 - 16939
+ "\u0000\uEEB1\u0000\uEEB2\u0000\u0000\u0000\uF1E0\u8EA2\uD2E5" + // 16940 - 16944
+ "\u8EA2\uD2DF\u0000\uEEB5\u0000\u0000\u8EA2\uD2E2\u0000\u0000" + // 16945 - 16949
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9AC" + // 16950 - 16954
+ "\u8EA2\uD9A7\u0000\u0000\u0000\u0000\u8EA2\uD9B1\u0000\uF1DE" + // 16955 - 16959
+ "\u8EA2\uD9A9\u0000\uF1E2\u8EA2\uD9AF\u8EA2\uD9A6\u8EA2\uD9A3" + // 16960 - 16964
+ "\u8EA2\uD9B2\u0000\uF4DB\u0000\uF1E3\u8EA2\uD9AE\u8EA2\uD9A4" + // 16965 - 16969
+ "\u0000\uF1E1\u8EA2\uD9A8\u0000\uF1E5\u8EA2\uD9A5\u8EA2\uD9AA" + // 16970 - 16974
+ "\u0000\uF1E4\u8EA2\uD9AD\u8EA2\uD9B0\u0000\u0000\u0000\u0000" + // 16975 - 16979
+ "\u0000\u0000\u0000\u0000\u8EA2\uDEB8\u8EA2\uDEB9\u8EA2\uDEA9" + // 16980 - 16984
+ "\u8EA2\uDEB0\u8EA2\uDEAE\u0000\u0000\u0000\u0000\u0000\uF4D9" + // 16985 - 16989
+ "\u8EA2\uDEB5\u8EA2\uD9AB\u0000\u0000\u8EA2\uDEAC\u0000\u0000" + // 16990 - 16994
+ "\u8EA2\uDEB6\u0000\uF4D8\u8EA2\uDEAB\u8EA2\uBEE8\u0000\u0000" + // 16995 - 16999
+ "\u0000\u0000\u0000\u0000\u8EA2\uBEE4\u8EA2\uBEEA\u0000\uE1AD" + // 17000 - 17004
+ "\u8EA2\uBEE3\u8EA2\uBEE5\u0000\uE1AB\u8EA2\uBEE2\u0000\uE1B2" + // 17005 - 17009
+ "\u8EA2\uBEE6\u0000\uE1B1\u8EA2\uBEE7\u0000\uE1B3\u0000\uE1AE" + // 17010 - 17014
+ "\u0000\uE1B4\u0000\uE1AF\u0000\u0000\u0000\uE1B0\u0000\u0000" + // 17015 - 17019
+ "\u0000\uE1AC\u0000\u0000\u8EA2\uBEE9\u0000\u0000\u0000\u0000" + // 17020 - 17024
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17025 - 17029
+ "\u0000\uE5E8\u8EA2\uC5F5\u0000\u0000\u8EA2\uC5F8\u8EA2\uC5EC" + // 17030 - 17034
+ "\u8EA2\uC5F1\u8EA2\uC5EB\u0000\uE5EA\u0000\u0000\u8EA2\uC5EF" + // 17035 - 17039
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5ED\u0000\uE5E9" + // 17040 - 17044
+ "\u0000\u0000\u8EA2\uC5F4\u8EA2\uC5F3\u8EA2\uC5F0\u8EA2\uC5F2" + // 17045 - 17049
+ "\u8EA2\uC5EE\u0000\uEAAA\u8EA2\uC5F7\u0000\uE5E6\u8EA2\uC5F6" + // 17050 - 17054
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17055 - 17059
+ "\u0000\u0000\u0000\u0000\u0000\uC5FD\u0000\uC5FE\u0000\u0000" + // 17060 - 17064
+ "\u0000\uC7CA\u8EA2\uA3B3\u8EA2\uA5D6\u8EA2\uA5D7\u0000\u0000" + // 17065 - 17069
+ "\u0000\uD0B1\u8EA2\uAEB1\u0000\uD9B1\u0000\uD9B0\u8EA2\uBAC7" + // 17070 - 17074
+ "\u8EA2\uBAC6\u0000\u0000\u0000\u0000\u0000\uC4B1\u0000\uC5A7" + // 17075 - 17079
+ "\u0000\uC6A1\u0000\u0000\u0000\uD9B2\u8EA2\uA1A4\u0000\u0000" + // 17080 - 17084
+ "\u8EA2\uA1CD\u0000\uC6A2\u0000\u0000\u8EA2\uA2A2\u0000\uC7CC" + // 17085 - 17089
+ "\u0000\uC7CB\u8EA2\uA2A1\u0000\uC9BA\u0000\u0000\u0000\u0000" + // 17090 - 17094
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4CD" + // 17095 - 17099
+ "\u0000\u0000\u0000\u0000\u8EA2\uB3F2\u0000\u0000\u0000\uE3BE" + // 17100 - 17104
+ "\u8EA2\uC9AC\u0000\uE8A4\u0000\u0000\u0000\u0000\u8EA2\uD6C5" + // 17105 - 17109
+ "\u0000\u0000\u0000\u0000\u8EA2\uE8EA\u0000\uA7B7\u0000\uC5A8" + // 17110 - 17114
+ "\u0000\u0000\u0000\u0000\u8EA2\uA5D8\u8EA2\uA9B6\u0000\uD9B5" + // 17115 - 17119
+ "\u0000\uD9B3\u8EA2\uACE3\u8EA2\uACE4\u0000\u0000\u0000\u0000" + // 17120 - 17124
+ "\u8EA2\uB1E2\u8EA2\uB1E4\u0000\uD7BC\u0000\u0000\u8EA2\uB1E6" + // 17125 - 17129
+ "\u8EA2\uB1E9\u8EA2\uB1E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17130 - 17134
+ "\u8EA2\uB1E8\u8EA2\uB1E5\u8EA2\uB1E1\u0000\uD7BD\u8EA2\uB1EA" + // 17135 - 17139
+ "\u8EA2\uB1E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17140 - 17144
+ "\u8EA2\uB7F6\u0000\uDCCB\u8EA2\uB8A1\u0000\uDCC8\u0000\u0000" + // 17145 - 17149
+ "\u8EA2\uB7F8\u0000\uDCCC\u0000\u0000\u0000\uDCC6\u0000\u0000" + // 17150 - 17154
+ "\u8EA2\uB7F3\u8EA2\uB8A2\u8EA2\uB7F4\u8EA2\uB7F1\u0000\uDCCA" + // 17155 - 17159
+ "\u0000\u0000\u0000\uDCC7\u0000\u0000\u8EA2\uB7F7\u8EA2\uB7FA" + // 17160 - 17164
+ "\u0000\uDCC9\u8EA2\uB7FB\u0000\uDCCD\u8EA2\uB7FC\u8EA2\uB7F2" + // 17165 - 17169
+ "\u8EA2\uB7F9\u8EA2\uB7FD\u8EA2\uB7F5\u8EA2\uB7F0\u8EA2\uB7EE" + // 17170 - 17174
+ "\u0000\u0000\u0000\u0000\u8EA2\uB7FE\u0000\u0000\u0000\u0000" + // 17175 - 17179
+ "\u8EA2\uB7EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17180 - 17184
+ "\u8EA2\uBFAF\u8EA2\uC6C6\u0000\u0000\u0000\uE1CF\u8EA2\uBFB3" + // 17185 - 17189
+ "\u0000\u0000\u0000\u0000\u8EA2\uBFB0\u0000\uE1CB\u0000\uE1D1" + // 17190 - 17194
+ "\u8EA2\uBFB5\u0000\uE1CD\u8EA2\uBFB2\u0000\uEACF\u0000\uE1CC" + // 17195 - 17199
+ "\u8EA2\uBFB1\u0000\uE1D2\u0000\uE1CA\u0000\uE1C9\u0000\u0000" + // 17200 - 17204
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6BE" + // 17205 - 17209
+ "\u8EA2\uC6BC\u0000\u0000\u8EA2\uC6C2\u0000\u0000\u8EA2\uC6BA" + // 17210 - 17214
+ "\u8EA2\uC6C7\u8EA2\uC6BF\u0000\u0000\u8EA2\uC6B9\u0000\uE6A4" + // 17215 - 17219
+ "\u0000\uE6AA\u8EA2\uC6C4\u0000\u0000\u8EA2\uC6BD\u0000\u0000" + // 17220 - 17224
+ "\u0000\uE6A7\u0000\u0000\u0000\u0000\u0000\uE6A5\u8EA2\uC6C5" + // 17225 - 17229
+ "\u0000\uE6A2\u0000\uE6A1\u8EA2\uC6C0\u0000\uE6A6\u0000\uE1D3" + // 17230 - 17234
+ "\u0000\u0000\u8EA2\uC6C3\u8EA2\uC6BB\u0000\uE6A3\u0000\uE6A8" + // 17235 - 17239
+ "\u0000\uE6A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17240 - 17244
+ "\u0000\uEAD4\u8EA2\uDEA5\u8EA2\uDEA6\u0000\u0000\u0000\u0000" + // 17245 - 17249
+ "\u0000\uF6F5\u0000\uF6F6\u0000\u0000\u0000\uFAA2\u0000\u0000" + // 17250 - 17254
+ "\u0000\u0000\u0000\uFCBD\u0000\uC7A1\u0000\u0000\u0000\u0000" + // 17255 - 17259
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uACE2\u0000\u0000" + // 17260 - 17264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17265 - 17269
+ "\u8EA2\uB1E0\u0000\uD7BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 17270 - 17274
+ "\u0000\u0000\u0000\u0000\u0000\uDDFE\u0000\uDDFD\u0000\u0000" + // 17275 - 17279
+ "\u0000\u0000\u0000\uE1AA\u8EA2\uBEE1\u0000\uE1A9\u8EA2\uBEE0" + // 17280 - 17284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5EA" + // 17285 - 17289
+ "\u0000\u0000\u0000\uEAA5\u8EA2\uCCD4\u0000\uEAA6\u0000\u0000" + // 17290 - 17294
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17295 - 17299
+ "\u0000\uFAA3\u8EA2\uE9D2\u0000\u0000\u0000\uC8CC\u0000\uCFAA" + // 17300 - 17304
+ "\u8EA2\uA8C7\u0000\u0000\u0000\uD2F5\u0000\u0000\u0000\uD2F4" + // 17305 - 17309
+ "\u8EA2\uACE0\u0000\uD2F3\u0000\u0000\u0000\u0000\u0000\uD7B9" + // 17310 - 17314
+ "\u8EA2\uB1DB\u8EA2\uB1D9\u8EA2\uB1DF\u0000\uD7BA\u8EA2\uB1DA" + // 17315 - 17319
+ "\u8EA2\uB1DE\u8EA2\uB1DC\u8EA2\uB1DD\u0000\u0000\u0000\u0000" + // 17320 - 17324
+ "\u8EA2\uB7EB\u8EA2\uB7ED\u0000\u0000\u0000\uDCC4\u0000\u0000" + // 17325 - 17329
+ "\u8EA2\uB7EC\u0000\uDCC5\u0000\uE1A8\u0000\uE1A7\u0000\uE1A6" + // 17330 - 17334
+ "\u8EA2\uBEDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17335 - 17339
+ "\u8EA2\uC5E9\u0000\uE5E4\u0000\uE5E5\u0000\u0000\u8EA2\uC5E8" + // 17340 - 17344
+ "\u8EA2\uC5E7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17345 - 17349
+ "\u8EA2\uCCD1\u0000\uEAA4\u0000\uEAA3\u8EA2\uCCD2\u8EA2\uCCD3" + // 17350 - 17354
+ "\u0000\u0000\u0000\uEEAC\u0000\uEEAB\u0000\u0000\u8EA2\uD9A1" + // 17355 - 17359
+ "\u8EA2\uD2DB\u8EA2\uD2DD\u8EA2\uD2DC\u8EA2\uD8FE\u8EA2\uD8FC" + // 17360 - 17364
+ "\u8EA2\uD9A2\u8EA2\uD8FD\u0000\u0000\u0000\uF1DD\u0000\u0000" + // 17365 - 17369
+ "\u0000\u0000\u0000\u0000\u8EA2\uDEA4\u0000\uF4D5\u0000\uEEA7" + // 17370 - 17374
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD8F9\u0000\u0000" + // 17375 - 17379
+ "\u0000\uF1DA\u8EA2\uD8FB\u8EA2\uD8FA\u0000\u0000\u8EA2\uCCCC" + // 17380 - 17384
+ "\u0000\uF1DC\u0000\uF1DB\u0000\uF1D8\u0000\uF1D9\u0000\u0000" + // 17385 - 17389
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEA2" + // 17390 - 17394
+ "\u0000\u0000\u8EA2\uDDFE\u0000\uF4D4\u8EA2\uDEA1\u0000\u0000" + // 17395 - 17399
+ "\u8EA2\uDEA3\u8EA2\uDDFD\u8EA2\uDDFC\u0000\u0000\u0000\u0000" + // 17400 - 17404
+ "\u8EA2\uE2CC\u0000\uF6F4\u0000\uF6F2\u0000\uF6F3\u0000\u0000" + // 17405 - 17409
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE6B0\u8EA2\uE6B1" + // 17410 - 17414
+ "\u0000\uF8D8\u0000\u0000\u0000\uF8D7\u8EA2\uE9D0\u8EA2\uE9D1" + // 17415 - 17419
+ "\u8EA2\uE9CF\u0000\u0000\u8EA2\uEDE6\u8EA2\uEDE7\u0000\u0000" + // 17420 - 17424
+ "\u0000\u0000\u0000\uC6FE\u8EA2\uA2E8\u0000\uCBB6\u0000\u0000" + // 17425 - 17429
+ "\u8EA2\uA8C5\u0000\uCFA9\u0000\uCFA8\u8EA2\uA8C6\u0000\u0000" + // 17430 - 17434
+ "\u0000\u0000\u8EA2\uACE1\u0000\uD2F2\u0000\uE1A5\u0000\u0000" + // 17435 - 17439
+ "\u8EA2\uBEDA\u8EA2\uBEDC\u8EA2\uBEDE\u0000\uE1A4\u0000\u0000" + // 17440 - 17444
+ "\u0000\u0000\u0000\uE1A2\u0000\u0000\u8EA2\uBEDB\u0000\uE1A3" + // 17445 - 17449
+ "\u8EA2\uBEDD\u0000\uE1A1\u0000\u0000\u0000\u0000\u8EA2\uC5E6" + // 17450 - 17454
+ "\u8EA2\uC5DD\u8EA2\uC5E0\u8EA2\uC5E4\u0000\uE5E1\u8EA2\uC5E2" + // 17455 - 17459
+ "\u0000\u0000\u8EA2\uC5E1\u8EA2\uC5DE\u8EA2\uC5DF\u0000\uE5DF" + // 17460 - 17464
+ "\u8EA2\uC5E5\u0000\uE5DE\u0000\u0000\u0000\uE5E3\u0000\uE5E2" + // 17465 - 17469
+ "\u0000\uE5E0\u0000\u0000\u8EA2\uC5E3\u0000\u0000\u0000\u0000" + // 17470 - 17474
+ "\u0000\u0000\u8EA2\uCCD0\u0000\u0000\u8EA2\uCCCF\u0000\u0000" + // 17475 - 17479
+ "\u0000\u0000\u8EA2\uCCCB\u0000\u0000\u0000\u0000\u0000\uEAA1" + // 17480 - 17484
+ "\u8EA2\uCCCE\u8EA2\uCCCD\u0000\uEAA2\u0000\u0000\u0000\u0000" + // 17485 - 17489
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEEA9\u0000\u0000" + // 17490 - 17494
+ "\u8EA2\uD2DA\u0000\u0000\u0000\uEEAA\u0000\uEEA6\u0000\uEEA8" + // 17495 - 17499
+ "\u0000\u0000\u0000\uEEA5\u0000\uCBB4\u0000\uCBB3\u0000\u0000" + // 17500 - 17504
+ "\u0000\u0000\u0000\u0000\u8EA2\uA8C4\u0000\u0000\u0000\u0000" + // 17505 - 17509
+ "\u0000\uCFA7\u0000\uCFA6\u0000\u0000\u0000\uD2F1\u0000\u0000" + // 17510 - 17514
+ "\u8EA2\uACDC\u8EA2\uACDF\u8EA2\uACDD\u0000\u0000\u0000\uD2EF" + // 17515 - 17519
+ "\u0000\uD2F0\u0000\u0000\u0000\u0000\u8EA2\uACDB\u8EA2\uACDE" + // 17520 - 17524
+ "\u0000\u0000\u0000\uD7B8\u0000\u0000\u0000\u0000\u0000\u0000" + // 17525 - 17529
+ "\u8EA2\uB1D6\u8EA2\uB1D8\u8EA2\uB1D7\u0000\uD7B5\u8EA2\uB1D2" + // 17530 - 17534
+ "\u0000\u0000\u0000\u0000\u0000\uD7B3\u0000\uD7B2\u0000\u0000" + // 17535 - 17539
+ "\u0000\uD7B6\u0000\uD7B4\u0000\u0000\u0000\uD7B7\u8EA2\uB1D5" + // 17540 - 17544
+ "\u8EA2\uB1D0\u8EA2\uB1D1\u8EA2\uB1D4\u8EA2\uB1D3\u0000\u0000" + // 17545 - 17549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17550 - 17554
+ "\u0000\u0000\u8EA2\uB7E9\u8EA2\uB7EA\u8EA2\uB7E8\u0000\u0000" + // 17555 - 17559
+ "\u8EA2\uB7E7\u0000\uDCC3\u0000\u0000\u0000\u0000\u0000\u0000" + // 17560 - 17564
+ "\u0000\u0000\u8EA2\uB8C7\u0000\u0000\u0000\u0000\u0000\uDCE7" + // 17565 - 17569
+ "\u8EA2\uB8C6\u8EA2\uB8C8\u0000\u0000\u0000\uDCE6\u0000\u0000" + // 17570 - 17574
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFAB\u8EA2\uBFAC" + // 17575 - 17579
+ "\u8EA2\uBFAA\u0000\uE1C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17580 - 17584
+ "\u0000\uE5FB\u0000\u0000\u0000\uE5FC\u0000\u0000\u0000\uEACD" + // 17585 - 17589
+ "\u0000\u0000\u8EA2\uCDAA\u8EA2\uCDA9\u0000\uEACC\u0000\u0000" + // 17590 - 17594
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3A5" + // 17595 - 17599
+ "\u0000\u0000\u0000\u0000\u8EA2\uD3A6\u0000\u0000\u0000\u0000" + // 17600 - 17604
+ "\u0000\u0000\u0000\u0000\u8EA2\uD9D3\u0000\u0000\u0000\u0000" + // 17605 - 17609
+ "\u0000\uF4FA\u0000\uF4F9\u0000\uF4F7\u0000\uF4F8\u0000\uF4FB" + // 17610 - 17614
+ "\u0000\u0000\u8EA2\uE2E8\u0000\uF7AB\u0000\uF7AA\u8EA2\uE6CA" + // 17615 - 17619
+ "\u8EA2\uE9DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF" + // 17620 - 17624
+ "\u0000\uFBEE\u0000\uC8D7\u0000\uCFA4\u0000\uCFA5\u8EA2\uA8C2" + // 17625 - 17629
+ "\u0000\u0000\u8EA2\uACDA\u8EA2\uACD9\u0000\uD2E9\u0000\uD2EC" + // 17630 - 17634
+ "\u0000\uD2EB\u0000\uD2EA\u8EA2\uACD6\u8EA2\uACD8\u8EA2\uACD7" + // 17635 - 17639
+ "\u0000\u0000\u0000\u0000\u8EA2\uB1CB\u0000\uD7AA\u8EA2\uB1CF" + // 17640 - 17644
+ "\u8EA2\uB1CE\u8EA2\uB1CD\u8EA2\uB1C9\u0000\uD7A9\u0000\uD7AD" + // 17645 - 17649
+ "\u0000\uD7B0\u0000\u0000\u0000\u0000\u0000\uD7B1\u8EA2\uB1CA" + // 17650 - 17654
+ "\u8EA2\uB1CC\u0000\uD7AF\u0000\uD7AE\u0000\uD7AC\u0000\uD7AB" + // 17655 - 17659
+ "\u8EA2\uB7E5\u0000\u0000\u8EA2\uB7E3\u8EA2\uB7DF\u0000\uDCC0" + // 17660 - 17664
+ "\u0000\u0000\u8EA2\uB7E0\u0000\uDCC1\u8EA2\uB7E1\u8EA2\uB7E2" + // 17665 - 17669
+ "\u8EA2\uB7E4\u0000\u0000\u0000\uDCC2\u0000\u0000\u0000\u0000" + // 17670 - 17674
+ "\u8EA2\uBED9\u0000\u0000\u8EA2\uBED8\u8EA2\uBED7\u8EA2\uBED6" + // 17675 - 17679
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5DC" + // 17680 - 17684
+ "\u0000\uE5D9\u0000\u0000\u8EA2\uC5D9\u8EA2\uC5DB\u0000\u0000" + // 17685 - 17689
+ "\u0000\uE5DA\u8EA2\uC5D6\u0000\u0000\u0000\u0000\u8EA2\uC5D3" + // 17690 - 17694
+ "\u8EA2\uC5CE\u8EA2\uC5D0\u8EA2\uC5D1\u8EA2\uC5CA\u0000\u0000" + // 17695 - 17699
+ "\u0000\uE5D4\u0000\u0000\u0000\u0000\u0000\uE5D3\u0000\u0000" + // 17700 - 17704
+ "\u0000\uE5CF\u8EA2\uC5CD\u0000\u0000\u0000\uE5D6\u0000\u0000" + // 17705 - 17709
+ "\u0000\uE5D7\u8EA2\uC5CC\u8EA2\uC5CF\u8EA2\uC5D7\u0000\uE5D1" + // 17710 - 17714
+ "\u0000\uE5D2\u8EA2\uC5D5\u8EA2\uC5CB\u0000\u0000\u0000\u0000" + // 17715 - 17719
+ "\u0000\u0000\u8EA2\uCCBA\u0000\uE9F7\u8EA2\uCCBC\u8EA2\uC5D2" + // 17720 - 17724
+ "\u8EA2\uCCBE\u0000\uE9FB\u8EA2\uCCBF\u8EA2\uCCBB\u0000\u0000" + // 17725 - 17729
+ "\u0000\uE9F8\u8EA2\uCCB7\u0000\uE9FA\u8EA2\uCCB4\u8EA2\uCCB9" + // 17730 - 17734
+ "\u8EA2\uCCBD\u8EA2\uCCB6\u0000\u0000\u0000\u0000\u0000\uE5D0" + // 17735 - 17739
+ "\u0000\u0000\u8EA2\uCCB3\u0000\uE9F9\u8EA2\uCCB5\u0000\u0000" + // 17740 - 17744
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDFD" + // 17745 - 17749
+ "\u8EA2\uD2C9\u0000\uEEA3\u0000\u0000\u0000\uEEA1\u0000\u0000" + // 17750 - 17754
+ "\u0000\uFAC7\u0000\uFAC9\u0000\u0000\u8EA2\uEAA7\u0000\uFAC8" + // 17755 - 17759
+ "\u8EA2\uEAA5\u0000\uF9A9\u8EA2\uEAA6\u0000\uFAC6\u0000\uFBAF" + // 17760 - 17764
+ "\u0000\uFBB1\u8EA2\uECC5\u0000\uFBB0\u8EA2\uECC4\u0000\u0000" + // 17765 - 17769
+ "\u8EA2\uEEB0\u0000\uFBF7\u8EA2\uEEAF\u0000\uFBF8\u8EA2\uEEAD" + // 17770 - 17774
+ "\u8EA2\uEEAC\u8EA2\uEEB1\u8EA2\uEEB2\u8EA2\uEFD4\u0000\u0000" + // 17775 - 17779
+ "\u8EA2\uEEAE\u0000\u0000\u0000\u0000\u8EA2\uF0D4\u8EA2\uF0D1" + // 17780 - 17784
+ "\u8EA2\uF0D2\u8EA2\uF0D3\u0000\uFDA9\u0000\u0000\u8EA2\uF1C0" + // 17785 - 17789
+ "\u8EA2\uF1BF\u8EA2\uF1BE\u8EA2\uF1DF\u0000\u0000\u8EA2\uF2AE" + // 17790 - 17794
+ "\u8EA2\uF1F9\u0000\uFDBB\u0000\uCBCE\u0000\uD8C5\u0000\u0000" + // 17795 - 17799
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7A3" + // 17800 - 17804
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17805 - 17809
+ "\u0000\u0000\u0000\u0000\u0000\uEFC1\u0000\u0000\u0000\u0000" + // 17810 - 17814
+ "\u8EA2\uDAF4\u0000\u0000\u0000\u0000\u0000\uF0C9\u8EA2\uD6D8" + // 17815 - 17819
+ "\u0000\u0000\u0000\u0000\u0000\uF0CC\u8EA2\uD6DA\u0000\uF0CB" + // 17820 - 17824
+ "\u8EA2\uD6D3\u8EA2\uD6D5\u0000\u0000\u0000\u0000\u0000\u0000" + // 17825 - 17829
+ "\u0000\u0000\u0000\uF3CE\u8EA2\uDCD8\u0000\u0000\u0000\uF3CD" + // 17830 - 17834
+ "\u8EA2\uDCD9\u0000\uF3CC\u8EA2\uDCD7\u0000\uF3CB\u8EA2\uDCD6" + // 17835 - 17839
+ "\u0000\u0000\u0000\uF6BF\u0000\uF6BE\u8EA2\uE5C2\u8EA2\uE5C4" + // 17840 - 17844
+ "\u0000\u0000\u8EA2\uE5C3\u0000\uF8AE\u0000\uF8AF\u0000\u0000" + // 17845 - 17849
+ "\u0000\u0000\u0000\uF8B0\u8EA2\uE8EE\u0000\uF9E6\u0000\u0000" + // 17850 - 17854
+ "\u0000\u0000\u8EA2\uEFA2\u8EA2\uEFA1\u0000\uFCDE\u0000\u0000" + // 17855 - 17859
+ "\u0000\uC4C9\u0000\uC5B1\u0000\u0000\u0000\u0000\u0000\uC9E7" + // 17860 - 17864
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9E0" + // 17865 - 17869
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE2" + // 17870 - 17874
+ "\u0000\uDEE3\u0000\u0000\u8EA2\uC2B9\u0000\uE8C0\u8EA2\uC9D0" + // 17875 - 17879
+ "\u8EA2\uCFFA\u8EA2\uCCAF\u8EA2\uCCAA\u8EA2\uCCAD\u8EA2\uCCB2" + // 17880 - 17884
+ "\u0000\uE9F2\u8EA2\uCCAC\u0000\u0000\u0000\uEDF7\u8EA2\uD2C7" + // 17885 - 17889
+ "\u8EA2\uD2C6\u0000\u0000\u0000\uEDFA\u0000\uEDF8\u8EA2\uD2C4" + // 17890 - 17894
+ "\u0000\uEDF6\u8EA2\uD2C5\u0000\u0000\u0000\uEDF9\u0000\u0000" + // 17895 - 17899
+ "\u0000\u0000\u0000\u0000\u8EA2\uD8E9\u0000\u0000\u8EA2\uD8EB" + // 17900 - 17904
+ "\u0000\u0000\u8EA2\uD8EA\u8EA2\uD8E2\u8EA2\uD8E6\u8EA2\uD8E5" + // 17905 - 17909
+ "\u8EA2\uD8E3\u0000\uF1D0\u0000\uF1D1\u0000\uF1CF\u8EA2\uD8E4" + // 17910 - 17914
+ "\u8EA2\uD8E7\u8EA2\uD8E8\u0000\u0000\u0000\uF1D2\u0000\u0000" + // 17915 - 17919
+ "\u0000\uF4CA\u8EA2\uDDED\u0000\u0000\u0000\uF4C7\u8EA2\uDDE7" + // 17920 - 17924
+ "\u0000\uF4C9\u0000\uF4CB\u0000\u0000\u0000\u0000\u0000\uF4C8" + // 17925 - 17929
+ "\u8EA2\uDDEC\u8EA2\uDDE8\u0000\uF4C6\u8EA2\uDDEB\u8EA2\uDDE6" + // 17930 - 17934
+ "\u8EA2\uDDEA\u8EA2\uDDE9\u0000\u0000\u0000\u0000\u8EA2\uE2C2" + // 17935 - 17939
+ "\u0000\uF6EE\u0000\uF6EF\u0000\uF6EC\u0000\u0000\u0000\uF6ED" + // 17940 - 17944
+ "\u0000\uE5B7\u0000\uE5B9\u0000\u0000\u8EA2\uC5AF\u0000\u0000" + // 17945 - 17949
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCA3\u0000\uE9EE" + // 17950 - 17954
+ "\u8EA2\uCCA7\u0000\uE9ED\u8EA2\uCCA4\u0000\uE9EC\u0000\u0000" + // 17955 - 17959
+ "\u8EA2\uC5AE\u8EA2\uC5B5\u8EA2\uCCA6\u0000\u0000\u0000\uE9EF" + // 17960 - 17964
+ "\u8EA2\uCCA8\u8EA2\uCCA5\u8EA2\uCCA2\u0000\u0000\u0000\u0000" + // 17965 - 17969
+ "\u8EA2\uD2B9\u8EA2\uD2BD\u8EA2\uD2BF\u8EA2\uD2BB\u8EA2\uD2BA" + // 17970 - 17974
+ "\u8EA2\uD2B8\u0000\uEDEE\u0000\uEDEC\u0000\uEDF1\u0000\uEDF2" + // 17975 - 17979
+ "\u8EA2\uD2BC\u0000\uEDEF\u8EA2\uD2B7\u0000\uEDF0\u0000\uE9EB" + // 17980 - 17984
+ "\u8EA2\uD2BE\u0000\uEDED\u0000\u0000\u0000\u0000\u0000\u0000" + // 17985 - 17989
+ "\u8EA2\uD8D8\u0000\u0000\u8EA2\uD8D7\u8EA2\uD8DF\u8EA2\uD8D9" + // 17990 - 17994
+ "\u8EA2\uD8DE\u8EA2\uD8DB\u0000\uF1CA\u8EA2\uD8DD\u0000\u0000" + // 17995 - 17999
+ "\u0000\u0000\u0000\uF1CB\u0000\u0000\u0000\uF1CC\u0000\u0000" + // 18000 - 18004
+ "\u8EA2\uD8DC\u8EA2\uD8DA\u0000\u0000\u0000\u0000\u8EA2\uAECA" + // 18005 - 18009
+ "\u8EA2\uAECB\u0000\uD4E7\u0000\uD4E8\u0000\u0000\u0000\u0000" + // 18010 - 18014
+ "\u8EA2\uB4AF\u0000\uD9CE\u0000\uD9D0\u8EA2\uB4AE\u0000\uD9CF" + // 18015 - 18019
+ "\u8EA2\uBAE0\u0000\uDED8\u0000\u0000\u0000\u0000\u0000\u0000" + // 18020 - 18024
+ "\u0000\u0000\u0000\uE3D0\u0000\uE3D1\u8EA2\uC2A8\u0000\u0000" + // 18025 - 18029
+ "\u0000\uE8B7\u0000\u0000\u0000\uE8B6\u0000\u0000\u8EA2\uCFF0" + // 18030 - 18034
+ "\u8EA2\uD6D2\u8EA2\uD6D1\u0000\u0000\u8EA2\uF1DA\u0000\uC4C8" + // 18035 - 18039
+ "\u8EA2\uA1B9\u0000\u0000\u8EA2\uA1CF\u8EA2\uA1D0\u0000\u0000" + // 18040 - 18044
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7E3\u0000\uC7E7" + // 18045 - 18049
+ "\u8EA2\uA2A9\u0000\u0000\u0000\uC7E5\u0000\uC7E4\u8EA2\uA2A8" + // 18050 - 18054
+ "\u0000\uC7E6\u0000\uC7E2\u0000\u0000\u0000\u0000\u0000\uC7E1" + // 18055 - 18059
+ "\u8EA2\uA2AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18060 - 18064
+ "\u0000\u0000\u0000\u0000\u0000\uC9E6\u0000\u0000\u0000\u0000" + // 18065 - 18069
+ "\u0000\uC9E3\u0000\u0000\u8EA2\uB9DD\u8EA2\uB9DA\u0000\u0000" + // 18070 - 18074
+ "\u0000\u0000\u8EA2\uC0E1\u0000\uE2C7\u8EA2\uC0D9\u8EA2\uC0DF" + // 18075 - 18079
+ "\u0000\u0000\u0000\u0000\u0000\uE2C2\u0000\uE2C5\u8EA2\uC0D8" + // 18080 - 18084
+ "\u0000\uE2C0\u8EA2\uC0DC\u8EA2\uC7F2\u0000\uE2C4\u0000\u0000" + // 18085 - 18089
+ "\u8EA2\uC0D7\u0000\u0000\u8EA2\uC0DD\u8EA2\uC0DA\u8EA2\uC0E0" + // 18090 - 18094
+ "\u8EA2\uC0D6\u8EA2\uC0DE\u0000\uE2C3\u0000\uE2C6\u8EA2\uC0DB" + // 18095 - 18099
+ "\u0000\uE2C1\u0000\u0000\u0000\uE6F9\u8EA2\uC7EE\u0000\uE6F8" + // 18100 - 18104
+ "\u8EA2\uC7F5\u8EA2\uC7F4\u0000\uE7A1\u0000\u0000\u0000\uE7A2" + // 18105 - 18109
+ "\u8EA2\uC7F6\u0000\uE6FA\u8EA2\uC7F3\u0000\uE6FE\u8EA2\uC7F8" + // 18110 - 18114
+ "\u8EA2\uC7EF\u0000\u0000\u8EA2\uC7F1\u0000\uE6FB\u8EA2\uC7ED" + // 18115 - 18119
+ "\u8EA2\uC7F0\u8EA2\uC7F7\u0000\uE6FC\u8EA2\uC7F9\u0000\u0000" + // 18120 - 18124
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6FD" + // 18125 - 18129
+ "\u0000\u0000\u0000\uEBB9\u8EA2\uCEC3\u8EA2\uCEC9\u8EA2\uCEC1" + // 18130 - 18134
+ "\u8EA2\uB1AA\u8EA2\uB1A7\u0000\uD6F0\u0000\u0000\u8EA2\uB1A9" + // 18135 - 18139
+ "\u0000\uD6E9\u0000\u0000\u0000\uD6EA\u0000\u0000\u0000\u0000" + // 18140 - 18144
+ "\u0000\uDCB1\u8EA2\uB7C4\u8EA2\uB7C5\u0000\uDCB2\u8EA2\uB7C1" + // 18145 - 18149
+ "\u8EA2\uB7C3\u8EA2\uB7C7\u8EA2\uB7C6\u8EA2\uB7C2\u0000\u0000" + // 18150 - 18154
+ "\u0000\uDCAE\u0000\uDCAF\u0000\u0000\u8EA2\uBEBA\u0000\uE0F1" + // 18155 - 18159
+ "\u0000\uE0F0\u8EA2\uBEB4\u0000\uE0EE\u0000\u0000\u8EA2\uBEB7" + // 18160 - 18164
+ "\u0000\uE0F2\u8EA2\uBEB8\u0000\uE0F3\u8EA2\uBEB5\u0000\uE0ED" + // 18165 - 18169
+ "\u0000\uE0EF\u8EA2\uBEB9\u0000\u0000\u8EA2\uBEB6\u8EA2\uBEB3" + // 18170 - 18174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18175 - 18179
+ "\u8EA2\uC5B8\u0000\u0000\u8EA2\uC5AD\u0000\uE5B8\u0000\uE5BB" + // 18180 - 18184
+ "\u0000\uE5BA\u0000\uE5BF\u0000\uE5BE\u8EA2\uC5B9\u8EA2\uC5B7" + // 18185 - 18189
+ "\u8EA2\uC5B0\u8EA2\uC5B4\u8EA2\uC5B3\u0000\uE5BC\u8EA2\uC5B6" + // 18190 - 18194
+ "\u8EA2\uC5B2\u8EA2\uC5BA\u8EA2\uC5B1\u0000\uE5BD\u8EA2\uD8D6" + // 18195 - 18199
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDDF\u0000\u0000" + // 18200 - 18204
+ "\u0000\uF8D1\u0000\uF8D0\u0000\u0000\u0000\u0000\u0000\uFBE8" + // 18205 - 18209
+ "\u0000\uC6F4\u8EA2\uA8B5\u0000\u0000\u0000\u0000\u0000\uDCAD" + // 18210 - 18214
+ "\u8EA2\uCCA1\u0000\uE9EA\u0000\uA8A9\u0000\u0000\u8EA2\uA4EF" + // 18215 - 18219
+ "\u8EA2\uA4F0\u0000\u0000\u0000\u0000\u8EA2\uA8B6\u0000\uCEF9" + // 18220 - 18224
+ "\u0000\uCEFA\u0000\u0000\u0000\u0000\u0000\uCEF8\u0000\u0000" + // 18225 - 18229
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD2D2\u0000\uD2D3" + // 18230 - 18234
+ "\u0000\uD2D0\u0000\uD2D1\u0000\u0000\u8EA2\uACBE\u0000\u0000" + // 18235 - 18239
+ "\u0000\u0000\u8EA2\uACBF\u0000\uD2CF\u0000\u0000\u0000\u0000" + // 18240 - 18244
+ "\u0000\u0000\u0000\u0000\u8EA2\uB1A6\u0000\u0000\u0000\uD6EB" + // 18245 - 18249
+ "\u0000\uD6EC\u0000\u0000\u0000\uDCB0\u8EA2\uB1AC\u0000\u0000" + // 18250 - 18254
+ "\u0000\uD6F1\u0000\uD6EF\u8EA2\uB1AD\u8EA2\uB1A8\u0000\uD6EE" + // 18255 - 18259
+ "\u0000\uD6ED\u0000\uD6E8\u8EA2\uB1AB\u8EA2\uA8B3\u0000\u0000" + // 18260 - 18264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18265 - 18269
+ "\u8EA2\uACBC\u8EA2\uACBD\u0000\u0000\u0000\u0000\u0000\uD2CE" + // 18270 - 18274
+ "\u0000\uD2CC\u0000\u0000\u0000\uD2CD\u0000\uD2CB\u0000\u0000" + // 18275 - 18279
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E3\u0000\u0000" + // 18280 - 18284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E7\u0000\uD6E6" + // 18285 - 18289
+ "\u8EA2\uB1A4\u0000\uD6E5\u0000\uD6E4\u0000\u0000\u8EA2\uB1A5" + // 18290 - 18294
+ "\u0000\u0000\u0000\u0000\u0000\uDCAB\u8EA2\uB7C0\u8EA2\uB7BF" + // 18295 - 18299
+ "\u0000\uDCA9\u0000\uDCAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18300 - 18304
+ "\u0000\uE0EC\u0000\uE0EB\u8EA2\uBEB2\u0000\u0000\u0000\u0000" + // 18305 - 18309
+ "\u8EA2\uBEB1\u0000\uDCAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 18310 - 18314
+ "\u0000\u0000\u0000\u0000\u0000\uE5B5\u8EA2\uC5AB\u0000\uE5B6" + // 18315 - 18319
+ "\u8EA2\uC5AA\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCBFE" + // 18320 - 18324
+ "\u8EA2\uD2B6\u0000\uEDEB\u8EA2\uCBFB\u0000\u0000\u8EA2\uCBFC" + // 18325 - 18329
+ "\u8EA2\uCBFD\u0000\uE9E9\u0000\u0000\u0000\u0000\u8EA2\uD2B5" + // 18330 - 18334
+ "\u8EA2\uD2B4\u0000\u0000\u0000\u0000\u8EA2\uD8D5\u0000\uF1C8" + // 18335 - 18339
+ "\u0000\uF1C9\u0000\u0000\u8EA2\uDDDE\u8EA2\uDDDB\u8EA2\uDDDC" + // 18340 - 18344
+ "\u8EA2\uDDDD\u8EA2\uE2B6\u8EA2\uE2B5\u0000\uF6E8\u8EA2\uE6A3" + // 18345 - 18349
+ "\u8EA2\uEBEC\u0000\uC6EC\u0000\u0000\u0000\uD2C9\u0000\u0000" + // 18350 - 18354
+ "\u0000\uDCA7\u8EA2\uC5A9\u0000\u0000\u0000\uC6ED\u0000\u0000" + // 18355 - 18359
+ "\u8EA2\uB1A3\u0000\uDCA8\u0000\u0000\u0000\u0000\u0000\uE0E9" + // 18360 - 18364
+ "\u0000\uE0EA\u0000\u0000\u0000\uC6EE\u0000\uC6EF\u8EA2\uA2E6" + // 18365 - 18369
+ "\u0000\uCBAD\u0000\uCBAC\u0000\uD2CA\u8EA2\uACBB\u8EA2\uBEB0" + // 18370 - 18374
+ "\u0000\uC6F0\u0000\uC6F1\u0000\uC6F2\u0000\uC6F3\u0000\u0000" + // 18375 - 18379
+ "\u0000\u0000\u0000\u0000\u0000\uCBAE\u0000\uCBAF\u8EA2\uA4EE" + // 18380 - 18384
+ "\u8EA2\uA4ED\u0000\u0000\u0000\u0000\u0000\uCEF7\u8EA2\uA8B4" + // 18385 - 18389
+ "\u8EA2\uA8B2\u8EA2\uE2AE\u8EA2\uE2B0\u8EA2\uE2B4\u8EA2\uE6A2" + // 18390 - 18394
+ "\u0000\u0000\u8EA2\uE5FE\u0000\u0000\u0000\u0000\u0000\u0000" + // 18395 - 18399
+ "\u0000\u0000\u0000\uF8CE\u8EA2\uE5FD\u0000\u0000\u0000\u0000" + // 18400 - 18404
+ "\u0000\u0000\u0000\uF9F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 18405 - 18409
+ "\u0000\u0000\u0000\uFAF8\u8EA2\uEDDF\u0000\uFAF7\u8EA2\uEDE1" + // 18410 - 18414
+ "\u8EA2\uEDDE\u8EA2\uEDE0\u0000\uFCBC\u8EA2\uF0C0\u0000\uC6EA" + // 18415 - 18419
+ "\u8EA2\uA8B0\u8EA2\uB0FD\u8EA2\uB0FE\u0000\uDCA4\u8EA2\uC5A5" + // 18420 - 18424
+ "\u0000\uF1C7\u0000\uF8CF\u0000\uFBE7\u8EA2\uF0C1\u0000\uC6EB" + // 18425 - 18429
+ "\u0000\u0000\u8EA2\uA8B1\u0000\uA3A2\u0000\u0000\u0000\u0000" + // 18430 - 18434
+ "\u8EA2\uACB9\u0000\u0000\u8EA2\uACBA\u0000\u0000\u0000\u0000" + // 18435 - 18439
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1A1\u8EA2\uB1A2" + // 18440 - 18444
+ "\u0000\uDCA5\u0000\uDCA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 18445 - 18449
+ "\u8EA2\uBEAF\u0000\u0000\u8EA2\uC5A8\u8EA2\uC5A7\u8EA2\uC5A6" + // 18450 - 18454
+ "\u0000\uEDEA\u8EA2\uD2AE\u0000\u0000\u0000\uEDE8\u0000\u0000" + // 18455 - 18459
+ "\u8EA2\uD2B0\u8EA2\uD2AD\u8EA2\uD2AA\u8EA2\uD2B1\u8EA2\uD2AB" + // 18460 - 18464
+ "\u8EA2\uD2AC\u0000\uEDE7\u0000\u0000\u0000\u0000\u0000\u0000" + // 18465 - 18469
+ "\u0000\u0000\u8EA2\uDDD5\u0000\u0000\u8EA2\uD8D2\u0000\u0000" + // 18470 - 18474
+ "\u8EA2\uD8D1\u8EA2\uD8D3\u0000\u0000\u8EA2\uDDD2\u0000\uF1C4" + // 18475 - 18479
+ "\u0000\u0000\u8EA2\uD8CF\u0000\u0000\u0000\uF1C2\u0000\u0000" + // 18480 - 18484
+ "\u0000\uF1C6\u0000\uF1C5\u8EA2\uD8D0\u8EA2\uD8D4\u0000\u0000" + // 18485 - 18489
+ "\u0000\uF1C3\u0000\u0000\u8EA2\uDDD9\u0000\uF4C0\u0000\uF6E6" + // 18490 - 18494
+ "\u0000\uF4C1\u0000\uF4BE\u8EA2\uDDD6\u8EA2\uDDD4\u0000\u0000" + // 18495 - 18499
+ "\u8EA2\uDDD7\u0000\u0000\u8EA2\uDDDA\u0000\uF4BF\u8EA2\uDDD8" + // 18500 - 18504
+ "\u8EA2\uDDD3\u0000\u0000\u0000\u0000\u8EA2\uE2AF\u8EA2\uE2B2" + // 18505 - 18509
+ "\u8EA2\uE6A1\u8EA2\uE2AD\u0000\u0000\u8EA2\uE9BE\u8EA2\uE2B3" + // 18510 - 18514
+ "\u0000\u0000\u0000\uF8CD\u8EA2\uE2B1\u0000\uF6E7\u8EA2\uC4FB" + // 18515 - 18519
+ "\u0000\uE5B0\u8EA2\uC5A1\u0000\u0000\u8EA2\uC4F5\u0000\u0000" + // 18520 - 18524
+ "\u8EA2\uC5A2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F6" + // 18525 - 18529
+ "\u8EA2\uC4F7\u0000\u0000\u8EA2\uC5A3\u8EA2\uC4FE\u8EA2\uC4FC" + // 18530 - 18534
+ "\u8EA2\uC4FD\u8EA2\uC4F9\u8EA2\uC4F8\u0000\u0000\u8EA2\uC5A4" + // 18535 - 18539
+ "\u0000\uE5AD\u0000\u0000\u8EA2\uC4FA\u0000\u0000\u0000\uE5B2" + // 18540 - 18544
+ "\u0000\uE5AC\u0000\uE5B3\u0000\uE5B4\u0000\u0000\u0000\uE5AF" + // 18545 - 18549
+ "\u0000\uE5AE\u0000\u0000\u0000\u0000\u8EA2\uCBF4\u0000\uE9E5" + // 18550 - 18554
+ "\u0000\uE9E4\u0000\u0000\u0000\u0000\u8EA2\uCBF9\u0000\u0000" + // 18555 - 18559
+ "\u0000\uEDE6\u0000\uE9E6\u0000\u0000\u0000\u0000\u0000\uE9E8" + // 18560 - 18564
+ "\u8EA2\uCBFA\u0000\uE5AB\u0000\uE9E7\u8EA2\uCBF6\u8EA2\uCBF8" + // 18565 - 18569
+ "\u8EA2\uCBF5\u0000\u0000\u8EA2\uCBF7\u0000\u0000\u0000\u0000" + // 18570 - 18574
+ "\u0000\u0000\u8EA2\uD2B3\u0000\u0000\u0000\u0000\u8EA2\uD2B2" + // 18575 - 18579
+ "\u8EA2\uD2AF\u0000\uEDE9\u8EA2\uD8CE\u8EA2\uB7B7\u8EA2\uB7B4" + // 18580 - 18584
+ "\u0000\u0000\u0000\uDBFE\u8EA2\uB7B3\u0000\uDBFC\u0000\uDCA1" + // 18585 - 18589
+ "\u8EA2\uB7B6\u8EA2\uB7BE\u0000\uD6DE\u0000\uDBFD\u8EA2\uB7BC" + // 18590 - 18594
+ "\u8EA2\uB7BB\u0000\uDCA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18595 - 18599
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18600 - 18604
+ "\u8EA2\uBEA4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEA5" + // 18605 - 18609
+ "\u0000\uE0E6\u0000\u0000\u8EA2\uBEAB\u0000\u0000\u0000\u0000" + // 18610 - 18614
+ "\u8EA2\uBEAD\u8EA2\uBEA6\u0000\uE0E0\u8EA2\uBEAA\u8EA2\uBEA9" + // 18615 - 18619
+ "\u0000\uE0E1\u0000\uE0E7\u0000\u0000\u0000\uE0E8\u8EA2\uBEAC" + // 18620 - 18624
+ "\u0000\uE0DE\u8EA2\uBEA3\u8EA2\uBEA1\u8EA2\uBEA7\u8EA2\uBDFE" + // 18625 - 18629
+ "\u0000\uE0E5\u8EA2\uBEA2\u8EA2\uBEA8\u8EA2\uBEAE\u0000\uE0DF" + // 18630 - 18634
+ "\u0000\uE0E4\u0000\uE0E2\u0000\uE0E3\u0000\u0000\u0000\u0000" + // 18635 - 18639
+ "\u0000\u0000\u0000\uE0DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 18640 - 18644
+ "\u0000\u0000\u0000\uE5B1\u0000\uD2C7\u0000\u0000\u8EA2\uACAA" + // 18645 - 18649
+ "\u8EA2\uACB5\u0000\u0000\u8EA2\uACAC\u8EA2\uACB6\u8EA2\uACB3" + // 18650 - 18654
+ "\u8EA2\uACAB\u0000\u0000\u0000\uD2C3\u8EA2\uACB8\u8EA2\uACA9" + // 18655 - 18659
+ "\u0000\uD2C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18660 - 18664
+ "\u8EA2\uB0F5\u8EA2\uB0EC\u8EA2\uB0F7\u0000\u0000\u8EA2\uB0EF" + // 18665 - 18669
+ "\u8EA2\uB0FA\u8EA2\uB0FB\u8EA2\uB0ED\u8EA2\uB0F9\u8EA2\uB0F6" + // 18670 - 18674
+ "\u8EA2\uB0F4\u8EA2\uB0F8\u0000\uD6E2\u0000\u0000\u0000\uD6E0" + // 18675 - 18679
+ "\u0000\u0000\u0000\u0000\u8EA2\uB0F2\u0000\u0000\u8EA2\uB0EE" + // 18680 - 18684
+ "\u0000\u0000\u8EA2\uB0F1\u8EA2\uB0FC\u8EA2\uB0F3\u0000\uD6E1" + // 18685 - 18689
+ "\u8EA2\uACB1\u0000\u0000\u0000\uD6DD\u0000\uD6DF\u0000\u0000" + // 18690 - 18694
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7BD" + // 18695 - 18699
+ "\u8EA2\uB7B2\u8EA2\uB7B0\u0000\u0000\u8EA2\uB7B1\u0000\u0000" + // 18700 - 18704
+ "\u8EA2\uB7B8\u0000\u0000\u8EA2\uB7B9\u8EA2\uB7B5\u0000\uDCA2" + // 18705 - 18709
+ "\u8EA2\uB7BA\u0000\uFBE6\u8EA2\uEFB7\u8EA2\uEFB6\u8EA2\uEFB8" + // 18710 - 18714
+ "\u0000\uC6E8\u8EA2\uACA8\u0000\uD6DC\u0000\uDBFB\u8EA2\uB7AF" + // 18715 - 18719
+ "\u0000\uC6E9\u8EA2\uA1E6\u0000\uC5DE\u0000\u0000\u0000\u0000" + // 18720 - 18724
+ "\u8EA2\uA2E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4EC" + // 18725 - 18729
+ "\u8EA2\uA4EA\u8EA2\uA4EB\u8EA2\uA4E8\u0000\uCBAB\u8EA2\uA4E9" + // 18730 - 18734
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18735 - 18739
+ "\u8EA2\uA8AF\u0000\u0000\u0000\uCEF4\u8EA2\uA8AD\u8EA2\uA8A9" + // 18740 - 18744
+ "\u8EA2\uA8AC\u0000\u0000\u8EA2\uA8A8\u0000\uCEF6\u8EA2\uA8AB" + // 18745 - 18749
+ "\u0000\u0000\u0000\uCEF3\u0000\uCEF2\u0000\u0000\u0000\uCEF5" + // 18750 - 18754
+ "\u8EA2\uA8AE\u8EA2\uA8AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18755 - 18759
+ "\u0000\u0000\u0000\uD2C5\u0000\uD2C8\u8EA2\uACB0\u8EA2\uACAF" + // 18760 - 18764
+ "\u8EA2\uACAE\u0000\uD2C2\u8EA2\uACB7\u8EA2\uACAD\u0000\u0000" + // 18765 - 18769
+ "\u0000\uD2C4\u8EA2\uB0F0\u0000\u0000\u8EA2\uACB4\u8EA2\uACB2" + // 18770 - 18774
+ "\u8EA2\uC4F2\u0000\u0000\u8EA2\uC4EF\u8EA2\uCBF0\u0000\uE9E2" + // 18775 - 18779
+ "\u0000\uE5A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F4" + // 18780 - 18784
+ "\u8EA2\uC4F3\u0000\u0000\u8EA2\uCBF3\u8EA2\uCBF1\u0000\uEDE4" + // 18785 - 18789
+ "\u0000\u0000\u0000\uE9E3\u8EA2\uCBF2\u8EA2\uD1FE\u0000\u0000" + // 18790 - 18794
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDE5\u8EA2\uD1FD" + // 18795 - 18799
+ "\u8EA2\uD2A8\u8EA2\uD2A7\u8EA2\uD2A5\u0000\u0000\u8EA2\uD2A4" + // 18800 - 18804
+ "\u8EA2\uD2A1\u8EA2\uD2A2\u8EA2\uD2A3\u8EA2\uD2A6\u8EA2\uD2A9" + // 18805 - 18809
+ "\u0000\u0000\u0000\u0000\u8EA2\uD8CB\u8EA2\uD8C8\u8EA2\uD8C9" + // 18810 - 18814
+ "\u0000\uF1C1\u8EA2\uD8C7\u8EA2\uD8CD\u8EA2\uD8CC\u8EA2\uD8CA" + // 18815 - 18819
+ "\u0000\u0000\u8EA2\uDDD0\u8EA2\uDDD1\u0000\uF4BC\u0000\u0000" + // 18820 - 18824
+ "\u0000\uF4BD\u8EA2\uDDCF\u0000\u0000\u0000\uF6E5\u8EA2\uE2AC" + // 18825 - 18829
+ "\u0000\uF6E4\u0000\uF8CB\u0000\u0000\u0000\uF8CC\u0000\uF9F8" + // 18830 - 18834
+ "\u8EA2\uE9BD\u8EA2\uE9BC\u8EA2\uEBEB\u8EA2\uEDDD\u8EA2\uB0E4" + // 18835 - 18839
+ "\u8EA2\uB0EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18840 - 18844
+ "\u0000\u0000\u8EA2\uB7A7\u8EA2\uB7AB\u0000\u0000\u8EA2\uB7AA" + // 18845 - 18849
+ "\u8EA2\uBDF2\u8EA2\uBDFD\u0000\u0000\u0000\u0000\u8EA2\uB7AD" + // 18850 - 18854
+ "\u0000\u0000\u8EA2\uB7A8\u8EA2\uBDF1\u0000\uDBF9\u0000\u0000" + // 18855 - 18859
+ "\u0000\u0000\u0000\uDBF8\u8EA2\uB7A6\u8EA2\uB7A9\u0000\uDBFA" + // 18860 - 18864
+ "\u0000\u0000\u0000\uDBF7\u0000\uDBF6\u8EA2\uB7A5\u8EA2\uB7AE" + // 18865 - 18869
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF4\u8EA2\uBDFB" + // 18870 - 18874
+ "\u0000\u0000\u0000\uE0DA\u8EA2\uBDFA\u8EA2\uBDF7\u0000\u0000" + // 18875 - 18879
+ "\u0000\uE0DC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF9" + // 18880 - 18884
+ "\u0000\u0000\u0000\u0000\u8EA2\uBDF3\u8EA2\uBDF5\u8EA2\uBDF8" + // 18885 - 18889
+ "\u8EA2\uBDF6\u0000\uE0DB\u8EA2\uBDFC\u0000\uE0D9\u0000\uE5A7" + // 18890 - 18894
+ "\u0000\u0000\u0000\u0000\u8EA2\uC4F1\u8EA2\uC4F0\u8EA2\uC4EE" + // 18895 - 18899
+ "\u0000\u0000\u0000\uE5AA\u0000\uE5A9\u0000\uCEED\u8EA2\uA4E5" + // 18900 - 18904
+ "\u0000\uCBAA\u8EA2\uA4E3\u0000\uCBA9\u8EA2\uA4E7\u8EA2\uA4E4" + // 18905 - 18909
+ "\u0000\u0000\u0000\u0000\u8EA2\uA8A1\u8EA2\uABFE\u8EA2\uA7FD" + // 18910 - 18914
+ "\u8EA2\uA8A6\u0000\u0000\u0000\uCEEE\u0000\u0000\u0000\uCEF1" + // 18915 - 18919
+ "\u8EA2\uA8A7\u8EA2\uA8A3\u0000\u0000\u8EA2\uA8A4\u0000\u0000" + // 18920 - 18924
+ "\u8EA2\uA7FC\u0000\uCEF0\u8EA2\uA7FE\u0000\uCEEF\u8EA2\uA8A5" + // 18925 - 18929
+ "\u0000\u0000\u8EA2\uA8A2\u0000\u0000\u0000\u0000\u8EA2\uACA4" + // 18930 - 18934
+ "\u0000\uD2C0\u0000\uD2C1\u0000\u0000\u8EA2\uACA7\u8EA2\uACA1" + // 18935 - 18939
+ "\u0000\u0000\u8EA2\uACA6\u0000\u0000\u8EA2\uACA2\u0000\uD2BF" + // 18940 - 18944
+ "\u8EA2\uACA5\u8EA2\uACA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18945 - 18949
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0E9" + // 18950 - 18954
+ "\u8EA2\uB0E6\u0000\u0000\u8EA2\uB0E8\u0000\uD6DB\u0000\uD6DA" + // 18955 - 18959
+ "\u0000\uD6D8\u8EA2\uB0E5\u8EA2\uB0EA\u0000\uD6D7\u0000\uD6D9" + // 18960 - 18964
+ "\u8EA2\uB0E7\u8EA2\uB7AC\u0000\uE0D8\u0000\uDBF5\u0000\u0000" + // 18965 - 18969
+ "\u0000\u0000\u0000\uE0D7\u8EA2\uBDEF\u8EA2\uBDEE\u0000\u0000" + // 18970 - 18974
+ "\u8EA2\uBDEC\u8EA2\uBDED\u0000\u0000\u8EA2\uBDF0\u8EA2\uC4EA" + // 18975 - 18979
+ "\u8EA2\uC4E9\u8EA2\uC4ED\u0000\u0000\u8EA2\uC4EC\u8EA2\uC4EB" + // 18980 - 18984
+ "\u0000\uE9E0\u8EA2\uCBEF\u0000\u0000\u8EA2\uCBEE\u0000\uE9E1" + // 18985 - 18989
+ "\u8EA2\uCBED\u8EA2\uD1FB\u0000\u0000\u8EA2\uD1FC\u0000\uEDE3" + // 18990 - 18994
+ "\u0000\u0000\u8EA2\uD8C5\u8EA2\uD8C6\u0000\u0000\u0000\u0000" + // 18995 - 18999
+ "\u8EA2\uE5FC\u0000\uF8CA\u8EA2\uE5FB\u8EA2\uE5FA\u8EA2\uE5F8" + // 19000 - 19004
+ "\u8EA2\uE5F9\u0000\uFAF6\u8EA2\uE9BB\u8EA2\uEDDC\u8EA2\uF1A7" + // 19005 - 19009
+ "\u0000\u0000\u0000\uC5DD\u0000\u0000\u8EA2\uA1E4\u0000\uC6E7" + // 19010 - 19014
+ "\u8EA2\uA1E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2E3" + // 19015 - 19019
+ "\u8EA2\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19020 - 19024
+ "\u8EA2\uA4E6\u0000\u0000\u0000\u0000\u8EA2\uA4E2\u0000\u0000" + // 19025 - 19029
+ "\u8EA2\uA4E1\u8EA2\uD8B8\u8EA2\uD8B9\u8EA2\uD8B4\u0000\uF1BF" + // 19030 - 19034
+ "\u0000\uF1C0\u8EA2\uD8B3\u8EA2\uD8C2\u8EA2\uD8BD\u0000\uF1B9" + // 19035 - 19039
+ "\u0000\uF1B6\u8EA2\uD8BC\u8EA2\uD8BA\u0000\u0000\u0000\u0000" + // 19040 - 19044
+ "\u0000\uF1BC\u8EA2\uD8BE\u0000\uF1B7\u0000\u0000\u0000\uF1B8" + // 19045 - 19049
+ "\u0000\u0000\u8EA2\uD8BB\u0000\uF1BA\u8EA2\uD8B7\u0000\u0000" + // 19050 - 19054
+ "\u8EA2\uD8C0\u0000\uF1BD\u8EA2\uD8C3\u8EA2\uD8C4\u0000\uF1BE" + // 19055 - 19059
+ "\u0000\u0000\u0000\u0000\u0000\uF4B2\u0000\uF4B9\u8EA2\uDDC8" + // 19060 - 19064
+ "\u8EA2\uDDCE\u0000\u0000\u8EA2\uDDCC\u0000\uF4B5\u0000\uF4B4" + // 19065 - 19069
+ "\u0000\uF4B1\u8EA2\uDDCA\u0000\u0000\u0000\u0000\u0000\u0000" + // 19070 - 19074
+ "\u0000\uF4B7\u0000\uF4B6\u0000\uF4B3\u0000\u0000\u8EA2\uDDCD" + // 19075 - 19079
+ "\u8EA2\uDDC9\u8EA2\uDDCB\u0000\u0000\u0000\uF4B8\u0000\u0000" + // 19080 - 19084
+ "\u0000\u0000\u0000\u0000\u0000\uF6E3\u8EA2\uE2A9\u0000\u0000" + // 19085 - 19089
+ "\u0000\uF6E0\u0000\uF6E1\u8EA2\uE2AB\u0000\uF6E2\u8EA2\uE2A8" + // 19090 - 19094
+ "\u8EA2\uCBE3\u8EA2\uCBE9\u8EA2\uCBE5\u0000\u0000\u0000\uE9DD" + // 19095 - 19099
+ "\u8EA2\uCBE4\u8EA2\uCBE8\u8EA2\uCBE0\u0000\u0000\u8EA2\uCBE2" + // 19100 - 19104
+ "\u0000\uE9DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19105 - 19109
+ "\u8EA2\uCBE6\u8EA2\uCBE1\u0000\u0000\u0000\uE9DE\u0000\u0000" + // 19110 - 19114
+ "\u0000\uE9D9\u0000\u0000\u0000\u0000\u8EA2\uCBEA\u0000\u0000" + // 19115 - 19119
+ "\u0000\uE9DA\u8EA2\uD1EF\u8EA2\uD1EC\u8EA2\uD1F8\u8EA2\uD1F2" + // 19120 - 19124
+ "\u8EA2\uD1F4\u0000\uEDDE\u8EA2\uD1EE\u8EA2\uD1F6\u0000\u0000" + // 19125 - 19129
+ "\u0000\u0000\u8EA2\uD1F5\u8EA2\uD1F3\u0000\u0000\u8EA2\uD1F9" + // 19130 - 19134
+ "\u0000\uEDE1\u8EA2\uD1F0\u8EA2\uD1F7\u0000\u0000\u0000\uEDDF" + // 19135 - 19139
+ "\u0000\u0000\u0000\u0000\u8EA2\uD1EB\u8EA2\uD1ED\u0000\uEDE0" + // 19140 - 19144
+ "\u8EA2\uD1EA\u8EA2\uD1FA\u0000\u0000\u8EA2\uD1F1\u0000\u0000" + // 19145 - 19149
+ "\u0000\u0000\u8EA2\uD8B6\u0000\uF1BB\u0000\u0000\u0000\u0000" + // 19150 - 19154
+ "\u8EA2\uD8C1\u8EA2\uD8BF\u0000\uF1B5\u8EA2\uD8B5\u8EA2\uB6F9" + // 19155 - 19159
+ "\u0000\u0000\u8EA2\uB6FD\u0000\u0000\u8EA2\uB6F2\u0000\u0000" + // 19160 - 19164
+ "\u8EA2\uB6F7\u0000\u0000\u0000\u0000\u0000\uDBEF\u0000\uDBF0" + // 19165 - 19169
+ "\u8EA2\uB6FC\u8EA2\uB6F0\u8EA2\uB6EC\u8EA2\uB6FE\u0000\u0000" + // 19170 - 19174
+ "\u8EA2\uB6F4\u0000\u0000\u0000\u0000\u8EA2\uB6F8\u0000\u0000" + // 19175 - 19179
+ "\u0000\u0000\u0000\u0000\u8EA2\uB6EE\u0000\u0000\u0000\uE0CE" + // 19180 - 19184
+ "\u0000\uE0CF\u8EA2\uBDE9\u0000\uE0D5\u0000\u0000\u8EA2\uBDDD" + // 19185 - 19189
+ "\u8EA2\uBDE6\u8EA2\uBDDC\u0000\uE0D2\u8EA2\uBDE4\u8EA2\uBDE2" + // 19190 - 19194
+ "\u0000\u0000\u8EA2\uBDE3\u0000\uE0D0\u0000\u0000\u8EA2\uBDE7" + // 19195 - 19199
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19200 - 19204
+ "\u8EA2\uBDE0\u8EA2\uBDDE\u0000\uE0D1\u8EA2\uBDE1\u8EA2\uBDE5" + // 19205 - 19209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0D3\u0000\u0000" + // 19210 - 19214
+ "\u0000\u0000\u0000\u0000\u8EA2\uBDE8\u0000\u0000\u0000\u0000" + // 19215 - 19219
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEC0\u8EA2\uBEC2" + // 19220 - 19224
+ "\u8EA2\uBEBE\u8EA2\uBEBF\u0000\u0000\u0000\u0000\u8EA2\uBEC3" + // 19225 - 19229
+ "\u8EA2\uBEC5\u8EA2\uBEC6\u8EA2\uBEC1\u8EA2\uBEC4\u0000\uE0FA" + // 19230 - 19234
+ "\u0000\u0000\u0000\u0000\u8EA2\uC5C1\u0000\u0000\u8EA2\uC5C6" + // 19235 - 19239
+ "\u8EA2\uC5BE\u8EA2\uC5C2\u0000\u0000\u0000\u0000\u8EA2\uC5C7" + // 19240 - 19244
+ "\u8EA2\uC5C3\u0000\uE5C2\u0000\uE5CA\u0000\u0000\u0000\uE5C5" + // 19245 - 19249
+ "\u8EA2\uC5BF\u8EA2\uC5C0\u0000\uE9F5\u0000\uE5CD\u0000\uE5C6" + // 19250 - 19254
+ "\u0000\u0000\u0000\uE5CB\u0000\uE5C4\u8EA2\uC5C5\u0000\uE5CC" + // 19255 - 19259
+ "\u8EA2\uC5C4\u0000\uE5C8\u0000\uE5C3\u0000\uE5C9\u8EA2\uC5C8" + // 19260 - 19264
+ "\u8EA2\uCCAE\u8EA2\uCCB0\u0000\u0000\u0000\u0000\u0000\u0000" + // 19265 - 19269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19270 - 19274
+ "\u0000\u0000\u0000\uE5C7\u0000\u0000\u0000\u0000\u8EA2\uCCAB" + // 19275 - 19279
+ "\u0000\uE9F3\u8EA2\uCCB1\u0000\uE9F4\u8EA2\uE9B5\u8EA2\uE9B8" + // 19280 - 19284
+ "\u8EA2\uE9AF\u8EA2\uEBE1\u8EA2\uEBE2\u8EA2\uEBE6\u8EA2\uEBE7" + // 19285 - 19289
+ "\u0000\u0000\u8EA2\uEBE4\u8EA2\uEBE5\u8EA2\uEBE3\u0000\u0000" + // 19290 - 19294
+ "\u0000\uFAF4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19295 - 19299
+ "\u0000\uFBE4\u8EA2\uEDD9\u0000\u0000\u0000\u0000\u8EA2\uEDD6" + // 19300 - 19304
+ "\u8EA2\uEDD7\u8EA2\uEDD8\u0000\uFBE5\u0000\u0000\u8EA2\uEFB4" + // 19305 - 19309
+ "\u8EA2\uEFB3\u0000\u0000\u8EA2\uF0BD\u0000\uFCE0\u8EA2\uF0BB" + // 19310 - 19314
+ "\u8EA2\uF0BE\u8EA2\uF0BC\u8EA2\uF1A5\u0000\uFDA4\u0000\uFDB2" + // 19315 - 19319
+ "\u8EA2\uF1F1\u8EA2\uF1DB\u0000\u0000\u8EA2\uF1F0\u8EA2\uF2BE" + // 19320 - 19324
+ "\u8EA2\uF2BF\u0000\uC5D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 19325 - 19329
+ "\u0000\u0000\u0000\uC8C8\u8EA2\uA2E1\u0000\u0000\u0000\u0000" + // 19330 - 19334
+ "\u8EA2\uA4DE\u0000\u0000\u0000\uCBA2\u0000\u0000\u0000\uCBA5" + // 19335 - 19339
+ "\u0000\u0000\u8EA2\uA4DF\u0000\u0000\u0000\uCBA3\u0000\uCBA4" + // 19340 - 19344
+ "\u0000\u0000\u0000\u0000\u0000\uC7D4\u0000\u0000\u0000\uC7DA" + // 19345 - 19349
+ "\u0000\uC7D6\u0000\u0000\u0000\uC7DC\u8EA2\uA2A5\u0000\uC7D9" + // 19350 - 19354
+ "\u0000\uC7CF\u0000\uC7D2\u0000\uC7D5\u0000\uC7D1\u0000\uC7D8" + // 19355 - 19359
+ "\u0000\uC7DB\u0000\uC7D0\u0000\uC7D3\u0000\uC7D7\u0000\uC7DD" + // 19360 - 19364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19365 - 19369
+ "\u8EA2\uA3C0\u8EA2\uA3BD\u0000\u0000\u0000\uC9C9\u8EA2\uA3BE" + // 19370 - 19374
+ "\u0000\uC9BD\u0000\uC9BF\u0000\uC9D7\u0000\uC9D2\u0000\u0000" + // 19375 - 19379
+ "\u0000\u0000\u0000\u0000\u8EA2\uA3C5\u8EA2\uA3BF\u0000\uC9C1" + // 19380 - 19384
+ "\u0000\uC9C3\u8EA2\uA3C4\u0000\uC9CA\u8EA2\uA3BA\u0000\uC9D6" + // 19385 - 19389
+ "\u0000\uC9D8\u0000\uC9BE\u0000\uC9CF\u0000\u0000\u8EA2\uA3B8" + // 19390 - 19394
+ "\u0000\uC9D5\u0000\u0000\u0000\uC9C6\u0000\u0000\u0000\uC9D0" + // 19395 - 19399
+ "\u0000\uC9D1\u8EA2\uA3B9\u0000\uC9CE\u0000\uC9CC\u0000\u0000" + // 19400 - 19404
+ "\u0000\uC9CD\u0000\uC9D3\u8EA2\uA3C1\u0000\uC9C0\u0000\u0000" + // 19405 - 19409
+ "\u0000\uF5D0\u8EA2\uE3D9\u8EA2\uE7B0\u0000\u0000\u8EA2\uEFD2" + // 19410 - 19414
+ "\u0000\uCBC8\u8EA2\uB3A2\u0000\uD8BF\u0000\uDDC7\u8EA2\uC7DA" + // 19415 - 19419
+ "\u8EA2\uC7D9\u0000\uEFA7\u8EA2\uD4CF\u0000\uEFA8\u8EA2\uDFDD" + // 19420 - 19424
+ "\u0000\uF7C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC3" + // 19425 - 19429
+ "\u0000\uCBC9\u8EA2\uA8EB\u8EA2\uB3A3\u0000\u0000\u0000\u0000" + // 19430 - 19434
+ "\u0000\uDDC8\u0000\u0000\u8EA2\uB9D2\u8EA2\uB9D3\u0000\u0000" + // 19435 - 19439
+ "\u8EA2\uC0CB\u0000\u0000\u0000\uE2AF\u0000\uE6ED\u0000\u0000" + // 19440 - 19444
+ "\u8EA2\uC7DC\u8EA2\uC7DB\u8EA2\uC7DD\u0000\u0000\u8EA2\uCEB9" + // 19445 - 19449
+ "\u8EA2\uCEBA\u0000\uEBB0\u0000\uF2C7\u0000\uEFA9\u0000\uF2C8" + // 19450 - 19454
+ "\u0000\u0000\u8EA2\uDFE1\u8EA2\uDFDE\u8EA2\uDFE0\u8EA2\uDFDF" + // 19455 - 19459
+ "\u0000\uF5D2\u0000\u0000\u8EA2\uE3DA\u8EA2\uE7B2\u8EA2\uE7B1" + // 19460 - 19464
+ "\u8EA2\uA5A4\u0000\uD8C1\u0000\uD8C0\u8EA2\uB3A4\u0000\u0000" + // 19465 - 19469
+ "\u8EA2\uB9D4\u0000\u0000\u0000\u0000\u8EA2\uAEDA\u0000\uD4E9" + // 19470 - 19474
+ "\u0000\uD4EC\u0000\u0000\u0000\u0000\u8EA2\uAED1\u8EA2\uAED7" + // 19475 - 19479
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4EB\u8EA2\uAECC" + // 19480 - 19484
+ "\u0000\u0000\u0000\uD0D2\u8EA2\uB4BD\u8EA2\uAED8\u0000\u0000" + // 19485 - 19489
+ "\u8EA2\uAECF\u0000\u0000\u0000\uD4EA\u8EA2\uAECE\u0000\u0000" + // 19490 - 19494
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19495 - 19499
+ "\u8EA2\uB4B4\u0000\u0000\u0000\u0000\u0000\uD9D1\u0000\uD9D5" + // 19500 - 19504
+ "\u8EA2\uB4C4\u8EA2\uB4B2\u8EA2\uB4C0\u0000\uD9D6\u8EA2\uB4C2" + // 19505 - 19509
+ "\u0000\u0000\u8EA2\uB4C8\u0000\u0000\u8EA2\uB4CC\u0000\u0000" + // 19510 - 19514
+ "\u0000\u0000\u8EA2\uB4C3\u8EA2\uB4B7\u8EA2\uB4BF\u0000\u0000" + // 19515 - 19519
+ "\u8EA2\uB4CD\u8EA2\uB4CB\u8EA2\uB4C1\u8EA2\uB4BC\u8EA2\uB4B5" + // 19520 - 19524
+ "\u8EA2\uBAE8\u8EA2\uB4B3\u0000\uD9DA\u8EA2\uB4BA\u0000\uD9DB" + // 19525 - 19529
+ "\u0000\uD9D7\u8EA2\uB4B0\u8EA2\uB4C6\u8EA2\uB4B8\u0000\u0000" + // 19530 - 19534
+ "\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004" + // 19535 - 19539
+ "\u0000\u0005\u0000\u0006\u0000\u0007\u0000\u0008\u0000\u0009" + // 19540 - 19544
+ "\u0000\n\u0000\u000B\u0000\u000C\u0000\r\u0000\u000E" + // 19545 - 19549
+ "\u0000\u000F\u0000\u0010\u0000\u0011\u0000\u0012\u0000\u0013" + // 19550 - 19554
+ "\u0000\u0014\u0000\u0015\u0000\u0016\u0000\u0017\u0000\u0018" + // 19555 - 19559
+ "\u0000\u0019\u0000\u001A\u0000\u001B\u0000\u001C\u0000\u001D" + // 19560 - 19564
+ "\u0000\u001E\u0000\u001F\u0000\u0020\u0000\u0021\u0000\"" + // 19565 - 19569
+ "\u0000\u0023\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027" + // 19570 - 19574
+ "\u0000\u0028\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C" + // 19575 - 19579
+ "\u0000\u002D\u0000\u002E\u0000\u002F\u0000\u0030\u0000\u0031" + // 19580 - 19584
+ "\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035\u0000\u0036" + // 19585 - 19589
+ "\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u003A\u0000\u003B" + // 19590 - 19594
+ "\u0000\u003C\u0000\u003D\u0000\u003E\u0000\u003F\u8EA2\uE2A1" + // 19595 - 19599
+ "\u8EA2\uE1FA\u0000\u0000\u0000\u0000\u8EA2\uD8A3\u8EA2\uE1FB" + // 19600 - 19604
+ "\u0000\uF6DC\u8EA2\uE1F7\u0000\u0000\u0000\uF6D9\u8EA2\uE2A6" + // 19605 - 19609
+ "\u0000\uF6DA\u8EA2\uE1F8\u8EA2\uE1F9\u8EA2\uE1FD\u0000\uF6DF" + // 19610 - 19614
+ "\u0000\u0000\u0000\uF6DE\u0000\u0000\u0000\u0000\u8EA2\uE1FC" + // 19615 - 19619
+ "\u0000\uF8C5\u8EA2\uE5EA\u8EA2\uE5F0\u0000\uF8C6\u8EA2\uE5E7" + // 19620 - 19624
+ "\u0000\uF8C3\u0000\uF8C0\u8EA2\uE5F2\u0000\uF8C4\u0000\u0000" + // 19625 - 19629
+ "\u0000\uF8C1\u8EA2\uE5E9\u8EA2\uE5EC\u8EA2\uE5ED\u8EA2\uE5EE" + // 19630 - 19634
+ "\u8EA2\uE5F1\u0000\u0000\u8EA2\uE2A3\u8EA2\uE5E8\u0000\uF8C2" + // 19635 - 19639
+ "\u8EA2\uE5EF\u8EA2\uE9B4\u8EA2\uE5EB\u0000\u0000\u0000\u0000" + // 19640 - 19644
+ "\u0000\u0000\u8EA2\uE9AB\u0000\uF9F5\u8EA2\uE9AE\u0000\uF9F6" + // 19645 - 19649
+ "\u8EA2\uE9B7\u8EA2\uE9AD\u8EA2\uE9AA\u0000\u0000\u8EA2\uE9AC" + // 19650 - 19654
+ "\u8EA2\uE9B0\u8EA2\uE9B3\u8EA2\uE9B2\u8EA2\uE9B6\u8EA2\uE9A9" + // 19655 - 19659
+ "\u0000\u0000\u0000\uF9F4\u8EA2\uE9B1\u0000\uF1AF\u0000\uF1AC" + // 19660 - 19664
+ "\u0000\uF1A7\u0000\uF1AA\u8EA2\uD7FC\u0000\u0000\u8EA2\uD1C6" + // 19665 - 19669
+ "\u8EA2\uD7F7\u8EA2\uD7FA\u8EA2\uD8AD\u8EA2\uD8A1\u8EA2\uD7F5" + // 19670 - 19674
+ "\u8EA2\uDDBA\u8EA2\uD8AF\u8EA2\uD7F9\u8EA2\uD8A9\u0000\u0000" + // 19675 - 19679
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDBD\u0000\uF4AE" + // 19680 - 19684
+ "\u0000\u0000\u0000\u0000\u0000\uF4A2\u0000\u0000\u0000\u0000" + // 19685 - 19689
+ "\u0000\uF4A6\u8EA2\uDDBF\u8EA2\uDDC5\u8EA2\uDDC3\u0000\uF4A4" + // 19690 - 19694
+ "\u0000\uF4A5\u0000\uF4AC\u8EA2\uDDC6\u8EA2\uDDBE\u0000\uF4A7" + // 19695 - 19699
+ "\u0000\u0000\u8EA2\uDDC2\u8EA2\uDDC1\u8EA2\uDDC7\u0000\uF4AD" + // 19700 - 19704
+ "\u0000\u0000\u0000\uF4A8\u0000\uF4AB\u8EA2\uDDC0\u0000\uF4AF" + // 19705 - 19709
+ "\u0000\uF4A9\u0000\uF4B0\u0000\uF4A3\u8EA2\uDDC4\u0000\u0000" + // 19710 - 19714
+ "\u8EA2\uDDBC\u0000\u0000\u0000\u0000\u8EA2\uE2A5\u0000\u0000" + // 19715 - 19719
+ "\u0000\u0000\u0000\uF6DD\u8EA2\uE2A2\u8EA2\uE2A4\u0000\u0000" + // 19720 - 19724
+ "\u0000\uF6DB\u8EA2\uE1FE\u0000\uF4AA\u0000\u0000\u8EA2\uD1D2" + // 19725 - 19729
+ "\u0000\u0000\u0000\uEDCB\u8EA2\uD1CD\u0000\uEDCF\u8EA2\uD1C5" + // 19730 - 19734
+ "\u0000\uE9D2\u8EA2\uD1C9\u0000\u0000\u8EA2\uD1E2\u8EA2\uD1CA" + // 19735 - 19739
+ "\u8EA2\uD1C8\u0000\uEDD4\u0000\u0000\u8EA2\uD1E0\u0000\u0000" + // 19740 - 19744
+ "\u8EA2\uD1C7\u8EA2\uD1D9\u8EA2\uD1D8\u8EA2\uD1E5\u8EA2\uD1CF" + // 19745 - 19749
+ "\u0000\uEDD8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19750 - 19754
+ "\u0000\u0000\u0000\u0000\u8EA2\uD7FE\u0000\u0000\u0000\uF1B3" + // 19755 - 19759
+ "\u0000\uF1A9\u8EA2\uD8AC\u8EA2\uD7F6\u0000\uF1AB\u8EA2\uD8A4" + // 19760 - 19764
+ "\u0000\uF1B2\u0000\uF1AD\u8EA2\uD8A2\u8EA2\uDDBB\u8EA2\uD8A8" + // 19765 - 19769
+ "\u8EA2\uD8AE\u8EA2\uD8A7\u8EA2\uD7F4\u8EA2\uD8A5\u8EA2\uD8B0" + // 19770 - 19774
+ "\u8EA2\uD8B2\u0000\uF1A8\u8EA2\uD8B1\u0000\uF1AE\u0000\uF1B4" + // 19775 - 19779
+ "\u0000\u0000\u0000\uF1B1\u0000\u0000\u8EA2\uD8AB\u0000\uF1B0" + // 19780 - 19784
+ "\u8EA2\uD8A6\u0000\u0000\u8EA2\uD7F8\u8EA2\uD7FD\u0000\u0000" + // 19785 - 19789
+ "\u8EA2\uD8AA\u8EA2\uCBCC\u8EA2\uD1C2\u0000\u0000\u8EA2\uCBD3" + // 19790 - 19794
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19795 - 19799
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19800 - 19804
+ "\u8EA2\uCBBE\u8EA2\uD1CC\u8EA2\uD1D6\u0000\uEDCC\u8EA2\uD1D5" + // 19805 - 19809
+ "\u8EA2\uD1E1\u0000\uEDCE\u8EA2\uD1D3\u0000\u0000\u8EA2\uD1D7" + // 19810 - 19814
+ "\u0000\uEDD9\u0000\u0000\u8EA2\uD1CE\u0000\uEDD1\u0000\u0000" + // 19815 - 19819
+ "\u8EA2\uD1DA\u8EA2\uD7FB\u0000\uEDDD\u0000\uEDDC\u8EA2\uD1DC" + // 19820 - 19824
+ "\u8EA2\uD1CB\u8EA2\uD1E6\u0000\uEDD7\u0000\u0000\u0000\uEDCD" + // 19825 - 19829
+ "\u8EA2\uD1DF\u0000\u0000\u8EA2\uD1E3\u8EA2\uD1E8\u8EA2\uD1DD" + // 19830 - 19834
+ "\u8EA2\uD1D1\u0000\uEDD0\u0000\uEDD3\u0000\uEDDB\u0000\uEDD6" + // 19835 - 19839
+ "\u0000\u0000\u8EA2\uD1D4\u8EA2\uCBC8\u0000\u0000\u0000\u0000" + // 19840 - 19844
+ "\u8EA2\uD1D0\u8EA2\uD1E7\u0000\uEDD2\u0000\u0000\u0000\uEDD5" + // 19845 - 19849
+ "\u8EA2\uD1E9\u0000\uEDCA\u8EA2\uD1DE\u8EA2\uD1C4\u8EA2\uD1E4" + // 19850 - 19854
+ "\u8EA2\uD1DB\u0000\uE9D5\u0000\uE9C6\u8EA2\uCBB7\u0000\u0000" + // 19855 - 19859
+ "\u8EA2\uCBD4\u0000\uE9CA\u8EA2\uCBD1\u8EA2\uCBDE\u8EA2\uCBBD" + // 19860 - 19864
+ "\u8EA2\uCBC6\u0000\u0000\u0000\u0000\u8EA2\uCBDC\u8EA2\uCBD2" + // 19865 - 19869
+ "\u0000\uE9C5\u0000\u0000\u0000\u0000\u8EA2\uCBC4\u0000\uE9BF" + // 19870 - 19874
+ "\u0000\uE9BD\u0000\uE9CF\u0000\u0000\u0000\u0000\u8EA2\uCBC2" + // 19875 - 19879
+ "\u8EA2\uCBBF\u8EA2\uCBC0\u0000\u0000\u8EA2\uCBD8\u0000\u0000" + // 19880 - 19884
+ "\u8EA2\uCBDD\u8EA2\uCBDB\u0000\uE9C3\u8EA2\uCBDF\u0000\uE9C7" + // 19885 - 19889
+ "\u0000\uE9CE\u0000\u0000\u8EA2\uCBB8\u8EA2\uD1C3\u8EA2\uCBC1" + // 19890 - 19894
+ "\u0000\u0000\u0000\uE9C1\u0000\uE9D3\u0000\uE9D0\u0000\uE9C4" + // 19895 - 19899
+ "\u8EA2\uCBCB\u8EA2\uCBBC\u0000\uE9D1\u8EA2\uCBCD\u0000\uE9CB" + // 19900 - 19904
+ "\u0000\uE9CD\u0000\uE9BC\u0000\u0000\u8EA2\uCBCF\u8EA2\uCBC7" + // 19905 - 19909
+ "\u8EA2\uCBBA\u0000\uE9CC\u8EA2\uCBD7\u8EA2\uCBDA\u8EA2\uCBC3" + // 19910 - 19914
+ "\u8EA2\uCBCE\u0000\u0000\u0000\uE9C2\u0000\uEDC9\u8EA2\uC4AD" + // 19915 - 19919
+ "\u8EA2\uC4B7\u0000\uE4E2\u8EA2\uC4C1\u0000\uE4EF\u0000\uE4E6" + // 19920 - 19924
+ "\u8EA2\uC4B4\u0000\uE4E5\u8EA2\uC4AB\u8EA2\uC4B9\u8EA2\uC4CD" + // 19925 - 19929
+ "\u0000\uE0C5\u0000\uE9D7\u8EA2\uC4BC\u8EA2\uCBB4\u8EA2\uC4BE" + // 19930 - 19934
+ "\u8EA2\uC4CC\u0000\uE4EC\u8EA2\uC4B5\u0000\uE4E0\u0000\uE4F0" + // 19935 - 19939
+ "\u0000\uEDDA\u8EA2\uC4AA\u0000\u0000\u8EA2\uC4C3\u0000\u0000" + // 19940 - 19944
+ "\u0000\u0000\u0000\u0000\u8EA2\uC4C2\u0000\u0000\u0000\u0000" + // 19945 - 19949
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19950 - 19954
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19955 - 19959
+ "\u0000\u0000\u0000\u0000\u8EA2\uCBD0\u0000\uE9D4\u8EA2\uCBC5" + // 19960 - 19964
+ "\u8EA2\uCBCA\u0000\uE9C9\u0000\u0000\u8EA2\uCBB6\u0000\uE9D6" + // 19965 - 19969
+ "\u0000\u0000\u0000\uE9C0\u8EA2\uCBB5\u8EA2\uCBD6\u0000\uE9D8" + // 19970 - 19974
+ "\u8EA2\uCBB9\u8EA2\uCBC9\u0000\u0000\u8EA2\uCBBB\u8EA2\uCBD9" + // 19975 - 19979
+ "\u8EA2\uCBD5\u0000\uE9BE\u0000\uE9C8\u8EA2\uBDBE\u8EA2\uBDB8" + // 19980 - 19984
+ "\u0000\u0000\u0000\uE0C2\u0000\uE0CA\u8EA2\uBDB4\u8EA2\uBDAD" + // 19985 - 19989
+ "\u8EA2\uBDAE\u0000\u0000\u8EA2\uBDB0\u0000\uE0B1\u8EA2\uBDBD" + // 19990 - 19994
+ "\u0000\u0000\u0000\uE0BF\u0000\uE0C8\u0000\u0000\u0000\u0000" + // 19995 - 19999
+ "\u8EA2\uBDBF\u8EA2\uBDD7\u8EA2\uBDCF\u0000\uE0AD\u8EA2\uBDD5" + // 20000 - 20004
+ "\u0000\uE0B9\u0000\u0000\u0000\uE0B7\u0000\u0000\u8EA2\uBDDB" + // 20005 - 20009
+ "\u0000\uE0B6\u8EA2\uBDC5\u8EA2\uBDB9\u8EA2\uBDC3\u0000\uE0CD" + // 20010 - 20014
+ "\u8EA2\uBDC9\u8EA2\uBDC6\u8EA2\uBDB5\u0000\uE0C9\u8EA2\uBDD3" + // 20015 - 20019
+ "\u8EA2\uBDD0\u8EA2\uBDD8\u0000\uE0B0\u8EA2\uBDC4\u0000\uE0CC" + // 20020 - 20024
+ "\u0000\u0000\u8EA2\uBDCB\u0000\u0000\u0000\u0000\u0000\uE0BA" + // 20025 - 20029
+ "\u0000\uE0BD\u0000\u0000\u8EA2\uBDCA\u0000\uE0CB\u8EA2\uBDBA" + // 20030 - 20034
+ "\u8EA2\uB6C8\u0000\u0000\u0000\u0000\u8EA2\uBDD4\u8EA2\uBDD2" + // 20035 - 20039
+ "\u8EA2\uBDD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20040 - 20044
+ "\u0000\u0000\u0000\u0000\u8EA2\uB2E6\u8EA2\uB2E3\u8EA2\uB2E1" + // 20045 - 20049
+ "\u0000\u0000\u0000\u0000\u0000\uD8A6\u8EA2\uB2E4\u0000\uD8AB" + // 20050 - 20054
+ "\u8EA2\uB2DE\u8EA2\uB2ED\u0000\u0000\u8EA2\uB2EF\u8EA2\uB2DF" + // 20055 - 20059
+ "\u0000\u0000\u0000\uD8A8\u8EA2\uB2F0\u8EA2\uB2EB\u8EA2\uB2DD" + // 20060 - 20064
+ "\u8EA2\uB2E2\u8EA2\uB2EC\u8EA2\uB2E8\u8EA2\uB2E5\u0000\u0000" + // 20065 - 20069
+ "\u0000\uD8AD\u8EA2\uB2EE\u8EA2\uB2E0\u0000\u0000\u0000\u0000" + // 20070 - 20074
+ "\u8EA2\uB2E9\u8EA2\uB2DB\u0000\uD8AC\u0000\uD8A9\u8EA2\uB2E7" + // 20075 - 20079
+ "\u0000\u0000\u8EA2\uB2EA\u8EA2\uB2DC\u0000\uD8AA\u0000\uD8A7" + // 20080 - 20084
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDDB2" + // 20085 - 20089
+ "\u8EA2\uB9A8\u0000\uDDB1\u0000\u0000\u8EA2\uB9AB\u8EA2\uB9AE" + // 20090 - 20094
+ "\u0000\uDDAE\u0000\uDDAC\u8EA2\uB9A3\u8EA2\uB9AC\u8EA2\uB9AA" + // 20095 - 20099
+ "\u8EA2\uB9A7\u8EA2\uB9AF\u8EA2\uB9B0\u8EA2\uB9B2\u8EA2\uB9B3" + // 20100 - 20104
+ "\u8EA2\uB9A2\u8EA2\uB6CF\u0000\u0000\u0000\u0000\u8EA2\uBDC1" + // 20105 - 20109
+ "\u0000\u0000\u0000\uDBD2\u0000\u0000\u0000\u0000\u0000\u0000" + // 20110 - 20114
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20115 - 20119
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20120 - 20124
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20125 - 20129
+ "\u0000\u0000\u0000\uE0C7\u0000\uDBDF\u0000\uE0B5\u8EA2\uBDBB" + // 20130 - 20134
+ "\u0000\uE0C3\u0000\u0000\u8EA2\uBDAF\u0000\uE0B2\u0000\uE0AE" + // 20135 - 20139
+ "\u8EA2\uBDCD\u0000\uE0B4\u0000\uE0B8\u0000\uE0B3\u0000\uE0BC" + // 20140 - 20144
+ "\u8EA2\uBDD1\u8EA2\uBDC8\u0000\u0000\u0000\u0000\u8EA2\uBDB6" + // 20145 - 20149
+ "\u0000\uE0C1\u0000\uE0BB\u8EA2\uBDC2\u0000\uE0AB\u8EA2\uBDCE" + // 20150 - 20154
+ "\u8EA2\uBDC7\u0000\uE0AF\u8EA2\uBDBC\u0000\uE0BE\u8EA2\uBDD9" + // 20155 - 20159
+ "\u8EA2\uBDDA\u0000\u0000\u0000\uE0AC\u8EA2\uBDCC\u0000\uE0C0" + // 20160 - 20164
+ "\u8EA2\uBDC0\u8EA2\uBDB2\u8EA2\uBDB3\u0000\uE0C4\u8EA2\uBDB7" + // 20165 - 20169
+ "\u8EA2\uB6C4\u0000\u0000\u8EA2\uB6E0\u0000\u0000\u0000\uDBE9" + // 20170 - 20174
+ "\u0000\uDBDD\u0000\uDBE8\u0000\uDBD3\u8EA2\uB6D0\u8EA2\uB6E2" + // 20175 - 20179
+ "\u8EA2\uB6DA\u0000\uDBD4\u0000\uDBCE\u8EA2\uB6E8\u0000\u0000" + // 20180 - 20184
+ "\u8EA2\uB6E1\u8EA2\uB6E3\u0000\uDBD6\u0000\uDBDE\u8EA2\uB6E5" + // 20185 - 20189
+ "\u8EA2\uB6CE\u8EA2\uB6DF\u8EA2\uB6D3\u8EA2\uB6E7\u0000\uDBE3" + // 20190 - 20194
+ "\u0000\uDBCB\u0000\uDBE1\u8EA2\uB6D8\u8EA2\uB6D6\u8EA2\uB6D7" + // 20195 - 20199
+ "\u0000\uDBD8\u8EA2\uB6D2\u8EA2\uB6D1\u0000\uDBCD\u8EA2\uB6CB" + // 20200 - 20204
+ "\u8EA2\uB6E9\u0000\uDBCF\u8EA2\uB6D5\u0000\uDBED\u0000\u0000" + // 20205 - 20209
+ "\u0000\uDBE7\u8EA2\uB6CA\u0000\uDBE4\u0000\uDBE2\u0000\uDBEB" + // 20210 - 20214
+ "\u8EA2\uB6DC\u0000\uDBE6\u8EA2\uB0B5\u8EA2\uB6DD\u0000\uDBE5" + // 20215 - 20219
+ "\u8EA2\uB6E4\u0000\uDBCA\u8EA2\uB6D9\u0000\uDBDC\u8EA2\uB6CD" + // 20220 - 20224
+ "\u0000\uDBDB\u0000\u0000\u0000\uDBD9\u0000\uDBD1\u0000\uDBD0" + // 20225 - 20229
+ "\u8EA2\uBDAC\u8EA2\uB6E6\u0000\u0000\u0000\u0000\u0000\uCCB2" + // 20230 - 20234
+ "\u0000\u0000\u0000\uD0A7\u8EA2\uA9B2\u0000\u0000\u8EA2\uA5D3" + // 20235 - 20239
+ "\u0000\uD0AC\u0000\u0000\u8EA2\uA9B3\u0000\uD0A8\u0000\uD0AB" + // 20240 - 20244
+ "\u0000\uD0AA\u0000\uD0A9\u0000\uD0A6\u0000\u0000\u0000\u0000" + // 20245 - 20249
+ "\u0000\u0000\u8EA2\uAEAB\u0000\u0000\u0000\uD4CA\u8EA2\uAEAE" + // 20250 - 20254
+ "\u0000\uD4C8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEAA" + // 20255 - 20259
+ "\u0000\uD4CB\u0000\uD4C9\u0000\uD4CC\u8EA2\uAEAC\u8EA2\uAEAD" + // 20260 - 20264
+ "\u0000\u0000\u8EA2\uAEA9\u8EA2\uAEAF\u0000\u0000\u0000\u0000" + // 20265 - 20269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEB7" + // 20270 - 20274
+ "\u0000\uD9AA\u8EA2\uB3EC\u8EA2\uB3EE\u8EA2\uB3ED\u8EA2\uB3EF" + // 20275 - 20279
+ "\u0000\uD9AB\u0000\u0000\u0000\u0000\u0000\uDEB4\u0000\u0000" + // 20280 - 20284
+ "\u0000\uDEB5\u0000\uDEB6\u0000\u0000\u0000\uE3B7\u8EA2\uC1EC" + // 20285 - 20289
+ "\u0000\u0000\u8EA2\uC1EB\u8EA2\uC1ED\u8EA2\uC1EE\u0000\uE3B8" + // 20290 - 20294
+ "\u0000\u0000\u0000\uE3B6\u8EA2\uB0C5\u0000\u0000\u8EA2\uB0BF" + // 20295 - 20299
+ "\u8EA2\uB0C8\u8EA2\uB0C6\u0000\uD6CC\u8EA2\uB0B7\u0000\uD6BD" + // 20300 - 20304
+ "\u0000\uD6BC\u0000\uD6C4\u0000\uD6CA\u8EA2\uB0C3\u0000\uD6C9" + // 20305 - 20309
+ "\u8EA2\uB0B4\u0000\uDBC8\u0000\u0000\u8EA2\uB0CC\u8EA2\uB0B3" + // 20310 - 20314
+ "\u8EA2\uB0AE\u0000\uD6C2\u0000\uD6CE\u0000\uD6BB\u0000\u0000" + // 20315 - 20319
+ "\u8EA2\uB0BB\u8EA2\uB0C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 20320 - 20324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20325 - 20329
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20330 - 20334
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDBEA" + // 20335 - 20339
+ "\u8EA2\uB6C5\u8EA2\uB6C9\u0000\u0000\u0000\uDBD7\u0000\uDBD5" + // 20340 - 20344
+ "\u0000\u0000\u0000\u0000\u0000\uDBCC\u8EA2\uB6C7\u8EA2\uB6C6" + // 20345 - 20349
+ "\u0000\uDBE0\u0000\u0000\u8EA2\uB6CC\u0000\uDBDA\u0000\u0000" + // 20350 - 20354
+ "\u8EA2\uB6DE\u8EA2\uB6EA\u0000\uDBC9\u8EA2\uB6DB\u8EA2\uB6D4" + // 20355 - 20359
+ "\u0000\uDBEC\u8EA2\uABE6\u0000\uD1FC\u8EA2\uABE0\u0000\u0000" + // 20360 - 20364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20365 - 20369
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20370 - 20374
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20375 - 20379
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20380 - 20384
+ "\u8EA2\uB0AF\u0000\uD6C1\u0000\uD6C6\u0000\u0000\u0000\u0000" + // 20385 - 20389
+ "\u0000\u0000\u8EA2\uB0B8\u8EA2\uB0BE\u8EA2\uB0BA\u8EA2\uB0AD" + // 20390 - 20394
+ "\u8EA2\uB0B0\u8EA2\uB0A9\u8EA2\uB0AA\u0000\uD6CD\u0000\uD6BE" + // 20395 - 20399
+ "\u8EA2\uB0B9\u8EA2\uB0C2\u0000\uD6C8\u0000\uD6BA\u0000\u0000" + // 20400 - 20404
+ "\u0000\uD6C3\u8EA2\uB0B1\u0000\uD6C5\u8EA2\uB0B2\u8EA2\uB0BC" + // 20405 - 20409
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6C7\u8EA2\uB0CB" + // 20410 - 20414
+ "\u8EA2\uB0AB\u0000\uD6C0\u0000\uD6BF\u0000\uD6CB\u8EA2\uB0A8" + // 20415 - 20419
+ "\u8EA2\uB0C9\u8EA2\uB0BD\u8EA2\uB0CA\u8EA2\uB0C4\u8EA2\uB0B6" + // 20420 - 20424
+ "\u8EA2\uABDE\u8EA2\uABE1\u0000\u0000\u8EA2\uABE4\u8EA2\uABD9" + // 20425 - 20429
+ "\u0000\u0000\u0000\u0000\u8EA2\uABE7\u8EA2\uABEA\u8EA2\uABEC" + // 20430 - 20434
+ "\u8EA2\uABD6\u0000\uD1F9\u0000\uD1FE\u8EA2\uB0AC\u0000\uD2B0" + // 20435 - 20439
+ "\u8EA2\uABE5\u8EA2\uABED\u8EA2\uABDD\u8EA2\uABD5\u0000\u0000" + // 20440 - 20444
+ "\u0000\u0000\u0000\u0000\u8EA2\uB0C7\u0000\uD2A3\u8EA2\uABE2" + // 20445 - 20449
+ "\u8EA2\uABDA\u8EA2\uABDC\u0000\uD2A8\u0000\u0000\u8EA2\uABDF" + // 20450 - 20454
+ "\u0000\uD2A2\u8EA2\uABD2\u8EA2\uABE8\u0000\u0000\u8EA2\uABEB" + // 20455 - 20459
+ "\u0000\u0000\u0000\u0000\u0000\uD1FD\u0000\u0000\u0000\uD2AB" + // 20460 - 20464
+ "\u8EA2\uABCF\u0000\uD2AD\u0000\uD1FB\u0000\uD2B1\u8EA2\uABE9" + // 20465 - 20469
+ "\u8EA2\uABD1\u0000\uD2AE\u8EA2\uB0C1\u8EA2\uA7E8\u0000\uD2A1" + // 20470 - 20474
+ "\u0000\uD1FA\u8EA2\uABD8\u8EA2\uABD0\u0000\uD2AF\u0000\uD2A7" + // 20475 - 20479
+ "\u8EA2\uABE3\u0000\uD2AC\u0000\uD2AA\u8EA2\uABDB\u0000\uD2A4" + // 20480 - 20484
+ "\u8EA2\uABD3\u0000\uD2A5\u0000\uD2A6\u8EA2\uABD4\u8EA2\uA7E7" + // 20485 - 20489
+ "\u0000\uCED3\u8EA2\uA7DA\u8EA2\uA7DC\u0000\uCED1\u0000\uCED6" + // 20490 - 20494
+ "\u8EA2\uA7DD\u8EA2\uA7EA\u0000\u0000\u0000\uD1F8\u0000\uCEDC" + // 20495 - 20499
+ "\u0000\u0000\u0000\uCEC6\u8EA2\uA7E9\u0000\u0000\u8EA2\uA7ED" + // 20500 - 20504
+ "\u8EA2\uA7D9\u8EA2\uA7EF\u8EA2\uA7E0\u0000\uCECF\u8EA2\uA7D5" + // 20505 - 20509
+ "\u0000\uCECE\u0000\uCEE0\u0000\uCED5\u0000\u0000\u8EA2\uA7D3" + // 20510 - 20514
+ "\u8EA2\uABD7\u0000\uCEDB\u0000\uCEDF\u8EA2\uA7E1\u8EA2\uA7E6" + // 20515 - 20519
+ "\u0000\u0000\u0000\uCEE1\u0000\uCEDA\u0000\uCECC\u0000\uCEC2" + // 20520 - 20524
+ "\u0000\u0000\u0000\uCEC7\u0000\u0000\u8EA2\uA7D7\u0000\uCEC3" + // 20525 - 20529
+ "\u8EA2\uA7EE\u0000\u0000\u8EA2\uA7D1\u8EA2\uA7D0\u8EA2\uA7DE" + // 20530 - 20534
+ "\u8EA2\uA7D2\u0000\uCEDE\u0000\uD6B9\u0000\uCED7\u8EA2\uA7DF" + // 20535 - 20539
+ "\u0000\uCEC4\u0000\u0000\u0000\uD2A9\u0000\u0000\u0000\u0000" + // 20540 - 20544
+ "\u0000\u0000\u8EA2\uA7EC\u0000\u0000\u0000\u0000\u0000\u0000" + // 20545 - 20549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2E7\u0000\u0000" + // 20550 - 20554
+ "\u0000\u0000\u8EA2\uD2E8\u0000\u0000\u0000\uEEB6\u8EA2\uD2EA" + // 20555 - 20559
+ "\u8EA2\uD2E9\u0000\u0000\u0000\uA3A3\u0000\u0000\u8EA2\uD9B6" + // 20560 - 20564
+ "\u8EA2\uD9B7\u8EA2\uD9B3\u0000\u0000\u8EA2\uD9B4\u0000\uF1E6" + // 20565 - 20569
+ "\u0000\uF1E7\u8EA2\uD9B5\u0000\u0000\u0000\uF4E1\u0000\u0000" + // 20570 - 20574
+ "\u0000\u0000\u0000\uF4DD\u0000\uF4E2\u0000\uF4DE\u0000\uF4E0" + // 20575 - 20579
+ "\u0000\uF4DC\u0000\u0000\u0000\uF4DF\u0000\u0000\u0000\u0000" + // 20580 - 20584
+ "\u0000\u0000\u0000\u0000\u0000\uF6FD\u8EA2\uDEBC\u0000\u0000" + // 20585 - 20589
+ "\u8EA2\uE6B8\u0000\u0000\u8EA2\uE6B7\u0000\u0000\u8EA2\uE9D8" + // 20590 - 20594
+ "\u0000\uFAA7\u0000\uFAA8\u8EA2\uEDEE\u8EA2\uEBF4\u0000\u0000" + // 20595 - 20599
+ "\u8EA2\uEDED\u0000\u0000\u8EA2\uF1AD\u8EA2\uF1F2\u0000\uC8CE" + // 20600 - 20604
+ "\u0000\u0000\u0000\u0000\u0000\uCBB7\u0000\u0000\u8EA2\uA8C9" + // 20605 - 20609
+ "\u0000\uCFAB\u0000\u0000\u8EA2\uC7D5\u8EA2\uC7D1\u8EA2\uC7D4" + // 20610 - 20614
+ "\u8EA2\uC7D2\u0000\uE6E4\u8EA2\uC7CC\u0000\uE6DF\u0000\u0000" + // 20615 - 20619
+ "\u0000\u0000\u0000\u0000\u8EA2\uCEB4\u0000\uEBA2\u0000\uEBA5" + // 20620 - 20624
+ "\u0000\u0000\u8EA2\uCEB6\u0000\u0000\u0000\uEBAD\u8EA2\uCEB5" + // 20625 - 20629
+ "\u0000\uEBA7\u0000\u0000\u0000\uEEF8\u8EA2\uCEB7\u0000\u0000" + // 20630 - 20634
+ "\u0000\uEBAC\u8EA2\uCEB3\u0000\uEBAE\u0000\u0000\u0000\u0000" + // 20635 - 20639
+ "\u0000\u0000\u0000\uEBA3\u0000\u0000\u0000\uE6E2\u0000\uEBA6" + // 20640 - 20644
+ "\u0000\u0000\u0000\uEBA4\u0000\uEBA8\u0000\uEBAA\u0000\uEBA1" + // 20645 - 20649
+ "\u0000\uEBAF\u0000\uEBAB\u0000\u0000\u0000\uEBA9\u8EA2\uCEB2" + // 20650 - 20654
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFA1" + // 20655 - 20659
+ "\u0000\u0000\u0000\uEEFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 20660 - 20664
+ "\u0000\uEFA4\u0000\u0000\u8EA2\uD4BF\u0000\uEFA5\u8EA2\uD4CB" + // 20665 - 20669
+ "\u8EA2\uD4C4\u0000\uEEF4\u8EA2\uD4CC\u8EA2\uD4C6\u0000\uEEFE" + // 20670 - 20674
+ "\u8EA2\uA7E5\u0000\uCAE8\u0000\uCBA1\u0000\uCAF6\u8EA2\uA4CE" + // 20675 - 20679
+ "\u0000\uCAEB\u0000\uCAFA\u8EA2\uA4D6\u0000\uCAE9\u0000\uCAEA" + // 20680 - 20684
+ "\u8EA2\uA7E3\u8EA2\uA4CF\u0000\uCAF1\u0000\uCAFC\u8EA2\uA4DD" + // 20685 - 20689
+ "\u8EA2\uA4D0\u0000\uCAEF\u0000\u0000\u0000\uCAF4\u8EA2\uA7CF" + // 20690 - 20694
+ "\u0000\uCAFD\u8EA2\uA4D7\u0000\uCAF3\u0000\u0000\u0000\uCAFE" + // 20695 - 20699
+ "\u0000\uCAE7\u8EA2\uA4D4\u0000\uCAEC\u8EA2\uA4D8\u8EA2\uA7E4" + // 20700 - 20704
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20705 - 20709
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20710 - 20714
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCECD\u0000\uCEDD" + // 20715 - 20719
+ "\u8EA2\uA7D6\u0000\uCED4\u0000\u0000\u8EA2\uA7EB\u0000\uCEC5" + // 20720 - 20724
+ "\u0000\u0000\u0000\uCEC8\u8EA2\uA7E2\u0000\u0000\u8EA2\uA7D4" + // 20725 - 20729
+ "\u8EA2\uA7D8\u0000\uCED0\u0000\uCED2\u8EA2\uA7DB\u0000\uCED9" + // 20730 - 20734
+ "\u0000\uCECB\u0000\uCEC9\u0000\uCECA\u0000\uCED8\u0000\uC6E5" + // 20735 - 20739
+ "\u0000\uC6E4\u0000\uCAE5\u8EA2\uA1E1\u0000\u0000\u0000\u0000" + // 20740 - 20744
+ "\u8EA2\uA2D9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2DD" + // 20745 - 20749
+ "\u8EA2\uA2DF\u8EA2\uA2E0\u0000\uC8C6\u0000\uC8C7\u8EA2\uA2DC" + // 20750 - 20754
+ "\u0000\uC8C2\u0000\u0000\u8EA2\uA2DA\u0000\u0000\u8EA2\uA2DE" + // 20755 - 20759
+ "\u0000\uC8C3\u0000\u0000\u0000\uC8BE\u0000\u0000\u0000\uC8BF" + // 20760 - 20764
+ "\u0000\u0000\u0000\uC8C5\u8EA2\uA2DB\u0000\uC8BD\u0000\uCAE6" + // 20765 - 20769
+ "\u0000\uC8C0\u0000\uC8C1\u0000\uC8C4\u0000\u0000\u0000\u0000" + // 20770 - 20774
+ "\u0000\u0000\u8EA2\uA4DB\u8EA2\uA4D9\u8EA2\uA4CC\u0000\uCAF2" + // 20775 - 20779
+ "\u8EA2\uA4D3\u0000\uCAED\u8EA2\uA4CD\u0000\u0000\u8EA2\uA4D5" + // 20780 - 20784
+ "\u0000\u0000\u8EA2\uA4D2\u0000\uCAF0\u8EA2\uA4D1\u0000\uCAF7" + // 20785 - 20789
+ "\u8EA2\uA4DA\u0000\uCAF9\u0000\u0000\u0000\uCAFB\u0000\u0000" + // 20790 - 20794
+ "\u8EA2\uA4CB\u0000\u0000\u0000\uCAEE\u8EA2\uA4DC\u0000\u0000" + // 20795 - 20799
+ "\u0000\uCAF5\u0000\uCAF8\u0000\u0000\u0000\uD3D1\u8EA2\uB9C8" + // 20800 - 20804
+ "\u0000\uE1FD\u0000\u0000\u8EA2\uC7C1\u0000\uF7BB\u0000\u0000" + // 20805 - 20809
+ "\u8EA2\uE6FD\u0000\u0000\u0000\u0000\u0000\uCBC4\u0000\u0000" + // 20810 - 20814
+ "\u0000\u0000\u0000\u0000\u0000\uDDBD\u0000\u0000\u0000\u0000" + // 20815 - 20819
+ "\u0000\u0000\u0000\uDDBC\u0000\u0000\u8EA2\uC0B6\u0000\uE1FE" + // 20820 - 20824
+ "\u8EA2\uC0B8\u8EA2\uC0B7\u0000\u0000\u0000\u0000\u8EA2\uC7C2" + // 20825 - 20829
+ "\u0000\uE6D7\u8EA2\uCEAB\u8EA2\uCEAE\u8EA2\uCEAD\u0000\u0000" + // 20830 - 20834
+ "\u8EA2\uCEAC\u8EA2\uD4B7\u8EA2\uD4B9\u8EA2\uD4B8\u0000\u0000" + // 20835 - 20839
+ "\u0000\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2B5" + // 20840 - 20844
+ "\u0000\u0000\u0000\uF5C6\u8EA2\uDFC7\u8EA2\uDFC9\u8EA2\uDFC8" + // 20845 - 20849
+ "\u0000\u0000\u0000\u0000\u0000\uF7BC\u0000\u0000\u0000\u0000" + // 20850 - 20854
+ "\u0000\u0000\u8EA2\uE7A1\u8EA2\uE6FE\u0000\u0000\u8EA2\uE9F8" + // 20855 - 20859
+ "\u0000\uFABC\u0000\u0000\u0000\u0000\u0000\uFBAA\u8EA2\uEEA3" + // 20860 - 20864
+ "\u8EA2\uEEA2\u8EA2\uD1BF\u8EA2\uD1BE\u8EA2\uD1C1\u8EA2\uD7F2" + // 20865 - 20869
+ "\u8EA2\uD7F1\u0000\uF1A6\u8EA2\uD7F3\u0000\u0000\u0000\uF4A1" + // 20870 - 20874
+ "\u8EA2\uDDB9\u0000\u0000\u8EA2\uE1F6\u8EA2\uE5E6\u8EA2\uEDD5" + // 20875 - 20879
+ "\u0000\u0000\u0000\uC5D4\u0000\uC6E2\u0000\uC6E1\u0000\u0000" + // 20880 - 20884
+ "\u0000\uCEC0\u8EA2\uA1C1\u8EA2\uA1DF\u0000\uC8BC\u0000\u0000" + // 20885 - 20889
+ "\u8EA2\uA2D8\u8EA2\uA4C9\u8EA2\uA4CA\u0000\uCEC1\u0000\u0000" + // 20890 - 20894
+ "\u8EA2\uA7CE\u0000\u0000\u0000\uD1F7\u8EA2\uABCD\u8EA2\uABCE" + // 20895 - 20899
+ "\u0000\u0000\u0000\uD6B4\u0000\uD6B8\u8EA2\uB0A7\u0000\uD6B7" + // 20900 - 20904
+ "\u0000\uD6B5\u0000\uD6B6\u0000\u0000\u8EA2\uB6C3\u0000\uDBC7" + // 20905 - 20909
+ "\u0000\uE0AA\u0000\u0000\u0000\uE0A8\u0000\uE0A9\u8EA2\uBDAB" + // 20910 - 20914
+ "\u0000\u0000\u0000\u0000\u0000\uE9BB\u0000\uC5D5\u0000\u0000" + // 20915 - 20919
+ "\u8EA2\uA1E0\u0000\u0000\u0000\uC6E3\u0000\u0000\u0000\u0000" + // 20920 - 20924
+ "\u8EA2\uA1E3\u0000\u0000\u0000\u0000\u0000\uC6E6\u8EA2\uA1E2" + // 20925 - 20929
+ "\u0000\uE4DA\u0000\u0000\u0000\u0000\u8EA2\uCBB1\u8EA2\uCBB2" + // 20930 - 20934
+ "\u0000\uEDC7\u0000\uEDC8\u8EA2\uD7F0\u8EA2\uD7EF\u8EA2\uE1F5" + // 20935 - 20939
+ "\u8EA2\uEFB2\u0000\uC5D1\u8EA2\uA1C0\u0000\uC6E0\u0000\u0000" + // 20940 - 20944
+ "\u0000\uCAE4\u8EA2\uA4C8\u0000\u0000\u0000\uD1F5\u0000\uE4DC" + // 20945 - 20949
+ "\u0000\uC5D2\u0000\u0000\u8EA2\uABCA\u0000\uD1F6\u8EA2\uABCB" + // 20950 - 20954
+ "\u0000\u0000\u0000\uF3FE\u0000\uC5D3\u0000\u0000\u0000\u0000" + // 20955 - 20959
+ "\u8EA2\uA7CD\u0000\u0000\u8EA2\uABCC\u0000\u0000\u8EA2\uB0A5" + // 20960 - 20964
+ "\u8EA2\uB0A4\u8EA2\uB0A2\u0000\u0000\u8EA2\uB0A1\u8EA2\uB0A6" + // 20965 - 20969
+ "\u8EA2\uB0A3\u0000\u0000\u0000\u0000\u0000\uDBC5\u0000\uDBC6" + // 20970 - 20974
+ "\u0000\u0000\u0000\u0000\u0000\uE0A7\u8EA2\uBDA8\u0000\u0000" + // 20975 - 20979
+ "\u8EA2\uBDA9\u8EA2\uBDAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 20980 - 20984
+ "\u8EA2\uC4A7\u8EA2\uC4A8\u8EA2\uC4A6\u0000\u0000\u8EA2\uC4A4" + // 20985 - 20989
+ "\u8EA2\uC4A5\u0000\uE4DD\u8EA2\uCBB3\u8EA2\uD1C0\u8EA2\uA7CB" + // 20990 - 20994
+ "\u0000\u0000\u8EA2\uABC7\u0000\uD1F2\u8EA2\uABC8\u0000\u0000" + // 20995 - 20999
+ "\u0000\uD1F3\u0000\u0000\u8EA2\uAFFE\u0000\uD6B2\u0000\uD6B1" + // 21000 - 21004
+ "\u0000\u0000\u8EA2\uB6C2\u8EA2\uB6C0\u8EA2\uB6C1\u8EA2\uB6BF" + // 21005 - 21009
+ "\u0000\u0000\u8EA2\uB6BE\u0000\u0000\u0000\u0000\u8EA2\uBDA3" + // 21010 - 21014
+ "\u8EA2\uBDA6\u0000\uE0A5\u8EA2\uBDA4\u0000\uE0A4\u8EA2\uBDA5" + // 21015 - 21019
+ "\u0000\u0000\u8EA2\uC4A3\u0000\u0000\u0000\u0000\u8EA2\uCBAE" + // 21020 - 21024
+ "\u8EA2\uCBAF\u8EA2\uCBB0\u0000\u0000\u8EA2\uD1BC\u8EA2\uD1BB" + // 21025 - 21029
+ "\u0000\uEDC6\u8EA2\uD1BA\u8EA2\uD1BD\u8EA2\uD7EC\u0000\u0000" + // 21030 - 21034
+ "\u0000\u0000\u8EA2\uD7ED\u8EA2\uD7EE\u0000\u0000\u8EA2\uDDB8" + // 21035 - 21039
+ "\u0000\uF3FD\u0000\uF6D8\u8EA2\uE5E5\u0000\u0000\u0000\uFAF3" + // 21040 - 21044
+ "\u8EA2\uA1BF\u0000\u0000\u0000\uD1F4\u8EA2\uABC9\u0000\uD6B3" + // 21045 - 21049
+ "\u0000\u0000\u0000\u0000\u0000\uDBC4\u0000\u0000\u0000\uE0A6" + // 21050 - 21054
+ "\u8EA2\uBDA7\u0000\u0000\u0000\uE4DB\u8EA2\uEBE0\u0000\u0000" + // 21055 - 21059
+ "\u8EA2\uEBDC\u8EA2\uEBDE\u0000\uFAF1\u0000\u0000\u0000\u0000" + // 21060 - 21064
+ "\u0000\u0000\u8EA2\uEDD3\u8EA2\uEDD4\u0000\uFBE2\u8EA2\uEDD2" + // 21065 - 21069
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFB1\u0000\uFCBB" + // 21070 - 21074
+ "\u8EA2\uEFAF\u8EA2\uEFB0\u8EA2\uF0BA\u0000\u0000\u0000\u0000" + // 21075 - 21079
+ "\u0000\uFDA3\u8EA2\uF1A3\u8EA2\uF1A1\u8EA2\uF1A2\u8EA2\uF1A4" + // 21080 - 21084
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF2AB\u0000\u0000" + // 21085 - 21089
+ "\u0000\uC5CE\u0000\uC8B9\u0000\u0000\u0000\uCEBC\u0000\u0000" + // 21090 - 21094
+ "\u8EA2\uA7CA\u0000\u0000\u0000\u0000\u8EA2\uABC6\u0000\u0000" + // 21095 - 21099
+ "\u0000\u0000\u0000\u0000\u8EA2\uAFF7\u8EA2\uAFF9\u0000\u0000" + // 21100 - 21104
+ "\u8EA2\uAFF8\u0000\u0000\u8EA2\uAFFA\u0000\uDBC3\u8EA2\uB6BB" + // 21105 - 21109
+ "\u8EA2\uAFFB\u0000\u0000\u8EA2\uB6BA\u8EA2\uB6BC\u8EA2\uB6BD" + // 21110 - 21114
+ "\u8EA2\uBCFD\u0000\uE0A2\u8EA2\uBCFE\u8EA2\uBDA2\u0000\uE0A3" + // 21115 - 21119
+ "\u0000\uE0A1\u8EA2\uBDA1\u0000\uF3F1\u8EA2\uDDA2\u0000\u0000" + // 21120 - 21124
+ "\u8EA2\uDDAD\u0000\uF3F3\u8EA2\uDDB4\u0000\u0000\u8EA2\uDDA9" + // 21125 - 21129
+ "\u0000\u0000\u8EA2\uDDA4\u0000\u0000\u0000\u0000\u8EA2\uDDB5" + // 21130 - 21134
+ "\u8EA2\uDCFE\u8EA2\uDDAB\u0000\u0000\u0000\uF3FA\u8EA2\uDDB0" + // 21135 - 21139
+ "\u8EA2\uDDB6\u8EA2\uDDAA\u0000\uF3F2\u8EA2\uDDAC\u8EA2\uDDA1" + // 21140 - 21144
+ "\u0000\uF3F9\u0000\u0000\u0000\u0000\u8EA2\uDDB3\u8EA2\uDDA6" + // 21145 - 21149
+ "\u0000\uF3F5\u0000\u0000\u8EA2\uDDA8\u8EA2\uDDA5\u0000\uF3FB" + // 21150 - 21154
+ "\u8EA2\uDDA7\u0000\uF3F4\u0000\uF3F7\u8EA2\uDDAF\u8EA2\uDDA3" + // 21155 - 21159
+ "\u8EA2\uDDB2\u0000\u0000\u8EA2\uDDAE\u0000\u0000\u0000\u0000" + // 21160 - 21164
+ "\u0000\u0000\u0000\uF6CF\u8EA2\uE1F3\u0000\uF6D4\u0000\uF6D5" + // 21165 - 21169
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6CE\u8EA2\uE1F2" + // 21170 - 21174
+ "\u0000\u0000\u8EA2\uE1EF\u8EA2\uE1F0\u0000\uF6D2\u8EA2\uE1EA" + // 21175 - 21179
+ "\u8EA2\uE1EE\u0000\uF6D1\u0000\u0000\u8EA2\uE1EB\u0000\u0000" + // 21180 - 21184
+ "\u0000\u0000\u8EA2\uC1E3\u8EA2\uC1E1\u0000\u0000\u8EA2\uC1DD" + // 21185 - 21189
+ "\u0000\uE3AF\u8EA2\uC1DB\u0000\uE3B5\u8EA2\uC1E0\u8EA2\uC1E7" + // 21190 - 21194
+ "\u8EA2\uC1DE\u8EA2\uC1E6\u0000\u0000\u0000\u0000\u0000\uE7FC" + // 21195 - 21199
+ "\u0000\uE7F9\u0000\u0000\u0000\uE7FA\u0000\u0000\u8EA2\uC9A1" + // 21200 - 21204
+ "\u8EA2\uC8F7\u0000\uE7F8\u0000\uE7F5\u8EA2\uC8F8\u0000\u0000" + // 21205 - 21209
+ "\u0000\u0000\u0000\uE7F7\u8EA2\uC8FB\u0000\u0000\u8EA2\uC8FD" + // 21210 - 21214
+ "\u0000\u0000\u0000\u0000\u8EA2\uC9A6\u0000\u0000\u0000\u0000" + // 21215 - 21219
+ "\u8EA2\uC9A5\u8EA2\uC8FE\u0000\uE7F4\u8EA2\uC8F6\u0000\uE7F2" + // 21220 - 21224
+ "\u8EA2\uC8F9\u0000\uE7FD\u8EA2\uC8FC\u0000\u0000\u8EA2\uC9A2" + // 21225 - 21229
+ "\u0000\uE7F6\u0000\uE7F3\u8EA2\uC9A4\u8EA2\uC9A3\u0000\uE7FB" + // 21230 - 21234
+ "\u0000\u0000\u8EA2\uC8FA\u0000\u0000\u0000\uECA3\u8EA2\uCFD4" + // 21235 - 21239
+ "\u0000\u0000\u8EA2\uCFD1\u0000\uECA4\u0000\u0000\u0000\uECA2" + // 21240 - 21244
+ "\u0000\u0000\u8EA2\uCFD8\u8EA2\uCFD5\u8EA2\uCFCE\u8EA2\uD1A8" + // 21245 - 21249
+ "\u8EA2\uD7D9\u0000\u0000\u0000\u0000\u0000\uF0FA\u0000\u0000" + // 21250 - 21254
+ "\u8EA2\uD7E8\u0000\uF0FE\u0000\uF1A3\u8EA2\uD7CB\u0000\u0000" + // 21255 - 21259
+ "\u0000\uF0FD\u0000\u0000\u8EA2\uD7E6\u8EA2\uD7E7\u8EA2\uD7DD" + // 21260 - 21264
+ "\u8EA2\uD7DC\u8EA2\uD7D4\u0000\u0000\u0000\u0000\u8EA2\uD7DE" + // 21265 - 21269
+ "\u8EA2\uD7E5\u8EA2\uD7E4\u0000\u0000\u0000\uF0F8\u0000\uF0F6" + // 21270 - 21274
+ "\u8EA2\uD7D6\u8EA2\uD7D3\u0000\u0000\u8EA2\uD7D0\u8EA2\uD7E3" + // 21275 - 21279
+ "\u0000\uF1A2\u8EA2\uD7E1\u0000\uF0FC\u0000\uF0FB\u0000\u0000" + // 21280 - 21284
+ "\u8EA2\uD7DB\u0000\u0000\u8EA2\uD7CA\u8EA2\uD7CC\u8EA2\uD7CE" + // 21285 - 21289
+ "\u8EA2\uD7E0\u8EA2\uD7DA\u0000\uF0F7\u0000\u0000\u8EA2\uD7D1" + // 21290 - 21294
+ "\u0000\u0000\u8EA2\uD7DF\u0000\u0000\u0000\u0000\u0000\u0000" + // 21295 - 21299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7D2\u0000\u0000" + // 21300 - 21304
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21305 - 21309
+ "\u0000\u0000\u0000\uF3F8\u8EA2\uDDB1\u8EA2\uD0F1\u0000\uEDB8" + // 21310 - 21314
+ "\u0000\uEDC0\u0000\u0000\u8EA2\uD1B0\u0000\uEDC1\u8EA2\uD0F2" + // 21315 - 21319
+ "\u8EA2\uD1B6\u8EA2\uD1A9\u8EA2\uD1AF\u0000\uEDBE\u0000\u0000" + // 21320 - 21324
+ "\u0000\u0000\u8EA2\uD1AC\u0000\u0000\u8EA2\uD1B3\u0000\u0000" + // 21325 - 21329
+ "\u0000\uEDC3\u0000\u0000\u0000\uEDBD\u8EA2\uD1A5\u8EA2\uD0F6" + // 21330 - 21334
+ "\u8EA2\uD1B8\u8EA2\uD0F3\u8EA2\uD1B1\u0000\uEDBA\u0000\u0000" + // 21335 - 21339
+ "\u8EA2\uD0FD\u0000\u0000\u8EA2\uD0FE\u0000\uEDB9\u0000\uEDB6" + // 21340 - 21344
+ "\u8EA2\uD0F9\u0000\uEDBC\u0000\u0000\u0000\uEDB5\u0000\u0000" + // 21345 - 21349
+ "\u8EA2\uD1B2\u8EA2\uD1B5\u8EA2\uD1A2\u8EA2\uD7D5\u0000\u0000" + // 21350 - 21354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21355 - 21359
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7CD\u0000\u0000" + // 21360 - 21364
+ "\u8EA2\uD7C9\u0000\uF1A1\u0000\u0000\u0000\u0000\u0000\uF0F4" + // 21365 - 21369
+ "\u0000\uF0F9\u0000\uF0F5\u8EA2\uD7D7\u8EA2\uD7E2\u0000\uF0F3" + // 21370 - 21374
+ "\u8EA2\uD7CF\u8EA2\uD7D8\u8EA2\uC3E8\u8EA2\uC3ED\u8EA2\uC3D9" + // 21375 - 21379
+ "\u0000\u0000\u8EA2\uC3EA\u8EA2\uC3D6\u0000\u0000\u0000\u0000" + // 21380 - 21384
+ "\u8EA2\uC3DD\u8EA2\uC3DE\u0000\uE4CE\u8EA2\uC3F1\u8EA2\uC3EF" + // 21385 - 21389
+ "\u0000\u0000\u8EA2\uC3D2\u8EA2\uC3F4\u0000\u0000\u8EA2\uC3F5" + // 21390 - 21394
+ "\u8EA2\uC3F7\u0000\uE4D2\u0000\uE4CA\u0000\u0000\u8EA2\uB5FA" + // 21395 - 21399
+ "\u8EA2\uC3DA\u8EA2\uC3EC\u8EA2\uC3DB\u0000\uE4C7\u0000\uE4D7" + // 21400 - 21404
+ "\u8EA2\uC3F3\u0000\uE4D5\u0000\uE4D1\u8EA2\uC3D0\u0000\uE4C9" + // 21405 - 21409
+ "\u0000\u0000\u8EA2\uC3D3\u0000\uE4D6\u0000\u0000\u8EA2\uC3E3" + // 21410 - 21414
+ "\u8EA2\uC3CF\u0000\u0000\u0000\uE4CF\u8EA2\uC3E7\u8EA2\uC3D7" + // 21415 - 21419
+ "\u0000\uE4D0\u8EA2\uC3E0\u0000\uE4C6\u0000\uDFFD\u8EA2\uC3E9" + // 21420 - 21424
+ "\u8EA2\uBCE2\u8EA2\uC3D4\u0000\u0000\u0000\u0000\u8EA2\uC3EE" + // 21425 - 21429
+ "\u0000\uE4CB\u8EA2\uC3EB\u0000\uE4C8\u8EA2\uC3E5\u0000\uE4D3" + // 21430 - 21434
+ "\u8EA2\uC3DC\u8EA2\uC3F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21435 - 21439
+ "\u0000\u0000\u8EA2\uE6C5\u0000\u0000\u0000\uF8E5\u8EA2\uE6C6" + // 21440 - 21444
+ "\u8EA2\uEDF1\u0000\uFCE5\u8EA2\uF0C8\u0000\uC8D0\u0000\uCFAE" + // 21445 - 21449
+ "\u0000\uCFAD\u8EA2\uACF0\u0000\uD3A1\u0000\u0000\u0000\u0000" + // 21450 - 21454
+ "\u8EA2\uACEF\u8EA2\uB2A6\u0000\u0000\u0000\uD7CF\u8EA2\uB8B7" + // 21455 - 21459
+ "\u8EA2\uB2A5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCE1" + // 21460 - 21464
+ "\u8EA2\uB8BA\u8EA2\uB8B8\u8EA2\uB8B9\u0000\uDCE0\u0000\u0000" + // 21465 - 21469
+ "\u8EA2\uBFA7\u8EA2\uBFA8\u8EA2\uBFA6\u0000\u0000\u0000\uE5FA" + // 21470 - 21474
+ "\u8EA2\uC6B4\u8EA2\uC6B3\u8EA2\uC6B5\u0000\uE5F9\u0000\uE5F8" + // 21475 - 21479
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2FA\u8EA2\uD2FC\u0000\u0000" + // 21480 - 21484
+ "\u0000\uEEC9\u8EA2\uD2FB\u8EA2\uD9CF\u0000\uF1F2\u8EA2\uE2E5" + // 21485 - 21489
+ "\u0000\u0000\u8EA2\uE2E4\u0000\uF8E6\u8EA2\uE6C7\u0000\uF8E8" + // 21490 - 21494
+ "\u0000\uF8E7\u8EA2\uE9DD\u8EA2\uEBFC\u0000\uFAFE\u0000\uC8D1" + // 21495 - 21499
+ "\u8EA2\uACF1\u0000\uD3A2\u8EA2\uB6AB\u0000\uDBAD\u0000\uDBC2" + // 21500 - 21504
+ "\u0000\uDBB8\u0000\u0000\u0000\uDBBC\u0000\uDBBB\u8EA2\uB5F3" + // 21505 - 21509
+ "\u0000\u0000\u8EA2\uB6B2\u8EA2\uB6B8\u8EA2\uB6B0\u8EA2\uB6B7" + // 21510 - 21514
+ "\u0000\u0000\u0000\u0000\u8EA2\uB6A4\u8EA2\uB5F4\u8EA2\uB6B6" + // 21515 - 21519
+ "\u8EA2\uB6A6\u0000\uDBB0\u0000\uDBBD\u0000\u0000\u8EA2\uB6AF" + // 21520 - 21524
+ "\u0000\uDBB6\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB6AE" + // 21525 - 21529
+ "\u8EA2\uB5F5\u0000\uDBBE\u0000\u0000\u0000\uDBC0\u8EA2\uB6B1" + // 21530 - 21534
+ "\u0000\uDBC1\u0000\uDBAF\u8EA2\uB5FC\u8EA2\uB6B3\u0000\u0000" + // 21535 - 21539
+ "\u0000\u0000\u0000\uDBB5\u0000\uDBBF\u8EA2\uB5FE\u8EA2\uB6AA" + // 21540 - 21544
+ "\u8EA2\uB5F9\u8EA2\uB5FD\u0000\uDBBA\u8EA2\uB5F8\u0000\uDBAE" + // 21545 - 21549
+ "\u0000\uDBB7\u0000\uDBB4\u8EA2\uB6A3\u0000\uD6A2\u8EA2\uBCE3" + // 21550 - 21554
+ "\u0000\uDBB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21555 - 21559
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21560 - 21564
+ "\u0000\u0000\u8EA2\uA3E7\u0000\u0000\u8EA2\uA3E2\u8EA2\uA3E4" + // 21565 - 21569
+ "\u8EA2\uA3E6\u8EA2\uA3E3\u0000\uCAA6\u8EA2\uA3E0\u0000\u0000" + // 21570 - 21574
+ "\u8EA2\uA3E1\u0000\uCAA3\u0000\uCAA4\u8EA2\uA3E5\u8EA2\uA3E8" + // 21575 - 21579
+ "\u0000\uCAA5\u8EA2\uA3E9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21580 - 21584
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6C9" + // 21585 - 21589
+ "\u0000\u0000\u8EA2\uA6C3\u8EA2\uA6BE\u0000\uCDA5\u8EA2\uA6C6" + // 21590 - 21594
+ "\u8EA2\uA6C4\u8EA2\uA6BD\u8EA2\uA6CA\u8EA2\uA6CD\u8EA2\uA6C8" + // 21595 - 21599
+ "\u8EA2\uA6C1\u0000\uCDA7\u8EA2\uA6C7\u0000\uCDA8\u8EA2\uA6C2" + // 21600 - 21604
+ "\u8EA2\uA6C5\u8EA2\uA6BC\u8EA2\uA6C0\u8EA2\uA6CC\u0000\uCDA9" + // 21605 - 21609
+ "\u0000\u0000\u0000\uCDAA\u0000\u0000\u8EA2\uA6BF\u8EA2\uA6CB" + // 21610 - 21614
+ "\u0000\uCDA4\u0000\uCDA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 21615 - 21619
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1F8" + // 21620 - 21624
+ "\u0000\uA1F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21625 - 21629
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21630 - 21634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21635 - 21639
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21640 - 21644
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21645 - 21649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21650 - 21654
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21655 - 21659
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21660 - 21664
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21665 - 21669
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21670 - 21674
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21675 - 21679
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC7\u0000\u0000" + // 21680 - 21684
+ "\u8EA2\uB9D0\u0000\u0000\u8EA2\uB9D1\u8EA2\uC7D8\u8EA2\uCEB8" + // 21685 - 21689
+ "\u8EA2\uD4CE\u0000\uF5D1\u0000\uD6A9\u0000\uD6B0\u0000\uD5FD" + // 21690 - 21694
+ "\u0000\uD6AB\u8EA2\uAFEB\u0000\uD6AD\u0000\uD5FA\u0000\u0000" + // 21695 - 21699
+ "\u0000\uD5F9\u8EA2\uAFDD\u0000\u0000\u8EA2\uAFE1\u0000\uD6A4" + // 21700 - 21704
+ "\u8EA2\uAFF3\u8EA2\uAFEA\u8EA2\uAFE2\u0000\uD6A8\u0000\uD6A5" + // 21705 - 21709
+ "\u0000\u0000\u0000\uD5FB\u0000\uD5FE\u0000\u0000\u0000\u0000" + // 21710 - 21714
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21715 - 21719
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21720 - 21724
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21725 - 21729
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21730 - 21734
+ "\u8EA2\uB6A8\u0000\u0000\u8EA2\uB5F6\u8EA2\uB5F7\u8EA2\uB5FB" + // 21735 - 21739
+ "\u0000\u0000\u8EA2\uB6AC\u8EA2\uB6A9\u0000\u0000\u8EA2\uB6A2" + // 21740 - 21744
+ "\u8EA2\uB6A1\u0000\uDBB3\u8EA2\uB6A5\u8EA2\uB6B4\u8EA2\uB5F2" + // 21745 - 21749
+ "\u0000\u0000\u8EA2\uB6B5\u8EA2\uB6A7\u8EA2\uB6B9\u8EA2\uB6AD" + // 21750 - 21754
+ "\u0000\uDBB2\u8EA2\uABA6\u8EA2\uAAFC\u8EA2\uABB3\u8EA2\uABC3" + // 21755 - 21759
+ "\u0000\uD1E3\u8EA2\uABA8\u8EA2\uABBA\u0000\u0000\u8EA2\uAAFE" + // 21760 - 21764
+ "\u8EA2\uABC1\u8EA2\uABC2\u8EA2\uABC5\u8EA2\uABBC\u8EA2\uABAD" + // 21765 - 21769
+ "\u8EA2\uABB5\u0000\uD1E9\u0000\uD1DC\u0000\uD1E4\u0000\uD1F0" + // 21770 - 21774
+ "\u0000\uD1D9\u0000\uD1DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 21775 - 21779
+ "\u8EA2\uABA5\u0000\uD1ED\u0000\uD1E6\u8EA2\uABBF\u8EA2\uABA2" + // 21780 - 21784
+ "\u0000\uD1EF\u0000\uD1EA\u8EA2\uABAB\u0000\u0000\u0000\u0000" + // 21785 - 21789
+ "\u0000\uD1EE\u8EA2\uABB2\u8EA2\uABAA\u0000\uD1E7\u8EA2\uABBE" + // 21790 - 21794
+ "\u8EA2\uABB6\u0000\u0000\u0000\uD1E1\u8EA2\uABC4\u8EA2\uABA9" + // 21795 - 21799
+ "\u0000\uD1DD\u8EA2\uABBB\u8EA2\uABB1\u0000\uD1E2\u8EA2\uABB7" + // 21800 - 21804
+ "\u0000\uD1DA\u8EA2\uAAFD\u0000\uD1EB\u0000\uD6A7\u0000\uD1E0" + // 21805 - 21809
+ "\u8EA2\uABB0\u8EA2\uABAF\u8EA2\uABA4\u0000\u0000\u8EA2\uABC0" + // 21810 - 21814
+ "\u0000\u0000\u8EA2\uABB9\u0000\u0000\u0000\u0000\u0000\uD1D8" + // 21815 - 21819
+ "\u0000\uDEB2\u8EA2\uBCCC\u0000\u0000\u0000\uE4C4\u8EA2\uCAE1" + // 21820 - 21824
+ "\u8EA2\uCAE0\u0000\u0000\u0000\u0000\u0000\uC5CC\u0000\uC8B4" + // 21825 - 21829
+ "\u8EA2\uA7B3\u0000\uCEA5\u0000\u0000\u0000\uCEA4\u0000\u0000" + // 21830 - 21834
+ "\u8EA2\uAAFA\u8EA2\uAAFB\u0000\u0000\u8EA2\uAFD9\u8EA2\uAFDA" + // 21835 - 21839
+ "\u0000\uD5F4\u0000\uD5F5\u0000\u0000\u0000\uD5F6\u8EA2\uB5F1" + // 21840 - 21844
+ "\u0000\u0000\u0000\u0000\u0000\uDBAC\u0000\u0000\u0000\uDFE7" + // 21845 - 21849
+ "\u0000\u0000\u0000\uDFE6\u8EA2\uC3CE\u8EA2\uC6C1\u8EA2\uCAE2" + // 21850 - 21854
+ "\u8EA2\uD7C8\u0000\u0000\u0000\u0000\u0000\uF6CD\u0000\uF9F2" + // 21855 - 21859
+ "\u0000\uC5CD\u0000\u0000\u0000\uC6DC\u0000\uC6DD\u0000\uC6DB" + // 21860 - 21864
+ "\u0000\uC6DE\u0000\uC6DA\u0000\u0000\u0000\u0000\u0000\uC8B7" + // 21865 - 21869
+ "\u0000\u0000\u8EA2\uA2D7\u0000\uC8B6\u0000\uC8B8\u0000\u0000" + // 21870 - 21874
+ "\u0000\u0000\u8EA2\uA2D2\u8EA2\uA2D1\u8EA2\uA2D4\u8EA2\uA2D3" + // 21875 - 21879
+ "\u8EA2\uA2D6\u0000\uC8B5\u8EA2\uA2D0\u8EA2\uA2D5\u8EA2\uD7C0" + // 21880 - 21884
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0F0\u0000\u0000" + // 21885 - 21889
+ "\u0000\uF0ED\u0000\uF0F1\u8EA2\uD7BE\u0000\uF0EE\u8EA2\uD7C1" + // 21890 - 21894
+ "\u8EA2\uD7C2\u8EA2\uD7C7\u0000\u0000\u0000\u0000\u8EA2\uD7C3" + // 21895 - 21899
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCFD\u0000\u0000\u0000\u0000" + // 21900 - 21904
+ "\u0000\u0000\u0000\uF3F0\u0000\u0000\u8EA2\uE1E8\u0000\uF3EF" + // 21905 - 21909
+ "\u8EA2\uE1E6\u8EA2\uE1E7\u0000\uF6CC\u0000\uF8BB\u8EA2\uE5D6" + // 21910 - 21914
+ "\u0000\u0000\u0000\uF8BA\u0000\u0000\u0000\u0000\u8EA2\uE8FD" + // 21915 - 21919
+ "\u8EA2\uE8FE\u0000\u0000\u0000\uF9F1\u0000\u0000\u8EA2\uE8FC" + // 21920 - 21924
+ "\u0000\uFAEF\u0000\u0000\u8EA2\uEFAE\u0000\uFCBA\u8EA2\uF0B8" + // 21925 - 21929
+ "\u8EA2\uF0B9\u0000\u0000\u0000\uC5CB\u0000\u0000\u0000\uC8B2" + // 21930 - 21934
+ "\u0000\uC8B3\u0000\uCAD5\u0000\u0000\u8EA2\uA7B2\u0000\uD1D7" + // 21935 - 21939
+ "\u0000\uD5F3\u0000\uDBAA\u0000\u0000\u0000\u0000\u0000\uD9B7" + // 21940 - 21944
+ "\u0000\u0000\u0000\uDFE4\u0000\uDFE5\u8EA2\uBCC7\u0000\u0000" + // 21945 - 21949
+ "\u0000\u0000\u0000\u0000\u0000\uE4C1\u0000\u0000\u8EA2\uC3C5" + // 21950 - 21954
+ "\u0000\uE4BE\u0000\uE4BF\u0000\uE4BD\u8EA2\uC3CA\u8EA2\uC3C9" + // 21955 - 21959
+ "\u8EA2\uC3C6\u0000\uE4C3\u0000\u0000\u0000\u0000\u8EA2\uC3C8" + // 21960 - 21964
+ "\u0000\uDFE0\u0000\u0000\u0000\u0000\u8EA2\uC3CC\u8EA2\uC3C7" + // 21965 - 21969
+ "\u0000\uE4C0\u0000\uE4BC\u0000\uE4C2\u8EA2\uC3CB\u0000\u0000" + // 21970 - 21974
+ "\u0000\u0000\u0000\u0000\u0000\uE9A5\u0000\u0000\u8EA2\uCADF" + // 21975 - 21979
+ "\u8EA2\uCADE\u8EA2\uCADD\u0000\uE9A3\u0000\u0000\u0000\u0000" + // 21980 - 21984
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE9A4\u8EA2\uD0EC" + // 21985 - 21989
+ "\u8EA2\uD0EF\u0000\uEDB2\u0000\u0000\u0000\u0000\u0000\uEDB1" + // 21990 - 21994
+ "\u8EA2\uD0F0\u8EA2\uD0EB\u0000\uEDB4\u8EA2\uD0ED\u0000\u0000" + // 21995 - 21999
+ "\u0000\uEDB3\u8EA2\uD0EA\u0000\u0000\u8EA2\uD0EE\u0000\uF0F2" + // 22000 - 22004
+ "\u0000\uF0EF\u8EA2\uD7C6\u8EA2\uD7C5\u0000\u0000\u8EA2\uD7C4" + // 22005 - 22009
+ "\u8EA2\uD7BF\u0000\u0000\u8EA2\uC0B4\u0000\uEAF7\u0000\u0000" + // 22010 - 22014
+ "\u0000\u0000\u8EA2\uD4AB\u8EA2\uD4B2\u0000\uEEEF\u0000\u0000" + // 22015 - 22019
+ "\u8EA2\uD4B6\u0000\uEEF3\u8EA2\uD4AE\u8EA2\uD4AC\u0000\u0000" + // 22020 - 22024
+ "\u8EA2\uD4B5\u0000\u0000\u0000\uEEEE\u8EA2\uD4B4\u0000\uEEF0" + // 22025 - 22029
+ "\u0000\uEEF1\u8EA2\uD4AD\u0000\uEEF2\u8EA2\uD4B3\u8EA2\uD4AF" + // 22030 - 22034
+ "\u8EA2\uD4B0\u8EA2\uD4B1\u0000\uEAFD\u0000\u0000\u0000\u0000" + // 22035 - 22039
+ "\u0000\u0000\u8EA2\uDABE\u8EA2\uDACA\u0000\u0000\u0000\uF2B4" + // 22040 - 22044
+ "\u8EA2\uDAC5\u8EA2\uDAC7\u0000\u0000\u0000\uF2B2\u8EA2\uDABF" + // 22045 - 22049
+ "\u8EA2\uDAC3\u0000\u0000\u8EA2\uDAC6\u0000\uF2B0\u0000\uF2B3" + // 22050 - 22054
+ "\u8EA2\uDAC9\u8EA2\uDAC1\u8EA2\uDAC2\u8EA2\uDAC8\u8EA2\uDAC0" + // 22055 - 22059
+ "\u8EA2\uDAC4\u0000\uF2B1\u8EA2\uDFC0\u0000\u0000\u8EA2\uDFBF" + // 22060 - 22064
+ "\u0000\uF5C2\u8EA2\uDFC5\u0000\uF5C4\u0000\u0000\u0000\u0000" + // 22065 - 22069
+ "\u0000\uF5C1\u8EA2\uDFC1\u0000\uF5C5\u8EA2\uDFC2\u0000\u0000" + // 22070 - 22074
+ "\u8EA2\uDFC3\u8EA2\uDFC6\u0000\u0000\u0000\uF5C3\u0000\u0000" + // 22075 - 22079
+ "\u8EA2\uE3C1\u0000\u0000\u0000\u0000\u8EA2\uE3C4\u0000\u0000" + // 22080 - 22084
+ "\u8EA2\uE3BE\u8EA2\uE3C0\u0000\u0000\u0000\u0000\u8EA2\uE3BF" + // 22085 - 22089
+ "\u8EA2\uE3C2\u8EA2\uE3C3\u8EA2\uDFC4\u8EA2\uE3BD\u0000\u0000" + // 22090 - 22094
+ "\u0000\u0000\u0000\uF8F8\u8EA2\uE6F7\u8EA2\uE6FA\u8EA2\uE6FC" + // 22095 - 22099
+ "\u8EA2\uE6F5\u8EA2\uE6F6\u8EA2\uE6F9\u8EA2\uE6FB\u0000\uF8F9" + // 22100 - 22104
+ "\u0000\uF8F7\u0000\uF8F6\u8EA2\uE6F8\u8EA2\uE6F4\u8EA2\uE9F6" + // 22105 - 22109
+ "\u0000\uFABB\u0000\u0000\u8EA2\uE9F7\u0000\u0000\u0000\u0000" + // 22110 - 22114
+ "\u8EA2\uECB8\u0000\uFBA8\u8EA2\uECBA\u0000\uFBA9\u8EA2\uECB7" + // 22115 - 22119
+ "\u8EA2\uECB9\u0000\uFBF2\u0000\u0000\u8EA2\uEEA1\u0000\uFBF1" + // 22120 - 22124
+ "\u8EA2\uEFCC\u8EA2\uEFCB\u0000\u0000\u8EA2\uEFCA\u0000\u0000" + // 22125 - 22129
+ "\u0000\u0000\u8EA2\uF1B7\u8EA2\uF1B8\u8EA2\uF1BA\u8EA2\uF1B9" + // 22130 - 22134
+ "\u0000\u0000\u8EA2\uA2F0\u0000\uC8E9\u0000\uCDFD\u0000\u0000" + // 22135 - 22139
+ "\u0000\uCDFB\u8EA2\uA7AB\u8EA2\uA7A7\u8EA2\uA7AE\u0000\uCDFA" + // 22140 - 22144
+ "\u0000\uCEA3\u8EA2\uA7A9\u8EA2\uA7A5\u0000\uCEA2\u8EA2\uA7AC" + // 22145 - 22149
+ "\u0000\uCDF9\u8EA2\uA7AD\u0000\uCDFC\u0000\uCDFE\u8EA2\uA7B1" + // 22150 - 22154
+ "\u8EA2\uA7B0\u8EA2\uA7A8\u0000\uCDF8\u0000\uCDF7\u0000\uCEA1" + // 22155 - 22159
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22160 - 22164
+ "\u0000\u0000\u8EA2\uAAF0\u8EA2\uAAF6\u0000\u0000\u0000\uD1D3" + // 22165 - 22169
+ "\u0000\uD1D0\u8EA2\uAAED\u8EA2\uAAF2\u0000\u0000\u0000\uD1D6" + // 22170 - 22174
+ "\u0000\uD1CE\u8EA2\uAAF1\u0000\uD1D1\u0000\uD1D4\u0000\u0000" + // 22175 - 22179
+ "\u0000\u0000\u8EA2\uAAF4\u0000\u0000\u0000\uD1CF\u8EA2\uAAF9" + // 22180 - 22184
+ "\u0000\uD1D2\u0000\u0000\u0000\uD1D5\u8EA2\uAAEE\u8EA2\uAAF3" + // 22185 - 22189
+ "\u8EA2\uAAF7\u8EA2\uAAEF\u8EA2\uAAEC\u0000\u0000\u0000\u0000" + // 22190 - 22194
+ "\u8EA2\uAAF8\u8EA2\uAAF5\u0000\u0000\u0000\u0000\u0000\u0000" + // 22195 - 22199
+ "\u0000\u0000\u0000\u0000\u8EA2\uBCCF\u0000\uDFED\u8EA2\uBCF7" + // 22200 - 22204
+ "\u8EA2\uBCDF\u8EA2\uBCE1\u0000\u0000\u8EA2\uBCEE\u8EA2\uBCED" + // 22205 - 22209
+ "\u8EA2\uBCCD\u0000\uDFF8\u0000\uDFFA\u8EA2\uBCD5\u8EA2\uBCDC" + // 22210 - 22214
+ "\u8EA2\uBCE4\u0000\uDFF9\u8EA2\uBCDB\u8EA2\uBCE7\u8EA2\uBCFA" + // 22215 - 22219
+ "\u0000\u0000\u8EA2\uBCEF\u0000\u0000\u0000\u0000\u0000\u0000" + // 22220 - 22224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C9\u0000\u0000" + // 22225 - 22229
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22230 - 22234
+ "\u8EA2\uBCFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22235 - 22239
+ "\u8EA2\uBCD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22240 - 22244
+ "\u8EA2\uC3F8\u0000\uE4CC\u0000\u0000\u8EA2\uC3F6\u8EA2\uC3E1" + // 22245 - 22249
+ "\u8EA2\uC3E6\u8EA2\uC3DF\u0000\u0000\u8EA2\uC3F2\u8EA2\uC3D1" + // 22250 - 22254
+ "\u8EA2\uC3D8\u0000\u0000\u8EA2\uC3F0\u8EA2\uC3FA\u8EA2\uC3E2" + // 22255 - 22259
+ "\u0000\u0000\u8EA2\uC3D5\u8EA2\uDCFA\u8EA2\uDCF9\u0000\uF3ED" + // 22260 - 22264
+ "\u0000\uF3EE\u8EA2\uE5D3\u0000\u0000\u0000\u0000\u0000\uC5C6" + // 22265 - 22269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBCBE" + // 22270 - 22274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD9\u0000\uDFD8" + // 22275 - 22279
+ "\u8EA2\uC3C3\u0000\u0000\u8EA2\uE1E4\u0000\uFAEE\u8EA2\uEFAD" + // 22280 - 22284
+ "\u0000\uC5C7\u0000\u0000\u0000\uD5E8\u0000\u0000\u0000\uDAFC" + // 22285 - 22289
+ "\u0000\uDAFB\u8EA2\uBCBF\u8EA2\uBCC0\u0000\uE4BA\u8EA2\uCADC" + // 22290 - 22294
+ "\u0000\uE8FE\u8EA2\uD7BD\u0000\u0000\u0000\uC5C8\u0000\uC6D8" + // 22295 - 22299
+ "\u0000\u0000\u0000\uCDF4\u8EA2\uA7A3\u0000\u0000\u8EA2\uAAEA" + // 22300 - 22304
+ "\u0000\uD1CB\u0000\uDAFD\u0000\u0000\u8EA2\uBCC1\u0000\uDFDA" + // 22305 - 22309
+ "\u0000\uE4BB\u0000\u0000\u8EA2\uD0E8\u8EA2\uD0E9\u0000\u0000" + // 22310 - 22314
+ "\u0000\u0000\u8EA2\uDCFB\u0000\uF6CB\u8EA2\uF0FE\u0000\uC5C9" + // 22315 - 22319
+ "\u0000\u0000\u8EA2\uA7A4\u0000\uCDF5\u0000\uD1CC\u0000\u0000" + // 22320 - 22324
+ "\u8EA2\uAAEB\u0000\uF8B8\u8EA2\uE1E1\u0000\u0000\u8EA2\uE1E2" + // 22325 - 22329
+ "\u8EA2\uE1DE\u0000\u0000\u0000\uF6C7\u8EA2\uE5CD\u0000\u0000" + // 22330 - 22334
+ "\u8EA2\uE5D0\u0000\u0000\u0000\u0000\u8EA2\uE5D1\u8EA2\uE5CF" + // 22335 - 22339
+ "\u8EA2\uE5D2\u0000\uF8B9\u8EA2\uE5CE\u0000\u0000\u0000\u0000" + // 22340 - 22344
+ "\u8EA2\uE8FA\u0000\uF9EF\u8EA2\uE8F9\u8EA2\uE8F8\u8EA2\uE8F7" + // 22345 - 22349
+ "\u0000\uF9EE\u0000\uF9F0\u0000\u0000\u8EA2\uEBDB\u0000\uFAED" + // 22350 - 22354
+ "\u0000\uFAEC\u0000\u0000\u0000\u0000\u8EA2\uEDCF\u8EA2\uEDCE" + // 22355 - 22359
+ "\u8EA2\uEDD1\u0000\uFCB7\u0000\uFBE1\u8EA2\uEFAC\u8EA2\uEDD0" + // 22360 - 22364
+ "\u0000\u0000\u0000\u0000\u8EA2\uEFAB\u0000\uFCB9\u0000\uFCB8" + // 22365 - 22369
+ "\u0000\uFCDF\u8EA2\uF0B7\u8EA2\uF0FD\u0000\uC5C5\u0000\u0000" + // 22370 - 22374
+ "\u0000\u0000\u8EA2\uBCB7\u8EA2\uD7BA\u0000\uA7E1\u0000\u0000" + // 22375 - 22379
+ "\u0000\uC8AD\u8EA2\uA2CD\u0000\uCAD3\u0000\uCAD1\u0000\u0000" + // 22380 - 22384
+ "\u0000\uCAD2\u0000\u0000\u8EA2\uA7A2\u0000\uCDF3\u0000\uD1C9" + // 22385 - 22389
+ "\u8EA2\uC3B9\u8EA2\uC3B4\u0000\u0000\u8EA2\uC3A8\u0000\u0000" + // 22390 - 22394
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22395 - 22399
+ "\u0000\u0000\u8EA2\uCAD0\u0000\u0000\u8EA2\uCAC1\u8EA2\uCACC" + // 22400 - 22404
+ "\u0000\u0000\u8EA2\uCAD3\u0000\uE8F8\u0000\uDFD1\u8EA2\uCAD1" + // 22405 - 22409
+ "\u0000\uE8F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8F2" + // 22410 - 22414
+ "\u8EA2\uCAD8\u0000\u0000\u8EA2\uCAC2\u8EA2\uCACF\u8EA2\uCAC3" + // 22415 - 22419
+ "\u8EA2\uCACE\u0000\uE8F6\u8EA2\uCAD2\u8EA2\uBCA7\u0000\u0000" + // 22420 - 22424
+ "\u0000\u0000\u0000\u0000\u8EA2\uCAD9\u8EA2\uCACA\u0000\uE8F9" + // 22425 - 22429
+ "\u8EA2\uD0E1\u0000\uECF7\u0000\u0000\u8EA2\uCAD7\u8EA2\uCAD6" + // 22430 - 22434
+ "\u0000\uE8FB\u8EA2\uD0D4\u0000\uECF8\u8EA2\uD0D5\u0000\u0000" + // 22435 - 22439
+ "\u8EA2\uCAC6\u8EA2\uCAC7\u8EA2\uCAC4\u8EA2\uCAC9\u8EA2\uCAC5" + // 22440 - 22444
+ "\u8EA2\uCADA\u0000\uE8F5\u0000\uECF9\u0000\uE8F7\u0000\uE8FC" + // 22445 - 22449
+ "\u0000\u0000\u8EA2\uCAC8\u0000\u0000\u8EA2\uCAD4\u0000\uDFC1" + // 22450 - 22454
+ "\u0000\u0000\u8EA2\uBCAF\u8EA2\uBBFC\u8EA2\uBCAC\u8EA2\uC2FD" + // 22455 - 22459
+ "\u0000\uDFC4\u8EA2\uBCB0\u8EA2\uBCB3\u0000\uDFC3\u8EA2\uBCA1" + // 22460 - 22464
+ "\u8EA2\uBCB2\u8EA2\uBCB1\u0000\uDFC5\u8EA2\uBBF8\u0000\uDFC0" + // 22465 - 22469
+ "\u0000\uDFC8\u0000\u0000\u0000\uDFC6\u8EA2\uBCAE\u0000\u0000" + // 22470 - 22474
+ "\u8EA2\uBCA4\u0000\uDFCA\u8EA2\uBCB5\u8EA2\uBCAD\u8EA2\uBCB6" + // 22475 - 22479
+ "\u0000\uDFD2\u0000\uDFD0\u8EA2\uBCAB\u8EA2\uBCAA\u0000\u0000" + // 22480 - 22484
+ "\u8EA2\uBCA8\u8EA2\uBCA2\u0000\uDFC9\u0000\u0000\u0000\uDFC7" + // 22485 - 22489
+ "\u8EA2\uAFBB\u8EA2\uBBF9\u0000\u0000\u8EA2\uC3BD\u8EA2\uBBFA" + // 22490 - 22494
+ "\u0000\uDFC2\u0000\uDFCF\u8EA2\uC3A1\u0000\u0000\u0000\uDFCB" // 22495 - 22499
+ ;
+
+ index2c =
+ "\u0000\uDFCC\u8EA2\uBBFB\u8EA2\uBCB4\u8EA2\uC2FE\u8EA2\uBCA5" + // 22500 - 22504
+ "\u8EA2\uBBFE\u0000\uDFCE\u8EA2\uBCA6\u8EA2\uBCA3\u0000\u0000" + // 22505 - 22509
+ "\u0000\u0000\u0000\uDFD3\u0000\u0000\u0000\u0000\u0000\u0000" + // 22510 - 22514
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0DA\u8EA2\uB0DB" + // 22515 - 22519
+ "\u8EA2\uB0DC\u0000\uD6D3\u0000\u0000\u0000\uD6CF\u8EA2\uB0D1" + // 22520 - 22524
+ "\u0000\u0000\u8EA2\uB0D9\u8EA2\uB0DE\u0000\uD6D4\u0000\u0000" + // 22525 - 22529
+ "\u8EA2\uB0CF\u8EA2\uB0D5\u8EA2\uB0CE\u8EA2\uB0D8\u0000\u0000" + // 22530 - 22534
+ "\u0000\u0000\u8EA2\uB0D4\u0000\uD6D0\u0000\uD6D2\u8EA2\uB0DD" + // 22535 - 22539
+ "\u0000\u0000\u8EA2\uB0CD\u8EA2\uB0D0\u8EA2\uB0D6\u0000\u0000" + // 22540 - 22544
+ "\u8EA2\uB0D7\u8EA2\uB0DF\u8EA2\uB0D3\u0000\u0000\u0000\uD6D1" + // 22545 - 22549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22550 - 22554
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22555 - 22559
+ "\u0000\uDBF2\u8EA2\uB6F1\u0000\u0000\u0000\u0000\u8EA2\uB6F3" + // 22560 - 22564
+ "\u8EA2\uB6EF\u0000\u0000\u8EA2\uB6FB\u8EA2\uB6ED\u8EA2\uB6FA" + // 22565 - 22569
+ "\u0000\uDBEE\u8EA2\uB6EB\u8EA2\uBDDF\u8EA2\uB6F5\u0000\uDBF1" + // 22570 - 22574
+ "\u0000\u0000\u8EA2\uB6F6\u0000\uDAEC\u8EA2\uB5E5\u8EA2\uB5CD" + // 22575 - 22579
+ "\u0000\uDAE1\u0000\uDAE5\u8EA2\uB5E4\u0000\u0000\u8EA2\uB5D7" + // 22580 - 22584
+ "\u0000\uDAE6\u0000\uDAE0\u8EA2\uB5CC\u0000\u0000\u0000\uDFBF" + // 22585 - 22589
+ "\u8EA2\uB5E7\u8EA2\uB5D5\u0000\uDAEB\u8EA2\uB5D8\u8EA2\uB5E6" + // 22590 - 22594
+ "\u0000\uDAEA\u0000\u0000\u8EA2\uBBF5\u0000\u0000\u0000\uDAD7" + // 22595 - 22599
+ "\u8EA2\uB5D3\u0000\uDADC\u0000\uDAE7\u0000\u0000\u0000\uDAE2" + // 22600 - 22604
+ "\u8EA2\uB5DC\u8EA2\uB5D2\u8EA2\uB5D0\u8EA2\uB5E2\u0000\uDAD4" + // 22605 - 22609
+ "\u0000\uDAE8\u0000\uDAD8\u0000\uDFBE\u8EA2\uB5E0\u0000\uDAD9" + // 22610 - 22614
+ "\u0000\u0000\u0000\uDAD5\u0000\uDAE4\u0000\uDADF\u0000\uDADD" + // 22615 - 22619
+ "\u8EA2\uB5D4\u0000\uDAE9\u8EA2\uB5D1\u8EA2\uB5DE\u8EA2\uB5DA" + // 22620 - 22624
+ "\u8EA2\uBBF7\u8EA2\uBBF6\u0000\u0000\u0000\u0000\u0000\u0000" + // 22625 - 22629
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22630 - 22634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5CF\u8EA2\uBCA9" + // 22635 - 22639
+ "\u0000\u0000\u8EA2\uDAAF\u0000\uEEE1\u0000\uF2AA\u8EA2\uDAB9" + // 22640 - 22644
+ "\u8EA2\uDAB5\u0000\u0000\u8EA2\uDAB3\u8EA2\uDAAE\u8EA2\uDABD" + // 22645 - 22649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2AE\u0000\u0000" + // 22650 - 22654
+ "\u8EA2\uDAAA\u8EA2\uDAB6\u8EA2\uDAB7\u8EA2\uDAAD\u8EA2\uDAAC" + // 22655 - 22659
+ "\u8EA2\uDABA\u0000\u0000\u8EA2\uDAB0\u8EA2\uDAAB\u8EA2\uDAB1" + // 22660 - 22664
+ "\u0000\u0000\u8EA2\uDABC\u8EA2\uDAA9\u8EA2\uDABB\u8EA2\uDAB8" + // 22665 - 22669
+ "\u0000\uF2AC\u0000\uF2AB\u0000\u0000\u0000\u0000\u0000\uF2AD" + // 22670 - 22674
+ "\u8EA2\uDAB4\u8EA2\uDAA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 22675 - 22679
+ "\u0000\u0000\u0000\u0000\u8EA2\uDFA7\u0000\uF5BC\u8EA2\uDFAB" + // 22680 - 22684
+ "\u8EA2\uDFA8\u8EA2\uDFAF\u8EA2\uDFB5\u8EA2\uDFAA\u0000\u0000" + // 22685 - 22689
+ "\u8EA2\uDFBE\u0000\uF5B9\u8EA2\uDFB8\u8EA2\uDFAD\u8EA2\uDFB9" + // 22690 - 22694
+ "\u8EA2\uDFB4\u8EA2\uDFBB\u8EA2\uDFAC\u0000\uF5BE\u0000\uF5BD" + // 22695 - 22699
+ "\u8EA2\uDFAE\u8EA2\uDFBC\u8EA2\uDFA6\u8EA2\uDFBA\u8EA2\uAFCD" + // 22700 - 22704
+ "\u8EA2\uAFC1\u0000\uD5DA\u8EA2\uAFBA\u8EA2\uAFB7\u8EA2\uAFB8" + // 22705 - 22709
+ "\u0000\uD5DB\u8EA2\uAFC7\u8EA2\uAFCE\u0000\uD5DD\u8EA2\uAFBE" + // 22710 - 22714
+ "\u8EA2\uAFBD\u0000\uD5E5\u0000\uD5E4\u0000\uD5D6\u0000\uD5DC" + // 22715 - 22719
+ "\u0000\uD5DF\u8EA2\uAFCA\u0000\u0000\u0000\u0000\u8EA2\uAFC4" + // 22720 - 22724
+ "\u0000\uD5D9\u8EA2\uAFB5\u8EA2\uAFCC\u8EA2\uAFC3\u8EA2\uAFC5" + // 22725 - 22729
+ "\u8EA2\uAFC9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22730 - 22734
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22735 - 22739
+ "\u0000\u0000\u8EA2\uB5CB\u0000\u0000\u0000\uDADB\u0000\uDAEF" + // 22740 - 22744
+ "\u0000\uDAEE\u0000\u0000\u0000\uDAE3\u0000\u0000\u8EA2\uB5DD" + // 22745 - 22749
+ "\u8EA2\uB5D9\u8EA2\uB5D6\u8EA2\uB5E8\u0000\uDADE\u0000\uDAD6" + // 22750 - 22754
+ "\u0000\u0000\u0000\u0000\u8EA2\uB5DB\u0000\uDFCD\u0000\uDADA" + // 22755 - 22759
+ "\u8EA2\uB5E3\u0000\u0000\u0000\uDAF0\u0000\uDAED\u8EA2\uB5DF" + // 22760 - 22764
+ "\u8EA2\uB5CE\u0000\u0000\u0000\u0000\u8EAD\uA1D3\u8EAD\uA1D4" + // 22765 - 22769
+ "\u8EAD\uA1D5\u8EAD\uA1D6\u8EAD\uA1D7\u8EAD\uA1D8\u8EAD\uA1D9" + // 22770 - 22774
+ "\u8EAD\uA1DA\u8EAD\uA1DB\u8EAD\uA1DC\u8EAD\uA1DD\u8EAD\uA1DE" + // 22775 - 22779
+ "\u8EAD\uA1DF\u8EAD\uA1E0\u8EAD\uA1E1\u8EAD\uA1E2\u8EAD\uA1E3" + // 22780 - 22784
+ "\u8EAD\uA1E4\u8EAD\uA1E5\u8EAD\uA1E6\u8EAD\uA1E7\u8EAD\uA1E8" + // 22785 - 22789
+ "\u8EAD\uA1E9\u8EAD\uA1EA\u8EAD\uA1EB\u8EAD\uA1EC\u8EAD\uA1ED" + // 22790 - 22794
+ "\u8EAD\uA1EE\u8EAD\uA1EF\u8EAD\uA1F0\u8EAD\uA1F1\u8EAD\uA1F2" + // 22795 - 22799
+ "\u8EAD\uA1F3\u8EAD\uA1F4\u8EAD\uA1F5\u8EAD\uA1F6\u8EAD\uA1F7" + // 22800 - 22804
+ "\u8EAD\uA1F8\u8EAD\uA1F9\u8EAD\uA1FA\u8EAD\uA1FB\u8EAD\uA1FC" + // 22805 - 22809
+ "\u8EAD\uA1FD\u8EAD\uA1FE\u8EAD\uA2A1\u8EAD\uA2A2\u8EAD\uA2A3" + // 22810 - 22814
+ "\u8EAD\uA2A4\u8EAD\uA2A5\u8EAD\uA2A6\u8EAD\uA2A7\u8EAD\uA2A8" + // 22815 - 22819
+ "\u8EAD\uA2A9\u8EAD\uA2AA\u8EAD\uA2AB\u8EAD\uA2AC\u8EAD\uA2AD" + // 22820 - 22824
+ "\u8EAD\uA2AE\u8EAD\uA2AF\u8EAD\uA2B0\u8EAD\uA2B1\u8EAD\uA2B2" + // 22825 - 22829
+ "\u8EAD\uA2B3\u8EA2\uAAE1\u0000\uD1BD\u0000\uD1C8\u8EA2\uAADA" + // 22830 - 22834
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD1C0\u0000\uD5D4" + // 22835 - 22839
+ "\u0000\uD1BA\u0000\u0000\u8EA2\uAAD7\u8EA2\uAADE\u8EA2\uAAD6" + // 22840 - 22844
+ "\u8EA2\uAAD9\u8EA2\uAADD\u8EA2\uAFB4\u0000\uD1C7\u0000\u0000" + // 22845 - 22849
+ "\u8EA2\uAAE2\u8EA2\uAAE3\u8EA2\uAAE5\u0000\uD1B9\u0000\u0000" + // 22850 - 22854
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22855 - 22859
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22860 - 22864
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22865 - 22869
+ "\u0000\u0000\u0000\uD5E3\u8EA2\uAFC0\u0000\uD5E1\u0000\uD5E2" + // 22870 - 22874
+ "\u8EA2\uAFB6\u8EA2\uAFC6\u0000\u0000\u0000\uD5D8\u0000\u0000" + // 22875 - 22879
+ "\u0000\u0000\u8EA2\uB5CA\u8EA2\uAFC8\u8EA2\uAFC2\u0000\u0000" + // 22880 - 22884
+ "\u8EA2\uAFB9\u0000\u0000\u8EA2\uAFCB\u8EA2\uAFBC\u0000\uD5DE" + // 22885 - 22889
+ "\u8EA2\uB5E1\u8EA2\uAFBF\u0000\uD5E0\u0000\uD5D7\u0000\u0000" + // 22890 - 22894
+ "\u8EA2\uBFD2\u0000\u0000\u0000\uE1D7\u0000\uE1EB\u0000\u0000" + // 22895 - 22899
+ "\u8EA2\uBFE1\u0000\uE1ED\u0000\u0000\u8EA2\uBFDD\u0000\uE1E2" + // 22900 - 22904
+ "\u0000\uE1DC\u0000\uE1E4\u0000\uE1D9\u0000\uE1EA\u8EA2\uBFDE" + // 22905 - 22909
+ "\u8EA2\uBFCC\u8EA2\uBFE0\u8EA2\uBFC7\u8EA2\uBFE9\u0000\u0000" + // 22910 - 22914
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22915 - 22919
+ "\u0000\u0000\u8EA2\uBFF2\u0000\u0000\u0000\u0000\u0000\u0000" + // 22920 - 22924
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFC4" + // 22925 - 22929
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22930 - 22934
+ "\u8EA2\uC6EC\u0000\u0000\u8EA2\uC7A4\u0000\uE5DC\u8EA2\uC6F1" + // 22935 - 22939
+ "\u0000\u0000\u8EA2\uC6EF\u8EA2\uC6DA\u0000\uE6B0\u8EA2\uC6EA" + // 22940 - 22944
+ "\u8EA2\uC6FE\u8EA2\uC6E6\u0000\uE6B8\u8EA2\uC6FD\u8EA2\uC6E4" + // 22945 - 22949
+ "\u0000\uE1E9\u8EA2\uC6F4\u8EA2\uC6E5\u8EA2\uC6FB\u0000\uE6B7" + // 22950 - 22954
+ "\u0000\uE6AF\u0000\u0000\u8EA2\uC6CF\u0000\uCAC0\u8EA2\uA4B3" + // 22955 - 22959
+ "\u0000\u0000\u8EA2\uA4A9\u0000\uCABD\u0000\u0000\u0000\uCAD0" + // 22960 - 22964
+ "\u8EA2\uA4AE\u8EA2\uA4B4\u0000\uCAC2\u0000\uCAC4\u0000\u0000" + // 22965 - 22969
+ "\u8EA2\uA4AA\u0000\u0000\u8EA2\uA4AB\u8EA2\uA4AC\u0000\u0000" + // 22970 - 22974
+ "\u0000\uCACF\u0000\uCAC9\u0000\uCACE\u8EA2\uA4AD\u0000\uCACD" + // 22975 - 22979
+ "\u0000\uCABF\u0000\uCABE\u0000\uCACB\u0000\u0000\u0000\u0000" + // 22980 - 22984
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22985 - 22989
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22990 - 22994
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDE3\u8EA2\uA6FD" + // 22995 - 22999
+ "\u8EA2\uA6F6\u0000\uCDDE\u0000\uCDF1\u8EA2\uA6F2\u8EA2\uA6F9" + // 23000 - 23004
+ "\u8EA2\uA6FB\u8EA2\uA6FE\u0000\uCDEC\u0000\u0000\u8EA2\uA6FA" + // 23005 - 23009
+ "\u8EA2\uA6F3\u0000\uCDEA\u8EA2\uA6F7\u0000\u0000\u8EA2\uA7A1" + // 23010 - 23014
+ "\u0000\uCDDB\u0000\u0000\u8EA2\uA6FC\u0000\uCDE5\u0000\uCDE4" + // 23015 - 23019
+ "\u8EA2\uA6F5\u0000\uCDD9\u0000\uCDD4\u0000\uD1B7\u8EA2\uAAD3" + // 23020 - 23024
+ "\u8EA2\uAAD4\u0000\u0000\u0000\u0000\u8EA2\uAFB2\u0000\uD5D2" + // 23025 - 23029
+ "\u0000\uDAD3\u0000\uDFBD\u8EA2\uBBF4\u0000\uC5C3\u0000\u0000" + // 23030 - 23034
+ "\u0000\uC4DF\u0000\uC5C4\u0000\u0000\u8EA2\uA1DE\u0000\uC6D7" + // 23035 - 23039
+ "\u0000\uC6D6\u0000\uC6D4\u0000\uC6D5\u0000\u0000\u0000\u0000" + // 23040 - 23044
+ "\u0000\u0000\u0000\uC8AC\u8EA2\uA2C9\u8EA2\uA2CB\u0000\uC8AB" + // 23045 - 23049
+ "\u8EA2\uA2C3\u0000\u0000\u8EA2\uA2C4\u0000\u0000\u8EA2\uA2CA" + // 23050 - 23054
+ "\u8EA2\uA2C6\u8EA2\uA2C8\u0000\uC8AA\u8EA2\uA2C5\u8EA2\uA2CC" + // 23055 - 23059
+ "\u8EA2\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23060 - 23064
+ "\u0000\u0000\u0000\u0000\u0000\uCAC3\u0000\uCACC\u0000\uCACA" + // 23065 - 23069
+ "\u8EA2\uA4B2\u8EA2\uA4AF\u8EA2\uA4B7\u0000\uCAC8\u8EA2\uA4B8" + // 23070 - 23074
+ "\u0000\u0000\u0000\uCAC1\u8EA2\uA4B5\u0000\u0000\u0000\uCAC7" + // 23075 - 23079
+ "\u8EA2\uA4B1\u8EA2\uA4B0\u0000\uCAC5\u8EA2\uA4B6\u0000\uCAC6" + // 23080 - 23084
+ "\u0000\uCDD5\u0000\uFCB6\u8EA2\uEFA8\u0000\u0000\u8EA2\uEFA9" + // 23085 - 23089
+ "\u8EA2\uEFAA\u0000\u0000\u0000\u0000\u8EA2\uF2AA\u0000\uC5C1" + // 23090 - 23094
+ "\u8EA2\uA1DD\u0000\uC6D3\u0000\u0000\u0000\uC8A7\u0000\uC8A8" + // 23095 - 23099
+ "\u0000\uC8A6\u0000\u0000\u0000\uC8A9\u0000\uCABC\u0000\uCABB" + // 23100 - 23104
+ "\u0000\u0000\u8EA2\uA6F0\u0000\uCDD1\u0000\uCDD0\u0000\u0000" + // 23105 - 23109
+ "\u0000\u0000\u8EA2\uAFB1\u0000\uDAD1\u0000\uDAD2\u0000\u0000" + // 23110 - 23114
+ "\u0000\u0000\u0000\u0000\u0000\uDFBC\u8EA2\uC2F8\u0000\uE4A8" + // 23115 - 23119
+ "\u0000\uE4A9\u8EA2\uC2FA\u8EA2\uC2FC\u8EA2\uC2FB\u0000\u0000" + // 23120 - 23124
+ "\u8EA2\uCABE\u0000\u0000\u8EA2\uCABD\u0000\uE8F0\u8EA2\uCABF" + // 23125 - 23129
+ "\u0000\u0000\u8EA2\uD0D3\u0000\uECF6\u0000\u0000\u0000\uF0DD" + // 23130 - 23134
+ "\u0000\u0000\u0000\uF3E1\u0000\uF6C3\u0000\uF3E2\u0000\u0000" + // 23135 - 23139
+ "\u0000\uC5C2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4A8" + // 23140 - 23144
+ "\u0000\u0000\u0000\u0000\u8EA2\uA6F1\u0000\uCDD3\u0000\uCDD2" + // 23145 - 23149
+ "\u8EA2\uCAB3\u0000\u0000\u0000\uECE8\u8EA2\uD0C2\u0000\u0000" + // 23150 - 23154
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD0C7" + // 23155 - 23159
+ "\u0000\uF0D7\u8EA2\uD0C1\u8EA2\uD7AE\u8EA2\uD0D0\u0000\uECF0" + // 23160 - 23164
+ "\u0000\u0000\u0000\uECEE\u0000\uF0D5\u8EA2\uD0CD\u8EA2\uD0C9" + // 23165 - 23169
+ "\u0000\uECF4\u0000\u0000\u8EA2\uD7A5\u0000\u0000\u0000\u0000" + // 23170 - 23174
+ "\u0000\u0000\u0000\uECF2\u8EA2\uD0C8\u0000\u0000\u8EA2\uD7A3" + // 23175 - 23179
+ "\u0000\u0000\u8EA2\uD0CC\u0000\u0000\u8EA2\uD0CF\u8EA2\uD0C6" + // 23180 - 23184
+ "\u0000\u0000\u0000\uECF3\u0000\u0000\u0000\u0000\u0000\uECED" + // 23185 - 23189
+ "\u8EA2\uD7A4\u0000\uF0D6\u8EA2\uD0CE\u0000\uECEF\u0000\uECF1" + // 23190 - 23194
+ "\u8EA2\uD0CB\u0000\uECF5\u8EA2\uD0CA\u8EA2\uD0C5\u8EA2\uD0C4" + // 23195 - 23199
+ "\u0000\uF0D4\u8EA2\uD0D2\u8EA2\uD7A7\u8EA2\uDCEB\u0000\uF0D9" + // 23200 - 23204
+ "\u0000\u0000\u8EA2\uD7AD\u0000\u0000\u8EA2\uD7AB\u0000\u0000" + // 23205 - 23209
+ "\u8EA2\uDCEC\u0000\u0000\u0000\uF0DA\u8EA2\uD7AC\u8EA2\uC2F7" + // 23210 - 23214
+ "\u8EA2\uCAAB\u0000\u0000\u0000\u0000\u0000\uE3FE\u8EA2\uC2EF" + // 23215 - 23219
+ "\u8EA2\uC2F3\u0000\uE8E6\u0000\uE3F5\u8EA2\uC2EC\u8EA2\uC2ED" + // 23220 - 23224
+ "\u0000\uE8E8\u0000\uE3FD\u0000\uE4A1\u0000\uE3FC\u8EA2\uC2F5" + // 23225 - 23229
+ "\u0000\u0000\u0000\u0000\u8EA2\uCAAF\u8EA2\uCAB0\u8EA2\uCAB5" + // 23230 - 23234
+ "\u0000\uECE7\u8EA2\uCABC\u0000\u0000\u0000\uE8EE\u0000\u0000" + // 23235 - 23239
+ "\u0000\uE8ED\u8EA2\uCAB7\u0000\u0000\u0000\uECE6\u8EA2\uCAAC" + // 23240 - 23244
+ "\u0000\uE8EC\u0000\u0000\u8EA2\uCABB\u0000\uE8EA\u0000\uE8EB" + // 23245 - 23249
+ "\u0000\u0000\u8EA2\uCAB8\u8EA2\uD0D1\u0000\uECE4\u0000\uDFB5" + // 23250 - 23254
+ "\u0000\u0000\u8EA2\uCABA\u0000\uECEB\u8EA2\uCAB2\u0000\u0000" + // 23255 - 23259
+ "\u0000\uECE5\u0000\u0000\u0000\uECEA\u8EA2\uCAAD\u8EA2\uCAB1" + // 23260 - 23264
+ "\u8EA2\uCAAE\u8EA2\uCAB4\u0000\uE8EF\u0000\uECE3\u0000\uE8E9" + // 23265 - 23269
+ "\u0000\u0000\u8EA2\uD0C3\u8EA2\uCAB6\u0000\u0000\u0000\uECE9" + // 23270 - 23274
+ "\u0000\u0000\u0000\uECEC\u0000\u0000\u8EA2\uB8E6\u0000\u0000" + // 23275 - 23279
+ "\u8EA2\uB8ED\u0000\u0000\u0000\u0000\u0000\uDDA6\u8EA2\uB8FB" + // 23280 - 23284
+ "\u8EA2\uB8F6\u0000\uDDA1\u0000\uDCFD\u8EA2\uB8F2\u8EA2\uB8EE" + // 23285 - 23289
+ "\u8EA2\uB8E0\u0000\uDCF4\u8EA2\uB8E5\u8EA2\uB8DD\u0000\u0000" + // 23290 - 23294
+ "\u0000\uDCFC\u0000\uDCFE\u8EA2\uB8EA\u8EA2\uB8E7\u0000\uDCF9" + // 23295 - 23299
+ "\u8EA2\uB8F7\u0000\uDCF6\u8EA2\uB8E8\u8EA2\uBFEA\u8EA2\uB8F0" + // 23300 - 23304
+ "\u0000\u0000\u8EA2\uB8EF\u0000\uDCF5\u0000\u0000\u0000\uDDA2" + // 23305 - 23309
+ "\u0000\u0000\u0000\uDCF8\u8EA2\uB8DE\u8EA2\uB8E3\u8EA2\uB8F4" + // 23310 - 23314
+ "\u8EA2\uB8FA\u0000\uDDA7\u8EA2\uB8DF\u8EA2\uB8EB\u8EA2\uB8F1" + // 23315 - 23319
+ "\u0000\uDCFB\u0000\u0000\u0000\u0000\u8EA2\uB8FC\u8EA2\uB8F5" + // 23320 - 23324
+ "\u8EA2\uB8F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23325 - 23329
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23330 - 23334
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCFA\u0000\u0000" + // 23335 - 23339
+ "\u8EA2\uBFD1\u0000\uDFBA\u0000\uE3FA\u0000\u0000\u8EA2\uBBED" + // 23340 - 23344
+ "\u8EA2\uBBF2\u8EA2\uBBE6\u0000\uE4A6\u0000\u0000\u0000\uE3FB" + // 23345 - 23349
+ "\u0000\uDFB9\u8EA2\uBBE4\u8EA2\uBBF3\u0000\u0000\u0000\uE4A5" + // 23350 - 23354
+ "\u0000\uDFB7\u0000\uE3F4\u8EA2\uBBF0\u0000\u0000\u0000\uDFBB" + // 23355 - 23359
+ "\u8EA2\uBBE8\u8EA2\uBBE2\u0000\uDFB1\u8EA2\uBBE5\u0000\u0000" + // 23360 - 23364
+ "\u8EA2\uBBEE\u0000\u0000\u0000\uE3F3\u0000\uE3F8\u0000\uDFAE" + // 23365 - 23369
+ "\u8EA2\uBBEF\u0000\u0000\u0000\uE3F6\u0000\u0000\u0000\u0000" + // 23370 - 23374
+ "\u0000\u0000\u0000\uDFAF\u0000\u0000\u0000\u0000\u0000\u0000" + // 23375 - 23379
+ "\u0000\uE4A4\u8EA2\uCAAA\u8EA2\uC2F6\u0000\u0000\u8EA2\uC2EE" + // 23380 - 23384
+ "\u8EA2\uCAA9\u0000\u0000\u8EA2\uC2F2\u8EA2\uC2F4\u0000\u0000" + // 23385 - 23389
+ "\u0000\u0000\u8EA2\uC2F1\u0000\u0000\u0000\uE4A3\u0000\u0000" + // 23390 - 23394
+ "\u8EA2\uC2F0\u0000\uE4A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 23395 - 23399
+ "\u8EA2\uCAB9\u0000\u0000\u0000\u0000\u0000\uE4A2\u0000\uE8E7" + // 23400 - 23404
+ "\u8EA2\uB5C9\u8EA2\uBBEC\u0000\u0000\u8EA2\uB5C7\u8EA2\uBBE1" + // 23405 - 23409
+ "\u0000\uDAC5\u0000\uDACC\u0000\uDAD0\u8EA2\uB5C1\u8EA2\uBBDC" + // 23410 - 23414
+ "\u8EA2\uB5C5\u0000\uDAC1\u8EA2\uBBDE\u8EA2\uB5C8\u8EA2\uBBE0" + // 23415 - 23419
+ "\u8EA2\uB5BD\u0000\u0000\u0000\uDFA9\u0000\u0000\u8EA2\uB5BB" + // 23420 - 23424
+ "\u8EA2\uB5BC\u0000\uDACB\u0000\u0000\u0000\u0000\u0000\uDACA" + // 23425 - 23429
+ "\u8EA2\uB5BF\u0000\uDACF\u8EA2\uB5C3\u0000\uDAC8\u8EA2\uB5C0" + // 23430 - 23434
+ "\u0000\u0000\u0000\uDACD\u0000\uDFAD\u0000\uDFAA\u8EA2\uBBDF" + // 23435 - 23439
+ "\u0000\u0000\u8EA2\uB5BE\u0000\u0000\u0000\uDAC3\u0000\u0000" + // 23440 - 23444
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23445 - 23449
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFB2\u0000\uDFB6" + // 23450 - 23454
+ "\u8EA2\uBBE3\u0000\uE3F7\u0000\uDFB4\u8EA2\uBBE7\u0000\uDFB8" + // 23455 - 23459
+ "\u8EA2\uC2EB\u8EA2\uBBE9\u0000\uE3F9\u0000\uDFB0\u0000\uDFB3" + // 23460 - 23464
+ "\u8EA2\uBBEA\u0000\u0000\u8EA2\uBBEB\u8EA2\uBBF1\u8EA2\uAFA6" + // 23465 - 23469
+ "\u8EA2\uAFA8\u0000\u0000\u8EA2\uAFAA\u0000\uD5CA\u0000\uD5D0" + // 23470 - 23474
+ "\u8EA2\uB5B7\u8EA2\uAFAE\u8EA2\uAFA5\u0000\uDABE\u8EA2\uB5B5" + // 23475 - 23479
+ "\u0000\u0000\u0000\uD5CF\u0000\uD5CD\u8EA2\uAFB0\u0000\u0000" + // 23480 - 23484
+ "\u8EA2\uB5B6\u0000\u0000\u8EA2\uAFA7\u0000\u0000\u0000\uD5CE" + // 23485 - 23489
+ "\u8EA2\uAFAB\u0000\uD5D1\u8EA2\uAFAD\u0000\u0000\u0000\u0000" + // 23490 - 23494
+ "\u0000\uD5CC\u8EA2\uAFAC\u8EA2\uAFAF\u8EA2\uAFA9\u0000\u0000" + // 23495 - 23499
+ "\u0000\uD5CB\u0000\uDABF\u0000\u0000\u8EA2\uAFA4\u0000\uDABD" + // 23500 - 23504
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAC0" + // 23505 - 23509
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23510 - 23514
+ "\u0000\u0000\u0000\u0000\u8EA2\uB5B9\u8EA2\uB5C2\u0000\uDFAB" + // 23515 - 23519
+ "\u0000\u0000\u0000\uDAC2\u0000\uDAC7\u0000\uDFAC\u8EA2\uB5C4" + // 23520 - 23524
+ "\u0000\uDACE\u8EA2\uBBDD\u8EA2\uB5BA\u0000\uDAC6\u0000\uDAC9" + // 23525 - 23529
+ "\u0000\uDAC4\u8EA2\uB5B8\u8EA2\uB5C6\u8EA2\uAACB\u8EA2\uAFA3" + // 23530 - 23534
+ "\u8EA2\uAACC\u0000\uD1B2\u8EA2\uAACF\u8EA2\uAAC5\u0000\uD1B1" + // 23535 - 23539
+ "\u8EA2\uAAC7\u0000\u0000\u8EA2\uAAC8\u0000\u0000\u0000\u0000" + // 23540 - 23544
+ "\u8EA2\uAACA\u0000\uD1AD\u0000\u0000\u0000\u0000\u0000\uD5C5" + // 23545 - 23549
+ "\u0000\u0000\u0000\u0000\u8EA2\uAAC6\u8EA2\uAAC2\u0000\uD5C6" + // 23550 - 23554
+ "\u0000\u0000\u0000\u0000\u8EA2\uAAD0\u0000\uD5C2\u8EA2\uAFA1" + // 23555 - 23559
+ "\u8EA2\uAAC9\u0000\u0000\u8EA2\uAEFE\u8EA2\uAAC4\u8EA2\uAACD" + // 23560 - 23564
+ "\u0000\u0000\u0000\u0000\u0000\uD1B0\u0000\uD5C3\u0000\uD1B6" + // 23565 - 23569
+ "\u0000\uD5C4\u8EA2\uAAD1\u8EA2\uAFA2\u0000\uD1AF\u0000\uD5C8" + // 23570 - 23574
+ "\u0000\uD1B5\u0000\uD1B4\u0000\uD1B3\u0000\uD5C7\u8EA2\uAAD2" + // 23575 - 23579
+ "\u0000\uD5C9\u0000\uD1AE\u0000\u0000\u8EA2\uAAC3\u0000\u0000" + // 23580 - 23584
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23585 - 23589
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23590 - 23594
+ "\u0000\u0000\u0000\uDABC\u8EA2\uA4A6\u0000\u0000\u0000\u0000" + // 23595 - 23599
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23600 - 23604
+ "\u0000\u0000\u8EA2\uA6EE\u8EA2\uA6E1\u8EA2\uA6DF\u8EA2\uA6ED" + // 23605 - 23609
+ "\u8EA2\uA6E8\u0000\uD1AB\u0000\uCDC4\u8EA2\uA6E9\u8EA2\uA6EC" + // 23610 - 23614
+ "\u0000\uD1A7\u8EA2\uA6EB\u0000\uCDC5\u0000\uCDCA\u0000\uCDC8" + // 23615 - 23619
+ "\u8EA2\uA6E2\u0000\u0000\u8EA2\uA6DD\u8EA2\uA6E4\u0000\uCDCF" + // 23620 - 23624
+ "\u8EA2\uA6EF\u0000\uD1A8\u8EA2\uA6E5\u0000\u0000\u0000\uD1A9" + // 23625 - 23629
+ "\u0000\uCDCB\u8EA2\uA6E7\u0000\u0000\u8EA2\uAACE\u0000\uD1AA" + // 23630 - 23634
+ "\u8EA2\uA6DC\u0000\uCDCC\u0000\uD1AC\u0000\uCDCD\u0000\uCDC9" + // 23635 - 23639
+ "\u0000\uCDCE\u8EA2\uA6E6\u8EA2\uA6DB\u8EA2\uA6EA\u0000\uCDC6" + // 23640 - 23644
+ "\u0000\u0000\u0000\u0000\u8EA2\uA6DE\u8EA2\uA6E3\u8EA2\uA6E0" + // 23645 - 23649
+ "\u0000\uCDC7\u0000\u0000\u8EA2\uAAC0\u0000\u0000\u8EA2\uAAC1" + // 23650 - 23654
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23655 - 23659
+ "\u0000\u0000\u8EA2\uA4BE\u0000\uCADF\u8EA2\uA4BF\u8EA2\uA4C3" + // 23660 - 23664
+ "\u0000\uCADE\u0000\u0000\u8EA2\uA4C7\u8EA2\uA4C2\u8EA2\uA4C5" + // 23665 - 23669
+ "\u0000\uCAD7\u0000\uCAD8\u0000\uCAD9\u0000\uCADA\u0000\u0000" + // 23670 - 23674
+ "\u0000\uCAE1\u0000\u0000\u8EA2\uA4C1\u0000\uCADC\u0000\uCAE2" + // 23675 - 23679
+ "\u0000\u0000\u8EA2\uA4C0\u8EA2\uA4C6\u0000\u0000\u0000\uCADB" + // 23680 - 23684
+ "\u8EA2\uA4C4\u0000\uCADD\u0000\uCAD6\u0000\uCAE0\u0000\u0000" + // 23685 - 23689
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23690 - 23694
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEBA\u0000\u0000" + // 23695 - 23699
+ "\u8EA2\uA7B5\u0000\uCEA6\u0000\u0000\u0000\uCEB0\u0000\uCEB1" + // 23700 - 23704
+ "\u0000\uCEA9\u0000\uCEBB\u0000\uCEAB\u8EA2\uA7BD\u0000\uCEB6" + // 23705 - 23709
+ "\u8EA2\uA7B8\u0000\uCEAC\u8EA2\uA7C7\u8EA2\uA7C8\u8EA2\uA7C0" + // 23710 - 23714
+ "\u8EA2\uA7B9\u0000\uCEB9\u8EA2\uA7C5\u0000\uCEB4\u0000\uCEB2" + // 23715 - 23719
+ "\u8EA2\uE8F4\u8EA2\uE8F5\u0000\u0000\u0000\uC5C0\u0000\u0000" + // 23720 - 23724
+ "\u0000\uC6D2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1DC" + // 23725 - 23729
+ "\u0000\u0000\u0000\u0000\u0000\uCAB4\u0000\uCAB6\u0000\u0000" + // 23730 - 23734
+ "\u8EA2\uA2C2\u8EA2\uA3F8\u8EA2\uA3F7\u8EA2\uA3F6\u0000\u0000" + // 23735 - 23739
+ "\u8EA2\uA2C1\u8EA2\uA2C0\u0000\uC8A5\u0000\uCAB5\u0000\uCAB3" + // 23740 - 23744
+ "\u0000\uC8A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDBF" + // 23745 - 23749
+ "\u8EA2\uA6D9\u0000\u0000\u0000\uCDC0\u8EA2\uA3FD\u0000\u0000" + // 23750 - 23754
+ "\u8EA2\uA4A1\u8EA2\uA3FE\u8EA2\uA6DA\u0000\u0000\u0000\u0000" + // 23755 - 23759
+ "\u8EA2\uA3FA\u0000\u0000\u0000\uCABA\u0000\uCAB8\u0000\u0000" + // 23760 - 23764
+ "\u8EA2\uA3F9\u8EA2\uA3FB\u8EA2\uA4A3\u0000\u0000\u0000\uCAB7" + // 23765 - 23769
+ "\u0000\u0000\u8EA2\uA3FC\u8EA2\uA4A7\u0000\uCDC2\u0000\u0000" + // 23770 - 23774
+ "\u8EA2\uA4A4\u0000\uCAB9\u0000\u0000\u8EA2\uA4A2\u8EA2\uA4A5" + // 23775 - 23779
+ "\u0000\u0000\u0000\uCDC1\u0000\u0000\u0000\uCDC3\u0000\uCDBB" + // 23780 - 23784
+ "\u0000\uCDBC\u8EA2\uA6D6\u0000\u0000\u0000\u0000\u0000\uD1A1" + // 23785 - 23789
+ "\u8EA2\uAABF\u0000\uD1A4\u0000\uD0FE\u0000\uD1A6\u0000\uD1A2" + // 23790 - 23794
+ "\u0000\uD1A3\u0000\uD1A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 23795 - 23799
+ "\u0000\uD5C1\u0000\uD5C0\u0000\uD5BF\u0000\u0000\u0000\u0000" + // 23800 - 23804
+ "\u0000\u0000\u8EA2\uB5B3\u0000\uDAB5\u0000\uDAB8\u0000\uDAB6" + // 23805 - 23809
+ "\u0000\u0000\u8EA2\uB5B2\u0000\uDABB\u0000\u0000\u0000\uDAB7" + // 23810 - 23814
+ "\u8EA2\uB5B4\u0000\uDABA\u0000\uDAB9\u0000\u0000\u0000\u0000" + // 23815 - 23819
+ "\u0000\u0000\u8EA2\uBBDA\u8EA2\uBBD9\u0000\u0000\u0000\uDFA8" + // 23820 - 23824
+ "\u0000\uDFA6\u0000\uDFA7\u8EA2\uBBDB\u0000\uE3F1\u8EA2\uC2EA" + // 23825 - 23829
+ "\u0000\uE3F2\u8EA2\uC2E9\u0000\u0000\u0000\u0000\u8EA2\uD0C0" + // 23830 - 23834
+ "\u0000\u0000\u0000\u0000\u0000\uECE2\u8EA2\uCAA8\u0000\uECE1" + // 23835 - 23839
+ "\u0000\u0000\u0000\uE8E5\u0000\u0000\u8EA2\uD7A2\u8EA2\uD7A1" + // 23840 - 23844
+ "\u0000\uF3DB\u8EA2\uDCE9\u8EA2\uE5CB\u8EA2\uC2E8\u0000\u0000" + // 23845 - 23849
+ "\u0000\u0000\u8EA2\uCAA6\u8EA2\uCAA5\u0000\u0000\u0000\uE8E3" + // 23850 - 23854
+ "\u0000\u0000\u0000\uECDF\u8EA2\uD0BF\u0000\uF0D3\u8EA2\uD6FE" + // 23855 - 23859
+ "\u0000\uF3DA\u0000\u0000\u0000\uFBDF\u8EA2\uEFA7\u0000\uA7D9" + // 23860 - 23864
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6D5\u0000\u0000" + // 23865 - 23869
+ "\u8EA2\uAABE\u0000\uDAB1\u8EA2\uBBD8\u0000\uE3F0\u0000\u0000" + // 23870 - 23874
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C1\u0000\u0000" + // 23875 - 23879
+ "\u0000\u0000\u0000\uA7DA\u0000\uCAB0\u0000\u0000\u0000\uCAAF" + // 23880 - 23884
+ "\u0000\uD0FD\u0000\u0000\u8EA2\uAEFD\u0000\u0000\u0000\uDAB3" + // 23885 - 23889
+ "\u0000\uDDA9\u0000\uDAB4\u0000\uDAB2\u0000\uDFA5\u0000\u0000" + // 23890 - 23894
+ "\u8EA2\uCAA7\u0000\uE8E4\u0000\uECE0\u0000\u0000\u8EA2\uA1AC" + // 23895 - 23899
+ "\u8EA2\uA2BF\u0000\u0000\u8EA2\uA3F5\u0000\uCAB1\u8EA2\uA3F4" + // 23900 - 23904
+ "\u0000\uCAB2\u0000\u0000\u0000\u0000\u0000\uCDBE\u8EA2\uA6D8" + // 23905 - 23909
+ "\u8EA2\uA6D7\u0000\uCDBD\u8EA2\uA1DA\u0000\u0000\u8EA2\uA1DB" + // 23910 - 23914
+ "\u0000\u0000\u8EA2\uA2BC\u0000\u0000\u0000\u0000\u0000\uCAAA" + // 23915 - 23919
+ "\u8EA2\uA3F0\u8EA2\uA3EE\u0000\uCAAB\u8EA2\uA3ED\u8EA2\uA3EF" + // 23920 - 23924
+ "\u8EA2\uA3F1\u0000\u0000\u0000\uCAA9\u0000\u0000\u0000\u0000" + // 23925 - 23929
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDB5\u0000\uCDB6" + // 23930 - 23934
+ "\u0000\uCDB3\u0000\u0000\u0000\u0000\u0000\uCDB2\u8EA2\uAAB9" + // 23935 - 23939
+ "\u0000\uCDB4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0F8" + // 23940 - 23944
+ "\u0000\u0000\u8EA2\uAAB8\u8EA2\uAABA\u8EA2\uAAB7\u8EA2\uAABB" + // 23945 - 23949
+ "\u0000\uD0F9\u0000\uD5BD\u8EA2\uAEF7\u0000\u0000\u8EA2\uAEF9" + // 23950 - 23954
+ "\u0000\uD5BB\u8EA2\uAEFA\u0000\uD5BC\u8EA2\uAEF8\u0000\u0000" + // 23955 - 23959
+ "\u8EA2\uAAB6\u8EA2\uB5AB\u8EA2\uB5AE\u8EA2\uB5AF\u8EA2\uB5AC" + // 23960 - 23964
+ "\u0000\uDAAD\u0000\uDAAC\u0000\uDAAA\u0000\uDAAB\u8EA2\uB5AD" + // 23965 - 23969
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAAE" + // 23970 - 23974
+ "\u0000\u0000\u0000\uE5DB\u8EA2\uC5DA\u0000\u0000\u0000\u0000" + // 23975 - 23979
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCC8\u0000\u0000" + // 23980 - 23984
+ "\u8EA2\uCCC1\u8EA2\uCCC2\u0000\u0000\u0000\uE9FE\u0000\uE9FC" + // 23985 - 23989
+ "\u0000\uE9FD\u8EA2\uCCCA\u0000\u0000\u8EA2\uCCC9\u8EA2\uCCC6" + // 23990 - 23994
+ "\u8EA2\uCCC5\u8EA2\uCCC4\u8EA2\uCCC3\u8EA2\uCCC7\u8EA2\uCCC0" + // 23995 - 23999
+ "\u0000\u0000\u8EA2\uD2D3\u8EA2\uD2D8\u8EA2\uD2D6\u0000\u0000" + // 24000 - 24004
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2D5\u8EA2\uD2D4\u8EA2\uD2D7" + // 24005 - 24009
+ "\u0000\u0000\u8EA2\uD8F8\u0000\u0000\u0000\uF1D7\u0000\uF4D2" + // 24010 - 24014
+ "\u8EA2\uDDFB\u0000\u0000\u0000\uF4D3\u8EA2\uDDFA\u8EA2\uE2CB" + // 24015 - 24019
+ "\u8EA2\uE2CA\u0000\uF6F1\u0000\u0000\u8EA2\uE6AF\u0000\uF8D6" + // 24020 - 24024
+ "\u8EA2\uE9CE\u0000\uFBEB\u8EA2\uEDE5\u0000\u0000\u8EA2\uF0C5" + // 24025 - 24029
+ "\u8EA2\uF0C4\u8EA2\uA1E7\u0000\uD2ED\u0000\uD2EE\u8EA2\uB7E6" + // 24030 - 24034
+ "\u0000\u0000\u0000\uE5DD\u0000\uC6FD\u0000\uCBB5\u0000\uDEFB" + // 24035 - 24039
+ "\u8EA2\uBBD7\u0000\u0000\u0000\uDEFC\u8EA2\uBBD6\u0000\uDEF9" + // 24040 - 24044
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2E0" + // 24045 - 24049
+ "\u8EA2\uC2E2\u0000\uE3EB\u8EA2\uC2E1\u8EA2\uC2DF\u8EA2\uC2DE" + // 24050 - 24054
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9F9\u0000\uE8DF" + // 24055 - 24059
+ "\u0000\uE8DD\u0000\u0000\u0000\uE8DE\u8EA2\uC9F7\u8EA2\uC9F8" + // 24060 - 24064
+ "\u0000\u0000\u0000\uE8DB\u8EA2\uD0BA\u8EA2\uD0B8\u0000\u0000" + // 24065 - 24069
+ "\u0000\uECD7\u8EA2\uD0B9\u0000\uECD8\u0000\uECD6\u0000\uE8DC" + // 24070 - 24074
+ "\u0000\u0000\u0000\u0000\u8EA2\uD6F7\u8EA2\uD6F5\u8EA2\uD6F6" + // 24075 - 24079
+ "\u8EA2\uD0B7\u8EA2\uDCE8\u0000\uF3D9\u8EA2\uDCE7\u8EA2\uE1D1" + // 24080 - 24084
+ "\u8EA2\uE1D2\u8EA2\uD6F8\u8EA2\uE5CA\u0000\u0000\u0000\uC4DB" + // 24085 - 24089
+ "\u0000\uC6CD\u0000\uC8A1\u8EA2\uA2BB\u0000\uC7FE\u0000\u0000" + // 24090 - 24094
+ "\u0000\uCDB1\u0000\uE3EC\u0000\uA7D3\u0000\uC5BC\u0000\uC6CE" + // 24095 - 24099
+ "\u0000\uD0F7\u0000\uDEFD\u0000\uA7D4\u8EA2\uE1D0\u0000\u0000" + // 24100 - 24104
+ "\u8EA2\uE4BE\u8EA2\uE5C9\u0000\u0000\u0000\u0000\u8EA2\uE8F0" + // 24105 - 24109
+ "\u8EA2\uE8F1\u0000\u0000\u0000\uF9EB\u0000\u0000\u8EA2\uEBD7" + // 24110 - 24114
+ "\u0000\u0000\u0000\uFAE9\u0000\u0000\u8EA2\uEBD8\u0000\u0000" + // 24115 - 24119
+ "\u8EA2\uEDCC\u0000\uFBDE\u0000\u0000\u0000\uFBDD\u8EA2\uEDCB" + // 24120 - 24124
+ "\u0000\uFCB5\u0000\u0000\u8EA2\uEFA5\u0000\u0000\u0000\u0000" + // 24125 - 24129
+ "\u0000\uA7CE\u0000\u0000\u0000\uC4D5\u0000\uC7FC\u8EA2\uA2BA" + // 24130 - 24134
+ "\u8EA2\uA3EA\u0000\uCBD6\u0000\uDAA5\u0000\u0000\u0000\u0000" + // 24135 - 24139
+ "\u0000\uC4D6\u0000\uC6CA\u0000\uC6C9\u0000\uC6C8\u0000\u0000" + // 24140 - 24144
+ "\u0000\u0000\u0000\uCAA7\u0000\u0000\u0000\u0000\u0000\uD5B8" + // 24145 - 24149
+ "\u0000\u0000\u8EA2\uC2DD\u0000\uC4D7\u0000\uC4D8\u0000\uC4D9" + // 24150 - 24154
+ "\u0000\uC5BB\u0000\u0000\u0000\u0000\u0000\uD0F3\u0000\u0000" + // 24155 - 24159
+ "\u8EA2\uAAB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEF8" + // 24160 - 24164
+ "\u0000\uC4DA\u8EA2\uA1BD\u8EA2\uC9E9\u8EA2\uC9ED\u8EA2\uC9E8" + // 24165 - 24169
+ "\u0000\u0000\u0000\uE8D9\u0000\u0000\u8EA2\uC9EB\u0000\uE8DA" + // 24170 - 24174
+ "\u8EA2\uC9F1\u8EA2\uC9F0\u8EA2\uC9EF\u0000\u0000\u0000\u0000" + // 24175 - 24179
+ "\u8EA2\uC9F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24180 - 24184
+ "\u8EA2\uD0AE\u8EA2\uD0B0\u0000\uECD5\u8EA2\uD0B1\u0000\u0000" + // 24185 - 24189
+ "\u8EA2\uD0AC\u0000\u0000\u8EA2\uD0AB\u8EA2\uD0B5\u0000\u0000" + // 24190 - 24194
+ "\u8EA2\uD0B3\u0000\uECD4\u8EA2\uD0B6\u8EA2\uD0AD\u8EA2\uD0B2" + // 24195 - 24199
+ "\u8EA2\uD0B4\u8EA2\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000" + // 24200 - 24204
+ "\u0000\u0000\u8EA2\uD6EB\u8EA2\uD6F0\u8EA2\uD6EA\u8EA2\uD6EF" + // 24205 - 24209
+ "\u0000\u0000\u8EA2\uD6E8\u8EA2\uD6F2\u8EA2\uD6EE\u8EA2\uD6F3" + // 24210 - 24214
+ "\u8EA2\uD6ED\u8EA2\uD6E9\u8EA2\uD6F1\u0000\u0000\u8EA2\uD6F4" + // 24215 - 24219
+ "\u8EA2\uD6EC\u0000\u0000\u8EA2\uDCE6\u0000\uF3D8\u0000\u0000" + // 24220 - 24224
+ "\u0000\uF3D6\u0000\u0000\u0000\uF3D5\u0000\uF3D7\u0000\u0000" + // 24225 - 24229
+ "\u0000\u0000\u0000\uA3A4\u0000\uA3A5\u0000\uA3A6\u0000\uA3A7" + // 24230 - 24234
+ "\u0000\uA3A8\u0000\uA3A9\u0000\uA3AA\u0000\uA3AB\u0000\uA3B2" + // 24235 - 24239
+ "\u0000\uA3B1\u0000\uA3B0\u0000\uA3AF\u0000\uA3AE\u0000\uA3AD" + // 24240 - 24244
+ "\u0000\uA3AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24245 - 24249
+ "\u0000\uA3B8\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24250 - 24254
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24255 - 24259
+ "\u0000\u0000\u0000\u0000\u0000\uA1FC\u0000\uA1FB\u0000\u0000" + // 24260 - 24264
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24265 - 24269
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24270 - 24274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24275 - 24279
+ "\u0000\uA1F5\u0000\uA1F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 24280 - 24284
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24285 - 24289
+ "\u0000\uA1FE\u0000\uA1FD\u0000\u0000\u0000\u0000\u8EA2\uAFFD" + // 24290 - 24294
+ "\u0000\u0000\u0000\uE5FE\u0000\uE1C8\u0000\uE5FD\u0000\uEACE" + // 24295 - 24299
+ "\u0000\u0000\u0000\uC8D8\u8EA2\uA1E8\u0000\uC8D9\u0000\uC8DA" + // 24300 - 24304
+ "\u0000\u0000\u0000\u0000\u8EA2\uA8CB\u8EA2\uA4F6\u0000\u0000" + // 24305 - 24309
+ "\u8EA2\uA4F7\u0000\uCBBA\u0000\u0000\u8EA2\uA4F4\u0000\uCBB9" + // 24310 - 24314
+ "\u0000\u0000\u0000\uCBBC\u8EA2\uA4F5\u0000\uCBBE\u0000\uCBBD" + // 24315 - 24319
+ "\u8EA2\uA4F8\u0000\uCBBB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24320 - 24324
+ "\u0000\uCFB4\u0000\uCFB2\u8EA2\uA8CD\u0000\u0000\u0000\uCFB1" + // 24325 - 24329
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFB6\u0000\uCFB8" + // 24330 - 24334
+ "\u0000\uCFB5\u0000\u0000\u8EA2\uA8D0\u8EA2\uA8CC\u0000\uCFB9" + // 24335 - 24339
+ "\u0000\u0000\u0000\uCFB3\u0000\uCBBF\u0000\u0000\u0000\uCFB7" + // 24340 - 24344
+ "\u8EA2\uA8CF\u0000\u0000\u0000\u0000\u8EA2\uA8CE\u0000\u0000" + // 24345 - 24349
+ "\u0000\uCFB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24350 - 24354
+ "\u0000\u0000\u0000\uA2EA\u0000\u0000\u0000\uA2A2\u0000\u0000" + // 24355 - 24359
+ "\u0000\u0000\u0000\u0000\u0000\uA2EB\u0000\u0000\u0000\u0000" + // 24360 - 24364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24365 - 24369
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24370 - 24374
+ "\u8EAD\uA4C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24375 - 24379
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24380 - 24384
+ "\u0000\u0000\u8EAD\uA4C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 24385 - 24389
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24390 - 24394
+ "\u0000\u0000\u8EAD\uA1CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 24395 - 24399
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24400 - 24404
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24405 - 24409
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24410 - 24414
+ "\u0000\u0000\u0000\u0000\u8EAD\uA1AF\u0000\u0000\u0000\u0000" + // 24415 - 24419
+ "\u0000\u0000\u0000\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000" + // 24420 - 24424
+ "\u0000\uA1E4\u0000\uA1E5\u0000\u0000\u0000\u0000\u0000\uA1E6" + // 24425 - 24429
+ "\u0000\uA1E7\u0000\u0000\u0000\u0000\u8EAD\uA1CF\u8EAD\uA1D0" + // 24430 - 24434
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1AD\u0000\uA1AC" + // 24435 - 24439
+ "\u0000\uA1A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24440 - 24444
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CB" + // 24445 - 24449
+ "\u0000\u0000\u0000\uA1EB\u8EAD\uA1B3\u0000\u0000\u0000\uA1EA" + // 24450 - 24454
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24455 - 24459
+ "\u0000\uA1EF\u0000\u0000\u0000\u0000\u0000\uA2A3\u0000\u0000" + // 24460 - 24464
+ "\u0000\uF4D1\u8EA2\uDDF1\u0000\u0000\u8EA2\uDDF9\u8EA2\uDDF6" + // 24465 - 24469
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2C6\u0000\u0000" + // 24470 - 24474
+ "\u0000\u0000\u8EA2\uE2C3\u0000\u0000\u0000\uF6F0\u0000\u0000" + // 24475 - 24479
+ "\u8EA2\uE2C7\u8EA2\uE2C9\u8EA2\uE2C8\u8EA2\uE2C4\u8EA2\uE2C5" + // 24480 - 24484
+ "\u0000\u0000\u0000\u0000\u8EA2\uE6AD\u0000\u0000\u0000\uF8D5" + // 24485 - 24489
+ "\u0000\u0000\u8EA2\uE6AA\u8EA2\uE6AC\u8EA2\uE6A9\u8EA2\uE6AE" + // 24490 - 24494
+ "\u0000\u0000\u0000\u0000\u8EA2\uE6AB\u0000\u0000\u8EA2\uE9C9" + // 24495 - 24499
+ "\u8EA2\uE9CC\u8EA2\uE9C8\u0000\uF9FC\u8EA2\uE9CA\u8EA2\uE9CB" + // 24500 - 24504
+ "\u8EA2\uE9CD\u0000\uF9FD\u0000\uFAA1\u0000\uF9FE\u8EA2\uEBEF" + // 24505 - 24509
+ "\u0000\u0000\u8EA2\uEBF1\u0000\u0000\u8EA2\uEBF0\u0000\u0000" + // 24510 - 24514
+ "\u0000\u0000\u0000\u0000\u8EA2\uEDE4\u0000\u0000\u0000\u0000" + // 24515 - 24519
+ "\u8EA2\uF0C3\u8EA2\uF1AA\u0000\uC6FC\u0000\u0000\u0000\u0000" + // 24520 - 24524
+ "\u8EA2\uA4F2\u0000\uCFA3\u8EA2\uA8C3\u8EA2\uBBD4\u8EA2\uBBC0" + // 24525 - 24529
+ "\u8EA2\uBBCD\u8EA2\uBBBE\u0000\u0000\u8EA2\uBBD5\u0000\u0000" + // 24530 - 24534
+ "\u0000\uDEF7\u0000\u0000\u8EA2\uBBCF\u8EA2\uC2D5\u8EA2\uBBC1" + // 24535 - 24539
+ "\u0000\uDEF4\u0000\u0000\u8EA2\uBBC5\u0000\u0000\u0000\uDEF5" + // 24540 - 24544
+ "\u8EA2\uBBC4\u8EA2\uBBC9\u0000\u0000\u0000\u0000\u8EA2\uBBC6" + // 24545 - 24549
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBCC\u0000\u0000" + // 24550 - 24554
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2D9\u0000\u0000" + // 24555 - 24559
+ "\u0000\u0000\u0000\u0000\u8EA2\uC2DC\u8EA2\uC2D4\u0000\u0000" + // 24560 - 24564
+ "\u8EA2\uC2D6\u0000\u0000\u8EA2\uC2DB\u8EA2\uC2DA\u0000\uE3E9" + // 24565 - 24569
+ "\u0000\u0000\u8EA2\uBBBF\u8EA2\uC2D8\u0000\u0000\u0000\u0000" + // 24570 - 24574
+ "\u0000\uE3EA\u0000\u0000\u8EA2\uC2D3\u8EA2\uC2D7\u0000\u0000" + // 24575 - 24579
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9EE\u0000\u0000" + // 24580 - 24584
+ "\u8EA2\uC9F5\u8EA2\uC9EC\u0000\u0000\u8EA2\uC9F3\u8EA2\uC9EA" + // 24585 - 24589
+ "\u8EA2\uC9F2\u8EA2\uC9F6\u8EA2\uAEF3\u0000\uD5B6\u0000\u0000" + // 24590 - 24594
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9F7\u0000\uD9F6" + // 24595 - 24599
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB4F8\u8EA2\uB4FC" + // 24600 - 24604
+ "\u8EA2\uB4FE\u0000\uD9F8\u8EA2\uB5A3\u0000\u0000\u0000\uD9FC" + // 24605 - 24609
+ "\u8EA2\uB5A5\u0000\u0000\u0000\uD9FE\u0000\u0000\u0000\uD9FA" + // 24610 - 24614
+ "\u0000\uDAA4\u0000\u0000\u0000\uDAA1\u8EA2\uB4FA\u0000\uD9F9" + // 24615 - 24619
+ "\u0000\u0000\u8EA2\uB4F9\u8EA2\uB4F7\u8EA2\uB5A7\u8EA2\uB4FB" + // 24620 - 24624
+ "\u0000\u0000\u0000\uD9FB\u8EA2\uB5A6\u0000\uDAA2\u8EA2\uB5A2" + // 24625 - 24629
+ "\u8EA2\uB5A1\u0000\uDAA3\u8EA2\uB4FD\u0000\uD9FD\u0000\u0000" + // 24630 - 24634
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5A8\u0000\u0000" + // 24635 - 24639
+ "\u8EA2\uB5A4\u8EA2\uBBCB\u8EA2\uBBD2\u8EA2\uBBC7\u0000\uDEF6" + // 24640 - 24644
+ "\u8EA2\uBBC3\u8EA2\uBBD3\u8EA2\uBBBD\u8EA2\uBBD0\u8EA2\uBBCE" + // 24645 - 24649
+ "\u8EA2\uBBC8\u0000\u0000\u8EA2\uBBD1\u8EA2\uBBCA\u0000\u0000" + // 24650 - 24654
+ "\u8EA2\uBBC2\u0000\uC9FD\u0000\uC9FE\u0000\u0000\u0000\u0000" + // 24655 - 24659
+ "\u8EA2\uA6BA\u0000\uCDA2\u0000\uCDA3\u8EA2\uA6BB\u0000\uCDA1" + // 24660 - 24664
+ "\u0000\u0000\u0000\u0000\u0000\uD0F0\u8EA2\uA9F9\u0000\uD0EF" + // 24665 - 24669
+ "\u0000\uD0ED\u0000\uD0EE\u0000\uD5AE\u0000\uD5AC\u0000\u0000" + // 24670 - 24674
+ "\u0000\u0000\u8EA2\uAEED\u0000\uD5AD\u8EA2\uAEEC\u0000\u0000" + // 24675 - 24679
+ "\u0000\uD5A2\u8EA2\uB4F6\u0000\u0000\u0000\u0000\u0000\uD9F4" + // 24680 - 24684
+ "\u0000\uD9F5\u0000\u0000\u0000\u0000\u0000\uD9F3\u0000\u0000" + // 24685 - 24689
+ "\u0000\uE8D8\u8EA2\uC9E7\u0000\uECD2\u0000\uECD3\u0000\u0000" + // 24690 - 24694
+ "\u8EA2\uD0AA\u0000\uF3D4\u8EA2\uE1CE\u8EA2\uE1CF\u0000\u0000" + // 24695 - 24699
+ "\u0000\uFAE8\u8EA2\uF0B6\u8EA2\uA1AB\u0000\uC5BA\u0000\u0000" + // 24700 - 24704
+ "\u0000\uC4D4\u0000\u0000\u8EA2\uA1D8\u8EA2\uA1D7\u0000\u0000" + // 24705 - 24709
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7FB\u8EA2\uA2B7" + // 24710 - 24714
+ "\u8EA2\uA2B8\u8EA2\uA2B6\u0000\u0000\u8EA2\uA2B9\u0000\u0000" + // 24715 - 24719
+ "\u0000\uD2DC\u0000\u0000\u8EA2\uACC3\u8EA2\uACC4\u8EA2\uACC5" + // 24720 - 24724
+ "\u0000\u0000\u0000\uD2E3\u8EA2\uACC2\u0000\uD2DF\u8EA2\uACC6" + // 24725 - 24729
+ "\u0000\uD2E0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24730 - 24734
+ "\u8EA2\uB1B2\u8EA2\uB1B6\u8EA2\uB1B4\u8EA2\uB1B3\u0000\u0000" + // 24735 - 24739
+ "\u8EA2\uB1B7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1B8" + // 24740 - 24744
+ "\u8EA2\uB1B9\u8EA2\uB1B1\u0000\u0000\u8EA2\uB1B0\u0000\u0000" + // 24745 - 24749
+ "\u0000\uD6F8\u0000\uD6F9\u0000\u0000\u8EA2\uB1BA\u8EA2\uB1B5" + // 24750 - 24754
+ "\u0000\u0000\u8EA2\uB7D3\u0000\u0000\u8EA2\uB1BB\u0000\uD6FA" + // 24755 - 24759
+ "\u0000\uD6F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7CD" + // 24760 - 24764
+ "\u0000\u0000\u8EA2\uB7CC\u0000\u0000\u8EA2\uB7CE\u8EA2\uB7CF" + // 24765 - 24769
+ "\u8EA2\uB7D1\u8EA2\uB7D0\u8EA2\uB7D5\u0000\uDCBA\u0000\uDCB7" + // 24770 - 24774
+ "\u0000\uDCBB\u8EA2\uB7CB\u0000\uDCBC\u8EA2\uB7D4\u0000\uDCB9" + // 24775 - 24779
+ "\u8EA2\uB7D2\u0000\uDCB8\u0000\u0000\u0000\uE9F6\u0000\u0000" + // 24780 - 24784
+ "\u8EA2\uD2D0\u8EA2\uD2D1\u0000\uEDFC\u0000\u0000\u0000\u0000" + // 24785 - 24789
+ "\u8EA2\uD2CF\u8EA2\uD2D2\u0000\uEDFE\u0000\uEDFB\u8EA2\uD2CB" + // 24790 - 24794
+ "\u8EA2\uD2C8\u8EA2\uD2CD\u8EA2\uD2CA\u0000\uEEA4\u8EA2\uD2CC" + // 24795 - 24799
+ "\u0000\u0000\u0000\u0000\u8EA2\uD2CE\u0000\uEEA2\u0000\u0000" + // 24800 - 24804
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1D4\u8EA2\uD8F2" + // 24805 - 24809
+ "\u0000\u0000\u8EA2\uD8EC\u8EA2\uD8F0\u8EA2\uD8F6\u8EA2\uD8F7" + // 24810 - 24814
+ "\u8EA2\uD8F3\u8EA2\uD8F4\u8EA2\uD8F1\u0000\u0000\u8EA2\uD8EE" + // 24815 - 24819
+ "\u0000\u0000\u0000\uF1D6\u0000\uF1D3\u8EA2\uD8ED\u8EA2\uD8EF" + // 24820 - 24824
+ "\u0000\u0000\u0000\uF1D5\u8EA2\uD8F5\u0000\u0000\u0000\uF4D0" + // 24825 - 24829
+ "\u0000\u0000\u0000\u0000\u8EA2\uDDF5\u8EA2\uDDEF\u0000\uF4CF" + // 24830 - 24834
+ "\u0000\u0000\u0000\u0000\u0000\uF4CD\u0000\u0000\u8EA2\uDDF7" + // 24835 - 24839
+ "\u0000\uF4CE\u8EA2\uDDF2\u8EA2\uDDF3\u8EA2\uDDF0\u8EA2\uDDF8" + // 24840 - 24844
+ "\u8EA2\uDDF4\u8EA2\uB4F5\u8EA2\uB4F4\u0000\uD9ED\u0000\u0000" + // 24845 - 24849
+ "\u0000\uD9EC\u0000\uD9EB\u0000\uD9EF\u0000\uD9EA\u0000\u0000" + // 24850 - 24854
+ "\u0000\u0000\u8EA2\uBBB9\u8EA2\uBBB6\u0000\uDEEE\u8EA2\uBBB5" + // 24855 - 24859
+ "\u8EA2\uBBBA\u0000\u0000\u0000\uDEF0\u8EA2\uBBB8\u0000\uDEED" + // 24860 - 24864
+ "\u0000\uDEEF\u8EA2\uBBB7\u0000\u0000\u8EA2\uC2CE\u0000\u0000" + // 24865 - 24869
+ "\u8EA2\uC2CF\u8EA2\uC2D0\u0000\u0000\u0000\u0000\u0000\u0000" + // 24870 - 24874
+ "\u0000\u0000\u0000\uE8CE\u0000\uE8D6\u8EA2\uC9E5\u0000\uE8D0" + // 24875 - 24879
+ "\u0000\uE8D4\u8EA2\uC9E6\u0000\uE8D5\u0000\uE8D1\u0000\uE8D2" + // 24880 - 24884
+ "\u0000\uE8CF\u0000\uE8D3\u0000\uECD0\u8EA2\uBBB4\u0000\uECD1" + // 24885 - 24889
+ "\u0000\uECCF\u0000\u0000\u0000\uECCE\u8EA2\uD6E7\u0000\uF0D1" + // 24890 - 24894
+ "\u8EA2\uDCE4\u8EA2\uDCE5\u0000\u0000\u0000\u0000\u0000\uF8B1" + // 24895 - 24899
+ "\u0000\uF9EA\u0000\u0000\u0000\uC4D0\u0000\u0000\u0000\uC7F9" + // 24900 - 24904
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24905 - 24909
+ "\u0000\uDBB9\u0000\u0000\u8EA2\uBCE6\u8EA2\uBCFC\u8EA2\uBCF1" + // 24910 - 24914
+ "\u0000\uDFFB\u0000\u0000\u0000\uDFF6\u8EA2\uBCE0\u0000\uDFF7" + // 24915 - 24919
+ "\u8EA2\uBCF0\u0000\u0000\u8EA2\uBCE9\u8EA2\uBCF6\u0000\uDFF3" + // 24920 - 24924
+ "\u8EA2\uBCCE\u8EA2\uBCF8\u0000\uDFE9\u8EA2\uBCD6\u0000\uDFEC" + // 24925 - 24929
+ "\u0000\uDFEB\u0000\u0000\u0000\uDFFC\u0000\u0000\u8EA2\uBCD0" + // 24930 - 24934
+ "\u8EA2\uBCF2\u8EA2\uBCF3\u0000\uDFEE\u0000\uDFEA\u8EA2\uBCDE" + // 24935 - 24939
+ "\u0000\u0000\u0000\uDFF5\u8EA2\uBCD9\u0000\u0000\u8EA2\uBCF4" + // 24940 - 24944
+ "\u0000\uDFF1\u8EA2\uBCEC\u8EA2\uBCF9\u8EA2\uBCD3\u8EA2\uBCD8" + // 24945 - 24949
+ "\u8EA2\uBCD2\u0000\u0000\u0000\uDFF0\u8EA2\uBCE5\u8EA2\uC3E4" + // 24950 - 24954
+ "\u8EA2\uBCD4\u0000\uDFF4\u8EA2\uBCDD\u8EA2\uBCF5\u0000\uDFEF" + // 24955 - 24959
+ "\u8EA2\uBCDA\u8EA2\uBCD7\u8EA2\uBCE8\u0000\uDFF2\u0000\uDFE8" + // 24960 - 24964
+ "\u0000\uDFFE\u8EA2\uBCEB\u8EA2\uBCEA\u0000\u0000\u0000\u0000" + // 24965 - 24969
+ "\u8EAD\uA3C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24970 - 24974
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24975 - 24979
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24980 - 24984
+ "\u8EAD\uA3C0\u8EAD\uA3C1\u8EAD\uA3C2\u8EAD\uA3C3\u8EAD\uA3C4" + // 24985 - 24989
+ "\u8EAD\uA3C5\u8EAD\uA3C7\u8EAD\uA3C8\u8EAD\uA3C9\u8EAD\uA3CA" + // 24990 - 24994
+ "\u8EAD\uA3CB\u8EAD\uA3CC\u8EAD\uA3CD\u8EAD\uA3CE\u8EAD\uA3CF" + // 24995 - 24999
+ "\u8EAD\uA3D0\u8EAD\uA3D1\u8EAD\uA3D2\u8EAD\uA3D3\u8EAD\uA3D4" + // 25000 - 25004
+ "\u8EAD\uA3D5\u8EAD\uA3D6\u8EAD\uA3D7\u8EAD\uA3D8\u8EAD\uA3D9" + // 25005 - 25009
+ "\u8EAD\uA3DA\u8EAD\uA3DB\u8EAD\uA3DC\u8EAD\uA3DD\u8EAD\uA3DE" + // 25010 - 25014
+ "\u8EAD\uA3DF\u8EAD\uA3E0\u8EAD\uA3E1\u8EAD\uA3E2\u8EAD\uA3E3" + // 25015 - 25019
+ "\u8EAD\uA3E4\u8EAD\uA3E5\u8EAD\uA3E6\u8EAD\uA3E8\u8EAD\uA3E9" + // 25020 - 25024
+ "\u8EAD\uA3EA\u8EAD\uA3EB\u8EAD\uA3EC\u8EAD\uA3ED\u8EAD\uA3EE" + // 25025 - 25029
+ "\u8EAD\uA3EF\u8EAD\uA3F0\u8EAD\uA3F1\u0000\uA7C7\u8EA2\uA1D3" + // 25030 - 25034
+ "\u0000\u0000\u0000\uC6C6\u8EA2\uA1D4\u0000\uC7F7\u0000\u0000" + // 25035 - 25039
+ "\u0000\uC7F5\u0000\uC7F6\u0000\uC7F8\u0000\u0000\u0000\uC9FA" + // 25040 - 25044
+ "\u0000\uC9F9\u0000\u0000\u8EA2\uA3DC\u0000\uC9FB\u0000\u0000" + // 25045 - 25049
+ "\u0000\u0000\u8EA2\uA3DD\u8EA2\uA6B8\u0000\u0000\u8EA2\uA6B9" + // 25050 - 25054
+ "\u0000\u0000\u0000\uCCF8\u0000\uCCFA\u0000\uCCFC\u0000\uCCF9" + // 25055 - 25059
+ "\u0000\uCCFD\u0000\uCCFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25060 - 25064
+ "\u0000\u0000\u0000\u0000\u0000\uD0EA\u0000\uD0E7\u0000\uD0E9" + // 25065 - 25069
+ "\u0000\uD0EB\u0000\uD0E8\u8EA2\uAEE8\u8EA2\uA9F8\u0000\u0000" + // 25070 - 25074
+ "\u0000\u0000\u0000\u0000\u8EA2\uAEEA\u8EA2\uAEE9\u0000\uD5A7" + // 25075 - 25079
+ "\u0000\u0000\u0000\uD5A3\u0000\u0000\u0000\u0000\u0000\uD5A4" + // 25080 - 25084
+ "\u0000\uD5A6\u0000\uD5A8\u0000\uD5A5\u0000\u0000\u0000\uD5AA" + // 25085 - 25089
+ "\u0000\uD5A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25090 - 25094
+ "\u0000\u0000\u0000\uD9EE\u0000\uF9E7\u0000\u0000\u0000\u0000" + // 25095 - 25099
+ "\u0000\uF9E8\u0000\u0000\u8EA2\uE8EF\u0000\u0000\u8EA2\uEBD6" + // 25100 - 25104
+ "\u8EA2\uEBD5\u0000\u0000\u0000\u0000\u8EA2\uEDC9\u8EA2\uEDCA" + // 25105 - 25109
+ "\u8EA2\uEFA4\u8EA2\uF0B5\u0000\u0000\u0000\uC4CD\u0000\uC4CE" + // 25110 - 25114
+ "\u0000\u0000\u0000\uC4CF\u0000\uC5B6\u0000\uC6C5\u8EA2\uA2B3" + // 25115 - 25119
+ "\u0000\uC7F3\u0000\uC7F4\u0000\u0000\u0000\uC9F7\u0000\uC9F8" + // 25120 - 25124
+ "\u0000\uC9F6\u0000\uC9F5\u0000\u0000\u0000\uCCF5\u0000\u0000" + // 25125 - 25129
+ "\u0000\u0000\u8EA2\uA6B6\u0000\uCCF7\u0000\uCCF6\u8EA2\uA6B7" + // 25130 - 25134
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0E6\u0000\u0000" + // 25135 - 25139
+ "\u0000\uD5A1\u8EA2\uAEE7\u0000\u0000\u8EA2\uB4F3\u0000\u0000" + // 25140 - 25144
+ "\u0000\uD9E9\u0000\uDEEC\u8EA2\uB4F2\u0000\uDEEB\u0000\u0000" + // 25145 - 25149
+ "\u0000\uE8CD\u0000\u0000\u8EA2\uC9E4\u0000\uF0D0\u0000\u0000" + // 25150 - 25154
+ "\u0000\uF3D2\u8EA2\uDCE3\u0000\u0000\u0000\uF9E9\u0000\u0000" + // 25155 - 25159
+ "\u0000\uFBDC\u8EA2\uC2C7\u0000\uE3E0\u0000\uE3E7\u0000\u0000" + // 25160 - 25164
+ "\u8EA2\uC2BB\u0000\u0000\u8EA2\uC2C5\u8EA2\uC2BA\u8EA2\uC2C3" + // 25165 - 25169
+ "\u0000\uE3E1\u8EA2\uC2C8\u8EA2\uC2BC\u0000\uE3E2\u8EA2\uC2CB" + // 25170 - 25174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25175 - 25179
+ "\u0000\u0000\u0000\u0000\u8EA2\uC9D5\u0000\uE8CA\u0000\uE8C9" + // 25180 - 25184
+ "\u0000\uE8CB\u8EA2\uC9E1\u8EA2\uC9D7\u8EA2\uC9DD\u8EA2\uC9D2" + // 25185 - 25189
+ "\u8EA2\uC9E0\u8EA2\uC9DF\u8EA2\uC9E3\u8EA2\uC9DC\u0000\uE8C6" + // 25190 - 25194
+ "\u8EA2\uC9DB\u0000\uE8CC\u0000\u0000\u8EA2\uC9D4\u0000\uE8C7" + // 25195 - 25199
+ "\u0000\u0000\u8EA2\uC9E2\u0000\uE8C8\u8EA2\uC9D6\u8EA2\uC9D9" + // 25200 - 25204
+ "\u8EA2\uC9DE\u8EA2\uC9D8\u8EA2\uC9D3\u0000\u0000\u0000\u0000" + // 25205 - 25209
+ "\u0000\u0000\u0000\u0000\u8EA2\uC9DA\u8EA2\uCFFC\u0000\uECCB" + // 25210 - 25214
+ "\u8EA2\uD0A1\u8EA2\uCFFE\u8EA2\uD0A3\u8EA2\uD0A5\u0000\u0000" + // 25215 - 25219
+ "\u0000\uECC9\u0000\u0000\u8EA2\uCFFD\u0000\u0000\u8EA2\uCFFB" + // 25220 - 25224
+ "\u0000\uD9E3\u0000\uD9DF\u8EA2\uB4F0\u8EA2\uB4E0\u8EA2\uB4E3" + // 25225 - 25229
+ "\u0000\u0000\u0000\uD9E7\u8EA2\uB4ED\u8EA2\uB4E5\u0000\uD9E0" + // 25230 - 25234
+ "\u0000\uD9E8\u0000\u0000\u8EA2\uB4EA\u8EA2\uB4E8\u0000\u0000" + // 25235 - 25239
+ "\u0000\u0000\u8EA2\uB4D9\u8EA2\uB4EE\u8EA2\uB4E2\u8EA2\uB4DD" + // 25240 - 25244
+ "\u0000\u0000\u8EA2\uB4D3\u8EA2\uB4EF\u8EA2\uB4DF\u8EA2\uB4D2" + // 25245 - 25249
+ "\u0000\u0000\u0000\uD9E6\u8EA2\uB4E4\u8EA2\uB4F1\u8EA2\uB4E1" + // 25250 - 25254
+ "\u8EA2\uB4D5\u8EA2\uB4DA\u8EA2\uB4D1\u0000\u0000\u0000\uD9E5" + // 25255 - 25259
+ "\u0000\u0000\u8EA2\uB4DE\u8EA2\uB4DB\u0000\uD9E1\u8EA2\uB4D4" + // 25260 - 25264
+ "\u0000\u0000\u8EA2\uB4EC\u0000\uD9E2\u0000\u0000\u8EA2\uB4DC" + // 25265 - 25269
+ "\u8EA2\uB4D8\u0000\u0000\u0000\u0000\u8EA2\uB4EB\u0000\u0000" + // 25270 - 25274
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25275 - 25279
+ "\u0000\uDEE5\u8EA2\uBAFD\u0000\u0000\u8EA2\uBAFA\u8EA2\uBBAD" + // 25280 - 25284
+ "\u8EA2\uBBA1\u8EA2\uBBAE\u0000\u0000\u0000\uDEE7\u8EA2\uA9E6" + // 25285 - 25289
+ "\u0000\uD0E4\u0000\u0000\u0000\uD0DF\u0000\u0000\u0000\u0000" + // 25290 - 25294
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4FE\u8EA2\uAEE4" + // 25295 - 25299
+ "\u0000\u0000\u0000\uD4FD\u0000\u0000\u0000\u0000\u8EA2\uAEE2" + // 25300 - 25304
+ "\u0000\u0000\u0000\uD4F2\u0000\u0000\u0000\uD4F7\u0000\u0000" + // 25305 - 25309
+ "\u8EA2\uAEE1\u8EA2\uAEDE\u8EA2\uAEE3\u0000\uD4F3\u8EA2\uAEDD" + // 25310 - 25314
+ "\u0000\u0000\u0000\uD4F6\u0000\uD4F4\u0000\u0000\u8EA2\uAEE5" + // 25315 - 25319
+ "\u0000\uD4F5\u0000\uD4F9\u0000\u0000\u0000\u0000\u0000\uD4FA" + // 25320 - 25324
+ "\u0000\u0000\u0000\uD4FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 25325 - 25329
+ "\u0000\uD4FB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEDF" + // 25330 - 25334
+ "\u8EA2\uAEE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25335 - 25339
+ "\u8EA2\uAEE6\u0000\u0000\u8EA2\uB4D7\u0000\uD9DE\u8EA2\uBBA6" + // 25340 - 25344
+ "\u8EA2\uB4D6\u8EA2\uB4E9\u0000\u0000\u0000\u0000\u0000\uD9E4" + // 25345 - 25349
+ "\u0000\u0000\u8EA2\uB4E7\u0000\u0000\u8EA2\uA4F1\u0000\uCBB0" + // 25350 - 25354
+ "\u0000\u0000\u0000\uCEFB\u0000\u0000\u0000\uD2D5\u0000\uD2D6" + // 25355 - 25359
+ "\u0000\uD2D7\u8EA2\uB7C9\u8EA2\uB1AE\u0000\uD6F2\u0000\u0000" + // 25360 - 25364
+ "\u0000\u0000\u0000\uDCB3\u8EA2\uB7C8\u0000\u0000\u0000\u0000" + // 25365 - 25369
+ "\u8EA2\uBEBC\u0000\uE0F7\u0000\u0000\u8EA2\uBEBB\u0000\uE0F6" + // 25370 - 25374
+ "\u0000\u0000\u0000\u0000\u8EA2\uC5BB\u0000\uEDF3\u8EA2\uD2C3" + // 25375 - 25379
+ "\u8EA2\uD2C0\u8EA2\uD2C1\u8EA2\uD2C2\u0000\u0000\u0000\u0000" + // 25380 - 25384
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDE4\u0000\u0000" + // 25385 - 25389
+ "\u8EA2\uE2BE\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9C0" + // 25390 - 25394
+ "\u8EA2\uE9BF\u0000\u0000\u8EA2\uEDE3\u0000\uC6F6\u8EA2\uA8B7" + // 25395 - 25399
+ "\u0000\uD6F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0F8" + // 25400 - 25404
+ "\u8EA2\uC5BC\u0000\u0000\u0000\u0000\u8EA2\uCCA9\u0000\u0000" + // 25405 - 25409
+ "\u0000\uEDF4\u8EA2\uD8E0\u0000\u0000\u8EA2\uE2BF\u8EA2\uE9C1" + // 25410 - 25414
+ "\u0000\uC6F7\u8EA2\uA6B2\u8EA2\uA6AB\u0000\u0000\u8EA2\uA6AE" + // 25415 - 25419
+ "\u0000\u0000\u0000\uCCF4\u0000\uCCEB\u8EA2\uA6B5\u8EA2\uA6B3" + // 25420 - 25424
+ "\u0000\u0000\u0000\uCCF0\u0000\uCCEE\u8EA2\uA6AA\u0000\uCCED" + // 25425 - 25429
+ "\u8EA2\uA6A8\u8EA2\uA6A7\u0000\uCCEC\u0000\uCCEA\u0000\uCCF3" + // 25430 - 25434
+ "\u0000\uCCEF\u0000\uCCE7\u0000\u0000\u8EA2\uA6AF\u0000\u0000" + // 25435 - 25439
+ "\u0000\uD0DB\u0000\u0000\u0000\uD0E2\u8EA2\uA9F0\u0000\uD0DA" + // 25440 - 25444
+ "\u8EA2\uA9E8\u8EA2\uA9E4\u0000\u0000\u8EA2\uA9F4\u8EA2\uA9E3" + // 25445 - 25449
+ "\u0000\u0000\u0000\uD0DD\u8EA2\uA9ED\u0000\uD0E0\u0000\uD0E3" + // 25450 - 25454
+ "\u0000\u0000\u0000\uD0DE\u8EA2\uA9F1\u0000\uD0E1\u0000\u0000" + // 25455 - 25459
+ "\u0000\uD4F8\u8EA2\uA9F7\u8EA2\uA9E5\u0000\u0000\u0000\u0000" + // 25460 - 25464
+ "\u8EA2\uA9E7\u8EA2\uA9EE\u8EA2\uA9F2\u8EA2\uA9F6\u8EA2\uA9F3" + // 25465 - 25469
+ "\u8EA2\uA9EC\u8EA2\uA9EF\u0000\u0000\u0000\u0000\u8EA2\uA9E9" + // 25470 - 25474
+ "\u0000\uD0E5\u8EA2\uA9EB\u8EA2\uA9EA\u8EA2\uA9F5\u0000\uD0DC" + // 25475 - 25479
+ "\u8EA2\uA2AC\u0000\uC7F2\u0000\uC7F1\u0000\uC7EE\u0000\uC7EC" + // 25480 - 25484
+ "\u8EA2\uA2AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25485 - 25489
+ "\u0000\uC9F3\u0000\u0000\u0000\u0000\u0000\uC9F0\u8EA2\uA3D6" + // 25490 - 25494
+ "\u8EA2\uA3D9\u8EA2\uA3D8\u0000\u0000\u0000\uC9EA\u0000\uC9F2" + // 25495 - 25499
+ "\u0000\u0000\u0000\u0000\u0000\uC9EF\u8EA2\uA3D5\u8EA2\uA3D3" + // 25500 - 25504
+ "\u0000\uC9EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9E9" + // 25505 - 25509
+ "\u0000\uC9EC\u0000\u0000\u8EA2\uA3D4\u8EA2\uA3DB\u8EA2\uA3D7" + // 25510 - 25514
+ "\u0000\uC9ED\u0000\uC9F1\u0000\uC9F4\u8EA2\uA3D2\u8EA2\uA3DA" + // 25515 - 25519
+ "\u0000\uC9EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25520 - 25524
+ "\u0000\u0000\u0000\uCCE9\u0000\uCCF1\u0000\u0000\u8EA2\uA6B0" + // 25525 - 25529
+ "\u8EA2\uA6A9\u0000\uCCF2\u8EA2\uA6B4\u8EA2\uA6A5\u8EA2\uA6AC" + // 25530 - 25534
+ "\u0000\u0000\u0000\u0000\u0000\uCCE8\u8EA2\uA6A6\u0000\uCCE6" + // 25535 - 25539
+ "\u8EA2\uA6AD\u8EA2\uA6B1\u0000\uCCE5\u0000\u0000\u8EA2\uABF7" + // 25540 - 25544
+ "\u8EA2\uB0E0\u0000\u0000\u8EA2\uCBEB\u0000\u0000\u0000\uF4BB" + // 25545 - 25549
+ "\u0000\uC5DA\u0000\uCEEA\u8EA2\uABF8\u8EA2\uABF9\u8EA2\uBDEA" + // 25550 - 25554
+ "\u0000\uE0D6\u0000\u0000\u0000\u0000\u8EA2\uC4E8\u0000\u0000" + // 25555 - 25559
+ "\u0000\u0000\u0000\uE5A6\u8EA2\uCBEC\u0000\u0000\u0000\u0000" + // 25560 - 25564
+ "\u0000\uEDE2\u0000\u0000\u0000\uF8C9\u0000\uC5DB\u8EA2\uBDEB" + // 25565 - 25569
+ "\u0000\uC5DC\u0000\u0000\u0000\uC8CA\u8EA2\uA2E2\u0000\uC8C9" + // 25570 - 25574
+ "\u0000\uCBA8\u0000\uCBA7\u0000\uCBA6\u8EA2\uA4E0\u0000\u0000" + // 25575 - 25579
+ "\u0000\u0000\u0000\u0000\u0000\uCEEB\u0000\u0000\u0000\uCEEC" + // 25580 - 25584
+ "\u8EA2\uA7FB\u0000\u0000\u8EA2\uABFA\u0000\u0000\u8EA2\uABFD" + // 25585 - 25589
+ "\u0000\uD2BD\u8EA2\uABFB\u0000\u0000\u0000\uD2BC\u8EA2\uABFC" + // 25590 - 25594
+ "\u0000\uD2BE\u0000\u0000\u8EA2\uB0E3\u8EA2\uB0E2\u8EA2\uB0E1" + // 25595 - 25599
+ "\u0000\uD6D6\u0000\u0000\u8EA2\uB7A2\u8EA2\uB7A3\u0000\uDBF4" + // 25600 - 25604
+ "\u8EA2\uB7A1\u8EA2\uB7A4\u8EA2\uA3D1\u0000\u0000\u0000\u0000" + // 25605 - 25609
+ "\u0000\u0000\u0000\uCCE3\u8EA2\uA6A4\u0000\u0000\u0000\uCCE1" + // 25610 - 25614
+ "\u0000\uCCE2\u0000\uCCE0\u8EA2\uAEDC\u0000\u0000\u0000\u0000" + // 25615 - 25619
+ "\u0000\u0000\u0000\uD0D8\u0000\uD0D7\u0000\uD0D9\u0000\uD0D6" + // 25620 - 25624
+ "\u0000\u0000\u8EA2\uA9E2\u0000\uCCE4\u0000\uD0D5\u0000\u0000" + // 25625 - 25629
+ "\u0000\uD4EF\u0000\uD4F0\u0000\u0000\u0000\uD4F1\u0000\u0000" + // 25630 - 25634
+ "\u8EA2\uB4D0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE4" + // 25635 - 25639
+ "\u8EA2\uBAF6\u0000\uD9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25640 - 25644
+ "\u0000\u0000\u0000\uE3DF\u0000\u0000\u0000\uE8C5\u0000\uE8C4" + // 25645 - 25649
+ "\u8EA2\uC9D1\u0000\u0000\u0000\uECC7\u0000\uF0CD\u0000\u0000" + // 25650 - 25654
+ "\u8EA2\uE1CC\u8EA2\uEDC8\u8EA2\uEFA3\u0000\uC4CC\u0000\uC6C3" + // 25655 - 25659
+ "\u0000\u0000\u0000\uC6C4\u8EA2\uA2B1\u0000\uC7ED\u0000\uC7F0" + // 25660 - 25664
+ "\u0000\u0000\u8EA2\uA2AF\u8EA2\uA2AD\u0000\uC7EF\u8EA2\uA2B0" + // 25665 - 25669
+ "\u8EA2\uA2B2\u0000\uECBF\u8EA2\uC9C2\u8EA2\uC9CB\u0000\uE8BA" + // 25670 - 25674
+ "\u0000\u0000\u0000\uE8BE\u8EA2\uC9C1\u8EA2\uC9C7\u8EA2\uC9CC" + // 25675 - 25679
+ "\u8EA2\uC9BD\u0000\uE8BC\u8EA2\uC9C5\u0000\u0000\u0000\u0000" + // 25680 - 25684
+ "\u8EA2\uC9C9\u8EA2\uC9CF\u8EA2\uC9BF\u8EA2\uC9C8\u0000\u0000" + // 25685 - 25689
+ "\u0000\uE8BB\u8EA2\uC9CE\u0000\u0000\u0000\u0000\u0000\u0000" + // 25690 - 25694
+ "\u8EA2\uC9C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECC3" + // 25695 - 25699
+ "\u8EA2\uCFF2\u0000\uECC1\u0000\uECC0\u8EA2\uCFF4\u8EA2\uCFF9" + // 25700 - 25704
+ "\u0000\u0000\u8EA2\uCFF5\u0000\u0000\u8EA2\uCFF8\u0000\uECC6" + // 25705 - 25709
+ "\u0000\u0000\u0000\uF0AE\u0000\uECC5\u0000\u0000\u8EA2\uCFF1" + // 25710 - 25714
+ "\u8EA2\uCFF7\u0000\u0000\u0000\uECC4\u8EA2\uCFF6\u0000\u0000" + // 25715 - 25719
+ "\u8EA2\uCFF3\u0000\u0000\u0000\uECC2\u0000\u0000\u0000\u0000" + // 25720 - 25724
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6D7" + // 25725 - 25729
+ "\u0000\u0000\u8EA2\uD6D9\u8EA2\uD6D4\u0000\uF0CA\u8EA2\uD6D6" + // 25730 - 25734
+ "\u8EA2\uB4B6\u8EA2\uB4C9\u0000\uD9D8\u0000\u0000\u8EA2\uB4CF" + // 25735 - 25739
+ "\u0000\uD9D2\u0000\uD9D4\u8EA2\uB4BE\u8EA2\uB4B9\u0000\uD4ED" + // 25740 - 25744
+ "\u0000\uD9D3\u8EA2\uB4BB\u8EA2\uB4CA\u8EA2\uB4CE\u8EA2\uB4C5" + // 25745 - 25749
+ "\u0000\u0000\u8EA2\uB4C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 25750 - 25754
+ "\u8EA2\uB4B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25755 - 25759
+ "\u8EA2\uBAE3\u0000\u0000\u8EA2\uBAEC\u8EA2\uBAEB\u0000\uDEE0" + // 25760 - 25764
+ "\u8EA2\uBAE4\u0000\u0000\u0000\uDEE1\u0000\uDEDF\u0000\u0000" + // 25765 - 25769
+ "\u8EA2\uBAE6\u0000\uDEDC\u8EA2\uBAEA\u0000\u0000\u8EA2\uBAE5" + // 25770 - 25774
+ "\u8EA2\uBAE7\u8EA2\uBAE1\u0000\uDEDA\u0000\u0000\u8EA2\uBAF4" + // 25775 - 25779
+ "\u8EA2\uBAF3\u8EA2\uBAF0\u0000\uDED9\u0000\uDEDD\u0000\uDEDE" + // 25780 - 25784
+ "\u8EA2\uAECD\u8EA2\uBAED\u0000\uDEDB\u0000\uD9D9\u8EA2\uBAEF" + // 25785 - 25789
+ "\u8EA2\uBAE2\u8EA2\uBAF2\u8EA2\uBAF1\u0000\u0000\u8EA2\uBAF5" + // 25790 - 25794
+ "\u0000\u0000\u8EA2\uC2B6\u0000\u0000\u8EA2\uBAEE\u8EA2\uA5F9" + // 25795 - 25799
+ "\u0000\u0000\u0000\uD0CD\u0000\uCCD7\u0000\u0000\u0000\u0000" + // 25800 - 25804
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25805 - 25809
+ "\u0000\uD0CE\u8EA2\uA9D5\u0000\u0000\u0000\u0000\u8EA2\uA9DB" + // 25810 - 25814
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0D4\u8EA2\uA9D9" + // 25815 - 25819
+ "\u8EA2\uA9DF\u0000\u0000\u8EA2\uA9D6\u8EA2\uA9DA\u8EA2\uA9DC" + // 25820 - 25824
+ "\u8EA2\uA9DE\u8EA2\uA9D8\u0000\u0000\u8EA2\uA9D7\u8EA2\uA9D2" + // 25825 - 25829
+ "\u8EA2\uA9D3\u0000\uD0CF\u0000\u0000\u0000\uD0D1\u0000\uD0D0" + // 25830 - 25834
+ "\u8EA2\uA9D4\u8EA2\uA9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25835 - 25839
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25840 - 25844
+ "\u0000\uD0D3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25845 - 25849
+ "\u0000\u0000\u0000\u0000\u8EA2\uA9D1\u8EA2\uAED5\u0000\u0000" + // 25850 - 25854
+ "\u8EA2\uAED4\u8EA2\uAED9\u8EA2\uAED0\u0000\u0000\u8EA2\uAED3" + // 25855 - 25859
+ "\u8EA2\uAED2\u0000\u0000\u8EA2\uAED6\u0000\uC9DF\u8EA2\uA3CA" + // 25860 - 25864
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3CB\u0000\u0000" + // 25865 - 25869
+ "\u0000\uC9E1\u0000\u0000\u8EA2\uA3CD\u0000\uC9DD\u8EA2\uA3CE" + // 25870 - 25874
+ "\u8EA2\uA3CC\u0000\uC9E0\u0000\uC9E2\u0000\uC9E5\u0000\uC9E4" + // 25875 - 25879
+ "\u0000\uC9DE\u8EA2\uA3CF\u0000\u0000\u0000\u0000\u0000\u0000" + // 25880 - 25884
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25885 - 25889
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25890 - 25894
+ "\u0000\u0000\u0000\uCCDB\u8EA2\uA5FE\u0000\u0000\u0000\uCCDD" + // 25895 - 25899
+ "\u0000\u0000\u0000\uCCDC\u0000\u0000\u8EA2\uA6A1\u0000\uCCDA" + // 25900 - 25904
+ "\u0000\uCCD9\u8EA2\uA5F5\u0000\u0000\u8EA2\uA5F4\u0000\u0000" + // 25905 - 25909
+ "\u8EA2\uA5F2\u8EA2\uA5F7\u8EA2\uA5F6\u8EA2\uA5F3\u8EA2\uA5FC" + // 25910 - 25914
+ "\u8EA2\uA5FD\u8EA2\uA5FA\u8EA2\uA5F8\u0000\uCCD8\u0000\u0000" + // 25915 - 25919
+ "\u0000\u0000\u0000\u0000\u8EA2\uA5FB\u0000\uCCDE\u8EA2\uA6A2" + // 25920 - 25924
+ "\u0000\u0000\u0000\u0000\u0000\uFCF0\u8EA2\uF0DD\u0000\uFCF2" + // 25925 - 25929
+ "\u0000\u0000\u8EA2\uF0DC\u8EA2\uF0DE\u0000\uFCF1\u8EA2\uF1C6" + // 25930 - 25934
+ "\u0000\u0000\u8EA2\uF1FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25935 - 25939
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFE5\u0000\u0000" + // 25940 - 25944
+ "\u0000\u0000\u0000\u0000\u0000\uE7DC\u0000\u0000\u8EA2\uCFA6" + // 25945 - 25949
+ "\u0000\u0000\u8EA2\uD5D9\u0000\uF2FA\u0000\uF2FB\u0000\u0000" + // 25950 - 25954
+ "\u0000\uCFE6\u0000\u0000\u0000\uEFEA\u0000\uF9C8\u0000\uD3F2" + // 25955 - 25959
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2FC\u0000\u0000" + // 25960 - 25964
+ "\u0000\uFCCE\u0000\uD3F3\u8EA2\uBAB1\u0000\u0000\u8EA2\uC1CE" + // 25965 - 25969
+ "\u0000\u0000\u8EA2\uC1D0\u0000\u0000\u8EA2\uC1CF\u0000\u0000" + // 25970 - 25974
+ "\u8EA2\uC8E3\u8EA2\uC8E0\u0000\uE7DD\u0000\u0000\u0000\uE7DE" + // 25975 - 25979
+ "\u8EA2\uC8E1\u8EA2\uC8E2\u0000\u0000\u8EA2\uCFA8\u8EA2\uCFAD" + // 25980 - 25984
+ "\u0000\uEBE7\u8EA2\uCFA7\u8EA2\uCFA9\u8EA2\uCFB0\u0000\uFAE5" + // 25985 - 25989
+ "\u0000\uFAE4\u0000\uFAE6\u8EA2\uEBD2\u0000\u0000\u8EA2\uEDC6" + // 25990 - 25994
+ "\u8EA2\uEDC5\u0000\u0000\u0000\uFBD9\u0000\uFBDB\u0000\uFBDA" + // 25995 - 25999
+ "\u8EA2\uEDC7\u0000\uFCB4\u8EA2\uF0B4\u0000\u0000\u0000\u0000" + // 26000 - 26004
+ "\u0000\u0000\u0000\uFCDD\u0000\u0000\u8EA2\uF0B3\u8EA2\uF0FC" + // 26005 - 26009
+ "\u0000\u0000\u0000\u0000\u8EA2\uA1AA\u0000\u0000\u0000\u0000" + // 26010 - 26014
+ "\u0000\uC6BF\u0000\uC6BE\u0000\u0000\u0000\uC7E0\u0000\uC7DF" + // 26015 - 26019
+ "\u8EA2\uA2A7\u0000\uC7DE\u8EA2\uA2A6\u0000\u0000\u0000\u0000" + // 26020 - 26024
+ "\u0000\uC9DB\u8EA2\uA3C9\u0000\u0000\u8EA2\uA3C8\u0000\u0000" + // 26025 - 26029
+ "\u0000\u0000\u0000\uC9D9\u0000\uC9DC\u0000\u0000\u0000\u0000" + // 26030 - 26034
+ "\u8EA2\uA3C7\u0000\u0000\u0000\uC9DA\u0000\u0000\u0000\u0000" + // 26035 - 26039
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5F0" + // 26040 - 26044
+ "\u0000\u0000\u8EA2\uA5F1\u0000\uCCD6\u0000\u0000\u0000\u0000" + // 26045 - 26049
+ "\u0000\u0000\u0000\u0000\u0000\uD0CC\u0000\uF3C6\u8EA2\uDCD5" + // 26050 - 26054
+ "\u8EA2\uDCD3\u8EA2\uDCD1\u8EA2\uDCD0\u0000\uF3C8\u8EA2\uDCCF" + // 26055 - 26059
+ "\u0000\uF3C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26060 - 26064
+ "\u8EA2\uDCCD\u8EA2\uDCCE\u0000\uF3C5\u0000\uF3CA\u0000\uF3C7" + // 26065 - 26069
+ "\u0000\u0000\u0000\u0000\u8EA2\uDCCC\u0000\u0000\u0000\uF6BC" + // 26070 - 26074
+ "\u0000\u0000\u8EA2\uE1C8\u8EA2\uE1C6\u8EA2\uE1CB\u8EA2\uE1C9" + // 26075 - 26079
+ "\u0000\u0000\u8EA2\uE1C7\u8EA2\uE1CA\u0000\u0000\u0000\u0000" + // 26080 - 26084
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26085 - 26089
+ "\u0000\uF8AC\u8EA2\uE5BE\u8EA2\uE5BF\u0000\uF8AD\u0000\u0000" + // 26090 - 26094
+ "\u8EA2\uE5C0\u8EA2\uE5BC\u8EA2\uE5C1\u8EA2\uE5BD\u0000\uF6BD" + // 26095 - 26099
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE8EB\u8EA2\uE8ED" + // 26100 - 26104
+ "\u0000\uF9E4\u8EA2\uE8EC\u0000\uF9E3\u0000\uF9E2\u0000\u0000" + // 26105 - 26109
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E5\u8EA2\uEBD3" + // 26110 - 26114
+ "\u8EA2\uEBD4\u0000\u0000\u8EA2\uC4D6\u8EA2\uC4DD\u8EA2\uC4DF" + // 26115 - 26119
+ "\u8EA2\uC4E5\u0000\u0000\u0000\uE5A2\u8EA2\uC4D1\u0000\u0000" + // 26120 - 26124
+ "\u0000\uE4F8\u0000\u0000\u8EA2\uC4E0\u0000\uE4FD\u8EA2\uC4E6" + // 26125 - 26129
+ "\u0000\uE4F4\u0000\u0000\u8EA2\uC4E3\u0000\u0000\u8EA2\uC4D3" + // 26130 - 26134
+ "\u8EA2\uC4E4\u8EA2\uC4D2\u0000\u0000\u0000\uE5A4\u0000\u0000" + // 26135 - 26139
+ "\u8EA2\uC4DE\u0000\uE4F5\u8EA2\uC4E7\u0000\u0000\u0000\uE4FA" + // 26140 - 26144
+ "\u8EA2\uC4D7\u0000\uE5A1\u8EA2\uC4E2\u8EA2\uC4D5\u8EA2\uC4DC" + // 26145 - 26149
+ "\u8EA2\uC4D8\u8EA2\uC4D4\u0000\uE4F7\u0000\uE4FE\u0000\uE4FC" + // 26150 - 26154
+ "\u0000\uE4F9\u0000\uE5A3\u0000\uE4F6\u8EA2\uC4DB\u0000\u0000" + // 26155 - 26159
+ "\u0000\uE4FB\u0000\u0000\u0000\uE0D4\u0000\u0000\u8EA2\uC4E1" + // 26160 - 26164
+ "\u0000\u0000\u8EA2\uC4D9\u0000\u0000\u0000\u0000\u0000\u0000" + // 26165 - 26169
+ "\u0000\u0000\u0000\u0000\u8EA2\uC4DA\u0000\u0000\u0000\u0000" + // 26170 - 26174
+ "\u8EA2\uCBE7\u0000\u0000\u0000\uE9DB\u0000\u0000\u0000\u0000" + // 26175 - 26179
+ "\u0000\uD4D4\u0000\u0000\u8EA2\uAEC8\u8EA2\uAEBC\u8EA2\uAEC0" + // 26180 - 26184
+ "\u0000\uD4D9\u0000\uD4E4\u8EA2\uAEBD\u0000\uD4DF\u8EA2\uAEC2" + // 26185 - 26189
+ "\u8EA2\uAEC9\u8EA2\uB4A4\u0000\u0000\u8EA2\uAEC7\u0000\uD4E6" + // 26190 - 26194
+ "\u0000\uD4D3\u8EA2\uAEBF\u8EA2\uAEB6\u0000\u0000\u0000\uD4DB" + // 26195 - 26199
+ "\u0000\u0000\u0000\u0000\u8EA2\uAEB5\u0000\u0000\u0000\u0000" + // 26200 - 26204
+ "\u8EA2\uAEBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26205 - 26209
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26210 - 26214
+ "\u0000\u0000\u0000\u0000\u8EA2\uAEB3\u0000\uD4E3\u0000\u0000" + // 26215 - 26219
+ "\u0000\u0000\u8EA2\uB3FA\u0000\u0000\u0000\uD9C9\u8EA2\uB4AA" + // 26220 - 26224
+ "\u0000\uD9C7\u0000\uD9C4\u8EA2\uB4A1\u0000\uD9C0\u8EA2\uB4A5" + // 26225 - 26229
+ "\u0000\uD9CB\u8EA2\uB3F9\u8EA2\uB3FE\u8EA2\uB3FD\u0000\uD4D5" + // 26230 - 26234
+ "\u0000\uD9C6\u8EA2\uB4A8\u0000\u0000\u8EA2\uB4AB\u8EA2\uB3F6" + // 26235 - 26239
+ "\u0000\u0000\u0000\uDECE\u0000\u0000\u8EA2\uE2A7\u8EA2\uE5F6" + // 26240 - 26244
+ "\u8EA2\uE2AA\u0000\u0000\u8EA2\uE5F7\u0000\uF8C7\u8EA2\uE5F5" + // 26245 - 26249
+ "\u0000\u0000\u0000\u0000\u8EA2\uE5F4\u0000\u0000\u8EA2\uE5F3" + // 26250 - 26254
+ "\u0000\uF8C8\u0000\u0000\u0000\u0000\u0000\uF9F7\u0000\u0000" + // 26255 - 26259
+ "\u0000\u0000\u8EA2\uE9B9\u8EA2\uE9BA\u0000\u0000\u0000\u0000" + // 26260 - 26264
+ "\u0000\u0000\u0000\u0000\u8EA2\uEBEA\u8EA2\uEBE9\u0000\uFAF5" + // 26265 - 26269
+ "\u0000\u0000\u8EA2\uEBE8\u8EA2\uEDDA\u8EA2\uEDDB\u0000\u0000" + // 26270 - 26274
+ "\u0000\u0000\u8EA2\uEFB5\u8EA2\uF0BF\u0000\u0000\u0000\u0000" + // 26275 - 26279
+ "\u8EA2\uF1A6\u8EA2\uF2AC\u0000\uFDC6\u8EA2\uF2C0\u0000\uC5D7" + // 26280 - 26284
+ "\u0000\u0000\u0000\uCEE7\u0000\uCEE8\u0000\u0000\u0000\u0000" + // 26285 - 26289
+ "\u0000\uD2BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26290 - 26294
+ "\u0000\uF4BA\u0000\uC5D8\u0000\u0000\u0000\uCEE9\u0000\uD6D5" + // 26295 - 26299
+ "\u0000\uE5A5\u0000\uC5D9\u0000\u0000\u0000\uDBF3\u0000\uE9DF" + // 26300 - 26304
+ "\u8EA2\uA1C2\u8EA2\uCFE8\u8EA2\uCFE2\u8EA2\uCFDF\u0000\u0000" + // 26305 - 26309
+ "\u0000\u0000\u8EA2\uBACF\u8EA2\uCFE5\u0000\u0000\u8EA2\uCFDE" + // 26310 - 26314
+ "\u8EA2\uCFE4\u8EA2\uCFE3\u0000\u0000\u8EA2\uCFE0\u0000\u0000" + // 26315 - 26319
+ "\u0000\uECB9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26320 - 26324
+ "\u0000\uECB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECBA" + // 26325 - 26329
+ "\u8EA2\uCFE6\u0000\uF0BB\u8EA2\uCFE7\u0000\u0000\u0000\u0000" + // 26330 - 26334
+ "\u0000\u0000\u8EA2\uD6CF\u0000\u0000\u8EA2\uD6C8\u0000\u0000" + // 26335 - 26339
+ "\u0000\uF0C7\u8EA2\uD6CC\u0000\uF0BF\u0000\uF0C3\u8EA2\uD6CB" + // 26340 - 26344
+ "\u0000\u0000\u0000\uF0C2\u0000\uF0BE\u0000\uF0C1\u0000\uF0BC" + // 26345 - 26349
+ "\u0000\uF0C6\u8EA2\uD6CD\u8EA2\uD6C9\u0000\uF0C5\u8EA2\uD6C7" + // 26350 - 26354
+ "\u0000\uF0C4\u8EA2\uD6CE\u8EA2\uD6CA\u0000\uECBB\u0000\u0000" + // 26355 - 26359
+ "\u0000\uF0C8\u8EA2\uD6D0\u0000\uF0C0\u0000\uF0BD\u0000\u0000" + // 26360 - 26364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDCD2\u8EA2\uDCD4" + // 26365 - 26369
+ "\u0000\uE8A7\u8EA2\uC9B5\u8EA2\uC9B7\u0000\u0000\u8EA2\uC9BA" + // 26370 - 26374
+ "\u0000\u0000\u0000\uE8AC\u0000\u0000\u0000\uE8B3\u0000\uE8AD" + // 26375 - 26379
+ "\u0000\u0000\u0000\u0000\u8EA2\uC9B0\u0000\uE8AE\u0000\uE8AF" + // 26380 - 26384
+ "\u8EA2\uC9B3\u0000\uE8B4\u0000\u0000\u8EA2\uC9B1\u8EA2\uC9B6" + // 26385 - 26389
+ "\u0000\uE8AB\u8EA2\uC9AF\u0000\uE8B1\u0000\uE8A9\u0000\u0000" + // 26390 - 26394
+ "\u0000\u0000\u0000\u0000\u0000\uE8A8\u8EA2\uC9B4\u8EA2\uC9B9" + // 26395 - 26399
+ "\u0000\u0000\u0000\uE8B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 26400 - 26404
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9AE" + // 26405 - 26409
+ "\u0000\u0000\u0000\uECB7\u8EA2\uCFEE\u0000\u0000\u8EA2\uCFEB" + // 26410 - 26414
+ "\u0000\u0000\u0000\uECB1\u0000\uECBD\u0000\uECBE\u0000\u0000" + // 26415 - 26419
+ "\u0000\uECB4\u8EA2\uCFE9\u0000\uECB6\u8EA2\uCFE1\u0000\uECBC" + // 26420 - 26424
+ "\u0000\u0000\u8EA2\uCFED\u0000\uECB3\u8EA2\uCFEF\u0000\uECB2" + // 26425 - 26429
+ "\u0000\u0000\u8EA2\uCFEA\u8EA2\uCFEC\u0000\uECB5\u8EA2\uC1F6" + // 26430 - 26434
+ "\u0000\u0000\u8EA2\uC2A7\u8EA2\uC1EF\u8EA2\uC1F8\u0000\uE3CC" + // 26435 - 26439
+ "\u0000\uE3CD\u0000\uE3C5\u8EA2\uC2A3\u0000\uE3CF\u8EA2\uC1F4" + // 26440 - 26444
+ "\u8EA2\uC1F3\u8EA2\uC1F1\u8EA2\uC2A5\u0000\uE3C3\u8EA2\uC1FD" + // 26445 - 26449
+ "\u8EA2\uC1F2\u0000\uE3C6\u8EA2\uC1FB\u0000\uE3C1\u8EA2\uC1F7" + // 26450 - 26454
+ "\u8EA2\uC1FE\u8EA2\uC2A2\u0000\u0000\u0000\u0000\u8EA2\uC2A6" + // 26455 - 26459
+ "\u0000\uE3CA\u8EA2\uC1F0\u0000\uE3C4\u8EA2\uC1F5\u0000\u0000" + // 26460 - 26464
+ "\u0000\uE3BF\u0000\u0000\u0000\uE3CB\u8EA2\uC2A1\u0000\uE3C7" + // 26465 - 26469
+ "\u0000\uE3C8\u0000\uE3CE\u0000\uE3C2\u0000\uA3A1\u0000\uE3C0" + // 26470 - 26474
+ "\u8EA2\uC1F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26475 - 26479
+ "\u0000\u0000\u0000\uE3C9\u0000\u0000\u0000\u0000\u8EA2\uC2A4" + // 26480 - 26484
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8B5\u0000\uE8B0" + // 26485 - 26489
+ "\u0000\u0000\u8EA2\uC9BC\u8EA2\uC9B8\u0000\u0000\u8EA2\uC9B2" + // 26490 - 26494
+ "\u0000\uE8AA\u0000\uE8A6\u8EA2\uC9BB\u0000\uDEBE\u8EA2\uBAD5" + // 26495 - 26499
+ "\u0000\uDEC4\u0000\uDECA\u0000\uE1C3\u0000\u0000\u0000\u0000" + // 26500 - 26504
+ "\u0000\uDEC8\u8EA2\uBAD2\u0000\uDED5\u0000\uDEC1\u0000\uDEC9" + // 26505 - 26509
+ "\u8EA2\uBADA\u8EA2\uC1FC\u8EA2\uBADF\u8EA2\uBAD3\u0000\u0000" + // 26510 - 26514
+ "\u8EA2\uBACA\u8EA2\uBAD7\u8EA2\uBAD1\u0000\uDEC7\u8EA2\uBADD" + // 26515 - 26519
+ "\u0000\u0000\u0000\u0000\u0000\uDEC3\u0000\uDED7\u0000\uDED0" + // 26520 - 26524
+ "\u0000\u0000\u0000\uDEC5\u0000\uDEC2\u0000\u0000\u0000\uDECD" + // 26525 - 26529
+ "\u0000\u0000\u8EA2\uBADE\u8EA2\uBAD0\u8EA2\uBAD6\u8EA2\uBAD8" + // 26530 - 26534
+ "\u8EA2\uBACC\u8EA2\uBADB\u0000\uDEBF\u8EA2\uBACB\u0000\u0000" + // 26535 - 26539
+ "\u0000\uDEC6\u0000\uDED6\u0000\uDED2\u8EA2\uBACD\u0000\uDECC" + // 26540 - 26544
+ "\u0000\u0000\u0000\u0000\u0000\uDED3\u0000\uDECF\u0000\uDECB" + // 26545 - 26549
+ "\u0000\u0000\u8EA2\uBAD4\u0000\u0000\u0000\u0000\u0000\u0000" + // 26550 - 26554
+ "\u0000\u0000\u0000\u0000\u0000\uDED1\u0000\u0000\u0000\u0000" + // 26555 - 26559
+ "\u0000\u0000\u8EA2\uC1FA\u8EA2\uB4AC\u0000\uD9CC\u0000\u0000" + // 26560 - 26564
+ "\u0000\uD9BE\u0000\uD9BB\u8EA2\uB4A3\u0000\uD9B8\u0000\u0000" + // 26565 - 26569
+ "\u8EA2\uB4A9\u0000\u0000\u0000\uD9BF\u8EA2\uB4AD\u0000\u0000" + // 26570 - 26574
+ "\u8EA2\uB3F7\u8EA2\uB4A7\u0000\uD9C2\u8EA2\uB3F8\u8EA2\uB3FB" + // 26575 - 26579
+ "\u8EA2\uB4A2\u0000\u0000\u0000\u0000\u0000\uD9C3\u0000\uD9C1" + // 26580 - 26584
+ "\u0000\uD9CD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26585 - 26589
+ "\u0000\uD9C8\u0000\u0000\u0000\uD9BC\u0000\uDAF6\u0000\u0000" + // 26590 - 26594
+ "\u0000\uD9BD\u8EA2\uB3FC\u0000\uD9CA\u0000\uD9C5\u8EA2\uB4A6" + // 26595 - 26599
+ "\u0000\uD9BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9B9" + // 26600 - 26604
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26605 - 26609
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26610 - 26614
+ "\u8EA2\uB3F4\u8EA2\uB3F5\u8EA2\uBACE\u0000\u0000\u0000\u0000" + // 26615 - 26619
+ "\u0000\u0000\u0000\uDEBD\u0000\uDEC0\u8EA2\uBAD9\u0000\uDED4" + // 26620 - 26624
+ "\u8EA2\uBADC\u0000\uD0B7\u0000\uD0C2\u0000\uD0BF\u8EA2\uA9C1" + // 26625 - 26629
+ "\u0000\uD0C3\u8EA2\uA9C7\u8EA2\uA9C8\u0000\uD0BE\u0000\uD0C4" + // 26630 - 26634
+ "\u0000\uD0BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26635 - 26639
+ "\u0000\uD0B9\u8EA2\uA9C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26640 - 26644
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9C5\u0000\u0000" + // 26645 - 26649
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26650 - 26654
+ "\u0000\u0000\u8EA2\uA9CF\u0000\u0000\u8EA2\uAEC6\u0000\uD4DE" + // 26655 - 26659
+ "\u8EA2\uAEB4\u0000\u0000\u8EA2\uAEB9\u0000\uD4D7\u0000\uD4E2" + // 26660 - 26664
+ "\u8EA2\uAEB7\u0000\uD4D2\u0000\uD4DC\u0000\uD4E1\u8EA2\uAEBE" + // 26665 - 26669
+ "\u0000\u0000\u0000\uD4DD\u0000\uD4E0\u0000\u0000\u0000\u0000" + // 26670 - 26674
+ "\u8EA2\uAEC1\u0000\uD4D8\u8EA2\uAEB8\u0000\u0000\u0000\u0000" + // 26675 - 26679
+ "\u0000\u0000\u8EA2\uAEC4\u8EA2\uAEC5\u0000\u0000\u0000\uD4DA" + // 26680 - 26684
+ "\u8EA2\uAEC3\u0000\uD4D6\u0000\uD4E5\u0000\u0000\u8EA2\uAEBB" + // 26685 - 26689
+ "\u0000\uCCC5\u8EA2\uA5DD\u8EA2\uA5DF\u0000\u0000\u0000\uCCC8" + // 26690 - 26694
+ "\u0000\u0000\u0000\uCCCA\u8EA2\uA5DB\u8EA2\uA5E0\u0000\u0000" + // 26695 - 26699
+ "\u0000\u0000\u0000\uCCD3\u0000\uCCCF\u8EA2\uA5E8\u0000\uCCD5" + // 26700 - 26704
+ "\u0000\u0000\u0000\uCCCC\u8EA2\uA5DE\u0000\uCCC9\u0000\u0000" + // 26705 - 26709
+ "\u0000\u0000\u0000\uCCC4\u0000\uCCC2\u0000\u0000\u8EA2\uA5EC" + // 26710 - 26714
+ "\u0000\u0000\u0000\uCCD0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26715 - 26719
+ "\u0000\u0000\u0000\u0000\u8EA2\uA9C9\u8EA2\uA9BD\u8EA2\uA9CC" + // 26720 - 26724
+ "\u0000\u0000\u0000\u0000\u8EA2\uA9BF\u0000\uD0BC\u0000\uD0CA" + // 26725 - 26729
+ "\u0000\uD0B8\u0000\uD0C9\u0000\uD0C1\u0000\uD0C6\u0000\uD0B6" + // 26730 - 26734
+ "\u8EA2\uA9BE\u8EA2\uA9C4\u0000\uD0C5\u8EA2\uA9D0\u0000\uD0C7" + // 26735 - 26739
+ "\u0000\u0000\u0000\uD0BD\u0000\u0000\u0000\u0000\u8EA2\uA9C6" + // 26740 - 26744
+ "\u8EA2\uA9C3\u0000\uD0BB\u0000\u0000\u8EA2\uA9BC\u0000\uD0C8" + // 26745 - 26749
+ "\u8EA2\uA9CB\u0000\uD0C0\u8EA2\uA9CD\u0000\uD0CB\u0000\uC9D4" + // 26750 - 26754
+ "\u8EA2\uA3C3\u0000\uC9C8\u0000\uC9C5\u0000\u0000\u8EA2\uA3BC" + // 26755 - 26759
+ "\u0000\uC9C4\u8EA2\uA3C6\u0000\uC9C7\u0000\u0000\u0000\uC9CB" + // 26760 - 26764
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9C2\u8EA2\uA3C2" + // 26765 - 26769
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3BB" + // 26770 - 26774
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26775 - 26779
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26780 - 26784
+ "\u0000\u0000\u8EA2\uA5EB\u8EA2\uA5EA\u0000\uCCD1\u8EA2\uA5ED" + // 26785 - 26789
+ "\u8EA2\uA5EF\u8EA2\uA5E4\u8EA2\uA5E7\u8EA2\uA5EE\u0000\uCCD2" + // 26790 - 26794
+ "\u0000\u0000\u0000\u0000\u8EA2\uA5E1\u8EA2\uA5E5\u0000\u0000" + // 26795 - 26799
+ "\u0000\u0000\u8EA2\uA5E9\u8EA2\uA9CA\u0000\uCCCD\u8EA2\uA9CE" + // 26800 - 26804
+ "\u0000\uCCC0\u8EA2\uA5E6\u0000\uCCC1\u0000\uCCCE\u0000\uCCC7" + // 26805 - 26809
+ "\u0000\uCCC3\u0000\u0000\u8EA2\uA5E2\u0000\uCCC6\u0000\uCCCB" + // 26810 - 26814
+ "\u0000\uCCD4\u8EA2\uA5E3\u8EA2\uA5DC\u0000\uD9B4\u0000\uC4B2" + // 26815 - 26819
+ "\u0000\u0000\u0000\uC4C5\u0000\uA4BF\u0000\uC5AB\u0000\u0000" + // 26820 - 26824
+ "\u0000\uC5AA\u0000\uC5A9\u0000\uC6A5\u0000\uC6A4\u0000\u0000" + // 26825 - 26829
+ "\u8EA2\uA1CE\u8EA2\uA2A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 26830 - 26834
+ "\u0000\uCCB8\u0000\uCCB5\u0000\uCCB7\u0000\uCCB6\u0000\u0000" + // 26835 - 26839
+ "\u0000\u0000\u0000\uD0B2\u0000\u0000\u0000\u0000\u0000\uDEBB" + // 26840 - 26844
+ "\u0000\u0000\u0000\uC4B3\u0000\u0000\u0000\uC5AC\u0000\u0000" + // 26845 - 26849
+ "\u0000\uC6A7\u0000\uC6A6\u0000\u0000\u8EA2\uA3B4\u0000\u0000" + // 26850 - 26854
+ "\u0000\u0000\u0000\uCCB9\u0000\u0000\u0000\u0000\u0000\uA7BA" + // 26855 - 26859
+ "\u0000\u0000\u0000\u0000\u8EA2\uA1B7\u0000\u0000\u0000\uC6A9" + // 26860 - 26864
+ "\u0000\uC6A8\u0000\uC7CD\u0000\uC7CE\u8EA2\uA3B5\u0000\uC9BB" + // 26865 - 26869
+ "\u0000\u0000\u0000\uC9BC\u0000\u0000\u0000\uCCBA\u0000\uCCBB" + // 26870 - 26874
+ "\u0000\uCCBC\u0000\u0000\u0000\uD0B3\u8EA2\uA9B7\u0000\u0000" + // 26875 - 26879
+ "\u0000\u0000\u0000\uD4CE\u8EA2\uA9B4\u0000\uD0B0\u8EA2\uA9B5" + // 26880 - 26884
+ "\u0000\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0AD" + // 26885 - 26889
+ "\u0000\u0000\u0000\uD0AE\u0000\u0000\u0000\u0000\u0000\u0000" + // 26890 - 26894
+ "\u8EA2\uAEB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26895 - 26899
+ "\u0000\uD9AC\u8EA2\uB3F1\u0000\u0000\u0000\uD9AF\u8EA2\uB3F0" + // 26900 - 26904
+ "\u0000\uDBAB\u0000\uD9AE\u0000\uD9AD\u0000\u0000\u0000\uDEBA" + // 26905 - 26909
+ "\u0000\u0000\u0000\uDEB9\u0000\uDEB8\u0000\uE3B9\u0000\u0000" + // 26910 - 26914
+ "\u0000\u0000\u0000\uE3BC\u0000\uE3BD\u0000\uE3BB\u0000\u0000" + // 26915 - 26919
+ "\u0000\uE3BA\u0000\u0000\u0000\u0000\u8EA2\uC9AA\u0000\u0000" + // 26920 - 26924
+ "\u8EA2\uC9AB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFDD" + // 26925 - 26929
+ "\u0000\uECAF\u8EA2\uCFDC\u0000\u0000\u0000\uF0BA\u8EA2\uDCCB" + // 26930 - 26934
+ "\u0000\uF3C4\u0000\u0000\u8EA2\uE5BA\u0000\uF9E1\u0000\uA7B4" + // 26935 - 26939
+ "\u0000\uC4C4\u0000\uC5A4\u8EA2\uA1B6\u0000\u0000\u0000\uC5A5" + // 26940 - 26944
+ "\u0000\uC5A6\u8EA2\uC9A8\u8EA2\uC9A9\u0000\uE8A3\u0000\uE8A2" + // 26945 - 26949
+ "\u8EA2\uCCE1\u0000\u0000\u0000\u0000\u0000\uECAA\u0000\uECAB" + // 26950 - 26954
+ "\u0000\uECAC\u0000\uECAE\u8EA2\uCFDA\u8EA2\uCFDB\u0000\uECAD" + // 26955 - 26959
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B8\u0000\u0000" + // 26960 - 26964
+ "\u0000\uF0B9\u0000\u0000\u0000\u0000\u8EA2\uE5B9\u8EA2\uEBD1" + // 26965 - 26969
+ "\u8EA2\uEBD0\u8EA2\uEEFE\u0000\u0000\u0000\uC4B0\u0000\u0000" + // 26970 - 26974
+ "\u0000\u0000\u0000\u0000\u0000\uC5FC\u0000\uC5FB\u0000\u0000" + // 26975 - 26979
+ "\u0000\u0000\u0000\uC7C9\u0000\u0000\u0000\u0000\u8EA2\uA1FE" + // 26980 - 26984
+ "\u0000\u0000\u0000\u0000\u0000\uC9B7\u0000\uC9B8\u0000\uC9B6" + // 26985 - 26989
+ "\u0000\uC9B9\u8EA2\uA3B1\u8EA2\uA3B2\u0000\u0000\u0000\u0000" + // 26990 - 26994
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26995 - 26999
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27000 - 27004
+ "\u0000\uCCB4\u8EA2\uA5D5\u0000\u0000\u0000\uCCB3\u0000\u0000" + // 27005 - 27009
+ "\u8EA2\uC4A2\u8EA2\uC3FE\u8EA2\uC3FD\u0000\u0000\u8EA2\uC3FC" + // 27010 - 27014
+ "\u8EA2\uC3FB\u0000\uE4D8\u8EA2\uC4A1\u0000\uE9B9\u8EA2\uCBAB" + // 27015 - 27019
+ "\u8EA2\uCBAD\u0000\uE9BA\u8EA2\uCBAC\u0000\uEDC5\u0000\u0000" + // 27020 - 27024
+ "\u0000\uEDC4\u8EA2\uD1B9\u0000\u0000\u0000\u0000\u8EA2\uD7EA" + // 27025 - 27029
+ "\u8EA2\uD7E9\u8EA2\uD7EB\u0000\u0000\u0000\u0000\u0000\uF1A4" + // 27030 - 27034
+ "\u0000\u0000\u8EA2\uDDB7\u0000\uF3FC\u0000\u0000\u8EA2\uE1F4" + // 27035 - 27039
+ "\u0000\uF6D6\u8EA2\uE5E4\u0000\uFBE3\u0000\uC5CF\u0000\uC6DF" + // 27040 - 27044
+ "\u0000\uC8BA\u0000\uCAE3\u0000\uCEBD\u0000\uCEBE\u0000\u0000" + // 27045 - 27049
+ "\u0000\u0000\u0000\uD1F1\u0000\u0000\u0000\u0000\u8EA2\uAFFC" + // 27050 - 27054
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE4D9" + // 27055 - 27059
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2D9\u0000\uF1A5" + // 27060 - 27064
+ "\u0000\uF6D7\u0000\uC5D0\u0000\u0000\u0000\uC8BB\u0000\u0000" + // 27065 - 27069
+ "\u0000\u0000\u8EA2\uA7CC\u0000\uCEBF\u0000\uC4AE\u0000\uC4AF" + // 27070 - 27074
+ "\u0000\u0000\u0000\uC4C3\u0000\u0000\u0000\u0000\u0000\uC5A1" + // 27075 - 27079
+ "\u0000\uC5A2\u0000\uC5A3\u8EA2\uA1CC\u0000\uC5FA\u0000\u0000" + // 27080 - 27084
+ "\u8EA2\uA1CB\u0000\u0000\u0000\uC7C7\u0000\u0000\u8EA2\uA1FD" + // 27085 - 27089
+ "\u0000\uC7C5\u0000\uC7C6\u8EA2\uA1FC\u0000\u0000\u0000\u0000" + // 27090 - 27094
+ "\u0000\uC7C8\u0000\uC7C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27095 - 27099
+ "\u0000\u0000\u8EA2\uA3AE\u0000\uCFCF\u8EA2\uA3AF\u0000\u0000" + // 27100 - 27104
+ "\u0000\u0000\u8EA2\uA3B0\u0000\u0000\u0000\u0000\u0000\uC9B2" + // 27105 - 27109
+ "\u0000\uC9B1\u0000\u0000\u0000\u0000\u0000\uC9B5\u0000\uC9B3" + // 27110 - 27114
+ "\u0000\uC9B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCB0" + // 27115 - 27119
+ "\u0000\u0000\u0000\uCCAF\u8EA2\uA5D4\u8EA2\uA5D1\u8EA2\uA5D2" + // 27120 - 27124
+ "\u0000\u0000\u8EA2\uA5D0\u0000\uCCB1\u0000\uCCAD\u0000\uCCAC" + // 27125 - 27129
+ "\u0000\u0000\u0000\uCCAE\u0000\uCCAB\u0000\u0000\u0000\u0000" + // 27130 - 27134
+ "\u0000\u0000\u0000\u0000\u0000\uDCBE\u0000\u0000\u8EA2\uB7DD" + // 27135 - 27139
+ "\u0000\u0000\u0000\u0000\u8EA2\uB7D6\u8EA2\uB7D8\u8EA2\uB7DA" + // 27140 - 27144
+ "\u0000\u0000\u8EA2\uB7DB\u8EA2\uB7D9\u0000\uDCBF\u0000\u0000" + // 27145 - 27149
+ "\u8EA2\uB7DE\u0000\u0000\u8EA2\uB7D7\u0000\u0000\u0000\u0000" + // 27150 - 27154
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27155 - 27159
+ "\u0000\u0000\u0000\u0000\u8EA2\uBECC\u0000\uE0FC\u8EA2\uBED4" + // 27160 - 27164
+ "\u0000\u0000\u8EA2\uBEC9\u0000\u0000\u8EA2\uBED5\u0000\u0000" + // 27165 - 27169
+ "\u8EA2\uBECA\u8EA2\uBECB\u0000\u0000\u0000\u0000\u8EA2\uBED3" + // 27170 - 27174
+ "\u8EA2\uBED2\u8EA2\uBECF\u0000\uDCBD\u0000\uE0FD\u8EA2\uBECD" + // 27175 - 27179
+ "\u8EA2\uBED0\u0000\uE0FE\u8EA2\uBED1\u8EA2\uBECE\u0000\u0000" + // 27180 - 27184
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27185 - 27189
+ "\u0000\u0000\u8EA2\uC5D4\u0000\u0000\u8EA2\uC5D8\u0000\uE5D5" + // 27190 - 27194
+ "\u0000\u0000\u8EA2\uCCB8\u0000\uE5D8\u0000\uF0B5\u0000\u0000" + // 27195 - 27199
+ "\u0000\uA7AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27200 - 27204
+ "\u8EA2\uA1AE\u0000\u0000\u0000\uC5F4\u0000\uC5F5\u0000\u0000" + // 27205 - 27209
+ "\u0000\u0000\u0000\uC7C2\u0000\u0000\u8EA2\uA3AC\u0000\u0000" + // 27210 - 27214
+ "\u0000\uD0A4\u0000\uD0A3\u8EA2\uAEA3\u8EA2\uAEA2\u0000\uD9A8" + // 27215 - 27219
+ "\u0000\uA7AE\u0000\uC4FD\u8EA2\uA1B5\u0000\u0000\u0000\u0000" + // 27220 - 27224
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5CD\u0000\u0000" + // 27225 - 27229
+ "\u0000\uD0A5\u0000\u0000\u0000\uD4C3\u0000\u0000\u0000\uD4C1" + // 27230 - 27234
+ "\u0000\uD4C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27235 - 27239
+ "\u0000\uF0B6\u0000\uA7AF\u0000\uC5F6\u0000\u0000\u0000\u0000" + // 27240 - 27244
+ "\u0000\u0000\u0000\uC7C3\u8EA2\uA1FB\u0000\u0000\u0000\u0000" + // 27245 - 27249
+ "\u0000\u0000\u0000\u0000\u0000\uC9AF\u0000\uC9B0\u0000\u0000" + // 27250 - 27254
+ "\u8EA2\uA3AD\u0000\u0000\u0000\u0000\u8EA2\uA5CE\u0000\uCCA9" + // 27255 - 27259
+ "\u8EA2\uA5CF\u0000\u0000\u0000\uE9A9\u8EA2\uCBA7\u0000\uE9B7" + // 27260 - 27264
+ "\u8EA2\uCAF5\u0000\u0000\u8EA2\uCBAA\u0000\u0000\u0000\u0000" + // 27265 - 27269
+ "\u8EA2\uCAE5\u8EA2\uCAFA\u0000\uE9AC\u0000\uE9B5\u0000\uE9B3" + // 27270 - 27274
+ "\u8EA2\uCAE7\u8EA2\uCAFC\u0000\uE9B2\u0000\u0000\u0000\u0000" + // 27275 - 27279
+ "\u0000\uE9AB\u8EA2\uCAF8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27280 - 27284
+ "\u0000\u0000\u8EA2\uCBA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27285 - 27289
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27290 - 27294
+ "\u8EA2\uD0FC\u0000\u0000\u8EA2\uD0F8\u8EA2\uD0F4\u8EA2\uD1AA" + // 27295 - 27299
+ "\u8EA2\uD1A7\u0000\uEDB7\u0000\u0000\u0000\u0000\u8EA2\uD1AE" + // 27300 - 27304
+ "\u8EA2\uD0FB\u0000\uEDC2\u8EA2\uD1A4\u0000\u0000\u0000\u0000" + // 27305 - 27309
+ "\u8EA2\uD0F7\u8EA2\uD1A3\u0000\uEDBF\u8EA2\uD1B7\u0000\u0000" + // 27310 - 27314
+ "\u8EA2\uD1B4\u8EA2\uD1A6\u8EA2\uD0F5\u0000\u0000\u0000\u0000" + // 27315 - 27319
+ "\u8EA2\uD1AB\u8EA2\uD1AD\u0000\uEDBB\u8EA2\uD1A1\u8EA2\uD0FA" + // 27320 - 27324
+ "\u0000\uC4C2\u0000\uC4F8\u0000\u0000\u0000\uC4F7\u0000\uC5F3" + // 27325 - 27329
+ "\u0000\uC5F2\u0000\uC7BE\u0000\uC7BD\u0000\uC7BF\u0000\uC7BC" + // 27330 - 27334
+ "\u0000\u0000\u0000\uC9AC\u0000\uC9AB\u0000\uC9AD\u0000\u0000" + // 27335 - 27339
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCA3\u0000\u0000" + // 27340 - 27344
+ "\u0000\uCCA2\u0000\uCCA4\u0000\u0000\u0000\uD0A2\u0000\u0000" + // 27345 - 27349
+ "\u0000\uA2F9\u8EA2\uAEA1\u0000\uA2FA\u0000\uD9A7\u0000\uA2FC" + // 27350 - 27354
+ "\u0000\uA2FB\u8EA2\uBAC4\u0000\u0000\u0000\uA2FD\u0000\uE7FE" + // 27355 - 27359
+ "\u0000\uA2FE\u0000\u0000\u0000\uC4AB\u0000\u0000\u0000\uC4F9" + // 27360 - 27364
+ "\u0000\uC7C0\u0000\uCCA5\u0000\u0000\u0000\uC4AC\u0000\uC4FC" + // 27365 - 27369
+ "\u0000\uC4FA\u0000\uC4FB\u0000\u0000\u0000\u0000\u0000\uC7C1" + // 27370 - 27374
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9AE\u0000\uCCA7" + // 27375 - 27379
+ "\u0000\uCCA6\u0000\uCCA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27380 - 27384
+ "\u0000\uD4C0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1A5" + // 27385 - 27389
+ "\u0000\u0000\u0000\uC5AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 27390 - 27394
+ "\u0000\u0000\u0000\u0000\u8EA2\uA2A4\u0000\u0000\u0000\u0000" + // 27395 - 27399
+ "\u0000\u0000\u8EA2\uA3B6\u8EA2\uA3B7\u0000\u0000\u0000\u0000" + // 27400 - 27404
+ "\u8EA2\uA5D9\u0000\u0000\u8EA2\uA5DA\u0000\u0000\u8EA2\uA9B9" + // 27405 - 27409
+ "\u8EA2\uA9B8\u8EA2\uA9BB\u8EA2\uA9BA\u0000\uD0B4\u0000\u0000" + // 27410 - 27414
+ "\u8EA2\uB3F3\u0000\uD4D0\u8EA2\uAEB2\u0000\uD4CF\u0000\u0000" + // 27415 - 27419
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC8\u0000\uDEBC" + // 27420 - 27424
+ "\u0000\u0000\u8EA2\uBAC9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27425 - 27429
+ "\u0000\u0000\u8EA2\uC9AD\u0000\uE8A5\u0000\u0000\u0000\u0000" + // 27430 - 27434
+ "\u0000\u0000\u0000\u0000\u0000\uECB0\u0000\u0000\u8EA2\uE5BB" + // 27435 - 27439
+ "\u0000\u0000\u0000\uA7BC\u0000\u0000\u0000\u0000\u8EA2\uA1B8" + // 27440 - 27444
+ "\u0000\u0000\u0000\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27445 - 27449
+ "\u0000\u0000\u8EA2\uD2F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27450 - 27454
+ "\u0000\u0000\u0000\uF1EA\u0000\uF1EF\u0000\uF1E8\u8EA2\uD9C4" + // 27455 - 27459
+ "\u8EA2\uD9BB\u8EA2\uD9C7\u8EA2\uD9BF\u8EA2\uD9C5\u0000\uF1F0" + // 27460 - 27464
+ "\u0000\uF1E9\u8EA2\uD9B8\u8EA2\uD9BE\u8EA2\uD9C8\u8EA2\uD9C1" + // 27465 - 27469
+ "\u8EA2\uD9C6\u8EA2\uD9BA\u0000\u0000\u0000\u0000\u8EA2\uD9C2" + // 27470 - 27474
+ "\u0000\uF1EB\u8EA2\uD9C0\u0000\uF1EE\u0000\uF1ED\u8EA2\uD9BC" + // 27475 - 27479
+ "\u8EA2\uD9BD\u8EA2\uD9B9\u8EA2\uD9C3\u0000\uF1EC\u8EA2\uD9CA" + // 27480 - 27484
+ "\u8EA2\uD9C9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEC7" + // 27485 - 27489
+ "\u8EA2\uDEC3\u0000\uF4E9\u0000\u0000\u8EA2\uDEBD\u0000\uF4E3" + // 27490 - 27494
+ "\u0000\uF4F3\u8EA2\uDEC9\u0000\uF4EB\u0000\uF4E7\u8EA2\uDEC0" + // 27495 - 27499
+ "\u0000\uF4EE\u0000\uF4F1\u8EA2\uDECB\u0000\uF4E6\u8EA2\uDEC2" + // 27500 - 27504
+ "\u0000\uF4EF\u8EA2\uDECD\u8EA2\uDECA\u8EA2\uDEBE\u0000\uF4EA" + // 27505 - 27509
+ "\u0000\uF4E4\u0000\uF4F2\u0000\uECA1\u0000\u0000\u0000\uECA5" + // 27510 - 27514
+ "\u8EA2\uCFCF\u0000\uEBFE\u0000\uECA8\u8EA2\uCFD2\u8EA2\uCFD3" + // 27515 - 27519
+ "\u0000\uECA6\u0000\uECA7\u8EA2\uCFD9\u8EA2\uCFD6\u8EA2\uCFD7" + // 27520 - 27524
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B3\u8EA2\uD6C3" + // 27525 - 27529
+ "\u0000\uF0B0\u8EA2\uD6C0\u0000\uF0B2\u0000\uF0B4\u0000\u0000" + // 27530 - 27534
+ "\u8EA2\uD6C1\u0000\uF0B1\u0000\u0000\u8EA2\uD6C2\u0000\u0000" + // 27535 - 27539
+ "\u8EA2\uD6BF\u0000\u0000\u0000\u0000\u0000\uF3C1\u8EA2\uDCC9" + // 27540 - 27544
+ "\u0000\uF3C2\u8EA2\uDCC7\u0000\u0000\u8EA2\uDCC8\u8EA2\uDCC6" + // 27545 - 27549
+ "\u8EA2\uDCC5\u0000\u0000\u0000\u0000\u8EA2\uDCCA\u0000\uF3C0" + // 27550 - 27554
+ "\u0000\u0000\u0000\u0000\u8EA2\uE1C4\u8EA2\uE1C5\u0000\u0000" + // 27555 - 27559
+ "\u8EA2\uCFD0\u8EA2\uE1C3\u0000\uF3C3\u0000\uF8AB\u8EA2\uE5B7" + // 27560 - 27564
+ "\u8EA2\uE5B8\u0000\u0000\u0000\uFAE2\u0000\uFAE3\u8EA2\uEBCF" + // 27565 - 27569
+ "\u8EA2\uEBCE\u0000\uFBD8\u0000\uFBD7\u8EA2\uEEFD\u0000\u0000" + // 27570 - 27574
+ "\u0000\uC4AA\u0000\uDEAE\u0000\u0000\u8EA2\uBAC2\u8EA2\uBABB" + // 27575 - 27579
+ "\u0000\u0000\u0000\uDEAB\u0000\u0000\u8EA2\uBAC3\u0000\u0000" + // 27580 - 27584
+ "\u0000\u0000\u0000\u0000\u8EA2\uBAB9\u8EA2\uBABC\u0000\uDEAA" + // 27585 - 27589
+ "\u8EA2\uBABD\u0000\u0000\u0000\u0000\u0000\uDEAD\u8EA2\uBAC1" + // 27590 - 27594
+ "\u0000\u0000\u8EA2\uBAB7\u8EA2\uBAB6\u0000\uDEAF\u0000\u0000" + // 27595 - 27599
+ "\u0000\uDEB0\u0000\uDEAC\u0000\uDEB1\u8EA2\uBAB5\u8EA2\uBAC0" + // 27600 - 27604
+ "\u8EA2\uBABE\u8EA2\uBAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27605 - 27609
+ "\u0000\uDEA9\u8EA2\uBABA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27610 - 27614
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27615 - 27619
+ "\u0000\uE3B1\u0000\uE3AB\u8EA2\uC1DC\u0000\uE3B4\u8EA2\uC1E2" + // 27620 - 27624
+ "\u8EA2\uC1E5\u0000\uE3AD\u0000\uE3AE\u8EA2\uC1DF\u0000\uE3AC" + // 27625 - 27629
+ "\u8EA2\uC1E8\u0000\uE3B2\u8EA2\uC1E9\u0000\u0000\u8EA2\uC1E4" + // 27630 - 27634
+ "\u0000\uE3B3\u0000\u0000\u8EA2\uC1D9\u0000\uE3B0\u8EA2\uC1DA" + // 27635 - 27639
+ "\u8EA2\uB3E6\u8EA2\uB3DA\u0000\u0000\u0000\uD8F6\u0000\u0000" + // 27640 - 27644
+ "\u8EA2\uB3DF\u8EA2\uB3E5\u0000\uD8F5\u8EA2\uB3D8\u0000\uD8F9" + // 27645 - 27649
+ "\u8EA2\uB3DC\u8EA2\uB3D5\u0000\uD8F7\u8EA2\uB3D9\u0000\uD8FC" + // 27650 - 27654
+ "\u0000\uD9A3\u0000\u0000\u8EA2\uB3EA\u0000\u0000\u8EA2\uB3D4" + // 27655 - 27659
+ "\u0000\u0000\u0000\uD8FD\u0000\u0000\u8EA2\uB3E9\u0000\u0000" + // 27660 - 27664
+ "\u0000\u0000\u0000\uD8F8\u8EA2\uB3DB\u0000\uD8F4\u8EA2\uB3D6" + // 27665 - 27669
+ "\u8EA2\uB3D2\u8EA2\uB3E0\u8EA2\uB3D3\u8EA2\uB3D1\u8EA2\uB3DD" + // 27670 - 27674
+ "\u8EA2\uB3E3\u8EA2\uB3E4\u0000\uD8FA\u0000\u0000\u0000\u0000" + // 27675 - 27679
+ "\u8EA2\uBABF\u8EA2\uB3E1\u8EA2\uB3D0\u8EA2\uB3E2\u0000\u0000" + // 27680 - 27684
+ "\u0000\uD9A6\u8EA2\uB3E7\u0000\uD9A5\u8EA2\uB3CF\u0000\u0000" + // 27685 - 27689
+ "\u8EA2\uB3D7\u8EA2\uB3E8\u0000\uD9A1\u0000\uD8FE\u0000\uD8FB" + // 27690 - 27694
+ "\u0000\uD9A2\u0000\u0000\u0000\u0000\u0000\uD8F2\u0000\u0000" + // 27695 - 27699
+ "\u0000\u0000\u0000\uD8F3\u0000\u0000\u0000\u0000\u0000\uCBD2" + // 27700 - 27704
+ "\u0000\u0000\u0000\uCBD5\u0000\uCBD4\u0000\uCBD3\u0000\u0000" + // 27705 - 27709
+ "\u0000\u0000\u8EA2\uA5A5\u0000\u0000\u8EA2\uA8ED\u0000\u0000" + // 27710 - 27714
+ "\u8EA2\uA8EF\u0000\uCFD2\u0000\u0000\u0000\u0000\u0000\uCFD4" + // 27715 - 27719
+ "\u8EA2\uA8EC\u8EA2\uA8EE\u0000\uCFD3\u8EA2\uA8F1\u8EA2\uA8F0" + // 27720 - 27724
+ "\u8EA2\uA8F2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27725 - 27729
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADD7" + // 27730 - 27734
+ "\u8EA2\uADD5\u0000\uD3DF\u8EA2\uADD4\u0000\uD3E4\u0000\uD3E1" + // 27735 - 27739
+ "\u0000\uD3DE\u0000\u0000\u0000\uD3E5\u0000\u0000\u0000\uD3E0" + // 27740 - 27744
+ "\u0000\uD3E3\u0000\u0000\u0000\uD3E2\u8EA2\uADD6\u0000\u0000" + // 27745 - 27749
+ "\u0000\uD3DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8CF" + // 27750 - 27754
+ "\u8EA2\uB3AF\u8EA2\uB3B5\u0000\uD8CC\u0000\uD8D3\u0000\u0000" + // 27755 - 27759
+ "\u0000\uD8CE\u8EA2\uB3B2\u8EA2\uB3B4\u0000\uD8D1\u8EA2\uB3AE" + // 27760 - 27764
+ "\u8EA2\uB3B1\u0000\uD4B1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27765 - 27769
+ "\u0000\u0000\u8EA2\uADEA\u0000\uD4AA\u8EA2\uADEB\u0000\u0000" + // 27770 - 27774
+ "\u0000\uD4BF\u0000\u0000\u0000\uD4B6\u0000\uD4A1\u0000\uD4A2" + // 27775 - 27779
+ "\u8EA2\uADFE\u0000\uD9A4\u0000\u0000\u0000\uD4AF\u0000\uD4AE" + // 27780 - 27784
+ "\u8EA2\uADEC\u0000\uD4B2\u8EA2\uB3DE\u0000\uD4A9\u8EA2\uADF7" + // 27785 - 27789
+ "\u0000\uD4B8\u0000\uD4B7\u0000\uD4AD\u8EA2\uADEF\u8EA2\uADF8" + // 27790 - 27794
+ "\u0000\u0000\u8EA2\uADE9\u0000\uD4AC\u8EA2\uADF9\u0000\uD4B5" + // 27795 - 27799
+ "\u8EA2\uADED\u0000\uD4A3\u0000\u0000\u0000\uD4A6\u0000\uD4A5" + // 27800 - 27804
+ "\u8EA2\uADFA\u0000\uD4B3\u0000\uD4A8\u0000\uD4BC\u0000\uD4BE" + // 27805 - 27809
+ "\u8EA2\uADF4\u0000\uD4BB\u0000\u0000\u8EA2\uADFC\u8EA2\uADEE" + // 27810 - 27814
+ "\u8EA2\uADFD\u0000\u0000\u8EA2\uADF2\u0000\u0000\u8EA2\uADFB" + // 27815 - 27819
+ "\u0000\u0000\u8EA2\uADF3\u0000\u0000\u0000\u0000\u0000\u0000" + // 27820 - 27824
+ "\u0000\u0000\u0000\uD4AB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27825 - 27829
+ "\u0000\uE3AA\u8EA2\uC1D6\u8EA2\uC1D7\u0000\uA7A6\u0000\uC4A7" + // 27830 - 27834
+ "\u0000\u0000\u0000\uC4E8\u0000\u0000\u0000\u0000\u0000\uCBE7" + // 27835 - 27839
+ "\u0000\uC4A8\u8EA2\uA1A9\u0000\uC4C0\u0000\u0000\u0000\u0000" + // 27840 - 27844
+ "\u0000\uC4E9\u0000\uC4EB\u8EA2\uA1B1\u0000\uC4EC\u0000\uC4EA" + // 27845 - 27849
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7A7\u0000\u0000" + // 27850 - 27854
+ "\u0000\uCBE8\u0000\u0000\u0000\u0000\u0000\uCBE9\u0000\uCFE7" + // 27855 - 27859
+ "\u0000\uA7A8\u0000\uC4C1\u0000\uC4ED\u0000\u0000\u0000\uC7A8" + // 27860 - 27864
+ "\u0000\uC7AA\u0000\uC7A9\u0000\u0000\u0000\uC8EC\u0000\u0000" + // 27865 - 27869
+ "\u0000\u0000\u0000\uCBEA\u0000\uCBEB\u0000\uCFE8\u0000\uCFE9" + // 27870 - 27874
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FE" + // 27875 - 27879
+ "\u0000\u0000\u0000\u0000\u8EA2\uC1D8\u0000\u0000\u0000\u0000" + // 27880 - 27884
+ "\u8EA2\uEDC4\u0000\uC4A9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27885 - 27889
+ "\u0000\u0000\u0000\u0000\u8EA2\uAEA5\u8EA2\uAEA6\u0000\uD4C6" + // 27890 - 27894
+ "\u0000\u0000\u8EA2\uAEA7\u0000\u0000\u8EA2\uAEA4\u0000\uD4C7" + // 27895 - 27899
+ "\u0000\uD4C5\u0000\uD4C4\u8EA2\uAEA8\u0000\u0000\u8EA2\uB3EB" + // 27900 - 27904
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC5\u0000\u0000" + // 27905 - 27909
+ "\u0000\u0000\u8EA2\uC1EA\u8EA2\uC9A7\u0000\u0000\u0000\u0000" + // 27910 - 27914
+ "\u0000\u0000\u0000\uECA9\u0000\uF0B7\u8EA2\uD6C4\u0000\u0000" + // 27915 - 27919
+ "\u0000\uC4AD\u0000\uC4BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27920 - 27924
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27925 - 27929
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27930 - 27934
+ "\u0000\u0000\u0000\uD9A9\u0000\uDEB3\u0000\u0000\u0000\uE8A1" + // 27935 - 27939
+ "\u0000\u0000\u8EA2\uA1A3\u0000\uC4FE\u0000\u0000\u0000\uC5F9" + // 27940 - 27944
+ "\u0000\uC5F7\u0000\uC5F8\u0000\u0000\u0000\u0000\u0000\uCCAA" + // 27945 - 27949
+ "\u0000\u0000\u0000\u0000\u0000\uE6AD\u0000\u0000\u0000\u0000" + // 27950 - 27954
+ "\u0000\u0000\u8EA2\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27955 - 27959
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6D4\u8EA2\uC6FA" + // 27960 - 27964
+ "\u8EA2\uC6D3\u0000\uEAE8\u8EA2\uCDDA\u0000\u0000\u0000\u0000" + // 27965 - 27969
+ "\u8EA2\uCDC9\u0000\u0000\u0000\u0000\u8EA2\uCDB3\u8EA2\uCDD1" + // 27970 - 27974
+ "\u0000\uEAE0\u8EA2\uCDC2\u8EA2\uCDCC\u0000\uEAE3\u8EA2\uCDC5" + // 27975 - 27979
+ "\u0000\uEAE1\u8EA2\uCDB6\u8EA2\uCDD4\u8EA2\uCDB5\u8EA2\uCDC8" + // 27980 - 27984
+ "\u0000\u0000\u8EA2\uCDB4\u0000\u0000\u0000\u0000\u8EA2\uCDC6" + // 27985 - 27989
+ "\u8EA2\uCDCF\u8EA2\uCDCD\u8EA2\uCDC1\u8EA2\uCDBC\u8EA2\uCDBA" + // 27990 - 27994
+ "\u0000\u0000\u8EA2\uCDBB\u8EA2\uCDCE\u8EA2\uCDD9\u8EA2\uCDC3" + // 27995 - 27999
+ "\u0000\uEAE2\u0000\u0000\u8EA2\uCDBE\u0000\u0000\u8EA2\uCDD2" + // 28000 - 28004
+ "\u0000\u0000\u0000\uEAE5\u8EA2\uCDBD\u8EA2\uCDB7\u8EA2\uCDC7" + // 28005 - 28009
+ "\u0000\uEAE9\u0000\u0000\u0000\u0000\u0000\uEADD\u8EA2\uA9AF" + // 28010 - 28014
+ "\u8EA2\uA9A5\u0000\uCFFB\u0000\uCFF2\u0000\uCFFA\u8EA2\uA8FE" + // 28015 - 28019
+ "\u0000\u0000\u8EA2\uA9AC\u0000\u0000\u8EA2\uA9A3\u0000\uCFF6" + // 28020 - 28024
+ "\u8EA2\uA9A4\u0000\u0000\u8EA2\uA8FD\u0000\uCFFD\u0000\uCFF0" + // 28025 - 28029
+ "\u0000\uCFF9\u0000\uCFEF\u0000\u0000\u8EA2\uA9A1\u8EA2\uA9A6" + // 28030 - 28034
+ "\u0000\u0000\u8EA2\uA9AD\u0000\uCFF7\u0000\uCFF4\u8EA2\uA9A8" + // 28035 - 28039
+ "\u0000\uCFFC\u8EA2\uA9AB\u8EA2\uA9A7\u0000\uCFF1\u0000\uCFFE" + // 28040 - 28044
+ "\u0000\uCFF5\u0000\uCFEE\u0000\uCFEA\u0000\u0000\u0000\u0000" + // 28045 - 28049
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28050 - 28054
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9B1\u0000\u0000" + // 28055 - 28059
+ "\u0000\uD4BA\u0000\uD4A4\u0000\u0000\u0000\uD4B4\u0000\u0000" + // 28060 - 28064
+ "\u0000\uD4B9\u8EA2\uADF1\u8EA2\uADF0\u8EA2\uADF5\u8EA2\uADF6" + // 28065 - 28069
+ "\u0000\uD4A7\u0000\u0000\u0000\uD4B0\u0000\u0000\u0000\u0000" + // 28070 - 28074
+ "\u0000\u0000\u0000\uD4BD\u0000\u0000\u0000\uD5F2\u0000\uD5EB" + // 28075 - 28079
+ "\u0000\uD5EE\u0000\u0000\u0000\uD5F1\u0000\u0000\u8EA2\uAFD7" + // 28080 - 28084
+ "\u0000\u0000\u0000\uD5EC\u8EA2\uAFD5\u0000\u0000\u0000\uD5F0" + // 28085 - 28089
+ "\u0000\u0000\u0000\u0000\u0000\uD5ED\u0000\u0000\u8EA2\uAFD8" + // 28090 - 28094
+ "\u0000\uD5EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28095 - 28099
+ "\u0000\u0000\u0000\u0000\u8EA2\uB5EE\u0000\uDBA5\u8EA2\uB5ED" + // 28100 - 28104
+ "\u8EA2\uB5EF\u0000\uDBA4\u0000\uDBA9\u8EA2\uAFD6\u0000\u0000" + // 28105 - 28109
+ "\u8EA2\uB5EC\u8EA2\uB5F0\u0000\u0000\u0000\uDBA6\u8EA2\uB5EB" + // 28110 - 28114
+ "\u0000\uDBA8\u0000\u0000\u0000\uDBA7\u0000\u0000\u8EA2\uBCCA" + // 28115 - 28119
+ "\u0000\u0000\u8EA2\uBCC5\u0000\u0000\u0000\uDFDB\u0000\uDFDF" + // 28120 - 28124
+ "\u0000\uDFDC\u8EA2\uBCC8\u8EA2\uBCCB\u0000\u0000\u0000\uDFDD" + // 28125 - 28129
+ "\u0000\u0000\u0000\uDFDE\u0000\uDFE3\u8EA2\uC3CD\u8EA2\uBCC9" + // 28130 - 28134
+ "\u0000\uDFE1\u8EA2\uBCC6\u8EA2\uBCC4\u0000\u0000\u0000\uDFE2" + // 28135 - 28139
+ "\u0000\u0000\u8EA2\uA7C6\u0000\u0000\u8EA2\uA7C4\u8EA2\uA7BC" + // 28140 - 28144
+ "\u8EA2\uA7B4\u8EA2\uA7BB\u0000\uCEAD\u0000\u0000\u0000\uCEB3" + // 28145 - 28149
+ "\u0000\u0000\u0000\uCEA7\u8EA2\uA7BF\u8EA2\uA7BE\u8EA2\uA7B6" + // 28150 - 28154
+ "\u0000\u0000\u0000\uCEB5\u8EA2\uA7C2\u8EA2\uA7B7\u0000\uCEB8" + // 28155 - 28159
+ "\u8EA2\uA7C9\u0000\uCEA8\u0000\u0000\u0000\uCEAF\u8EA2\uA7BA" + // 28160 - 28164
+ "\u8EA2\uA7C3\u0000\uCEB7\u0000\u0000\u0000\uCEAA\u0000\uCEAE" + // 28165 - 28169
+ "\u0000\u0000\u8EA2\uA7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 28170 - 28174
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28175 - 28179
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28180 - 28184
+ "\u0000\u0000\u8EA2\uABBD\u0000\uD1DF\u0000\uD1EC\u0000\u0000" + // 28185 - 28189
+ "\u8EA2\uABB8\u8EA2\uABAE\u0000\uD1E5\u8EA2\uABAC\u0000\uD1DE" + // 28190 - 28194
+ "\u8EA2\uABA7\u0000\uD1E8\u8EA2\uABB4\u8EA2\uABA1\u8EA2\uABA3" + // 28195 - 28199
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9CB" + // 28200 - 28204
+ "\u0000\uF4F4\u8EA2\uDECE\u0000\u0000\u0000\u0000\u0000\uF7A7" + // 28205 - 28209
+ "\u0000\u0000\u8EA2\uE6C4\u8EA2\uE6C3\u0000\uFAAD\u8EA2\uEBFB" + // 28210 - 28214
+ "\u0000\u0000\u8EA2\uEDF0\u0000\uFCE4\u8EA2\uA2E9\u0000\u0000" + // 28215 - 28219
+ "\u0000\u0000\u0000\uCFAC\u0000\uCBB8\u0000\u0000\u0000\u0000" + // 28220 - 28224
+ "\u8EA2\uACEE\u0000\u0000\u0000\u0000\u8EA2\uB2A4\u8EA2\uB1FD" + // 28225 - 28229
+ "\u8EA2\uB2A3\u8EA2\uB2A1\u0000\uD7CE\u8EA2\uB2A2\u8EA2\uB1FE" + // 28230 - 28234
+ "\u0000\u0000\u8EA2\uB8B6\u0000\u0000\u8EA2\uBFA4\u8EA2\uBFA5" + // 28235 - 28239
+ "\u8EA2\uC6B0\u8EA2\uC6B1\u0000\uE5F5\u0000\uE5F6\u8EA2\uC6AF" + // 28240 - 28244
+ "\u8EA2\uC6B2\u8EA2\uC6AE\u0000\uE5F4\u0000\u0000\u0000\uEAC8" + // 28245 - 28249
+ "\u0000\u0000\u0000\uE5F7\u8EA2\uCDA3\u0000\u0000\u0000\uEEC7" + // 28250 - 28254
+ "\u8EA2\uD2F9\u0000\uEEC8\u0000\u0000\u0000\uF1F1\u8EA2\uD9CE" + // 28255 - 28259
+ "\u8EA2\uD9CC\u8EA2\uD9CD\u8EA2\uDED1\u8EA2\uDED0\u8EA2\uDECF" + // 28260 - 28264
+ "\u8EA2\uA5B6\u8EA2\uA5C2\u8EA2\uA5C9\u0000\uCBF5\u8EA2\uA5BB" + // 28265 - 28269
+ "\u8EA2\uA5B4\u0000\uCBF4\u8EA2\uA5B7\u0000\uCBF8\u8EA2\uA5BA" + // 28270 - 28274
+ "\u0000\u0000\u0000\uCBF3\u0000\u0000\u0000\uCBEE\u0000\u0000" + // 28275 - 28279
+ "\u0000\uCBFD\u8EA2\uA5C4\u0000\uCBFE\u8EA2\uA5C8\u0000\u0000" + // 28280 - 28284
+ "\u8EA2\uA5C6\u8EA2\uA5CA\u0000\uCBFB\u8EA2\uA5BE\u8EA2\uA5B2" + // 28285 - 28289
+ "\u0000\u0000\u8EA2\uA5C0\u0000\uCBF2\u8EA2\uA5C5\u0000\uCBED" + // 28290 - 28294
+ "\u8EA2\uA5C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28295 - 28299
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28300 - 28304
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28305 - 28309
+ "\u0000\u0000\u0000\uCFF8\u0000\uCFEC\u0000\u0000\u0000\u0000" + // 28310 - 28314
+ "\u8EA2\uA9A2\u8EA2\uA9AA\u0000\u0000\u0000\uCFEB\u0000\uCFF3" + // 28315 - 28319
+ "\u0000\uD0A1\u0000\u0000\u8EA2\uA9B0\u8EA2\uA9AE\u8EA2\uA9A9" + // 28320 - 28324
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFED\u8EA2\uA1F0" + // 28325 - 28329
+ "\u0000\uC7BA\u8EA2\uA1F4\u0000\u0000\u8EA2\uA1F8\u8EA2\uA1F5" + // 28330 - 28334
+ "\u0000\u0000\u0000\u0000\u8EA2\uA1F2\u0000\uC7AC\u0000\uC7AE" + // 28335 - 28339
+ "\u0000\uC7BB\u0000\u0000\u0000\uC7B0\u8EA2\uA1EA\u0000\uC7B3" + // 28340 - 28344
+ "\u0000\uC7B1\u0000\uC7B2\u8EA2\uA1FA\u8EA2\uA1F7\u8EA2\uA1EE" + // 28345 - 28349
+ "\u0000\uC7AF\u0000\u0000\u0000\u0000\u8EA2\uA1EB\u0000\uC7AD" + // 28350 - 28354
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F3\u0000\u0000" + // 28355 - 28359
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F6\u0000\u0000" + // 28360 - 28364
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28365 - 28369
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1EC\u8EA2\uA3A8" + // 28370 - 28374
+ "\u0000\u0000\u0000\uC9A4\u0000\uC8F5\u0000\u0000\u0000\u0000" + // 28375 - 28379
+ "\u8EA2\uA3A9\u0000\uC8F2\u0000\u0000\u0000\uC9A6\u0000\u0000" + // 28380 - 28384
+ "\u0000\uC8FA\u0000\u0000\u0000\uC8F9\u8EA2\uA2FB\u0000\uC8FD" + // 28385 - 28389
+ "\u0000\uC8F8\u8EA2\uA3A2\u8EA2\uA3AA\u0000\uC4EF\u0000\uC4EE" + // 28390 - 28394
+ "\u8EA2\uA1B2\u0000\uC4F0\u0000\uC4F6\u0000\u0000\u0000\uC4F1" + // 28395 - 28399
+ "\u0000\uC4F2\u8EA2\uA1B4\u8EA2\uA1B3\u0000\uC4F4\u0000\uC4F5" + // 28400 - 28404
+ "\u0000\u0000\u0000\uC4F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 28405 - 28409
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC5EA\u0000\uC5EB" + // 28410 - 28414
+ "\u0000\uC5EC\u0000\uC5ED\u0000\uC5E9\u0000\uC5F0\u8EA2\uA1CA" + // 28415 - 28419
+ "\u0000\u0000\u8EA2\uA1C6\u8EA2\uA1C9\u0000\uC5F1\u0000\uC6A3" + // 28420 - 28424
+ "\u0000\u0000\u8EA2\uA1C8\u0000\u0000\u0000\uC5EE\u0000\uC5EF" + // 28425 - 28429
+ "\u0000\uC5E8\u0000\u0000\u0000\u0000\u8EA2\uA1C5\u8EA2\uA1C7" + // 28430 - 28434
+ "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28435 - 28439
+ "\u0000\u0000\u0000\uC7B7\u8EA2\uA1EF\u0000\uC7B4\u0000\uC7B8" + // 28440 - 28444
+ "\u8EA2\uA1F9\u8EA2\uA1ED\u0000\uC7B5\u8EA2\uA1F1\u0000\u0000" + // 28445 - 28449
+ "\u0000\u0000\u0000\u0000\u0000\uC7B6\u0000\u0000\u0000\uC7B9" + // 28450 - 28454
+ "\u0000\u0000\u0000\uC7AB"
+ ;
+ }
+ }
+}
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/SimpleEUCEncoder.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.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.CoderResult;
-import sun.nio.cs.Surrogate;
-
-
-public abstract class SimpleEUCEncoder
- extends CharsetEncoder
-{
-
- protected short index1[];
- protected String index2;
- protected String index2a;
- protected String index2b;
- protected String index2c;
- protected int mask1;
- protected int mask2;
- protected int shift;
-
- private byte[] outputByte = new byte[4];
- private final Surrogate.Parser sgp = new Surrogate.Parser();
-
- protected SimpleEUCEncoder(Charset cs)
- {
- super(cs, 3.0f, 4.0f);
- }
-
- /**
- * Returns true if the given character can be converted to the
- * target character encoding.
- */
-
- public boolean canEncode(char ch) {
- int index;
- String theChars;
-
- index = index1[((ch & mask1) >> shift)] + (ch & mask2);
-
- if (index < 7500)
- theChars = index2;
- else
- if (index < 15000) {
- index = index - 7500;
- theChars = index2a;
- }
- else
- if (index < 22500){
- index = index - 15000;
- theChars = index2b;
- }
- else {
- index = index - 22500;
- theChars = index2c;
- }
-
- if (theChars.charAt(2*index) != '\u0000' ||
- theChars.charAt(2*index + 1) != '\u0000')
- return (true);
-
- // only return true if input char was unicode null - all others are
- // undefined
- return( ch == '\u0000');
-
- }
- private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
- char[] sa = src.array();
- int sp = src.arrayOffset() + src.position();
- int sl = src.arrayOffset() + src.limit();
- assert (sp <= sl);
- sp = (sp <= sl ? sp : sl);
- byte[] da = dst.array();
- int dp = dst.arrayOffset() + dst.position();
- int dl = dst.arrayOffset() + dst.limit();
- assert (dp <= dl);
- dp = (dp <= dl ? dp : dl);
-
- int index;
- int spaceNeeded;
- int i;
-
- try {
- while (sp < sl) {
- boolean allZeroes = true;
- char inputChar = sa[sp];
- if (Character.isSurrogate(inputChar)) {
- if (sgp.parse(inputChar, sa, sp, sl) < 0)
- return sgp.error();
- return sgp.unmappableResult();
- }
-
- if (inputChar >= '\uFFFE')
- return CoderResult.unmappableForLength(1);
-
- String theChars;
- char aChar;
-
- // We have a valid character, get the bytes for it
- index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
-
- if (index < 7500)
- theChars = index2;
- else if (index < 15000) {
- index = index - 7500;
- theChars = index2a;
- } else if (index < 22500){
- index = index - 15000;
- theChars = index2b;
- }
- else {
- index = index - 22500;
- theChars = index2c;
- }
-
- aChar = theChars.charAt(2*index);
- outputByte[0] = (byte)((aChar & 0xff00)>>8);
- outputByte[1] = (byte)(aChar & 0x00ff);
- aChar = theChars.charAt(2*index + 1);
- outputByte[2] = (byte)((aChar & 0xff00)>>8);
- outputByte[3] = (byte)(aChar & 0x00ff);
-
- for (i = 0; i < outputByte.length; i++) {
- if (outputByte[i] != 0x00) {
- allZeroes = false;
- break;
- }
- }
-
- if (allZeroes && inputChar != '\u0000') {
- return CoderResult.unmappableForLength(1);
- }
-
- int oindex = 0;
-
- for (spaceNeeded = outputByte.length;
- spaceNeeded > 1; spaceNeeded--){
- if (outputByte[oindex++] != 0x00 )
- break;
- }
-
- if (dp + spaceNeeded > dl)
- return CoderResult.OVERFLOW;
-
- for (i = outputByte.length - spaceNeeded;
- i < outputByte.length; i++) {
- da[dp++] = outputByte[i];
- }
- sp++;
- }
- return CoderResult.UNDERFLOW;
- } finally {
- src.position(sp - src.arrayOffset());
- dst.position(dp - dst.arrayOffset());
- }
- }
-
- private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
- int index;
- int spaceNeeded;
- int i;
- int mark = src.position();
- try {
- while (src.hasRemaining()) {
- char inputChar = src.get();
- boolean allZeroes = true;
- if (Character.isSurrogate(inputChar)) {
- if (sgp.parse(inputChar, src) < 0)
- return sgp.error();
- return sgp.unmappableResult();
- }
-
- if (inputChar >= '\uFFFE')
- return CoderResult.unmappableForLength(1);
-
- String theChars;
- char aChar;
-
- // We have a valid character, get the bytes for it
- index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
-
- if (index < 7500)
- theChars = index2;
- else if (index < 15000) {
- index = index - 7500;
- theChars = index2a;
- } else if (index < 22500){
- index = index - 15000;
- theChars = index2b;
- }
- else {
- index = index - 22500;
- theChars = index2c;
- }
-
- aChar = theChars.charAt(2*index);
- outputByte[0] = (byte)((aChar & 0xff00)>>8);
- outputByte[1] = (byte)(aChar & 0x00ff);
- aChar = theChars.charAt(2*index + 1);
- outputByte[2] = (byte)((aChar & 0xff00)>>8);
- outputByte[3] = (byte)(aChar & 0x00ff);
-
- for (i = 0; i < outputByte.length; i++) {
- if (outputByte[i] != 0x00) {
- allZeroes = false;
- break;
- }
- }
- if (allZeroes && inputChar != '\u0000') {
- return CoderResult.unmappableForLength(1);
- }
-
- int oindex = 0;
-
- for (spaceNeeded = outputByte.length;
- spaceNeeded > 1; spaceNeeded--){
- if (outputByte[oindex++] != 0x00 )
- break;
- }
- if (dst.remaining() < spaceNeeded)
- return CoderResult.OVERFLOW;
-
- for (i = outputByte.length - spaceNeeded;
- i < outputByte.length; i++) {
- dst.put(outputByte[i]);
- }
- mark++;
- }
- return CoderResult.UNDERFLOW;
- } finally {
- src.position(mark);
- }
- }
-
- protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
- if (true && src.hasArray() && dst.hasArray())
- return encodeArrayLoop(src, dst);
- else
- return encodeBufferLoop(src, dst);
- }
-
- public byte encode(char inputChar) {
- return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
- (inputChar & mask2));
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/SimpleEUCEncoder.java.template Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,276 @@
+/*
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ */
+
+package $PACKAGE$;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import sun.nio.cs.Surrogate;
+
+
+public abstract class SimpleEUCEncoder
+ extends CharsetEncoder
+{
+
+ protected short index1[];
+ protected String index2;
+ protected String index2a;
+ protected String index2b;
+ protected String index2c;
+ protected int mask1;
+ protected int mask2;
+ protected int shift;
+
+ private byte[] outputByte = new byte[4];
+ private final Surrogate.Parser sgp = new Surrogate.Parser();
+
+ protected SimpleEUCEncoder(Charset cs)
+ {
+ super(cs, 3.0f, 4.0f);
+ }
+
+ /**
+ * Returns true if the given character can be converted to the
+ * target character encoding.
+ */
+
+ public boolean canEncode(char ch) {
+ int index;
+ String theChars;
+
+ index = index1[((ch & mask1) >> shift)] + (ch & mask2);
+
+ if (index < 7500)
+ theChars = index2;
+ else
+ if (index < 15000) {
+ index = index - 7500;
+ theChars = index2a;
+ }
+ else
+ if (index < 22500){
+ index = index - 15000;
+ theChars = index2b;
+ }
+ else {
+ index = index - 22500;
+ theChars = index2c;
+ }
+
+ if (theChars.charAt(2*index) != '\u0000' ||
+ theChars.charAt(2*index + 1) != '\u0000')
+ return (true);
+
+ // only return true if input char was unicode null - all others are
+ // undefined
+ return( ch == '\u0000');
+
+ }
+ private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+ char[] sa = src.array();
+ int sp = src.arrayOffset() + src.position();
+ int sl = src.arrayOffset() + src.limit();
+ assert (sp <= sl);
+ sp = (sp <= sl ? sp : sl);
+ byte[] da = dst.array();
+ int dp = dst.arrayOffset() + dst.position();
+ int dl = dst.arrayOffset() + dst.limit();
+ assert (dp <= dl);
+ dp = (dp <= dl ? dp : dl);
+
+ int index;
+ int spaceNeeded;
+ int i;
+
+ try {
+ while (sp < sl) {
+ boolean allZeroes = true;
+ char inputChar = sa[sp];
+ if (Character.isSurrogate(inputChar)) {
+ if (sgp.parse(inputChar, sa, sp, sl) < 0)
+ return sgp.error();
+ return sgp.unmappableResult();
+ }
+
+ if (inputChar >= '\uFFFE')
+ return CoderResult.unmappableForLength(1);
+
+ String theChars;
+ char aChar;
+
+ // We have a valid character, get the bytes for it
+ index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
+
+ if (index < 7500)
+ theChars = index2;
+ else if (index < 15000) {
+ index = index - 7500;
+ theChars = index2a;
+ } else if (index < 22500){
+ index = index - 15000;
+ theChars = index2b;
+ }
+ else {
+ index = index - 22500;
+ theChars = index2c;
+ }
+
+ aChar = theChars.charAt(2*index);
+ outputByte[0] = (byte)((aChar & 0xff00)>>8);
+ outputByte[1] = (byte)(aChar & 0x00ff);
+ aChar = theChars.charAt(2*index + 1);
+ outputByte[2] = (byte)((aChar & 0xff00)>>8);
+ outputByte[3] = (byte)(aChar & 0x00ff);
+
+ for (i = 0; i < outputByte.length; i++) {
+ if (outputByte[i] != 0x00) {
+ allZeroes = false;
+ break;
+ }
+ }
+
+ if (allZeroes && inputChar != '\u0000') {
+ return CoderResult.unmappableForLength(1);
+ }
+
+ int oindex = 0;
+
+ for (spaceNeeded = outputByte.length;
+ spaceNeeded > 1; spaceNeeded--){
+ if (outputByte[oindex++] != 0x00 )
+ break;
+ }
+
+ if (dp + spaceNeeded > dl)
+ return CoderResult.OVERFLOW;
+
+ for (i = outputByte.length - spaceNeeded;
+ i < outputByte.length; i++) {
+ da[dp++] = outputByte[i];
+ }
+ sp++;
+ }
+ return CoderResult.UNDERFLOW;
+ } finally {
+ src.position(sp - src.arrayOffset());
+ dst.position(dp - dst.arrayOffset());
+ }
+ }
+
+ private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+ int index;
+ int spaceNeeded;
+ int i;
+ int mark = src.position();
+ try {
+ while (src.hasRemaining()) {
+ char inputChar = src.get();
+ boolean allZeroes = true;
+ if (Character.isSurrogate(inputChar)) {
+ if (sgp.parse(inputChar, src) < 0)
+ return sgp.error();
+ return sgp.unmappableResult();
+ }
+
+ if (inputChar >= '\uFFFE')
+ return CoderResult.unmappableForLength(1);
+
+ String theChars;
+ char aChar;
+
+ // We have a valid character, get the bytes for it
+ index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
+
+ if (index < 7500)
+ theChars = index2;
+ else if (index < 15000) {
+ index = index - 7500;
+ theChars = index2a;
+ } else if (index < 22500){
+ index = index - 15000;
+ theChars = index2b;
+ }
+ else {
+ index = index - 22500;
+ theChars = index2c;
+ }
+
+ aChar = theChars.charAt(2*index);
+ outputByte[0] = (byte)((aChar & 0xff00)>>8);
+ outputByte[1] = (byte)(aChar & 0x00ff);
+ aChar = theChars.charAt(2*index + 1);
+ outputByte[2] = (byte)((aChar & 0xff00)>>8);
+ outputByte[3] = (byte)(aChar & 0x00ff);
+
+ for (i = 0; i < outputByte.length; i++) {
+ if (outputByte[i] != 0x00) {
+ allZeroes = false;
+ break;
+ }
+ }
+ if (allZeroes && inputChar != '\u0000') {
+ return CoderResult.unmappableForLength(1);
+ }
+
+ int oindex = 0;
+
+ for (spaceNeeded = outputByte.length;
+ spaceNeeded > 1; spaceNeeded--){
+ if (outputByte[oindex++] != 0x00 )
+ break;
+ }
+ if (dst.remaining() < spaceNeeded)
+ return CoderResult.OVERFLOW;
+
+ for (i = outputByte.length - spaceNeeded;
+ i < outputByte.length; i++) {
+ dst.put(outputByte[i]);
+ }
+ mark++;
+ }
+ return CoderResult.UNDERFLOW;
+ } finally {
+ src.position(mark);
+ }
+ }
+
+ protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+ if (true && src.hasArray() && dst.hasArray())
+ return encodeArrayLoop(src, dst);
+ else
+ return encodeBufferLoop(src, dst);
+ }
+
+ public byte encode(char inputChar) {
+ return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
+ (inputChar & mask2));
+ }
+}
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java Fri Dec 07 09:46:53 2018 -0500
@@ -884,8 +884,6 @@
String sig = tree.getSignature();
if (sig.contains("<") || sig.contains(">")) {
env.messages.error(REFERENCE, tree, "dc.type.arg.not.allowed");
- } else if (isArrayType(sig)) {
- env.messages.error(REFERENCE, tree, "dc.array.type.not.allowed");
} else {
Element e = env.trees.getElement(getCurrentPath());
if (e == null)
@@ -975,12 +973,6 @@
return scan(tree.getDescription(), ignore);
}
- private boolean isArrayType(String signature) {
- int brackets = signature.indexOf('[');
- int parens = signature.indexOf('(');
- return brackets >= 0 && (parens < 0 || brackets < parens);
- }
-
private boolean isThrowable(TypeMirror tm) {
switch (tm.getKind()) {
case DECLARED:
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,6 @@
dc.anchor.already.defined = anchor already defined: "{0}"
dc.anchor.value.missing = no value given for anchor
-dc.array.type.not.allowed = array type not allowed here
dc.attr.lacks.value = attribute lacks value
dc.attr.not.number = attribute value is not a number
dc.attr.not.supported.html4 = attribute not supported in HTML4: {0}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Fri Dec 07 09:46:53 2018 -0500
@@ -443,11 +443,7 @@
// we first check if qualifierExpression identifies a type,
// and if not, then we check to see if it identifies a package.
Type t = attr.attribType(ref.qualifierExpression, env);
-
- if (t.getKind() == TypeKind.ARRAY) {
- // cannot refer to an array type
- return null;
- } else if (t.isErroneous()) {
+ if (t.isErroneous()) {
JCCompilationUnit toplevel =
treeMaker.TopLevel(List.nil());
final ModuleSymbol msym = modules.getDefaultModule();
@@ -478,7 +474,11 @@
}
}
} else {
- tsym = t.tsym;
+ Type e = t;
+ // If this is an array type convert to element type
+ while (e instanceof ArrayType)
+ e = ((ArrayType)e).elemtype;
+ tsym = e.tsym;
memberName = (Name) ref.memberName;
}
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/CommandLine.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/CommandLine.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. 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
@@ -27,6 +27,7 @@
import java.io.IOException;
import java.io.Reader;
+import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -125,7 +126,7 @@
}
private static void loadCmdFile(String name, List<String> args) throws IOException {
- try (Reader r = Files.newBufferedReader(Paths.get(name))) {
+ try (Reader r = Files.newBufferedReader(Paths.get(name), Charset.defaultCharset())) {
Tokenizer t = new Tokenizer(r);
String s;
while ((s = t.nextToken()) != null) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java Fri Dec 07 09:46:53 2018 -0500
@@ -1525,9 +1525,11 @@
try {
print("@");
printExpr(tree.annotationType);
- print("(");
- printExprs(tree.args);
- print(")");
+ if (!tree.args.isEmpty()) {
+ print("(");
+ printExprs(tree.args);
+ print(")");
+ }
} catch (IOException e) {
throw new UncheckedIOException(e);
}
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMOps.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMOps.java Fri Dec 07 09:46:53 2018 -0500
@@ -50,13 +50,13 @@
GenCollectForAllocation,
ParallelGCFailedAllocation,
ParallelGCSystemGC,
- CGC_Operation,
CMS_Initial_Mark,
CMS_Final_Remark,
G1CollectFull,
ZOperation,
G1CollectForAllocation,
G1IncCollectionPause,
+ G1Concurrent,
EnableBiasedLocking,
RevokeBias,
BulkRevokeBias,
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Fri Dec 07 09:46:53 2018 -0500
@@ -36,45 +36,55 @@
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
-
+
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
- var zip = new JSZip(data);
- zip.load(data);
- moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
+ JSZip.loadAsync(data).then(function(zip){
+ zip.file("module-search-index.json").async("text").then(function(content){
+ moduleSearchIndex = JSON.parse(content);
+ });
+ });
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
- var zip = new JSZip(data);
- zip.load(data);
- packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
+ JSZip.loadAsync(data).then(function(zip){
+ zip.file("package-search-index.json").async("text").then(function(content){
+ packageSearchIndex = JSON.parse(content);
+ });
+ });
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
- var zip = new JSZip(data);
- zip.load(data);
- typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
+ JSZip.loadAsync(data).then(function(zip){
+ zip.file("type-search-index.json").async("text").then(function(content){
+ typeSearchIndex = JSON.parse(content);
+ });
+ });
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
- var zip = new JSZip(data);
- zip.load(data);
- memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
+ JSZip.loadAsync(data).then(function(zip){
+ zip.file("member-search-index.json").async("text").then(function(content){
+ memberSearchIndex = JSON.parse(content);
+ });
+ });
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
- var zip = new JSZip(data);
- zip.load(data);
- tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
+ JSZip.loadAsync(data).then(function(zip){
+ zip.file("tag-search-index.json").async("text").then(function(content){
+ tagSearchIndex = JSON.parse(content);
+ });
+ });
});
});
if (!moduleSearchIndex) {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/RequestEngine.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/RequestEngine.java Fri Dec 07 09:46:53 2018 -0500
@@ -34,6 +34,8 @@
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
+import jdk.jfr.Event;
+import jdk.jfr.EventType;
public final class RequestEngine {
@@ -60,7 +62,11 @@
private void execute() {
try {
if (accessControllerContext == null) { // native
- jvm.emitEvent(type.getId(), JVM.counterTime(), 0);
+ if (type.isJDK()) {
+ hook.run();
+ } else {
+ jvm.emitEvent(type.getId(), JVM.counterTime(), 0);
+ }
Logger.log(LogTag.JFR_SYSTEM_EVENT, LogLevel.DEBUG, ()-> "Executed periodic hook for " + type.getLogName());
} else {
executeSecure();
@@ -91,11 +97,12 @@
private final static List<RequestHook> entries = new CopyOnWriteArrayList<>();
private static long lastTimeMillis;
- // Insertion takes O(2*n), could be O(1) with HashMap, but
- // thinking is that CopyOnWriteArrayList is faster
- // to iterate over, which will happen more over time.
public static void addHook(AccessControlContext acc, PlatformEventType type, Runnable hook) {
Objects.requireNonNull(acc);
+ addHookInternal(acc, type, hook);
+ }
+
+ private static void addHookInternal(AccessControlContext acc, PlatformEventType type, Runnable hook) {
RequestHook he = new RequestHook(acc, type, hook);
for (RequestHook e : entries) {
if (e.hook == hook) {
@@ -103,10 +110,24 @@
}
}
he.type.setEventHook(true);
+ // Insertion takes O(2*n), could be O(1) with HashMap, but
+ // thinking is that CopyOnWriteArrayList is faster
+ // to iterate over, which will happen more over time.
entries.add(he);
logHook("Added", type);
}
+ public static void addTrustedJDKHook(Class<? extends Event> eventClass, Runnable runnable) {
+ if (eventClass.getClassLoader() != null) {
+ throw new SecurityException("Hook can only be registered for event classes that are loaded by the bootstrap class loader");
+ }
+ if (runnable.getClass().getClassLoader() != null) {
+ throw new SecurityException("Runnable hook class must be loaded by the bootstrap class loader");
+ }
+ EventType eType = MetadataRepository.getInstance().getEventType(eventClass);
+ PlatformEventType pType = PrivateAccess.getInstance().getPlatformEventType(eType);
+ addHookInternal(null, pType, runnable);
+ }
private static void logHook(String action, PlatformEventType type) {
if (type.isJDK() || type.isJVM()) {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java Fri Dec 07 09:46:53 2018 -0500
@@ -29,7 +29,6 @@
import java.util.List;
import jdk.jfr.Event;
-import jdk.jfr.FlightRecorder;
import jdk.jfr.events.ActiveRecordingEvent;
import jdk.jfr.events.ActiveSettingEvent;
import jdk.jfr.events.ErrorThrownEvent;
@@ -50,7 +49,6 @@
import jdk.jfr.internal.Logger;
import jdk.jfr.internal.RequestEngine;
import jdk.jfr.internal.SecuritySupport;
-import jdk.jfr.internal.Utils;
public final class JDKEvents {
@@ -105,7 +103,7 @@
SecuritySupport.registerEvent((Class<? extends Event>) eventClass);
}
initializationTriggered = true;
- FlightRecorder.addPeriodicEvent(ExceptionStatisticsEvent.class, emitExceptionStatistics);
+ RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
}
} catch (Exception e) {
Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Main.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Main.java Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
System.out.println();
System.out.println(" jfr summary recording.jfr");
System.out.println();
- System.out.println(" jfr metadata recoding.jfr");
+ System.out.println(" jfr metadata recording.jfr");
System.out.println();
System.out.println("For more information about available commands, use 'jfr help'");
System.exit(EXIT_OK);
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/Compilation.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/Compilation.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. 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
@@ -216,6 +216,10 @@
} else {
if (printID) {
stream.print(getId());
+ // Print the comp level next to the id as with +PrintCompilation
+ if (nmethod != null && nmethod.getLevel() != 0) {
+ stream.print(" " + nmethod.getLevel());
+ }
}
int bc = isOsr() ? getBCI() : -1;
stream.print(getMethod().decodeFlags(bc) + " " + compiler + " " + getMethod().format(bc));
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/LogParser.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/LogParser.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. 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
@@ -1096,6 +1096,10 @@
id,
parseLong(atts.getValue("address")),
parseLong(atts.getValue("size")));
+ String level = atts.getValue("level");
+ if (level != null) {
+ nm.setLevel(parseLong(level));
+ }
nmethods.put(id, nm);
events.add(nm);
} else if (qname.equals("parse")) {
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/NMethod.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/NMethod.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. 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
@@ -42,6 +42,11 @@
*/
private long size;
+ /**
+ * The nmethod's compilation level.
+ */
+ private long level;
+
NMethod(double s, String i, long a, long sz) {
super(s, i);
address = a;
@@ -68,4 +73,18 @@
public void setSize(long size) {
this.size = size;
}
+
+ /**
+ * @return the level
+ */
+ public long getLevel() {
+ return level;
+ }
+
+ /**
+ * @param level the level to set
+ */
+ public void setLevel(long level) {
+ this.level = level;
+ }
}
--- a/src/utils/LogCompilation/src/test/java/com/sun/hotspot/tools/compiler/TestLogCompilation.java Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/test/java/com/sun/hotspot/tools/compiler/TestLogCompilation.java Fri Dec 07 09:46:53 2018 -0500
@@ -53,7 +53,9 @@
// no file (just prints the help)
{"./src/test/resources/hotspot_pid23756.log"},
// LogCompilation output of running on above file
- {"./src/test/resources/hotspot_pid25109.log"}
+ {"./src/test/resources/hotspot_pid25109.log"},
+ {"./src/test/resources/no_tiered_short.log"},
+ {"./src/test/resources/tiered_short.log"}
};
return Arrays.asList(data);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/utils/LogCompilation/src/test/resources/no_tiered_short.log Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,140 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hotspot_log version='160 1' process='22365' time_ms='1544108271535'>
+<vm_version>
+<name>
+Java HotSpot(TM) 64-Bit Server VM
+</name>
+<release>
+11+28
+</release>
+<info>
+Java HotSpot(TM) 64-Bit Server VM (11+28) for linux-amd64 JRE (11+28), built on Aug 22 2018 18:51:59 by "mach5one" with gcc 7.3.0
+</info>
+</vm_version>
+<vm_arguments>
+<args>
+-XX:-TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation </args>
+<command>
+target/LogCompilation-1.0-SNAPSHOT.jar
+</command>
+<launcher>
+SUN_STANDARD
+</launcher>
+<properties>
+java.vm.specification.name=Java Virtual Machine Specification
+java.vm.version=11+28
+java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+jdk.debug=release
+sun.boot.library.path=/opt/jdk-11/lib
+java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
+java.home=/opt/jdk-11
+java.class.path=target/LogCompilation-1.0-SNAPSHOT.jar
+jdk.boot.class.path.append=
+java.vm.info=mixed mode, aot, sharing
+java.vm.specification.vendor=Oracle Corporation
+java.vm.specification.version=11
+java.vm.vendor=Oracle Corporation
+sun.java.command=target/LogCompilation-1.0-SNAPSHOT.jar
+sun.java.launcher=SUN_STANDARD
+</properties>
+</vm_arguments>
+<tty>
+<writer thread='22366'/>
+<blob name='MethodHandlesAdapterBlob' size='32000'>
+<sect index='1' size='32000' free='31616'/>
+</blob>
+<task_queued compile_id='1' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='423' backedge_count='5000' iicount='423' stamp='0.643' comment='count' hot_count='423'/>
+<writer thread='22376'/>
+<thread_logfile thread='22376' filename='/tmp/hs_c22376_pid22365.log'/>
+<nmethod compile_id='1' compiler='c2' entry='0x00007f0943c06b20' size='928' address='0x00007f0943c06990' relocation_offset='376' insts_offset='400' stub_offset='720' scopes_data_offset='752' scopes_pcs_offset='824' dependencies_offset='904' nul_chk_table_offset='912' metadata_offset='744' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='5000' backedge_count='5017' iicount='855' stamp='0.750'/>
+<writer thread='22366'/>
+<nmethod compile_id='2' compile_kind='c2n' compiler='' entry='0x00007f0943c10620' size='432' address='0x00007f0943c10490' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.938'/>
+<nmethod compile_id='3' compile_kind='c2n' compiler='' entry='0x00007f0943c145a0' size='440' address='0x00007f0943c14410' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.099'/>
+<nmethod compile_id='4' compile_kind='c2n' compiler='' entry='0x00007f0943c14ca0' size='432' address='0x00007f0943c14b10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='1.101'/>
+<nmethod compile_id='5' compile_kind='c2n' compiler='' entry='0x00007f0943c14ea0' size='448' address='0x00007f0943c14d10' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.114'/>
+<nmethod compile_id='6' compile_kind='c2n' compiler='' entry='0x00007f0943c150a0' size='440' address='0x00007f0943c14f10' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.114'/>
+<nmethod compile_id='7' compile_kind='c2n' compiler='' entry='0x00007f0943c16920' size='432' address='0x00007f0943c16790' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.159'/>
+<nmethod compile_id='8' compile_kind='c2n' compiler='' entry='0x00007f0943c16b20' size='448' address='0x00007f0943c16990' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (I)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.160'/>
+<nmethod compile_id='9' compile_kind='c2n' compiler='' entry='0x00007f0943c16d20' size='432' address='0x00007f0943c16b90' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.160'/>
+<tty_done stamp='1.171'/>
+</tty>
+<compilation_log thread='22376'>
+<start_compile_thread name='C2 CompilerThread0' thread='22376' process='22365' stamp='0.650'/>
+<task compile_id='1' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='540' backedge_count='8448' iicount='540' stamp='0.728'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' iicount='540'/>
+<parse method='1082' uses='540.000000' stamp='0.728'>
+<bc code='190' bci='5'/>
+<uncommon_trap bci='5' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='162' bci='13'/>
+<branch target_bci='40' taken='375' not_taken='9914' cnt='10289.000000' prob='0.0364467'/>
+<uncommon_trap bci='13' reason='predicate' action='maybe_recompile' debug_id='0'/>
+<uncommon_trap bci='13' reason='profile_predicate' action='maybe_recompile' debug_id='0'/>
+<uncommon_trap bci='13' reason='loop_limit_check' action='maybe_recompile' debug_id='0'/>
+<bc code='51' bci='19'/>
+<uncommon_trap bci='19' reason='range_check' action='make_not_entrant' debug_id='0' comment='range_check'/>
+<bc code='162' bci='13'/>
+<branch target_bci='40' taken='375' not_taken='9914' cnt='9914.000000' prob='0.0364467'/>
+<parse_done nodes='154' live='148' memory='44576' stamp='0.739'/>
+</parse>
+<loop_tree>
+<loop idx='166' >
+<loop idx='167' >
+</loop>
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='166' >
+<loop idx='284' inner_loop='1' main_loop='284' >
+</loop>
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<regalloc attempts='2' success='1'/>
+<code_cache total_blobs='229' nmethods='1' adapters='131' free_code_cache='49931648'/>
+<task_done success='1' nmsize='344' count='5000' backedge_count='5013' stamp='0.750'/>
+</task>
+</compilation_log>
+<hotspot_log_done stamp='1.172'/>
+</hotspot_log>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/utils/LogCompilation/src/test/resources/tiered_short.log Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,4999 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hotspot_log version='160 1' process='24128' time_ms='1544110011264'>
+<vm_version>
+<name>
+Java HotSpot(TM) 64-Bit Server VM
+</name>
+<release>
+11+28
+</release>
+<info>
+Java HotSpot(TM) 64-Bit Server VM (11+28) for linux-amd64 JRE (11+28), built on Aug 22 2018 18:51:59 by "mach5one" with gcc 7.3.0
+</info>
+</vm_version>
+<vm_arguments>
+<args>
+-XX:+TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation </args>
+<command>
+target/LogCompilation-1.0-SNAPSHOT.jar
+</command>
+<launcher>
+SUN_STANDARD
+</launcher>
+<properties>
+java.vm.specification.name=Java Virtual Machine Specification
+java.vm.version=11+28
+java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+jdk.debug=release
+sun.boot.library.path=/opt/jdk-11/lib
+java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
+java.home=/opt/jdk-11
+java.class.path=target/LogCompilation-1.0-SNAPSHOT.jar
+jdk.boot.class.path.append=
+java.vm.info=mixed mode, aot, sharing
+java.vm.specification.vendor=Oracle Corporation
+java.vm.specification.version=11
+java.vm.vendor=Oracle Corporation
+sun.java.command=target/LogCompilation-1.0-SNAPSHOT.jar
+sun.java.launcher=SUN_STANDARD
+</properties>
+</vm_arguments>
+<tty>
+<writer thread='24129'/>
+<blob name='MethodHandlesAdapterBlob' size='32000'>
+<sect index='1' size='32000' free='31616'/>
+</blob>
+<writer thread='24139'/>
+<thread_logfile thread='24139' filename='/tmp/hs_c24139_pid24128.log'/>
+<writer thread='24140'/>
+<thread_logfile thread='24140' filename='/tmp/hs_c24140_pid24128.log'/>
+<writer thread='24141'/>
+<sweeper state='finished' traversals='0' total_blobs='174' nmethods='0' adapters='120' free_code_cache='250700416' stamp='0.048'/>
+<writer thread='24129'/>
+<task_queued compile_id='1' method='java.lang.Object <init> ()V' bytes='1' count='512' iicount='512' level='3' stamp='0.055' comment='tiered' hot_count='512'/>
+<task_queued compile_id='2' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='128' backedge_count='2529' iicount='128' level='3' stamp='0.055' comment='tiered' hot_count='128'/>
+<task_queued compile_id='3' method='java.lang.String isLatin1 ()Z' bytes='19' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='4' method='java.lang.String hashCode ()I' bytes='49' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='5' method='java.lang.String coder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='6' method='java.lang.Math floorMod (II)I' bytes='10' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='7' method='java.lang.Math floorDiv (II)I' bytes='22' count='384' iicount='384' level='3' stamp='0.057' comment='tiered' hot_count='384'/>
+<task_queued compile_id='8' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='384' backedge_count='140' iicount='384' level='3' stamp='0.057' comment='tiered' hot_count='384'/>
+<task_queued compile_id='9' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='128' iicount='128' level='1' stamp='0.059' comment='tiered' hot_count='128'/>
+<task_queued compile_id='10' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='384' iicount='384' level='3' stamp='0.060' comment='tiered' hot_count='384'/>
+<task_queued compile_id='11' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='384' backedge_count='350' iicount='384' level='3' stamp='0.060' comment='tiered' hot_count='384'/>
+<task_queued compile_id='12' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='384' iicount='384' level='3' stamp='0.061' comment='tiered' hot_count='384'/>
+<task_queued compile_id='13' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='384' iicount='384' level='3' stamp='0.063' comment='tiered' hot_count='384'/>
+<task_queued compile_id='14' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='128' iicount='128' level='1' stamp='0.064' comment='tiered' hot_count='128'/>
+<task_queued compile_id='15' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='128' iicount='128' level='1' stamp='0.065' comment='tiered' hot_count='128'/>
+<task_queued compile_id='16' method='java.lang.String charAt (I)C' bytes='25' count='384' iicount='384' level='3' stamp='0.071' comment='tiered' hot_count='384'/>
+<task_queued compile_id='17' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='384' iicount='384' level='3' stamp='0.071' comment='tiered' hot_count='384'/>
+<task_queued compile_id='18' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='384' iicount='384' level='3' stamp='0.072' comment='tiered' hot_count='384'/>
+<task_queued compile_id='19' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='384' iicount='384' level='3' stamp='0.072' comment='tiered' hot_count='384'/>
+<task_queued compile_id='20' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='512' iicount='512' level='3' stamp='0.072' comment='tiered' hot_count='512'/>
+<task_queued compile_id='21' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='512' iicount='512' level='3' stamp='0.072' comment='tiered' hot_count='512'/>
+<task_queued compile_id='22' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='128' iicount='128' level='1' stamp='0.074' comment='tiered' hot_count='128'/>
+<task_queued compile_id='23' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='128' iicount='128' level='1' stamp='0.074' comment='tiered' hot_count='128'/>
+<task_queued compile_id='24' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='512' backedge_count='137' iicount='512' level='3' stamp='0.075' comment='tiered' hot_count='512'/>
+<task_queued compile_id='25' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='512' iicount='512' level='3' stamp='0.075' comment='tiered' hot_count='512'/>
+<task_queued compile_id='26' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='128' iicount='128' level='1' stamp='0.076' comment='tiered' hot_count='128'/>
+<task_queued compile_id='27' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='512' backedge_count='485' iicount='512' level='3' stamp='0.076' comment='tiered' hot_count='512'/>
+<nmethod compile_id='28' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e61c0' size='1072' address='0x00007fae787e6010' relocation_offset='376' consts_offset='1072' insts_offset='432' method='jdk.internal.misc.Unsafe getObjectVolatile (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='0' count='512' iicount='512' stamp='0.076'/>
+<task_queued compile_id='29' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='30' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='512' backedge_count='8' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='31' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<nmethod compile_id='32' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6640' size='960' address='0x00007fae787e6490' relocation_offset='376' consts_offset='960' insts_offset='432' method='jdk.internal.misc.Unsafe compareAndSetLong (Ljava/lang/Object;JJJ)Z' bytes='0' count='512' iicount='512' stamp='0.077'/>
+<task_queued compile_id='33' method='java.util.concurrent.ConcurrentHashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='34' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='512' iicount='512' level='3' stamp='0.078' comment='tiered' hot_count='512'/>
+<nmethod compile_id='35' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6a40' size='1000' address='0x00007fae787e6890' relocation_offset='376' consts_offset='1000' insts_offset='432' method='jdk.internal.misc.Unsafe compareAndSetObject (Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z' bytes='0' count='640' iicount='640' stamp='0.078'/>
+<task_queued compile_id='36' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='640' iicount='640' level='3' stamp='0.078' comment='tiered' hot_count='640'/>
+<writer thread='24143'/>
+<thread_logfile thread='24143' filename='/tmp/hs_c24143_pid24128.log'/>
+<writer thread='24142'/>
+<thread_logfile thread='24142' filename='/tmp/hs_c24142_pid24128.log'/>
+<writer thread='24144'/>
+<thread_logfile thread='24144' filename='/tmp/hs_c24144_pid24128.log'/>
+<writer thread='24129'/>
+<task_queued compile_id='37' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.081' comment='tiered' hot_count='128'/>
+<task_queued compile_id='38' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='640' iicount='640' level='3' stamp='0.083' comment='tiered' hot_count='640'/>
+<task_queued compile_id='39' method='java.util.AbstractCollection <init> ()V' bytes='5' count='512' iicount='512' level='3' stamp='0.084' comment='tiered' hot_count='512'/>
+<task_queued compile_id='40' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='128' iicount='128' level='1' stamp='0.085' comment='tiered' hot_count='128'/>
+<task_queued compile_id='41' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='42' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='640' backedge_count='23' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='43' method='java.util.HashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='44' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='45' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='46' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='640' backedge_count='18' iicount='640' level='3' stamp='0.086' comment='tiered' hot_count='640'/>
+<task_queued compile_id='47' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='128' iicount='128' level='1' stamp='0.086' comment='tiered' hot_count='128'/>
+<task_queued compile_id='48' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='640' iicount='640' level='3' stamp='0.087' comment='tiered' hot_count='640'/>
+<task_queued compile_id='49' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='128' iicount='128' level='1' stamp='0.087' comment='tiered' hot_count='128'/>
+<nmethod compile_id='50' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6e40' size='960' address='0x00007fae787e6c90' relocation_offset='376' consts_offset='960' insts_offset='432' method='java.lang.Object hashCode ()I' bytes='0' count='640' iicount='640' stamp='0.087'/>
+<task_queued compile_id='51' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='128' iicount='128' level='1' stamp='0.088' comment='tiered' hot_count='128'/>
+<task_queued compile_id='52' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='640' iicount='640' level='3' stamp='0.089' comment='tiered' hot_count='640'/>
+<task_queued compile_id='53' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='128' iicount='128' level='1' stamp='0.091' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='2' compiler='c1' level='2' entry='0x00007fae713851c0' size='1056' address='0x00007fae71385010' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='936' dependencies_offset='1032' nul_chk_table_offset='1040' metadata_offset='864' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='1122' backedge_count='28066' iicount='1122' stamp='0.091'/>
+<writer thread='24143'/>
+<nmethod compile_id='27' compiler='c1' level='3' entry='0x00007fae71385680' size='1856' address='0x00007fae71385490' relocation_offset='376' insts_offset='496' stub_offset='1328' scopes_data_offset='1528' scopes_pcs_offset='1616' dependencies_offset='1824' nul_chk_table_offset='1832' metadata_offset='1512' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='2475' backedge_count='2327' iicount='2475' stamp='0.091'/>
+<writer thread='24142'/>
+<nmethod compile_id='8' compiler='c1' level='3' entry='0x00007fae71385e20' size='2584' address='0x00007fae71385c10' relocation_offset='376' insts_offset='528' stub_offset='1904' scopes_data_offset='2112' scopes_pcs_offset='2288' dependencies_offset='2528' nul_chk_table_offset='2536' metadata_offset='2088' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='2142' backedge_count='836' iicount='2142' stamp='0.092'/>
+<writer thread='24140'/>
+<nmethod compile_id='11' compiler='c1' level='3' entry='0x00007fae71386860' size='1376' address='0x00007fae71386690' relocation_offset='376' insts_offset='464' stub_offset='1008' scopes_data_offset='1160' scopes_pcs_offset='1216' dependencies_offset='1344' nul_chk_table_offset='1352' metadata_offset='1152' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='1378' backedge_count='890' iicount='1378' stamp='0.092'/>
+<nmethod compile_id='1' compiler='c1' level='2' entry='0x00007fae71386dc0' size='856' address='0x00007fae71386c10' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='784' scopes_pcs_offset='800' dependencies_offset='848' metadata_offset='768' method='java.lang.Object <init> ()V' bytes='1' count='6668' iicount='6668' stamp='0.092'/>
+<writer thread='24143'/>
+<nmethod compile_id='24' compiler='c1' level='3' entry='0x00007fae713871a0' size='2616' address='0x00007fae71386f90' relocation_offset='376' insts_offset='528' stub_offset='1936' scopes_data_offset='2144' scopes_pcs_offset='2320' dependencies_offset='2560' nul_chk_table_offset='2568' metadata_offset='2120' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='769' backedge_count='355' iicount='770' stamp='0.092'/>
+<writer thread='24144'/>
+<nmethod compile_id='30' compiler='c1' level='3' entry='0x00007fae71387da0' size='12424' address='0x00007fae71387a10' relocation_offset='376' insts_offset='912' stub_offset='9520' scopes_data_offset='9904' scopes_pcs_offset='11336' dependencies_offset='12056' handler_table_offset='12064' nul_chk_table_offset='12376' oops_offset='9832' metadata_offset='9840' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='918' backedge_count='27' iicount='918' stamp='0.092'/>
+<writer thread='24140'/>
+<nmethod compile_id='20' compiler='c1' level='2' entry='0x00007fae7138acc0' size='880' address='0x00007fae7138ab10' relocation_offset='376' insts_offset='432' stub_offset='656' scopes_data_offset='808' scopes_pcs_offset='824' dependencies_offset='872' metadata_offset='800' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='5951' iicount='5951' stamp='0.092'/>
+<writer thread='24143'/>
+<nmethod compile_id='21' compiler='c1' level='3' entry='0x00007fae7138b040' size='1048' address='0x00007fae7138ae90' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='936' dependencies_offset='1016' nul_chk_table_offset='1024' metadata_offset='896' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5286' iicount='5286' stamp='0.093'/>
+<writer thread='24144'/>
+<nmethod compile_id='4' compiler='c1' level='2' entry='0x00007fae7138b4e0' size='1136' address='0x00007fae7138b310' relocation_offset='376' insts_offset='464' stub_offset='784' scopes_data_offset='976' scopes_pcs_offset='1016' dependencies_offset='1112' nul_chk_table_offset='1120' metadata_offset='968' method='java.lang.String hashCode ()I' bytes='49' count='5972' iicount='5972' stamp='0.093'/>
+<writer thread='24142'/>
+<nmethod compile_id='42' compiler='c1' level='3' entry='0x00007fae7138ba60' size='6696' address='0x00007fae7138b790' relocation_offset='376' insts_offset='720' stub_offset='5232' scopes_data_offset='5552' scopes_pcs_offset='6088' dependencies_offset='6584' nul_chk_table_offset='6592' metadata_offset='5544' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='1577' backedge_count='76' iicount='1577' stamp='0.093'/>
+<writer thread='24143'/>
+<nmethod compile_id='38' compiler='c1' level='3' entry='0x00007fae7138d3e0' size='1216' address='0x00007fae7138d210' relocation_offset='376' insts_offset='464' stub_offset='912' scopes_data_offset='1088' scopes_pcs_offset='1112' dependencies_offset='1192' nul_chk_table_offset='1200' metadata_offset='1080' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='2510' iicount='2510' stamp='0.093'/>
+<writer thread='24129'/>
+<task_queued compile_id='54' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='128' iicount='128' level='1' stamp='0.093' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='46' compiler='c1' level='3' entry='0x00007fae7138d940' size='3664' address='0x00007fae7138d710' relocation_offset='376' insts_offset='560' stub_offset='2960' scopes_data_offset='3168' scopes_pcs_offset='3344' dependencies_offset='3600' nul_chk_table_offset='3608' metadata_offset='3160' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='927' backedge_count='21' iicount='927' stamp='0.093'/>
+<writer thread='24143'/>
+<nmethod compile_id='45' compiler='c1' level='3' entry='0x00007fae7138e740' size='848' address='0x00007fae7138e590' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='792' dependencies_offset='840' metadata_offset='768' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='1607' iicount='1607' stamp='0.093'/>
+<writer thread='24144'/>
+<nmethod compile_id='43' compiler='c1' level='3' entry='0x00007fae7138eae0' size='1352' address='0x00007fae7138e910' relocation_offset='376' insts_offset='464' stub_offset='1072' scopes_data_offset='1240' scopes_pcs_offset='1280' dependencies_offset='1344' metadata_offset='1216' method='java.util.HashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='1630' iicount='1630' stamp='0.093'/>
+<writer thread='24142'/>
+<nmethod compile_id='44' compiler='c1' level='3' entry='0x00007fae7138f060' size='1640' address='0x00007fae7138ee90' relocation_offset='376' insts_offset='464' stub_offset='1264' scopes_data_offset='1432' scopes_pcs_offset='1536' dependencies_offset='1632' metadata_offset='1408' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='1689' iicount='1690' stamp='0.094'/>
+<writer thread='24140'/>
+<nmethod compile_id='5' compiler='c1' level='3' entry='0x00007fae7138f6c0' size='912' address='0x00007fae7138f510' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.String coder ()B' bytes='15' count='3726' iicount='3726' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='55' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5632' iicount='5632' stamp='0.094' comment='tiered' hot_count='5632'/>
+<writer thread='24143'/>
+<nmethod compile_id='3' compiler='c1' level='3' entry='0x00007fae7138fac0' size='976' address='0x00007fae7138f910' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='920' dependencies_offset='968' metadata_offset='896' method='java.lang.String isLatin1 ()Z' bytes='19' count='3229' iicount='3229' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='56' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='512' iicount='512' level='3' stamp='0.094' comment='tiered' hot_count='512'/>
+<writer thread='24144'/>
+<nmethod compile_id='6' compiler='c1' level='3' entry='0x00007fae7138fec0' size='1208' address='0x00007fae7138fd10' relocation_offset='376' insts_offset='432' stub_offset='880' scopes_data_offset='1040' scopes_pcs_offset='1104' dependencies_offset='1184' nul_chk_table_offset='1192' metadata_offset='1024' method='java.lang.Math floorMod (II)I' bytes='10' count='3200' iicount='3200' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='57' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='512' iicount='512' level='3' stamp='0.094' comment='tiered' hot_count='512'/>
+<nmethod compile_id='58' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e7240' size='944' address='0x00007fae787e7090' relocation_offset='376' consts_offset='944' insts_offset='432' method='java.lang.Module addExportsToAllUnnamed0 (Ljava/lang/Module;Ljava/lang/String;)V' bytes='0' count='512' iicount='512' stamp='0.094'/>
+<writer thread='24142'/>
+<nmethod compile_id='7' compiler='c1' level='3' entry='0x00007fae713903c0' size='1024' address='0x00007fae71390210' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='936' dependencies_offset='1000' nul_chk_table_offset='1008' metadata_offset='896' method='java.lang.Math floorDiv (II)I' bytes='22' count='3200' iicount='3200' stamp='0.094'/>
+<writer thread='24143'/>
+<nmethod compile_id='52' compiler='c1' level='3' entry='0x00007fae71390840' size='944' address='0x00007fae71390690' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='888' dependencies_offset='936' metadata_offset='864' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='823' iicount='823' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='59' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='640' iicount='640' level='3' stamp='0.094' comment='tiered' hot_count='640'/>
+<writer thread='24142'/>
+<nmethod compile_id='15' compiler='c1' level='1' entry='0x00007fae787e7640' size='752' address='0x00007fae787e7490' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='1130' iicount='1130' stamp='0.094'/>
+<writer thread='24144'/>
+<nmethod compile_id='41' compiler='c1' level='3' entry='0x00007fae71390c60' size='1584' address='0x00007fae71390a90' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1336' scopes_pcs_offset='1448' dependencies_offset='1560' nul_chk_table_offset='1568' metadata_offset='1320' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='1202' iicount='1202' stamp='0.094'/>
+<writer thread='24143'/>
+<nmethod compile_id='13' compiler='c1' level='3' entry='0x00007fae713912e0' size='1192' address='0x00007fae71391110' relocation_offset='376' insts_offset='464' stub_offset='880' scopes_data_offset='1056' scopes_pcs_offset='1088' dependencies_offset='1184' metadata_offset='1048' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='2512' iicount='2512' stamp='0.094'/>
+<writer thread='24140'/>
+<nmethod compile_id='10' compiler='c1' level='3' entry='0x00007fae71391820' size='2560' address='0x00007fae71391610' relocation_offset='376' insts_offset='528' stub_offset='2064' scopes_data_offset='2272' scopes_pcs_offset='2376' dependencies_offset='2536' nul_chk_table_offset='2544' metadata_offset='2248' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='2050' iicount='2050' stamp='0.094'/>
+<writer thread='24144'/>
+<nmethod compile_id='14' compiler='c1' level='1' entry='0x00007fae787e7940' size='752' address='0x00007fae787e7790' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='839' iicount='839' stamp='0.095'/>
+<writer thread='24142'/>
+<nmethod compile_id='48' compiler='c1' level='3' entry='0x00007fae71392280' size='1696' address='0x00007fae71392090' relocation_offset='376' insts_offset='496' stub_offset='1232' scopes_data_offset='1432' scopes_pcs_offset='1536' dependencies_offset='1664' nul_chk_table_offset='1672' metadata_offset='1416' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='823' iicount='823' stamp='0.095'/>
+<writer thread='24144'/>
+<nmethod compile_id='26' compiler='c1' level='1' entry='0x00007fae787e7c40' size='752' address='0x00007fae787e7a90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='625' iicount='625' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='56' compiler='c1' level='3' entry='0x00007fae713929a0' size='2328' address='0x00007fae71392790' relocation_offset='376' insts_offset='528' stub_offset='1744' scopes_data_offset='1984' scopes_pcs_offset='2056' dependencies_offset='2280' nul_chk_table_offset='2288' metadata_offset='1976' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='582' iicount='582' stamp='0.095'/>
+<writer thread='24140'/>
+<nmethod compile_id='57' compiler='c1' level='3' entry='0x00007fae713932e0' size='1584' address='0x00007fae71393110' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1336' scopes_pcs_offset='1448' dependencies_offset='1560' nul_chk_table_offset='1568' metadata_offset='1320' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='582' iicount='582' stamp='0.095'/>
+<writer thread='24139'/>
+<nmethod compile_id='55' compiler='c2' level='4' entry='0x00007fae787e7f20' size='680' address='0x00007fae787e7d90' relocation_offset='376' insts_offset='400' stub_offset='528' scopes_data_offset='560' scopes_pcs_offset='584' dependencies_offset='648' nul_chk_table_offset='656' metadata_offset='552' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5774' iicount='5774' stamp='0.095'/>
+<make_not_entrant thread='24139' compile_id='21' compiler='c1' level='3' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='40' compiler='c1' level='1' entry='0x00007fae787e8240' size='752' address='0x00007fae787e8090' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='354' iicount='354' stamp='0.095'/>
+<writer thread='24144'/>
+<nmethod compile_id='25' compiler='c1' level='3' entry='0x00007fae71393960' size='1344' address='0x00007fae71393790' relocation_offset='376' insts_offset='464' stub_offset='1040' scopes_data_offset='1216' scopes_pcs_offset='1240' dependencies_offset='1320' nul_chk_table_offset='1328' metadata_offset='1208' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='874' iicount='874' stamp='0.095'/>
+<writer thread='24140'/>
+<nmethod compile_id='12' compiler='c1' level='3' entry='0x00007fae71393ec0' size='840' address='0x00007fae71393d10' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='784' dependencies_offset='832' metadata_offset='768' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='592' iicount='592' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='37' compiler='c1' level='1' entry='0x00007fae787e8540' size='752' address='0x00007fae787e8390' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='431' iicount='431' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='47' compiler='c1' level='1' entry='0x00007fae787e8840' size='752' address='0x00007fae787e8690' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='229' iicount='229' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='33' compiler='c1' level='3' entry='0x00007fae71394240' size='1224' address='0x00007fae71394090' relocation_offset='376' insts_offset='432' stub_offset='944' scopes_data_offset='1112' scopes_pcs_offset='1152' dependencies_offset='1216' metadata_offset='1088' method='java.util.concurrent.ConcurrentHashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='921' iicount='921' stamp='0.096'/>
+<writer thread='24143'/>
+<nmethod compile_id='34' compiler='c1' level='3' entry='0x00007fae71394740' size='944' address='0x00007fae71394590' relocation_offset='376' insts_offset='432' stub_offset='656' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='936' metadata_offset='824' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='858' iicount='858' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='36' compiler='c1' level='3' entry='0x00007fae71394b40' size='984' address='0x00007fae71394990' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='928' dependencies_offset='976' metadata_offset='896' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='776' iicount='776' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='22' compiler='c1' level='1' entry='0x00007fae787e8b40' size='752' address='0x00007fae787e8990' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='372' iicount='372' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='19' compiler='c1' level='3' entry='0x00007fae71394f40' size='952' address='0x00007fae71394d90' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='896' dependencies_offset='944' metadata_offset='864' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='1499' iicount='1499' stamp='0.096'/>
+<writer thread='24143'/>
+<nmethod compile_id='18' compiler='c1' level='3' entry='0x00007fae71395360' size='1440' address='0x00007fae71395190' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1304' scopes_pcs_offset='1352' dependencies_offset='1432' oops_offset='1280' metadata_offset='1288' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='1499' iicount='1499' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='23' compiler='c1' level='1' entry='0x00007fae787e8e40' size='752' address='0x00007fae787e8c90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='312' iicount='312' stamp='0.096'/>
+<writer thread='24142'/>
+<nmethod compile_id='31' compiler='c1' level='3' entry='0x00007fae713959e0' size='3792' address='0x00007fae71395790' relocation_offset='376' insts_offset='592' stub_offset='2864' scopes_data_offset='3152' scopes_pcs_offset='3480' dependencies_offset='3752' nul_chk_table_offset='3760' metadata_offset='3128' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='914' backedge_count='4' iicount='914' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='29' compiler='c1' level='3' entry='0x00007fae71396840' size='848' address='0x00007fae71396690' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='792' dependencies_offset='840' metadata_offset='768' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='1037' iicount='1037' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='49' compiler='c1' level='1' entry='0x00007fae787e9140' size='752' address='0x00007fae787e8f90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='180' iicount='180' stamp='0.097'/>
+<writer thread='24140'/>
+<nmethod compile_id='59' compiler='c1' level='3' entry='0x00007fae71396be0' size='1576' address='0x00007fae71396a10' relocation_offset='376' insts_offset='464' stub_offset='1200' scopes_data_offset='1392' scopes_pcs_offset='1432' dependencies_offset='1544' nul_chk_table_offset='1552' metadata_offset='1384' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='642' iicount='642' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='54' compiler='c1' level='1' entry='0x00007fae787e9440' size='752' address='0x00007fae787e9290' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='142' iicount='142' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='53' compiler='c1' level='1' entry='0x00007fae787e9740' size='752' address='0x00007fae787e9590' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='180' iicount='180' stamp='0.097'/>
+<writer thread='24142'/>
+<nmethod compile_id='39' compiler='c1' level='3' entry='0x00007fae71397240' size='992' address='0x00007fae71397090' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='888' scopes_pcs_offset='920' dependencies_offset='984' metadata_offset='864' method='java.util.AbstractCollection <init> ()V' bytes='5' count='753' iicount='753' stamp='0.097'/>
+<writer thread='24140'/>
+<nmethod compile_id='9' compiler='c1' level='1' entry='0x00007fae787e9a40' size='752' address='0x00007fae787e9890' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='202' iicount='202' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='51' compiler='c1' level='1' entry='0x00007fae787e9d40' size='752' address='0x00007fae787e9b90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='145' iicount='145' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='17' compiler='c1' level='3' entry='0x00007fae71397660' size='1240' address='0x00007fae71397490' relocation_offset='376' insts_offset='464' stub_offset='880' scopes_data_offset='1056' scopes_pcs_offset='1104' dependencies_offset='1216' nul_chk_table_offset='1224' metadata_offset='1048' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='408' iicount='408' stamp='0.097'/>
+<writer thread='24129'/>
+<task_queued compile_id='60' method='java.lang.String length ()I' bytes='11' count='384' iicount='384' level='3' stamp='0.097' comment='tiered' hot_count='384'/>
+<writer thread='24142'/>
+<nmethod compile_id='16' compiler='c1' level='3' entry='0x00007fae71397b80' size='1840' address='0x00007fae71397990' relocation_offset='376' insts_offset='496' stub_offset='1360' scopes_data_offset='1568' scopes_pcs_offset='1656' dependencies_offset='1816' nul_chk_table_offset='1824' metadata_offset='1544' method='java.lang.String charAt (I)C' bytes='25' count='430' iicount='430' stamp='0.098'/>
+<writer thread='24143'/>
+<nmethod compile_id='60' compiler='c1' level='3' entry='0x00007fae713982c0' size='1088' address='0x00007fae71398110' relocation_offset='376' insts_offset='432' stub_offset='784' scopes_data_offset='944' scopes_pcs_offset='984' dependencies_offset='1064' nul_chk_table_offset='1072' metadata_offset='928' method='java.lang.String length ()I' bytes='11' count='422' iicount='422' stamp='0.098'/>
+<writer thread='24129'/>
+<task_queued compile_id='61' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2048' iicount='186' level='3' stamp='0.098' comment='tiered' hot_count='186'/>
+<writer thread='24143'/>
+<nmethod compile_id='61' compiler='c1' level='3' entry='0x00007fae71398760' size='1760' address='0x00007fae71398590' relocation_offset='376' insts_offset='464' stub_offset='1360' scopes_data_offset='1520' scopes_pcs_offset='1608' dependencies_offset='1736' nul_chk_table_offset='1744' metadata_offset='1504' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2065' iicount='186' stamp='0.098'/>
+<writer thread='24129'/>
+<task_queued compile_id='62' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='256' iicount='256' level='3' stamp='0.120' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='62' compiler='c1' level='3' entry='0x00007fae71398e40' size='1016' address='0x00007fae71398c90' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='984' nul_chk_table_offset='992' metadata_offset='832' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='257' iicount='257' stamp='0.120'/>
+<writer thread='24129'/>
+<task_queued compile_id='63' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' level='3' stamp='0.121' comment='tiered' hot_count='512'/>
+<writer thread='24144'/>
+<nmethod compile_id='63' compiler='c1' level='3' entry='0x00007fae71399300' size='2032' address='0x00007fae71399110' relocation_offset='376' insts_offset='496' stub_offset='1520' scopes_data_offset='1736' scopes_pcs_offset='1856' dependencies_offset='2000' nul_chk_table_offset='2008' oops_offset='1704' metadata_offset='1712' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' stamp='0.121'/>
+<writer thread='24129'/>
+<nmethod compile_id='64' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea040' size='960' address='0x00007fae787e9e90' relocation_offset='376' consts_offset='960' insts_offset='432' method='java.lang.System arraycopy (Ljava/lang/Object;ILjava/lang/Object;II)V' bytes='0' count='512' iicount='512' stamp='0.123'/>
+<nmethod compile_id='65' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea420' size='432' address='0x00007fae787ea290' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.124'/>
+<task_queued compile_id='66' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' level='3' stamp='0.125' comment='tiered' hot_count='256'/>
+<task_queued compile_id='67' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' level='3' stamp='0.125' comment='tiered' hot_count='384'/>
+<writer thread='24142'/>
+<nmethod compile_id='67' compiler='c1' level='3' entry='0x00007fae71399ac0' size='912' address='0x00007fae71399910' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' stamp='0.125'/>
+<writer thread='24143'/>
+<nmethod compile_id='66' compiler='c1' level='3' entry='0x00007fae71399f00' size='2072' address='0x00007fae71399d10' relocation_offset='376' insts_offset='496' stub_offset='1552' scopes_data_offset='1760' scopes_pcs_offset='1904' dependencies_offset='2048' nul_chk_table_offset='2056' metadata_offset='1736' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' stamp='0.126'/>
+<writer thread='24129'/>
+<task_queued compile_id='68' method='java.util.AbstractMap <init> ()V' bytes='5' count='384' iicount='384' level='3' stamp='0.127' comment='tiered' hot_count='384'/>
+<writer thread='24140'/>
+<nmethod compile_id='68' compiler='c1' level='3' entry='0x00007fae7139a740' size='992' address='0x00007fae7139a590' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='888' scopes_pcs_offset='920' dependencies_offset='984' metadata_offset='864' method='java.util.AbstractMap <init> ()V' bytes='5' count='384' iicount='384' stamp='0.127'/>
+<writer thread='24129'/>
+<task_queued compile_id='69' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='446' iicount='446' level='3' stamp='0.128' comment='tiered' hot_count='446'/>
+<writer thread='24144'/>
+<nmethod compile_id='69' compiler='c1' level='3' entry='0x00007fae7139ab40' size='912' address='0x00007fae7139a990' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='469' iicount='470' stamp='0.128'/>
+<writer thread='24129'/>
+<task_queued compile_id='70' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='256' iicount='256' level='3' stamp='0.128' comment='tiered' hot_count='256'/>
+<writer thread='24142'/>
+<nmethod compile_id='70' compiler='c1' level='3' entry='0x00007fae7139afa0' size='2928' address='0x00007fae7139ad90' relocation_offset='376' insts_offset='528' stub_offset='2320' scopes_data_offset='2472' scopes_pcs_offset='2528' dependencies_offset='2864' nul_chk_table_offset='2872' metadata_offset='2464' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='267' iicount='267' stamp='0.128'/>
+<writer thread='24129'/>
+<task_queued compile_id='71' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='256' iicount='256' level='3' stamp='0.130' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='71' compiler='c1' level='3' entry='0x00007fae7139bae0' size='1136' address='0x00007fae7139b910' relocation_offset='376' insts_offset='464' stub_offset='816' scopes_data_offset='992' scopes_pcs_offset='1032' dependencies_offset='1128' metadata_offset='984' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='338' iicount='338' stamp='0.130'/>
+<writer thread='24129'/>
+<task_queued compile_id='72' method='java.lang.String indexOf (II)I' bytes='29' count='256' iicount='256' level='3' stamp='0.132' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='72' compiler='c1' level='3' entry='0x00007fae7139bf60' size='1368' address='0x00007fae7139bd90' relocation_offset='376' insts_offset='464' stub_offset='1008' scopes_data_offset='1208' scopes_pcs_offset='1264' dependencies_offset='1360' metadata_offset='1192' method='java.lang.String indexOf (II)I' bytes='29' count='265' iicount='265' stamp='0.133'/>
+<writer thread='24129'/>
+<task_queued compile_id='73' method='java.lang.String indexOf (I)I' bytes='7' count='256' iicount='256' level='3' stamp='0.133' comment='tiered' hot_count='256'/>
+<task_queued compile_id='74' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='256' iicount='256' level='3' stamp='0.133' comment='tiered' hot_count='256'/>
+<writer thread='24144'/>
+<nmethod compile_id='73' compiler='c1' level='3' entry='0x00007fae7139c500' size='1544' address='0x00007fae7139c310' relocation_offset='376' insts_offset='496' stub_offset='1136' scopes_data_offset='1344' scopes_pcs_offset='1424' dependencies_offset='1536' metadata_offset='1320' method='java.lang.String indexOf (I)I' bytes='7' count='263' iicount='263' stamp='0.133'/>
+<writer thread='24142'/>
+<nmethod compile_id='74' compiler='c1' level='3' entry='0x00007fae7139cb40' size='1000' address='0x00007fae7139c990' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='968' nul_chk_table_offset='976' metadata_offset='832' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='261' iicount='261' stamp='0.133'/>
+<writer thread='24129'/>
+<task_queued compile_id='75' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='256' iicount='256' level='3' stamp='0.134' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='75' compiler='c1' level='3' entry='0x00007fae7139cf40' size='840' address='0x00007fae7139cd90' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='784' dependencies_offset='832' metadata_offset='768' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='257' iicount='257' stamp='0.135'/>
+<writer thread='24129'/>
+<task_queued compile_id='76' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='113' backedge_count='2048' iicount='113' level='3' stamp='0.135' comment='tiered' hot_count='113'/>
+<writer thread='24140'/>
+<nmethod compile_id='76' compiler='c1' level='3' entry='0x00007fae7139d2e0' size='1792' address='0x00007fae7139d110' relocation_offset='376' insts_offset='464' stub_offset='1360' scopes_data_offset='1528' scopes_pcs_offset='1624' dependencies_offset='1768' nul_chk_table_offset='1776' metadata_offset='1504' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='118' backedge_count='2314' iicount='118' stamp='0.136'/>
+<writer thread='24129'/>
+<task_queued compile_id='77' method='java.lang.Object <init> ()V' bytes='1' count='8585' iicount='8585' level='1' stamp='0.137' comment='tiered' hot_count='8585'/>
+<writer thread='24144'/>
+<nmethod compile_id='77' compiler='c1' level='1' entry='0x00007fae787ea640' size='760' address='0x00007fae787ea490' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='712' scopes_pcs_offset='720' dependencies_offset='752' metadata_offset='704' method='java.lang.Object <init> ()V' bytes='1' count='8586' iicount='8586' stamp='0.137'/>
+<make_not_entrant thread='24144' compile_id='1' compiler='c1' level='2' stamp='0.137'/>
+<writer thread='24129'/>
+<nmethod compile_id='78' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea9a0' size='440' address='0x00007fae787ea810' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.139'/>
+<task_queued compile_id='79' method='java.lang.Enum ordinal ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.141' comment='tiered' hot_count='128'/>
+<writer thread='24142'/>
+<nmethod compile_id='79' compiler='c1' level='1' entry='0x00007fae787eabc0' size='752' address='0x00007fae787eaa10' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Enum ordinal ()I' bytes='5' count='135' iicount='135' stamp='0.142'/>
+<writer thread='24129'/>
+<nmethod compile_id='80' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eaea0' size='432' address='0x00007fae787ead10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.142'/>
+<task_queued compile_id='81' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='256' backedge_count='5' iicount='256' level='3' stamp='0.143' comment='tiered' hot_count='256'/>
+<nmethod compile_id='82' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb0a0' size='448' address='0x00007fae787eaf10' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.143'/>
+<nmethod compile_id='83' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb2a0' size='440' address='0x00007fae787eb110' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.143'/>
+<writer thread='24143'/>
+<nmethod compile_id='81' compiler='c1' level='3' entry='0x00007fae7139db00' size='4944' address='0x00007fae7139d890' relocation_offset='376' insts_offset='624' stub_offset='3888' scopes_data_offset='4144' scopes_pcs_offset='4512' dependencies_offset='4880' nul_chk_table_offset='4888' oops_offset='4104' metadata_offset='4112' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='265' backedge_count='5' iicount='265' stamp='0.144'/>
+<writer thread='24129'/>
+<task_queued compile_id='84' method='java.lang.String <init> ([BB)V' bytes='15' count='256' iicount='256' level='3' stamp='0.147' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='84' compiler='c1' level='3' entry='0x00007fae7139edc0' size='1080' address='0x00007fae7139ec10' relocation_offset='376' insts_offset='432' stub_offset='816' scopes_data_offset='976' scopes_pcs_offset='1008' dependencies_offset='1072' metadata_offset='960' method='java.lang.String <init> ([BB)V' bytes='15' count='257' iicount='257' stamp='0.147'/>
+<writer thread='24129'/>
+<task_queued compile_id='85' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='128' iicount='128' level='1' stamp='0.148' comment='tiered' hot_count='128'/>
+<nmethod compile_id='86' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb4a0' size='432' address='0x00007fae787eb310' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<writer thread='24144'/>
+<nmethod compile_id='85' compiler='c1' level='1' entry='0x00007fae787eb6c0' size='752' address='0x00007fae787eb510' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='132' iicount='132' stamp='0.148'/>
+<writer thread='24129'/>
+<nmethod compile_id='87' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb9a0' size='448' address='0x00007fae787eb810' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (I)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<task_queued compile_id='88' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.148' comment='tiered' hot_count='128'/>
+<nmethod compile_id='89' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ebba0' size='432' address='0x00007fae787eba10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<nmethod compile_id='90' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ebdc0' size='928' address='0x00007fae787ebc10' relocation_offset='376' consts_offset='928' insts_offset='432' method='java.lang.Class isPrimitive ()Z' bytes='0' count='256' iicount='256' stamp='0.148'/>
+<writer thread='24142'/>
+<nmethod compile_id='88' compiler='c1' level='1' entry='0x00007fae787ec1c0' size='752' address='0x00007fae787ec010' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='137' iicount='137' stamp='0.148'/>
+<writer thread='24129'/>
+<task_queued compile_id='91' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='92' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='93' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='94' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='95' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='91' compiler='c1' level='3' entry='0x00007fae7139f240' size='968' address='0x00007fae7139f090' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='864' scopes_pcs_offset='896' dependencies_offset='960' metadata_offset='856' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' stamp='0.150'/>
+<writer thread='24142'/>
+<nmethod compile_id='94' compiler='c1' level='3' entry='0x00007fae7139f640' size='912' address='0x00007fae7139f490' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24144'/>
+<nmethod compile_id='93' compiler='c1' level='3' entry='0x00007fae7139fa80' size='1616' address='0x00007fae7139f890' relocation_offset='376' insts_offset='496' stub_offset='1168' scopes_data_offset='1376' scopes_pcs_offset='1464' dependencies_offset='1592' nul_chk_table_offset='1600' metadata_offset='1352' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24143'/>
+<nmethod compile_id='95' compiler='c1' level='3' entry='0x00007fae713a0100' size='1696' address='0x00007fae7139ff10' relocation_offset='376' insts_offset='496' stub_offset='1200' scopes_data_offset='1408' scopes_pcs_offset='1520' dependencies_offset='1664' nul_chk_table_offset='1672' metadata_offset='1384' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24129'/>
+<task_queued compile_id='96' method='java.nio.Buffer position ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.151' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='92' compiler='c1' level='3' entry='0x00007fae713a0840' size='2456' address='0x00007fae713a0610' relocation_offset='376' insts_offset='560' stub_offset='1744' scopes_data_offset='2000' scopes_pcs_offset='2200' dependencies_offset='2424' nul_chk_table_offset='2432' metadata_offset='1960' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24143'/>
+<nmethod compile_id='96' compiler='c1' level='1' entry='0x00007fae787ec4c0' size='752' address='0x00007fae787ec310' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.nio.Buffer position ()I' bytes='5' count='139' iicount='139' stamp='0.151'/>
+<tty_done stamp='0.153'/>
+</tty>
+<compilation_log thread='24144'>
+<start_compile_thread name='C1 CompilerThread3' thread='24144' process='24128' stamp='0.080'/>
+<task compile_id='30' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='886' backedge_count='21' iicount='886' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.081'>
+<phase_done name='setup' stamp='0.081'/>
+</phase>
+<phase name='buildIR' stamp='0.081'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='putVal' return='969' arguments='969 969 956' flags='16' bytes='432' iicount='886'/>
+<parse method='1082' stamp='0.081'>
+<phase name='parse_hir' stamp='0.081'>
+<bc code='182' bci='17'/>
+<type id='962' name='int'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' iicount='289'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='20'/>
+<method id='1085' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' iicount='945'/>
+<call method='1085' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='184' bci='69'/>
+<klass id='1087' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1088' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1089' holder='1081' name='tabAt' return='1087' arguments='1088 962' flags='24' bytes='22' iicount='1361'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1094' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1361'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<method id='1096' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='183' bci='91'/>
+<type id='964' name='void'/>
+<method id='1097' holder='1087' name='<init>' return='964' arguments='962 969 969' flags='0' bytes='20' iicount='886'/>
+<call method='1097' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1097'>
+<bc code='183' bci='1'/>
+<method id='1099' holder='969' name='<init>' return='964' flags='1' bytes='1' iicount='4064'/>
+<call method='1099' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1099'>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='184' bci='94'/>
+<method id='1101' holder='1081' name='casTabAt' return='956' arguments='1088 962 1087 1087' flags='24' bytes='21' iicount='746'/>
+<call method='1101' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1101'>
+<bc code='182' bci='17'/>
+<method id='1103' holder='1040' name='compareAndSetObject' return='956' arguments='969 963 969 969' flags='273' bytes='0' compile_id='35' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1103' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='120'/>
+<method id='1104' holder='1081' name='helpTransfer' return='1088' arguments='1088 1087' flags='16' bytes='130' iicount='1'/>
+<call method='1104' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='159'/>
+<method id='1106' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='1'/>
+<call method='1106' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='192'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='242'/>
+<call method='1106' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='183' bci='293'/>
+<call method='1097' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1097'>
+<bc code='183' bci='1'/>
+<call method='1099' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1099'>
+<parse_done stamp='0.082'/>
+</parse>
+<parse_done stamp='0.082'/>
+</parse>
+<bc code='182' bci='331'/>
+<klass id='1108' name='java.util.concurrent.ConcurrentHashMap$TreeNode' unloaded='1'/>
+<klass id='1107' name='java.util.concurrent.ConcurrentHashMap$TreeBin' unloaded='1'/>
+<method id='1109' holder='1107' name='putTreeVal' return='1108' arguments='962 969 969' unloaded='1'/>
+<call method='1109' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='183' bci='374'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1111' name='java.lang.IllegalStateException' unloaded='1'/>
+<method id='1113' holder='1111' name='<init>' return='964' arguments='970' unloaded='1'/>
+<call method='1113' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='409'/>
+<method id='1114' holder='1081' name='treeifyBin' return='964' arguments='1088 962' flags='18' bytes='164' iicount='1'/>
+<call method='1114' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='427'/>
+<method id='1116' holder='1081' name='addCount' return='964' arguments='963 962' flags='18' bytes='289' iicount='882'/>
+<call method='1116' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='49'/>
+<method id='1118' holder='1081' name='initTable' return='1088' flags='18' bytes='112' iicount='5'/>
+<call method='1118' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='183' bci='12'/>
+<klass id='1077' name='java.lang.NullPointerException' flags='1'/>
+<method id='1120' holder='1077' name='<init>' return='964' flags='1' bytes='5' iicount='1'/>
+<call method='1120' instr='invokespecial'/>
+<inline_fail reason='don't inline Throwable constructors'/>
+<phase_done name='parse_hir' stamp='0.082'/>
+</phase>
+<parse_done stamp='0.082'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.082'>
+<phase_done name='optimize_blocks' stamp='0.082'/>
+</phase>
+<phase name='gvn' stamp='0.082'>
+<phase_done name='gvn' stamp='0.082'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.082'>
+<phase_done name='rangeCheckElimination' stamp='0.082'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.082'>
+<phase_done name='optimize_null_checks' stamp='0.082'/>
+</phase>
+<phase_done name='buildIR' stamp='0.082'/>
+</phase>
+<phase name='emit_lir' stamp='0.082'>
+<phase name='lirGeneration' stamp='0.082'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='285' nmethods='11' adapters='140' free_code_cache='248900352'/>
+<task_done success='1' nmsize='8920' count='918' backedge_count='27' inlined_bytes='131' stamp='0.092'/>
+</task>
+<task compile_id='4' method='java.lang.String hashCode ()I' bytes='49' count='5821' iicount='5822' level='2' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='hashCode' return='962' flags='1' bytes='49' iicount='5825'/>
+<parse method='1081' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='19'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' iicount='3173'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.093'/>
+</parse>
+<bc code='184' bci='29'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' compile_id='2' compiler='c1' level='2' iicount='1122'/>
+<call method='1087' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='39'/>
+<klass id='1089' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1090' holder='1089' name='hashCode' return='962' arguments='1073' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='288' nmethods='14' adapters='140' free_code_cache='248897152'/>
+<task_done success='1' nmsize='504' count='5976' inlined_bytes='19' stamp='0.093'/>
+</task>
+<task compile_id='43' method='java.util.HashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='1565' iicount='1565' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap$Node' flags='8'/>
+<method id='1082' holder='1081' name='<init>' return='964' arguments='962 969 969 1081' flags='0' bytes='26' iicount='1565'/>
+<parse method='1082' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='183' bci='1'/>
+<method id='1084' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7093'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.093'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='294' nmethods='19' adapters='140' free_code_cache='248880768'/>
+<task_done success='1' nmsize='752' count='1638' inlined_bytes='1' stamp='0.093'/>
+</task>
+<task compile_id='6' method='java.lang.Math floorMod (II)I' bytes='10' count='3187' iicount='3187' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='3190'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='3'/>
+<method id='1084' holder='1081' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3200'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.094'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='298' nmethods='23' adapters='140' free_code_cache='248875776'/>
+<task_done success='1' nmsize='592' count='3200' inlined_bytes='22' stamp='0.094'/>
+</task>
+<task compile_id='41' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='1200' iicount='1200' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='put' return='969' arguments='969 969' flags='1' bytes='13' iicount='1200'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2657'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='9'/>
+<type id='956' name='boolean'/>
+<method id='1087' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1747'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='303' nmethods='28' adapters='140' free_code_cache='248870144'/>
+<task_done success='1' nmsize='856' count='1202' inlined_bytes='20' stamp='0.094'/>
+</task>
+<task compile_id='14' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='839' iicount='839' level='1' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='name' return='970' flags='1' bytes='5' iicount='839'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='306' nmethods='31' adapters='140' free_code_cache='248865408'/>
+<task_done success='1' nmsize='272' count='839' stamp='0.095'/>
+</task>
+<task compile_id='26' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='625' iicount='625' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='1082' name='java.lang.module.ModuleReference' flags='1025'/>
+<klass id='1081' name='java.lang.module.ResolvedModule' flags='17'/>
+<method id='1083' holder='1081' name='reference' return='1082' flags='1' bytes='5' iicount='625'/>
+<parse method='1083' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='308' nmethods='33' adapters='140' free_code_cache='248862848'/>
+<task_done success='1' nmsize='272' count='625' stamp='0.095'/>
+</task>
+<task compile_id='25' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='874' iicount='874' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.Objects' flags='17'/>
+<method id='1082' holder='1081' name='equals' return='956' arguments='969 969' flags='9' bytes='23' iicount='874'/>
+<parse method='1082' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='182' bci='11'/>
+<method id='1086' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='315' nmethods='38' adapters='140' free_code_cache='248855808'/>
+<task_done success='1' nmsize='744' count='874' stamp='0.095'/>
+</task>
+<task compile_id='47' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='229' iicount='229' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.Collections$EmptySet' flags='10'/>
+<method id='1082' holder='1081' name='isEmpty' return='956' flags='1' bytes='2' iicount='229'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='318' nmethods='41' adapters='140' free_code_cache='248853376'/>
+<task_done success='1' nmsize='272' count='229' stamp='0.096'/>
+</task>
+<task compile_id='36' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='776' iicount='776' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1083' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<type id='962' name='int'/>
+<klass id='1082' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1084' holder='1081' name='casTabAt' return='956' arguments='1083 962 1082 1082' flags='24' bytes='21' iicount='776'/>
+<parse method='1084' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='17'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1088' holder='1040' name='compareAndSetObject' return='956' arguments='969 963 969 969' flags='273' bytes='0' compile_id='35' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='321' nmethods='44' adapters='140' free_code_cache='248850048'/>
+<task_done success='1' nmsize='464' count='776' stamp='0.096'/>
+</task>
+<task compile_id='19' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='1499' iicount='1499' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1081' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1499'/>
+<parse method='1081' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='3'/>
+<method id='1085' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='324' nmethods='46' adapters='140' free_code_cache='248846720'/>
+<task_done success='1' nmsize='432' count='1499' stamp='0.096'/>
+</task>
+<task compile_id='49' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='180' iicount='180' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='isAutomatic' return='956' flags='1' bytes='5' iicount='180'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='328' nmethods='51' adapters='140' free_code_cache='248840448'/>
+<task_done success='1' nmsize='272' count='180' stamp='0.097'/>
+</task>
+<task compile_id='54' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='142' iicount='142' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<klass id='1006' name='java.lang.Module' flags='17'/>
+<method id='1082' holder='1006' name='getDescriptor' return='1081' flags='1' bytes='5' iicount='142'/>
+<parse method='1082' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='330' nmethods='53' adapters='140' free_code_cache='248838016'/>
+<task_done success='1' nmsize='272' count='142' stamp='0.097'/>
+</task>
+<task compile_id='51' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='145' iicount='145' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<klass id='1082' name='java.lang.module.Configuration' flags='17'/>
+<klass id='1081' name='java.lang.module.ResolvedModule' flags='17'/>
+<method id='1083' holder='1081' name='configuration' return='1082' flags='1' bytes='5' iicount='145'/>
+<parse method='1083' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='334' nmethods='57' adapters='140' free_code_cache='248834688'/>
+<task_done success='1' nmsize='272' count='145' stamp='0.097'/>
+</task>
+<task compile_id='63' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' level='3' stamp='0.121'>
+<phase name='setup' stamp='0.121'>
+<phase_done name='setup' stamp='0.121'/>
+</phase>
+<phase name='buildIR' stamp='0.121'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashSet' flags='1'/>
+<method id='1082' holder='1081' name='add' return='956' arguments='969' flags='1' bytes='20' iicount='512'/>
+<parse method='1082' stamp='0.121'>
+<phase name='parse_hir' stamp='0.121'>
+<bc code='182' bci='8'/>
+<klass id='1084' name='java.util.HashMap' flags='1'/>
+<method id='1087' holder='1084' name='put' return='969' arguments='969 969' flags='1' bytes='13' compile_id='41' compiler='c1' level='3' iicount='1248'/>
+<call method='1087' instr='invokevirtual'/>
+<dependency type='unique_concrete_method' ctxk='1084' x='1087'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1089' holder='1084' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2809'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='9'/>
+<method id='1091' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.121'/>
+</parse>
+<bc code='182' bci='9'/>
+<method id='1092' holder='1084' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1834'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.121'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.121'/>
+</phase>
+<parse_done stamp='0.121'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.121'>
+<phase_done name='optimize_blocks' stamp='0.121'/>
+</phase>
+<phase name='gvn' stamp='0.121'>
+<phase_done name='gvn' stamp='0.121'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.121'>
+<phase_done name='rangeCheckElimination' stamp='0.121'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.121'>
+<phase_done name='optimize_null_checks' stamp='0.121'/>
+</phase>
+<phase_done name='buildIR' stamp='0.121'/>
+</phase>
+<phase name='emit_lir' stamp='0.121'>
+<phase name='lirGeneration' stamp='0.121'>
+<phase_done name='lirGeneration' stamp='0.121'/>
+</phase>
+<phase name='linearScan' stamp='0.121'>
+<phase_done name='linearScan' stamp='0.121'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.121'/>
+</phase>
+<phase name='codeemit' stamp='0.121'>
+<phase_done name='codeemit' stamp='0.121'/>
+</phase>
+<phase name='codeinstall' stamp='0.121'>
+<dependency type='unique_concrete_method' ctxk='1084' x='1087'/>
+<phase_done name='codeinstall' stamp='0.121'/>
+</phase>
+<code_cache total_blobs='397' nmethods='63' adapters='197' free_code_cache='248790656'/>
+<task_done success='1' nmsize='1208' count='512' inlined_bytes='33' stamp='0.121'/>
+</task>
+<task compile_id='69' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='451' iicount='451' level='3' stamp='0.128'>
+<phase name='setup' stamp='0.128'>
+<phase_done name='setup' stamp='0.128'/>
+</phase>
+<phase name='buildIR' stamp='0.128'>
+<type id='956' name='boolean'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' iicount='451'/>
+<parse method='1082' stamp='0.128'>
+<phase name='parse_hir' stamp='0.128'>
+<phase_done name='parse_hir' stamp='0.128'/>
+</phase>
+<parse_done stamp='0.128'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.128'>
+<phase_done name='optimize_blocks' stamp='0.128'/>
+</phase>
+<phase name='gvn' stamp='0.128'>
+<phase_done name='gvn' stamp='0.128'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.128'>
+<phase_done name='rangeCheckElimination' stamp='0.128'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.128'>
+<phase_done name='optimize_null_checks' stamp='0.128'/>
+</phase>
+<phase_done name='buildIR' stamp='0.128'/>
+</phase>
+<phase name='emit_lir' stamp='0.128'>
+<phase name='lirGeneration' stamp='0.128'>
+<phase_done name='lirGeneration' stamp='0.128'/>
+</phase>
+<phase name='linearScan' stamp='0.128'>
+<phase_done name='linearScan' stamp='0.128'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.128'/>
+</phase>
+<phase name='codeemit' stamp='0.128'>
+<phase_done name='codeemit' stamp='0.128'/>
+</phase>
+<phase name='codeinstall' stamp='0.128'>
+<phase_done name='codeinstall' stamp='0.128'/>
+</phase>
+<code_cache total_blobs='404' nmethods='69' adapters='198' free_code_cache='248783232'/>
+<task_done success='1' nmsize='400' count='474' stamp='0.128'/>
+</task>
+<task compile_id='73' method='java.lang.String indexOf (I)I' bytes='7' count='260' iicount='260' level='3' stamp='0.133'>
+<phase name='setup' stamp='0.133'>
+<phase_done name='setup' stamp='0.133'/>
+</phase>
+<phase name='buildIR' stamp='0.133'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='indexOf' return='962' arguments='962' flags='1' bytes='7' iicount='260'/>
+<parse method='1081' stamp='0.133'>
+<phase name='parse_hir' stamp='0.133'>
+<bc code='182' bci='3'/>
+<method id='1083' holder='970' name='indexOf' return='962' arguments='962 962' flags='1' bytes='29' compile_id='72' compiler='c1' level='3' iicount='271'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1085' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='5748'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.133'/>
+</parse>
+<bc code='184' bci='13'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' compile_id='61' compiler='c1' level='3' iicount='271'/>
+<call method='1089' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='25'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='indexOf' return='962' arguments='1073 962 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.133'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.133'/>
+</phase>
+<parse_done stamp='0.133'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.133'>
+<phase_done name='optimize_blocks' stamp='0.133'/>
+</phase>
+<phase name='gvn' stamp='0.133'>
+<phase_done name='gvn' stamp='0.133'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.133'>
+<phase_done name='rangeCheckElimination' stamp='0.133'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.133'>
+<phase_done name='optimize_null_checks' stamp='0.133'/>
+</phase>
+<phase_done name='buildIR' stamp='0.133'/>
+</phase>
+<phase name='emit_lir' stamp='0.133'>
+<phase name='lirGeneration' stamp='0.133'>
+<phase_done name='lirGeneration' stamp='0.133'/>
+</phase>
+<phase name='linearScan' stamp='0.133'>
+<phase_done name='linearScan' stamp='0.133'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.133'/>
+</phase>
+<phase name='codeemit' stamp='0.133'>
+<phase_done name='codeemit' stamp='0.133'/>
+</phase>
+<phase name='codeinstall' stamp='0.133'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='409' nmethods='73' adapters='199' free_code_cache='248775424'/>
+<task_done success='1' nmsize='824' count='263' inlined_bytes='48' stamp='0.133'/>
+</task>
+<task compile_id='77' method='java.lang.Object <init> ()V' bytes='1' count='8586' iicount='8586' level='1' stamp='0.137'>
+<phase name='setup' stamp='0.137'>
+<phase_done name='setup' stamp='0.137'/>
+</phase>
+<phase name='buildIR' stamp='0.137'>
+<type id='964' name='void'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1081' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='8586'/>
+<parse method='1081' stamp='0.137'>
+<phase name='parse_hir' stamp='0.137'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='parse_hir' stamp='0.137'/>
+</phase>
+<parse_done stamp='0.137'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.137'>
+<phase_done name='optimize_blocks' stamp='0.137'/>
+</phase>
+<phase name='gvn' stamp='0.137'>
+<phase_done name='gvn' stamp='0.137'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.137'>
+<phase_done name='rangeCheckElimination' stamp='0.137'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.137'>
+<phase_done name='optimize_null_checks' stamp='0.137'/>
+</phase>
+<phase_done name='buildIR' stamp='0.137'/>
+</phase>
+<phase name='emit_lir' stamp='0.137'>
+<phase name='lirGeneration' stamp='0.137'>
+<phase_done name='lirGeneration' stamp='0.137'/>
+</phase>
+<phase name='linearScan' stamp='0.137'>
+<phase_done name='linearScan' stamp='0.137'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.137'/>
+</phase>
+<phase name='codeemit' stamp='0.137'>
+<phase_done name='codeemit' stamp='0.137'/>
+</phase>
+<phase name='codeinstall' stamp='0.137'>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='codeinstall' stamp='0.137'/>
+</phase>
+<code_cache total_blobs='413' nmethods='77' adapters='199' free_code_cache='248770688'/>
+<task_done success='1' nmsize='272' count='8586' stamp='0.137'/>
+</task>
+<task compile_id='85' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='130' iicount='130' level='1' stamp='0.148'>
+<phase name='setup' stamp='0.148'>
+<phase_done name='setup' stamp='0.148'/>
+</phase>
+<phase name='buildIR' stamp='0.148'>
+<klass id='973' name='java.lang.ClassLoader' flags='1025'/>
+<klass id='971' name='java.lang.Class' flags='17'/>
+<method id='1081' holder='971' name='getClassLoader0' return='973' flags='0' bytes='5' iicount='130'/>
+<parse method='1081' stamp='0.148'>
+<phase name='parse_hir' stamp='0.148'>
+<phase_done name='parse_hir' stamp='0.148'/>
+</phase>
+<parse_done stamp='0.148'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.148'>
+<phase_done name='optimize_blocks' stamp='0.148'/>
+</phase>
+<phase name='gvn' stamp='0.148'>
+<phase_done name='gvn' stamp='0.148'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.148'>
+<phase_done name='rangeCheckElimination' stamp='0.148'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.148'>
+<phase_done name='optimize_null_checks' stamp='0.148'/>
+</phase>
+<phase_done name='buildIR' stamp='0.148'/>
+</phase>
+<phase name='emit_lir' stamp='0.148'>
+<phase name='lirGeneration' stamp='0.148'>
+<phase_done name='lirGeneration' stamp='0.148'/>
+</phase>
+<phase name='linearScan' stamp='0.148'>
+<phase_done name='linearScan' stamp='0.148'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.148'/>
+</phase>
+<phase name='codeemit' stamp='0.148'>
+<phase_done name='codeemit' stamp='0.148'/>
+</phase>
+<phase name='codeinstall' stamp='0.148'>
+<phase_done name='codeinstall' stamp='0.148'/>
+</phase>
+<code_cache total_blobs='455' nmethods='86' adapters='232' free_code_cache='248738304'/>
+<task_done success='1' nmsize='272' count='132' stamp='0.148'/>
+</task>
+<task compile_id='93' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='putStringAt' return='964' arguments='962 970' flags='18' bytes='29' iicount='256'/>
+<parse method='1081' stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='182' bci='1'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='5'/>
+<method id='1086' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5364'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='12'/>
+<method id='1088' holder='1037' name='inflate' return='964' flags='2' bytes='42' iicount='1'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='25'/>
+<klass id='1073' name='[B' flags='1041'/>
+<method id='1090' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<call method='1090' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='462' nmethods='93' adapters='232' free_code_cache='248731776'/>
+<task_done success='1' nmsize='856' count='256' inlined_bytes='30' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24142'>
+<start_compile_thread name='C1 CompilerThread1' thread='24142' process='24128' stamp='0.080'/>
+<task compile_id='8' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='1614' backedge_count='639' iicount='1614' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN' flags='24'/>
+<method id='1082' holder='1081' name='probe' return='962' arguments='969' flags='2' bytes='56' iicount='1614'/>
+<parse method='1082' stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<bc code='182' bci='1'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' iicount='289'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='9'/>
+<klass id='1088' name='java.lang.Math' flags='17'/>
+<method id='1089' holder='1088' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='2242'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='184' bci='3'/>
+<method id='1091' holder='1088' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='2243'/>
+<call method='1091' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1091'>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='31'/>
+<type id='956' name='boolean'/>
+<method id='1093' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='1'/>
+<call method='1093' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.081'/>
+</phase>
+<parse_done stamp='0.081'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.081'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='281' nmethods='7' adapters='140' free_code_cache='248917888'/>
+<task_done success='1' nmsize='1560' count='2142' backedge_count='836' inlined_bytes='32' stamp='0.092'/>
+</task>
+<task compile_id='42' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='1189' backedge_count='43' iicount='1189' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='962' name='int'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' iicount='1196'/>
+<parse method='1082' stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='182' bci='20'/>
+<klass id='1085' name='[Ljava.util.HashMap$Node;' flags='1040'/>
+<method id='1086' holder='1081' name='resize' return='1085' flags='16' bytes='356' iicount='288'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='56'/>
+<klass id='1084' name='java.util.HashMap$Node' flags='8'/>
+<method id='1088' holder='1081' name='newNode' return='1084' arguments='962 969 969 1084' flags='0' bytes='13' iicount='1229'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='91'/>
+<method id='1089' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='123'/>
+<klass id='1090' name='java.util.HashMap$TreeNode' flags='24'/>
+<method id='1091' holder='1090' name='putTreeVal' return='1090' arguments='1081 1085 962 969 969' flags='16' bytes='314' iicount='1'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='152'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='169'/>
+<type id='964' name='void'/>
+<method id='1092' holder='1081' name='treeifyBin' return='964' arguments='1085 962' flags='16' bytes='110' iicount='1'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='203'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='253'/>
+<method id='1094' holder='1081' name='afterNodeAccess' return='964' arguments='1084' flags='0' bytes='1' iicount='17'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='288'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='295'/>
+<method id='1095' holder='1081' name='afterNodeInsertion' return='964' arguments='956' flags='0' bytes='1' iicount='1289'/>
+<call method='1095' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='289' nmethods='15' adapters='140' free_code_cache='248890368'/>
+<task_done success='1' nmsize='4824' count='1580' backedge_count='76' stamp='0.093'/>
+</task>
+<task compile_id='44' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='1566' iicount='1566' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<klass id='1082' name='java.util.HashMap$Node' flags='8'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1083' holder='1081' name='newNode' return='1082' arguments='962 969 969 1082' flags='0' bytes='13' iicount='1572'/>
+<parse method='1083' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='183' bci='9'/>
+<type id='964' name='void'/>
+<method id='1085' holder='1082' name='<init>' return='964' arguments='962 969 969 1082' flags='0' bytes='26' iicount='1580'/>
+<call method='1085' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<bc code='183' bci='1'/>
+<method id='1087' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7128'/>
+<call method='1087' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.093'/>
+</parse>
+<parse_done stamp='0.093'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='295' nmethods='20' adapters='140' free_code_cache='248879104'/>
+<task_done success='1' nmsize='944' count='1690' inlined_bytes='27' stamp='0.094'/>
+</task>
+<task compile_id='7' method='java.lang.Math floorDiv (II)I' bytes='22' count='3200' iicount='3200' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3200'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='300' nmethods='25' adapters='140' free_code_cache='248873600'/>
+<task_done success='1' nmsize='464' count='3200' stamp='0.094'/>
+</task>
+<task compile_id='15' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='1130' iicount='1130' level='1' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='1082' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<klass id='1081' name='java.lang.module.ModuleReference' flags='1025'/>
+<method id='1083' holder='1081' name='descriptor' return='1082' flags='17' bytes='5' iicount='1130'/>
+<parse method='1083' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='302' nmethods='27' adapters='140' free_code_cache='248871808'/>
+<task_done success='1' nmsize='272' count='1130' stamp='0.094'/>
+</task>
+<task compile_id='48' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='823' iicount='823' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='get' return='969' arguments='969' flags='1' bytes='23' iicount='823'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2715'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='6'/>
+<klass id='1087' name='java.util.HashMap$Node' flags='8'/>
+<method id='1088' holder='1081' name='getNode' return='1087' arguments='962 969' flags='16' bytes='148' compile_id='46' compiler='c1' level='3' iicount='927'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='307' nmethods='32' adapters='140' free_code_cache='248863616'/>
+<task_done success='1' nmsize='920' count='823' inlined_bytes='20' stamp='0.095'/>
+</task>
+<task compile_id='31' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='914' backedge_count='4' iicount='914' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='964' name='void'/>
+<type id='963' name='long'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='addCount' return='964' arguments='963 962' flags='18' bytes='289' iicount='914'/>
+<parse method='1082' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='182' bci='31'/>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1088' holder='1040' name='compareAndSetLong' return='956' arguments='969 963 963 963' flags='273' bytes='0' compile_id='32' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='184' bci='58'/>
+<klass id='1089' name='java.util.concurrent.ThreadLocalRandom' unloaded='1'/>
+<method id='1090' holder='1089' name='getProbe' return='962' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='91'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='115'/>
+<method id='1091' holder='1081' name='sumCount' return='963' flags='16' bytes='60' iicount='7'/>
+<call method='1091' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='161'/>
+<method id='1095' holder='1081' name='resizeStamp' return='962' arguments='962' flags='24' bytes='8' iicount='8'/>
+<call method='1095' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1095'>
+<bc code='184' bci='1'/>
+<klass id='1065' name='java.lang.Integer' flags='17'/>
+<method id='1097' holder='1065' name='numberOfLeadingZeros' return='962' arguments='962' flags='9' bytes='78' iicount='23'/>
+<call method='1097' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.095'/>
+</parse>
+<bc code='182' bci='233'/>
+<method id='1099' holder='1040' name='compareAndSetInt' return='956' arguments='969 963 962 962' flags='273' bytes='0' iicount='23'/>
+<call method='1099' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='244'/>
+<klass id='1094' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1100' holder='1081' name='transfer' return='964' arguments='1094 1094' flags='18' bytes='828' iicount='4'/>
+<call method='1100' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='266'/>
+<call method='1099' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='276'/>
+<call method='1100' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='280'/>
+<call method='1091' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='104'/>
+<method id='1102' holder='1081' name='fullAddCount' return='964' arguments='963 956' flags='18' bytes='462' iicount='1'/>
+<call method='1102' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='326' nmethods='49' adapters='140' free_code_cache='248842112'/>
+<task_done success='1' nmsize='2536' count='914' backedge_count='4' inlined_bytes='8' stamp='0.097'/>
+</task>
+<task compile_id='39' method='java.util.AbstractCollection <init> ()V' bytes='5' count='753' iicount='753' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='964' name='void'/>
+<klass id='1081' name='java.util.AbstractCollection' flags='1025'/>
+<method id='1082' holder='1081' name='<init>' return='964' flags='4' bytes='5' iicount='753'/>
+<parse method='1082' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1084' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7449'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.097'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='332' nmethods='55' adapters='140' free_code_cache='248836224'/>
+<task_done success='1' nmsize='432' count='753' inlined_bytes='1' stamp='0.097'/>
+</task>
+<task compile_id='16' method='java.lang.String charAt (I)C' bytes='25' count='407' iicount='407' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='957' name='char'/>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='charAt' return='957' arguments='962' flags='1' bytes='25' iicount='407'/>
+<parse method='1081' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='3285'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.097'/>
+</parse>
+<bc code='184' bci='12'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='charAt' return='957' arguments='1073 962' flags='9' bytes='28' iicount='407'/>
+<call method='1087' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<bc code='183' bci='15'/>
+<type id='964' name='void'/>
+<klass id='1089' name='java.lang.StringIndexOutOfBoundsException' unloaded='1'/>
+<method id='1090' holder='1089' name='<init>' return='964' arguments='962' unloaded='1'/>
+<call method='1090' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.097'/>
+</parse>
+<bc code='184' bci='21'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='charAt' return='957' arguments='1073 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='336' nmethods='59' adapters='140' free_code_cache='248831488'/>
+<task_done success='1' nmsize='1048' count='430' inlined_bytes='47' stamp='0.098'/>
+</task>
+<task compile_id='67' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' level='3' stamp='0.125'>
+<phase name='setup' stamp='0.125'>
+<phase_done name='setup' stamp='0.125'/>
+</phase>
+<phase name='buildIR' stamp='0.125'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='min' return='962' arguments='962 962' flags='9' bytes='11' iicount='384'/>
+<parse method='1082' stamp='0.125'>
+<phase name='parse_hir' stamp='0.125'>
+<phase_done name='parse_hir' stamp='0.125'/>
+</phase>
+<parse_done stamp='0.125'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.125'>
+<phase_done name='optimize_blocks' stamp='0.125'/>
+</phase>
+<phase name='gvn' stamp='0.125'>
+<phase_done name='gvn' stamp='0.125'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.125'>
+<phase_done name='rangeCheckElimination' stamp='0.125'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.125'>
+<phase_done name='optimize_null_checks' stamp='0.125'/>
+</phase>
+<phase_done name='buildIR' stamp='0.125'/>
+</phase>
+<phase name='emit_lir' stamp='0.125'>
+<phase name='lirGeneration' stamp='0.125'>
+<phase_done name='lirGeneration' stamp='0.125'/>
+</phase>
+<phase name='linearScan' stamp='0.125'>
+<phase_done name='linearScan' stamp='0.125'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.125'/>
+</phase>
+<phase name='codeemit' stamp='0.125'>
+<phase_done name='codeemit' stamp='0.125'/>
+</phase>
+<phase name='codeinstall' stamp='0.125'>
+<phase_done name='codeinstall' stamp='0.125'/>
+</phase>
+<code_cache total_blobs='401' nmethods='66' adapters='198' free_code_cache='248787456'/>
+<task_done success='1' nmsize='400' count='384' stamp='0.126'/>
+</task>
+<task compile_id='70' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='263' iicount='263' level='3' stamp='0.128'>
+<phase name='setup' stamp='0.128'>
+<phase_done name='setup' stamp='0.128'/>
+</phase>
+<phase name='buildIR' stamp='0.128'>
+<klass id='1081' name='java.lang.CharacterData' flags='1024'/>
+<type id='962' name='int'/>
+<method id='1082' holder='1081' name='of' return='1081' arguments='962' flags='24' bytes='120' iicount='263'/>
+<parse method='1082' stamp='0.128'>
+<phase name='parse_hir' stamp='0.128'>
+<phase_done name='parse_hir' stamp='0.128'/>
+</phase>
+<parse_done stamp='0.128'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.128'>
+<phase_done name='optimize_blocks' stamp='0.128'/>
+</phase>
+<phase name='gvn' stamp='0.128'>
+<phase_done name='gvn' stamp='0.128'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.128'>
+<phase_done name='rangeCheckElimination' stamp='0.128'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.128'>
+<phase_done name='optimize_null_checks' stamp='0.128'/>
+</phase>
+<phase_done name='buildIR' stamp='0.128'/>
+</phase>
+<phase name='emit_lir' stamp='0.128'>
+<phase name='lirGeneration' stamp='0.128'>
+<phase_done name='lirGeneration' stamp='0.128'/>
+</phase>
+<phase name='linearScan' stamp='0.128'>
+<phase_done name='linearScan' stamp='0.128'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.128'/>
+</phase>
+<phase name='codeemit' stamp='0.128'>
+<phase_done name='codeemit' stamp='0.128'/>
+</phase>
+<phase name='codeinstall' stamp='0.128'>
+<phase_done name='codeinstall' stamp='0.128'/>
+</phase>
+<code_cache total_blobs='405' nmethods='70' adapters='198' free_code_cache='248780288'/>
+<task_done success='1' nmsize='1936' count='267' stamp='0.128'/>
+</task>
+<task compile_id='74' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='261' iicount='261' level='3' stamp='0.133'>
+<phase name='setup' stamp='0.133'>
+<phase_done name='setup' stamp='0.133'/>
+</phase>
+<phase name='buildIR' stamp='0.133'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.CharacterDataLatin1' flags='0'/>
+<method id='1082' holder='1081' name='getProperties' return='962' arguments='962' flags='0' bytes='11' iicount='261'/>
+<parse method='1082' stamp='0.133'>
+<phase name='parse_hir' stamp='0.133'>
+<phase_done name='parse_hir' stamp='0.133'/>
+</phase>
+<parse_done stamp='0.133'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.133'>
+<phase_done name='optimize_blocks' stamp='0.133'/>
+</phase>
+<phase name='gvn' stamp='0.133'>
+<phase_done name='gvn' stamp='0.133'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.133'>
+<phase_done name='rangeCheckElimination' stamp='0.133'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.133'>
+<phase_done name='optimize_null_checks' stamp='0.133'/>
+</phase>
+<phase_done name='buildIR' stamp='0.133'/>
+</phase>
+<phase name='emit_lir' stamp='0.133'>
+<phase name='lirGeneration' stamp='0.133'>
+<phase_done name='lirGeneration' stamp='0.133'/>
+</phase>
+<phase name='linearScan' stamp='0.133'>
+<phase_done name='linearScan' stamp='0.133'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.133'/>
+</phase>
+<phase name='codeemit' stamp='0.133'>
+<phase_done name='codeemit' stamp='0.133'/>
+</phase>
+<phase name='codeinstall' stamp='0.133'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='410' nmethods='74' adapters='199' free_code_cache='248774400'/>
+<task_done success='1' nmsize='400' count='261' stamp='0.133'/>
+</task>
+<task compile_id='79' method='java.lang.Enum ordinal ()I' bytes='5' count='135' iicount='135' level='1' stamp='0.141'>
+<phase name='setup' stamp='0.141'>
+<phase_done name='setup' stamp='0.141'/>
+</phase>
+<phase name='buildIR' stamp='0.141'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Enum' flags='1025'/>
+<method id='1082' holder='1081' name='ordinal' return='962' flags='17' bytes='5' iicount='135'/>
+<parse method='1082' stamp='0.141'>
+<phase name='parse_hir' stamp='0.141'>
+<phase_done name='parse_hir' stamp='0.141'/>
+</phase>
+<parse_done stamp='0.141'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.141'>
+<phase_done name='optimize_blocks' stamp='0.141'/>
+</phase>
+<phase name='gvn' stamp='0.141'>
+<phase_done name='gvn' stamp='0.141'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.141'>
+<phase_done name='rangeCheckElimination' stamp='0.141'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.141'>
+<phase_done name='optimize_null_checks' stamp='0.141'/>
+</phase>
+<phase_done name='buildIR' stamp='0.141'/>
+</phase>
+<phase name='emit_lir' stamp='0.141'>
+<phase name='lirGeneration' stamp='0.141'>
+<phase_done name='lirGeneration' stamp='0.141'/>
+</phase>
+<phase name='linearScan' stamp='0.141'>
+<phase_done name='linearScan' stamp='0.141'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.141'/>
+</phase>
+<phase name='codeemit' stamp='0.141'>
+<phase_done name='codeemit' stamp='0.142'/>
+</phase>
+<phase name='codeinstall' stamp='0.142'>
+<phase_done name='codeinstall' stamp='0.142'/>
+</phase>
+<code_cache total_blobs='439' nmethods='79' adapters='223' free_code_cache='248753024'/>
+<task_done success='1' nmsize='272' count='135' stamp='0.142'/>
+</task>
+<task compile_id='88' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='132' iicount='132' level='1' stamp='0.148'>
+<phase name='setup' stamp='0.148'>
+<phase_done name='setup' stamp='0.148'/>
+</phase>
+<phase name='buildIR' stamp='0.148'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry' flags='10'/>
+<method id='1082' holder='1081' name='hashCode' return='962' flags='1' bytes='5' iicount='132'/>
+<parse method='1082' stamp='0.148'>
+<phase name='parse_hir' stamp='0.148'>
+<phase_done name='parse_hir' stamp='0.148'/>
+</phase>
+<parse_done stamp='0.148'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.148'>
+<phase_done name='optimize_blocks' stamp='0.148'/>
+</phase>
+<phase name='gvn' stamp='0.148'>
+<phase_done name='gvn' stamp='0.148'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.148'>
+<phase_done name='rangeCheckElimination' stamp='0.148'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.148'>
+<phase_done name='optimize_null_checks' stamp='0.148'/>
+</phase>
+<phase_done name='buildIR' stamp='0.148'/>
+</phase>
+<phase name='emit_lir' stamp='0.148'>
+<phase name='lirGeneration' stamp='0.148'>
+<phase_done name='lirGeneration' stamp='0.148'/>
+</phase>
+<phase name='linearScan' stamp='0.148'>
+<phase_done name='linearScan' stamp='0.148'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.148'/>
+</phase>
+<phase name='codeemit' stamp='0.148'>
+<phase_done name='codeemit' stamp='0.148'/>
+</phase>
+<phase name='codeinstall' stamp='0.148'>
+<phase_done name='codeinstall' stamp='0.148'/>
+</phase>
+<code_cache total_blobs='459' nmethods='90' adapters='232' free_code_cache='248735488'/>
+<task_done success='1' nmsize='272' count='137' stamp='0.148'/>
+</task>
+<task compile_id='94' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<type id='960' name='byte'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<parse method='1081' stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<phase_done name='parse_hir' stamp='0.150'/>
+</phase>
+<parse_done stamp='0.150'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.150'>
+<phase_done name='optimize_blocks' stamp='0.150'/>
+</phase>
+<phase name='gvn' stamp='0.150'>
+<phase_done name='gvn' stamp='0.150'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.150'>
+<phase_done name='rangeCheckElimination' stamp='0.150'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.150'>
+<phase_done name='optimize_null_checks' stamp='0.150'/>
+</phase>
+<phase_done name='buildIR' stamp='0.150'/>
+</phase>
+<phase name='emit_lir' stamp='0.150'>
+<phase name='lirGeneration' stamp='0.150'>
+<phase_done name='lirGeneration' stamp='0.150'/>
+</phase>
+<phase name='linearScan' stamp='0.150'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='461' nmethods='92' adapters='232' free_code_cache='248733440'/>
+<task_done success='1' nmsize='400' count='256' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24143'>
+<start_compile_thread name='C1 CompilerThread2' thread='24143' process='24128' stamp='0.080'/>
+<task compile_id='27' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='1227' backedge_count='1163' iicount='1227' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='next' return='969' flags='1' bytes='47' iicount='1246'/>
+<parse method='1082' stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='2563'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='15'/>
+<type id='962' name='int'/>
+<method id='1088' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' iicount='2453'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='183' bci='43'/>
+<type id='964' name='void'/>
+<klass id='1090' name='java.util.NoSuchElementException' unloaded='1'/>
+<method id='1091' holder='1090' name='<init>' return='964' unloaded='1'/>
+<call method='1091' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.081'/>
+</phase>
+<parse_done stamp='0.081'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.081'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.091'/>
+</phase>
+<code_cache total_blobs='280' nmethods='6' adapters='140' free_code_cache='248920576'/>
+<task_done success='1' nmsize='1016' count='2475' backedge_count='2327' inlined_bytes='13' stamp='0.091'/>
+</task>
+<task compile_id='24' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='743' backedge_count='353' iicount='743' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$MapN' flags='24'/>
+<method id='1082' holder='1081' name='probe' return='962' arguments='969' flags='2' bytes='60' iicount='743'/>
+<parse method='1082' stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='182' bci='1'/>
+<method id='1085' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='11'/>
+<klass id='1087' name='java.lang.Math' flags='17'/>
+<method id='1088' holder='1087' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='3065'/>
+<call method='1088' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1088'>
+<bc code='184' bci='3'/>
+<method id='1090' holder='1087' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3065'/>
+<call method='1090' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1090'>
+<parse_done stamp='0.092'/>
+</parse>
+<parse_done stamp='0.092'/>
+</parse>
+<bc code='182' bci='35'/>
+<type id='956' name='boolean'/>
+<method id='1092' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='284' nmethods='10' adapters='140' free_code_cache='248912896'/>
+<task_done success='1' nmsize='1592' count='771' backedge_count='355' inlined_bytes='32' stamp='0.092'/>
+</task>
+<task compile_id='21' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5126' iicount='5126' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' iicount='5175'/>
+<parse method='1082' stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='287' nmethods='13' adapters='140' free_code_cache='248898304'/>
+<task_done success='1' nmsize='464' count='5297' stamp='0.093'/>
+</task>
+<task compile_id='38' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='2423' iicount='2423' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' iicount='2432'/>
+<parse method='1082' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='9'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='290' nmethods='16' adapters='140' free_code_cache='248889088'/>
+<task_done success='1' nmsize='616' count='2510' stamp='0.093'/>
+</task>
+<task compile_id='45' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='1566' iicount='1566' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='964' name='void'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='afterNodeInsertion' return='964' arguments='956' flags='0' bytes='1' iicount='1568'/>
+<parse method='1082' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='293' nmethods='18' adapters='140' free_code_cache='248882176'/>
+<task_done success='1' nmsize='336' count='1612' stamp='0.093'/>
+</task>
+<task compile_id='3' method='java.lang.String isLatin1 ()Z' bytes='19' count='3221' iicount='3221' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='956' name='boolean'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='isLatin1' return='956' flags='2' bytes='19' iicount='3226'/>
+<parse method='1081' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='297' nmethods='22' adapters='140' free_code_cache='248877056'/>
+<task_done success='1' nmsize='464' count='3229' stamp='0.094'/>
+</task>
+<task compile_id='52' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='823' iicount='823' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.ImmutableCollections$Set12$1' flags='0'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='823'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='301' nmethods='26' adapters='140' free_code_cache='248872576'/>
+<task_done success='1' nmsize='432' count='823' stamp='0.094'/>
+</task>
+<task compile_id='13' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='2512' iicount='2512' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.Objects' flags='17'/>
+<method id='1082' holder='1081' name='requireNonNull' return='969' arguments='969' flags='9' bytes='14' iicount='2512'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='183' bci='8'/>
+<type id='964' name='void'/>
+<klass id='1077' name='java.lang.NullPointerException' flags='1'/>
+<method id='1084' holder='1077' name='<init>' return='964' flags='1' bytes='5' iicount='1'/>
+<call method='1084' instr='invokespecial'/>
+<inline_fail reason='don't inline Throwable constructors'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='304' nmethods='29' adapters='140' free_code_cache='248868864'/>
+<task_done success='1' nmsize='584' count='2512' stamp='0.094'/>
+</task>
+<task compile_id='56' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='582' iicount='582' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='jdk.internal.module.ModuleBootstrap$2' flags='0'/>
+<method id='1082' holder='1081' name='next' return='969' flags='1' bytes='52' iicount='582'/>
+<parse method='1082' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='185' bci='4'/>
+<type id='956' name='boolean'/>
+<klass id='1086' name='java.util.Iterator' flags='1537'/>
+<method id='1087' holder='1086' name='hasNext' return='956' flags='1025' bytes='0' iicount='1'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='16'/>
+<method id='1088' holder='1086' name='next' return='969' flags='1025' bytes='0' iicount='1'/>
+<call method='1088' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='26'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='38'/>
+<call method='1088' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='183' bci='48'/>
+<type id='964' name='void'/>
+<klass id='1089' name='java.util.NoSuchElementException' unloaded='1'/>
+<method id='1090' holder='1089' name='<init>' return='964' unloaded='1'/>
+<call method='1090' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='309' nmethods='34' adapters='140' free_code_cache='248860416'/>
+<task_done success='1' nmsize='1448' count='582' stamp='0.095'/>
+</task>
+<task compile_id='40' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='354' iicount='354' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor$Exports' flags='25'/>
+<method id='1082' holder='1081' name='source' return='970' flags='1' bytes='5' iicount='354'/>
+<parse method='1082' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='314' nmethods='37' adapters='140' free_code_cache='248857216'/>
+<task_done success='1' nmsize='272' count='354' stamp='0.095'/>
+</task>
+<task compile_id='37' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='431' iicount='431' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN' flags='24'/>
+<method id='1082' holder='1081' name='size' return='962' flags='1' bytes='5' iicount='431'/>
+<parse method='1082' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='317' nmethods='40' adapters='140' free_code_cache='248854144'/>
+<task_done success='1' nmsize='272' count='431' stamp='0.096'/>
+</task>
+<task compile_id='34' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='858' iicount='858' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='putIfAbsent' return='969' arguments='969 969' flags='1' bytes='8' iicount='858'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='4'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='putVal' return='969' arguments='969 969 956' flags='16' bytes='432' compile_id='30' compiler='c1' level='3' iicount='918'/>
+<call method='1084' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='320' nmethods='43' adapters='140' free_code_cache='248851072'/>
+<task_done success='1' nmsize='392' count='858' stamp='0.096'/>
+</task>
+<task compile_id='18' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='1499' iicount='1499' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='1082' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1083' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1084' holder='1081' name='tabAt' return='1082' arguments='1083 962' flags='24' bytes='22' iicount='1499'/>
+<parse method='1084' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='15'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1089' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1499'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='3'/>
+<method id='1091' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.096'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='324' nmethods='47' adapters='140' free_code_cache='248846720'/>
+<task_done success='1' nmsize='816' count='1499' inlined_bytes='7' stamp='0.096'/>
+</task>
+<task compile_id='29' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='1037' iicount='1037' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' iicount='1037'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='327' nmethods='50' adapters='140' free_code_cache='248841216'/>
+<task_done success='1' nmsize='336' count='1037' stamp='0.097'/>
+</task>
+<task compile_id='53' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='180' iicount='180' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='isOpen' return='956' flags='1' bytes='5' iicount='180'/>
+<parse method='1082' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='331' nmethods='54' adapters='140' free_code_cache='248837248'/>
+<task_done success='1' nmsize='272' count='180' stamp='0.097'/>
+</task>
+<task compile_id='17' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='407' iicount='407' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='957' name='char'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='charAt' return='957' arguments='1073 962' flags='9' bytes='28' iicount='407'/>
+<parse method='1082' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='183' bci='15'/>
+<type id='964' name='void'/>
+<klass id='1084' name='java.lang.StringIndexOutOfBoundsException' unloaded='1'/>
+<method id='1085' holder='1084' name='<init>' return='964' arguments='962' unloaded='1'/>
+<call method='1085' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='335' nmethods='58' adapters='140' free_code_cache='248833408'/>
+<task_done success='1' nmsize='584' count='408' stamp='0.097'/>
+</task>
+<task compile_id='60' method='java.lang.String length ()I' bytes='11' count='386' iicount='386' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='length' return='962' flags='1' bytes='11' iicount='393'/>
+<parse method='1081' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='182' bci='6'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='3824'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.098'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.098'/>
+</phase>
+<parse_done stamp='0.098'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.098'>
+<phase_done name='optimize_blocks' stamp='0.098'/>
+</phase>
+<phase name='gvn' stamp='0.098'>
+<phase_done name='gvn' stamp='0.098'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.098'>
+<phase_done name='rangeCheckElimination' stamp='0.098'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.098'>
+<phase_done name='optimize_null_checks' stamp='0.098'/>
+</phase>
+<phase_done name='buildIR' stamp='0.098'/>
+</phase>
+<phase name='emit_lir' stamp='0.098'>
+<phase name='lirGeneration' stamp='0.098'>
+<phase_done name='lirGeneration' stamp='0.098'/>
+</phase>
+<phase name='linearScan' stamp='0.098'>
+<phase_done name='linearScan' stamp='0.098'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.098'/>
+</phase>
+<phase name='codeemit' stamp='0.098'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='337' nmethods='60' adapters='140' free_code_cache='248830336'/>
+<task_done success='1' nmsize='496' count='422' inlined_bytes='15' stamp='0.098'/>
+</task>
+<task compile_id='61' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2065' iicount='186' level='3' stamp='0.098'>
+<phase name='setup' stamp='0.098'>
+<phase_done name='setup' stamp='0.098'/>
+</phase>
+<phase name='buildIR' stamp='0.098'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' iicount='186'/>
+<parse method='1082' stamp='0.098'>
+<phase name='parse_hir' stamp='0.098'>
+<bc code='184' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' iicount='318'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.098'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.098'/>
+</phase>
+<parse_done stamp='0.098'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.098'>
+<phase_done name='optimize_blocks' stamp='0.098'/>
+</phase>
+<phase name='gvn' stamp='0.098'>
+<phase_done name='gvn' stamp='0.098'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.098'>
+<phase_done name='rangeCheckElimination' stamp='0.098'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.098'>
+<phase_done name='optimize_null_checks' stamp='0.098'/>
+</phase>
+<phase_done name='buildIR' stamp='0.098'/>
+</phase>
+<phase name='emit_lir' stamp='0.098'>
+<phase name='lirGeneration' stamp='0.098'>
+<phase_done name='lirGeneration' stamp='0.098'/>
+</phase>
+<phase name='linearScan' stamp='0.098'>
+<phase_done name='linearScan' stamp='0.098'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.098'/>
+</phase>
+<phase name='codeemit' stamp='0.098'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='338' nmethods='61' adapters='140' free_code_cache='248828544'/>
+<task_done success='1' nmsize='1040' count='186' backedge_count='2065' inlined_bytes='13' stamp='0.098'/>
+</task>
+<task compile_id='66' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' level='3' stamp='0.125'>
+<phase name='setup' stamp='0.125'>
+<phase_done name='setup' stamp='0.125'/>
+</phase>
+<phase name='buildIR' stamp='0.125'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='ensureCapacityInternal' return='964' arguments='962' flags='2' bytes='39' iicount='256'/>
+<parse method='1081' stamp='0.125'>
+<phase name='parse_hir' stamp='0.125'>
+<bc code='182' bci='24'/>
+<method id='1083' holder='1037' name='newCapacity' return='962' arguments='962' flags='2' bytes='55' iicount='60'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='32'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1085' name='java.util.Arrays' flags='1'/>
+<method id='1086' holder='1085' name='copyOf' return='1073' arguments='1073 962' flags='9' bytes='19' iicount='128'/>
+<call method='1086' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<bc code='184' bci='11'/>
+<klass id='1088' name='java.lang.Math' flags='17'/>
+<method id='1089' holder='1088' name='min' return='962' arguments='962 962' flags='9' bytes='11' iicount='384'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<parse_done stamp='0.125'/>
+</parse>
+<bc code='184' bci='14'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1091' holder='975' name='arraycopy' return='964' arguments='969 962 969 962 962' flags='265' bytes='0' compile_id='64' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1091' instr='invokestatic'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.126'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.126'/>
+</phase>
+<parse_done stamp='0.126'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.126'>
+<phase_done name='optimize_blocks' stamp='0.126'/>
+</phase>
+<phase name='gvn' stamp='0.126'>
+<phase_done name='gvn' stamp='0.126'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.126'>
+<phase_done name='rangeCheckElimination' stamp='0.126'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.126'>
+<phase_done name='optimize_null_checks' stamp='0.126'/>
+</phase>
+<phase_done name='buildIR' stamp='0.126'/>
+</phase>
+<phase name='emit_lir' stamp='0.126'>
+<phase name='lirGeneration' stamp='0.126'>
+<phase_done name='lirGeneration' stamp='0.126'/>
+</phase>
+<phase name='linearScan' stamp='0.126'>
+<phase_done name='linearScan' stamp='0.126'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.126'/>
+</phase>
+<phase name='codeemit' stamp='0.126'>
+<phase_done name='codeemit' stamp='0.126'/>
+</phase>
+<phase name='codeinstall' stamp='0.126'>
+<phase_done name='codeinstall' stamp='0.126'/>
+</phase>
+<code_cache total_blobs='402' nmethods='67' adapters='198' free_code_cache='248785280'/>
+<task_done success='1' nmsize='1240' count='256' inlined_bytes='30' stamp='0.126'/>
+</task>
+<task compile_id='71' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='272' iicount='274' level='3' stamp='0.130'>
+<phase name='setup' stamp='0.130'>
+<phase_done name='setup' stamp='0.130'/>
+</phase>
+<phase name='buildIR' stamp='0.130'>
+<type id='964' name='void'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<type id='957' name='char'/>
+<klass id='1081' name='sun.nio.fs.UnixPath' flags='0'/>
+<method id='1082' holder='1081' name='checkNotNul' return='964' arguments='970 957' flags='10' bytes='16' iicount='335'/>
+<parse method='1082' stamp='0.130'>
+<phase name='parse_hir' stamp='0.130'>
+<bc code='183' bci='11'/>
+<klass id='1084' name='java.nio.file.InvalidPathException' unloaded='1'/>
+<method id='1086' holder='1084' name='<init>' return='964' arguments='970 970' unloaded='1'/>
+<call method='1086' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.130'/>
+</phase>
+<parse_done stamp='0.130'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.130'>
+<phase_done name='optimize_blocks' stamp='0.130'/>
+</phase>
+<phase name='gvn' stamp='0.130'>
+<phase_done name='gvn' stamp='0.130'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.130'>
+<phase_done name='rangeCheckElimination' stamp='0.130'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.130'>
+<phase_done name='optimize_null_checks' stamp='0.130'/>
+</phase>
+<phase_done name='buildIR' stamp='0.130'/>
+</phase>
+<phase name='emit_lir' stamp='0.130'>
+<phase name='lirGeneration' stamp='0.130'>
+<phase_done name='lirGeneration' stamp='0.130'/>
+</phase>
+<phase name='linearScan' stamp='0.130'>
+<phase_done name='linearScan' stamp='0.130'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.130'/>
+</phase>
+<phase name='codeemit' stamp='0.130'>
+<phase_done name='codeemit' stamp='0.130'/>
+</phase>
+<phase name='codeinstall' stamp='0.130'>
+<phase_done name='codeinstall' stamp='0.130'/>
+</phase>
+<code_cache total_blobs='407' nmethods='71' adapters='199' free_code_cache='248778496'/>
+<task_done success='1' nmsize='520' count='394' stamp='0.130'/>
+</task>
+<task compile_id='75' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='257' iicount='257' level='3' stamp='0.134'>
+<phase name='setup' stamp='0.134'>
+<phase_done name='setup' stamp='0.134'/>
+</phase>
+<phase name='buildIR' stamp='0.134'>
+<klass id='981' name='java.lang.SecurityManager' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1081' holder='975' name='getSecurityManager' return='981' flags='9' bytes='4' iicount='257'/>
+<parse method='1081' stamp='0.134'>
+<phase name='parse_hir' stamp='0.134'>
+<phase_done name='parse_hir' stamp='0.134'/>
+</phase>
+<parse_done stamp='0.135'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.135'>
+<phase_done name='optimize_blocks' stamp='0.135'/>
+</phase>
+<phase name='gvn' stamp='0.135'>
+<phase_done name='gvn' stamp='0.135'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.135'>
+<phase_done name='rangeCheckElimination' stamp='0.135'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.135'>
+<phase_done name='optimize_null_checks' stamp='0.135'/>
+</phase>
+<phase_done name='buildIR' stamp='0.135'/>
+</phase>
+<phase name='emit_lir' stamp='0.135'>
+<phase name='lirGeneration' stamp='0.135'>
+<phase_done name='lirGeneration' stamp='0.135'/>
+</phase>
+<phase name='linearScan' stamp='0.135'>
+<phase_done name='linearScan' stamp='0.135'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.135'/>
+</phase>
+<phase name='codeemit' stamp='0.135'>
+<phase_done name='codeemit' stamp='0.135'/>
+</phase>
+<phase name='codeinstall' stamp='0.135'>
+<phase_done name='codeinstall' stamp='0.135'/>
+</phase>
+<code_cache total_blobs='411' nmethods='75' adapters='199' free_code_cache='248773504'/>
+<task_done success='1' nmsize='336' count='258' stamp='0.135'/>
+</task>
+<task compile_id='81' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='257' backedge_count='5' iicount='257' level='3' stamp='0.143'>
+<phase name='setup' stamp='0.143'>
+<phase_done name='setup' stamp='0.143'/>
+</phase>
+<phase name='buildIR' stamp='0.143'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='get' return='969' arguments='969' flags='1' bytes='162' iicount='257'/>
+<parse method='1082' stamp='0.143'>
+<phase name='parse_hir' stamp='0.143'>
+<bc code='182' bci='1'/>
+<type id='962' name='int'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='4'/>
+<method id='1085' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' compile_id='29' compiler='c1' level='3' iicount='1318'/>
+<call method='1085' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.143'/>
+</parse>
+<bc code='184' bci='34'/>
+<klass id='1087' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1088' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1089' holder='1081' name='tabAt' return='1087' arguments='1088 962' flags='24' bytes='22' compile_id='18' compiler='c1' level='3' iicount='2064'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1094' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' compile_id='19' compiler='c1' level='3' iicount='2067'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<method id='1096' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.143'/>
+</parse>
+<parse_done stamp='0.143'/>
+</parse>
+<bc code='182' bci='73'/>
+<type id='956' name='boolean'/>
+<method id='1097' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='5'/>
+<call method='1097' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='93'/>
+<method id='1098' holder='1087' name='find' return='1087' arguments='962 969' flags='0' bytes='52' iicount='1'/>
+<call method='1098' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='149'/>
+<call method='1097' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.143'/>
+</phase>
+<parse_done stamp='0.143'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.143'>
+<phase_done name='optimize_blocks' stamp='0.143'/>
+</phase>
+<phase name='gvn' stamp='0.143'>
+<phase_done name='gvn' stamp='0.143'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.143'>
+<phase_done name='rangeCheckElimination' stamp='0.143'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.143'>
+<phase_done name='optimize_null_checks' stamp='0.143'/>
+</phase>
+<phase_done name='buildIR' stamp='0.143'/>
+</phase>
+<phase name='emit_lir' stamp='0.143'>
+<phase name='lirGeneration' stamp='0.143'>
+<phase_done name='lirGeneration' stamp='0.143'/>
+</phase>
+<phase name='linearScan' stamp='0.143'>
+<phase_done name='linearScan' stamp='0.144'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.144'/>
+</phase>
+<phase name='codeemit' stamp='0.144'>
+<phase_done name='codeemit' stamp='0.144'/>
+</phase>
+<phase name='codeinstall' stamp='0.144'>
+<phase_done name='codeinstall' stamp='0.144'/>
+</phase>
+<code_cache total_blobs='444' nmethods='83' adapters='224' free_code_cache='248745856'/>
+<task_done success='1' nmsize='3480' count='265' backedge_count='5' inlined_bytes='39' stamp='0.144'/>
+</task>
+<task compile_id='91' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<klass id='1039' name='java.lang.StringBuilder' flags='17'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='1039' name='append' return='1039' arguments='970' flags='1' bytes='8' iicount='256'/>
+<parse method='1081' stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='183' bci='2'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1083' holder='1037' name='append' return='1037' arguments='970' flags='1' bytes='45' iicount='256'/>
+<call method='1083' instr='invokespecial'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.150'/>
+</phase>
+<parse_done stamp='0.150'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.150'>
+<phase_done name='optimize_blocks' stamp='0.150'/>
+</phase>
+<phase name='gvn' stamp='0.150'>
+<phase_done name='gvn' stamp='0.150'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.150'>
+<phase_done name='rangeCheckElimination' stamp='0.150'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.150'>
+<phase_done name='optimize_null_checks' stamp='0.150'/>
+</phase>
+<phase_done name='buildIR' stamp='0.150'/>
+</phase>
+<phase name='emit_lir' stamp='0.150'>
+<phase name='lirGeneration' stamp='0.150'>
+<phase_done name='lirGeneration' stamp='0.150'/>
+</phase>
+<phase name='linearScan' stamp='0.150'>
+<phase_done name='linearScan' stamp='0.150'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.150'/>
+</phase>
+<phase name='codeemit' stamp='0.150'>
+<phase_done name='codeemit' stamp='0.150'/>
+</phase>
+<phase name='codeinstall' stamp='0.150'>
+<phase_done name='codeinstall' stamp='0.150'/>
+</phase>
+<code_cache total_blobs='460' nmethods='91' adapters='232' free_code_cache='248734464'/>
+<task_done success='1' nmsize='424' count='256' stamp='0.150'/>
+</task>
+<task compile_id='95' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.151'>
+<phase_done name='setup' stamp='0.151'/>
+</phase>
+<phase name='buildIR' stamp='0.151'>
+<type id='964' name='void'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='962' name='int'/>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<parse method='1081' stamp='0.151'>
+<phase name='parse_hir' stamp='0.151'>
+<bc code='182' bci='1'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5374'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.151'/>
+</parse>
+<bc code='184' bci='22'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1086' holder='975' name='arraycopy' return='964' arguments='969 962 969 962 962' flags='265' bytes='0' compile_id='64' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1086' instr='invokestatic'/>
+<inline_success reason='intrinsic'/>
+<bc code='184' bci='40'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='inflate' return='964' arguments='1073 962 1073 962 962' flags='9' bytes='10' iicount='1'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='184' bci='6'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='inflate' return='964' arguments='1073 962 1073 962 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.151'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='463' nmethods='94' adapters='232' free_code_cache='248729984'/>
+<task_done success='1' nmsize='888' count='256' inlined_bytes='25' stamp='0.151'/>
+</task>
+<task compile_id='96' method='java.nio.Buffer position ()I' bytes='5' count='131' iicount='131' level='1' stamp='0.151'>
+<phase name='setup' stamp='0.151'>
+<phase_done name='setup' stamp='0.151'/>
+</phase>
+<phase name='buildIR' stamp='0.151'>
+<type id='962' name='int'/>
+<klass id='1052' name='java.nio.Buffer' flags='1025'/>
+<method id='1081' holder='1052' name='position' return='962' flags='17' bytes='5' iicount='135'/>
+<parse method='1081' stamp='0.151'>
+<phase name='parse_hir' stamp='0.151'>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='465' nmethods='96' adapters='232' free_code_cache='248726656'/>
+<task_done success='1' nmsize='272' count='139' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24140'>
+<start_compile_thread name='C1 CompilerThread0' thread='24140' process='24128' stamp='0.048'/>
+<task compile_id='2' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='1115' backedge_count='27858' iicount='1115' level='2' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' iicount='1115'/>
+<parse method='1082' stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<phase_done name='parse_hir' stamp='0.080'/>
+</phase>
+<parse_done stamp='0.080'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.080'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.091'/>
+</phase>
+<code_cache total_blobs='279' nmethods='5' adapters='140' free_code_cache='248922496'/>
+<task_done success='1' nmsize='432' count='1122' backedge_count='28066' stamp='0.091'/>
+</task>
+<task compile_id='11' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='1378' backedge_count='890' iicount='1378' level='3' stamp='0.091'>
+<phase name='setup' stamp='0.091'>
+<phase_done name='setup' stamp='0.091'/>
+</phase>
+<phase name='buildIR' stamp='0.091'>
+<type id='956' name='boolean'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='equals' return='956' arguments='1073 1073' flags='9' bytes='36' iicount='1378'/>
+<parse method='1082' stamp='0.091'>
+<phase name='parse_hir' stamp='0.091'>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='282' nmethods='8' adapters='140' free_code_cache='248916480'/>
+<task_done success='1' nmsize='688' count='1378' backedge_count='890' stamp='0.092'/>
+</task>
+<task compile_id='1' method='java.lang.Object <init> ()V' bytes='1' count='6599' iicount='6599' level='2' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='964' name='void'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1081' holder='969' name='<init>' return='964' flags='1' bytes='1' iicount='6602'/>
+<parse method='1081' stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='283' nmethods='9' adapters='140' free_code_cache='248915584'/>
+<task_done success='1' nmsize='336' count='6679' stamp='0.092'/>
+</task>
+<task compile_id='20' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='5760' iicount='5760' level='2' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='5763'/>
+<parse method='1082' stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='286' nmethods='12' adapters='140' free_code_cache='248899456'/>
+<task_done success='1' nmsize='368' count='5951' stamp='0.092'/>
+</task>
+<task compile_id='46' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='927' backedge_count='21' iicount='927' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<klass id='1082' name='java.util.HashMap$Node' flags='8'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1083' holder='1081' name='getNode' return='1082' arguments='962 969' flags='16' bytes='148' iicount='927'/>
+<parse method='1083' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='59'/>
+<type id='956' name='boolean'/>
+<method id='1086' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='94'/>
+<klass id='1087' name='java.util.HashMap$TreeNode' flags='24'/>
+<method id='1088' holder='1087' name='getTreeNode' return='1087' arguments='962 969' flags='16' bytes='22' iicount='1'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='126'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='292' nmethods='17' adapters='140' free_code_cache='248883072'/>
+<task_done success='1' nmsize='2600' count='927' backedge_count='21' stamp='0.093'/>
+</task>
+<task compile_id='5' method='java.lang.String coder ()B' bytes='15' count='3710' iicount='3710' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='coder' return='960' flags='0' bytes='15' iicount='3710'/>
+<parse method='1081' stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='296' nmethods='21' adapters='140' free_code_cache='248878080'/>
+<task_done success='1' nmsize='400' count='3726' stamp='0.094'/>
+</task>
+<task compile_id='10' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='2047' iicount='2047' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='equals' return='956' arguments='969' flags='1' bytes='65' iicount='2047'/>
+<parse method='1081' stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='182' bci='20'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='3726'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='24'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='31'/>
+<method id='1086' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='3229'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='184' bci='45'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='equals' return='956' arguments='1073 1073' flags='9' bytes='36' compile_id='11' compiler='c1' level='3' iicount='1468'/>
+<call method='1089' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='59'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='equals' return='956' arguments='1073 1073' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='305' nmethods='30' adapters='140' free_code_cache='248866176'/>
+<task_done success='1' nmsize='1720' count='2050' inlined_bytes='49' stamp='0.094'/>
+</task>
+<task compile_id='57' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='582' iicount='582' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='putIfAbsent' return='969' arguments='969 969' flags='1' bytes='13' iicount='582'/>
+<parse method='1082' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2715'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.095'/>
+</parse>
+<bc code='182' bci='9'/>
+<type id='956' name='boolean'/>
+<method id='1087' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1788'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='310' nmethods='35' adapters='140' free_code_cache='248858752'/>
+<task_done success='1' nmsize='856' count='582' inlined_bytes='20' stamp='0.095'/>
+</task>
+<task compile_id='12' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='592' iicount='592' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='1082' name='java.util.Set' flags='1537'/>
+<klass id='1081' name='java.util.Collections' flags='1'/>
+<method id='1083' holder='1081' name='emptySet' return='1082' flags='25' bytes='4' iicount='592'/>
+<parse method='1083' stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='316' nmethods='39' adapters='140' free_code_cache='248854912'/>
+<task_done success='1' nmsize='336' count='592' stamp='0.095'/>
+</task>
+<task compile_id='33' method='java.util.concurrent.ConcurrentHashMap$Node <init> (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='921' iicount='921' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<method id='1082' holder='1081' name='<init>' return='964' arguments='962 969 969' flags='0' bytes='20' iicount='921'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='183' bci='1'/>
+<method id='1084' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7390'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.096'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='319' nmethods='42' adapters='140' free_code_cache='248852096'/>
+<task_done success='1' nmsize='656' count='921' inlined_bytes='1' stamp='0.096'/>
+</task>
+<task compile_id='22' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='372' iicount='372' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.KeyValueHolder' flags='16'/>
+<method id='1082' holder='1081' name='getKey' return='969' flags='1' bytes='5' iicount='372'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='322' nmethods='45' adapters='140' free_code_cache='248849280'/>
+<task_done success='1' nmsize='272' count='372' stamp='0.096'/>
+</task>
+<task compile_id='23' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='312' iicount='312' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.KeyValueHolder' flags='16'/>
+<method id='1082' holder='1081' name='getValue' return='969' flags='1' bytes='5' iicount='312'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='325' nmethods='48' adapters='140' free_code_cache='248845952'/>
+<task_done success='1' nmsize='272' count='312' stamp='0.096'/>
+</task>
+<task compile_id='59' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='642' iicount='642' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='jdk.internal.module.ModuleBootstrap$2' flags='0'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='30' iicount='642'/>
+<parse method='1082' stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='185' bci='4'/>
+<klass id='1086' name='java.util.Iterator' flags='1537'/>
+<method id='1087' holder='1086' name='hasNext' return='956' flags='1025' bytes='0' iicount='1'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='16'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='329' nmethods='52' adapters='140' free_code_cache='248838784'/>
+<task_done success='1' nmsize='920' count='642' stamp='0.097'/>
+</task>
+<task compile_id='9' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='202' iicount='202' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.Collections$EmptySet' flags='10'/>
+<method id='1082' holder='1081' name='hashCode' return='962' flags='1' bytes='2' iicount='202'/>
+<parse method='1082' stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='333' nmethods='56' adapters='140' free_code_cache='248835456'/>
+<task_done success='1' nmsize='272' count='202' stamp='0.097'/>
+</task>
+<task compile_id='62' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='257' iicount='257' level='3' stamp='0.120'>
+<phase name='setup' stamp='0.120'>
+<phase_done name='setup' stamp='0.120'/>
+</phase>
+<phase name='buildIR' stamp='0.120'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.util.zip.ZipUtils' flags='0'/>
+<method id='1082' holder='1081' name='SH' return='962' arguments='1073 962' flags='24' bytes='21' iicount='257'/>
+<parse method='1082' stamp='0.120'>
+<phase name='parse_hir' stamp='0.120'>
+<phase_done name='parse_hir' stamp='0.120'/>
+</phase>
+<parse_done stamp='0.120'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.120'>
+<phase_done name='optimize_blocks' stamp='0.120'/>
+</phase>
+<phase name='gvn' stamp='0.120'>
+<phase_done name='gvn' stamp='0.120'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.120'>
+<phase_done name='rangeCheckElimination' stamp='0.120'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.120'>
+<phase_done name='optimize_null_checks' stamp='0.120'/>
+</phase>
+<phase_done name='buildIR' stamp='0.120'/>
+</phase>
+<phase name='emit_lir' stamp='0.120'>
+<phase name='lirGeneration' stamp='0.120'>
+<phase_done name='lirGeneration' stamp='0.120'/>
+</phase>
+<phase name='linearScan' stamp='0.120'>
+<phase_done name='linearScan' stamp='0.120'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.120'/>
+</phase>
+<phase name='codeemit' stamp='0.120'>
+<phase_done name='codeemit' stamp='0.120'/>
+</phase>
+<phase name='codeinstall' stamp='0.120'>
+<phase_done name='codeinstall' stamp='0.120'/>
+</phase>
+<code_cache total_blobs='391' nmethods='62' adapters='192' free_code_cache='248795776'/>
+<task_done success='1' nmsize='400' count='257' stamp='0.120'/>
+</task>
+<task compile_id='68' method='java.util.AbstractMap <init> ()V' bytes='5' count='384' iicount='384' level='3' stamp='0.127'>
+<phase name='setup' stamp='0.127'>
+<phase_done name='setup' stamp='0.127'/>
+</phase>
+<phase name='buildIR' stamp='0.127'>
+<type id='964' name='void'/>
+<klass id='1081' name='java.util.AbstractMap' flags='1025'/>
+<method id='1082' holder='1081' name='<init>' return='964' flags='4' bytes='5' iicount='384'/>
+<parse method='1082' stamp='0.127'>
+<phase name='parse_hir' stamp='0.127'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1084' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='8305'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.127'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.127'/>
+</phase>
+<parse_done stamp='0.127'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.127'>
+<phase_done name='optimize_blocks' stamp='0.127'/>
+</phase>
+<phase name='gvn' stamp='0.127'>
+<phase_done name='gvn' stamp='0.127'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.127'>
+<phase_done name='rangeCheckElimination' stamp='0.127'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.127'>
+<phase_done name='optimize_null_checks' stamp='0.127'/>
+</phase>
+<phase_done name='buildIR' stamp='0.127'/>
+</phase>
+<phase name='emit_lir' stamp='0.127'>
+<phase name='lirGeneration' stamp='0.127'>
+<phase_done name='lirGeneration' stamp='0.127'/>
+</phase>
+<phase name='linearScan' stamp='0.127'>
+<phase_done name='linearScan' stamp='0.127'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.127'/>
+</phase>
+<phase name='codeemit' stamp='0.127'>
+<phase_done name='codeemit' stamp='0.127'/>
+</phase>
+<phase name='codeinstall' stamp='0.127'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.127'/>
+</phase>
+<code_cache total_blobs='403' nmethods='68' adapters='198' free_code_cache='248784256'/>
+<task_done success='1' nmsize='432' count='384' inlined_bytes='1' stamp='0.127'/>
+</task>
+<task compile_id='72' method='java.lang.String indexOf (II)I' bytes='29' count='261' iicount='261' level='3' stamp='0.132'>
+<phase name='setup' stamp='0.132'>
+<phase_done name='setup' stamp='0.132'/>
+</phase>
+<phase name='buildIR' stamp='0.132'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='indexOf' return='962' arguments='962 962' flags='1' bytes='29' iicount='261'/>
+<parse method='1081' stamp='0.132'>
+<phase name='parse_hir' stamp='0.132'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='5713'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.132'/>
+</parse>
+<bc code='184' bci='13'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' compile_id='61' compiler='c1' level='3' iicount='263'/>
+<call method='1087' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='25'/>
+<klass id='1089' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1090' holder='1089' name='indexOf' return='962' arguments='1073 962 962' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.132'/>
+</phase>
+<parse_done stamp='0.132'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.132'>
+<phase_done name='optimize_blocks' stamp='0.132'/>
+</phase>
+<phase name='gvn' stamp='0.132'>
+<phase_done name='gvn' stamp='0.132'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.132'>
+<phase_done name='rangeCheckElimination' stamp='0.132'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.132'>
+<phase_done name='optimize_null_checks' stamp='0.132'/>
+</phase>
+<phase_done name='buildIR' stamp='0.132'/>
+</phase>
+<phase name='emit_lir' stamp='0.132'>
+<phase name='lirGeneration' stamp='0.132'>
+<phase_done name='lirGeneration' stamp='0.132'/>
+</phase>
+<phase name='linearScan' stamp='0.132'>
+<phase_done name='linearScan' stamp='0.132'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.132'/>
+</phase>
+<phase name='codeemit' stamp='0.132'>
+<phase_done name='codeemit' stamp='0.132'/>
+</phase>
+<phase name='codeinstall' stamp='0.132'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='408' nmethods='72' adapters='199' free_code_cache='248777088'/>
+<task_done success='1' nmsize='728' count='265' inlined_bytes='19' stamp='0.133'/>
+</task>
+<task compile_id='76' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='115' backedge_count='2272' iicount='115' level='3' stamp='0.135'>
+<phase name='setup' stamp='0.135'>
+<phase_done name='setup' stamp='0.135'/>
+</phase>
+<phase name='buildIR' stamp='0.135'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='lastIndexOf' return='962' arguments='1073 962 962' flags='9' bytes='40' iicount='115'/>
+<parse method='1082' stamp='0.135'>
+<phase name='parse_hir' stamp='0.135'>
+<bc code='184' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' compile_id='69' compiler='c1' level='3' iicount='656'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.135'/>
+</parse>
+<bc code='184' bci='14'/>
+<klass id='1086' name='java.lang.Math' flags='17'/>
+<method id='1087' holder='1086' name='min' return='962' arguments='962 962' flags='9' bytes='11' compile_id='67' compiler='c1' level='3' iicount='581'/>
+<call method='1087' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.135'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.135'/>
+</phase>
+<parse_done stamp='0.135'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.135'>
+<phase_done name='optimize_blocks' stamp='0.135'/>
+</phase>
+<phase name='gvn' stamp='0.135'>
+<phase_done name='gvn' stamp='0.135'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.135'>
+<phase_done name='rangeCheckElimination' stamp='0.135'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.135'>
+<phase_done name='optimize_null_checks' stamp='0.135'/>
+</phase>
+<phase_done name='buildIR' stamp='0.135'/>
+</phase>
+<phase name='emit_lir' stamp='0.135'>
+<phase name='lirGeneration' stamp='0.135'>
+<phase_done name='lirGeneration' stamp='0.135'/>
+</phase>
+<phase name='linearScan' stamp='0.135'>
+<phase_done name='linearScan' stamp='0.136'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.136'/>
+</phase>
+<phase name='codeemit' stamp='0.136'>
+<phase_done name='codeemit' stamp='0.136'/>
+</phase>
+<phase name='codeinstall' stamp='0.136'>
+<phase_done name='codeinstall' stamp='0.136'/>
+</phase>
+<code_cache total_blobs='412' nmethods='76' adapters='199' free_code_cache='248771584'/>
+<task_done success='1' nmsize='1040' count='118' backedge_count='2314' inlined_bytes='24' stamp='0.136'/>
+</task>
+<task compile_id='84' method='java.lang.String <init> ([BB)V' bytes='15' count='257' iicount='257' level='3' stamp='0.147'>
+<phase name='setup' stamp='0.147'>
+<phase_done name='setup' stamp='0.147'/>
+</phase>
+<phase name='buildIR' stamp='0.147'>
+<type id='964' name='void'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='<init>' return='964' arguments='1073 960' flags='0' bytes='15' iicount='257'/>
+<parse method='1081' stamp='0.147'>
+<phase name='parse_hir' stamp='0.147'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1083' holder='969' name='<init>' return='964' flags='1' bytes='1' compile_id='77' compiler='c1' level='1' iicount='8612'/>
+<call method='1083' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.147'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.147'/>
+</phase>
+<parse_done stamp='0.147'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.147'>
+<phase_done name='optimize_blocks' stamp='0.147'/>
+</phase>
+<phase name='gvn' stamp='0.147'>
+<phase_done name='gvn' stamp='0.147'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.147'>
+<phase_done name='rangeCheckElimination' stamp='0.147'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.147'>
+<phase_done name='optimize_null_checks' stamp='0.147'/>
+</phase>
+<phase_done name='buildIR' stamp='0.147'/>
+</phase>
+<phase name='emit_lir' stamp='0.147'>
+<phase name='lirGeneration' stamp='0.147'>
+<phase_done name='lirGeneration' stamp='0.147'/>
+</phase>
+<phase name='linearScan' stamp='0.147'>
+<phase_done name='linearScan' stamp='0.147'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.147'/>
+</phase>
+<phase name='codeemit' stamp='0.147'>
+<phase_done name='codeemit' stamp='0.147'/>
+</phase>
+<phase name='codeinstall' stamp='0.147'>
+<phase_done name='codeinstall' stamp='0.147'/>
+</phase>
+<code_cache total_blobs='453' nmethods='84' adapters='232' free_code_cache='248739584'/>
+<task_done success='1' nmsize='528' count='257' inlined_bytes='1' stamp='0.147'/>
+</task>
+<task compile_id='92' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='1037' name='append' return='1037' arguments='970' flags='1' bytes='45' iicount='256'/>
+<parse method='1081' stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='182' bci='5'/>
+<method id='1083' holder='1037' name='appendNull' return='1037' flags='2' bytes='83' iicount='1'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='10'/>
+<type id='962' name='int'/>
+<method id='1085' holder='970' name='length' return='962' flags='1' bytes='11' compile_id='60' compiler='c1' level='3' iicount='1240'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<bc code='182' bci='6'/>
+<type id='960' name='byte'/>
+<method id='1087' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5364'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.150'/>
+</parse>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='21'/>
+<type id='964' name='void'/>
+<method id='1090' holder='1037' name='ensureCapacityInternal' return='964' arguments='962' flags='2' bytes='39' compile_id='66' compiler='c1' level='3' iicount='367'/>
+<call method='1090' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='30'/>
+<method id='1092' holder='1037' name='putStringAt' return='964' arguments='962 970' flags='18' bytes='29' iicount='256'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1092'>
+<bc code='182' bci='1'/>
+<method id='1094' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='5'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.151'/>
+</parse>
+<bc code='182' bci='12'/>
+<method id='1096' holder='1037' name='inflate' return='964' flags='2' bytes='42' iicount='1'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='25'/>
+<klass id='1073' name='[B' flags='1041'/>
+<method id='1098' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<call method='1098' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.151'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='464' nmethods='95' adapters='232' free_code_cache='248727424'/>
+<task_done success='1' nmsize='1400' count='256' inlined_bytes='85' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24139'>
+<start_compile_thread name='C2 CompilerThread0' thread='24139' process='24128' stamp='0.048'/>
+<task compile_id='55' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5642' iicount='5642' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' compile_id='21' compiler='c1' level='3' iicount='5644'/>
+<parse method='1082' uses='5644.000000' stamp='0.094'>
+<bc code='155' bci='8'/>
+<branch target_bci='31' taken='0' not_taken='5644' cnt='5644.000000' prob='never'/>
+<bc code='180' bci='19'/>
+<uncommon_trap bci='19' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='190' bci='22'/>
+<uncommon_trap bci='22' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='161' bci='23'/>
+<branch target_bci='49' taken='5458' not_taken='186' cnt='5644.000000' prob='0.967045'/>
+<parse_done nodes='87' live='84' memory='30880' stamp='0.094'/>
+</parse>
+<regalloc attempts='0' success='1'/>
+<code_cache total_blobs='313' nmethods='36' adapters='140' free_code_cache='248852608'/>
+<task_done success='1' nmsize='152' count='5774' stamp='0.095'/>
+</task>
+</compilation_log>
+<hotspot_log_done stamp='0.154'/>
+</hotspot_log>
--- a/test/hotspot/gtest/gc/g1/test_heapRegion.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/g1/test_heapRegion.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "gc/g1/heapRegion.inline.hpp"
#include "gc/shared/referenceProcessor.hpp"
#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
#include "unittest.hpp"
--- a/test/hotspot/gtest/gc/shared/test_oopStorage.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -34,7 +34,7 @@
#include "runtime/mutex.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
#include "utilities/align.hpp"
#include "utilities/ostream.hpp"
--- a/test/hotspot/gtest/gc/shared/test_oopStorage_parperf.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage_parperf.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
#include "runtime/interfaceSupport.inline.hpp"
#include "runtime/os.hpp"
#include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "runtime/vmThread.hpp"
#include "utilities/debug.hpp"
#include "utilities/ostream.hpp"
--- a/test/hotspot/gtest/threadHelper.inline.hpp Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/threadHelper.inline.hpp Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
#include "runtime/semaphore.hpp"
#include "runtime/thread.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "unittest.hpp"
class VM_StopSafepoint : public VM_Operation {
--- a/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,7 @@
#include "runtime/semaphore.hpp"
#include "runtime/thread.hpp"
#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
#include "utilities/concurrentHashTable.inline.hpp"
#include "utilities/concurrentHashTableTasks.inline.hpp"
#include "threadHelper.inline.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/applications/ctw/modules/jdk_jfr.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary run CTW for all classes from jdk.jfr module
+ *
+ * @library /test/lib / /testlibrary/ctw/src
+ * @modules java.base/jdk.internal.access
+ * java.base/jdk.internal.jimage
+ * java.base/jdk.internal.misc
+ * java.base/jdk.internal.reflect
+ * @modules jdk.jfr
+ *
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/timeout=7200 sun.hotspot.tools.ctw.CtwRunner modules:jdk.jfr
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/applications/ctw/modules/jdk_management_jfr.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary run CTW for all classes from jdk.management.jfr module
+ *
+ * @library /test/lib / /testlibrary/ctw/src
+ * @modules java.base/jdk.internal.access
+ * java.base/jdk.internal.jimage
+ * java.base/jdk.internal.misc
+ * java.base/jdk.internal.reflect
+ * @modules jdk.management.jfr
+ *
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/timeout=7200 sun.hotspot.tools.ctw.CtwRunner modules:jdk.management.jfr
+ */
--- a/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java Fri Dec 07 09:46:53 2018 -0500
@@ -57,21 +57,19 @@
release
};
- static TestPhase phase = TestPhase.alloc;
+ static volatile TestPhase phase = TestPhase.alloc;
// malloc'd memory
- static ArrayList<MallocMemory> mallocd_memory = new ArrayList<MallocMemory>();
+ static final ArrayList<MallocMemory> mallocd_memory = new ArrayList<MallocMemory>();
static long mallocd_total = 0;
static WhiteBox whiteBox;
static AtomicInteger pause_count = new AtomicInteger();
- static boolean is_64_bit_system;
+ static final boolean is_64_bit_system = Platform.is64bit();
private static boolean is_64_bit_system() { return is_64_bit_system; }
public static void main(String args[]) throws Exception {
- is_64_bit_system = (Platform.is64bit());
-
OutputAnalyzer output;
whiteBox = WhiteBox.getWhiteBox();
--- a/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorEventOnOffTest.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorEventOnOffTest.java Fri Dec 07 09:46:53 2018 -0500
@@ -35,7 +35,6 @@
*/
public class HeapMonitorEventOnOffTest {
public static void main(String[] args) {
- HeapMonitor.enableSamplingEvents();
HeapMonitor.allocateAndCheckFrames();
// Disabling the notification system should stop events.
@@ -43,8 +42,8 @@
HeapMonitor.resetEventStorage();
HeapMonitor.allocateAndCheckFrames(false, false);
- // Enabling the notification system should start events again.
- HeapMonitor.enableSamplingEvents();
+ // By calling allocateAndCheckFrames(), we enable the notifications and check if allocations
+ // get sampled again.
HeapMonitor.allocateAndCheckFrames();
}
}
--- a/test/hotspot/jtreg/testlibrary/ctw/src/sun/hotspot/tools/ctw/CtwRunner.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/testlibrary/ctw/src/sun/hotspot/tools/ctw/CtwRunner.java Fri Dec 07 09:46:53 2018 -0500
@@ -272,6 +272,7 @@
"--add-exports", "java.base/jdk.internal.jimage=ALL-UNNAMED",
"--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED",
"--add-exports", "java.base/jdk.internal.reflect=ALL-UNNAMED",
+ "--add-exports", "java.base/jdk.internal.access=ALL-UNNAMED",
// enable diagnostic logging
"-XX:+LogCompilation",
// use phase specific log, hs_err and ciReplay files
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/TEST.properties Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-exclusiveAccess.dirs=.
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network001.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +0,0 @@
-/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network001.
- * VM testbase keywords: [stress, diehard, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- * This test transfers huge amount of data between server and client
- * TCP/IP sockets, and checks if those data are transfered correctly.
- * Both sockets are attached to local host name, or to the loopback
- * "localhost" (having IP address 127.0.0.1).
- * Information transfer is synchronized in this test. Client passes
- * a large data parcel to server, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those bytes.
- * This ping-pong game is repeated 2000 times; and after that both sockets
- * check if there are no extra bytes accudentally passed through their
- * connection.
- * Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 sockets passes ~250Kb of
- * data to its partner, and thus ~500Kb of data are transfered by this test.
- * COMMENTS
- * Note, that HotSpot 1.3beta-H fails to start this test due to the bug:
- * #4245704 (P1/S1) Fails to launch with: jre/bin/net.dll ...
- *
- * @run main/othervm nsk.stress.network.network001
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between server and client
- * TCP/IP sockets, and checks if those data are transfered correctly.
- * Both sockets are attached to local host name, or to the loopback
- * ``localhost'' (having IP address 127.0.0.1).
- * <p>
- * <p>Information transfer is synchronized in this test. Client passes
- * a large data parcel to server, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those bytes.
- * This ping-pong game is repeated 2000 times; and after that both sockets
- * check if there are no extra bytes accudentally passed through their
- * connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 sockets passes ~250Kb of
- * data to its partner, and thus ~500Kb of data are transfered by this test.
- */
-public class network001 {
- /**
- * Number of parcels to be sent/recieve.
- */
- private static final int DATA_PARCELS = 2000;
-
- /**
- * Maximal length of data parcel to be sent/recieved
- * (now it equals to 250 bytes).
- */
- private static final int MAX_PARCEL = 250;
-
- /**
- * Either actually display optional reports or not.
- */
- static private final boolean DEBUG_MODE = false;
-
- /**
- * Errors and optional reports log. Usually <code>System.out</code>.
- */
- static private PrintStream out = System.out;
-
- /**
- * Print error message: both client and server may print
- * concurently.
- */
- static private synchronized void println(Object message) {
- out.println(message.toString());
- }
-
- /**
- * Display optional report: comment ca va.
- */
- static private void display(Object report) {
- if (DEBUG_MODE)
- println(report.toString());
- }
-
- /**
- * Server thread intended to reply to data parcels sent by Client thread.
- */
- static private class Server extends Thread {
- /**
- * This server thread listens the single socket.
- */
- private ServerSocket serverSocket;
-
- /**
- * Address and port of this server socket.
- */
- public String toString() {
- return serverSocket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * Which port does this socket is listening.
- */
- int getPort() {
- return serverSocket.getLocalPort();
- }
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port.
- */
- Server(InetAddress address) throws IOException {
- int someFreePort = 0;
- int backlog = 50; // default for new ServerSocket(port)
- serverSocket = new ServerSocket(someFreePort, backlog, address);
- }
-
- /**
- * Accept connection, read the string "abra", and respond "cadabra".
- */
- public void run() {
- try {
- Socket socket = serverSocket.accept();
- display("Server socket: " + socket);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(0);
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Server thread got unexpected parcel:");
- println("sample=" + sample);
- println("etalon=" + etalon);
- throw new TestFailure(
- "server has read unexpected parcel");
- }
-
- etalon.send(ostream);
- ostream.flush();
- }
-
- int datum = istream.read(); // wait for client close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- /**
- * Client thread intended to send data parcels to Server thread and
- * to recieve the server's replies.
- */
- static private class Client extends Thread {
- /**
- * This thread uses the single client socket.
- */
- private Socket socket;
-
- /**
- * Address and port of this socket.
- */
- public String toString() {
- return socket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * Connect client socket on the given <code>address</code>
- * and <code>port</code>.
- */
- Client(InetAddress address, int port) throws IOException {
- socket = new Socket(address, port);
- }
-
- /**
- * Accept connection, read the string "abra", and respond "cadabra".
- */
- public void run() {
- try {
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(0);
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
- etalon.send(ostream);
- ostream.flush();
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Client thread got unexpected parcel:");
- println("sample=" + sample);
- println("etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
-
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- /**
- * A data parcel to sent/recieved between Client and Server threads.
- * When data parcel is sent, first 4 bytes transfered encode the size
- * of the parcel (i.e.: number of data bytes in the parcel's contents).
- * Then the parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
-
- }
-
- /**
- * Server or Client thread may throw this exception to report the test
- * failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
-
- }
-
- /**
- * Attach client and server sockets to the local host, and check if
- * huge amount of data could be correctly transfered between these
- * sockets.
- * <p>
- * <p>Command-line parameters provided with <code>args[]</code> may
- * prompt the local host IP address or domain name. Execute:
- * <br>
- * <code>java network001 [<i>IP-address</i> | <i>host_name</i> |
- * localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <br>By default, the test uses the Internet address available via
- * the method <code>InetAddress.getLocalHost()</code>
- */
- public static int run(String args[], PrintStream out) {
- network001.out = out;
-
- //
- // Get IP address of the local machine.
- //
-
- InetAddress address = null;
- try {
- switch (args.length) {
- case 0:
- address = InetAddress.getLocalHost();
- break;
- case 1:
- String hostName = args[0];
- address = InetAddress.getByName(args[0]);
- break;
- default:
- println("Use:");
- println(" java network001");
- println("or:");
- println(" java network001 ${IP_ADDRESS}");
- println("or:");
- println(" java network001 ${HOST_NAME}");
- println("or:");
- println(" java network001 localhost");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- println(exception);
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Incarnate the server & the client sockets.
- //
-
- Server server = null;
- try {
- server = new Server(address);
- } catch (IOException io) {
- println("Failed to create server: " + io);
- return 2;
- }
- display("Server: " + server);
-
- int port = server.getPort();
-
- Client client = null;
- try {
- client = new Client(address, port);
- } catch (IOException io) {
- out.println("Failed to create client: " + io);
- return 2;
- }
- display("Client socket: " + client);
-
- //
- // Execute the server and client threads.
- //
-
- Exception exception = null;
- try {
- server.start();
- client.start();
- while (client.isAlive() || server.isAlive())
- if (client.exception == null && server.exception == null)
- Thread.yield();
- else
- break;
- } catch (TestFailure failure) {
- exception = failure;
- }
-
- // Failure diagnostics, if needed.
-
- Exception problem[] = new Exception[3];
- problem[0] = exception;
- problem[1] = server.exception;
- problem[2] = client.exception;
-
- int exitCode = 0;
-
- for (int i = 0; i < 3; i++)
- if (problem[i] != null) {
- out.println("#### OOPS ! ####");
- problem[i].printStackTrace(out);
- exitCode = 2;
- }
-
- if (exitCode != 0) {
- out.println("#### OOPS ! ####");
- out.println("# Test failed.");
- return 2; // FAILED
- }
- display("Test passed.");
- return 0; // PASSED
- }
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test; and stop with exit code 95 if the test
- * has passed, or with code 97 if the test has failed.
- * (This is JCK-like exit codes convention.)
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit code.
- }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network002.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,697 +0,0 @@
-/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network002.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain "localhost" (having IP
- * address 127.0.0.1).
- * Information transfer is synchronized in this test. Client VM passes
- * a large data parcel to server VM, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those data.
- * This ping-pong game is repeated 2000 times; and after that both VMs check
- * if there are no extra bytes accudentally passed through their connection.
- * Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 VMs passes ~250Kb of data
- * to its partner, and thus ~500Kb of data are transfered by this test.
- * COMMENTS
- * HotSpot 1.3beta-H fails to start this test due to the hotspot bug:
- * #4245704 (P1/S1) Fails to launch with: jre/bin/net.dll ...
- * Test was fixed:
- * added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- * /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network002
- * @run main/othervm PropertyResolvingWrapper
- * nsk.stress.network.network002
- * "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain ``<code>localhost</code>''
- * (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>Information transfer is synchronized in this test. Client VM passes
- * a large data parcel to server VM, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those data.
- * This ping-pong game is repeated 2000 times; and after that both VMs check
- * if there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 VMs passes ~250Kb of data
- * to its partner, and thus ~500Kb of data are transfered by this test.
- */
-public class network002 {
- /**
- * Timeout for TCP/IP sockets (currently set to 1 min).
- */
- private static int SO_TIMEOUT;
-
- /**
- * Number of parcels to be sent/recieved.
- */
- private static final int DATA_PARCELS = 2000;
-
- /**
- * Maximal length of data parcel to be sent/recieved.
- */
- private static final int MAX_PARCEL = 250;
-
- /**
- * Either actually display optional reports or not.
- */
- static private final boolean DEBUG_MODE = false;
-
- //----------------------------------------------------------------//
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test. After <code>run(args[],out)</code> stops,
- * follow JDK-like convention for exit codes. I.e.: stop with
- * exit status 95 if the test has passed, or with status 97 if
- * the test has failed.
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit status.
- }
-
- /**
- * Incarnate new <code>network002</code> instance reporting to the given
- * <code>out</code> stream, and invoke the method <code>run(args)</code>
- * for that instance to perform the test.
- */
- public static int run(String args[], PrintStream out) {
- network002 test = new network002(out);
- int exitCode = test.run(args);
- return exitCode;
- }
-
- /**
- * Parse command-line parameters stored into <code>args[]</code> array,
- * then perform the test. I.e.: start the server thread at the same VM
- * this method runs, then start the other client VM, and verify data
- * transfer through TCP/IP connection between those different virtual
- * machines.
- * <p>
- * <p>There should be 1 or 2 command-line parameters:
- * <br>
- * <code>java network002 <i>java_command</i> <i>waittime</i>
- * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>java_command</i></code> - how to start java,
- * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
- * <br>
- * <code>waittime</code> - timeout for TCP/IP sockets in minutes
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <p>
- * <p>Usually, <code><i>java_command</i></code> should point to the same
- * Java machine just executing this test. However, every compatible Java 2
- * implementation is appropriate.
- * <p>
- * <p>If optional parameter is ommited, the test invokes the method
- * <code>InetAddress.getLocalHost()</code> to get the domain name and
- * IP-address of the local computer.
- */
- private int run(String args[]) {
- //
- // Get the Internet address of the local machine.
- //
- InetAddress address = null;
- try {
- switch (args.length) {
- case 2:
- address = InetAddress.getLocalHost();
- break;
- case 3:
- address = InetAddress.getByName(args[2]);
- break;
- default:
- complain("Illegal arguments number; execute:");
- complain(" java network002 $JAVA_COMMAND " +
- "[$IP_ADDRESS | $HOST_NAME | localhost]");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- complain(exception.toString());
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Start the server thread on the same VM this method just runs.
- //
- Server server = null;
- try {
- server = new Server(address);
- server.start();
- } catch (Exception exception) {
- complain("Failed to start server: " + exception);
- return 2;
- }
- display("Server: " + server);
-
- //
- // Start the client process on different VM.
- //
- String IPAddress = server.getIPAddress(); // e.g.: 127.0.0.1
- int port = server.getPort();
- String command = args[0] + " " + network002.class.getName() + "$Client " + IPAddress + " " + port;
- try {
- SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
- } catch (NumberFormatException e) {
- complain("Wrong timeout argument: " + e);
- return 2;
- }
-
- Runtime runtime = Runtime.getRuntime();
-
- Process client = null;
- IORedirector redirectOut = null;
- IORedirector redirectErr = null;
-
- try {
- client = runtime.exec(command);
-
- InputStream clientOut = client.getInputStream();
- InputStream clientErr = client.getErrorStream();
- redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
- redirectErr = new IORedirector(clientErr, out);
- redirectOut.start();
- redirectErr.start();
-
- } catch (Exception exception) {
- complain("Failed to start client: " + exception);
- return 2;
- }
-
- //
- // Wait until the server and client both stop.
- //
- try {
- client.waitFor();
- if (redirectOut.isAlive())
- redirectOut.join();
- if (redirectErr.isAlive())
- redirectErr.join();
-
- // If client has crashed, also terminate the server (to avoid hangup).
- int clientStatus = client.exitValue();
- if (clientStatus != 95) {
- complain("");
- complain("Client VM has crashed: exit status=" + clientStatus);
- if (server.isAlive())
- complain("Server also should be terminated.");
- complain("Test failed.");
- return 2; // failure
- }
-
- // Client has finished OK; wait for the server.
- if (server.isAlive())
- server.join();
-
- } catch (Exception exception) {
- complain("Test interrupted: " + exception);
- complain("Test failed.");
- return 2; // FAILURE
- }
-
- //
- // Complain failure, if occured.
- //
-
- if (server.exception != null) {
- complain("Server exception: " + server.exception);
- complain("Test failed.");
- return 2; // failure
- }
-
- display("Test passed.");
- return 0; // Ok
- }
-
- //----------------------------------------------------------------//
-
- /**
- * The test should report to the given <code>out</code> stream.
- */
- private network002(PrintStream out) {
- this.out = out;
- }
-
- /**
- * Log stream for error messages and/or (optional) execution trace.
- */
- private PrintStream out;
-
- /**
- * Print error message.
- */
- private void complain(Object message) {
- out.println("# " + message);
- out.flush();
- }
-
- /**
- * Display optional report: comment ca va?
- */
- private void display(Object report) {
- if (DEBUG_MODE)
- out.println(report.toString());
- out.flush();
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Server thread should reply to data parcels sent by Client VM.
- */
- private class Server extends Thread {
- /**
- * The socket to listen for a client.
- */
- private ServerSocket serverSocket;
-
- /**
- * Display the server socket.
- */
- public String toString() {
- return serverSocket.toString();
- }
-
- /**
- * Server's IP-address in the form ``<code><i>x.y.u.z</i></code>'',
- * or ``<code>127.0.0.1</code>'' for loopback connection.
- */
- public String getIPAddress() {
- return serverSocket.getInetAddress().getHostAddress();
- }
-
- /**
- * Which port is this socket listening?
- */
- int getPort() {
- return serverSocket.getLocalPort();
- }
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port.
- */
- public Server(InetAddress address) throws IOException {
- int someFreePort = 0;
- int backlog = 50; // default for new ServerSocket(port)
- serverSocket = new ServerSocket(someFreePort, backlog, address);
- }
-
- /**
- * Exception just arisen while the server was working,
- * or <code>null</code> if it was OK with the server.
- */
- Exception exception = null;
-
- /**
- * Accept connection, then reply to client's parcels.
- */
- public void run() {
- try {
- Socket socket = serverSocket.accept();
- socket.setSoTimeout(SO_TIMEOUT);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(0);
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- display("Server: i=" + i);
- Parcel etalon = new Parcel(random);
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Server got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "the parcel just read seems wrong for server");
- }
-
- etalon.send(ostream);
- ostream.flush();
- }
-
- int datum = istream.read(); // wait for client close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Client VM should send data parcels to Server VM and
- * recieve and verify the server's replies.
- */
- private static class Client {
- /**
- * Print error message.
- */
- private static void complain(Object message) {
- System.err.println("# " + message);
- System.err.flush();
- }
-
- /**
- * Display execution trace.
- */
- private static void display(Object message) {
- System.out.println(message.toString());
- System.out.flush();
- }
-
- /**
- * Exit with JCK-like status.
- */
- private static void exit(int exitCode) {
- System.exit(exitCode + 95);
- }
-
- /**
- * Atack server with huge data parcels, and check if it replies correctly.
- * The command-line parameters prescribe the server's IP-address and port:
- * <br>
- * <code>java network002$Client <i>IP-address</i> <i>port</i></code>
- * <br>where:
- * <br>
- * <code><i>IP-address</i></code> - local host's address,
- * or <code>127.0.0.1</code>
- * <br>
- * <code><i>port</i></code> - some port assigned by server
- */
- public static void main(String args[]) {
- if (args.length != 2) {
- complain("Illegal number of client paramenets, try:");
- complain(" java network002$Client IP-address port");
- exit(2); // FAILED
- }
-
- try {
- InetAddress address = InetAddress.getByName(args[0]);
- int port = Integer.parseInt(args[1]);
-
- Socket socket = new Socket(address, port);
- socket.setSoTimeout(SO_TIMEOUT);
- display("Client: " + socket);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(0);
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- display("Client: i=" + i);
- Parcel etalon = new Parcel(random);
- etalon.send(ostream);
- ostream.flush();
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Client got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
-
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
-
- } catch (Exception exception) {
- complain("Client exception: " + exception);
- exit(2); // FAILED
- }
- exit(0); // PASSED, at least at the client side.
- }
-
- }
-
- /**
- * Two of such threads should redirect <code>out</code> and <code>err</code>
- * streams of client VM.
- */
- private static class IORedirector extends Thread {
- /**
- * Source stream.
- */
- InputStream in;
- /**
- * Destination stream.
- */
- OutputStream out;
-
- /**
- * Redirect <code>in</code> to <code>out</code>.
- */
- public IORedirector(InputStream in, OutputStream out) {
- this.in = in;
- this.out = out;
- }
-
- /**
- * Read input stream until the EOF, and write everithing to output stream.
- * If output stream is assigned to <code>null</code>, do not print anything,
- * but read the input stream anywhere.
- */
- public void run() {
- try {
- for (; ; ) {
- int symbol = in.read();
- if (symbol < 0)
- break; // EOF
- if (out != null)
- out.write(symbol);
- }
-
- if (out != null)
- out.flush();
-
- } catch (Exception exception) {
- throw new TestFailure("IORedirector exception: " + exception);
- }
- }
- }
-
- //----------------------------------------------------------------//
-
- /**
- * A data parcel to be sent/recieved between Client VM and Server thread.
- * When data parcel is sent, first 4 bytes are transfered which encode the
- * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
- * number of data bytes in the parcel's contents is <code>N</code>, then
- * the first 4 bytes encode the number <code>N-1</code>. After that, the
- * parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
-
- }
-
- /**
- * Server or Client may throw this exception to report the test failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
-
- }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network003.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,658 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network003.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- * This test transfers huge amount of data between one server and multiple
- * clients communicating via TCP/IP sockets, and checks if those data are
- * transfered correctly. All TCP/IP sockets are attached to local host
- * (by its domain name), or to the ``localhost'' loopback (having the IP
- * address 127.0.0.1).
- * In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- * The production Solaris_JDK_1.3-b12 Server VM crashes under this test:
- * #
- * # HotSpot Virtual Machine Error, Unexpected Signal 10
- * # Please report this error at
- * # http://java.sun.com/cgi-bin/bugreport.cgi
- * #
- * # Error ID: 4F533F534F4C415249530E43505007D9 01
- * #
- * # Problematic Thread: prio=5 tid=0x214418 nid=0x103 runnable
- * #
- * (ErrorID == "os_solaris.cpp, 2009")
- *
- * @run main/othervm nsk.stress.network.network003
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between one server and multiple
- * clients communicating via TCP/IP sockets, and checks if those data are
- * transfered correctly. All TCP/IP sockets are attached to local host
- * (by its domain name), or to the ``localhost'' loopback (having the IP
- * address 127.0.0.1).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network003 {
- /**
- * Do actually display optional reports?
- */
- static private final boolean DEBUG_MODE = false;
-
- /**
- * Errors and optional reports log. Usually <code>System.out</code>.
- */
- static private PrintStream out = System.out;
-
- /**
- * Print error message: all clients and servers may print concurently.
- */
- static private synchronized void println(Object message) {
- out.println(message.toString());
- }
-
- /**
- * Display optional report: comment ca va.
- */
- static private void display(Object report) {
- if (DEBUG_MODE)
- println(report.toString());
- }
-
- /**
- * Maximal number of connections this test should open simultaneously.
- */
- private final static int MAX_CONNECTIONS = 128;
-
- /**
- * Check few more connections to make sure that MAX_CONNECTIONS are safe.
- */
- private final static int CONNECTIONS_RESERVE = 10;
-
- /**
- * Number of client/server connections to establish.
- */
- private static final int CONNECTIONS = detectOSLimitation();
-
- /**
- * Number of parcels to be sent/recieved.
- */
- private static final int DATA_PARCELS = 128;
-
- /**
- * Maximal length of data parcel to be sent/recieved
- * (it equals to 256 bytes now).
- */
- private static final int MAX_PARCEL = 1 << 8;
-
- /**
- * How many IP sockets can we open simultaneously?
- * Check if <code>MAX_CONNECTIONS</code> connections
- * can be open simultaneously.
- */
- private static int detectOSLimitation() {
- final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
- ServerSocket ssoc[] = new ServerSocket[CONNECTIONS_TO_TRY];
- display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
- int i;
- for (i = 0; i < CONNECTIONS_TO_TRY; i++)
- try {
- ssoc[i] = new ServerSocket(0);
- display("--- Open: ssoc[" + i + "] = " + ssoc[i]);
- } catch (IOException ioe) {
- display("--- OOPS! -- failed to open connection #" + i);
- break;
- }
- display("--- Could open " +
- (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
- display("--- Closing them:");
- for (int j = 0; j < i; j++)
- try {
- ssoc[j].close();
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display("--- OK.");
- int safeConnections = i - CONNECTIONS_RESERVE;
- if (safeConnections < 1)
- safeConnections = 1;
- if (safeConnections < MAX_CONNECTIONS) {
- println("# ------------------------- CAUTION: -------------------");
- println("# While checking the OS limitations, the test found that");
- println("# only " + i + " TCP/IP socket connections could be safely open");
- println("# simultaneously. However, possibility to open at least");
- println("# " + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
- + " connections were expected.");
- println("# ");
- println("# So, the test will check only " + safeConnections + " connection"
- + (safeConnections == 1 ? "" : "s") + " which seem");
- println("# safe to be open simultaneously.");
- println("# ------------------------------------------------------");
- }
- return safeConnections;
- }
-
- /**
- * Server thread intended to reply to data parcels sent by Client thread.
- */
- static private class Server extends Thread {
- /**
- * This server thread listens the single socket.
- */
- private ServerSocket serverSocket;
-
- /**
- * Address and port of this server socket.
- */
- public String toString() {
- return serverSocket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * What is the port number this socket is listening for?
- */
- int getPort() {
- return serverSocket.getLocalPort();
- }
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port.
- */
- Server(InetAddress address) throws IOException {
- int someFreePort = 0;
- int backlog = 50; // default for new ServerSocket(port)
- serverSocket = new ServerSocket(someFreePort, backlog, address);
- }
-
- /**
- * Accept connection, then read/respond <code>DATA_PARCELS</code> parcels
- * of random data. Set initial seed for pseudo-random numbers generator
- * to the value of the local port number.
- *
- * @see #DATA_PARCELS
- * @see #getPort()
- */
- public void run() {
- try {
- Socket socket = serverSocket.accept();
- display("Server socket: " + socket);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Server thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "server has read unexpected parcel");
- }
-
- etalon.send(ostream);
- ostream.flush();
- }
-
- int datum = istream.read(); // wait for client close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- /**
- * Client thread intended to send data parcels to Server thread and
- * to recieve the server's replies.
- */
- static private class Client extends Thread {
- /**
- * This thread uses the single client socket.
- */
- private Socket socket;
-
- /**
- * Address and port of this socket.
- */
- public String toString() {
- return socket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * Connect client socket on the given <code>address</code>
- * and <code>port</code>.
- */
- Client(InetAddress address, int port) throws IOException {
- socket = new Socket(address, port);
- }
-
- /**
- * What is the port number this socket is listening for?
- */
- int getPort() {
- return socket.getPort();
- }
-
-
- /**
- * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
- * of random data. Set initial seed for pseudo-random numbers generator
- * to the value of the local port number.
- *
- * @see #DATA_PARCELS
- * @see #getPort()
- */
- public void run() {
- try {
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
- etalon.send(ostream);
- ostream.flush();
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Client thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
-
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- /**
- * A data parcel to sent/recieved between Client and Server threads.
- * When data parcel is sent, first 4 bytes transfered encode the size
- * of the parcel (i.e.: number of data bytes in the parcel's contents).
- * Then the parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
-
- }
-
- /**
- * Server or Client thread may throw this exception to report the test
- * failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
-
- }
-
- /**
- * Attach client and server sockets to the local host, and check if
- * huge amount of data could be correctly transfered between these
- * sockets.
- * <p>
- * <p>Command-line parameters provided with <code>args[]</code> may
- * prompt the local host IP address or domain name. Execute:
- * <br>
- * <code>java network003 [<i>IP-address</i> | <i>host_name</i> |
- * localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <br>By default, the test uses the Internet address available via
- * the method <code>InetAddress.getLocalHost()</code>
- */
- public static int run(String args[], PrintStream out) {
- network003.out = out;
-
- //
- // Get IP address of the local machine.
- //
-
- InetAddress address = null;
- try {
- switch (args.length) {
- case 0:
- address = InetAddress.getLocalHost();
- break;
- case 1:
- String hostName = args[0];
- address = InetAddress.getByName(args[0]);
- break;
- default:
- println("Use:");
- println(" java network003");
- println("or:");
- println(" java network003 ${IP_ADDRESS}");
- println("or:");
- println(" java network003 ${HOST_NAME}");
- println("or:");
- println(" java network003 localhost");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- println(exception);
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Incarnate the server & the client sockets.
- //
-
- Server server[] = new Server[CONNECTIONS];
- Client client[] = new Client[CONNECTIONS];
-
- for (int i = 0; i < CONNECTIONS; i++) {
- try {
- server[i] = new Server(address);
- } catch (IOException io) {
- println("Failed to create server #" + i + ": " + io);
- return 2;
- }
- display("Server #" + i + ": " + server[i]);
- }
-
- for (int i = 0; i < CONNECTIONS; i++) {
- int port = server[i].getPort();
- try {
- client[i] = new Client(address, port);
- } catch (IOException io) {
- out.println("Failed to create client #" + i + ": " + io);
- return 2;
- }
- display("Client socket #" + i + ": " + client[i]);
- }
-
- //
- // Execute the server and client threads.
- //
-
- Exception exception = null;
- try {
- for (int i = 0; i < CONNECTIONS; i++)
- server[i].start();
- for (int i = 0; i < CONNECTIONS; i++)
- client[i].start();
- boolean someIsAlive = true;
- while (someIsAlive) {
- boolean aliveFound = false;
- boolean someBroken = false;
- for (int i = 0; i < CONNECTIONS; i++)
- if (client[i].isAlive() || server[i].isAlive()) {
- if ((client[i].exception != null) ||
- (server[i].exception != null))
- someBroken = true;
- aliveFound = true;
- Thread.yield();
- }
- someIsAlive = aliveFound;
- if (someBroken)
- break;
- }
- } catch (TestFailure failure) {
- exception = failure;
- }
-
- // Failure diagnostics, if needed.
-
- Exception problem[] = new Exception[2 * CONNECTIONS + 1];
- problem[0] = exception;
- for (int i = 0; i < CONNECTIONS; i++) {
- problem[2 * i + 1] = server[i].exception;
- problem[2 * i + 2] = client[i].exception;
- }
-
- int exitCode = 0;
-
- for (int i = 0; i < 2 * CONNECTIONS + 1; i++)
- if (problem[i] != null) {
- out.println("#### OOPS ! ####");
- problem[i].printStackTrace(out);
- exitCode = 2;
- }
-
- if (exitCode != 0) {
- out.println("#### OOPS ! ####");
- out.println("# Test failed.");
- return 2; // FAILED
- }
- display("Test passed.");
- return 0; // PASSED
- }
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test; and stop with exit code 95 if the test
- * has passed, or with code 97 if the test has failed.
- * (This is JCK-like exit codes convention.)
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit code.
- }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network004.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,878 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network004.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain ``localhost''
- * (having IP address 127.0.0.1).
- * In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * Parcels lengths and contents are chosen randomly, and average
- * parcel length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- * The production Solaris_JDK_1.3-b12 Server VM intermittently crashes under
- * this test, even when client part of the test is executed with Client HS:
- * >>>> java -server network004 java
- * #
- * # HotSpot Virtual Machine Error, Unexpected Signal 10
- * # Please report this error at
- * # http://java.sun.com/cgi-bin/bugreport.cgi
- * #
- * # Error ID: 4F533F534F4C415249530E43505007D9 01
- * #
- * # Problematic Thread: prio=5 tid=0x214418 nid=0x103 runnable
- * #
- * (ErrorID == "os_solaris.cpp, 2009")
- * If the client part of the test is executed with Server HS, the
- * production Solaris_JDK_1.3-b12 Server VM intermittently fails
- * this test due to timeout:
- * >>>> time java -server network004 'java -server -showversion'
- * java version "1.3"
- * Java(TM) 2 Runtime Environment, Standard Edition (build Solaris_JDK_1.3-b12)
- * Java HotSpot(TM) Server VM (build 1.3-b12, mixed mode)
- * # Client #96: java.io.InterruptedIOException: Read timed out
- * # Client VM has crashed: exit status=97
- * # Test failed.
- * 156.0u 117.0s 7:06 63% 0+0k 0+0io 0pf+0w
- * Test was fixed:
- * added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- * /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network004
- * @run main/othervm PropertyResolvingWrapper
- * nsk.stress.network.network004
- * "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-import java.util.StringTokenizer;
-
-/**
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain ``<code>localhost</code>''
- * (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average
- * parcel length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network004 {
- /**
- * Timeout for TCP/IP sockets (currently set to 1 min).
- */
- private static int SO_TIMEOUT;// = 2*60*1000;
-
- /**
- * Maximal number of connections this test should open simultaneously.
- */
- private final static int MAX_CONNECTIONS = 128;
-
- /**
- * Check few more connections to make sure that MAX_CONNECTIONS are safe.
- */
- private final static int CONNECTIONS_RESERVE = 10;
-
- /**
- * Number of parcels to be sent/recieved.
- */
- private final static int DATA_PARCELS = 128;
-
- /**
- * Maximal length of data parcel to be sent/recieved
- * (it equals to 256 bytes now).
- */
- private final static int MAX_PARCEL = 1 << 8;
-
- /**
- * Either actually display optional reports or not.
- */
- static private final boolean DEBUG_MODE = false;
-
- /**
- * How many IP sockets can we open simultaneously?
- * Check if <code>MAX_CONNECTIONS</code> connections
- * can be open simultaneously.
- */
- private static int detectOSLimitation() {
- final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
- ServerSocket ssoc[] = new ServerSocket[CONNECTIONS_TO_TRY];
- display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
- int i;
- for (i = 0; i < CONNECTIONS_TO_TRY; i++)
- try {
- ssoc[i] = new ServerSocket(0);
- display("--- Open: ssoc[" + i + "] = " + ssoc[i]);
- } catch (IOException ioe) {
- display("--- OOPS! -- failed to open connection #" + i);
- break;
- }
- display("--- Could open " +
- (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
- display("--- Closing them:");
- for (int j = 0; j < i; j++)
- try {
- ssoc[j].close();
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display("--- OK.");
- int safeConnections = i - CONNECTIONS_RESERVE;
- if (safeConnections < 1)
- safeConnections = 1;
- if (safeConnections < MAX_CONNECTIONS) {
- complain("------------------------- CAUTION: -------------------");
- complain("While checking the OS limitations, the test found that");
- complain("only " + i + " TCP/IP socket connections could be safely open");
- complain("simultaneously. However, possibility to open at least");
- complain("" + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
- + " connections were expected.");
- complain("");
- complain("So, the test will check only " + safeConnections + " connection"
- + (safeConnections == 1 ? "" : "s") + " which seem");
- complain("safe to be open simultaneously.");
- complain("------------------------------------------------------");
- }
- return safeConnections;
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test. After <code>run(args[],out)</code> stops,
- * follow JDK-like convention for exit codes. I.e.: stop with
- * exit status 95 if the test has passed, or with status 97 if
- * the test has failed.
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit status.
- }
-
- /**
- * Parse command-line parameters stored into <code>args[]</code> array,
- * then perform the test. I.e.: start the server thread at the same VM
- * this method runs, then start the other client VM, and verify data
- * transfer through TCP/IP connection between those different virtual
- * machines.
- * <p>
- * <p>There should be 1 or 2 command-line parameters:
- * <br>
- * <code>java network004 <i>java_command</i>
- * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>java_command</i></code> - how to start java,
- * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
- * <br>
- * <code>waittime</code> - timeout for TCP/IP sockets in minutes
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <p>
- * <p>Usually, <code><i>java_command</i></code> should point to the same
- * Java machine just executing this test. However, every compatible Java 2
- * implementation is appropriate.
- * <p>
- * <p>If optional parameter is ommited, the test invokes the method
- * <code>InetAddress.getLocalHost()</code> to get the domain name and
- * IP-address of the local computer.
- */
- public static int run(String args[], PrintStream out) {
- network004.out = out;
-
- //
- // Get the Internet address of the local machine.
- //
- InetAddress address = null;
- try {
- switch (args.length) {
- case 2:
- address = InetAddress.getLocalHost();
- break;
- case 3:
- address = InetAddress.getByName(args[2]);
- break;
- default:
- complain("Illegal arguments number; execute:");
- complain(" java network004 $JAVA_COMMAND " +
- "[$IP_ADDRESS | $HOST_NAME | localhost]");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- complain(exception.toString());
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Detect if it is safe to open MAX_CONNETIONS simultaneously:
- //
- final int CONNECTIONS = detectOSLimitation();
-
- //
- // Start the server thread on the same VM (which executes this method).
- //
- Server server[] = new Server[CONNECTIONS];
- for (int i = 0; i < CONNECTIONS; i++) {
- try {
- server[i] = new Server(address);
- } catch (Exception exception) {
- complain("Server #" + i + ": " + exception);
- return 2;
- }
- display("Server #" + i + ": " + server[i]);
- server[i].start();
- }
-
- //
- // Start the client process on different VM.
- //
- String command = args[0] + " " + network004.class.getName() + "$Client";
- try {
- SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
- } catch (NumberFormatException e) {
- complain("Wrong timeout argument: " + e);
- return 2;
- }
-
- Runtime runtime = Runtime.getRuntime();
-
- Process client = null;
- IORedirector redirectOut = null;
- IORedirector redirectErr = null;
-
- try {
- // Start clients on different JVM:
- client = runtime.exec(command);
-
- // Provide clients with access to stderr and stdout:
- InputStream clientOut = client.getInputStream();
- InputStream clientErr = client.getErrorStream();
- redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
- redirectErr = new IORedirector(clientErr, out);
- redirectOut.start();
- redirectErr.start();
-
- // Pass parameters to clients (number of connections, and IP adresses and ports):
- PrintStream clientIn = new PrintStream(client.getOutputStream());
- clientIn.println(CONNECTIONS);
- for (int i = 0; i < CONNECTIONS; i++)
- clientIn.println(server[i].getIPAddress() + " " + server[i].getPort());
- clientIn.flush();
- clientIn.close();
-
- } catch (Exception exception) {
- complain("Failed to start client: " + exception);
- return 2;
- }
-
- //
- // Wait until the server and client both stop.
- //
- boolean testFailed = false;
- try {
- client.waitFor();
- // Let I/O redirectors to flush:
- if (redirectOut.isAlive())
- redirectOut.join();
- if (redirectErr.isAlive())
- redirectErr.join();
-
- // If client has crashed, also terminate the server (to avoid hangup).
- int clientStatus = client.exitValue();
- if (clientStatus != 95) {
- complain("Client VM has failed: exit status=" + clientStatus);
- testFailed = true;
- }
-
- // Client has finished OK; wait for the server.
- for (int i = 0; i < CONNECTIONS; i++) {
- display("Server: waiting for #" + i);
- while (server[i].isAlive())
- server[i].join();
- if (server[i].exception != null) {
- complain("Server thread #" + i + ": " + server[i].exception);
- testFailed = true;
- }
- }
-
- } catch (Exception exception) {
- complain("Test interrupted: " + exception);
- testFailed = true;
- }
-
- if (testFailed)
- complain("Test failed.");
- else
- display("Test passed.");
- return testFailed ? 2 : 0;
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Log stream for error messages and/or (optional) execution trace.
- */
- private static PrintStream out;
-
- /**
- * Print error message.
- */
- private static synchronized void complain(Object message) {
- out.println("# " + message);
- out.flush();
- }
-
- /**
- * Display optional report: comment ca va?
- */
- private static synchronized void display(Object report) {
- if (DEBUG_MODE)
- out.println(report.toString());
- out.flush();
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Server thread should reply to data parcels sent by Client VM.
- */
- private static class Server extends Thread {
- /**
- * The socket to listen for a client.
- */
- private ServerSocket serverSocket;
-
- /**
- * Display the server socket.
- */
- public String toString() {
- return serverSocket.toString();
- }
-
- /**
- * Server's IP-address in the form ``<code><i>x.y.u.z</i></code>'',
- * or ``<code>127.0.0.1</code>'' for loopback connection.
- */
- public String getIPAddress() {
- return serverSocket.getInetAddress().getHostAddress();
- }
-
- /**
- * Which port is this socket listening?
- */
- int getPort() {
- return serverSocket.getLocalPort();
- }
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port.
- */
- public Server(InetAddress address) throws IOException {
- int someFreePort = 0;
- int backlog = 50; // default for new ServerSocket(port)
- serverSocket = new ServerSocket(someFreePort, backlog, address);
- }
-
- /**
- * Exception just arisen while the server was working,
- * or <code>null</code> if it was OK with the server.
- */
- Exception exception = null;
-
- /**
- * Accept connection, then reply to client's parcels.
- */
- public void run() {
- try {
- Socket socket = serverSocket.accept();
- socket.setSoTimeout(SO_TIMEOUT);
-// display("Server: " + socket);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Server thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "server has read unexpected parcel");
- }
-
- etalon.send(ostream);
- ostream.flush();
- }
-
- int datum = istream.read(); // wait for client close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Client VM should send data parcels to Server VM and
- * recieve and verify the server's replies.
- */
- private static class Client extends Thread {
- /**
- * This thread uses the single client socket.
- */
- private Socket socket;
-
- /**
- * Address and port of this socket.
- */
- public String toString() {
- return socket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * Connect client socket on the given <code>address</code>
- * and <code>port</code>.
- */
- Client(InetAddress address, int port) throws IOException {
- socket = new Socket(address, port);
- socket.setSoTimeout(SO_TIMEOUT);
- }
-
- /**
- * What is the port number this socket is listening for?
- */
- int getPort() {
- return socket.getPort();
- }
-
- /**
- * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
- * of random data. Set initial seed for pseudo-random numbers generator
- * to the value of the local port number.
- *
- * @see #DATA_PARCELS
- * @see #getPort()
- */
- public void run() {
- try {
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
- etalon.send(ostream);
- ostream.flush();
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Client thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
-
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- /**
- * Establish connections to lots of server sockets, atack servers with
- * huge data parcels, and check if it replies correctly. The addresses
- * and port numbers for server sockets are passed through <code>stdin</code>.
- * The input stream must consist of the stipulated number (up to 128+1) of
- * lines containing the pair of symbolic server domain name and the port number,
- * like:
- * <br> actual_number_of_sockets
- * <br> address_1 port_1
- * <br> address_2 port_2
- * <br> . . .
- * <br> address_N port_N
- * <br>where N must equal to the actual_number_of_sockets.
- */
- public static void main(String args[]) {
- // ---- Parse stdin for the list of server sockets: ---- //
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
-
- final int CONNECTIONS;
- try {
- String line = in.readLine();
- if (line == null) {
- complain("Client expects paramenets passed through stdin:");
- complain(" actual_number_of_sockets");
- complain(" IP-address_1 port_1");
- complain(" IP-address_2 port_2");
- complain(" . . .");
- complain(" IP-address_N port_N");
- exit(2); // FAILED
- }
- CONNECTIONS = Integer.parseInt(line);
- } catch (IOException ioe) {
- complain("Client failed to read the actual number of CONNECTIONS");
- throw new RuntimeException(ioe.toString());
- }
-
- Client client[] = new Client[CONNECTIONS];
- for (int i = 0; i < CONNECTIONS; i++)
- try {
- String line = in.readLine();
- if (line == null) {
- complain("Client: failed to read address/port for client #" + i);
- exit(3);
- }
-
- StringTokenizer tokenz = new StringTokenizer(line);
- if (tokenz.countTokens() != 2) {
- complain("Client: illegal input string: " + line);
- exit(3);
- }
- String serverName = (String) tokenz.nextElement();
- InetAddress address = InetAddress.getByName(serverName);
- int port = Integer.parseInt((String) tokenz.nextElement());
-
- client[i] = new Client(address, port);
-
- display("Client #" + i + ": " + client[i]);
-
- } catch (IOException ioe) {
- complain("Client #" + i + ": " + ioe);
- exit(3);
- }
-
- // ---- Start testing: ---- //
-
- for (int i = 0; i < CONNECTIONS; i++)
- client[i].start();
-
- int status = 0;
- for (int i = 0; i < CONNECTIONS; i++) {
- display("Client: waiting for #" + i);
- while (client[i].isAlive())
- yield();
- if (client[i].exception != null) {
- complain("Client #" + i + ": " + client[i].exception);
- status = 2;
- }
- }
-
- exit(status);
- }
-
- /**
- * Print error message.
- */
- private static synchronized void complain(Object message) {
- System.err.println("# " + message);
- System.err.flush();
- }
-
- /**
- * Display execution trace.
- */
- private static synchronized void display(Object message) {
- if (!DEBUG_MODE)
- return;
- System.out.println(message.toString());
- System.out.flush();
- }
-
- /**
- * Exit with JCK-like status.
- */
- private static void exit(int exitCode) {
- System.exit(exitCode + 95);
- }
-
- }
-
- /**
- * Two of such threads should redirect <code>out</code> and <code>err</code>
- * streams of client VM.
- */
- private static class IORedirector extends Thread {
- /**
- * Source stream.
- */
- InputStream in;
- /**
- * Destination stream.
- */
- OutputStream out;
-
- /**
- * Redirect <code>in</code> to <code>out</code>.
- */
- public IORedirector(InputStream in, OutputStream out) {
- this.in = in;
- this.out = out;
- }
-
- /**
- * Read input stream until the EOF, and write everithing to output stream.
- * If output stream is assigned to <code>null</code>, do not print anything,
- * but read the input stream anywhere.
- */
- public void run() {
- try {
- for (; ; ) {
- int symbol = in.read();
- if (symbol < 0)
- break; // EOF
- if (out != null)
- out.write(symbol);
- }
-
- if (out != null)
- out.flush();
-
- } catch (Exception exception) {
- throw new TestFailure("IORedirector exception: " + exception);
- }
- }
- }
-
- //----------------------------------------------------------------//
-
- /**
- * A data parcel to be sent/recieved between Client VM and Server thread.
- * When data parcel is sent, first 4 bytes are transfered which encode the
- * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
- * number of data bytes in the parcel's contents is <code>N</code>, then
- * the first 4 bytes encode the number <code>N-1</code>. After that, the
- * parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
-
- }
-
- /**
- * Server or Client may throw this exception to report the test failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
-
- }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network005.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,635 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network005.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- * This test make huge number of data transers between one server and
- * multiple clients communicating via TCP/IP sockets, and checks if those
- * data are transfered correctly. All TCP/IP sockets are attached to local
- * host (by its domain name), or to the ``localhost'' loopback (having the
- * IP address 127.0.0.1).
- * In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- *
- * @run main/othervm nsk.stress.network.network005
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test make huge number of data transers between one server and
- * multiple clients communicating via TCP/IP sockets, and checks if those
- * data are transfered correctly. All TCP/IP sockets are attached to local
- * host (by its domain name), or to the ``localhost'' loopback (having the
- * IP address 127.0.0.1).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network005 {
- /**
- * Do actually display optional reports?
- */
- static private final boolean DEBUG_MODE = false;
-
- /**
- * Errors and optional reports log. Usually <code>System.out</code>.
- */
- static private PrintStream out = System.out;
-
- /**
- * Print error message: all clients and servers may print concurently.
- */
- static private synchronized void println(Object message) {
- out.println(message.toString());
- }
-
- /**
- * Display optional report: comment ca va.
- */
- static private void display(Object report) {
- if (DEBUG_MODE)
- println(report.toString());
- }
-
- /**
- * Maximal number of connections this test should open simultaneously.
- */
- private final static int MAX_CONNECTIONS = 128;
-
- /**
- * Check few more connections to make sure that MAX_CONNECTIONS are safe.
- */
- private final static int CONNECTIONS_RESERVE = 10;
-
- /**
- * Number of client/server connections to establish.
- */
- private static final int CONNECTIONS = detectOSLimitation();
-
- /**
- * Number of parcels to be sent/recieved.
- */
- private static final int DATA_PARCELS = 128;
-
- /**
- * Maximal length of data parcel to be sent/recieved
- * (it equals to 256 bytes now).
- */
- private static final int MAX_PARCEL = 1 << 8;
-
- /**
- * How many IP sockets can we open simultaneously?
- * Check if <code>MAX_CONNECTIONS</code> connections
- * can be open simultaneously.
- */
- private static int detectOSLimitation() {
- final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
- display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-
- InetAddress address;
- ServerSocket serverSocket;
- try {
- address = InetAddress.getLocalHost();
- int anyPort = 0;
- int defaultBacklog = 50;
- serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display(serverSocket.toString());
-
- Socket server[] = new Socket[CONNECTIONS_TO_TRY];
- Socket client[] = new Socket[CONNECTIONS_TO_TRY];
-
- int i, port = serverSocket.getLocalPort();
- for (i = 0; i < CONNECTIONS_TO_TRY; i++)
- try {
- client[i] = new Socket(address, port);
- display("--- Open: client[" + i + "] = " + client[i]);
- server[i] = serverSocket.accept();
- display("--- Open: server[" + i + "] = " + server[i]);
- } catch (IOException ioe) {
- display("--- OOPS! -- failed to open connection #" + i);
- break;
- }
- display("--- Could open " +
- (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
- display("--- Closing them:");
- for (int j = 0; j < i; j++)
- try {
- server[j].close();
- client[j].close();
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display("--- OK.");
- int safeConnections = i - CONNECTIONS_RESERVE;
- if (safeConnections < 1)
- safeConnections = 1;
- if (safeConnections < MAX_CONNECTIONS) {
- println("# ------------------------- CAUTION: -------------------");
- println("# While checking the OS limitations, the test found that");
- println("# only " + i + " TCP/IP socket connections could be safely open");
- println("# simultaneously. However, possibility to open at least");
- println("# " + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
- + " connections were expected.");
- println("# ");
- println("# So, the test will check only " + safeConnections + " connection"
- + (safeConnections == 1 ? "" : "s") + " which seem");
- println("# safe to be open simultaneously.");
- println("# ------------------------------------------------------");
- }
- return safeConnections;
- }
-
- /**
- * Server (or client) thread intended to transfer data parcels to
- * another client (or server) Agent.
- */
- static private class Agent extends Thread {
- /**
- * Agent's client mode.
- */
- final static int CLIENT = 1;
- /**
- * Agen's server mode.
- */
- final static int SERVER = 2;
-
- /**
- * Is this agent is client or server one?
- */
- private int mode;
-
- /**
- * This server thread listens the single socket.
- */
- private Socket socket;
-
- /**
- * What is the port number this socket is listening for?
- */
- int getPort() {
- if (mode == SERVER)
- return socket.getLocalPort();
- else
- return socket.getPort();
- }
-
- /**
- * Address and port of this server socket.
- */
- public String toString() {
- String mode = (this.mode == CLIENT) ? "Client" : "Server";
- return mode + ": " + socket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port.
- */
- Agent(Socket socket, int mode) {
- if ((mode != SERVER) && (mode != CLIENT))
- throw new IllegalArgumentException("unknown mode=" + mode);
- this.socket = socket;
- this.mode = mode;
- }
-
- /**
- * Transfer <code>DATA_PARCELS</code> parcels of random data.
- * Set initial seed for pseudo-random numbers generator
- * to the value of the local port number.
- *
- * @see #DATA_PARCELS
- * @see #getPort()
- */
- public void run() {
- try {
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
-
- if (mode == SERVER) {
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Server agent for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "server has read unexpected parcel");
- }
-
- etalon.send(ostream); // reply
- ostream.flush();
-
- } else {
- etalon.send(ostream); // init transfer
- ostream.flush();
-
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- println("Client agent for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
- }
-
- if (mode == SERVER) {
- int datum = istream.read(); // wait until client's close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } else {
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
- }
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- }
-
- /**
- * A data parcel to sent/recieved between Client and Server threads.
- * When data parcel is sent, first 4 bytes transfered encode the size
- * of the parcel (i.e.: number of data bytes in the parcel's contents).
- * Then the parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
-
- }
-
- /**
- * Server or Client thread may throw this exception to report the test
- * failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
-
- }
-
- /**
- * Attach client and server sockets to the local host, and check if
- * huge number of data transfers could be correctly transfered between
- * these sockets.
- * <p>
- * <p>Command-line parameters provided with <code>args[]</code> may
- * prompt the local host IP address or domain name. Execute:
- * <br>
- * <code>java network005 [<i>IP-address</i> | <i>host_name</i> |
- * localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <br>By default, the test uses the Internet address available via
- * the method <code>InetAddress.getLocalHost()</code>
- */
- public static int run(String args[], PrintStream out) {
- network005.out = out;
-
- //
- // Get IP address of the local machine.
- //
-
- InetAddress address = null;
- try {
- switch (args.length) {
- case 0:
- address = InetAddress.getLocalHost();
- break;
- case 1:
- String hostName = args[0];
- address = InetAddress.getByName(args[0]);
- break;
- default:
- println("Use:");
- println(" java network005");
- println("or:");
- println(" java network005 ${IP_ADDRESS}");
- println("or:");
- println(" java network005 ${HOST_NAME}");
- println("or:");
- println(" java network005 localhost");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- println(exception);
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Assign ServerSocket to the local host:
- //
-
- ServerSocket serverSocket;
- try {
- final int anyPort = 0;
- final int defaultBacklog = 50;
- serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
- } catch (IOException ioe) {
- println("# Failed to assign ServerSocket on: " + address);
- return 2;
- }
- display(serverSocket.toString());
-
- final int port = serverSocket.getLocalPort();
-
- //
- // Incarnate the server & the client agents.
- //
-
- Agent server[] = new Agent[CONNECTIONS];
- Agent client[] = new Agent[CONNECTIONS];
-
- for (int i = 0; i < CONNECTIONS; i++)
- try {
- Socket socket;
- socket = new Socket(address, port);
- client[i] = new Agent(socket, Agent.CLIENT);
- display("Client #" + i + ": " + socket);
- socket = serverSocket.accept();
- server[i] = new Agent(socket, Agent.SERVER);
- display("Server #" + i + ": " + socket);
- } catch (IOException io) {
- println("Failed establish conection #" + i + ": " + io);
- return 2;
- }
-
- //
- // Execute the server and client threads.
- //
-
- Exception exception = null;
- for (int i = 0; i < CONNECTIONS; i++) {
- server[i].start();
- client[i].start();
- }
- try {
- boolean someIsAlive = true;
- while (someIsAlive) {
- boolean aliveFound = false;
- boolean someBroken = false;
- for (int i = 0; i < CONNECTIONS; i++)
- if (client[i].isAlive() || server[i].isAlive()) {
- if ((client[i].exception != null) ||
- (server[i].exception != null))
- someBroken = true;
- aliveFound = true;
- Thread.yield();
- }
- someIsAlive = aliveFound;
- if (someBroken)
- break;
- }
- } catch (TestFailure failure) {
- exception = failure;
- }
-
- // Failure diagnostics, if needed.
-
- Exception problem[] = new Exception[2 * CONNECTIONS + 1];
- problem[0] = exception;
- for (int i = 0; i < CONNECTIONS; i++) {
- problem[2 * i + 1] = server[i].exception;
- problem[2 * i + 2] = client[i].exception;
- }
-
- int exitCode = 0;
-
- for (int i = 0; i < 2 * CONNECTIONS + 1; i++)
- if (problem[i] != null) {
- out.println("#### OOPS ! ####");
- problem[i].printStackTrace(out);
- exitCode = 2;
- }
-
- if (exitCode != 0) {
- out.println("#### OOPS ! ####");
- out.println("# Test failed.");
- return 2; // FAILED
- }
- display("Test passed.");
- return 0; // PASSED
- }
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test; and stop with exit code 95 if the test
- * has passed, or with code 97 if the test has failed.
- * (This is JCK-like exit codes convention.)
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit code.
- }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network006.java Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,916 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network006.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick, quarantine]
- * VM testbase comments: 8185072
- * VM testbase readme:
- * DESCRIPTION
- * This test makes huge number of data transfers between 2 Java virtual
- * machines using the TCP/IP protocol, and checks if those data are transfered
- * correctly. Both client and server VMs run on the same local computer and
- * attach TCP/IP sockets to the local host, or to the loopback domain
- * ``localhost'' (having IP address 127.0.0.1).
- * In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a data parcel to server, and server
- * reads that parcel and checks if it is same as expected (byte-to-byte equality
- * is desired). Then server passes (some other) parcel to the client, and client
- * reads and verifies those bytes. This ping-pong game is repeated 128 times; and
- * after that each pair of sockets checks if there are no extra bytes accudentally
- * passed through their connection.
- * Parcels lengths and contents are chosen randomly, and average parcel length
- * is 128 bytes. So totally, each pair of sockets passes ~16Kb of data to each other,
- * and thus ~32Kb of data are transfered by each sockets pair. Totally, ~4Mb of data
- * are transfered by all client/server pairs.
- * COMMENTS
- * Test was fixed:
- * added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- * /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network006
- * @run main/othervm PropertyResolvingWrapper
- * nsk.stress.network.network006
- * "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test makes huge number of data transfers between 2 Java virtual
- * machines using the TCP/IP protocol, and checks if those data are transfered
- * correctly. Both client and server VMs run on the same local computer and
- * attach TCP/IP sockets to the local host, or to the loopback domain
- * ``<code>localhost</code>'' (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a data parcel to server, and server
- * reads that parcel and checks if it is same as expected (byte-to-byte equality
- * is desired). Then server passes (some other) parcel to the client, and client
- * reads and verifies those bytes. This ping-pong game is repeated 128 times; and
- * after that each pair of sockets checks if there are no extra bytes accudentally
- * passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel length
- * is 128 bytes. So totally, each pair of sockets passes ~16Kb of data to each other,
- * and thus ~32Kb of data are transfered by each sockets pair. Totally, ~4Mb of data
- * are transfered by all client/server pairs.
- */
-public class network006 {
- /**
- * Timeout for TCP/IP sockets (currently set to 1 min).
- */
- private static int SO_TIMEOUT;// = 2*60*1000;
-
- /**
- * Maximal number of connections this test should open simultaneously.
- */
- private final static int MAX_CONNECTIONS = 128;
-
- /**
- * Check few more connections to make sure that MAX_CONNECTIONS are safe.
- */
- private final static int CONNECTIONS_RESERVE = 10;
-
- /**
- * The test used to fail with connection reset by peer set to 50.
- * (and once in a three if it was set to 10).
- * So now we set it to MAX_CONNECTIONS (128).
- */
- private final static int BACKLOG_QUEUE_LENGTH = MAX_CONNECTIONS;
-
- /**
- * Number of parcels to be sent/recieved.
- */
- private final static int DATA_PARCELS = 128;
-
- /**
- * Maximal length of data parcel to be sent/recieved
- * (it equals to 256 bytes now).
- */
- private final static int MAX_PARCEL = 1 << 8;
-
- /**
- * Either actually display optional reports or not.
- */
- static private final boolean DEBUG_MODE = false;
-
- /**
- * How many IP sockets can we open simultaneously?
- * Check if <code>MAX_CONNECTIONS</code> connections
- * can be open simultaneously.
- */
- private static int detectOSLimitation() {
- final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
- display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-
- InetAddress address;
- ServerSocket serverSocket;
- try {
- address = InetAddress.getLocalHost();
- int anyPort = 0;
- int defaultBacklog = BACKLOG_QUEUE_LENGTH;
- serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display(serverSocket.toString());
-
- Socket server[] = new Socket[CONNECTIONS_TO_TRY];
- Socket client[] = new Socket[CONNECTIONS_TO_TRY];
-
- int i, port = serverSocket.getLocalPort();
- for (i = 0; i < CONNECTIONS_TO_TRY; i++)
- try {
- client[i] = new Socket(address, port);
- display(">Open: client[" + i + "] = " + client[i]);
- server[i] = serverSocket.accept();
- display(">Open: server[" + i + "] = " + server[i]);
- } catch (IOException ioe) {
- display(">OOPS! -- failed to open connection #" + i);
- break;
- }
- display("> Could open " +
- (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
- display(">Closing them:");
- for (int j = 0; j < i; j++)
- try {
- server[j].close();
- client[j].close();
- } catch (IOException ioe) {
- throw new Error("FATAL error while loading the test: " + ioe);
- }
- display(">OK.");
- int safeConnections = i - CONNECTIONS_RESERVE;
- if (safeConnections < 1)
- safeConnections = 1;
- if (safeConnections < MAX_CONNECTIONS) {
- complain("------------------------- CAUTION: -------------------");
- complain("While checking the OS limitations, the test found that");
- complain("only " + i + " TCP/IP socket connections could be safely open");
- complain("simultaneously. However, possibility to open at least");
- complain("" + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
- + " connections were expected.");
- complain("");
- complain("So, the test will check only " + safeConnections + " connection"
- + (safeConnections == 1 ? "" : "s") + " which seem");
- complain("safe to be open simultaneously.");
- complain("------------------------------------------------------");
- }
- return safeConnections;
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Re-calls to the method <code>run(args[],out)</code> actually
- * performing the test. After <code>run(args[],out)</code> stops,
- * follow JDK-like convention for exit codes. I.e.: stop with
- * exit status 95 if the test has passed, or with status 97 if
- * the test has failed.
- *
- * @see #run(String[], PrintStream)
- */
- public static void main(String args[]) {
- int exitCode = run(args, System.out);
- System.exit(exitCode + 95);
- // JCK-like exit status.
- }
-
- /**
- * Parse command-line parameters stored into <code>args[]</code> array,
- * then perform the test. I.e.: start the server thread at the same VM
- * this method runs, then start the other client VM, and verify data
- * transfer through TCP/IP connection between those different virtual
- * machines.
- * <p>
- * <p>There should be 2 or 3 command-line parameters:
- * <br>
- * <code>java network006 <i>java_command</i>
- * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
- * <br>where parameters are:
- * <br>
- * <code><i>java_command</i></code> - how to start java,
- * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
- * <br>
- * <code>waittime</code> - timeout for TCP/IP sockets in minutes
- * <br>
- * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
- * <br>
- * <code><i>host_name</i></code> - local host's domain name, or the
- * keyword ``<code>localhost</code>''
- * <br>
- * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
- * <p>
- * <p>Usually, <code><i>java_command</i></code> should point to the same
- * Java machine just executing this test. However, every compatible Java 2
- * implementation is appropriate.
- * <p>
- * <p>If optional parameter is ommited, the test invokes the method
- * <code>InetAddress.getLocalHost()</code> to get the domain name and
- * IP-address of the local computer.
- */
- public static int run(String args[], PrintStream out) {
- network006.out = out;
-
- //
- // Get the Internet address of the local machine.
- //
- InetAddress address = null;
- try {
- switch (args.length) {
- case 2:
- address = InetAddress.getLocalHost();
- break;
- case 3:
- address = InetAddress.getByName(args[2]);
- break;
- default:
- complain("Illegal arguments number; execute:");
- complain(" java " + network006.class.getName() + " $JAVA_COMMAND " +
- "[$IP_ADDRESS | $HOST_NAME | localhost]");
- return 2; // FAILED
- }
- } catch (UnknownHostException exception) {
- complain(exception.toString());
- return 2; // FAILED
- }
- display("Host: " + address);
-
- //
- // Detect if it is safe to open MAX_CONNETIONS simultaneously:
- //
- final int CONNECTIONS = detectOSLimitation();
-
- //
- // Assign ServerSocket, and start client VM which should open
- // the prescribed number of CONNECTIONS to that ServerSocket.
- //
-
- ServerSocket serverSocket;
- try {
- final int anyPort = 0;
- final int defaultBacklog = BACKLOG_QUEUE_LENGTH;
- serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
- } catch (IOException exception) {
- complain("Cannot assign a ServerSocket on: " + address);
- return 2;
- }
-
- //
- // Start the client process on different VM.
- //
-
- String IPAddress = address.getHostAddress();
- int localPort = serverSocket.getLocalPort();
- String arguments = " " + CONNECTIONS + " " + IPAddress + " " + localPort;
- //String command = args[0] + " " + network006.class.getName() + "$Client " + arguments;
- String command = args[0] + " " + Client.class.getName() + " " + arguments;
- try {
- SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
- } catch (NumberFormatException e) {
- complain("Wrong timeout argument: " + e);
- return 2;
- }
-
- Runtime runtime = Runtime.getRuntime();
-
- Process client = null;
- IORedirector redirectOut = null;
- IORedirector redirectErr = null;
-
- try {
- // Start clients on different JVM:
- client = runtime.exec(command);
-
- // Provide clients with access to stderr and stdout:
- InputStream clientOut = client.getInputStream();
- InputStream clientErr = client.getErrorStream();
- redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
- redirectErr = new IORedirector(clientErr, out);
- redirectOut.start();
- redirectErr.start();
-
- } catch (Exception exception) {
- complain("Failed to start client: " + exception);
- return 2;
- }
- //
- // Start the server threads (and let them establish connections):
- //
-
- Server server[] = new Server[CONNECTIONS];
- for (int i = 0; i < CONNECTIONS; i++) {
- server[i] = new Server(serverSocket);
- display("Server #" + i + ": " + server[i]);
- server[i].start();
- }
-
- //
- // Wait for the servers and the clients:
- //
-
- boolean testFailed = false;
-
- try {
- client.waitFor();
- int clientStatus = client.exitValue();
- display("Client VM exitCode=" + clientStatus);
-
- // Let I/O redirectors to flush:
- if (redirectOut.isAlive())
- redirectOut.join();
- if (redirectErr.isAlive())
- redirectErr.join();
-
- // If client has crashed, also terminate the server (to avoid hangup).
- if (clientStatus != 95) {
- complain("Client VM has crashed: exit status=" + clientStatus);
- testFailed = true;
- }
-
- // Client has finished OK; wait for the server.
- for (int i = 0; i < CONNECTIONS; i++) {
- display("Server: waiting for #" + i);
- if (server[i].isAlive()) {
- display("Server #" + i + ": (joining...)" + server[i]);
- server[i].join();
- }
- if (server[i].exception != null) {
- if (server[i].message != null)
- complain("Server #" + i + "(finished): with message:" + server[i].message);
-
- complain("Server #" + i + "(finished): " + server[i].exception);
- server[i].exception.printStackTrace(out);
- out.flush();
-// complain("Server #"+i+": "+server[i].exception.getStackTrace());
- testFailed = true;
- }
- }
-
- } catch (Exception exception) {
- complain("Test interrupted: " + exception);
- testFailed = true;
- }
-
- if (testFailed)
- complain("Test failed.");
- else
- display("Test passed.");
- return testFailed ? 2 : 0;
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Log stream for error messages and/or (optional) execution trace.
- */
- private static PrintStream out;
-
- /**
- * Print error message.
- */
- private static synchronized void complain(Object message) {
- out.println("# " + message);
- out.flush();
- }
-
- /**
- * Display optional report: comment ca va?
- */
- private static synchronized void display(Object report) {
- if (DEBUG_MODE)
- out.println(report.toString());
- out.flush(); //todo shouldn't this be inside if??
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Server thread should reply to data parcels sent by Client VM.
- */
- private static class Server extends Thread {
- /**
- * The socket is assigned at the Server instantiation.
- */
- private ServerSocket serverSocket;
-
- /**
- * The socket is assigned at the Server runtime.
- */
- private Socket socket;
-
- /**
- * Display the server socket.
- */
- public String toString() {
-
- return "ServerSocket: " + serverSocket.toString();
-// + " socket: " + socket.toString();
- }
-
- /**
- * Which port is this socket listening?
- */
- int getPort() {
- return serverSocket.getLocalPort();
- }
-
- /**
- * Find some free port at the given <code>address</code>
- * and attach new server to hear that port. // lidsten to??
- */
- public Server(ServerSocket serverSocket) {
- this.serverSocket = serverSocket;
- }
-
- /**
- * Exception just arisen while the server was working,
- * or <code>null</code> if it was OK with the server.
- */
- Exception exception = null;
- String message = null;
-
- /**
- * Accept connection, then reply to client's parcels.
- */
- public void run() {
- try {
- socket = serverSocket.accept();
- socket.setSoTimeout(SO_TIMEOUT);
-
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
- message = "reading parcel number " + i;
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Server thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure( //received??
- "server has read unexpected parcel");
- }
- message = "sending parcel number " + i;
- etalon.send(ostream);
- ostream.flush();
- }
-
- int datum = istream.read(); // wait for client close()
- if (datum >= 0)
- throw new TestFailure(
- "server has read ambigous byte: " + datum);
-
- ostream.close(); // implies: socket.close();
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
- }
-
- //----------------------------------------------------------------//
-
- /**
- * Client VM should send data parcels to Server VM and
- * recieve and verify the server's replies.
- */
- private static class Client extends Thread {
- /**
- * This thread uses the single client socket.
- */
- private Socket socket;
-
- /**
- * Address and port of this socket.
- */
- public String toString() {
- return socket.toString();
- }
-
- /**
- * Did the thread failed? If yes, what is the failure's reason.
- */
- Exception exception = null;
- String message = null;
-
-
- public static java.io.PrintStream complainStream = System.out;
- public static java.io.PrintStream displayStream = System.err;
-
- /**
- * Connect client socket on the given <code>address</code>
- * and <code>port</code>.
- */
- Client(InetAddress address, int port) throws IOException {
- socket = new Socket(address, port);
- socket.setSoTimeout(SO_TIMEOUT);
- }
-
- /**
- * What is the port number this socket is listening for?
- */
- int getPort() {
- return socket.getPort();
- }
-
- /**
- * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
- * of random data. Set initial seed for pseudo-random numbers generator
- * to the value of the local port number.
- *
- * @see #DATA_PARCELS
- * @see #getPort()
- */
- public void run() {
- try {
- InputStream istream = socket.getInputStream();
- OutputStream ostream = socket.getOutputStream();
-
- Random random = new Random(getPort());
- // suggested by Oleg -- to avoid race conditions
- /* try{
- Thread.sleep(500);
- }
- catch (java.lang.InterruptedException e)
- {
- }*/
-
- for (int i = 0; i < DATA_PARCELS; i++) {
- Parcel etalon = new Parcel(random);
- message = "sending parcel number: " + i;
- etalon.send(ostream);
- ostream.flush();
-
- message = "reading parcel number: " + i;
- Parcel sample = new Parcel(istream); // read
- if (!sample.equals(etalon)) {
- complain("Client thread for port #"
- + getPort() + " got unexpected parcel:\n"
- + "sample=" + sample + "\n"
- + "etalon=" + etalon);
- throw new TestFailure(
- "parcel context is unexpected to client");
- }
- }
-
- if (istream.available() > 0) {
- int datum = istream.read();
- throw new TestFailure(
- "client has read ambigous byte: " + datum);
- }
- ostream.close(); // implies: socket.close()
-
- } catch (Exception oops) {
- exception = oops;
- }
- }
-
- /**
- * Establish lots of connections to server socket, attack servers with
- * huge data parcels, and check if they reply correctly. The number of
- * connections to try, the address and port number for the server socket
- * are passed through <code>args[]</code>, like:
- * <pre>
- * java network006$Client connections_to_try address port
- * </pre>
- */
- public static void main(String args[]) {
- if (DEBUG_MODE) {
- try {
- String filename = "Client" + ((args.length == 3) ? args[2] : "new");
- displayStream = new PrintStream(filename + ".out");
- complainStream = new PrintStream(filename + ".err");
- } catch (FileNotFoundException exception) {
- complain(exception);
- }
-
- }
-
- if (args.length != 3) {
- complain("Client expects 3 paramenets:");
- complain(" java " + Client.class.getName() + " connections_to_try address port");
- exit(1); // FAILED
- }
-
- int CONNECTIONS = Integer.parseInt(args[0]);
- display("Client VM: will try " + CONNECTIONS + " connections.");
- InetAddress address;
- try {
- address = InetAddress.getByName(args[1]);
- } catch (UnknownHostException exception) {
- address = null;
- complain("Client: cannot find host: \"" + args[1] + "\"");
- exit(4);
- }
- display("Client: host to contact: " + address);
- int port = Integer.parseInt(args[2]);
- display("Client: port to contact: " + port);
-
- //
- // Establish connections, and start client processes:
- //
-
- Client client[] = new Client[CONNECTIONS];
- for (int i = 0; i < CONNECTIONS; i++)
- try {
- client[i] = new Client(address, port);
- display("Client #" + i + ": " + client[i]);
-
- } catch (IOException ioe) {
- complain("Client #" + i + "(creation): " + ioe);
- ioe.printStackTrace(complainStream);
- complainStream.flush();
-// complain("Client #" + i + "(creation): " + ioe.getStackTrace());
- exit(3);
- }
-
- for (int i = 0; i < CONNECTIONS; i++)
- client[i].start();
-
- //
- // Wait until testing is not finished:
- //
-
- int status = 0;
- for (int i = 0; i < CONNECTIONS; i++) {
- display("Client: waiting for #" + i);
- if (client[i].isAlive()) {
- display("Client #" + i + ": (joining...)" + client[i]);
-
- try {
- client[i].join();
- } catch (InterruptedException ie) {
- complain("Client #" + i + ": " + ie);
- status = 3;
- }
- }
- if (client[i].exception != null) {
- if (client[i].message != null)
- complain("Client #" + i + "(finished) with message: " + client[i].message);
- complain("Client #" + i + "(finished): " + client[i].exception);
- client[i].exception.printStackTrace(complainStream);
- complainStream.flush();
- if (status == 0)
- status = 2;
- }
- }
-
- exit(status);
- }
-
- /**
- * Print error message.
- */
- private static synchronized void complain(Object message) {
- complainStream.println("# " + message);
- complainStream.flush();
- }
-
- /**
- * Display execution trace.
- */
- private static synchronized void display(Object message) {
- if (!DEBUG_MODE)
- return;
- displayStream.println(message.toString());
- displayStream.flush();
- }
-
- /**
- * Exit with JCK-like status.
- */
- private static void exit(int exitCode) {
- int status = exitCode + 95;
-// display("Client: exiting with code=" + status);
- System.exit(status);
- }
- }
-
- /**
- * Two of such threads should redirect <code>out</code> and <code>err</code>
- * streams of client VM.
- */
- private static class IORedirector extends Thread {
- /**
- * Source stream.
- */
- InputStream in;
- /**
- * Destination stream.
- */
- OutputStream out;
-
- /**
- * Redirect <code>in</code> to <code>out</code>.
- */
- public IORedirector(InputStream in, OutputStream out) {
- this.in = in;
- this.out = out;
- }
-
- /**
- * Read input stream until the EOF, and write everithing to output stream.
- * If output stream is assigned to <code>null</code>, do not print anything,
- * but read the input stream anywhere.
- */
- public void run() {
- try {
- for (; ; ) {
- int symbol = in.read();
- if (symbol < 0)
- break; // EOF
- if (out != null)
- out.write(symbol);
- }
-
- if (out != null)
- out.flush();
-
- } catch (Exception exception) {
- throw new TestFailure("IORedirector exception: " + exception);
- }
- }
- }
-
- //----------------------------------------------------------------//
-
- /**
- * A data parcel to be sent/recieved between Client VM and Server thread.
- * When data parcel is sent, first 4 bytes are transfered which encode the
- * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
- * number of data bytes in the parcel's contents is <code>N</code>, then
- * the first 4 bytes encode the number <code>N-1</code>. After that, the
- * parcel's contents bytes are transered.
- */
- static class Parcel {
- private byte[] parcel;
-
- /**
- * Display all bytes as integer values from 0 to 255;
- * or return ``<tt>null</tt>'' if this Parcel is not
- * yet initialized.
- */
- public String toString() {
- if (parcel == null)
- return "null";
- String s = "{";
- for (int i = 0; i < parcel.length; i++)
- s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
- return s + "}";
- }
-
- /**
- * Generate new <code>parcel[]</code> array using the given
- * <code>random</code> numbers generator. Client and Server
- * threads should use identical <code>random</code> generators,
- * so that those threads could generate equal data parcels and
- * check the parcel just transfered.
- */
- public Parcel(Random random) {
- int size = random.nextInt(MAX_PARCEL) + 1;
- parcel = new byte[size];
- for (int i = 0; i < size; i++)
- parcel[i] = (byte) random.nextInt(256);
- }
-
- /**
- * Read exactly <code>size</code> bytes from the <code>istream</code>
- * if possible, or throw <code>TestFailure</code> if unexpected end of
- * <code>istream</code> occurs.
- */
- private static byte[] readBytes(int size, InputStream istream)
- throws IOException {
-
- byte data[] = new byte[size];
- for (int i = 0; i < size; i++) {
- int datum = istream.read();
- if (datum < 0)
- throw new TestFailure(
- "unexpected EOF: have read: " + i + " bytes of " + size);
- data[i] = (byte) datum;
- }
- return data;
- }
-
- /**
- * Read 4 bytes from <code>istream</code> and threat them to encode
- * size of data parcel following these 4 bytes.
- */
- private static int getSize(InputStream istream) throws IOException {
- byte data[] = readBytes(4, istream);
- int data0 = (int) data[0] & 0xFF;
- int data1 = (int) data[1] & 0xFF;
- int data2 = (int) data[2] & 0xFF;
- int data3 = (int) data[3] & 0xFF;
- int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
- int size = sizeWord + 1;
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
- return size;
- }
-
- /**
- * Send 4 bytes encoding actual size of the parcel just to be transfered.
- */
- private static void putSize(OutputStream ostream, int size)
- throws IOException {
-
- if (size <= 0)
- throw new TestFailure("illegal size: " + size);
-
- int sizeWord = size - 1;
- byte data[] = new byte[4];
- data[0] = (byte) sizeWord;
- data[1] = (byte) (sizeWord >> 8);
- data[2] = (byte) (sizeWord >> 16);
- data[3] = (byte) (sizeWord >> 24);
- ostream.write(data);
- }
-
- /**
- * Recieve data parcel.
- */
- public Parcel(InputStream istream) throws IOException {
- int size = getSize(istream);
- parcel = readBytes(size, istream);
- }
-
- /**
- * Send <code>this</code> data parcel.
- */
- public void send(OutputStream ostream) throws IOException {
- int size = parcel.length;
- putSize(ostream, size);
- ostream.write(parcel);
- }
-
- /**
- * Check byte-to-byte equality between <code>this</code> and the
- * <code>other</code> parcels.
- */
- public boolean equals(Parcel other) {
- if (this.parcel.length != other.parcel.length)
- return false;
- int size = parcel.length;
- for (int i = 0; i < size; i++)
- if (this.parcel[i] != other.parcel[i])
- return false;
- return true;
- }
- }
-
- /**
- * Server or Client may throw this exception to report the test failure.
- */
- static class TestFailure extends RuntimeException {
- /**
- * Report particular <code>purpose</code> of the test failure.
- */
- public TestFailure(String purpose) {
- super(purpose);
- }
- }
-}
--- a/test/jdk/ProblemList.txt Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/ProblemList.txt Fri Dec 07 09:46:53 2018 -0500
@@ -883,4 +883,3 @@
# jdk_jfr
jdk/jfr/event/io/TestInstrumentation.java 8202142 generic-all
-jdk/jfr/event/sampling/TestNative.java 8202142 generic-all
--- a/test/jdk/java/io/InputStream/NullInputStream.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/java/io/InputStream/NullInputStream.java Fri Dec 07 09:46:53 2018 -0500
@@ -22,6 +22,7 @@
*/
import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
import java.io.InputStream;
import java.io.IOException;
import org.testng.annotations.AfterGroups;
@@ -31,7 +32,7 @@
/*
* @test
- * @bug 4358774 8139206
+ * @bug 4358774 6516099 8139206
* @run testng NullInputStream
* @summary Check for expected behavior of InputStream.nullInputStream().
*/
@@ -146,6 +147,21 @@
}
@Test(groups = "open")
+ public static void testSkipNBytes() {
+ try {
+ openStream.skipNBytes(-1);
+ openStream.skipNBytes(0);
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open", expectedExceptions = EOFException.class)
+ public static void testSkipNBytesEOF() throws IOException {
+ openStream.skipNBytes(1);
+ }
+
+ @Test(groups = "open")
public static void testTransferTo() {
try {
assertEquals(0, openStream.transferTo(new ByteArrayOutputStream(7)),
@@ -219,6 +235,15 @@
}
@Test(groups = "closed")
+ public static void testSkipNBytesClosed() {
+ try {
+ closedStream.skipNBytes(1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
public static void testTransferToClosed() {
try {
closedStream.transferTo(new ByteArrayOutputStream(7));
--- a/test/jdk/java/io/InputStream/Skip.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/java/io/InputStream/Skip.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018 Oracle and/or its affiliates. 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
@@ -21,24 +21,22 @@
* questions.
*/
-
-/* @test
- @bug 4016710
- @summary check for correct implementation of InputStream.skip
- */
-
-import java.io.*;
-
+/**
+ * @test
+ * @bug 4016710 6516099
+ * @summary check for correct implementation of InputStream.skip{NBytes}
+ */
-public class Skip{
+import java.io.EOFException;
+import java.io.InputStream;
+import java.io.IOException;
- private static void dotest(InputStream in , int curpos ,
- long total , long toskip , long expected)
- throws Exception
- {
+public class Skip {
+ private static final int EOF = -1;
+ private static void dotest(InputStream in, int curpos, long total,
+ long toskip, long expected) throws Exception {
try {
-
System.err.println("\n\nCurrently at pos = " + curpos +
"\nTotal bytes in the Stream = " + total +
"\nNumber of bytes to skip = " + toskip +
@@ -50,43 +48,69 @@
System.err.println("actual number skipped: "+ skipped);
if ((skipped < 0) || (skipped > expected)) {
- throw new RuntimeException("Unexpected number of bytes skipped");
+ throw new RuntimeException("Unexpected byte count skipped");
}
-
} catch (IOException e) {
- System.err.println("IOException is thrown - possible result");
+ System.err.println("IOException is thrown: " + e);
} catch (Throwable e) {
- throw new RuntimeException("Unexpected "+e+" is thrown!");
+ throw new RuntimeException("Unexpected " + e + " is thrown!");
}
+ }
+ private static void dotestExact(MyInputStream in, long curpos, long total,
+ long toskip, boolean expectIOE, boolean expectEOFE) {
+
+ System.err.println("\n\nCurrently at pos = " + curpos +
+ "\nTotal bytes in the Stream = " + total +
+ "\nNumber of bytes to skip = " + toskip);
+
+ try {
+ long pos = in.position();
+ assert pos == curpos : pos + " != " + curpos;
+ in.skipNBytes(toskip);
+ if (in.position() != pos + (toskip < 0 ? 0 : toskip)) {
+ throw new RuntimeException((in.position() - pos) +
+ " bytes skipped; expected " + toskip);
+ }
+ } catch (EOFException eofe) {
+ if (!expectEOFE) {
+ throw new RuntimeException("Unexpected EOFException", eofe);
+ }
+ System.err.println("Caught expected EOFException");
+ } catch (IOException ioe) {
+ if (!expectIOE) {
+ throw new RuntimeException("Unexpected IOException", ioe);
+ }
+ System.err.println("Caught expected IOException");
+ }
}
public static void main( String argv[] ) throws Exception {
-
MyInputStream in = new MyInputStream(11);
- /* test for negative skip */
+ // test for negative skip
dotest(in, 0, 11, -23, 0);
- /* check for skip beyond EOF starting from before EOF */
+ // check for skip beyond EOF starting from before EOF
dotest(in, 0, 11, 20, 11);
- /* check for skip after EOF */
- dotest(in, -1, 11, 20, 0);
+ // check for skip after EOF
+ dotest(in, EOF, 11, 20, 0);
in = new MyInputStream(9000);
- /* check for skip equal to the read chunk size in InputStream.java */
+
+ // check for skip equal to the read chunk size in InputStream.java
dotest(in, 0, 9000, 2048, 2048);
- /* check for skip greater than the read chunk size in InputStream.java */
+ // check for skip larger than the read chunk size in InputStream.java
dotest(in, 2048, 9000, 5000, 5000);
- /* check for skip beyond EOF starting from before EOF */
+ // check for skip beyond EOF starting from before EOF
dotest(in, 7048, 9000, 5000, 1952);
in = new MyInputStream(5000);
- /* check for multiple chunk reads */
+ // check for multiple chunk reads
dotest(in, 0, 5000, 6000, 5000);
/*
@@ -98,23 +122,86 @@
* dotest(in, 0, total, toskip, toskip);
*/
+ // tests for skipping an exact number of bytes
+
+ final long streamLength = Long.MAX_VALUE;
+ in = new MyInputStream(streamLength);
+
+ // negative skip: OK
+ dotestExact(in, 0, streamLength, -1, false, false);
+
+ // negative skip at EOF: OK
+ in.position(streamLength);
+ dotestExact(in, streamLength, streamLength, -1, false, false);
+ in.position(0);
+
+ // zero skip: OK
+ dotestExact(in, 0, streamLength, 0, false, false);
+
+ // zero skip at EOF: OK
+ in.position(streamLength);
+ dotestExact(in, streamLength, streamLength, 0, false, false);
+
+ // skip(1) at EOF: EOFE
+ dotestExact(in, streamLength, streamLength, 1, false, true);
+ in.position(0);
+
+ final long n = 31; // skip count
+ long pos = 0;
+
+ // skip(n) returns negative value: IOE
+ in.setState(-1, 100);
+ dotestExact(in, pos, streamLength, n, true, false);
+
+ // skip(n) returns n + 1: IOE
+ in.setState(n + 1, 100);
+ dotestExact(in, pos, streamLength, n, true, false);
+ pos += n + 1;
+
+ // skip(n) returns n/2 but only n/4 subsequent reads succeed: EOFE
+ in.setState(n/2, n/2 + n/4);
+ dotestExact(in, pos, streamLength, n, false, true);
+ pos += n/2 + n/4;
+
+ // skip(n) returns n/2 but n - n/2 subsequent reads succeed: OK
+ in.setState(n/2, n);
+ dotestExact(in, pos, streamLength, n, false, false);
+ pos += n;
}
-
}
class MyInputStream extends InputStream {
+ private static final int EOF = -1;
- private int readctr = 0;
- private long endoffile;
+ private final long endoffile;
+
+ private long readctr = 0;
+
+ private boolean isStateSet = false;
+ private long skipReturn;
+ private long readLimit;
public MyInputStream(long endoffile) {
this.endoffile = endoffile;
}
- public int read() {
+ /**
+ * Limits the behavior of skip() and read().
+ *
+ * @param skipReturn the value to be returned by skip()
+ * @param maxReads the maximum number of reads past the current position
+ * before EOF is reached
+ */
+ public void setState(long skipReturn, long maxReads) {
+ this.skipReturn = skipReturn;
+ this.readLimit = readctr + maxReads;
+ isStateSet = true;
+ }
- if (readctr == endoffile) {
- return -1;
+ public int read() {
+ if (readctr == endoffile ||
+ (isStateSet && readctr >= readLimit)) {
+ return EOF;
}
else {
readctr++;
@@ -123,4 +210,19 @@
}
public int available() { return 0; }
+
+ public long position() { return readctr; }
+
+ public void position(long pos) {
+ readctr = pos < 0 ? 0 : Math.min(pos, endoffile);
+ }
+
+ public long skip(long n) throws IOException {
+ if (isStateSet) {
+ return skipReturn < 0 ? skipReturn : super.skip(skipReturn);
+ }
+
+ // InputStream skip implementation.
+ return super.skip(n); // readctr is implicitly incremented
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/CompactFormatAndParseHelper.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import static org.testng.Assert.*;
+
+class CompactFormatAndParseHelper {
+
+ static void testFormat(NumberFormat cnf, Object number,
+ String expected) {
+ String result = cnf.format(number);
+ assertEquals(result, expected, "Incorrect formatting of the number '"
+ + number + "'");
+ }
+
+ static void testParse(NumberFormat cnf, String parseString,
+ Number expected, ParsePosition position, Class<? extends Number> returnType) throws ParseException {
+
+ Number number;
+ if (position == null) {
+ number = cnf.parse(parseString);
+ } else {
+ number = cnf.parse(parseString, position);
+ }
+
+ if (returnType != null) {
+ assertEquals(number.getClass(), returnType, "Incorrect return type for string" + parseString);
+ }
+
+ if (number instanceof Double) {
+ assertEquals(number.doubleValue(), (double) expected,
+ "Incorrect parsing of the string '" + parseString + "'");
+ } else if (number instanceof Long) {
+ assertEquals(number.longValue(), (long) expected,
+ "Incorrect parsing of the string '" + parseString + "'");
+ } else if (number instanceof BigDecimal) {
+ BigDecimal num = (BigDecimal) number;
+ assertEquals(num, (BigDecimal) expected,
+ "Incorrect parsing of the string '" + parseString + "'");
+ } else {
+ assertEquals(number, expected, "Incorrect parsing of the string '"
+ + parseString + "'");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCNFRounding.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the rounding of formatted number in compact number formatting
+ * @run testng/othervm TestCNFRounding
+ */
+
+import java.math.RoundingMode;
+import java.text.NumberFormat;
+import java.util.List;
+import java.util.Locale;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCNFRounding {
+
+ private static final List<RoundingMode> MODES = List.of(
+ RoundingMode.HALF_EVEN,
+ RoundingMode.HALF_UP,
+ RoundingMode.HALF_DOWN,
+ RoundingMode.UP,
+ RoundingMode.DOWN,
+ RoundingMode.CEILING,
+ RoundingMode.FLOOR);
+
+ @DataProvider(name = "roundingData")
+ Object[][] roundingData() {
+ return new Object[][]{
+ // Number, half_even, half_up, half_down, up, down, ceiling, floor
+ {5500, new String[]{"6K", "6K", "5K", "6K", "5K", "6K", "5K"}},
+ {2500, new String[]{"2K", "3K", "2K", "3K", "2K", "3K", "2K"}},
+ {1600, new String[]{"2K", "2K", "2K", "2K", "1K", "2K", "1K"}},
+ {1100, new String[]{"1K", "1K", "1K", "2K", "1K", "2K", "1K"}},
+ {1000, new String[]{"1K", "1K", "1K", "1K", "1K", "1K", "1K"}},
+ {-1000, new String[]{"-1K", "-1K", "-1K", "-1K", "-1K", "-1K", "-1K"}},
+ {-1100, new String[]{"-1K", "-1K", "-1K", "-2K", "-1K", "-1K", "-2K"}},
+ {-1600, new String[]{"-2K", "-2K", "-2K", "-2K", "-1K", "-1K", "-2K"}},
+ {-2500, new String[]{"-2K", "-3K", "-2K", "-3K", "-2K", "-2K", "-3K"}},
+ {-5500, new String[]{"-6K", "-6K", "-5K", "-6K", "-5K", "-5K", "-6K"}},
+ {5501, new String[]{"6K", "6K", "6K", "6K", "5K", "6K", "5K"}},
+ {-5501, new String[]{"-6K", "-6K", "-6K", "-6K", "-5K", "-5K", "-6K"}},
+ {1001, new String[]{"1K", "1K", "1K", "2K", "1K", "2K", "1K"}},
+ {-1001, new String[]{"-1K", "-1K", "-1K", "-2K", "-1K", "-1K", "-2K"}},
+ {4501, new String[]{"5K", "5K", "5K", "5K", "4K", "5K", "4K"}},
+ {-4501, new String[]{"-5K", "-5K", "-5K", "-5K", "-4K", "-4K", "-5K"}},
+ {4500, new String[]{"4K", "5K", "4K", "5K", "4K", "5K", "4K"}},
+ {-4500, new String[]{"-4K", "-5K", "-4K", "-5K", "-4K", "-4K", "-5K"}},};
+ }
+
+ @DataProvider(name = "roundingFract")
+ Object[][] roundingFract() {
+ return new Object[][]{
+ // Number, half_even, half_up, half_down, up, down, ceiling, floor
+ {5550, new String[]{"5.5K", "5.5K", "5.5K", "5.6K", "5.5K", "5.6K", "5.5K"}},
+ {2550, new String[]{"2.5K", "2.5K", "2.5K", "2.6K", "2.5K", "2.6K", "2.5K"}},
+ {1660, new String[]{"1.7K", "1.7K", "1.7K", "1.7K", "1.6K", "1.7K", "1.6K"}},
+ {1110, new String[]{"1.1K", "1.1K", "1.1K", "1.2K", "1.1K", "1.2K", "1.1K"}},
+ {1000, new String[]{"1.0K", "1.0K", "1.0K", "1.0K", "1.0K", "1.0K", "1.0K"}},
+ {-1000, new String[]{"-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K"}},
+ {-1110, new String[]{"-1.1K", "-1.1K", "-1.1K", "-1.2K", "-1.1K", "-1.1K", "-1.2K"}},
+ {-1660, new String[]{"-1.7K", "-1.7K", "-1.7K", "-1.7K", "-1.6K", "-1.6K", "-1.7K"}},
+ {-2550, new String[]{"-2.5K", "-2.5K", "-2.5K", "-2.6K", "-2.5K", "-2.5K", "-2.6K"}},
+ {-5550, new String[]{"-5.5K", "-5.5K", "-5.5K", "-5.6K", "-5.5K", "-5.5K", "-5.6K"}},
+ {5551, new String[]{"5.6K", "5.6K", "5.6K", "5.6K", "5.5K", "5.6K", "5.5K"}},
+ {-5551, new String[]{"-5.6K", "-5.6K", "-5.6K", "-5.6K", "-5.5K", "-5.5K", "-5.6K"}},
+ {1001, new String[]{"1.0K", "1.0K", "1.0K", "1.1K", "1.0K", "1.1K", "1.0K"}},
+ {-1001, new String[]{"-1.0K", "-1.0K", "-1.0K", "-1.1K", "-1.0K", "-1.0K", "-1.1K"}},
+ {4551, new String[]{"4.6K", "4.6K", "4.6K", "4.6K", "4.5K", "4.6K", "4.5K"}},
+ {-4551, new String[]{"-4.6K", "-4.6K", "-4.6K", "-4.6K", "-4.5K", "-4.5K", "-4.6K"}},
+ {4500, new String[]{"4.5K", "4.5K", "4.5K", "4.5K", "4.5K", "4.5K", "4.5K"}},
+ {-4500, new String[]{"-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K"}},};
+ }
+
+ @DataProvider(name = "rounding2Fract")
+ Object[][] rounding2Fract() {
+ return new Object[][]{
+ // Number, half_even, half_up, half_down
+ {1115, new String[]{"1.11K", "1.11K", "1.11K"}},
+ {1125, new String[]{"1.12K", "1.13K", "1.12K"}},
+ {1135, new String[]{"1.14K", "1.14K", "1.14K"}},
+ {3115, new String[]{"3.12K", "3.12K", "3.12K"}},
+ {3125, new String[]{"3.12K", "3.13K", "3.12K"}},
+ {3135, new String[]{"3.13K", "3.13K", "3.13K"}},
+ {6865, new String[]{"6.87K", "6.87K", "6.87K"}},
+ {6875, new String[]{"6.88K", "6.88K", "6.87K"}},
+ {6885, new String[]{"6.88K", "6.88K", "6.88K"}},
+ {3124, new String[]{"3.12K", "3.12K", "3.12K"}},
+ {3126, new String[]{"3.13K", "3.13K", "3.13K"}},
+ {3128, new String[]{"3.13K", "3.13K", "3.13K"}},
+ {6864, new String[]{"6.86K", "6.86K", "6.86K"}},
+ {6865, new String[]{"6.87K", "6.87K", "6.87K"}},
+ {6868, new String[]{"6.87K", "6.87K", "6.87K"}},
+ {4685, new String[]{"4.68K", "4.68K", "4.68K"}},
+ {4687, new String[]{"4.69K", "4.69K", "4.69K"}},
+ {4686, new String[]{"4.69K", "4.69K", "4.69K"}},};
+ }
+
+ @Test(expectedExceptions = NullPointerException.class)
+ public void testNullMode() {
+ NumberFormat fmt = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+ fmt.setRoundingMode(null);
+ }
+
+ @Test
+ public void testDefaultRoundingMode() {
+ NumberFormat fmt = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+ assertEquals(fmt.getRoundingMode(), RoundingMode.HALF_EVEN,
+ "Default RoundingMode should be " + RoundingMode.HALF_EVEN);
+ }
+
+ @Test(dataProvider = "roundingData")
+ public void testRounding(Object number, String[] expected) {
+ for (int index = 0; index < MODES.size(); index++) {
+ testRoundingMode(number, expected[index], 0, MODES.get(index));
+ }
+ }
+
+ @Test(dataProvider = "roundingFract")
+ public void testRoundingFract(Object number, String[] expected) {
+ for (int index = 0; index < MODES.size(); index++) {
+ testRoundingMode(number, expected[index], 1, MODES.get(index));
+ }
+ }
+
+ @Test(dataProvider = "rounding2Fract")
+ public void testRounding2Fract(Object number, String[] expected) {
+ List<RoundingMode> rModes = List.of(RoundingMode.HALF_EVEN,
+ RoundingMode.HALF_UP, RoundingMode.HALF_DOWN);
+ for (int index = 0; index < rModes.size(); index++) {
+ testRoundingMode(number, expected[index], 2, rModes.get(index));
+ }
+ }
+
+ private void testRoundingMode(Object number, String expected,
+ int fraction, RoundingMode rounding) {
+ NumberFormat fmt = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+ fmt.setRoundingMode(rounding);
+ assertEquals(fmt.getRoundingMode(), rounding,
+ "RoundingMode set is not returned by getRoundingMode");
+
+ fmt.setMinimumFractionDigits(fraction);
+ String result = fmt.format(number);
+ assertEquals(result, expected, "Incorrect formatting of number "
+ + number + " using rounding mode: " + rounding);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCompactNumber.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,589 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of compact number format
+ * @modules jdk.localedata
+ * @run testng/othervm TestCompactNumber
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.stream.Stream;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCompactNumber {
+
+ private static final NumberFormat FORMAT_DZ_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_EN_US_SHORT = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_EN_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_HI_IN_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_JA_JP_SHORT = NumberFormat
+ .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_IT_SHORT = NumberFormat
+ .getCompactNumberInstance(new Locale("it"), NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_CA_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("ca"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_AS_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("as"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_BRX_SHORT = NumberFormat
+ .getCompactNumberInstance(new Locale("brx"), NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_SW_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("sw"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_SE_SHORT = NumberFormat
+ .getCompactNumberInstance(new Locale("se"), NumberFormat.Style.SHORT);
+
+ @DataProvider(name = "format")
+ Object[][] compactFormatData() {
+ return new Object[][]{
+ // compact number format instance, number to format, formatted output
+ {FORMAT_DZ_LONG, 1000.09, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+ + "\u0FB2\u0F42 \u0F21"},
+ {FORMAT_DZ_LONG, -999.99, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+ + "\u0FB2\u0F42 \u0F21"},
+ {FORMAT_DZ_LONG, -0.0, "-\u0F20"},
+ {FORMAT_DZ_LONG, 3000L, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+ + "\u0FB2\u0F42 \u0F23"},
+ {FORMAT_DZ_LONG, new BigInteger("12345678901234567890"), "\u0F51"
+ + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+ + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+ // negative
+ {FORMAT_DZ_LONG, new BigInteger("-12345678901234567890"), "-\u0F51"
+ + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+ + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+ {FORMAT_DZ_LONG, new BigDecimal("12345678901234567890.89"), "\u0F51"
+ + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+ + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+ {FORMAT_DZ_LONG, new BigDecimal("-12345678901234567890.89"), "-\u0F51"
+ + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+ + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+ // Zeros
+ {FORMAT_EN_US_SHORT, 0, "0"},
+ {FORMAT_EN_US_SHORT, 0.0, "0"},
+ {FORMAT_EN_US_SHORT, -0.0, "-0"},
+ // Less than 1000 no suffix
+ {FORMAT_EN_US_SHORT, 499, "499"},
+ // Boundary number
+ {FORMAT_EN_US_SHORT, 1000.0, "1K"},
+ // Long
+ {FORMAT_EN_US_SHORT, 3000L, "3K"},
+ {FORMAT_EN_US_SHORT, 30000L, "30K"},
+ {FORMAT_EN_US_SHORT, 300000L, "300K"},
+ {FORMAT_EN_US_SHORT, 3000000L, "3M"},
+ {FORMAT_EN_US_SHORT, 30000000L, "30M"},
+ {FORMAT_EN_US_SHORT, 300000000L, "300M"},
+ {FORMAT_EN_US_SHORT, 3000000000L, "3B"},
+ {FORMAT_EN_US_SHORT, 30000000000L, "30B"},
+ {FORMAT_EN_US_SHORT, 300000000000L, "300B"},
+ {FORMAT_EN_US_SHORT, 3000000000000L, "3T"},
+ {FORMAT_EN_US_SHORT, 30000000000000L, "30T"},
+ {FORMAT_EN_US_SHORT, 300000000000000L, "300T"},
+ {FORMAT_EN_US_SHORT, 3000000000000000L, "3000T"},
+ // Negatives
+ {FORMAT_EN_US_SHORT, -3000L, "-3K"},
+ {FORMAT_EN_US_SHORT, -30000L, "-30K"},
+ {FORMAT_EN_US_SHORT, -300000L, "-300K"},
+ {FORMAT_EN_US_SHORT, -3000000L, "-3M"},
+ {FORMAT_EN_US_SHORT, -30000000L, "-30M"},
+ {FORMAT_EN_US_SHORT, -300000000L, "-300M"},
+ {FORMAT_EN_US_SHORT, -3000000000L, "-3B"},
+ {FORMAT_EN_US_SHORT, -30000000000L, "-30B"},
+ {FORMAT_EN_US_SHORT, -300000000000L, "-300B"},
+ {FORMAT_EN_US_SHORT, -3000000000000L, "-3T"},
+ {FORMAT_EN_US_SHORT, -30000000000000L, "-30T"},
+ {FORMAT_EN_US_SHORT, -300000000000000L, "-300T"},
+ {FORMAT_EN_US_SHORT, -3000000000000000L, "-3000T"},
+ // Double
+ {FORMAT_EN_US_SHORT, 3000.0, "3K"},
+ {FORMAT_EN_US_SHORT, 30000.0, "30K"},
+ {FORMAT_EN_US_SHORT, 300000.0, "300K"},
+ {FORMAT_EN_US_SHORT, 3000000.0, "3M"},
+ {FORMAT_EN_US_SHORT, 30000000.0, "30M"},
+ {FORMAT_EN_US_SHORT, 300000000.0, "300M"},
+ {FORMAT_EN_US_SHORT, 3000000000.0, "3B"},
+ {FORMAT_EN_US_SHORT, 30000000000.0, "30B"},
+ {FORMAT_EN_US_SHORT, 300000000000.0, "300B"},
+ {FORMAT_EN_US_SHORT, 3000000000000.0, "3T"},
+ {FORMAT_EN_US_SHORT, 30000000000000.0, "30T"},
+ {FORMAT_EN_US_SHORT, 300000000000000.0, "300T"},
+ {FORMAT_EN_US_SHORT, 3000000000000000.0, "3000T"},
+ // Negatives
+ {FORMAT_EN_US_SHORT, -3000.0, "-3K"},
+ {FORMAT_EN_US_SHORT, -30000.0, "-30K"},
+ {FORMAT_EN_US_SHORT, -300000.0, "-300K"},
+ {FORMAT_EN_US_SHORT, -3000000.0, "-3M"},
+ {FORMAT_EN_US_SHORT, -30000000.0, "-30M"},
+ {FORMAT_EN_US_SHORT, -300000000.0, "-300M"},
+ {FORMAT_EN_US_SHORT, -3000000000.0, "-3B"},
+ {FORMAT_EN_US_SHORT, -30000000000.0, "-30B"},
+ {FORMAT_EN_US_SHORT, -300000000000.0, "-300B"},
+ {FORMAT_EN_US_SHORT, -3000000000000.0, "-3T"},
+ {FORMAT_EN_US_SHORT, -30000000000000.0, "-30T"},
+ {FORMAT_EN_US_SHORT, -300000000000000.0, "-300T"},
+ {FORMAT_EN_US_SHORT, -3000000000000000.0, "-3000T"},
+ // BigInteger
+ {FORMAT_EN_US_SHORT, new BigInteger("12345678901234567890"),
+ "12345679T"},
+ {FORMAT_EN_US_SHORT, new BigInteger("-12345678901234567890"),
+ "-12345679T"},
+ //BigDecimal
+ {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890.89"),
+ "12345679T"},
+ {FORMAT_EN_US_SHORT, new BigDecimal("-12345678901234567890.89"),
+ "-12345679T"},
+ {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890123466767.89"),
+ "12345678901234568T"},
+ {FORMAT_EN_US_SHORT, new BigDecimal(
+ "12345678901234567890878732267863209.89"),
+ "12345678901234567890879T"},
+ // number as exponent
+ {FORMAT_EN_US_SHORT, 9.78313E+3, "10K"},
+ // Less than 1000 no suffix
+ {FORMAT_EN_LONG, 999, "999"},
+ // Round the value and then format
+ {FORMAT_EN_LONG, 999.99, "1 thousand"},
+ // 10 thousand
+ {FORMAT_EN_LONG, 99000, "99 thousand"},
+ // Long path
+ {FORMAT_EN_LONG, 330000, "330 thousand"},
+ // Double path
+ {FORMAT_EN_LONG, 3000.90, "3 thousand"},
+ // BigInteger path
+ {FORMAT_EN_LONG, new BigInteger("12345678901234567890"),
+ "12345679 trillion"},
+ //BigDecimal path
+ {FORMAT_EN_LONG, new BigDecimal("12345678901234567890.89"),
+ "12345679 trillion"},
+ // Less than 1000 no suffix
+ {FORMAT_HI_IN_LONG, -999, "-999"},
+ // Round the value with 0 fraction digits and format it
+ {FORMAT_HI_IN_LONG, -999.99, "-1 \u0939\u091C\u093C\u093E\u0930"},
+ // 10 thousand
+ {FORMAT_HI_IN_LONG, 99000, "99 \u0939\u091C\u093C\u093E\u0930"},
+ // Long path
+ {FORMAT_HI_IN_LONG, 330000, "3 \u0932\u093E\u0916"},
+ // Double path
+ {FORMAT_HI_IN_LONG, 3000.90, "3 \u0939\u091C\u093C\u093E\u0930"},
+ // BigInteger path
+ {FORMAT_HI_IN_LONG, new BigInteger("12345678901234567890"),
+ "123456789 \u0916\u0930\u092C"},
+ // BigDecimal path
+ {FORMAT_HI_IN_LONG, new BigDecimal("12345678901234567890.89"),
+ "123456789 \u0916\u0930\u092C"},
+ // 1000 does not have any suffix in "ja" locale
+ {FORMAT_JA_JP_SHORT, -999.99, "-1,000"},
+ // 0-9999 does not have any suffix
+ {FORMAT_JA_JP_SHORT, 9999, "9,999"},
+ // 99000/10000 => 9.9\u4E07 rounded to 10\u4E07
+ {FORMAT_JA_JP_SHORT, 99000, "10\u4E07"},
+ // Negative
+ {FORMAT_JA_JP_SHORT, -99000, "-10\u4E07"},
+ // Long path
+ {FORMAT_JA_JP_SHORT, 330000, "33\u4E07"},
+ // Double path
+ {FORMAT_JA_JP_SHORT, 3000.90, "3,001"},
+ // BigInteger path
+ {FORMAT_JA_JP_SHORT, new BigInteger("12345678901234567890"),
+ "12345679\u5146"},
+ // BigDecimal path
+ {FORMAT_JA_JP_SHORT, new BigDecimal("12345678901234567890.89"),
+ "12345679\u5146"},
+ // less than 1000 no suffix
+ {FORMAT_IT_SHORT, 499, "499"},
+ // Boundary number
+ {FORMAT_IT_SHORT, 1000, "1.000"},
+ // Long path
+ {FORMAT_IT_SHORT, 3000000L, "3\u00a0Mln"},
+ // Double path
+ {FORMAT_IT_SHORT, 3000000.0, "3\u00a0Mln"},
+ // BigInteger path
+ {FORMAT_IT_SHORT, new BigInteger("12345678901234567890"),
+ "12345679\u00a0Bln"},
+ // BigDecimal path
+ {FORMAT_IT_SHORT, new BigDecimal("12345678901234567890.89"),
+ "12345679\u00a0Bln"},
+ {FORMAT_CA_LONG, 999, "999"},
+ {FORMAT_CA_LONG, 999.99, "1 miler"},
+ {FORMAT_CA_LONG, 99000, "99 milers"},
+ {FORMAT_CA_LONG, 330000, "330 milers"},
+ {FORMAT_CA_LONG, 3000.90, "3 miler"},
+ {FORMAT_CA_LONG, 1000000, "1 mili\u00f3"},
+ {FORMAT_CA_LONG, new BigInteger("12345678901234567890"),
+ "12345679 bilions"},
+ {FORMAT_CA_LONG, new BigDecimal("12345678901234567890.89"),
+ "12345679 bilions"},
+ {FORMAT_AS_LONG, 5000.0, "\u09eb \u09b9\u09be\u099c\u09be\u09f0"},
+ {FORMAT_AS_LONG, 50000.0, "\u09eb\u09e6 \u09b9\u09be\u099c\u09be\u09f0"},
+ {FORMAT_AS_LONG, 500000.0, "\u09eb \u09b2\u09be\u0996"},
+ {FORMAT_AS_LONG, 5000000.0, "\u09eb \u09a8\u09bf\u09af\u09c1\u09a4"},
+ {FORMAT_AS_LONG, 50000000.0, "\u09eb\u09e6 \u09a8\u09bf\u09af\u09c1\u09a4"},
+ {FORMAT_AS_LONG, 500000000.0, "\u09eb\u09e6\u09e6 \u09a8\u09bf\u09af\u09c1\u09a4"},
+ {FORMAT_AS_LONG, 5000000000.0, "\u09eb \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+ {FORMAT_AS_LONG, 50000000000.0, "\u09eb\u09e6 \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+ {FORMAT_AS_LONG, 500000000000.0, "\u09eb\u09e6\u09e6 \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+ {FORMAT_AS_LONG, 5000000000000.0, "\u09eb \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_AS_LONG, 50000000000000.0, "\u09eb\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_AS_LONG, 500000000000000.0, "\u09eb\u09e6\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_AS_LONG, 5000000000000000.0, "\u09eb\u09e6\u09e6\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_AS_LONG, new BigInteger("12345678901234567890"),
+ "\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ef \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_AS_LONG, new BigDecimal("12345678901234567890123466767.89"),
+ "\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ee \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+ {FORMAT_BRX_SHORT, 999, "999"},
+ {FORMAT_BRX_SHORT, 999.99, "1K"},
+ {FORMAT_BRX_SHORT, 99000, "99K"},
+ {FORMAT_BRX_SHORT, 330000, "330K"},
+ {FORMAT_BRX_SHORT, 3000.90, "3K"},
+ {FORMAT_BRX_SHORT, 1000000, "1M"},
+ {FORMAT_BRX_SHORT, new BigInteger("12345678901234567890"),
+ "12345679T"},
+ {FORMAT_BRX_SHORT, new BigDecimal("12345678901234567890.89"),
+ "12345679T"},
+ // Less than 1000 no suffix
+ {FORMAT_SW_LONG, 499, "499"},
+ // Boundary number
+ {FORMAT_SW_LONG, 1000, "elfu 1"},
+ // Long path
+ {FORMAT_SW_LONG, 3000000L, "milioni 3"},
+ // Long path, negative
+ {FORMAT_SW_LONG, -3000000L, "milioni -3"},
+ // Double path
+ {FORMAT_SW_LONG, 3000000.0, "milioni 3"},
+ // Double path, negative
+ {FORMAT_SW_LONG, -3000000.0, "milioni -3"},
+ // BigInteger path
+ {FORMAT_SW_LONG, new BigInteger("12345678901234567890"),
+ "trilioni 12345679"},
+ // BigDecimal path
+ {FORMAT_SW_LONG, new BigDecimal("12345678901234567890.89"),
+ "trilioni 12345679"},
+ // Positives
+ // No compact form
+ {FORMAT_SE_SHORT, 999, "999"},
+ // Long
+ {FORMAT_SE_SHORT, 8000000L, "8\u00a0mn"},
+ // Double
+ {FORMAT_SE_SHORT, 8000.98, "8\u00a0dt"},
+ // Big integer
+ {FORMAT_SE_SHORT, new BigInteger("12345678901234567890"), "12345679\u00a0bn"},
+ // Big decimal
+ {FORMAT_SE_SHORT, new BigDecimal("12345678901234567890.98"), "12345679\u00a0bn"},
+ // Negatives
+ // No compact form
+ {FORMAT_SE_SHORT, -999, "\u2212999"},
+ // Long
+ {FORMAT_SE_SHORT, -8000000L, "\u22128\u00a0mn"},
+ // Double
+ {FORMAT_SE_SHORT, -8000.98, "\u22128\u00a0dt"},
+ // BigInteger
+ {FORMAT_SE_SHORT, new BigInteger("-12345678901234567890"), "\u221212345679\u00a0bn"},
+ // BigDecimal
+ {FORMAT_SE_SHORT, new BigDecimal("-12345678901234567890.98"), "\u221212345679\u00a0bn"},};
+ }
+
+ @DataProvider(name = "parse")
+ Object[][] compactParseData() {
+ return new Object[][]{
+ // compact number format instance, string to parse, parsed number, return type
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F21", 1000L, Long.class},
+ {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F23", -3000L, Long.class},
+ {FORMAT_DZ_LONG, "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+ + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+ + "\u0F22\u0F23\u0F24\u0F25\u0F27", 1.23457E19, Double.class},
+ {FORMAT_DZ_LONG, "-\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+ + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+ + "\u0F22\u0F23\u0F24\u0F25\u0F27", -1.23457E19, Double.class},
+ {FORMAT_EN_US_SHORT, "-0.0", -0.0, Double.class},
+ {FORMAT_EN_US_SHORT, "-0", -0.0, Double.class},
+ {FORMAT_EN_US_SHORT, "0", 0L, Long.class},
+ {FORMAT_EN_US_SHORT, "499", 499L, Long.class},
+ {FORMAT_EN_US_SHORT, "-499", -499L, Long.class},
+ {FORMAT_EN_US_SHORT, "499.89", 499.89, Double.class},
+ {FORMAT_EN_US_SHORT, "-499.89", -499.89, Double.class},
+ {FORMAT_EN_US_SHORT, "1K", 1000L, Long.class},
+ {FORMAT_EN_US_SHORT, "-1K", -1000L, Long.class},
+ {FORMAT_EN_US_SHORT, "3K", 3000L, Long.class},
+ {FORMAT_EN_US_SHORT, "17K", 17000L, Long.class},
+ {FORMAT_EN_US_SHORT, "-17K", -17000L, Long.class},
+ {FORMAT_EN_US_SHORT, "-3K", -3000L, Long.class},
+ {FORMAT_EN_US_SHORT, "12345678901234567890", 1.2345678901234567E19, Double.class},
+ {FORMAT_EN_US_SHORT, "12345679T", 1.2345679E19, Double.class},
+ {FORMAT_EN_US_SHORT, "-12345679T", -1.2345679E19, Double.class},
+ {FORMAT_EN_US_SHORT, "599.01K", 599010L, Long.class},
+ {FORMAT_EN_US_SHORT, "-599.01K", -599010L, Long.class},
+ {FORMAT_EN_US_SHORT, "599444444.90T", 5.994444449E20, Double.class},
+ {FORMAT_EN_US_SHORT, "-599444444.90T", -5.994444449E20, Double.class},
+ {FORMAT_EN_US_SHORT, "123456789012345.5678K", 123456789012345568L, Long.class},
+ {FORMAT_EN_US_SHORT, "17.000K", 17000L, Long.class},
+ {FORMAT_EN_US_SHORT, "123.56678K", 123566.78000, Double.class},
+ {FORMAT_EN_US_SHORT, "-123.56678K", -123566.78000, Double.class},
+ {FORMAT_EN_LONG, "999", 999L, Long.class},
+ {FORMAT_EN_LONG, "1 thousand", 1000L, Long.class},
+ {FORMAT_EN_LONG, "3 thousand", 3000L, Long.class},
+ {FORMAT_EN_LONG, "12345679 trillion", 1.2345679E19, Double.class},
+ {FORMAT_HI_IN_LONG, "999", 999L, Long.class},
+ {FORMAT_HI_IN_LONG, "-999", -999L, Long.class},
+ {FORMAT_HI_IN_LONG, "1 \u0939\u091C\u093C\u093E\u0930", 1000L, Long.class},
+ {FORMAT_HI_IN_LONG, "-1 \u0939\u091C\u093C\u093E\u0930", -1000L, Long.class},
+ {FORMAT_HI_IN_LONG, "3 \u0939\u091C\u093C\u093E\u0930", 3000L, Long.class},
+ {FORMAT_HI_IN_LONG, "12345679 \u0916\u0930\u092C", 1234567900000000000L, Long.class},
+ {FORMAT_HI_IN_LONG, "-12345679 \u0916\u0930\u092C", -1234567900000000000L, Long.class},
+ {FORMAT_JA_JP_SHORT, "-99", -99L, Long.class},
+ {FORMAT_JA_JP_SHORT, "1\u4E07", 10000L, Long.class},
+ {FORMAT_JA_JP_SHORT, "30\u4E07", 300000L, Long.class},
+ {FORMAT_JA_JP_SHORT, "-30\u4E07", -300000L, Long.class},
+ {FORMAT_JA_JP_SHORT, "12345679\u5146", 1.2345679E19, Double.class},
+ {FORMAT_JA_JP_SHORT, "-12345679\u5146", -1.2345679E19, Double.class},
+ {FORMAT_IT_SHORT, "-99", -99L, Long.class},
+ {FORMAT_IT_SHORT, "1\u00a0Mln", 1000000L, Long.class},
+ {FORMAT_IT_SHORT, "30\u00a0Mln", 30000000L, Long.class},
+ {FORMAT_IT_SHORT, "-30\u00a0Mln", -30000000L, Long.class},
+ {FORMAT_IT_SHORT, "12345679\u00a0Bln", 1.2345679E19, Double.class},
+ {FORMAT_IT_SHORT, "-12345679\u00a0Bln", -1.2345679E19, Double.class},
+ {FORMAT_SW_LONG, "-0.0", -0.0, Double.class},
+ {FORMAT_SW_LONG, "499", 499L, Long.class},
+ {FORMAT_SW_LONG, "elfu 1", 1000L, Long.class},
+ {FORMAT_SW_LONG, "elfu 3", 3000L, Long.class},
+ {FORMAT_SW_LONG, "elfu 17", 17000L, Long.class},
+ {FORMAT_SW_LONG, "elfu -3", -3000L, Long.class},
+ {FORMAT_SW_LONG, "499", 499L, Long.class},
+ {FORMAT_SW_LONG, "-499", -499L, Long.class},
+ {FORMAT_SW_LONG, "elfu 1", 1000L, Long.class},
+ {FORMAT_SW_LONG, "elfu 3", 3000L, Long.class},
+ {FORMAT_SW_LONG, "elfu -3", -3000L, Long.class},
+ {FORMAT_SW_LONG, "elfu 17", 17000L, Long.class},
+ {FORMAT_SW_LONG, "trilioni 12345679", 1.2345679E19, Double.class},
+ {FORMAT_SW_LONG, "trilioni -12345679", -1.2345679E19, Double.class},
+ {FORMAT_SW_LONG, "elfu 599.01", 599010L, Long.class},
+ {FORMAT_SW_LONG, "elfu -599.01", -599010L, Long.class},
+ {FORMAT_SE_SHORT, "999", 999L, Long.class},
+ {FORMAT_SE_SHORT, "8\u00a0mn", 8000000L, Long.class},
+ {FORMAT_SE_SHORT, "8\u00a0dt", 8000L, Long.class},
+ {FORMAT_SE_SHORT, "12345679\u00a0bn", 1.2345679E19, Double.class},
+ {FORMAT_SE_SHORT, "12345679,89\u00a0bn", 1.2345679890000001E19, Double.class},
+ {FORMAT_SE_SHORT, "\u2212999", -999L, Long.class},
+ {FORMAT_SE_SHORT, "\u22128\u00a0mn", -8000000L, Long.class},
+ {FORMAT_SE_SHORT, "\u22128\u00a0dt", -8000L, Long.class},
+ {FORMAT_SE_SHORT, "\u221212345679\u00a0bn", -1.2345679E19, Double.class},
+ {FORMAT_SE_SHORT, "\u221212345679,89\u00a0bn", -1.2345679890000001E19, Double.class},};
+ }
+
+ @DataProvider(name = "exceptionParse")
+ Object[][] exceptionParseData() {
+ return new Object[][]{
+ // compact number instance, string to parse, null (no o/p; must throws exception)
+ // no number
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42", null},
+ // Invalid prefix
+ {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44,\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F23", null},
+ // Invalid prefix for en_US
+ {FORMAT_EN_US_SHORT, "K12,347", null},
+ // Invalid prefix for ja_JP
+ {FORMAT_JA_JP_SHORT, "\u4E071", null},
+ // Localized minus sign should be used
+ {FORMAT_SE_SHORT, "-8\u00a0mn", null},};
+ }
+
+ @DataProvider(name = "invalidParse")
+ Object[][] invalidParseData() {
+ return new Object[][]{
+ // compact number instance, string to parse, parsed number
+ // Prefix and suffix do not match
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F21 KM", 1000L},
+ // Exponents are unparseable
+ {FORMAT_EN_US_SHORT, "-1.05E4K", -1.05},
+ // Default instance does not allow grouping
+ {FORMAT_EN_US_SHORT, "12,347", 12L},
+ // Take partial suffix "K" as 1000 for en_US_SHORT patterns
+ {FORMAT_EN_US_SHORT, "12KM", 12000L},
+ // Invalid suffix
+ {FORMAT_HI_IN_LONG, "-1 \u00a0\u0915.", -1L},};
+ }
+
+ @DataProvider(name = "fieldPosition")
+ Object[][] formatFieldPositionData() {
+ return new Object[][]{
+ //compact number instance, number to format, field, start position, end position, formatted string
+ {FORMAT_DZ_LONG, -3500, NumberFormat.Field.SIGN, 0, 1, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+ {FORMAT_DZ_LONG, 3500, NumberFormat.Field.INTEGER, 9, 10, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+ {FORMAT_DZ_LONG, -3500, NumberFormat.Field.INTEGER, 10, 11, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+ {FORMAT_DZ_LONG, 999, NumberFormat.Field.INTEGER, 0, 3, "\u0F29\u0F29\u0F29"},
+ {FORMAT_DZ_LONG, -999, NumberFormat.Field.INTEGER, 1, 4, "-\u0F29\u0F29\u0F29"},
+ {FORMAT_DZ_LONG, 3500, NumberFormat.Field.PREFIX, 0, 9, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+ {FORMAT_DZ_LONG, -3500, NumberFormat.Field.PREFIX, 0, 10, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+ {FORMAT_DZ_LONG, 999, NumberFormat.Field.PREFIX, 0, 0, "\u0F29\u0F29\u0F29"},
+ {FORMAT_EN_US_SHORT, -3500, NumberFormat.Field.SIGN, 0, 1, "-4K"},
+ {FORMAT_EN_US_SHORT, 3500, NumberFormat.Field.INTEGER, 0, 1, "4K"},
+ {FORMAT_EN_US_SHORT, 14900000067L, NumberFormat.Field.INTEGER, 0, 2, "15B"},
+ {FORMAT_EN_US_SHORT, -1000, NumberFormat.Field.PREFIX, 0, 1, "-1K"},
+ {FORMAT_EN_US_SHORT, 3500, NumberFormat.Field.SUFFIX, 1, 2, "4K"},
+ {FORMAT_EN_US_SHORT, 14900000067L, NumberFormat.Field.SUFFIX, 2, 3, "15B"},
+ {FORMAT_EN_LONG, 3500, NumberFormat.Field.INTEGER, 0, 1, "4 thousand"},
+ {FORMAT_EN_LONG, 14900000067L, NumberFormat.Field.INTEGER, 0, 2, "15 billion"},
+ {FORMAT_EN_LONG, 3500, NumberFormat.Field.SUFFIX, 1, 10, "4 thousand"},
+ {FORMAT_EN_LONG, 14900000067L, NumberFormat.Field.SUFFIX, 2, 10, "15 billion"},
+ {FORMAT_JA_JP_SHORT, 14900000067L, NumberFormat.Field.INTEGER, 0, 3, "149\u5104"},
+ {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.INTEGER, 1, 6, "-1,000"},
+ {FORMAT_JA_JP_SHORT, 14900000067L, NumberFormat.Field.SUFFIX, 3, 4, "149\u5104"},
+ {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.SUFFIX, 0, 0, "-1,000"},
+ {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.SIGN, 0, 1, "-1,000"},
+ {FORMAT_HI_IN_LONG, -14900000067L, NumberFormat.Field.SIGN, 0, 1,
+ "-15 \u0905\u0930\u092C"},
+ {FORMAT_HI_IN_LONG, 3500, NumberFormat.Field.INTEGER, 0, 1,
+ "4 \u0939\u091C\u093C\u093E\u0930"},
+ {FORMAT_HI_IN_LONG, 14900000067L, NumberFormat.Field.INTEGER, 0, 2,
+ "15 \u0905\u0930\u092C"},
+ {FORMAT_HI_IN_LONG, 3500, NumberFormat.Field.SUFFIX, 1, 7,
+ "4 \u0939\u091C\u093C\u093E\u0930"},
+ {FORMAT_HI_IN_LONG, 14900000067L, NumberFormat.Field.SUFFIX, 2, 6,
+ "15 \u0905\u0930\u092C"},
+ {FORMAT_SE_SHORT, 8000000L, NumberFormat.Field.SUFFIX, 1, 4, "8\u00a0mn"},
+ {FORMAT_SE_SHORT, 8000.98, NumberFormat.Field.SUFFIX, 1, 4, "8\u00a0dt"},
+ {FORMAT_SE_SHORT, new BigInteger("12345678901234567890"), NumberFormat.Field.SUFFIX, 8, 11, "12345679\u00a0bn"},
+ {FORMAT_SE_SHORT, new BigDecimal("12345678901234567890.98"), NumberFormat.Field.SUFFIX, 8, 11, "12345679\u00a0bn"},
+ {FORMAT_SE_SHORT, -8000000L, NumberFormat.Field.INTEGER, 1, 2, "\u22128\u00a0mn"},
+ {FORMAT_SE_SHORT, -8000.98, NumberFormat.Field.SIGN, 0, 1, "\u22128\u00a0dt"},
+ {FORMAT_SE_SHORT, new BigDecimal("-48982865901234567890.98"), NumberFormat.Field.INTEGER, 1, 9, "\u221248982866\u00a0bn"},};
+ }
+
+ @DataProvider(name = "varParsePosition")
+ Object[][] varParsePosition() {
+ return new Object[][]{
+ // compact number instance, parse string, parsed number,
+ // start position, end position, error index
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F21 KM", 1000L, 0, 10, -1},
+ // Invalid prefix returns null
+ {FORMAT_DZ_LONG, "Number is: -\u0F66\u0F9F\u0F7C\u0F44,\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F23", null, 11, 11, 11},
+ // Returns null
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42", null, 0, 0, 0},
+ {FORMAT_EN_US_SHORT, "Exponent: -1.05E4K", -1.05, 10, 15, -1},
+ // Default instance does not allow grouping
+ {FORMAT_EN_US_SHORT, "12,347", 12L, 0, 2, -1},
+ // Invalid suffix "KM" for en_US_SHORT patterns
+ {FORMAT_EN_US_SHORT, "12KM", 12000L, 0, 3, -1},
+ // Invalid suffix
+ {FORMAT_HI_IN_LONG, "-1 \u00a0\u0915.", -1L, 0, 2, -1},
+ {FORMAT_EN_LONG, "Number is: 12345679 trillion",
+ 1.2345679E19, 11, 28, -1},
+ {FORMAT_EN_LONG, "Number is: -12345679 trillion",
+ -1.2345679E19, 11, 29, -1},
+ {FORMAT_EN_LONG, "parse 12 thousand and four", 12000L, 6, 17, -1},};
+ }
+
+ @Test
+ public void testInstanceCreation() {
+ Stream.of(NumberFormat.getAvailableLocales()).forEach(l -> NumberFormat
+ .getCompactNumberInstance(l, NumberFormat.Style.SHORT).format(10000));
+ Stream.of(NumberFormat.getAvailableLocales()).forEach(l -> NumberFormat
+ .getCompactNumberInstance(l, NumberFormat.Style.LONG).format(10000));
+ }
+
+ @Test(dataProvider = "format")
+ public void testFormat(NumberFormat cnf, Object number,
+ String expected) {
+ CompactFormatAndParseHelper.testFormat(cnf, number, expected);
+ }
+
+ @Test(dataProvider = "parse")
+ public void testParse(NumberFormat cnf, String parseString,
+ Number expected, Class<? extends Number> returnType) throws ParseException {
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, returnType);
+ }
+
+ @Test(dataProvider = "parse")
+ public void testParsePosition(NumberFormat cnf, String parseString,
+ Number expected, Class<? extends Number> returnType) throws ParseException {
+ ParsePosition pos = new ParsePosition(0);
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, pos, returnType);
+ assertEquals(pos.getIndex(), parseString.length());
+ assertEquals(pos.getErrorIndex(), -1);
+ }
+
+ @Test(dataProvider = "varParsePosition")
+ public void testVarParsePosition(NumberFormat cnf, String parseString,
+ Number expected, int startPosition, int indexPosition,
+ int errPosition) throws ParseException {
+ ParsePosition pos = new ParsePosition(startPosition);
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, pos, null);
+ assertEquals(pos.getIndex(), indexPosition);
+ assertEquals(pos.getErrorIndex(), errPosition);
+ }
+
+ @Test(dataProvider = "exceptionParse", expectedExceptions = ParseException.class)
+ public void throwsParseException(NumberFormat cnf, String parseString,
+ Number expected) throws ParseException {
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+ }
+
+ @Test(dataProvider = "invalidParse")
+ public void testInvalidParse(NumberFormat cnf, String parseString,
+ Number expected) throws ParseException {
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+ }
+
+ @Test(dataProvider = "fieldPosition")
+ public void testFormatWithFieldPosition(NumberFormat nf,
+ Object number, Format.Field field, int posStartExpected,
+ int posEndExpected, String expected) {
+ FieldPosition pos = new FieldPosition(field);
+ StringBuffer buf = new StringBuffer();
+ StringBuffer result = nf.format(number, buf, pos);
+ assertEquals(result.toString(), expected, "Incorrect formatting of the number '"
+ + number + "'");
+ assertEquals(pos.getBeginIndex(), posStartExpected, "Incorrect start position"
+ + " while formatting the number '" + number + "', for the field " + field);
+ assertEquals(pos.getEndIndex(), posEndExpected, "Incorrect end position"
+ + " while formatting the number '" + number + "', for the field " + field);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCompactPatternsValidity.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the validity of compact number patterns specified through
+ * CompactNumberFormat constructor
+ * @run testng/othervm TestCompactPatternsValidity
+ */
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCompactPatternsValidity {
+
+ // Max range 10^4
+ private static final String[] COMPACT_PATTERN1 = new String[]{"0", "0", "0", "0K", "00K"};
+ // Quoted special character '.' as prefix
+ private static final String[] COMPACT_PATTERN2 = new String[]{"0", "'.'K0"};
+ // Quoted special character '.' as suffix
+ private static final String[] COMPACT_PATTERN3 = new String[]{"0", "0", "0", "0K", "00K'.'"};
+ // Containing both prefix and suffix
+ private static final String[] COMPACT_PATTERN4 = new String[]{"", "", "H0H", "0K", "00K", "H0G"};
+ // Differing while specifying prefix and suffix
+ private static final String[] COMPACT_PATTERN5 = new String[]{"", "", "", "0K", "K0"};
+ // Containing both prefix ('.') and suffix (K)
+ private static final String[] COMPACT_PATTERN6 = new String[]{"0", "", "", "'.'0K"};
+ // Quoted special character ',' as suffix
+ private static final String[] COMPACT_PATTERN7 = new String[]{"", "0", "0", "0K','"};
+ // Most commonly used type of compact patterns with 15 elements
+ private static final String[] COMPACT_PATTERN8 = new String[]{"", "", "", "0K", "00K", "000K", "0M",
+ "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"};
+ // All empty or special patterns; checking the default formatting behaviour
+ private static final String[] COMPACT_PATTERN9 = new String[]{"", "", "", "0", "0", "", "", "", "", "", "", "", "", "", ""};
+ // Patterns beyond 10^19; divisors beyond long range
+ private static final String[] COMPACT_PATTERN10 = new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M",
+ "000M", "0B", "00B", "000B", "0T", "00T", "000T", "0L", "00L", "000L", "0XL", "00XL"};
+ // Containing positive;negative subpatterns
+ private static final String[] COMPACT_PATTERN11 = new String[]{"", "", "", "elfu 0;elfu -0", "elfu 00;elfu -00",
+ "elfu 000;elfu -000", "milioni 0;milioni -0", "milioni 00;milioni -00", "milioni 000;milioni -000"};
+ // Containing both prefix and suffix and positive;negative subpatern
+ private static final String[] COMPACT_PATTERN12 = new String[]{"", "", "H0H;H-0H", "0K;0K-", "00K;-00K", "H0G;-H0G"};
+
+ @DataProvider(name = "invalidPatterns")
+ Object[][] invalidCompactPatterns() {
+ return new Object[][]{
+ // compact patterns
+ // Pattern containing unquoted special character '.'
+ {new String[]{"", "", "", "0K", "00K."}},
+ // Pattern containing invalid single quote
+ {new String[]{"", "", "", "0 'do", "00K"}},
+ {new String[]{"", "", "", "0K", "00 don't"}},
+ // A non empty pattern containing no 0s (min integer digits)
+ {new String[]{"K", "0K", "00K"}},
+ // 0s (min integer digits) exceeding for the range at index 3
+ {new String[]{"", "", "0K", "00000K"}},};
+ }
+
+ @DataProvider(name = "validPatternsFormat")
+ Object[][] validPatternsFormat() {
+ return new Object[][]{
+ // compact patterns, numbers, expected output
+ {COMPACT_PATTERN1, List.of(200, 1000, 3000, 500000), List.of("200", "1K", "3K", "500K")},
+ {COMPACT_PATTERN2, List.of(1, 20, 3000), List.of("1", ".K2", ".K300")},
+ {COMPACT_PATTERN3, List.of(100.99, 1000, 30000), List.of("101", "1K", "30K.")},
+ {COMPACT_PATTERN4, List.of(0.0, 500, -500, 30000, 5000000), List.of("0", "H5H", "-H5H", "30K", "H50G")},
+ {COMPACT_PATTERN5, List.of(100, 1000, 30000), List.of("100", "1K", "K3")},
+ {COMPACT_PATTERN6, List.of(20.99, 1000, 30000), List.of("21", ".1K", ".30K")},
+ {COMPACT_PATTERN7, List.of(100, 1000, new BigInteger("12345678987654321")), List.of("100", "1K,", "12345678987654K,")},
+ {COMPACT_PATTERN8, List.of(new BigInteger("223565686837667632"), new BigDecimal("12322456774334.89766"), 30000, 3456.78),
+ List.of("223566T", "12T", "30K", "3K")},
+ {COMPACT_PATTERN9, List.of(new BigInteger("223566000000000000"), new BigDecimal("12345678987654567"), 30000, 3000),
+ List.of("223,566,000,000,000,000", "12,345,678,987,654,567", "30,000", "3,000")},
+ {COMPACT_PATTERN10, List.of(new BigInteger("100000000000000000"), new BigInteger("10000000000000000000"), new BigDecimal("555555555555555555555.89766"), 30000),
+ List.of("100L", "10XL", "556XL", "30K")},
+ {COMPACT_PATTERN11, List.of(20.99, -20.99, 1000, -1000, 30000, -30000, new BigInteger("12345678987654321"), new BigInteger("-12345678987654321")),
+ List.of("21", "-21", "elfu 1", "elfu -1", "elfu 30", "elfu -30", "milioni 12345678988", "milioni -12345678988")},
+ {COMPACT_PATTERN12, List.of(0, 500, -500, 30000, -3000, 5000000), List.of("0", "H5H", "H-5H", "30K", "3K-", "H50G")},};
+ }
+
+ @DataProvider(name = "validPatternsParse")
+ Object[][] validPatternsParse() {
+ return new Object[][]{
+ // compact patterns, parse string, expected output
+ {COMPACT_PATTERN1, List.of(".56", "200", ".1K", "3K", "500K"), List.of(0.56, 200L, 100L, 3000L, 500000L)},
+ {COMPACT_PATTERN2, List.of("1", ".K2", ".K300"), List.of(1L, 20L, 3000L)},
+ {COMPACT_PATTERN3, List.of("101", "1K", "30K."), List.of(101L, 1000L, 30000L)},
+ {COMPACT_PATTERN4, List.of("0", "H5H", "-H5H", "30K", "H50G"), List.of(0L, 500L, -500L, 30000L, 5000000L)},
+ {COMPACT_PATTERN5, List.of("100", "1K", "K3"), List.of(100L, 1000L, 30000L)},
+ {COMPACT_PATTERN6, List.of("21", ".1K", ".30K"), List.of(21L, 1000L, 30000L)},
+ {COMPACT_PATTERN7, List.of("100", "1K,", "12345678987654K,"), List.of(100L, 1000L, 12345678987654000L)},
+ {COMPACT_PATTERN8, List.of("223566T", "12T", "30K", "3K"), List.of(223566000000000000L, 12000000000000L, 30000L, 3000L)},
+ {COMPACT_PATTERN10, List.of("1L", "100L", "10XL", "556XL", "30K"), List.of(1000000000000000L, 100000000000000000L, 1.0E19, 5.56E20, 30000L)},
+ {COMPACT_PATTERN11, List.of("21", "-21", "100.90", "-100.90", "elfu 1", "elfu -1", "elfu 30", "elfu -30", "milioni 12345678988", "milioni -12345678988"),
+ List.of(21L, -21L, 100.90, -100.90, 1000L, -1000L, 30000L, -30000L, 12345678988000000L, -12345678988000000L)},
+ {COMPACT_PATTERN12, List.of("0", "H5H", "H-5H", "30K", "30K-", "H50G"), List.of(0L, 500L, -500L, 30000L, -30000L, 5000000L)},};
+ }
+
+ @Test(dataProvider = "invalidPatterns",
+ expectedExceptions = RuntimeException.class)
+ public void testInvalidCompactPatterns(String[] compactPatterns) {
+ new CompactNumberFormat("#,##0.0#", DecimalFormatSymbols
+ .getInstance(Locale.US), compactPatterns);
+ }
+
+ @Test(dataProvider = "validPatternsFormat")
+ public void testValidPatternsFormat(String[] compactPatterns,
+ List<Object> numbers, List<String> expected) {
+ CompactNumberFormat fmt = new CompactNumberFormat("#,##0.0#",
+ DecimalFormatSymbols.getInstance(Locale.US), compactPatterns);
+ for (int index = 0; index < numbers.size(); index++) {
+ CompactFormatAndParseHelper.testFormat(fmt, numbers.get(index),
+ expected.get(index));
+ }
+ }
+
+ @Test(dataProvider = "validPatternsParse")
+ public void testValidPatternsParse(String[] compactPatterns,
+ List<String> parseString, List<Number> numbers) throws ParseException {
+ CompactNumberFormat fmt = new CompactNumberFormat("#,##0.0#",
+ DecimalFormatSymbols.getInstance(Locale.US), compactPatterns);
+ for (int index = 0; index < parseString.size(); index++) {
+ CompactFormatAndParseHelper.testParse(fmt, parseString.get(index),
+ numbers.get(index), null, null);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestEquality.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the equals and hashCode method of CompactNumberFormat
+ * @modules jdk.localedata
+ * @run testng/othervm TestEquality
+ *
+ */
+
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.util.Locale;
+import org.testng.annotations.Test;
+
+public class TestEquality {
+
+ @Test
+ public void testEquality() {
+ CompactNumberFormat cnf1 = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ CompactNumberFormat cnf2 = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ // A custom compact instance with the same state as
+ // compact number instance of "en_US" locale with SHORT style
+ String decimalPattern = "#,##0.###";
+ String[] compactPatterns = new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"};
+ DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.US);
+ CompactNumberFormat cnf3 = new CompactNumberFormat(decimalPattern, symbols, compactPatterns);
+
+ // A compact instance created with different decimalPattern than cnf3
+ CompactNumberFormat cnf4 = new CompactNumberFormat("#,#0.0#", symbols, compactPatterns);
+
+ // A compact instance created with different format symbols than cnf3
+ CompactNumberFormat cnf5 = new CompactNumberFormat(decimalPattern,
+ DecimalFormatSymbols.getInstance(Locale.JAPAN), compactPatterns);
+
+ // A compact instance created with different compact patterns than cnf3
+ CompactNumberFormat cnf6 = new CompactNumberFormat(decimalPattern,
+ symbols, new String[]{"", "", "", "0K", "00K", "000K"});
+
+ // Checking reflexivity
+ if (!cnf1.equals(cnf1)) {
+ throw new RuntimeException("[testEquality() reflexivity FAILED: The compared"
+ + " objects must be equal]");
+ }
+
+ // Checking symmetry, checking equality of two same objects
+ if (!cnf1.equals(cnf2) || !cnf2.equals(cnf1)) {
+ throw new RuntimeException("[testEquality() symmetry FAILED: The compared"
+ + " objects must be equal]");
+ }
+
+ // Checking transitivity, three objects must be equal
+ if (!cnf1.equals(cnf2) || !cnf2.equals(cnf3) || !cnf1.equals(cnf3)) {
+ throw new RuntimeException("[testEquality() transitivity FAILED: The compared"
+ + " objects must be equal]");
+ }
+
+ // Objects must not be equal as the decimalPattern is different
+ checkEquals(cnf3, cnf4, false, "1st", "different decimal pattern");
+
+ // Objects must not be equal as the format symbols instance is different
+ checkEquals(cnf3, cnf5, false, "2nd", "different format symbols");
+
+ // Objects must not be equal as the compact patters are different
+ checkEquals(cnf3, cnf6, false, "3rd", "different compact patterns");
+
+ // Changing the min integer digits of first object; objects must not
+ // be equal
+ cnf1.setMinimumIntegerDigits(5);
+ checkEquals(cnf1, cnf2, false, "4th", "different min integer digits");
+
+ // Changing the min integer digits of second object; objects must
+ // be equal
+ cnf2.setMinimumIntegerDigits(5);
+ checkEquals(cnf1, cnf2, true, "5th", "");
+
+ // Changing the grouping size of first object; objects must not
+ // be equal
+ cnf1.setGroupingSize(4);
+ checkEquals(cnf1, cnf2, false, "6th", "different grouping size");
+
+ // Changing the grouping size if second object; objects must be equal
+ cnf2.setGroupingSize(4);
+ checkEquals(cnf1, cnf2, true, "7th", "");
+
+ // Changing the parseBigDecimal of first object; objects must not
+ // be equal
+ cnf1.setParseBigDecimal(true);
+ checkEquals(cnf1, cnf2, false, "8th", "different parse big decimal");
+
+ }
+
+ private void checkEquals(CompactNumberFormat cnf1, CompactNumberFormat cnf2,
+ boolean mustEqual, String nthComparison, String message) {
+ if (cnf1.equals(cnf2) != mustEqual) {
+ if (mustEqual) {
+ throw new RuntimeException("[testEquality() " + nthComparison
+ + " comparison FAILED: The compared objects must be equal]");
+ } else {
+ throw new RuntimeException("[testEquality() " + nthComparison
+ + " comparison FAILED: The compared objects must"
+ + " not be equal because of " + message + "]");
+ }
+ }
+ }
+
+ @Test
+ public void testHashCode() {
+ NumberFormat cnf1 = NumberFormat
+ .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+ NumberFormat cnf2 = NumberFormat
+ .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+ if (cnf1.hashCode() != cnf2.hashCode()) {
+ throw new RuntimeException("[testHashCode() FAILED: hashCode of the"
+ + " compared objects must match]");
+ }
+ }
+
+ // Test the property of equals and hashCode i.e. two equal object must
+ // always have the same hashCode
+ @Test
+ public void testEqualsAndHashCode() {
+ NumberFormat cnf1 = NumberFormat
+ .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+ cnf1.setMinimumIntegerDigits(5);
+ NumberFormat cnf2 = NumberFormat
+ .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+ cnf2.setMinimumIntegerDigits(5);
+ if (cnf1.equals(cnf2)) {
+ if (cnf1.hashCode() != cnf2.hashCode()) {
+ throw new RuntimeException("[testEqualsAndHashCode() FAILED: two"
+ + " equal objects must have same hashCode]");
+ }
+ } else {
+ throw new RuntimeException("[testEqualsAndHashCode() FAILED: The"
+ + " compared objects must be equal]");
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestFormatToCharacterIterator.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of
+ * CompactNumberFormat.formatToCharacterIterator method
+ * @modules jdk.localedata
+ * @run testng/othervm TestFormatToCharacterIterator
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.AttributedCharacterIterator;
+import java.text.CharacterIterator;
+import java.text.Format;
+import java.text.NumberFormat;
+import java.util.Locale;
+import java.util.Set;
+import static org.testng.Assert.assertEquals;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestFormatToCharacterIterator {
+
+ private static final NumberFormat FORMAT_DZ = NumberFormat
+ .getCompactNumberInstance(new Locale("dz"),
+ NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_EN_US = NumberFormat
+ .getCompactNumberInstance(Locale.US,
+ NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_EN_LONG = NumberFormat
+ .getCompactNumberInstance(new Locale("en"),
+ NumberFormat.Style.LONG);
+
+ @DataProvider(name = "fieldPositions")
+ Object[][] compactFieldPositionData() {
+ return new Object[][]{
+ // compact format instance, number, resulted string, attributes/fields, attribute positions
+ {FORMAT_DZ, 1000.09, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F21",
+ new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 9, 9, 10}},
+ {FORMAT_DZ, -999.99, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F21",
+ new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER},
+ new int[]{0, 1, 1, 10, 10, 11}},
+ {FORMAT_DZ, -0.0, "-\u0F20", new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.INTEGER}, new int[]{0, 1, 1, 2}},
+ {FORMAT_DZ, 3000L, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F23",
+ new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 9, 9, 10}},
+ {FORMAT_DZ, new BigInteger("12345678901234567890"),
+ "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27",
+ new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 14, 14, 20}},
+ {FORMAT_DZ, new BigDecimal("12345678901234567890.89"),
+ "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27",
+ new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 14, 14, 20}},
+ // Zeros
+ {FORMAT_EN_US, 0, "0", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 1}},
+ {FORMAT_EN_US, 0.0, "0", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 1}},
+ {FORMAT_EN_US, -0.0, "-0", new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.INTEGER}, new int[]{0, 1, 1, 2}},
+ // Less than 1000 no suffix
+ {FORMAT_EN_US, 499, "499", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 3}},
+ // Boundary number
+ {FORMAT_EN_US, 1000.0, "1K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ // Long
+ {FORMAT_EN_US, 3000L, "3K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ {FORMAT_EN_US, 30000L, "30K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ {FORMAT_EN_US, 300000L, "300K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+ {FORMAT_EN_US, 3000000L, "3M",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ {FORMAT_EN_US, 30000000L, "30M",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ {FORMAT_EN_US, 300000000L, "300M",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+ {FORMAT_EN_US, 3000000000L, "3B",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ {FORMAT_EN_US, 30000000000L, "30B",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ {FORMAT_EN_US, 300000000000L, "300B",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+ {FORMAT_EN_US, 3000000000000L, "3T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ {FORMAT_EN_US, 30000000000000L, "30T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ {FORMAT_EN_US, 300000000000000L, "300T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+ {FORMAT_EN_US, 3000000000000000L, "3000T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 4, 4, 5}},
+ // Double
+ {FORMAT_EN_US, 3000.0, "3K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+ {FORMAT_EN_US, 30000.0, "30K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ {FORMAT_EN_US, 300000.0, "300K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+ {FORMAT_EN_US, 3000000000000000.0, "3000T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 4, 4, 5}},
+ // BigInteger
+ {FORMAT_EN_US, new BigInteger("12345678901234567890"), "12345679T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 9}},
+ // BigDecimal
+ {FORMAT_EN_US, new BigDecimal("12345678901234567890.89"), "12345679T",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 9}},
+ // Number as exponent
+ {FORMAT_EN_US, 9.78313E+3, "10K",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+ // Less than 1000 no suffix
+ {FORMAT_EN_LONG, 999, "999", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 3}},
+ // Round the value and then format
+ {FORMAT_EN_LONG, 999.99, "1 thousand",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 10}},
+ // 10 thousand
+ {FORMAT_EN_LONG, 99000, "99 thousand",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 11}},
+ // Long path
+ {FORMAT_EN_LONG, 330000, "330 thousand",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 12}},
+ // Double path
+ {FORMAT_EN_LONG, 3000.90, "3 thousand",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 10}},
+ // BigInteger path
+ {FORMAT_EN_LONG, new BigInteger("12345678901234567890"), "12345679 trillion",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 17}},
+ // BigDecimal path
+ {FORMAT_EN_LONG, new BigDecimal("12345678901234567890.89"), "12345679 trillion",
+ new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 17}}
+ };
+ }
+
+ @Test(dataProvider = "fieldPositions")
+ public void testFormatToCharacterIterator(NumberFormat fmt, Object number,
+ String expected, Format.Field[] expectedFields, int[] positions) {
+ AttributedCharacterIterator iterator = fmt.formatToCharacterIterator(number);
+ assertEquals(getText(iterator), expected, "Incorrect formatting of the number '"
+ + number + "'");
+
+ iterator.first();
+ // Check start and end index of the formatted string
+ assertEquals(iterator.getBeginIndex(), 0, "Incorrect start index: "
+ + iterator.getBeginIndex() + " of the formatted string: " + expected);
+ assertEquals(iterator.getEndIndex(), expected.length(), "Incorrect end index: "
+ + iterator.getEndIndex() + " of the formatted string: " + expected);
+
+ // Check the attributes returned by the formatToCharacterIterator
+ assertEquals(iterator.getAllAttributeKeys(), Set.of(expectedFields),
+ "Attributes do not match while formatting number: " + number);
+
+ // Check the begin and end index for attributes
+ iterator.first();
+ int currentPosition = 0;
+ do {
+ int start = iterator.getRunStart();
+ int end = iterator.getRunLimit();
+ assertEquals(start, positions[currentPosition],
+ "Incorrect start position for the attribute(s): "
+ + iterator.getAttributes().keySet());
+ assertEquals(end, positions[currentPosition + 1],
+ "Incorrect end position for the attribute(s): "
+ + iterator.getAttributes().keySet());
+ currentPosition = currentPosition + 2;
+ iterator.setIndex(end);
+ } while (iterator.current() != CharacterIterator.DONE);
+ }
+
+ // Create the formatted string from returned AttributedCharacterIterator
+ private String getText(AttributedCharacterIterator iterator) {
+ StringBuffer buffer = new StringBuffer();
+ for (char c = iterator.first(); c != CharacterIterator.DONE;
+ c = iterator.next()) {
+ buffer.append(c);
+ }
+ return buffer.toString();
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestMutatingInstance.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of compact number format by changing the
+ * formatting parameters. For example, min fraction digits, grouping
+ * size etc.
+ * @modules jdk.localedata
+ * @run testng/othervm TestMutatingInstance
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestMutatingInstance {
+
+ private static final NumberFormat FORMAT_FRACTION = NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ private static final CompactNumberFormat FORMAT_GROUPING = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_MININTEGER = NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ private static final NumberFormat FORMAT_PARSEINTONLY = NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ // No compact patterns are specified for this instance except at index 4.
+ // This is to test how the behaviour differs between compact number formatting
+ // and general number formatting
+ private static final NumberFormat FORMAT_NO_PATTERNS = new CompactNumberFormat(
+ "#,##0.0#", DecimalFormatSymbols.getInstance(Locale.US),
+ new String[]{"", "", "", "", "00K", "", "", "", "", "", "", "", "", "", ""});
+
+ @BeforeTest
+ public void mutateInstances() {
+ FORMAT_FRACTION.setMinimumFractionDigits(2);
+ FORMAT_GROUPING.setGroupingSize(3);
+ FORMAT_GROUPING.setGroupingUsed(true);
+ FORMAT_MININTEGER.setMinimumIntegerDigits(5);
+ FORMAT_PARSEINTONLY.setParseIntegerOnly(true);
+ FORMAT_PARSEINTONLY.setGroupingUsed(true);
+ // Setting min fraction digits and other fields does not effect
+ // the general number formatting behaviour, when no compact number
+ // patterns are specified
+ FORMAT_NO_PATTERNS.setMinimumFractionDigits(2);
+ }
+
+ @DataProvider(name = "format")
+ Object[][] compactFormatData() {
+ return new Object[][]{
+ {FORMAT_FRACTION, 1900, "1.90 thousand"},
+ {FORMAT_FRACTION, 1000, "1.00 thousand"},
+ {FORMAT_FRACTION, 9090.99, "9.09 thousand"},
+ {FORMAT_FRACTION, new BigDecimal(12346567890987654.32),
+ "12346.57 trillion"},
+ {FORMAT_FRACTION, new BigInteger("12346567890987654"),
+ "12346.57 trillion"},
+ {FORMAT_GROUPING, new BigDecimal(12346567890987654.32),
+ "12,347 trillion"},
+ {FORMAT_GROUPING, 100000, "100 thousand"},
+ {FORMAT_MININTEGER, 10000, "00010 thousand"},
+ {FORMAT_NO_PATTERNS, 100000, "100,000"},
+ {FORMAT_NO_PATTERNS, 1000.998, "1,001"},
+ {FORMAT_NO_PATTERNS, 10900, "10.90K"},
+ {FORMAT_NO_PATTERNS, new BigDecimal(12346567890987654.32), "12,346,567,890,987,654"},};
+ }
+
+ @DataProvider(name = "parse")
+ Object[][] compactParseData() {
+ return new Object[][]{
+ {FORMAT_FRACTION, "190 thousand", 190000L},
+ {FORMAT_FRACTION, "19.9 thousand", 19900L},
+ {FORMAT_GROUPING, "12,346 thousand", 12346000L},
+ {FORMAT_PARSEINTONLY, "12345 thousand", 12345000L},
+ {FORMAT_PARSEINTONLY, "12,345 thousand", 12345000L},
+ {FORMAT_PARSEINTONLY, "12.345 thousand", 12000L},};
+ }
+
+ @Test(dataProvider = "format")
+ public void formatCompactNumber(NumberFormat nf,
+ Object number, String expected) {
+ CompactFormatAndParseHelper.testFormat(nf, number, expected);
+ }
+
+ @Test(dataProvider = "parse")
+ public void parseCompactNumber(NumberFormat nf,
+ String parseString, Number expected) throws ParseException {
+ CompactFormatAndParseHelper.testParse(nf, parseString, expected, null, null);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestParseBigDecimal.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks CNF.parse() when parseBigDecimal is set to true
+ * @modules jdk.localedata
+ * @run testng/othervm TestParseBigDecimal
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import java.math.BigDecimal;
+import java.text.CompactNumberFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+public class TestParseBigDecimal {
+
+ private static final CompactNumberFormat FORMAT_DZ_LONG = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.LONG);
+
+ private static final CompactNumberFormat FORMAT_EN_US_SHORT = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ private static final CompactNumberFormat FORMAT_EN_LONG = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+ private static final CompactNumberFormat FORMAT_HI_IN_LONG = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.LONG);
+
+ private static final CompactNumberFormat FORMAT_JA_JP_SHORT = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+ private static final CompactNumberFormat FORMAT_IT_SHORT = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("it"), NumberFormat.Style.SHORT);
+
+ private static final CompactNumberFormat FORMAT_SW_LONG = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("sw"), NumberFormat.Style.LONG);
+
+ private static final CompactNumberFormat FORMAT_SE_SHORT = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(new Locale("se"), NumberFormat.Style.SHORT);
+
+ @BeforeTest
+ public void mutateInstances() {
+ FORMAT_DZ_LONG.setParseBigDecimal(true);
+ FORMAT_EN_US_SHORT.setParseBigDecimal(true);
+ FORMAT_EN_LONG.setParseBigDecimal(true);
+ FORMAT_HI_IN_LONG.setParseBigDecimal(true);
+ FORMAT_JA_JP_SHORT.setParseBigDecimal(true);
+ FORMAT_IT_SHORT.setParseBigDecimal(true);
+ FORMAT_SW_LONG.setParseBigDecimal(true);
+ FORMAT_SE_SHORT.setParseBigDecimal(true);
+ }
+
+ @DataProvider(name = "parse")
+ Object[][] compactParseData() {
+ return new Object[][]{
+ // compact number format instance, string to parse, parsed number
+ {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F21", new BigDecimal("1000")},
+ {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+ + "\u0F42 \u0F23", new BigDecimal("-3000")},
+ {FORMAT_DZ_LONG, "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+ + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+ + "\u0F22\u0F23\u0F24\u0F25\u0F27", new BigDecimal("12345700000000000000")},
+ {FORMAT_DZ_LONG, "-\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+ + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+ + "\u0F22\u0F23\u0F24\u0F25\u0F27", new BigDecimal("-12345700000000000000")},
+ {FORMAT_EN_US_SHORT, "-0.0", new BigDecimal("-0.0")},
+ {FORMAT_EN_US_SHORT, "0", new BigDecimal("0")},
+ {FORMAT_EN_US_SHORT, "499", new BigDecimal("499")},
+ {FORMAT_EN_US_SHORT, "-499", new BigDecimal("-499")},
+ {FORMAT_EN_US_SHORT, "499.89", new BigDecimal("499.89")},
+ {FORMAT_EN_US_SHORT, "-499.89", new BigDecimal("-499.89")},
+ {FORMAT_EN_US_SHORT, "1K", new BigDecimal("1000")},
+ {FORMAT_EN_US_SHORT, "-1K", new BigDecimal("-1000")},
+ {FORMAT_EN_US_SHORT, "3K", new BigDecimal("3000")},
+ {FORMAT_EN_US_SHORT, "-3K", new BigDecimal("-3000")},
+ {FORMAT_EN_US_SHORT, "17K", new BigDecimal("17000")},
+ {FORMAT_EN_US_SHORT, "-17K", new BigDecimal("-17000")},
+ {FORMAT_EN_US_SHORT, "12345678901234567890",
+ new BigDecimal("12345678901234567890")},
+ {FORMAT_EN_US_SHORT, "12345679T", new BigDecimal("12345679000000000000")},
+ {FORMAT_EN_US_SHORT, "-12345679T", new BigDecimal("-12345679000000000000")},
+ {FORMAT_EN_US_SHORT, "599.01K", new BigDecimal("599010.00")},
+ {FORMAT_EN_US_SHORT, "-599.01K", new BigDecimal("-599010.00")},
+ {FORMAT_EN_US_SHORT, "599444444.90T", new BigDecimal("599444444900000000000.00")},
+ {FORMAT_EN_US_SHORT, "-599444444.90T", new BigDecimal("-599444444900000000000.00")},
+ {FORMAT_EN_US_SHORT, "123456789012345.5678K",
+ new BigDecimal("123456789012345567.8000")},
+ {FORMAT_EN_US_SHORT, "17.000K", new BigDecimal("17000.000")},
+ {FORMAT_EN_US_SHORT, "123.56678K", new BigDecimal("123566.78000")},
+ {FORMAT_EN_US_SHORT, "-123.56678K", new BigDecimal("-123566.78000")},
+ {FORMAT_EN_LONG, "999", new BigDecimal("999")},
+ {FORMAT_EN_LONG, "1 thousand", new BigDecimal("1000")},
+ {FORMAT_EN_LONG, "3 thousand", new BigDecimal("3000")},
+ {FORMAT_EN_LONG, "12345679 trillion", new BigDecimal("12345679000000000000")},
+ {FORMAT_HI_IN_LONG, "999", new BigDecimal("999")},
+ {FORMAT_HI_IN_LONG, "-999", new BigDecimal("-999")},
+ {FORMAT_HI_IN_LONG, "1 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("1000")},
+ {FORMAT_HI_IN_LONG, "-1 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("-1000")},
+ {FORMAT_HI_IN_LONG, "3 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("3000")},
+ {FORMAT_HI_IN_LONG, "12345679 \u0916\u0930\u092C", new BigDecimal("1234567900000000000")},
+ {FORMAT_HI_IN_LONG, "-12345679 \u0916\u0930\u092C", new BigDecimal("-1234567900000000000")},
+ {FORMAT_JA_JP_SHORT, "-99", new BigDecimal("-99")},
+ {FORMAT_JA_JP_SHORT, "1\u4E07", new BigDecimal("10000")},
+ {FORMAT_JA_JP_SHORT, "30\u4E07", new BigDecimal("300000")},
+ {FORMAT_JA_JP_SHORT, "-30\u4E07", new BigDecimal("-300000")},
+ {FORMAT_JA_JP_SHORT, "12345679\u5146", new BigDecimal("12345679000000000000")},
+ {FORMAT_JA_JP_SHORT, "-12345679\u5146", new BigDecimal("-12345679000000000000")},
+ {FORMAT_IT_SHORT, "-99", new BigDecimal("-99")},
+ {FORMAT_IT_SHORT, "1\u00a0Mln", new BigDecimal("1000000")},
+ {FORMAT_IT_SHORT, "30\u00a0Mln", new BigDecimal("30000000")},
+ {FORMAT_IT_SHORT, "-30\u00a0Mln", new BigDecimal("-30000000")},
+ {FORMAT_IT_SHORT, "12345679\u00a0Bln", new BigDecimal("12345679000000000000")},
+ {FORMAT_IT_SHORT, "-12345679\u00a0Bln", new BigDecimal("-12345679000000000000")},
+ {FORMAT_SW_LONG, "-0.0", new BigDecimal("-0.0")},
+ {FORMAT_SW_LONG, "499", new BigDecimal("499")},
+ {FORMAT_SW_LONG, "elfu 1", new BigDecimal("1000")},
+ {FORMAT_SW_LONG, "elfu 3", new BigDecimal("3000")},
+ {FORMAT_SW_LONG, "elfu 17", new BigDecimal("17000")},
+ {FORMAT_SW_LONG, "elfu -3", new BigDecimal("-3000")},
+ {FORMAT_SW_LONG, "-499", new BigDecimal("-499")},
+ {FORMAT_SW_LONG, "elfu 1", new BigDecimal("1000")},
+ {FORMAT_SW_LONG, "elfu 3", new BigDecimal("3000")},
+ {FORMAT_SW_LONG, "elfu -3", new BigDecimal("-3000")},
+ {FORMAT_SW_LONG, "elfu 17", new BigDecimal("17000")},
+ {FORMAT_SW_LONG, "trilioni 12345679", new BigDecimal("12345679000000000000")},
+ {FORMAT_SW_LONG, "trilioni -12345679", new BigDecimal("-12345679000000000000")},
+ {FORMAT_SW_LONG, "elfu 599.01", new BigDecimal("599010.00")},
+ {FORMAT_SW_LONG, "elfu -599.01", new BigDecimal("-599010.00")},
+ {FORMAT_SE_SHORT, "999", new BigDecimal("999")},
+ {FORMAT_SE_SHORT, "8\u00a0mn", new BigDecimal("8000000")},
+ {FORMAT_SE_SHORT, "8\u00a0dt", new BigDecimal("8000")},
+ {FORMAT_SE_SHORT, "12345679\u00a0bn", new BigDecimal("12345679000000000000")},
+ {FORMAT_SE_SHORT, "12345679,89\u00a0bn", new BigDecimal("12345679890000000000.00")},
+ {FORMAT_SE_SHORT, "\u2212999", new BigDecimal("-999")},
+ {FORMAT_SE_SHORT, "\u22128\u00a0mn", new BigDecimal("-8000000")},
+ {FORMAT_SE_SHORT, "\u22128\u00a0dt", new BigDecimal("-8000")},
+ {FORMAT_SE_SHORT, "\u221212345679\u00a0bn", new BigDecimal("-12345679000000000000")},
+ {FORMAT_SE_SHORT, "\u221212345679,89\u00a0bn", new BigDecimal("-12345679890000000000.00")},};
+ }
+
+ @Test(dataProvider = "parse")
+ public void testParse(NumberFormat cnf, String parseString,
+ Number expected) throws ParseException {
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, BigDecimal.class);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestSpecialValues.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the formatting and parsing of special values
+ * @modules jdk.localedata
+ * @run testng/othervm TestSpecialValues
+ */
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestSpecialValues {
+
+ private static final NumberFormat FORMAT = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ @DataProvider(name = "formatSpecialValues")
+ Object[][] formatSpecialValues() {
+ return new Object[][]{
+ // number , formatted ouput
+ {+0.0, "0"},
+ {-0.0, "-0"},
+ {Double.MIN_VALUE, "0"},
+ {Double.MIN_NORMAL, "0"},
+ {Double.NaN, "NaN"},
+ {Double.POSITIVE_INFINITY, "\u221E"},
+ {Double.NEGATIVE_INFINITY, "-\u221E"},
+ {Long.MIN_VALUE, "-9223372T"},
+ {Long.MAX_VALUE, "9223372T"},};
+ }
+
+ @DataProvider(name = "parseSpecialValues")
+ Object[][] parseSpecialValues() {
+ return new Object[][]{
+ // parse string, parsed number
+ {"-0.0", -0.0},
+ {"" + Long.MIN_VALUE, Long.MIN_VALUE},
+ {"" + Long.MAX_VALUE, Long.MAX_VALUE},
+ {"NaN", Double.NaN},
+ {"\u221E", Double.POSITIVE_INFINITY},
+ {"-\u221E", Double.NEGATIVE_INFINITY},};
+ }
+
+ @Test(dataProvider = "formatSpecialValues")
+ public void testFormatSpecialValues(Object number, String expected) {
+ CompactFormatAndParseHelper.testFormat(FORMAT, number, expected);
+ }
+
+ @Test(dataProvider = "parseSpecialValues")
+ public void testParseSpecialValues(String parseString, Number expected)
+ throws ParseException {
+ CompactFormatAndParseHelper.testParse(FORMAT, parseString, expected, null, null);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestUExtensionOverride.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the behaviour of Unicode BCP 47 U Extension with
+ * compact number format
+ * @modules jdk.localedata
+ * @run testng/othervm TestUExtensionOverride
+ */
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestUExtensionOverride {
+
+ @DataProvider(name = "compactFormatData")
+ Object[][] compactFormatData() {
+ return new Object[][]{
+ // locale, number, formatted string
+
+ // -nu
+ {Locale.forLanguageTag("en-US-u-nu-deva"), 12345, "\u0967\u0968K"},
+ {Locale.forLanguageTag("en-US-u-nu-sinh"), 12345, "\u0de7\u0de8K"},
+ {Locale.forLanguageTag("en-US-u-nu-zzzz"), 12345, "12K"},
+ // -rg
+ {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"), 1234567,
+ "1\u00a0234\u00a0567"},
+ {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"), 1234567890,
+ "1\u00a0G"},
+ // -nu and -rg
+ {Locale.forLanguageTag("en-US-u-nu-deva-rg-dezzzz"), 12345,
+ "\u0967\u0968K"},
+ {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-cazzzz"), 1234567890,
+ "1\u00a0Md"},
+ {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-zzzz"), 12345,
+ "12\u00a0k"},
+ {Locale.forLanguageTag("fr-FR-u-rg-cazzzz-nu-deva"), 12345,
+ "\u0967\u0968\u00a0k"},};
+ }
+
+ @DataProvider(name = "compactParseData")
+ Object[][] compactParseData() {
+ return new Object[][]{
+ // locale, parse string, parsed number
+
+ // -nu
+ {Locale.forLanguageTag("en-US-u-nu-deva"),
+ "\u0967\u0968K", 12000L},
+ {Locale.forLanguageTag("en-US-u-nu-sinh"),
+ "\u0de7\u0de8K", 12000L},
+ {Locale.forLanguageTag("en-US-u-nu-zzzz"),
+ "12K", 12000L},
+ // -rg
+ {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"),
+ "1\u00a0G", 1000000000L},
+ // -nu and -rg
+ {Locale.forLanguageTag("en-US-u-nu-deva-rg-dezzzz"),
+ "\u0967\u0968K", 12000L},
+ {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-cazzzz"),
+ "1\u00a0Md", 1000000000L},
+ {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-zzzz"),
+ "12\u00a0k", 12000L},
+ {Locale.forLanguageTag("fr-FR-u-rg-cazzzz-nu-deva"),
+ "\u0967\u0968\u00a0k", 12000L},};
+ }
+
+ @Test(dataProvider = "compactFormatData")
+ public void testFormat(Locale locale, double num,
+ String expected) {
+ NumberFormat cnf = NumberFormat.getCompactNumberInstance(locale,
+ NumberFormat.Style.SHORT);
+ CompactFormatAndParseHelper.testFormat(cnf, num, expected);
+ }
+
+ @Test(dataProvider = "compactParseData")
+ public void testParse(Locale locale, String parseString,
+ Number expected) throws ParseException {
+ NumberFormat cnf = NumberFormat.getCompactNumberInstance(locale,
+ NumberFormat.Style.SHORT);
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestWithCompatProvider.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the compact number format with COMPAT provider. Since the
+ * compact number resources are only provided by CLDR, using COMPAT
+ * as a provider should always use the default patterns added in the
+ * FormatData.java resource bundle
+ * @modules jdk.localedata
+ * @run testng/othervm -Djava.locale.providers=COMPAT TestWithCompatProvider
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestWithCompatProvider {
+
+ private static final NumberFormat FORMAT_DZ_SHORT = NumberFormat
+ .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.SHORT);
+
+ private static final NumberFormat FORMAT_EN_US_SHORT = NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+ @DataProvider(name = "format")
+ Object[][] compactFormatData() {
+ return new Object[][]{
+ {FORMAT_DZ_SHORT, 1000.09, "1K"},
+ {FORMAT_DZ_SHORT, -999.99, "-1K"},
+ {FORMAT_DZ_SHORT, -0.0, "-0"},
+ {FORMAT_DZ_SHORT, new BigInteger("12345678901234567890"), "12345679T"},
+ {FORMAT_DZ_SHORT, new BigDecimal("12345678901234567890.89"), "12345679T"},
+ {FORMAT_EN_US_SHORT, -999.99, "-1K"},
+ {FORMAT_EN_US_SHORT, 9999, "10K"},
+ {FORMAT_EN_US_SHORT, 3000.90, "3K"},
+ {FORMAT_EN_US_SHORT, new BigInteger("12345678901234567890"), "12345679T"},
+ {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890.89"), "12345679T"},};
+ }
+
+ @DataProvider(name = "parse")
+ Object[][] compactParseData() {
+ return new Object[][]{
+ {FORMAT_DZ_SHORT, "1K", 1000L},
+ {FORMAT_DZ_SHORT, "-3K", -3000L},
+ {FORMAT_DZ_SHORT, "12345700T", 1.23457E19},
+ {FORMAT_EN_US_SHORT, "-99", -99L},
+ {FORMAT_EN_US_SHORT, "10K", 10000L},
+ {FORMAT_EN_US_SHORT, "12345679T", 1.2345679E19},};
+ }
+
+ @Test(dataProvider = "format")
+ public void testFormat(NumberFormat cnf, Object number,
+ String expected) {
+ CompactFormatAndParseHelper.testFormat(cnf, number, expected);
+ }
+
+ @Test(dataProvider = "parse")
+ public void testParse(NumberFormat cnf, String parseString,
+ Number expected) throws ParseException {
+ CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/TestDeserializeCNF.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8177552
+ * @modules jdk.localedata
+ * @summary Checks deserialization of compact number format
+ * @library /java/text/testlib
+ * @build TestDeserializeCNF HexDumpReader
+ * @run testng/othervm TestDeserializeCNF
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.math.RoundingMode;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+import static org.testng.Assert.*;
+
+public class TestDeserializeCNF {
+
+ // This object is serialized in cnf1.ser.txt with HALF_UP
+ // rounding mode, groupingsize = 3 and parseBigDecimal = true
+ private static final CompactNumberFormat COMPACT_FORMAT1 = new CompactNumberFormat("#,##0.###",
+ DecimalFormatSymbols.getInstance(Locale.US),
+ new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"});
+
+ // This object is serialized in cnf2.ser.txt with min integer digits = 20
+ // and min fraction digits = 5
+ private static final CompactNumberFormat COMPACT_FORMAT2 = new CompactNumberFormat("#,##0.###",
+ DecimalFormatSymbols.getInstance(Locale.JAPAN),
+ new String[]{"", "", "", "0", "0\u4e07", "00\u4e07", "000\u4e07", "0000\u4e07", "0\u5104", "00\u5104", "000\u5104", "0000\u5104", "0\u5146", "00\u5146", "000\u5146"});
+
+ private static final String FILE_COMPACT_FORMAT1 = "cnf1.ser.txt";
+ private static final String FILE_COMPACT_FORMAT2 = "cnf2.ser.txt";
+
+ @BeforeTest
+ public void mutateInstances() {
+ COMPACT_FORMAT1.setRoundingMode(RoundingMode.HALF_UP);
+ COMPACT_FORMAT1.setGroupingSize(3);
+ COMPACT_FORMAT1.setParseBigDecimal(true);
+
+ COMPACT_FORMAT2.setMinimumIntegerDigits(20);
+ COMPACT_FORMAT2.setMinimumFractionDigits(5);
+ }
+
+ @Test
+ public void testDeserialization() throws IOException, ClassNotFoundException {
+ try (InputStream istream1 = HexDumpReader.getStreamFromHexDump(FILE_COMPACT_FORMAT1);
+ ObjectInputStream ois1 = new ObjectInputStream(istream1);
+ InputStream istream2 = HexDumpReader.getStreamFromHexDump(FILE_COMPACT_FORMAT2);
+ ObjectInputStream ois2 = new ObjectInputStream(istream2);) {
+
+ CompactNumberFormat obj1 = (CompactNumberFormat) ois1.readObject();
+ assertEquals(obj1, COMPACT_FORMAT1, "Deserialized instance is not"
+ + " equal to the instance serialized in " + FILE_COMPACT_FORMAT1);
+
+ CompactNumberFormat obj2 = (CompactNumberFormat) ois2.readObject();
+ assertEquals(obj2, COMPACT_FORMAT2, "Deserialized instance is not"
+ + " equal to the instance serialized in " + FILE_COMPACT_FORMAT2);
+ }
+ }
+
+ // The objects are serialized using the serialize() method, the hex
+ // dump printed is copied to respective object files
+// void serialize(CompactNumberFormat cnf) {
+// ByteArrayOutputStream baos = new ByteArrayOutputStream();
+// try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+// oos.writeObject(cnf);
+// } catch (IOException ioe) {
+// throw new RuntimeException(ioe);
+// }
+// byte[] ser = baos.toByteArray();
+// for (byte b : ser) {
+// System.out.print("" + String.format("%02x", b));
+// }
+// }
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/TestSerialization.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @modules jdk.localedata
+ * @summary Checks the serialization feature of CompactNumberFormat
+ * @run testng/othervm TestSerialization
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.RoundingMode;
+import java.text.CompactNumberFormat;
+import java.text.NumberFormat;
+import java.util.Locale;
+import static org.testng.Assert.*;
+
+public class TestSerialization {
+
+ private static final NumberFormat FORMAT_HI = NumberFormat.getCompactNumberInstance(
+ new Locale("hi"), NumberFormat.Style.SHORT);
+ private static final CompactNumberFormat FORMAT_EN_US = (CompactNumberFormat) NumberFormat
+ .getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
+ private static final NumberFormat FORMAT_JA_JP = NumberFormat.getCompactNumberInstance(
+ Locale.JAPAN, NumberFormat.Style.SHORT);
+ private static final NumberFormat FORMAT_FR_FR = NumberFormat.getCompactNumberInstance(
+ Locale.FRANCE, NumberFormat.Style.LONG);
+ private static final NumberFormat FORMAT_DE_DE = NumberFormat.getCompactNumberInstance(
+ Locale.GERMANY, NumberFormat.Style.SHORT);
+ private static final NumberFormat FORMAT_KO_KR = NumberFormat.getCompactNumberInstance(
+ Locale.KOREA, NumberFormat.Style.SHORT);
+
+ @BeforeTest
+ public void mutateInstances() {
+ FORMAT_HI.setMinimumFractionDigits(2);
+ FORMAT_HI.setMinimumIntegerDigits(5);
+
+ FORMAT_EN_US.setRoundingMode(RoundingMode.HALF_UP);
+ FORMAT_EN_US.setGroupingSize(3);
+ FORMAT_EN_US.setParseBigDecimal(true);
+
+ FORMAT_JA_JP.setMaximumFractionDigits(30);
+ FORMAT_JA_JP.setMaximumIntegerDigits(30);
+
+ FORMAT_FR_FR.setParseIntegerOnly(true);
+ FORMAT_FR_FR.setGroupingUsed(true);
+
+ // Setting minimum integer digits beyond the allowed range
+ FORMAT_DE_DE.setMinimumIntegerDigits(320);
+
+ // Setting minimum fraction digits beyond the allowed range
+ FORMAT_KO_KR.setMinimumFractionDigits(350);
+ }
+
+ @Test
+ public void testSerialization() throws IOException, ClassNotFoundException {
+ // Serialize
+ serialize("cdf.ser", FORMAT_HI, FORMAT_EN_US, FORMAT_JA_JP, FORMAT_FR_FR, FORMAT_DE_DE, FORMAT_KO_KR);
+ // Deserialize
+ deserialize("cdf.ser", FORMAT_HI, FORMAT_EN_US, FORMAT_JA_JP, FORMAT_FR_FR, FORMAT_DE_DE, FORMAT_KO_KR);
+ }
+
+ private void serialize(String fileName, NumberFormat... formats)
+ throws IOException {
+ try (ObjectOutputStream os = new ObjectOutputStream(
+ new FileOutputStream(fileName))) {
+ for (NumberFormat fmt : formats) {
+ os.writeObject(fmt);
+ }
+ }
+ }
+
+ private static void deserialize(String fileName, NumberFormat... formats)
+ throws IOException, ClassNotFoundException {
+ try (ObjectInputStream os = new ObjectInputStream(
+ new FileInputStream(fileName))) {
+ for (NumberFormat fmt : formats) {
+ NumberFormat obj = (NumberFormat) os.readObject();
+ assertEquals(fmt, obj, "Serialized and deserialized"
+ + " objects do not match");
+
+ long number = 123456789789L;
+ String expected = fmt.format(number);
+ String actual = obj.format(number);
+ assertEquals(actual, expected, "Serialized and deserialized"
+ + " objects are expected to return same formatted"
+ + " output for number: " + number);
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/cnf1.ser.txt Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Hex dump of a serialized CompactNumberFormat for TestDeserializeCNF.
+
+aced00057372001d6a6176612e746578742e436f6d706163744e756d626572466f726d
+617462ed0c37b8207cf602000642000c67726f7570696e6753697a655a000f70617273
+65426967446563696d616c5b000f636f6d706163745061747465726e737400135b4c6a
+6176612f6c616e672f537472696e673b4c000e646563696d616c5061747465726e7400
+124c6a6176612f6c616e672f537472696e673b4c000c726f756e64696e674d6f646574
+00184c6a6176612f6d6174682f526f756e64696e674d6f64653b4c000773796d626f6c
+737400204c6a6176612f746578742f446563696d616c466f726d617453796d626f6c73
+3b787200166a6176612e746578742e4e756d626572466f726d6174dff6b3bf137d07e8
+03000b5a000c67726f7570696e67557365644200116d61784672616374696f6e446967
+6974734200106d6178496e74656765724469676974734900156d6178696d756d467261
+6374696f6e4469676974734900146d6178696d756d496e746567657244696769747342
+00116d696e4672616374696f6e4469676974734200106d696e496e7465676572446967
+6974734900156d696e696d756d4672616374696f6e4469676974734900146d696e696d
+756d496e74656765724469676974735a00107061727365496e74656765724f6e6c7949
+001573657269616c56657273696f6e4f6e53747265616d787200106a6176612e746578
+742e466f726d6174fbd8bc12e90f1843020000787000007f0000000000000135000100
+000000000000010000000001780301757200135b4c6a6176612e6c616e672e53747269
+6e673badd256e7e91d7b4702000078700000000f74000071007e000a71007e000a7400
+02304b74000330304b7400043030304b740002304d74000330304d7400043030304d74
+0002304274000330304274000430303042740002305474000330305474000430303054
+740009232c2323302e2323237e7200166a6176612e6d6174682e526f756e64696e674d
+6f646500000000000000001200007872000e6a6176612e6c616e672e456e756d000000
+0000000000120000787074000748414c465f55507372001e6a6176612e746578742e44
+6563696d616c466f726d617453796d626f6c73501d17990868939c0200114300106465
+63696d616c536570617261746f72430005646967697443000b6578706f6e656e746961
+6c43001167726f7570696e67536570617261746f724300096d696e75735369676e4300
+116d6f6e6574617279536570617261746f724300107061747465726e53657061726174
+6f724300077065724d696c6c43000770657263656e7449001573657269616c56657273
+696f6e4f6e53747265616d4300097a65726f44696769744c00034e614e71007e00024c
+000e63757272656e637953796d626f6c71007e00024c00146578706f6e656e7469616c
+536570617261746f7271007e00024c0008696e66696e69747971007e00024c0012696e
+746c43757272656e637953796d626f6c71007e00024c00066c6f63616c657400124c6a
+6176612f7574696c2f4c6f63616c653b7870002e00230045002c002d002e003b203000
+250000000300307400034e614e7074000145740003e2889e70737200106a6176612e75
+74696c2e4c6f63616c657ef811609c30f9ec03000649000868617368636f64654c0007
+636f756e74727971007e00024c000a657874656e73696f6e7371007e00024c00086c61
+6e677561676571007e00024c000673637269707471007e00024c000776617269616e74
+71007e00027870ffffffff740002555371007e000a740002656e71007e000a71007e00
+0a78
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/cnf2.ser.txt Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Hex dump of a serialized CompactNumberFormat for TestDeserializeCNF.
+
+aced00057372001d6a6176612e746578742e436f6d706163744e756d626572466f726d
+617462ed0c37b8207cf602000642000c67726f7570696e6753697a655a000f70617273
+65426967446563696d616c5b000f636f6d706163745061747465726e737400135b4c6a
+6176612f6c616e672f537472696e673b4c000e646563696d616c5061747465726e7400
+124c6a6176612f6c616e672f537472696e673b4c000c726f756e64696e674d6f646574
+00184c6a6176612f6d6174682f526f756e64696e674d6f64653b4c000773796d626f6c
+737400204c6a6176612f746578742f446563696d616c466f726d617453796d626f6c73
+3b787200166a6176612e746578742e4e756d626572466f726d6174dff6b3bf137d07e8
+03000b5a000c67726f7570696e67557365644200116d61784672616374696f6e446967
+6974734200106d6178496e74656765724469676974734900156d6178696d756d467261
+6374696f6e4469676974734900146d6178696d756d496e746567657244696769747342
+00116d696e4672616374696f6e4469676974734200106d696e496e7465676572446967
+6974734900156d696e696d756d4672616374696f6e4469676974734900146d696e696d
+756d496e74656765724469676974735a00107061727365496e74656765724f6e6c7949
+001573657269616c56657273696f6e4f6e53747265616d787200106a6176612e746578
+742e466f726d6174fbd8bc12e90f1843020000787000057f0000000500000135051400
+000005000000140000000001780000757200135b4c6a6176612e6c616e672e53747269
+6e673badd256e7e91d7b4702000078700000000f74000071007e000a71007e000a7400
+013074000430e4b8877400053030e4b887740006303030e4b88774000730303030e4b8
+8774000430e584847400053030e58484740006303030e5848474000730303030e58484
+74000430e585867400053030e58586740006303030e58586740009232c2323302e2323
+237e7200166a6176612e6d6174682e526f756e64696e674d6f64650000000000000000
+1200007872000e6a6176612e6c616e672e456e756d0000000000000000120000787074
+000948414c465f4556454e7372001e6a6176612e746578742e446563696d616c466f72
+6d617453796d626f6c73501d17990868939c020011430010646563696d616c53657061
+7261746f72430005646967697443000b6578706f6e656e7469616c43001167726f7570
+696e67536570617261746f724300096d696e75735369676e4300116d6f6e6574617279
+536570617261746f724300107061747465726e536570617261746f724300077065724d
+696c6c43000770657263656e7449001573657269616c56657273696f6e4f6e53747265
+616d4300097a65726f44696769744c00034e614e71007e00024c000e63757272656e63
+7953796d626f6c71007e00024c00146578706f6e656e7469616c536570617261746f72
+71007e00024c0008696e66696e69747971007e00024c0012696e746c43757272656e63
+7953796d626f6c71007e00024c00066c6f63616c657400124c6a6176612f7574696c2f
+4c6f63616c653b7870002e00230045002c002d002e003b203000250000000300307400
+034e614e7074000145740003e2889e70737200106a6176612e7574696c2e4c6f63616c
+657ef811609c30f9ec03000649000868617368636f64654c0007636f756e7472797100
+7e00024c000a657874656e73696f6e7371007e00024c00086c616e677561676571007e
+00024c000673637269707471007e00024c000776617269616e7471007e00027870ffff
+ffff7400024a5071007e000a7400026a6171007e000a71007e000a78
--- a/test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-# @test
-# @bug 4354216
-# @summary Test for the cause support when throwing a
-# MissingResourceBundle. (This test exists under
-# ResourceBundle/Control because bad resource bundle data can be
-# shared with other test cases.)
-# @build MissingResourceCauseTest
-# @build NonResourceBundle PrivateConstructorRB AbstractRB BadStaticInitRB
-# NoNoArgConstructorRB
-# @run shell MissingResourceCauseTest.sh
-
-case "`uname`" in
-Windows* | CYGWIN*)
- exit 0;
- ;;
-*)
- DEL=":";
- PS="/";
- ;;
-esac
-
-#
-# Create an unreadble properties file
-#
-UNREADABLE=${TESTCLASSPATH}${PS}UnreadableRB.properties
-rm -f $UNREADABLE
-echo "type=unreadable" >$UNREADABLE
-chmod 000 $UNREADABLE
-
-${TESTJAVA}/bin/java ${TESTVMOPTS} -esa -cp ${TESTCLASSES}${DEL}${TESTSRC} MissingResourceCauseTest
-STATUS=$?
-chmod 666 $UNREADABLE
-rm -f $UNREADABLE
-exit $STATUS
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTestRun.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4354216 8213127
+ * @summary Test for the cause support when throwing a
+ * MissingResourceBundle. (This test exists under
+ * ResourceBundle/Control because bad resource bundle data can be
+ * shared with other test cases.)
+ * @library /test/lib
+ * @build jdk.test.lib.JDKToolLauncher
+ * jdk.test.lib.Utils
+ * jdk.test.lib.process.ProcessTools
+ * MissingResourceCauseTest
+ * NonResourceBundle
+ * PrivateConstructorRB
+ * AbstractRB
+ * BadStaticInitRB
+ * NoNoArgConstructorRB
+ * @run main MissingResourceCauseTestRun
+ */
+
+import java.io.File;
+import java.io.FileWriter;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.Utils;
+import jdk.test.lib.process.ProcessTools;
+
+public class MissingResourceCauseTestRun {
+ public static void main(String[] args) throws Throwable {
+ Path path = Paths.get("UnreadableRB.properties");
+ Files.deleteIfExists(path);
+ try {
+ writeFile(path);
+ runCmd();
+ } finally {
+ deleteFile(path);
+ }
+ }
+
+ /**
+ * Create an unreadable properties file
+ */
+ private static void writeFile(Path path) throws Throwable {
+ String str = "type=unreadable";
+ Files.createFile(path);
+ try (FileWriter fw = new FileWriter(path.toString())) {
+ fw.write(str);
+ }
+ ProcessTools.executeCommand("chmod", "000", path.toString())
+ .outputTo(System.out)
+ .errorTo(System.out)
+ .shouldHaveExitValue(0);
+ }
+
+ private static void runCmd() throws Throwable {
+ // Class files are in Utils.TEST_CLASSES
+ // MalformedDataRB_en.properties is in Utils.TEST_SRC
+ // UnreadableRB.properties is in current directory
+ String cp = Utils.TEST_CLASSES + File.pathSeparator + Utils.TEST_SRC
+ + File.pathSeparator + ".";
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
+ launcher.addToolArg("-esa")
+ .addToolArg("-cp")
+ .addToolArg(cp)
+ .addToolArg("MissingResourceCauseTest");
+
+ int exitCode = ProcessTools.executeCommand(launcher.getCommand())
+ .getExitValue();
+ if (exitCode != 0) {
+ throw new RuntimeException("Execution of the test failed. "
+ + "Unexpected exit code: " + exitCode);
+ }
+ }
+
+ private static void deleteFile(Path path) throws Throwable {
+ if(path.toFile().exists()) {
+ ProcessTools.executeCommand("chmod", "666", path.toString())
+ .outputTo(System.out)
+ .errorTo(System.out)
+ .shouldHaveExitValue(0);
+ Files.delete(path);
+ }
+ }
+}
--- a/test/jdk/jdk/jfr/event/sampling/libTestNative.c Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/event/sampling/libTestNative.c Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
#include <unistd.h>
#endif
-JNIEXPORT void JNICALL Java_com_oracle_jfr_event_sampling_TestNative_longTime
+JNIEXPORT void JNICALL Java_jdk_jfr_event_sampling_TestNative_longTime
(JNIEnv *env, jclass jc)
{
#ifdef WINDOWS
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/jmx/TestFlightRecorderMXBeanLeak.java Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package jdk.jfr.jmx;
+
+import java.lang.management.ManagementFactory;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedClassLoader;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.management.jfr.FlightRecorderMXBean;
+import jdk.test.lib.jfr.Events;
+
+/**
+ * @test
+ * @key jfr
+ * @summary Verifies that attributes in FlightRecorderMXBean can be inspected
+ * without causing a memory leak.
+ * @requires vm.hasJFR
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.jfr.jmx.TestFlightRecorderMXBeanLeak
+ */
+public class TestFlightRecorderMXBeanLeak {
+
+ private static final String CLASS_LOADER_NAME = "Test Leak";
+ private static final String TEST_CLASS = "jdk.jfr.jmx.TestFlightRecorderMXBeanLeak$FlightRecorderMXBeanLoader";
+
+ public static void main(String[] args) throws Exception {
+ URL url = FlightRecorderMXBeanLoader.class.getProtectionDomain().getCodeSource().getLocation();
+ URLClassLoader loader = new URLClassLoader(CLASS_LOADER_NAME, new URL[] { url }, null);
+ Class<?> clazz = Class.forName(TEST_CLASS, true, loader);
+ clazz.newInstance();
+ loader.close();
+ clazz = null;
+ loader = null;
+ System.gc();
+ System.gc();
+
+ try (Recording r = new Recording()) {
+ r.enable("jdk.ClassLoaderStatistics").with("period", "endChunk");
+ r.start();
+ r.stop();
+ for (RecordedEvent e : Events.fromRecording(r)) {
+ RecordedClassLoader o = e.getValue("classLoader");
+ if (o != null) {
+ System.out.println("Class loader: type=" + o.getType().getName() + " name=" + o.getName());
+ if (CLASS_LOADER_NAME.equals(o.getName())) {
+ throw new Exception("Memory Leak. Class loader '" + CLASS_LOADER_NAME + "' should not be on the heap!");
+ }
+ }
+ }
+ }
+ }
+
+ public static class FlightRecorderMXBeanLoader {
+ public FlightRecorderMXBeanLoader() throws Exception {
+ ObjectName objectName = new ObjectName(FlightRecorderMXBean.MXBEAN_NAME);
+ MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
+ MBeanInfo mBeanInfo = platformMBeanServer.getMBeanInfo(objectName);
+ System.out.println("Inspecting FlightRecorderMXBeann:");
+ for (MBeanAttributeInfo attributeInfo : mBeanInfo.getAttributes()) {
+ Object value = platformMBeanServer.getAttribute(objectName, attributeInfo.getName());
+ System.out.println(attributeInfo.getName() + " = " + value);
+ }
+ }
+ }
+}
--- a/test/jdk/jdk/jfr/tool/ExecuteHelper.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/ExecuteHelper.java Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,10 @@
import jdk.jfr.Configuration;
import jdk.jfr.Event;
import jdk.jfr.Recording;
-import jdk.test.lib.Utils;;
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.Utils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;;
final class ExecuteHelper {
@@ -122,4 +125,12 @@
Matcher m = p.matcher("aaaaab");
m.matches();
}
+
+ public static OutputAnalyzer jfr(String... args) throws Throwable {
+ JDKToolLauncher l = JDKToolLauncher.createUsingTestJDK("jfr");
+ for (String arg : args) {
+ l.addToolArg(arg);
+ }
+ return ProcessTools.executeCommand(l.getCommand());
+ }
}
--- a/test/jdk/jdk/jfr/tool/TestAssemble.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestAssemble.java Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,6 @@
import jdk.jfr.internal.SecuritySupport.SafePath;
import jdk.test.lib.Asserts;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -90,30 +89,30 @@
String destination = destinationPath.toAbsolutePath().toString();
// Test failure
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "assemble");
+ OutputAnalyzer output = ExecuteHelper.jfr("assemble");
output.shouldContain("too few arguments");
- output = ProcessTools.executeProcess("jfr", "assemble", directory);
+ output = ExecuteHelper.jfr("assemble", directory);
output.shouldContain("too few arguments");
- output = ProcessTools.executeProcess("jfr", "assemble", "not-a-directory", destination);
+ output = ExecuteHelper.jfr("assemble", "not-a-directory", destination);
output.shouldContain("directory does not exist, not-a-directory");
- output = ProcessTools.executeProcess("jfr", "assemble", directory, "not-a-destination");
+ output = ExecuteHelper.jfr("assemble", directory, "not-a-destination");
output.shouldContain("filename must end with '.jfr'");
- output = ProcessTools.executeProcess("jfr","assemble", "--wrongOption", directory, destination);
+ output = ExecuteHelper.jfr("assemble", "--wrongOption", directory, destination);
output.shouldContain("too many arguments");
FileWriter fw = new FileWriter(destination);
fw.write('d');
fw.close();
- output = ProcessTools.executeProcess("jfr", "assemble", directory, destination);
+ output = ExecuteHelper.jfr("assemble", directory, destination);
output.shouldContain("already exists");
Files.delete(destinationPath);
// test success
- output = ProcessTools.executeProcess("jfr", "assemble", directory, destination);
+ output = ExecuteHelper.jfr("assemble", directory, destination);
System.out.println(output.getOutput());
output.shouldContain("Finished.");
--- a/test/jdk/jdk/jfr/tool/TestDisassemble.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestDisassemble.java Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,6 @@
import jdk.jfr.Recording;
import jdk.jfr.consumer.RecordingFile;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -64,40 +63,40 @@
String fileBText = recordingFileB.toAbsolutePath().toString();
String fileCText = recordingFileC.toAbsolutePath().toString();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "disassemble");
+ OutputAnalyzer output = ExecuteHelper.jfr("disassemble");
output.shouldContain("missing file");
- output = ProcessTools.executeProcess("jfr","disassemble", "--wrongOption", fileAText);
+ output = ExecuteHelper.jfr("disassemble", "--wrongOption", fileAText);
output.shouldContain("unknown option");
- output = ProcessTools.executeProcess("jfr","disassemble", "--wrongOption", "1", fileAText);
+ output = ExecuteHelper.jfr("disassemble", "--wrongOption", "1", fileAText);
output.shouldContain("unknown option");
- output = ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "-3", fileAText);
+ output = ExecuteHelper.jfr("disassemble", "--max-chunks", "-3", fileAText);
output.shouldContain("max chunks must be at least 1");
- output = ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "1000", fileAText);
+ output = ExecuteHelper.jfr("disassemble", "--max-chunks", "1000", fileAText);
output.shouldContain("number of chunks in recording");
output.shouldContain("doesn't exceed max chunks");
- output = ProcessTools.executeProcess("jfr", "disassemble", fileAText); // maxchunks is 5 by
+ output = ExecuteHelper.jfr("disassemble", fileAText); // maxchunks is 5 by
// default
System.out.println(output.getOutput());
System.out.println(fileAText);
verifyRecording(fileAText.substring(0, fileAText.length() - 4) + "_1.jfr");
verifyRecording(fileAText.substring(0, fileAText.length() - 4) + "_2.jfr");
- output = ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "2", fileBText);
+ output = ExecuteHelper.jfr("disassemble", "--max-chunks", "2", fileBText);
verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_1.jfr");
verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_2.jfr");
verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_3.jfr");
- output = ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "2", fileBText);
+ output = ExecuteHelper.jfr("disassemble", "--max-chunks", "2", fileBText);
output.shouldContain("file with that name already exist");
// sanity check
- output = ProcessTools.executeProcess("jfr","disassemble", "--max-size", "500000", fileCText);
- verifyRecording(fileCText.substring(0, fileCText.length() - 4) + "_1.jfr");
+ output = ExecuteHelper.jfr("disassemble", "--max-size", "10000", fileCText);
+ verifyRecording(fileCText.substring(0, fileCText.length() - 4) + "_01.jfr");
}
private static void verifyRecording(String name) throws IOException {
--- a/test/jdk/jdk/jfr/tool/TestHelp.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestHelp.java Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,6 @@
package jdk.jfr.tool;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -39,7 +38,7 @@
public class TestHelp {
public static void main(String[] args) throws Throwable {
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "help");
+ OutputAnalyzer output = ExecuteHelper.jfr("help");
output.shouldContain("print");
output.shouldContain("assemble");
output.shouldContain("disassemble");
@@ -47,11 +46,11 @@
output.shouldContain("summary");
output.shouldContain("help");
- output = ProcessTools.executeProcess("jfr", "help", "version");
+ output = ExecuteHelper.jfr("help", "version");
output.shouldContain("Display version of the jfr tool");
output.shouldContain("jfr version");
- output = ProcessTools.executeProcess("jfr", "help", "wrongcommand");
+ output = ExecuteHelper.jfr("help", "wrongcommand");
output.shouldContain("unknown command 'wrongcommand'");
}
}
--- a/test/jdk/jdk/jfr/tool/TestMetadata.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestMetadata.java Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,6 @@
import jdk.jfr.EventType;
import jdk.jfr.consumer.RecordingFile;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -46,13 +45,13 @@
Path f = ExecuteHelper.createProfilingRecording().toAbsolutePath();
String file = f.toAbsolutePath().toString();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "metadata");
+ OutputAnalyzer output = ExecuteHelper.jfr("metadata");
output.shouldContain("missing file");
- output = ProcessTools.executeProcess("jfr", "metadata", "--wrongOption", file);
+ output = ExecuteHelper.jfr("metadata", "--wrongOption", file);
output.shouldContain("unknown option --wrongOption");
- output = ProcessTools.executeProcess("jfr", "metadata", file);
+ output = ExecuteHelper.jfr("metadata", file);
try (RecordingFile rf = new RecordingFile(f)) {
for (EventType t : rf.readEventTypes()) {
String name = t.getName();
--- a/test/jdk/jdk/jfr/tool/TestPrint.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrint.java Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,6 @@
import jdk.test.lib.Utils;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -45,17 +44,17 @@
public static void main(String[] args) throws Throwable {
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print");
+ OutputAnalyzer output = ExecuteHelper.jfr("print");
output.shouldContain("missing file");
- output = ProcessTools.executeProcess("jfr", "print", "missing.jfr");
+ output = ExecuteHelper.jfr("print", "missing.jfr");
output.shouldContain("could not find file ");
Path file = Utils.createTempFile("faked-print-file", ".jfr");
FileWriter fw = new FileWriter(file.toFile());
fw.write('d');
fw.close();
- output = ProcessTools.executeProcess("jfr", "print", "--wrongOption", file.toAbsolutePath().toString());
+ output = ExecuteHelper.jfr("print", "--wrongOption", file.toAbsolutePath().toString());
output.shouldContain("unknown option");
Files.delete(file);
}
--- a/test/jdk/jdk/jfr/tool/TestPrintDefault.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintDefault.java Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,6 @@
import java.nio.file.Path;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -48,7 +47,7 @@
Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", recordingFile.toString());
+ OutputAnalyzer output = ExecuteHelper.jfr("print", recordingFile.toString());
output.shouldContain("JVMInformation");
}
}
--- a/test/jdk/jdk/jfr/tool/TestPrintJSON.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintJSON.java Fri Dec 07 09:46:53 2018 -0500
@@ -43,7 +43,6 @@
import jdk.nashorn.api.scripting.JSObject;
import jdk.test.lib.Asserts;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -63,7 +62,7 @@
Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", "--json", "--stack-depth", "999", recordingFile.toString());
+ OutputAnalyzer output = ExecuteHelper.jfr("print", "--json", "--stack-depth", "999", recordingFile.toString());
String json = output.getStdout();
// Parse JSON using Nashorn
--- a/test/jdk/jdk/jfr/tool/TestPrintXML.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintXML.java Fri Dec 07 09:46:53 2018 -0500
@@ -58,7 +58,6 @@
import jdk.jfr.consumer.RecordedObject;
import jdk.jfr.consumer.RecordingFile;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -77,7 +76,7 @@
Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", "--xml", "--stack-depth", "9999", recordingFile.toString());
+ OutputAnalyzer output = ExecuteHelper.jfr("print", "--xml", "--stack-depth", "9999", recordingFile.toString());
System.out.println(recordingFile);
String xml = output.getStdout();
--- a/test/jdk/jdk/jfr/tool/TestSummary.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestSummary.java Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,6 @@
import jdk.jfr.EventType;
import jdk.jfr.consumer.RecordingFile;
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
/**
* @test
@@ -46,13 +45,13 @@
Path f = ExecuteHelper.createProfilingRecording().toAbsolutePath();
String file = f.toAbsolutePath().toString();
- OutputAnalyzer output = ProcessTools.executeProcess("jfr", "summary");
+ OutputAnalyzer output = ExecuteHelper.jfr("summary");
output.shouldContain("missing file");
- output = ProcessTools.executeProcess("jfr", "summary", "--wrongOption", file);
+ output = ExecuteHelper.jfr("summary", "--wrongOption", file);
output.shouldContain("too many arguments");
- output = ProcessTools.executeProcess("jfr", "summary", file);
+ output = ExecuteHelper.jfr("summary", file);
try (RecordingFile rf = new RecordingFile(f)) {
for (EventType t : rf.readEventTypes()) {
output.shouldContain(t.getName());
--- a/test/jdk/sun/nio/cs/TestIBMBugs.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/sun/nio/cs/TestIBMBugs.java Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. 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
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466
+ * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466 8212794
* @summary Check if the problems reported in above bugs have been fixed
* @modules jdk.charsets
*/
@@ -234,6 +234,22 @@
}
}
+ private static void bug8212794 () throws Exception {
+ Charset cs = Charset.forName("x-IBM964");
+ byte[] ba = new byte[] {(byte)0x5c, (byte)0x90, (byte)0xa1, (byte)0xa1};
+ char[] ca = new char[] {'\\', '\u0090', '\u3000'};
+ ByteBuffer bb = ByteBuffer.wrap(ba);
+ CharBuffer cb = cs.decode(bb);
+ if(!Arrays.equals(ca, Arrays.copyOf(cb.array(), cb.limit()))) {
+ throw new Exception("IBM964 failed to decode");
+ }
+ cb = CharBuffer.wrap(ca);
+ bb = cs.encode(cb);
+ if(!Arrays.equals(ba, Arrays.copyOf(bb.array(), bb.limit()))) {
+ throw new Exception("IBM964 failed to encode");
+ }
+ }
+
public static void main (String[] args) throws Exception {
bug6577466();
// need to be tested before any other IBM949C test case
@@ -245,6 +261,7 @@
bug6371431();
bug6569191();
bug8202329();
+ bug8212794();
bug8213618();
}
}
Binary file test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz has changed
--- a/test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz.sha256 Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-9d23633683ab3cea14519a22a997bc7f5d8d9664b6342df492c194966184ce0d nss-3.16-with-nspr-4.10.4.tar.gz
--- a/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/pkg/DeprecatedClassByAnnotation.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/pkg/DeprecatedClassByAnnotation.java Fri Dec 07 09:46:53 2018 -0500
@@ -23,7 +23,7 @@
package pkg;
-@Deprecated()
+@Deprecated
public class DeprecatedClassByAnnotation {
@Deprecated(forRemoval=true)
@@ -32,6 +32,6 @@
@Deprecated(forRemoval=true)
public DeprecatedClassByAnnotation() {}
- @Deprecated()
+ @Deprecated
public void method() {}
}
--- a/test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg2/DeprecatedClassByAnnotation.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg2/DeprecatedClassByAnnotation.java Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,15 @@
package pkg2;
-@Deprecated()
+@Deprecated
public class DeprecatedClassByAnnotation {
- @Deprecated()
+ @Deprecated
public int field;
- @Deprecated()
+ @Deprecated
public DeprecatedClassByAnnotation() {}
- @Deprecated()
+ @Deprecated
public void method() {}
}
--- a/test/langtools/jdk/javadoc/doclet/testSearch/pkg2/DeprecatedClassByAnnotation.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSearch/pkg2/DeprecatedClassByAnnotation.java Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,15 @@
package pkg2;
-@Deprecated()
+@Deprecated
public class DeprecatedClassByAnnotation {
- @Deprecated()
+ @Deprecated
public int field;
- @Deprecated()
+ @Deprecated
public DeprecatedClassByAnnotation() {}
- @Deprecated()
+ @Deprecated
public void method() {}
}
--- a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java Fri Dec 07 09:46:53 2018 -0500
@@ -95,7 +95,7 @@
checkOutput("badref/Test.html", true,
"<dl>\n"
+ "<dt><span class=\"seeLabel\">See Also:</span></dt>\n"
- + "<dd><code>Object[]</code>, \n"
+ + "<dd><code>Object</code>, \n"
+ "<code>Foo<String></code></dd>\n"
+ "</dl>");
}
--- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java Fri Dec 07 09:46:53 2018 -0500
@@ -31,13 +31,15 @@
/**
* @serialField name String a test
+ * @serialField longs Long[] the longs
* @see TestSerializedForm
*/
@Deprecated
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("i", int.class),
new ObjectStreamField("count", Integer.TYPE),
- new ObjectStreamField("name", String.class)
+ new ObjectStreamField("name", String.class),
+ new ObjectStreamField("longs", Long[].class)
};
/**
--- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java Fri Dec 07 09:46:53 2018 -0500
@@ -84,6 +84,19 @@
+ "pkg1.ProtectedInnerClass.ProInnerClass</a> extends java.lang.Object implements Serializable</h3>",
"<h3>Class pkg1.PublicExcludeInnerClass.PubInnerClass extends java.lang.Object implements "
+ "Serializable</h3>");
+
+ checkOutput("serialized-form.html", true,
+ "<h3>Serialized Fields</h3>\n" +
+ "<ul class=\"blockList\">\n" +
+ "<li class=\"blockList\">\n" +
+ "<h4>longs</h4>\n" +
+ "<pre>Long[] longs</pre>\n" +
+ "<div class=\"block\">the longs</div>\n" +
+ "</li>\n" +
+ "<li class=\"blockListLast\">\n" +
+ "<h4>name</h4>\n" +
+ "<pre>java.lang.String name</pre>\n" +
+ "<div class=\"block\">a test</div>");
}
@Test
@@ -113,6 +126,19 @@
"<h3>Class <a href=\"pkg1/PublicExcludeInnerClass.PubInnerClass.html\" "
+ "title=\"class in pkg1\">pkg1.PublicExcludeInnerClass.PubInnerClass</a> "
+ "extends java.lang.Object implements Serializable</h3>");
+
+ checkOutput("serialized-form.html", true,
+ "<h3>Serialized Fields</h3>\n" +
+ "<ul class=\"blockList\">\n" +
+ "<li class=\"blockList\">\n" +
+ "<h4>longs</h4>\n" +
+ "<pre>Long[] longs</pre>\n" +
+ "<div class=\"block\">the longs</div>\n" +
+ "</li>\n" +
+ "<li class=\"blockListLast\">\n" +
+ "<h4>name</h4>\n" +
+ "<pre>java.lang.String name</pre>\n" +
+ "<div class=\"block\">a test</div>");
}
@Test
--- a/test/langtools/tools/doclint/ReferenceTest.out Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/doclint/ReferenceTest.out Fri Dec 07 09:46:53 2018 -0500
@@ -43,24 +43,12 @@
ReferenceTest.java:65: error: type arguments not allowed here
* @see not.Found<String>
^
-ReferenceTest.java:70: error: array type not allowed here
- * {@link java.lang.String[]}
- ^
-ReferenceTest.java:71: error: array type not allowed here
- * {@link java.lang.String[]#equals}
- ^
-ReferenceTest.java:72: error: array type not allowed here
+ReferenceTest.java:72: error: reference not found
* {@link not.Found[]}
^
-ReferenceTest.java:73: error: array type not allowed here
- * @see java.lang.String[]
- ^
-ReferenceTest.java:74: error: array type not allowed here
- * @see java.lang.String[]#equals
- ^
-ReferenceTest.java:75: error: array type not allowed here
+ReferenceTest.java:75: error: reference not found
* @see not.Found[]
^
-20 errors
+16 errors
1 warning
--- a/test/langtools/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,7 @@
import java.lang.annotation.*;
@Anno(req = true)
-@Anno()
+@Anno
public class CannotCompileRepeatedAnnoTest {
}
--- a/test/langtools/tools/javac/annotations/6881115/T6881115.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/6881115/T6881115.java Fri Dec 07 09:46:53 2018 -0500
@@ -12,7 +12,7 @@
@Target({ElementType.TYPE, ElementType.TYPE_PARAMETER, ElementType.ANNOTATION_TYPE})
@interface A {
B b() default @B(b2 = 1, b2 = 2);
- B[] b_arr() default {@B(), @B(b2 = 1, b2 = 2)};
+ B[] b_arr() default {@B, @B(b2 = 1, b2 = 2)};
}
@interface B {
@@ -21,6 +21,6 @@
}
@A(b = @B(b2 = 1, b2 = 2),
- b_arr = {@B(), @B(b2 = 1, b2 = 2)})
+ b_arr = {@B, @B(b2 = 1, b2 = 2)})
class T6881115<@A(b = @B(b2 = 1, b2 = 2),
- b_arr = {@B(), @B(b2 = 1, b2 = 2)}) X> {}
+ b_arr = {@B, @B(b2 = 1, b2 = 2)}) X> {}
--- a/test/langtools/tools/javac/annotations/6881115/T6881115.out Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/6881115/T6881115.out Fri Dec 07 09:46:53 2018 -0500
@@ -1,16 +1,16 @@
T6881115.java:14:30: compiler.err.duplicate.annotation.member.value: b2, B
T6881115.java:14:19: compiler.err.annotation.missing.default.value: B, b1
T6881115.java:15:26: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:15:43: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:15:32: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:15:41: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:15:30: compiler.err.annotation.missing.default.value: B, b1
T6881115.java:23:19: compiler.err.duplicate.annotation.member.value: b2, B
T6881115.java:23:8: compiler.err.annotation.missing.default.value: B, b1
T6881115.java:24:13: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:24:30: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:24:19: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:24:28: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:24:17: compiler.err.annotation.missing.default.value: B, b1
T6881115.java:25:34: compiler.err.duplicate.annotation.member.value: b2, B
T6881115.java:25:23: compiler.err.annotation.missing.default.value: B, b1
T6881115.java:26:28: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:26:45: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:26:34: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:26:43: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:26:32: compiler.err.annotation.missing.default.value: B, b1
15 errors
--- a/test/langtools/tools/javac/annotations/neg/Cycle3.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/neg/Cycle3.java Fri Dec 07 09:46:53 2018 -0500
@@ -14,10 +14,10 @@
@Retention(RUNTIME)
@interface A {
- A[] values() default { @A() };
+ A[] values() default { @A };
}
-@A()
+@A
class Main {
public static void main(String[] args) {
A a = Main.class.getAnnotation(A.class);
--- a/test/langtools/tools/javac/annotations/pos/Primitives.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/pos/Primitives.java Fri Dec 07 09:46:53 2018 -0500
@@ -39,8 +39,8 @@
Class[] value() default { void.class };
}
- @A()
- @B()
+ @A
+ @B
static class T1 {}
@A(int.class)
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.java Fri Dec 07 09:46:53 2018 -0500
@@ -13,6 +13,6 @@
Foo[] value() default {};
}
-@Foo() @Foo()
+@Foo @Foo
public class BaseAnnoAsContainerAnno {}
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/MissingContainer.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/MissingContainer.java Fri Dec 07 09:46:53 2018 -0500
@@ -8,7 +8,7 @@
import java.lang.annotation.Repeatable;
-@Repeatable()
+@Repeatable
@interface Foo {}
@interface FooContainer {
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Fri Dec 07 09:46:53 2018 -0500
@@ -107,30 +107,30 @@
// visited code
@A String @C [] @B [] field;
static {
- // Shouldn't find @A(), as it is field annotation
- expectedLocations.put("@B()", 1);
- expectedLocations.put("@C()", 2);
+ // Shouldn't find @A, as it is field annotation
+ expectedLocations.put("@B", 1);
+ expectedLocations.put("@C", 2);
}
List<@D String @F [] @E []> typearg;
static {
- expectedLocations.put("@D()", 0);
- expectedLocations.put("@E()", 1);
- expectedLocations.put("@F()", 2);
+ expectedLocations.put("@D", 0);
+ expectedLocations.put("@E", 1);
+ expectedLocations.put("@F", 2);
}
void varargSimple(@G String @H ... vararg1) { }
static {
- // Shouldn't find @G(), as it is a parameter annotation
- expectedLocations.put("@H()", 1);
+ // Shouldn't find @G, as it is a parameter annotation
+ expectedLocations.put("@H", 1);
}
void varargLong(@I String @L [] @K [] @J ... vararg2) { }
static {
- // Shouldn't find @I(), as it is a parameter annotation
- expectedLocations.put("@J()", 1);
- expectedLocations.put("@K()", 2);
- expectedLocations.put("@L()", 3);
+ // Shouldn't find @I, as it is a parameter annotation
+ expectedLocations.put("@J", 1);
+ expectedLocations.put("@K", 2);
+ expectedLocations.put("@L", 3);
}
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Fri Dec 07 09:46:53 2018 -0500
@@ -84,11 +84,11 @@
foundAnnotations++;
int expected = -1;
- if (annotation.equals("@A()"))
+ if (annotation.equals("@A"))
expected = 0;
- else if (annotation.equals("@B()"))
+ else if (annotation.equals("@B"))
expected = 1;
- else if (annotation.equals("@C()"))
+ else if (annotation.equals("@C"))
expected = 2;
else
throw new AssertionError("found an unexpected annotation: " + annotation);
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Fri Dec 07 09:46:53 2018 -0500
@@ -79,11 +79,11 @@
foundAnnotations++;
int expected = -1;
- if (annotation.equals("@A()"))
+ if (annotation.equals("@A"))
expected = 0;
- else if (annotation.equals("@B()"))
+ else if (annotation.equals("@B"))
expected = 1;
- else if (annotation.equals("@C()"))
+ else if (annotation.equals("@C"))
expected = 2;
else
throw new AssertionError("found an unexpected annotation: " + annotation);
--- a/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotatedMethodSelectorTest.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotatedMethodSelectorTest.java Fri Dec 07 09:46:53 2018 -0500
@@ -9,6 +9,6 @@
class AnnotatedMethodSelectorTest {
@interface A {}
static public void main(String... args) {
- java.util.@A() Arrays.stream(args);
+ java.util.@A Arrays.stream(args);
}
}
--- a/test/langtools/tools/javac/diags/examples/AnnoNotApplicable.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/diags/examples/AnnoNotApplicable.java Fri Dec 07 09:46:53 2018 -0500
@@ -29,5 +29,5 @@
@interface Anno { }
-@Anno()
+@Anno
class AnnoNotApplicable { }
--- a/test/langtools/tools/javac/tree/TypeAnnotationsPretty.java Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/tree/TypeAnnotationsPretty.java Fri Dec 07 09:46:53 2018 -0500
@@ -60,26 +60,26 @@
public static void main(String... args) throws Exception {
TypeAnnotationsPretty tap = new TypeAnnotationsPretty();
- tap.runField("@TA()\nObject cls = null");
- tap.runField("@TA()\nObject cls = new @TA() Object()");
+ tap.runField("@TA\nObject cls = null");
+ tap.runField("@TA\nObject cls = new @TA Object()");
- tap.runField("@TA()\nList<@TB() Object> cls = null");
- tap.runField("@TA()\nList<@TB() Object> cls = new @TA() LinkedList<@TB() Object>()");
+ tap.runField("@TA\nList<@TB Object> cls = null");
+ tap.runField("@TA\nList<@TB Object> cls = new @TA LinkedList<@TB Object>()");
tap.runField("Class[] cls = null");
- tap.runField("@TA()\nClass[] cls = null");
- tap.runField("Class @TA() [] cls = null");
- tap.runField("@TA()\nClass @TB() [] cls = null");
+ tap.runField("@TA\nClass[] cls = null");
+ tap.runField("Class @TA [] cls = null");
+ tap.runField("@TA\nClass @TB [] cls = null");
tap.runField("Class[] cls = new Class[]{Object.class}");
- tap.runField("@TA()\nClass[] cls = new @TA() Class[]{Object.class}");
- tap.runField("Class @TB() [] cls = new Class @TB() []{Object.class}");
- tap.runField("@TA()\nClass @TB() [] cls = new @TA() Class @TB() []{Object.class}");
- tap.runField("@TA()\nClass @TB() [] @TC() [] cls = new @TA() Class @TB() [10] @TC() []");
- tap.runField("Class @TB() [] @TC() [] cls = new Class @TB() [10] @TC() []");
- tap.runField("@TA()\nClass @TB() [] @TC() [] @TD() [] cls = new @TA() Class @TB() [10] @TC() [] @TD() []");
+ tap.runField("@TA\nClass[] cls = new @TA Class[]{Object.class}");
+ tap.runField("Class @TB [] cls = new Class @TB []{Object.class}");
+ tap.runField("@TA\nClass @TB [] cls = new @TA Class @TB []{Object.class}");
+ tap.runField("@TA\nClass @TB [] @TC [] cls = new @TA Class @TB [10] @TC []");
+ tap.runField("Class @TB [] @TC [] cls = new Class @TB [10] @TC []");
+ tap.runField("@TA\nClass @TB [] @TC [] @TD [] cls = new @TA Class @TB [10] @TC [] @TD []");
- tap.runMethod("\n@TA()\nObject test(@TB()\nList<@TC() String> p) {\n" +
+ tap.runMethod("\n@TA\nObject test(@TB\nList<@TC String> p) {\n" +
" return null;\n" +
"}");