# HG changeset patch # User duke # Date 1499267391 -7200 # Node ID 44158f6d3b94c0fa020e33632532473d92d1ea96 # Parent a430c36e9f2c87a4bd349aefe71e4009c8d58fb9# Parent 482f63894bb11b1d15d842e0e7eb1cba05487256 Merge diff -r 482f63894bb1 -r 44158f6d3b94 .hgtags-top-repo --- a/.hgtags-top-repo Wed Jul 05 17:09:16 2017 +0200 +++ b/.hgtags-top-repo Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ cf26288a114be67c39f2758959ce50b60f5ae330 jdk7-b85 433a60a9c0bf1b26ee7e65cebaa89c541f497aed jdk7-b86 6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87 +82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 corba/.hgtags --- a/corba/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/corba/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ c67a9df7bc0ca291f08f9a9cc05cb78ea15d25e6 jdk7-b85 6253e28826d16cf1aecc39ce04c8de1f6bf2df5f jdk7-b86 09a41111a401d327f65e453384d976a10154d9ea jdk7-b87 +39e14d2da687c7e592142137517aaf689544820f jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/.hgtags --- a/hotspot/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -86,3 +86,4 @@ bf823ef06b4f211e66988d76a2e2669be5c0820e jdk7-b86 07226e9eab8f74b37346b32715f829a2ef2c3188 hs18-b01 e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 +4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/ci/ciEnv.cpp --- a/hotspot/src/share/vm/ci/ciEnv.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/ci/ciEnv.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -385,11 +385,6 @@ KILL_COMPILE_ON_FATAL_(fail_type)); } - if (found_klass != NULL) { - // Found it. Build a CI handle. - return get_object(found_klass)->as_klass(); - } - // If we fail to find an array klass, look again for its element type. // The element type may be available either locally or via constraints. // In either case, if we can find the element type in the system dictionary, @@ -414,6 +409,11 @@ } } + if (found_klass != NULL) { + // Found it. Build a CI handle. + return get_object(found_klass)->as_klass(); + } + if (require_local) return NULL; // Not yet loaded into the VM, or not governed by loader constraints. // Make a CI representative for it. diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/classfile/loaderConstraints.cpp --- a/hotspot/src/share/vm/classfile/loaderConstraints.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/classfile/loaderConstraints.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -334,33 +334,6 @@ return NULL; } - -klassOop LoaderConstraintTable::find_constrained_elem_klass(symbolHandle name, - symbolHandle elem_name, - Handle loader, - TRAPS) { - LoaderConstraintEntry *p = *(find_loader_constraint(name, loader)); - if (p != NULL) { - assert(p->klass() == NULL, "Expecting null array klass"); - - // The array name has a constraint, but it will not have a class. Check - // each loader for an associated elem - for (int i = 0; i < p->num_loaders(); i++) { - Handle no_protection_domain; - - klassOop k = SystemDictionary::find(elem_name, p->loader(i), no_protection_domain, THREAD); - if (k != NULL) { - // Return the first elem klass found. - return k; - } - } - } - - // No constraints, or else no klass loaded yet. - return NULL; -} - - void LoaderConstraintTable::ensure_loader_constraint_capacity( LoaderConstraintEntry *p, int nfree) { diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/classfile/loaderConstraints.hpp --- a/hotspot/src/share/vm/classfile/loaderConstraints.hpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/classfile/loaderConstraints.hpp Wed Jul 05 17:09:51 2017 +0200 @@ -66,9 +66,6 @@ // bool is_method, TRAPS) klassOop find_constrained_klass(symbolHandle name, Handle loader); - klassOop find_constrained_elem_klass(symbolHandle name, symbolHandle elem_name, - Handle loader, TRAPS); - // Class loader constraints diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/classfile/systemDictionary.cpp --- a/hotspot/src/share/vm/classfile/systemDictionary.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -2178,9 +2178,8 @@ // a loader constraint that would require this loader to return the // klass that is already loaded. if (FieldType::is_array(class_name())) { - // Array classes are hard because their klassOops are not kept in the - // constraint table. The array klass may be constrained, but the elem class - // may not be. + // For array classes, their klassOops are not kept in the + // constraint table. The element klassOops are. jint dimension; symbolOop object_key; BasicType t = FieldType::get_array_info(class_name(), &dimension, @@ -2190,8 +2189,9 @@ } else { symbolHandle elem_name(THREAD, object_key); MutexLocker mu(SystemDictionary_lock, THREAD); - klass = constraints()->find_constrained_elem_klass(class_name, elem_name, class_loader, THREAD); + klass = constraints()->find_constrained_klass(elem_name, class_loader); } + // If element class already loaded, allocate array klass if (klass != NULL) { klass = Klass::cast(klass)->array_klass_or_null(dimension); } @@ -2209,22 +2209,38 @@ Handle class_loader1, Handle class_loader2, Thread* THREAD) { - unsigned int d_hash1 = dictionary()->compute_hash(class_name, class_loader1); + symbolHandle constraint_name; + if (!FieldType::is_array(class_name())) { + constraint_name = class_name; + } else { + // For array classes, their klassOops are not kept in the + // constraint table. The element classes are. + jint dimension; + symbolOop object_key; + BasicType t = FieldType::get_array_info(class_name(), &dimension, + &object_key, CHECK_(false)); + // primitive types always pass + if (t != T_OBJECT) { + return true; + } else { + constraint_name = symbolHandle(THREAD, object_key); + } + } + unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, class_loader1); int d_index1 = dictionary()->hash_to_index(d_hash1); - unsigned int d_hash2 = dictionary()->compute_hash(class_name, class_loader2); + unsigned int d_hash2 = dictionary()->compute_hash(constraint_name, class_loader2); int d_index2 = dictionary()->hash_to_index(d_hash2); - { - MutexLocker mu_s(SystemDictionary_lock, THREAD); + MutexLocker mu_s(SystemDictionary_lock, THREAD); - // Better never do a GC while we're holding these oops - No_Safepoint_Verifier nosafepoint; + // Better never do a GC while we're holding these oops + No_Safepoint_Verifier nosafepoint; - klassOop klass1 = find_class(d_index1, d_hash1, class_name, class_loader1); - klassOop klass2 = find_class(d_index2, d_hash2, class_name, class_loader2); - return constraints()->add_entry(class_name, klass1, class_loader1, - klass2, class_loader2); + klassOop klass1 = find_class(d_index1, d_hash1, constraint_name, class_loader1); + klassOop klass2 = find_class(d_index2, d_hash2, constraint_name, class_loader2); + return constraints()->add_entry(constraint_name, klass1, class_loader1, + klass2, class_loader2); } } @@ -2301,6 +2317,7 @@ // Returns the name of the type that failed a loader constraint check, or // NULL if no constraint failed. The returned C string needs cleaning up // with a ResourceMark in the caller. No exception except OOME is thrown. +// Arrays are not added to the loader constraint table, their elements are. char* SystemDictionary::check_signature_loaders(symbolHandle signature, Handle loader1, Handle loader2, bool is_method, TRAPS) { diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/oops/typeArrayKlass.cpp --- a/hotspot/src/share/vm/oops/typeArrayKlass.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/oops/typeArrayKlass.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -123,16 +123,16 @@ || (((unsigned int) length + (unsigned int) dst_pos) > (unsigned int) d->length()) ) { THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); } + // Check zero copy + if (length == 0) + return; // This is an attempt to make the copy_array fast. - // NB: memmove takes care of overlapping memory segments. - // Potential problem: memmove is not guaranteed to be word atomic - // Revisit in Merlin int l2es = log2_element_size(); int ihs = array_header_in_bytes() / wordSize; - char* src = (char*) ((oop*)s + ihs) + (src_pos << l2es); - char* dst = (char*) ((oop*)d + ihs) + (dst_pos << l2es); - memmove(dst, src, length << l2es); + char* src = (char*) ((oop*)s + ihs) + ((size_t)src_pos << l2es); + char* dst = (char*) ((oop*)d + ihs) + ((size_t)dst_pos << l2es); + Copy::conjoint_memory_atomic(src, dst, (size_t)length << l2es); } diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/opto/cfgnode.cpp --- a/hotspot/src/share/vm/opto/cfgnode.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/opto/cfgnode.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -956,6 +956,7 @@ } if( jtkp && ttkp ) { if( jtkp->is_loaded() && jtkp->klass()->is_interface() && + !jtkp->klass_is_exact() && // Keep exact interface klass (6894807) ttkp->is_loaded() && !ttkp->klass()->is_interface() ) { assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) || ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), ""); diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/src/share/vm/opto/type.cpp --- a/hotspot/src/share/vm/opto/type.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/hotspot/src/share/vm/opto/type.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -2545,12 +2545,15 @@ ftip->is_loaded() && ftip->klass()->is_interface() && ktip->is_loaded() && !ktip->klass()->is_interface()) { // Happens in a CTW of rt.jar, 320-341, no extra flags + assert(!ftip->klass_is_exact(), "interface could not be exact"); return ktip->cast_to_ptr_type(ftip->ptr()); } + // Interface klass type could be exact in opposite to interface type, + // return it here instead of incorrect Constant ptr J/L/Object (6894807). if (ftkp != NULL && ktkp != NULL && ftkp->is_loaded() && ftkp->klass()->is_interface() && + !ftkp->klass_is_exact() && // Keep exact interface klass ktkp->is_loaded() && !ktkp->klass()->is_interface()) { - // Happens in a CTW of rt.jar, 320-341, no extra flags return ktkp->cast_to_ptr_type(ftkp->ptr()); } diff -r 482f63894bb1 -r 44158f6d3b94 hotspot/test/compiler/6892265/Test.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/6892265/Test.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,65 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +/** + * @test + * @bug 6892265 + * @summary System.arraycopy unable to reference elements beyond Integer.MAX_VALUE bytes + * + * @run main/othervm Test + */ + +public class Test { + static final int NCOPY = 1; + static final int OVERFLOW = 1; + static int[] src2 = new int[NCOPY]; + static int[] dst2; + + static void test() { + int N; + int SIZE; + + N = Integer.MAX_VALUE/4 + OVERFLOW; + System.arraycopy(src2, 0, dst2, N, NCOPY); + System.arraycopy(dst2, N, src2, 0, NCOPY); + } + + public static void main(String[] args) { + try { + dst2 = new int[NCOPY + Integer.MAX_VALUE/4 + OVERFLOW]; + } catch (OutOfMemoryError e) { + System.exit(95); // Not enough memory + } + System.out.println("warmup"); + for (int i=0; i <11000; i++) { + test(); + } + System.out.println("start"); + for (int i=0; i <1000; i++) { + test(); + } + System.out.println("finish"); + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jaxp/.hgtags --- a/jaxp/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/jaxp/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ 6c0ccabb430dacdcd4479f8b197980d5da4eeb66 jdk7-b85 81c0f115bbe5d3bcf59864465b5eca5538567c79 jdk7-b86 8b493f1aa136d86de0885fcba15262c4fa2b1412 jdk7-b87 +d8ebd15910034f2ba50b2f129f959f86cca01419 jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 jaxws/.hgtags --- a/jaxws/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/jaxws/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ 8424512588ff95362c1f1e5f11c6efd4e7f7db6e jdk7-b85 512b0e924a5ae0c0b7ad326182cae0dc0e4d1aa8 jdk7-b86 3febd6fab2ac8ffddbaf7bed00d11290262af153 jdk7-b87 +8c666f8f3565974e301ccb58b7538912551a6e26 jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/.hgtags --- a/jdk/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ b396584a3e64988839cca21ea1f7fbdcc9248783 jdk7-b85 eae6e9ab26064d9ba0e7665dd646a1fd2506fcc1 jdk7-b86 2cafbbe9825e911a6ca6c17d9a18eb1f0bf0873c jdk7-b87 +b3c69282f6d3c90ec21056cd1ab70dc0c895b069 jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/VERSION --- a/jdk/make/sun/javazic/tzdata/VERSION Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/VERSION Wed Jul 05 17:09:51 2017 +0200 @@ -21,4 +21,4 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # -tzdata2010b +tzdata2010g diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/antarctica --- a/jdk/make/sun/javazic/tzdata/antarctica Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/antarctica Wed Jul 05 17:09:51 2017 +0200 @@ -79,6 +79,33 @@ Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 - +# These rules are stolen from the `australasia' file. +Rule AusAQ 1917 only - Jan 1 0:01 1:00 - +Rule AusAQ 1917 only - Mar 25 2:00 0 - +Rule AusAQ 1942 only - Jan 1 2:00 1:00 - +Rule AusAQ 1942 only - Mar 29 2:00 0 - +Rule AusAQ 1942 only - Sep 27 2:00 1:00 - +Rule AusAQ 1943 1944 - Mar lastSun 2:00 0 - +Rule AusAQ 1943 only - Oct 3 2:00 1:00 - +Rule ATAQ 1967 only - Oct Sun>=1 2:00s 1:00 - +Rule ATAQ 1968 only - Mar lastSun 2:00s 0 - +Rule ATAQ 1968 1985 - Oct lastSun 2:00s 1:00 - +Rule ATAQ 1969 1971 - Mar Sun>=8 2:00s 0 - +Rule ATAQ 1972 only - Feb lastSun 2:00s 0 - +Rule ATAQ 1973 1981 - Mar Sun>=1 2:00s 0 - +Rule ATAQ 1982 1983 - Mar lastSun 2:00s 0 - +Rule ATAQ 1984 1986 - Mar Sun>=1 2:00s 0 - +Rule ATAQ 1986 only - Oct Sun>=15 2:00s 1:00 - +Rule ATAQ 1987 1990 - Mar Sun>=15 2:00s 0 - +Rule ATAQ 1987 only - Oct Sun>=22 2:00s 1:00 - +Rule ATAQ 1988 1990 - Oct lastSun 2:00s 1:00 - +Rule ATAQ 1991 1999 - Oct Sun>=1 2:00s 1:00 - +Rule ATAQ 1991 2005 - Mar lastSun 2:00s 0 - +Rule ATAQ 2000 only - Aug lastSun 2:00s 1:00 - +Rule ATAQ 2001 max - Oct Sun>=1 2:00s 1:00 - +Rule ATAQ 2006 only - Apr Sun>=1 2:00s 0 - +Rule ATAQ 2007 only - Mar lastSun 2:00s 0 - +Rule ATAQ 2008 max - Apr Sun>=1 2:00s 0 - # Argentina - year-round bases # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05 @@ -120,20 +147,52 @@ # http://www.timeanddate.com/news/time/antarctica-new-times.html # +# From Steffen Thorsen (2010-03-10): +# We got these changes from the Australian Antarctic Division: +# - Macquarie Island will stay on UTC+11 for winter and therefore not +# switch back from daylight savings time when other parts of Australia do +# on 4 April. +# +# - Casey station reverted to its normal time of UTC+8 on 5 March 2010. +# The change to UTC+11 is being considered as a regular summer thing but +# has not been decided yet. +# +# - Davis station will revert to its normal time of UTC+7 at 10 March 2010 +# 20:00 UTC. +# +# - Mawson station stays on UTC+5. +# +# In addition to the Rule changes for Casey/Davis, it means that Macquarie +# will no longer be like Hobart and will have to have its own Zone created. +# +# Background: +# +# http://www.timeanddate.com/news/time/antartica-time-changes-2010.html +# + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Casey 0 - zzz 1969 8:00 - WST 2009 Oct 18 2:00 # Western (Aus) Standard Time - 11:00 - CAST # Casey Time + 11:00 - CAST 2010 Mar 5 2:00 + # Casey Time + 8:00 - WST Zone Antarctica/Davis 0 - zzz 1957 Jan 13 7:00 - DAVT 1964 Nov # Davis Time 0 - zzz 1969 Feb 7:00 - DAVT 2009 Oct 18 2:00 - 5:00 - DAVT + 5:00 - DAVT 2010 Mar 10 20:00u + 7:00 - DAVT Zone Antarctica/Mawson 0 - zzz 1954 Feb 13 6:00 - MAWT 2009 Oct 18 2:00 # Mawson Time 5:00 - MAWT +Zone Antarctica/Macquarie 0 - zzz 1911 + 10:00 - EST 1916 Oct 1 2:00 + 10:00 1:00 EST 1917 Feb + 10:00 AusAQ EST 1967 + 10:00 ATAQ EST 2010 Apr 4 3:00 + 11:00 - MIST # Macquarie Island Time # References: # # Casey Weather (1998-02-26) diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/asia --- a/jdk/make/sun/javazic/tzdata/asia Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/asia Wed Jul 05 17:09:51 2017 +0200 @@ -236,22 +236,20 @@ # 2010 midnight. The decision came at a cabinet meeting at the Prime # Minister's Office last night..." -# From Danvin Ruangchan (2009-12-24): -# ...the news mentions DST will be turned off again 7 months after March -# 31st on Oct 31, 2010. - -# From Arthur David Olson (2009-12-26): -# Indeed, "The government will advance again the Banglasdesh Standard -# Time by one one hour on March 31 next year by enforcing the Daylight -# Saving Time (DST) for seven months. It will continue till October 31 -# until further notice." I take that last sentence as the -# establishment of a rule. +# From Alexander Krivenyshev (2010-03-22): +# According to Bangladesh newspaper "The Daily Star," +# Cabinet cancels Daylight Saving Time +# +# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817 +# +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Dhaka 2009 only - Jun 19 23:00 1:00 S -Rule Dhaka 2010 only - Jan 1 0:00 0 - -Rule Dhaka 2010 max - Mar 31 23:00 1:00 S -Rule Dhaka 2010 max - Nov 1 0:00 0 - +Rule Dhaka 2009 only - Dec 31 23:59 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dhaka 6:01:40 - LMT 1890 @@ -2131,6 +2129,32 @@ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html # +# From Alexander Krivenyshev (2010-03-19): +# According to Voice of Palestine DST will last for 191 days, from March +# 26, 2010 till "the last Sunday before the tenth day of Tishri +# (October), each year" (October 03, 2010?) +# +# +# http://palvoice.org/forums/showthread.php?t=245697 +# +# (in Arabic) +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html +# + +# From Steffen Thorsen (2010-03-24): +# ...Ma'an News Agency reports that Hamas cabinet has decided it will +# start one day later, at 12:01am. Not sure if they really mean 12:01am or +# noon though: +# +# +# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178 +# +# (Ma'an News Agency) +# "At 12:01am Friday, clocks in Israel and the West Bank will change to +# 1:01am, while Gaza clocks will change at 12:01am Saturday morning." + # The rules for Egypt are stolen from the `africa' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S @@ -2148,7 +2172,8 @@ Rule Palestine 2006 only - Sep 22 0:00 0 - Rule Palestine 2007 only - Sep Thu>=8 2:00 0 - Rule Palestine 2008 only - Aug lastFri 2:00 0 - -Rule Palestine 2009 max - Mar lastFri 0:00 1:00 S +Rule Palestine 2009 only - Mar lastFri 0:00 1:00 S +Rule Palestine 2010 max - Mar lastSat 0:01 1:00 S Rule Palestine 2009 max - Sep Fri>=1 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -2440,9 +2465,18 @@ # Thursday of the month or the start of the last Friday of the month or # something else. For now, use the start of the last Friday. +# From Steffen Thorsen (2010-03-17): +# The "Syrian News Station" reported on 2010-03-16 that the Council of +# Ministers has decided that Syria will start DST on midnight Thursday +# 2010-04-01: (midnight between Thursday and Friday): +# +# http://sns.sy/sns/?path=news/read/11421 (Arabic) +# + Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S Rule Syria 2008 only - Nov 1 0:00 0 - -Rule Syria 2009 max - Mar lastFri 0:00 1:00 S +Rule Syria 2009 only - Mar lastFri 0:00 1:00 S +Rule Syria 2010 max - Apr Fri>=1 0:00 1:00 S Rule Syria 2009 max - Oct lastFri 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/australasia --- a/jdk/make/sun/javazic/tzdata/australasia Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/australasia Wed Jul 05 17:09:51 2017 +0200 @@ -289,11 +289,30 @@ # # http://www.fiji.gov.fj/publish/page_16198.shtml # + +# From Steffen Thorsen (2010-03-03): +# The Cabinet in Fiji has decided to end DST about a month early, on +# 2010-03-28 at 03:00. +# The plan is to observe DST again, from 2010-10-24 to sometime in March +# 2011 (last Sunday a good guess?). +# +# Official source: +# +# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166 +# +# +# A bit more background info here: +# +# http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html +# + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S Rule Fiji 1999 2000 - Feb lastSun 3:00 0 - Rule Fiji 2009 only - Nov 29 2:00 1:00 S -Rule Fiji 2010 only - Apr 25 3:00 0 - +Rule Fiji 2010 only - Mar lastSun 3:00 0 - +Rule Fiji 2010 only - Oct 24 2:00 1:00 S +Rule Fiji 2011 only - Mar lastSun 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva 12:00 Fiji FJ%sT # Fiji Time @@ -471,70 +490,30 @@ # Samoa -# From Alexander Krivenyshev (2008-12-06): -# The Samoa government (Western Samoa) may implement DST on the first Sunday of -# October 2009 (October 4, 2009) until the last Sunday of March 2010 (March 28, -# 2010). -# -# "Selected Committee reports to Cabinet on Daylight Saving Time", -# Government of Samoa: -# -# http://www.govt.ws/pr_article.cfm?pr_id=560 -# -# or -# -# http://www.worldtimezone.com/dst_news/dst_news_samoa01.html -# - -# From Steffen Thorsen (2009-08-27): -# Samoa's parliament passed the Daylight Saving Bill 2009, and will start -# daylight saving time on the first Sunday of October 2009 and end on the -# last Sunday of March 2010. We hope that the full text will be published -# soon, but we believe that the bill is only valid for 2009-2010. Samoa's -# Daylight Saving Act 2009 will be enforced as soon as the Head of State -# executes a proclamation publicizing this Act. +# From Steffen Thorsen (2009-10-16): +# We have been in contact with the government of Samoa again, and received +# the following info: # -# Some background information here, which will be updated once we have -# more details: +# "Cabinet has now approved Daylight Saving to be effected next year +# commencing from the last Sunday of September 2010 and conclude first +# Sunday of April 2011." +# +# Background info: # # http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html # - -# From Alexander Krivenyshev (2009-10-03): -# First, my deepest condolences to people of Samoa islands and all families and -# loved ones around the world who lost their lives in the earthquake and tsunami. # -# Considering the recent devastation on Samoa by earthquake and tsunami and that -# many government offices/ ministers are closed- not sure if "Daylight Saving -# Bill 2009" will be implemented in next few days- on October 4, 2009. -# -# Here is reply from Consulate-General of Samoa in New Zealand -# --------------------------- -# Consul General -# consulgeneral@samoaconsulate.org.nz -# -# Talofa Alexander, -# -# Thank you for your sympathy for our country but at this time we have not -# been informed about the Daylight Savings Time Change. Most Ministries in -# Apia are closed or relocating due to weather concerns. -# -# When we do find out if they are still proceeding with the time change we -# will advise you soonest. -# -# Kind Regards, -# Lana -# for: Consul General - -# From Steffen Thorsen (2009-10-05): -# We have called a hotel in Samoa and asked about local time there - they -# are still on standard time. +# Samoa's Daylight Saving Time Act 2009 is available here, but does not +# contain any dates: +# +# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf +# Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time - -11:00 - WST 2009 Oct 4 - -11:00 1:00 WSDT 2010 Mar 28 + -11:00 - WST 2010 Sep 26 + -11:00 1:00 WSDT 2011 Apr 3 -11:00 - WST # Solomon Is diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/europe --- a/jdk/make/sun/javazic/tzdata/europe Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/europe Wed Jul 05 17:09:51 2017 +0200 @@ -2063,7 +2063,9 @@ 3:00 Russia KUY%sT 1991 Mar 31 2:00s 2:00 Russia KUY%sT 1991 Sep 29 2:00s 3:00 - KUYT 1991 Oct 20 3:00 - 4:00 Russia SAM%sT # Samara Time + 4:00 Russia SAM%sT 2010 Mar 28 2:00s # Samara Time + 3:00 Russia SAM%sT + # # From Oscar van Vlijmen (2001-08-25): [This region consists of] # Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug, @@ -2216,7 +2218,8 @@ 11:00 - PETT 1930 Jun 21 # P-K Time 12:00 Russia PET%sT 1991 Mar 31 2:00s 11:00 Russia PET%sT 1992 Jan 19 2:00s - 12:00 Russia PET%sT + 12:00 Russia PET%sT 2010 Mar 28 2:00s + 11:00 Russia PET%sT # # Chukotskij avtonomnyj okrug Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2 @@ -2224,7 +2227,8 @@ 13:00 Russia ANA%sT 1982 Apr 1 0:00s 12:00 Russia ANA%sT 1991 Mar 31 2:00s 11:00 Russia ANA%sT 1992 Jan 19 2:00s - 12:00 Russia ANA%sT + 12:00 Russia ANA%sT 2010 Mar 28 2:00s + 11:00 Russia ANA%sT # Serbia # Zone NAME GMTOFF RULES FORMAT [UNTIL] diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/southamerica --- a/jdk/make/sun/javazic/tzdata/southamerica Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/southamerica Wed Jul 05 17:09:51 2017 +0200 @@ -1143,6 +1143,18 @@ # http://www.shoa.cl/noticias/2008/04hora/hora.htm # . +# From Angel Chiang (2010-03-04): +# Subject: DST in Chile exceptionally extended to 3 April due to earthquake +# +# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098 +# +# (in Spanish, last paragraph). +# +# This is breaking news. There should be more information available later. + +# From Arthur Daivd Olson (2010-03-06): +# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Chile 1927 1932 - Sep 1 0:00 1:00 S Rule Chile 1928 1932 - Apr 1 0:00 0 - @@ -1177,7 +1189,9 @@ # N.B.: the end of March 29 in Chile is March 30 in Universal time, # which is used below in specifying the transition. Rule Chile 2008 only - Mar 30 3:00u 0 - -Rule Chile 2009 max - Mar Sun>=9 3:00u 0 - +Rule Chile 2009 only - Mar Sun>=9 3:00u 0 - +Rule Chile 2010 only - Apr 4 3:00u 0 - +Rule Chile 2011 max - Mar Sun>=9 3:00u 0 - # IATA SSIM anomalies: (1992-02) says 1992-03-14; # (1996-09) says 1998-03-08. Ignore these. # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1386,8 +1400,24 @@ # Decree 1,867 (2004-03-05) # From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13) # -Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S -Rule Para 2005 max - Mar Sun>=8 0:00 0 - +Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S +Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - +# From Carlos Raul Perasso (2010-02-18): +# By decree number 3958 issued yesterday ( +# +# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf +# +# ) +# Paraguay changes its DST schedule, postponing the March rule to April and +# modifying the October date. The decree reads: +# ... +# Art. 1. It is hereby established that from the second Sunday of the month of +# April of this year (2010), the official time is to be set back 60 minutes, +# and that on the first Sunday of the month of October, it is to be set +# forward 60 minutes, in all the territory of the Paraguayan Republic. +# ... +Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S +Rule Para 2010 max - Apr Sun>=8 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Asuncion -3:50:40 - LMT 1890 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/javazic/tzdata/zone.tab --- a/jdk/make/sun/javazic/tzdata/zone.tab Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/javazic/tzdata/zone.tab Wed Jul 05 17:09:51 2017 +0200 @@ -66,6 +66,7 @@ AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I +AQ -5430+15857 Antarctica/Macquarie Macquarie Island Station, Macquarie Island AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF) AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN) @@ -351,7 +352,7 @@ RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad RU +5545+03735 Europe/Moscow Moscow+00 - west Russia RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea -RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia +RU +5312+05009 Europe/Samara Moscow - Samara, Udmurtia RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk @@ -362,8 +363,8 @@ RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island RU +5934+15048 Asia/Magadan Moscow+08 - Magadan -RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka -RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea +RU +5301+15839 Asia/Kamchatka Moscow+08 - Kamchatka +RU +6445+17729 Asia/Anadyr Moscow+08 - Bering Sea RW -0157+03004 Africa/Kigali SA +2438+04643 Asia/Riyadh SB -0932+16012 Pacific/Guadalcanal diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/nio/cs/FILES_java.gmk --- a/jdk/make/sun/nio/cs/FILES_java.gmk Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/nio/cs/FILES_java.gmk Wed Jul 05 17:09:51 2017 +0200 @@ -42,8 +42,6 @@ sun/io/ByteToCharBig5_Solaris.java \ sun/io/ByteToCharBig5_HKSCS.java \ sun/io/ByteToCharMS950_HKSCS.java \ - sun/io/ByteToCharHKSCS.java \ - sun/io/ByteToCharHKSCS_2001.java \ sun/io/ByteToCharGB18030.java \ sun/io/ByteToCharGB18030DB.java \ sun/io/ByteToCharCp037.java \ @@ -173,8 +171,6 @@ sun/io/CharToByteBig5.java \ sun/io/CharToByteBig5_Solaris.java \ sun/io/CharToByteBig5_HKSCS.java \ - sun/io/CharToByteHKSCS.java \ - sun/io/CharToByteHKSCS_2001.java \ sun/io/CharToByteMS950_HKSCS.java \ sun/io/CharToByteGB18030.java \ sun/io/CharToByteCp037.java \ @@ -374,6 +370,9 @@ sun/nio/cs/ext/MacUkraine.java \ sun/nio/cs/ext/TIS_620.java \ sun/nio/cs/ext/EUC_TWMapping.java \ + sun/nio/cs/ext/HKSCSMapping.java \ + sun/nio/cs/ext/HKSCS2001Mapping.java \ + sun/nio/cs/ext/HKSCS_XPMapping.java \ sun/nio/cs/ext/IBM1381.java \ sun/nio/cs/ext/IBM1383.java \ sun/nio/cs/ext/IBM930.java \ @@ -394,7 +393,8 @@ sun/nio/cs/ext/MS936.java \ sun/nio/cs/ext/MS949.java \ sun/nio/cs/ext/MS950.java \ - sun/nio/cs/ext/GBK.java + sun/nio/cs/ext/GBK.java \ + sun/nio/cs/ext/Big5.java FILES_java = $(FILES_src) $(FILES_gen_extcs) diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/sun/nio/cs/Makefile --- a/jdk/make/sun/nio/cs/Makefile Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/sun/nio/cs/Makefile Wed Jul 05 17:09:51 2017 +0200 @@ -93,7 +93,9 @@ $(MKDIR) -p $(GENCSEXT) $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) extsbcs $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) euctw \ - $(GENCSSRCDIR)/GenerateEUC_TW.java + $(GENCSSRCDIR)/EUC_TW.java + $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) hkscs \ + $(GENCSSRCDIR)/HKSCS.java $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) dbcs $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/Big5.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/Big5.c2b Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,8 @@ +#Add the following 5 characters which are duplicated +#or have conflicts with other characters. +0xA1C4 0xFF3F #REGWARN Fallback 0xA1C4 SPACING UNDERSCORE +0xA2AC 0x2571 #REGWARN Fallback 0xA2AC LT DIAG UP RIGHT TO LOW LEFT +0xA2AD 0x2572 #REGWARN Fallback 0xA2AD LT DIAG UP LEFT TO LOW RIGHT +0xA451 0x5341 #REGWARN Fallback 0xA451 HANGZHOU NUMERAL TEN +0xA4CA 0x5345 #REGWARN Fallback 0xA4CA HANGZHOU NUMERAL THIRTY +# diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/Big5.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/Big5.map Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,13837 @@ +# From Big5.b2c +# Added sb +# Added Big5.b2c-irreversible +# +0x00 0x0000 +0x01 0x0001 +0x02 0x0002 +0x03 0x0003 +0x04 0x0004 +0x05 0x0005 +0x06 0x0006 +0x07 0x0007 +0x08 0x0008 +0x09 0x0009 +0x0a 0x000a +0x0b 0x000b +0x0c 0x000c +0x0d 0x000d +0x0e 0x000e +0x0f 0x000f +0x10 0x0010 +0x11 0x0011 +0x12 0x0012 +0x13 0x0013 +0x14 0x0014 +0x15 0x0015 +0x16 0x0016 +0x17 0x0017 +0x18 0x0018 +0x19 0x0019 +0x1a 0x001a +0x1b 0x001b +0x1c 0x001c +0x1d 0x001d +0x1e 0x001e +0x1f 0x001f +0x20 0x0020 # SPACE +0x21 0x0021 # EXCLAMATION MARK +0x22 0x0022 # QUOTATION MARK +0x23 0x0023 # NUMBER SIGN +0x24 0x0024 # DOLLAR SIGN +0x25 0x0025 # PERCENT SIGN +0x26 0x0026 # AMPERSAND +0x27 0x0027 # APOSTROPHE +0x28 0x0028 # LEFT PARENTHESIS +0x29 0x0029 # RIGHT PARENTHESIS +0x2A 0x002A # ASTERISK +0x2B 0x002B # PLUS SIGN +0x2C 0x002C # COMMA +0x2D 0x002D # HYPHEN-MINUS +0x2E 0x002E # FULL STOP +0x2F 0x002F # SOLIDUS +0x30 0x0030 # DIGIT ZERO +0x31 0x0031 # DIGIT ONE +0x32 0x0032 # DIGIT TWO +0x33 0x0033 # DIGIT THREE +0x34 0x0034 # DIGIT FOUR +0x35 0x0035 # DIGIT FIVE +0x36 0x0036 # DIGIT SIX +0x37 0x0037 # DIGIT SEVEN +0x38 0x0038 # DIGIT EIGHT +0x39 0x0039 # DIGIT NINE +0x3A 0x003A # COLON +0x3B 0x003B # SEMICOLON +0x3C 0x003C # LESS-THAN SIGN +0x3D 0x003D # EQUALS SIGN +0x3E 0x003E # GREATER-THAN SIGN +0x3F 0x003F # QUESTION MARK +0x40 0x0040 # COMMERCIAL AT +0x41 0x0041 # LATIN CAPITAL LETTER A +0x42 0x0042 # LATIN CAPITAL LETTER B +0x43 0x0043 # LATIN CAPITAL LETTER C +0x44 0x0044 # LATIN CAPITAL LETTER D +0x45 0x0045 # LATIN CAPITAL LETTER E +0x46 0x0046 # LATIN CAPITAL LETTER F +0x47 0x0047 # LATIN CAPITAL LETTER G +0x48 0x0048 # LATIN CAPITAL LETTER H +0x49 0x0049 # LATIN CAPITAL LETTER I +0x4A 0x004A # LATIN CAPITAL LETTER J +0x4B 0x004B # LATIN CAPITAL LETTER K +0x4C 0x004C # LATIN CAPITAL LETTER L +0x4D 0x004D # LATIN CAPITAL LETTER M +0x4E 0x004E # LATIN CAPITAL LETTER N +0x4F 0x004F # LATIN CAPITAL LETTER O +0x50 0x0050 # LATIN CAPITAL LETTER P +0x51 0x0051 # LATIN CAPITAL LETTER Q +0x52 0x0052 # LATIN CAPITAL LETTER R +0x53 0x0053 # LATIN CAPITAL LETTER S +0x54 0x0054 # LATIN CAPITAL LETTER T +0x55 0x0055 # LATIN CAPITAL LETTER U +0x56 0x0056 # LATIN CAPITAL LETTER V +0x57 0x0057 # LATIN CAPITAL LETTER W +0x58 0x0058 # LATIN CAPITAL LETTER X +0x59 0x0059 # LATIN CAPITAL LETTER Y +0x5A 0x005A # LATIN CAPITAL LETTER Z +0x5B 0x005B # LEFT SQUARE BRACKET +0x5C 0x005C # WON SIGN +0x5D 0x005D # RIGHT SQUARE BRACKET +0x5E 0x005E # CIRCUMFLEX ACCENT +0x5F 0x005F # LOW LINE +0x60 0x0060 # GRAVE ACCENT +0x61 0x0061 # LATIN SMALL LETTER A +0x62 0x0062 # LATIN SMALL LETTER B +0x63 0x0063 # LATIN SMALL LETTER C +0x64 0x0064 # LATIN SMALL LETTER D +0x65 0x0065 # LATIN SMALL LETTER E +0x66 0x0066 # LATIN SMALL LETTER F +0x67 0x0067 # LATIN SMALL LETTER G +0x68 0x0068 # LATIN SMALL LETTER H +0x69 0x0069 # LATIN SMALL LETTER I +0x6A 0x006A # LATIN SMALL LETTER J +0x6B 0x006B # LATIN SMALL LETTER K +0x6C 0x006C # LATIN SMALL LETTER L +0x6D 0x006D # LATIN SMALL LETTER M +0x6E 0x006E # LATIN SMALL LETTER N +0x6F 0x006F # LATIN SMALL LETTER O +0x70 0x0070 # LATIN SMALL LETTER P +0x71 0x0071 # LATIN SMALL LETTER Q +0x72 0x0072 # LATIN SMALL LETTER R +0x73 0x0073 # LATIN SMALL LETTER S +0x74 0x0074 # LATIN SMALL LETTER T +0x75 0x0075 # LATIN SMALL LETTER U +0x76 0x0076 # LATIN SMALL LETTER V +0x77 0x0077 # LATIN SMALL LETTER W +0x78 0x0078 # LATIN SMALL LETTER X +0x79 0x0079 # LATIN SMALL LETTER Y +0x7A 0x007A # LATIN SMALL LETTER Z +0x7B 0x007B # LEFT CURLY BRACKET +0x7C 0x007C # VERTICAL LINE +0x7D 0x007D # RIGHT CURLY BRACKET +0x7E 0x007E # TILDE +0x7F 0x007F +# +0xA140 0x3000 # IDEOGRAPHIC SPACE +0xA141 0xFF0C # FULLWIDTH COMMA +0xA142 0x3001 # IDEOGRAPHIC COMMA +0xA143 0x3002 # IDEOGRAPHIC FULL STOP +0xA144 0xFF0E # FULLWIDTH FULL STOP +0xA145 0x2022 # BULLET +0xA146 0xFF1B # FULLWIDTH SEMICOLON +0xA147 0xFF1A # FULLWIDTH COLON +0xA148 0xFF1F # FULLWIDTH QUESTION MARK +0xA149 0xFF01 # FULLWIDTH EXCLAMATION MARK +0xA14A 0xFE30 # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +0xA14B 0x2026 # HORIZONTAL ELLIPSIS +0xA14C 0x2025 # TWO DOT LEADER +0xA14D 0xFE50 # SMALL COMMA +0xA14E 0xFF64 # HALFWIDTH IDEOGRAPHIC COMMA +0xA14F 0xFE52 # SMALL FULL STOP +0xA150 0x00B7 # MIDDLE DOT +0xA151 0xFE54 # SMALL SEMICOLON +0xA152 0xFE55 # SMALL COLON +0xA153 0xFE56 # SMALL QUESTION MARK +0xA154 0xFE57 # SMALL EXCLAMATION MARK +0xA155 0xFF5C # FULLWIDTH VERTICAL BAR +0xA156 0x2013 # EN DASH +0xA157 0xFE31 # PRESENTATION FORM FOR VERTICAL EM DASH +0xA158 0x2014 # EM DASH +0xA159 0xFE33 # PRESENTATION FORM FOR VERTICAL LOW LINE +0xA15B 0xFE34 # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +0xA15C 0xFE4F # WAVY LOW LINE +0xA15D 0xFF08 # FULLWIDTH LEFT PARENTHESIS +0xA15E 0xFF09 # FULLWIDTH RIGHT PARENTHESIS +0xA15F 0xFE35 # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +0xA160 0xFE36 # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +0xA161 0xFF5B # FULLWIDTH LEFT CURLY BRACKET +0xA162 0xFF5D # FULLWIDTH RIGHT CURLY BRACKET +0xA163 0xFE37 # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +0xA164 0xFE38 # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +0xA165 0x3014 # LEFT TORTOISE SHELL BRACKET +0xA166 0x3015 # RIGHT TORTOISE SHELL BRACKET +0xA167 0xFE39 # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +0xA168 0xFE3A # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +0xA169 0x3010 # LEFT BLACK LENTICULAR BRACKET +0xA16A 0x3011 # RIGHT BLACK LENTICULAR BRACKET +0xA16B 0xFE3B # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +0xA16C 0xFE3C # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +0xA16D 0x300A # LEFT DOUBLE ANGLE BRACKET +0xA16E 0x300B # RIGHT DOUBLE ANGLE BRACKET +0xA16F 0xFE3D # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +0xA170 0xFE3E # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +0xA171 0x3008 # LEFT ANGLE BRACKET +0xA172 0x3009 # RIGHT ANGLE BRACKET +0xA173 0xFE3F # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +0xA174 0xFE40 # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +0xA175 0x300C # LEFT CORNER BRACKET +0xA176 0x300D # RIGHT CORNER BRACKET +0xA177 0xFE41 # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +0xA178 0xFE42 # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +0xA179 0x300E # LEFT WHITE CORNER BRACKET +0xA17A 0x300F # RIGHT WHITE CORNER BRACKET +0xA17B 0xFE43 # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +0xA17C 0xFE44 # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +0xA17D 0xFE59 # SMALL LEFT PARENTHESIS +0xA17E 0xFE5A # SMALL RIGHT PARENTHESIS +0xA1A1 0xFE5B # SMALL LEFT CURLY BRACKET +0xA1A2 0xFE5C # SMALL RIGHT CURLY BRACKET +0xA1A3 0xFE5D # SMALL LEFT TORTOISE SHELL BRACKET +0xA1A4 0xFE5E # SMALL RIGHT TORTOISE SHELL BRACKET +0xA1A5 0x2018 # LEFT SINGLE QUOTATION MARK +0xA1A6 0x2019 # RIGHT SINGLE QUOTATION MARK +0xA1A7 0x201C # LEFT DOUBLE QUOTATION MARK +0xA1A8 0x201D # RIGHT DOUBLE QUOTATION MARK +0xA1A9 0x301D # REVERSED DOUBLE PRIME QUOTATION MARK +0xA1AA 0x301E # DOUBLE PRIME QUOTATION MARK +0xA1AB 0x2035 # REVERSED PRIME +0xA1AC 0x2032 # PRIME +0xA1AD 0xFF03 # FULLWIDTH NUMBER SIGN +0xA1AE 0xFF06 # FULLWIDTH AMPERSAND +0xA1AF 0xFF0A # FULLWIDTH ASTERISK +0xA1B0 0x203B # REFERENCE MARK +0xA1B1 0x00A7 # SECTION SIGN +0xA1B2 0x3003 # DITTO MARK +0xA1B3 0x25CB # WHITE CIRCLE +0xA1B4 0x25CF # BLACK CIRCLE +0xA1B5 0x25B3 # WHITE UP-POINTING TRIANGLE +0xA1B6 0x25B2 # BLACK UP-POINTING TRIANGLE +0xA1B7 0x25CE # BULLSEYE +0xA1B8 0x2606 # WHITE STAR +0xA1B9 0x2605 # BLACK STAR +0xA1BA 0x25C7 # WHITE DIAMOND +0xA1BB 0x25C6 # BLACK DIAMOND +0xA1BC 0x25A1 # WHITE SQUARE +0xA1BD 0x25A0 # BLACK SQUARE +0xA1BE 0x25BD # WHITE DOWN-POINTING TRIANGLE +0xA1BF 0x25BC # BLACK DOWN-POINTING TRIANGLE +0xA1C0 0x32A3 # CIRCLED IDEOGRAPH CORRECT +0xA1C1 0x2105 # CARE OF +0xA1C2 0x203E # OVERLINE +0xA1C6 0xFE49 # DASHED OVERLINE +0xA1C7 0xFE4A # CENTRELINE OVERLINE +0xA1C8 0xFE4D # DASHED LOW LINE +0xA1C9 0xFE4E # CENTRELINE LOW LINE +0xA1CA 0xFE4B # WAVY OVERLINE +0xA1CB 0xFE4C # DOUBLE WAVY OVERLINE +0xA1CC 0xFE5F # SMALL NUMBER SIGN +0xA1CD 0xFE60 # SMALL AMPERSAND +0xA1CE 0xFE61 # SMALL ASTERISK +0xA1CF 0xFF0B # FULLWIDTH PLUS SIGN +0xA1D0 0xFF0D # FULLWIDTH HYPHEN-MINUS +0xA1D1 0x00D7 # MULTIPLICATION SIGN +0xA1D2 0x00F7 # DIVISION SIGN +0xA1D3 0x00B1 # PLUS-MINUS SIGN +0xA1D4 0x221A # SQUARE ROOT +0xA1D5 0xFF1C # FULLWIDTH LESS-THAN SIGN +0xA1D6 0xFF1E # FULLWIDTH GREATER-THAN SIGN +0xA1D7 0xFF1D # FULLWIDTH EQUALS SIGN +0xA1D8 0x2266 # LESS THAN OVER EQUAL TO +0xA1D9 0x2267 # GREATER THAN OVER EQUAL TO +0xA1DA 0x2260 # NOT EQUAL TO +0xA1DB 0x221E # INFINITY +0xA1DC 0x2252 # APPROXIMATELY EQUAL TO OR THE IMAGE OF +0xA1DD 0x2261 # IDENTICAL TO +0xA1DE 0xFE62 # SMALL PLUS SIGN +0xA1DF 0xFE63 # SMALL HYPHEN-MINUS +0xA1E0 0xFE64 # SMALL LESS-THAN SIGN +0xA1E1 0xFE65 # SMALL GREATER-THAN SIGN +0xA1E2 0xFE66 # SMALL EQUALS SIGN +0xA1E3 0x223C # TILDE OPERATOR +0xA1E4 0x2229 # INTERSECTION +0xA1E5 0x222A # UNION +0xA1E6 0x22A5 # UP TACK +0xA1E7 0x2220 # ANGLE +0xA1E8 0x221F # RIGHT ANGLE +0xA1E9 0x22BF # RIGHT TRIANGLE +0xA1EA 0x33D2 # SQUARE LOG +0xA1EB 0x33D1 # SQUARE LN +0xA1EC 0x222B # INTEGRAL +0xA1ED 0x222E # CONTOUR INTEGRAL +0xA1EE 0x2235 # BECAUSE +0xA1EF 0x2234 # THEREFORE +0xA1F0 0x2640 # FEMALE SIGN +0xA1F1 0x2642 # MALE SIGN +0xA1F2 0x2641 # EARTH +0xA1F3 0x2609 # SUN +0xA1F4 0x2191 # UPWARDS ARROW +0xA1F5 0x2193 # DOWNWARDS ARROW +0xA1F6 0x2190 # LEFTWARDS ARROW +0xA1F7 0x2192 # RIGHTWARDS ARROW +0xA1F8 0x2196 # NORTH WEST ARROW +0xA1F9 0x2197 # NORTH EAST ARROW +0xA1FA 0x2199 # SOUTH WEST ARROW +0xA1FB 0x2198 # SOUTH EAST ARROW +0xA1FC 0x2225 # PARALLEL TO +0xA1FD 0x2223 # DIVIDES +0xA241 0xFF0F # FULLWIDTH SOLIDUS +0xA242 0xFF3C # FULLWIDTH REVERSE SOLIDUS +0xA243 0xFF04 # FULLWIDTH DOLLAR SIGN +0xA244 0x00A5 # YEN SIGN +0xA245 0x3012 # POSTAL MARK +0xA246 0x00A2 # CENT SIGN +0xA247 0x00A3 # POUND SIGN +0xA248 0xFF05 # FULLWIDTH PERCENT SIGN +0xA249 0xFF20 # FULLWIDTH COMMERCIAL AT +0xA24A 0x2103 # DEGREE CELSIUS +0xA24B 0x2109 # DEGREE FAHRENHEIT +0xA24C 0xFE69 # SMALL DOLLAR SIGN +0xA24D 0xFE6A # SMALL PERCENT SIGN +0xA24E 0xFE6B # SMALL COMMERCIAL AT +0xA24F 0x33D5 # SQUARE MIL +0xA250 0x339C # SQUARE MM +0xA251 0x339D # SQUARE CM +0xA252 0x339E # SQUARE KM +0xA253 0x33CE # SQUARE KM CAPITAL +0xA254 0x33A1 # SQUARE M SQUARED +0xA255 0x338E # SQUARE MG +0xA256 0x338F # SQUARE KG +0xA257 0x33C4 # SQUARE CC +0xA258 0x00B0 # DEGREE SIGN +0xA259 0x5159 # +0xA25A 0x515B # +0xA25B 0x515E # +0xA25C 0x515D # +0xA25D 0x5161 # +0xA25E 0x5163 # +0xA25F 0x55E7 # +0xA260 0x74E9 # +0xA261 0x7CCE # +0xA262 0x2581 # LOWER ONE EIGHTH BLOCK +0xA263 0x2582 # LOWER ONE QUARTER BLOCK +0xA264 0x2583 # LOWER THREE EIGHTHS BLOCK +0xA265 0x2584 # LOWER HALF BLOCK +0xA266 0x2585 # LOWER FIVE EIGHTHS BLOCK +0xA267 0x2586 # LOWER THREE QUARTERS BLOCK +0xA268 0x2587 # LOWER SEVEN EIGHTHS BLOCK +0xA269 0x2588 # FULL BLOCK +0xA26A 0x258F # LEFT ONE EIGHTH BLOCK +0xA26B 0x258E # LEFT ONE QUARTER BLOCK +0xA26C 0x258D # LEFT THREE EIGHTHS BLOCK +0xA26D 0x258C # LEFT HALF BLOCK +0xA26E 0x258B # LEFT FIVE EIGHTHS BLOCK +0xA26F 0x258A # LEFT THREE QUARTERS BLOCK +0xA270 0x2589 # LEFT SEVEN EIGHTHS BLOCK +0xA271 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xA272 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xA273 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xA274 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xA275 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xA276 0x2594 # UPPER ONE EIGHTH BLOCK +0xA277 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL +0xA278 0x2502 # BOX DRAWINGS LIGHT VERTICAL +0xA279 0x2595 # RIGHT ONE EIGHTH BLOCK +0xA27A 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT +0xA27B 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT +0xA27C 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT +0xA27D 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT +0xA27E 0x256D # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT +0xA2A1 0x256E # BOX DRAWINGS LIGHT ARC DOWN AND LEFT +0xA2A2 0x2570 # BOX DRAWINGS LIGHT ARC UP AND RIGHT +0xA2A3 0x256F # BOX DRAWINGS LIGHT ARC UP AND LEFT +0xA2A4 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL +0xA2A5 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xA2A6 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xA2A7 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xA2A8 0x25E2 # BLACK LOWER RIGHT TRIANGLE +0xA2A9 0x25E3 # BLACK LOWER LEFT TRIANGLE +0xA2AA 0x25E5 # BLACK UPPER RIGHT TRIANGLE +0xA2AB 0x25E4 # BLACK UPPER LEFT TRIANGLE +0xA2AE 0x2573 # BOX DRAWINGS LIGHT DIAGONAL CROSS +0xA2AF 0xFF10 # FULLWIDTH DIGIT ZERO +0xA2B0 0xFF11 # FULLWIDTH DIGIT ONE +0xA2B1 0xFF12 # FULLWIDTH DIGIT TWO +0xA2B2 0xFF13 # FULLWIDTH DIGIT THREE +0xA2B3 0xFF14 # FULLWIDTH DIGIT FOUR +0xA2B4 0xFF15 # FULLWIDTH DIGIT FIVE +0xA2B5 0xFF16 # FULLWIDTH DIGIT SIX +0xA2B6 0xFF17 # FULLWIDTH DIGIT SEVEN +0xA2B7 0xFF18 # FULLWIDTH DIGIT EIGHT +0xA2B8 0xFF19 # FULLWIDTH DIGIT NINE +0xA2B9 0x2160 # ROMAN NUMERAL ONE +0xA2BA 0x2161 # ROMAN NUMERAL TWO +0xA2BB 0x2162 # ROMAN NUMERAL THREE +0xA2BC 0x2163 # ROMAN NUMERAL FOUR +0xA2BD 0x2164 # ROMAN NUMERAL FIVE +0xA2BE 0x2165 # ROMAN NUMERAL SIX +0xA2BF 0x2166 # ROMAN NUMERAL SEVEN +0xA2C0 0x2167 # ROMAN NUMERAL EIGHT +0xA2C1 0x2168 # ROMAN NUMERAL NINE +0xA2C2 0x2169 # ROMAN NUMERAL TEN +0xA2C3 0x3021 # HANGZHOU NUMERAL ONE +0xA2C4 0x3022 # HANGZHOU NUMERAL TWO +0xA2C5 0x3023 # HANGZHOU NUMERAL THREE +0xA2C6 0x3024 # HANGZHOU NUMERAL FOUR +0xA2C7 0x3025 # HANGZHOU NUMERAL FIVE +0xA2C8 0x3026 # HANGZHOU NUMERAL SIX +0xA2C9 0x3027 # HANGZHOU NUMERAL SEVEN +0xA2CA 0x3028 # HANGZHOU NUMERAL EIGHT +0xA2CB 0x3029 # HANGZHOU NUMERAL NINE +0xA2CD 0x5344 # +0xA2CF 0xFF21 # FULLWIDTH LATIN CAPITAL LETTER A +0xA2D0 0xFF22 # FULLWIDTH LATIN CAPITAL LETTER B +0xA2D1 0xFF23 # FULLWIDTH LATIN CAPITAL LETTER C +0xA2D2 0xFF24 # FULLWIDTH LATIN CAPITAL LETTER D +0xA2D3 0xFF25 # FULLWIDTH LATIN CAPITAL LETTER E +0xA2D4 0xFF26 # FULLWIDTH LATIN CAPITAL LETTER F +0xA2D5 0xFF27 # FULLWIDTH LATIN CAPITAL LETTER G +0xA2D6 0xFF28 # FULLWIDTH LATIN CAPITAL LETTER H +0xA2D7 0xFF29 # FULLWIDTH LATIN CAPITAL LETTER I +0xA2D8 0xFF2A # FULLWIDTH LATIN CAPITAL LETTER J +0xA2D9 0xFF2B # FULLWIDTH LATIN CAPITAL LETTER K +0xA2DA 0xFF2C # FULLWIDTH LATIN CAPITAL LETTER L +0xA2DB 0xFF2D # FULLWIDTH LATIN CAPITAL LETTER M +0xA2DC 0xFF2E # FULLWIDTH LATIN CAPITAL LETTER N +0xA2DD 0xFF2F # FULLWIDTH LATIN CAPITAL LETTER O +0xA2DE 0xFF30 # FULLWIDTH LATIN CAPITAL LETTER P +0xA2DF 0xFF31 # FULLWIDTH LATIN CAPITAL LETTER Q +0xA2E0 0xFF32 # FULLWIDTH LATIN CAPITAL LETTER R +0xA2E1 0xFF33 # FULLWIDTH LATIN CAPITAL LETTER S +0xA2E2 0xFF34 # FULLWIDTH LATIN CAPITAL LETTER T +0xA2E3 0xFF35 # FULLWIDTH LATIN CAPITAL LETTER U +0xA2E4 0xFF36 # FULLWIDTH LATIN CAPITAL LETTER V +0xA2E5 0xFF37 # FULLWIDTH LATIN CAPITAL LETTER W +0xA2E6 0xFF38 # FULLWIDTH LATIN CAPITAL LETTER X +0xA2E7 0xFF39 # FULLWIDTH LATIN CAPITAL LETTER Y +0xA2E8 0xFF3A # FULLWIDTH LATIN CAPITAL LETTER Z +0xA2E9 0xFF41 # FULLWIDTH LATIN SMALL LETTER A +0xA2EA 0xFF42 # FULLWIDTH LATIN SMALL LETTER B +0xA2EB 0xFF43 # FULLWIDTH LATIN SMALL LETTER C +0xA2EC 0xFF44 # FULLWIDTH LATIN SMALL LETTER D +0xA2ED 0xFF45 # FULLWIDTH LATIN SMALL LETTER E +0xA2EE 0xFF46 # FULLWIDTH LATIN SMALL LETTER F +0xA2EF 0xFF47 # FULLWIDTH LATIN SMALL LETTER G +0xA2F0 0xFF48 # FULLWIDTH LATIN SMALL LETTER H +0xA2F1 0xFF49 # FULLWIDTH LATIN SMALL LETTER I +0xA2F2 0xFF4A # FULLWIDTH LATIN SMALL LETTER J +0xA2F3 0xFF4B # FULLWIDTH LATIN SMALL LETTER K +0xA2F4 0xFF4C # FULLWIDTH LATIN SMALL LETTER L +0xA2F5 0xFF4D # FULLWIDTH LATIN SMALL LETTER M +0xA2F6 0xFF4E # FULLWIDTH LATIN SMALL LETTER N +0xA2F7 0xFF4F # FULLWIDTH LATIN SMALL LETTER O +0xA2F8 0xFF50 # FULLWIDTH LATIN SMALL LETTER P +0xA2F9 0xFF51 # FULLWIDTH LATIN SMALL LETTER Q +0xA2FA 0xFF52 # FULLWIDTH LATIN SMALL LETTER R +0xA2FB 0xFF53 # FULLWIDTH LATIN SMALL LETTER S +0xA2FC 0xFF54 # FULLWIDTH LATIN SMALL LETTER T +0xA2FD 0xFF55 # FULLWIDTH LATIN SMALL LETTER U +0xA2FE 0xFF56 # FULLWIDTH LATIN SMALL LETTER V +0xA340 0xFF57 # FULLWIDTH LATIN SMALL LETTER W +0xA341 0xFF58 # FULLWIDTH LATIN SMALL LETTER X +0xA342 0xFF59 # FULLWIDTH LATIN SMALL LETTER Y +0xA343 0xFF5A # FULLWIDTH LATIN SMALL LETTER Z +0xA344 0x0391 # GREEK CAPITAL LETTER ALPHA +0xA345 0x0392 # GREEK CAPITAL LETTER BETA +0xA346 0x0393 # GREEK CAPITAL LETTER GAMMA +0xA347 0x0394 # GREEK CAPITAL LETTER DELTA +0xA348 0x0395 # GREEK CAPITAL LETTER EPSILON +0xA349 0x0396 # GREEK CAPITAL LETTER ZETA +0xA34A 0x0397 # GREEK CAPITAL LETTER ETA +0xA34B 0x0398 # GREEK CAPITAL LETTER THETA +0xA34C 0x0399 # GREEK CAPITAL LETTER IOTA +0xA34D 0x039A # GREEK CAPITAL LETTER KAPPA +0xA34E 0x039B # GREEK CAPITAL LETTER LAMDA +0xA34F 0x039C # GREEK CAPITAL LETTER MU +0xA350 0x039D # GREEK CAPITAL LETTER NU +0xA351 0x039E # GREEK CAPITAL LETTER XI +0xA352 0x039F # GREEK CAPITAL LETTER OMICRON +0xA353 0x03A0 # GREEK CAPITAL LETTER PI +0xA354 0x03A1 # GREEK CAPITAL LETTER RHO +0xA355 0x03A3 # GREEK CAPITAL LETTER SIGMA +0xA356 0x03A4 # GREEK CAPITAL LETTER TAU +0xA357 0x03A5 # GREEK CAPITAL LETTER UPSILON +0xA358 0x03A6 # GREEK CAPITAL LETTER PHI +0xA359 0x03A7 # GREEK CAPITAL LETTER CHI +0xA35A 0x03A8 # GREEK CAPITAL LETTER PSI +0xA35B 0x03A9 # GREEK CAPITAL LETTER OMEGA +0xA35C 0x03B1 # GREEK SMALL LETTER ALPHA +0xA35D 0x03B2 # GREEK SMALL LETTER BETA +0xA35E 0x03B3 # GREEK SMALL LETTER GAMMA +0xA35F 0x03B4 # GREEK SMALL LETTER DELTA +0xA360 0x03B5 # GREEK SMALL LETTER EPSILON +0xA361 0x03B6 # GREEK SMALL LETTER ZETA +0xA362 0x03B7 # GREEK SMALL LETTER ETA +0xA363 0x03B8 # GREEK SMALL LETTER THETA +0xA364 0x03B9 # GREEK SMALL LETTER IOTA +0xA365 0x03BA # GREEK SMALL LETTER KAPPA +0xA366 0x03BB # GREEK SMALL LETTER LAMDA +0xA367 0x03BC # GREEK SMALL LETTER MU +0xA368 0x03BD # GREEK SMALL LETTER NU +0xA369 0x03BE # GREEK SMALL LETTER XI +0xA36A 0x03BF # GREEK SMALL LETTER OMICRON +0xA36B 0x03C0 # GREEK SMALL LETTER PI +0xA36C 0x03C1 # GREEK SMALL LETTER RHO +0xA36D 0x03C3 # GREEK SMALL LETTER SIGMA +0xA36E 0x03C4 # GREEK SMALL LETTER TAU +0xA36F 0x03C5 # GREEK SMALL LETTER UPSILON +0xA370 0x03C6 # GREEK SMALL LETTER PHI +0xA371 0x03C7 # GREEK SMALL LETTER CHI +0xA372 0x03C8 # GREEK SMALL LETTER PSI +0xA373 0x03C9 # GREEK SMALL LETTER OMEGA +0xA374 0x3105 # BOPOMOFO LETTER B +0xA375 0x3106 # BOPOMOFO LETTER P +0xA376 0x3107 # BOPOMOFO LETTER M +0xA377 0x3108 # BOPOMOFO LETTER F +0xA378 0x3109 # BOPOMOFO LETTER D +0xA379 0x310A # BOPOMOFO LETTER T +0xA37A 0x310B # BOPOMOFO LETTER N +0xA37B 0x310C # BOPOMOFO LETTER L +0xA37C 0x310D # BOPOMOFO LETTER G +0xA37D 0x310E # BOPOMOFO LETTER K +0xA37E 0x310F # BOPOMOFO LETTER H +0xA3A1 0x3110 # BOPOMOFO LETTER J +0xA3A2 0x3111 # BOPOMOFO LETTER Q +0xA3A3 0x3112 # BOPOMOFO LETTER X +0xA3A4 0x3113 # BOPOMOFO LETTER ZH +0xA3A5 0x3114 # BOPOMOFO LETTER CH +0xA3A6 0x3115 # BOPOMOFO LETTER SH +0xA3A7 0x3116 # BOPOMOFO LETTER R +0xA3A8 0x3117 # BOPOMOFO LETTER Z +0xA3A9 0x3118 # BOPOMOFO LETTER C +0xA3AA 0x3119 # BOPOMOFO LETTER S +0xA3AB 0x311A # BOPOMOFO LETTER A +0xA3AC 0x311B # BOPOMOFO LETTER O +0xA3AD 0x311C # BOPOMOFO LETTER E +0xA3AE 0x311D # BOPOMOFO LETTER EH +0xA3AF 0x311E # BOPOMOFO LETTER AI +0xA3B0 0x311F # BOPOMOFO LETTER EI +0xA3B1 0x3120 # BOPOMOFO LETTER AU +0xA3B2 0x3121 # BOPOMOFO LETTER OU +0xA3B3 0x3122 # BOPOMOFO LETTER AN +0xA3B4 0x3123 # BOPOMOFO LETTER EN +0xA3B5 0x3124 # BOPOMOFO LETTER ANG +0xA3B6 0x3125 # BOPOMOFO LETTER ENG +0xA3B7 0x3126 # BOPOMOFO LETTER ER +0xA3B8 0x3127 # BOPOMOFO LETTER I +0xA3B9 0x3128 # BOPOMOFO LETTER U +0xA3BA 0x3129 # BOPOMOFO LETTER IU +0xA3BB 0x02D9 # DOT ABOVE (Mandarin Chinese light tone) +0xA3BC 0x02C9 # MODIFIER LETTER MACRON (Mandarin Chinese first tone) +0xA3BD 0x02CA # MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone) +0xA3BE 0x02C7 # CARON (Mandarin Chinese third tone) +0xA3BF 0x02CB # MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone) +0xA440 0x4E00 # +0xA441 0x4E59 # +0xA442 0x4E01 # +0xA443 0x4E03 # +0xA444 0x4E43 # +0xA445 0x4E5D # +0xA446 0x4E86 # +0xA447 0x4E8C # +0xA448 0x4EBA # +0xA449 0x513F # +0xA44A 0x5165 # +0xA44B 0x516B # +0xA44C 0x51E0 # +0xA44D 0x5200 # +0xA44E 0x5201 # +0xA44F 0x529B # +0xA450 0x5315 # +0xA452 0x535C # +0xA453 0x53C8 # +0xA454 0x4E09 # +0xA455 0x4E0B # +0xA456 0x4E08 # +0xA457 0x4E0A # +0xA458 0x4E2B # +0xA459 0x4E38 # +0xA45A 0x51E1 # +0xA45B 0x4E45 # +0xA45C 0x4E48 # +0xA45D 0x4E5F # +0xA45E 0x4E5E # +0xA45F 0x4E8E # +0xA460 0x4EA1 # +0xA461 0x5140 # +0xA462 0x5203 # +0xA463 0x52FA # +0xA464 0x5343 # +0xA465 0x53C9 # +0xA466 0x53E3 # +0xA467 0x571F # +0xA468 0x58EB # +0xA469 0x5915 # +0xA46A 0x5927 # +0xA46B 0x5973 # +0xA46C 0x5B50 # +0xA46D 0x5B51 # +0xA46E 0x5B53 # +0xA46F 0x5BF8 # +0xA470 0x5C0F # +0xA471 0x5C22 # +0xA472 0x5C38 # +0xA473 0x5C71 # +0xA474 0x5DDD # +0xA475 0x5DE5 # +0xA476 0x5DF1 # +0xA477 0x5DF2 # +0xA478 0x5DF3 # +0xA479 0x5DFE # +0xA47A 0x5E72 # +0xA47B 0x5EFE # +0xA47C 0x5F0B # +0xA47D 0x5F13 # +0xA47E 0x624D # +0xA4A1 0x4E11 # +0xA4A2 0x4E10 # +0xA4A3 0x4E0D # +0xA4A4 0x4E2D # +0xA4A5 0x4E30 # +0xA4A6 0x4E39 # +0xA4A7 0x4E4B # +0xA4A8 0x5C39 # +0xA4A9 0x4E88 # +0xA4AA 0x4E91 # +0xA4AB 0x4E95 # +0xA4AC 0x4E92 # +0xA4AD 0x4E94 # +0xA4AE 0x4EA2 # +0xA4AF 0x4EC1 # +0xA4B0 0x4EC0 # +0xA4B1 0x4EC3 # +0xA4B2 0x4EC6 # +0xA4B3 0x4EC7 # +0xA4B4 0x4ECD # +0xA4B5 0x4ECA # +0xA4B6 0x4ECB # +0xA4B7 0x4EC4 # +0xA4B8 0x5143 # +0xA4B9 0x5141 # +0xA4BA 0x5167 # +0xA4BB 0x516D # +0xA4BC 0x516E # +0xA4BD 0x516C # +0xA4BE 0x5197 # +0xA4BF 0x51F6 # +0xA4C0 0x5206 # +0xA4C1 0x5207 # +0xA4C2 0x5208 # +0xA4C3 0x52FB # +0xA4C4 0x52FE # +0xA4C5 0x52FF # +0xA4C6 0x5316 # +0xA4C7 0x5339 # +0xA4C8 0x5348 # +0xA4C9 0x5347 # +0xA4CB 0x535E # +0xA4CC 0x5384 # +0xA4CD 0x53CB # +0xA4CE 0x53CA # +0xA4CF 0x53CD # +0xA4D0 0x58EC # +0xA4D1 0x5929 # +0xA4D2 0x592B # +0xA4D3 0x592A # +0xA4D4 0x592D # +0xA4D5 0x5B54 # +0xA4D6 0x5C11 # +0xA4D7 0x5C24 # +0xA4D8 0x5C3A # +0xA4D9 0x5C6F # +0xA4DA 0x5DF4 # +0xA4DB 0x5E7B # +0xA4DC 0x5EFF # +0xA4DD 0x5F14 # +0xA4DE 0x5F15 # +0xA4DF 0x5FC3 # +0xA4E0 0x6208 # +0xA4E1 0x6236 # +0xA4E2 0x624B # +0xA4E3 0x624E # +0xA4E4 0x652F # +0xA4E5 0x6587 # +0xA4E6 0x6597 # +0xA4E7 0x65A4 # +0xA4E8 0x65B9 # +0xA4E9 0x65E5 # +0xA4EA 0x66F0 # +0xA4EB 0x6708 # +0xA4EC 0x6728 # +0xA4ED 0x6B20 # +0xA4EE 0x6B62 # +0xA4EF 0x6B79 # +0xA4F0 0x6BCB # +0xA4F1 0x6BD4 # +0xA4F2 0x6BDB # +0xA4F3 0x6C0F # +0xA4F4 0x6C34 # +0xA4F5 0x706B # +0xA4F6 0x722A # +0xA4F7 0x7236 # +0xA4F8 0x723B # +0xA4F9 0x7247 # +0xA4FA 0x7259 # +0xA4FB 0x725B # +0xA4FC 0x72AC # +0xA4FD 0x738B # +0xA4FE 0x4E19 # +0xA540 0x4E16 # +0xA541 0x4E15 # +0xA542 0x4E14 # +0xA543 0x4E18 # +0xA544 0x4E3B # +0xA545 0x4E4D # +0xA546 0x4E4F # +0xA547 0x4E4E # +0xA548 0x4EE5 # +0xA549 0x4ED8 # +0xA54A 0x4ED4 # +0xA54B 0x4ED5 # +0xA54C 0x4ED6 # +0xA54D 0x4ED7 # +0xA54E 0x4EE3 # +0xA54F 0x4EE4 # +0xA550 0x4ED9 # +0xA551 0x4EDE # +0xA552 0x5145 # +0xA553 0x5144 # +0xA554 0x5189 # +0xA555 0x518A # +0xA556 0x51AC # +0xA557 0x51F9 # +0xA558 0x51FA # +0xA559 0x51F8 # +0xA55A 0x520A # +0xA55B 0x52A0 # +0xA55C 0x529F # +0xA55D 0x5305 # +0xA55E 0x5306 # +0xA55F 0x5317 # +0xA560 0x531D # +0xA561 0x4EDF # +0xA562 0x534A # +0xA563 0x5349 # +0xA564 0x5361 # +0xA565 0x5360 # +0xA566 0x536F # +0xA567 0x536E # +0xA568 0x53BB # +0xA569 0x53EF # +0xA56A 0x53E4 # +0xA56B 0x53F3 # +0xA56C 0x53EC # +0xA56D 0x53EE # +0xA56E 0x53E9 # +0xA56F 0x53E8 # +0xA570 0x53FC # +0xA571 0x53F8 # +0xA572 0x53F5 # +0xA573 0x53EB # +0xA574 0x53E6 # +0xA575 0x53EA # +0xA576 0x53F2 # +0xA577 0x53F1 # +0xA578 0x53F0 # +0xA579 0x53E5 # +0xA57A 0x53ED # +0xA57B 0x53FB # +0xA57C 0x56DB # +0xA57D 0x56DA # +0xA57E 0x5916 # +0xA5A1 0x592E # +0xA5A2 0x5931 # +0xA5A3 0x5974 # +0xA5A4 0x5976 # +0xA5A5 0x5B55 # +0xA5A6 0x5B83 # +0xA5A7 0x5C3C # +0xA5A8 0x5DE8 # +0xA5A9 0x5DE7 # +0xA5AA 0x5DE6 # +0xA5AB 0x5E02 # +0xA5AC 0x5E03 # +0xA5AD 0x5E73 # +0xA5AE 0x5E7C # +0xA5AF 0x5F01 # +0xA5B0 0x5F18 # +0xA5B1 0x5F17 # +0xA5B2 0x5FC5 # +0xA5B3 0x620A # +0xA5B4 0x6253 # +0xA5B5 0x6254 # +0xA5B6 0x6252 # +0xA5B7 0x6251 # +0xA5B8 0x65A5 # +0xA5B9 0x65E6 # +0xA5BA 0x672E # +0xA5BB 0x672C # +0xA5BC 0x672A # +0xA5BD 0x672B # +0xA5BE 0x672D # +0xA5BF 0x6B63 # +0xA5C0 0x6BCD # +0xA5C1 0x6C11 # +0xA5C2 0x6C10 # +0xA5C3 0x6C38 # +0xA5C4 0x6C41 # +0xA5C5 0x6C40 # +0xA5C6 0x6C3E # +0xA5C7 0x72AF # +0xA5C8 0x7384 # +0xA5C9 0x7389 # +0xA5CA 0x74DC # +0xA5CB 0x74E6 # +0xA5CC 0x7518 # +0xA5CD 0x751F # +0xA5CE 0x7528 # +0xA5CF 0x7529 # +0xA5D0 0x7530 # +0xA5D1 0x7531 # +0xA5D2 0x7532 # +0xA5D3 0x7533 # +0xA5D4 0x758B # +0xA5D5 0x767D # +0xA5D6 0x76AE # +0xA5D7 0x76BF # +0xA5D8 0x76EE # +0xA5D9 0x77DB # +0xA5DA 0x77E2 # +0xA5DB 0x77F3 # +0xA5DC 0x793A # +0xA5DD 0x79BE # +0xA5DE 0x7A74 # +0xA5DF 0x7ACB # +0xA5E0 0x4E1E # +0xA5E1 0x4E1F # +0xA5E2 0x4E52 # +0xA5E3 0x4E53 # +0xA5E4 0x4E69 # +0xA5E5 0x4E99 # +0xA5E6 0x4EA4 # +0xA5E7 0x4EA6 # +0xA5E8 0x4EA5 # +0xA5E9 0x4EFF # +0xA5EA 0x4F09 # +0xA5EB 0x4F19 # +0xA5EC 0x4F0A # +0xA5ED 0x4F15 # +0xA5EE 0x4F0D # +0xA5EF 0x4F10 # +0xA5F0 0x4F11 # +0xA5F1 0x4F0F # +0xA5F2 0x4EF2 # +0xA5F3 0x4EF6 # +0xA5F4 0x4EFB # +0xA5F5 0x4EF0 # +0xA5F6 0x4EF3 # +0xA5F7 0x4EFD # +0xA5F8 0x4F01 # +0xA5F9 0x4F0B # +0xA5FA 0x5149 # +0xA5FB 0x5147 # +0xA5FC 0x5146 # +0xA5FD 0x5148 # +0xA5FE 0x5168 # +0xA640 0x5171 # +0xA641 0x518D # +0xA642 0x51B0 # +0xA643 0x5217 # +0xA644 0x5211 # +0xA645 0x5212 # +0xA646 0x520E # +0xA647 0x5216 # +0xA648 0x52A3 # +0xA649 0x5308 # +0xA64A 0x5321 # +0xA64B 0x5320 # +0xA64C 0x5370 # +0xA64D 0x5371 # +0xA64E 0x5409 # +0xA64F 0x540F # +0xA650 0x540C # +0xA651 0x540A # +0xA652 0x5410 # +0xA653 0x5401 # +0xA654 0x540B # +0xA655 0x5404 # +0xA656 0x5411 # +0xA657 0x540D # +0xA658 0x5408 # +0xA659 0x5403 # +0xA65A 0x540E # +0xA65B 0x5406 # +0xA65C 0x5412 # +0xA65D 0x56E0 # +0xA65E 0x56DE # +0xA65F 0x56DD # +0xA660 0x5733 # +0xA661 0x5730 # +0xA662 0x5728 # +0xA663 0x572D # +0xA664 0x572C # +0xA665 0x572F # +0xA666 0x5729 # +0xA667 0x5919 # +0xA668 0x591A # +0xA669 0x5937 # +0xA66A 0x5938 # +0xA66B 0x5984 # +0xA66C 0x5978 # +0xA66D 0x5983 # +0xA66E 0x597D # +0xA66F 0x5979 # +0xA670 0x5982 # +0xA671 0x5981 # +0xA672 0x5B57 # +0xA673 0x5B58 # +0xA674 0x5B87 # +0xA675 0x5B88 # +0xA676 0x5B85 # +0xA677 0x5B89 # +0xA678 0x5BFA # +0xA679 0x5C16 # +0xA67A 0x5C79 # +0xA67B 0x5DDE # +0xA67C 0x5E06 # +0xA67D 0x5E76 # +0xA67E 0x5E74 # +0xA6A1 0x5F0F # +0xA6A2 0x5F1B # +0xA6A3 0x5FD9 # +0xA6A4 0x5FD6 # +0xA6A5 0x620E # +0xA6A6 0x620C # +0xA6A7 0x620D # +0xA6A8 0x6210 # +0xA6A9 0x6263 # +0xA6AA 0x625B # +0xA6AB 0x6258 # +0xA6AC 0x6536 # +0xA6AD 0x65E9 # +0xA6AE 0x65E8 # +0xA6AF 0x65EC # +0xA6B0 0x65ED # +0xA6B1 0x66F2 # +0xA6B2 0x66F3 # +0xA6B3 0x6709 # +0xA6B4 0x673D # +0xA6B5 0x6734 # +0xA6B6 0x6731 # +0xA6B7 0x6735 # +0xA6B8 0x6B21 # +0xA6B9 0x6B64 # +0xA6BA 0x6B7B # +0xA6BB 0x6C16 # +0xA6BC 0x6C5D # +0xA6BD 0x6C57 # +0xA6BE 0x6C59 # +0xA6BF 0x6C5F # +0xA6C0 0x6C60 # +0xA6C1 0x6C50 # +0xA6C2 0x6C55 # +0xA6C3 0x6C61 # +0xA6C4 0x6C5B # +0xA6C5 0x6C4D # +0xA6C6 0x6C4E # +0xA6C7 0x7070 # +0xA6C8 0x725F # +0xA6C9 0x725D # +0xA6CA 0x767E # +0xA6CB 0x7AF9 # +0xA6CC 0x7C73 # +0xA6CD 0x7CF8 # +0xA6CE 0x7F36 # +0xA6CF 0x7F8A # +0xA6D0 0x7FBD # +0xA6D1 0x8001 # +0xA6D2 0x8003 # +0xA6D3 0x800C # +0xA6D4 0x8012 # +0xA6D5 0x8033 # +0xA6D6 0x807F # +0xA6D7 0x8089 # +0xA6D8 0x808B # +0xA6D9 0x808C # +0xA6DA 0x81E3 # +0xA6DB 0x81EA # +0xA6DC 0x81F3 # +0xA6DD 0x81FC # +0xA6DE 0x820C # +0xA6DF 0x821B # +0xA6E0 0x821F # +0xA6E1 0x826E # +0xA6E2 0x8272 # +0xA6E3 0x827E # +0xA6E4 0x866B # +0xA6E5 0x8840 # +0xA6E6 0x884C # +0xA6E7 0x8863 # +0xA6E8 0x897F # +0xA6E9 0x9621 # +0xA6EA 0x4E32 # +0xA6EB 0x4EA8 # +0xA6EC 0x4F4D # +0xA6ED 0x4F4F # +0xA6EE 0x4F47 # +0xA6EF 0x4F57 # +0xA6F0 0x4F5E # +0xA6F1 0x4F34 # +0xA6F2 0x4F5B # +0xA6F3 0x4F55 # +0xA6F4 0x4F30 # +0xA6F5 0x4F50 # +0xA6F6 0x4F51 # +0xA6F7 0x4F3D # +0xA6F8 0x4F3A # +0xA6F9 0x4F38 # +0xA6FA 0x4F43 # +0xA6FB 0x4F54 # +0xA6FC 0x4F3C # +0xA6FD 0x4F46 # +0xA6FE 0x4F63 # +0xA740 0x4F5C # +0xA741 0x4F60 # +0xA742 0x4F2F # +0xA743 0x4F4E # +0xA744 0x4F36 # +0xA745 0x4F59 # +0xA746 0x4F5D # +0xA747 0x4F48 # +0xA748 0x4F5A # +0xA749 0x514C # +0xA74A 0x514B # +0xA74B 0x514D # +0xA74C 0x5175 # +0xA74D 0x51B6 # +0xA74E 0x51B7 # +0xA74F 0x5225 # +0xA750 0x5224 # +0xA751 0x5229 # +0xA752 0x522A # +0xA753 0x5228 # +0xA754 0x52AB # +0xA755 0x52A9 # +0xA756 0x52AA # +0xA757 0x52AC # +0xA758 0x5323 # +0xA759 0x5373 # +0xA75A 0x5375 # +0xA75B 0x541D # +0xA75C 0x542D # +0xA75D 0x541E # +0xA75E 0x543E # +0xA75F 0x5426 # +0xA760 0x544E # +0xA761 0x5427 # +0xA762 0x5446 # +0xA763 0x5443 # +0xA764 0x5433 # +0xA765 0x5448 # +0xA766 0x5442 # +0xA767 0x541B # +0xA768 0x5429 # +0xA769 0x544A # +0xA76A 0x5439 # +0xA76B 0x543B # +0xA76C 0x5438 # +0xA76D 0x542E # +0xA76E 0x5435 # +0xA76F 0x5436 # +0xA770 0x5420 # +0xA771 0x543C # +0xA772 0x5440 # +0xA773 0x5431 # +0xA774 0x542B # +0xA775 0x541F # +0xA776 0x542C # +0xA777 0x56EA # +0xA778 0x56F0 # +0xA779 0x56E4 # +0xA77A 0x56EB # +0xA77B 0x574A # +0xA77C 0x5751 # +0xA77D 0x5740 # +0xA77E 0x574D # +0xA7A1 0x5747 # +0xA7A2 0x574E # +0xA7A3 0x573E # +0xA7A4 0x5750 # +0xA7A5 0x574F # +0xA7A6 0x573B # +0xA7A7 0x58EF # +0xA7A8 0x593E # +0xA7A9 0x599D # +0xA7AA 0x5992 # +0xA7AB 0x59A8 # +0xA7AC 0x599E # +0xA7AD 0x59A3 # +0xA7AE 0x5999 # +0xA7AF 0x5996 # +0xA7B0 0x598D # +0xA7B1 0x59A4 # +0xA7B2 0x5993 # +0xA7B3 0x598A # +0xA7B4 0x59A5 # +0xA7B5 0x5B5D # +0xA7B6 0x5B5C # +0xA7B7 0x5B5A # +0xA7B8 0x5B5B # +0xA7B9 0x5B8C # +0xA7BA 0x5B8B # +0xA7BB 0x5B8F # +0xA7BC 0x5C2C # +0xA7BD 0x5C40 # +0xA7BE 0x5C41 # +0xA7BF 0x5C3F # +0xA7C0 0x5C3E # +0xA7C1 0x5C90 # +0xA7C2 0x5C91 # +0xA7C3 0x5C94 # +0xA7C4 0x5C8C # +0xA7C5 0x5DEB # +0xA7C6 0x5E0C # +0xA7C7 0x5E8F # +0xA7C8 0x5E87 # +0xA7C9 0x5E8A # +0xA7CA 0x5EF7 # +0xA7CB 0x5F04 # +0xA7CC 0x5F1F # +0xA7CD 0x5F64 # +0xA7CE 0x5F62 # +0xA7CF 0x5F77 # +0xA7D0 0x5F79 # +0xA7D1 0x5FD8 # +0xA7D2 0x5FCC # +0xA7D3 0x5FD7 # +0xA7D4 0x5FCD # +0xA7D5 0x5FF1 # +0xA7D6 0x5FEB # +0xA7D7 0x5FF8 # +0xA7D8 0x5FEA # +0xA7D9 0x6212 # +0xA7DA 0x6211 # +0xA7DB 0x6284 # +0xA7DC 0x6297 # +0xA7DD 0x6296 # +0xA7DE 0x6280 # +0xA7DF 0x6276 # +0xA7E0 0x6289 # +0xA7E1 0x626D # +0xA7E2 0x628A # +0xA7E3 0x627C # +0xA7E4 0x627E # +0xA7E5 0x6279 # +0xA7E6 0x6273 # +0xA7E7 0x6292 # +0xA7E8 0x626F # +0xA7E9 0x6298 # +0xA7EA 0x626E # +0xA7EB 0x6295 # +0xA7EC 0x6293 # +0xA7ED 0x6291 # +0xA7EE 0x6286 # +0xA7EF 0x6539 # +0xA7F0 0x653B # +0xA7F1 0x6538 # +0xA7F2 0x65F1 # +0xA7F3 0x66F4 # +0xA7F4 0x675F # +0xA7F5 0x674E # +0xA7F6 0x674F # +0xA7F7 0x6750 # +0xA7F8 0x6751 # +0xA7F9 0x675C # +0xA7FA 0x6756 # +0xA7FB 0x675E # +0xA7FC 0x6749 # +0xA7FD 0x6746 # +0xA7FE 0x6760 # +0xA840 0x6753 # +0xA841 0x6757 # +0xA842 0x6B65 # +0xA843 0x6BCF # +0xA844 0x6C42 # +0xA845 0x6C5E # +0xA846 0x6C99 # +0xA847 0x6C81 # +0xA848 0x6C88 # +0xA849 0x6C89 # +0xA84A 0x6C85 # +0xA84B 0x6C9B # +0xA84C 0x6C6A # +0xA84D 0x6C7A # +0xA84E 0x6C90 # +0xA84F 0x6C70 # +0xA850 0x6C8C # +0xA851 0x6C68 # +0xA852 0x6C96 # +0xA853 0x6C92 # +0xA854 0x6C7D # +0xA855 0x6C83 # +0xA856 0x6C72 # +0xA857 0x6C7E # +0xA858 0x6C74 # +0xA859 0x6C86 # +0xA85A 0x6C76 # +0xA85B 0x6C8D # +0xA85C 0x6C94 # +0xA85D 0x6C98 # +0xA85E 0x6C82 # +0xA85F 0x7076 # +0xA860 0x707C # +0xA861 0x707D # +0xA862 0x7078 # +0xA863 0x7262 # +0xA864 0x7261 # +0xA865 0x7260 # +0xA866 0x72C4 # +0xA867 0x72C2 # +0xA868 0x7396 # +0xA869 0x752C # +0xA86A 0x752B # +0xA86B 0x7537 # +0xA86C 0x7538 # +0xA86D 0x7682 # +0xA86E 0x76EF # +0xA86F 0x77E3 # +0xA870 0x79C1 # +0xA871 0x79C0 # +0xA872 0x79BF # +0xA873 0x7A76 # +0xA874 0x7CFB # +0xA875 0x7F55 # +0xA876 0x8096 # +0xA877 0x8093 # +0xA878 0x809D # +0xA879 0x8098 # +0xA87A 0x809B # +0xA87B 0x809A # +0xA87C 0x80B2 # +0xA87D 0x826F # +0xA87E 0x8292 # +0xA8A1 0x828B # +0xA8A2 0x828D # +0xA8A3 0x898B # +0xA8A4 0x89D2 # +0xA8A5 0x8A00 # +0xA8A6 0x8C37 # +0xA8A7 0x8C46 # +0xA8A8 0x8C55 # +0xA8A9 0x8C9D # +0xA8AA 0x8D64 # +0xA8AB 0x8D70 # +0xA8AC 0x8DB3 # +0xA8AD 0x8EAB # +0xA8AE 0x8ECA # +0xA8AF 0x8F9B # +0xA8B0 0x8FB0 # +0xA8B1 0x8FC2 # +0xA8B2 0x8FC6 # +0xA8B3 0x8FC5 # +0xA8B4 0x8FC4 # +0xA8B5 0x5DE1 # +0xA8B6 0x9091 # +0xA8B7 0x90A2 # +0xA8B8 0x90AA # +0xA8B9 0x90A6 # +0xA8BA 0x90A3 # +0xA8BB 0x9149 # +0xA8BC 0x91C6 # +0xA8BD 0x91CC # +0xA8BE 0x9632 # +0xA8BF 0x962E # +0xA8C0 0x9631 # +0xA8C1 0x962A # +0xA8C2 0x962C # +0xA8C3 0x4E26 # +0xA8C4 0x4E56 # +0xA8C5 0x4E73 # +0xA8C6 0x4E8B # +0xA8C7 0x4E9B # +0xA8C8 0x4E9E # +0xA8C9 0x4EAB # +0xA8CA 0x4EAC # +0xA8CB 0x4F6F # +0xA8CC 0x4F9D # +0xA8CD 0x4F8D # +0xA8CE 0x4F73 # +0xA8CF 0x4F7F # +0xA8D0 0x4F6C # +0xA8D1 0x4F9B # +0xA8D2 0x4F8B # +0xA8D3 0x4F86 # +0xA8D4 0x4F83 # +0xA8D5 0x4F70 # +0xA8D6 0x4F75 # +0xA8D7 0x4F88 # +0xA8D8 0x4F69 # +0xA8D9 0x4F7B # +0xA8DA 0x4F96 # +0xA8DB 0x4F7E # +0xA8DC 0x4F8F # +0xA8DD 0x4F91 # +0xA8DE 0x4F7A # +0xA8DF 0x5154 # +0xA8E0 0x5152 # +0xA8E1 0x5155 # +0xA8E2 0x5169 # +0xA8E3 0x5177 # +0xA8E4 0x5176 # +0xA8E5 0x5178 # +0xA8E6 0x51BD # +0xA8E7 0x51FD # +0xA8E8 0x523B # +0xA8E9 0x5238 # +0xA8EA 0x5237 # +0xA8EB 0x523A # +0xA8EC 0x5230 # +0xA8ED 0x522E # +0xA8EE 0x5236 # +0xA8EF 0x5241 # +0xA8F0 0x52BE # +0xA8F1 0x52BB # +0xA8F2 0x5352 # +0xA8F3 0x5354 # +0xA8F4 0x5353 # +0xA8F5 0x5351 # +0xA8F6 0x5366 # +0xA8F7 0x5377 # +0xA8F8 0x5378 # +0xA8F9 0x5379 # +0xA8FA 0x53D6 # +0xA8FB 0x53D4 # +0xA8FC 0x53D7 # +0xA8FD 0x5473 # +0xA8FE 0x5475 # +0xA940 0x5496 # +0xA941 0x5478 # +0xA942 0x5495 # +0xA943 0x5480 # +0xA944 0x547B # +0xA945 0x5477 # +0xA946 0x5484 # +0xA947 0x5492 # +0xA948 0x5486 # +0xA949 0x547C # +0xA94A 0x5490 # +0xA94B 0x5471 # +0xA94C 0x5476 # +0xA94D 0x548C # +0xA94E 0x549A # +0xA94F 0x5462 # +0xA950 0x5468 # +0xA951 0x548B # +0xA952 0x547D # +0xA953 0x548E # +0xA954 0x56FA # +0xA955 0x5783 # +0xA956 0x5777 # +0xA957 0x576A # +0xA958 0x5769 # +0xA959 0x5761 # +0xA95A 0x5766 # +0xA95B 0x5764 # +0xA95C 0x577C # +0xA95D 0x591C # +0xA95E 0x5949 # +0xA95F 0x5947 # +0xA960 0x5948 # +0xA961 0x5944 # +0xA962 0x5954 # +0xA963 0x59BE # +0xA964 0x59BB # +0xA965 0x59D4 # +0xA966 0x59B9 # +0xA967 0x59AE # +0xA968 0x59D1 # +0xA969 0x59C6 # +0xA96A 0x59D0 # +0xA96B 0x59CD # +0xA96C 0x59CB # +0xA96D 0x59D3 # +0xA96E 0x59CA # +0xA96F 0x59AF # +0xA970 0x59B3 # +0xA971 0x59D2 # +0xA972 0x59C5 # +0xA973 0x5B5F # +0xA974 0x5B64 # +0xA975 0x5B63 # +0xA976 0x5B97 # +0xA977 0x5B9A # +0xA978 0x5B98 # +0xA979 0x5B9C # +0xA97A 0x5B99 # +0xA97B 0x5B9B # +0xA97C 0x5C1A # +0xA97D 0x5C48 # +0xA97E 0x5C45 # +0xA9A1 0x5C46 # +0xA9A2 0x5CB7 # +0xA9A3 0x5CA1 # +0xA9A4 0x5CB8 # +0xA9A5 0x5CA9 # +0xA9A6 0x5CAB # +0xA9A7 0x5CB1 # +0xA9A8 0x5CB3 # +0xA9A9 0x5E18 # +0xA9AA 0x5E1A # +0xA9AB 0x5E16 # +0xA9AC 0x5E15 # +0xA9AD 0x5E1B # +0xA9AE 0x5E11 # +0xA9AF 0x5E78 # +0xA9B0 0x5E9A # +0xA9B1 0x5E97 # +0xA9B2 0x5E9C # +0xA9B3 0x5E95 # +0xA9B4 0x5E96 # +0xA9B5 0x5EF6 # +0xA9B6 0x5F26 # +0xA9B7 0x5F27 # +0xA9B8 0x5F29 # +0xA9B9 0x5F80 # +0xA9BA 0x5F81 # +0xA9BB 0x5F7F # +0xA9BC 0x5F7C # +0xA9BD 0x5FDD # +0xA9BE 0x5FE0 # +0xA9BF 0x5FFD # +0xA9C0 0x5FF5 # +0xA9C1 0x5FFF # +0xA9C2 0x600F # +0xA9C3 0x6014 # +0xA9C4 0x602F # +0xA9C5 0x6035 # +0xA9C6 0x6016 # +0xA9C7 0x602A # +0xA9C8 0x6015 # +0xA9C9 0x6021 # +0xA9CA 0x6027 # +0xA9CB 0x6029 # +0xA9CC 0x602B # +0xA9CD 0x601B # +0xA9CE 0x6216 # +0xA9CF 0x6215 # +0xA9D0 0x623F # +0xA9D1 0x623E # +0xA9D2 0x6240 # +0xA9D3 0x627F # +0xA9D4 0x62C9 # +0xA9D5 0x62CC # +0xA9D6 0x62C4 # +0xA9D7 0x62BF # +0xA9D8 0x62C2 # +0xA9D9 0x62B9 # +0xA9DA 0x62D2 # +0xA9DB 0x62DB # +0xA9DC 0x62AB # +0xA9DD 0x62D3 # +0xA9DE 0x62D4 # +0xA9DF 0x62CB # +0xA9E0 0x62C8 # +0xA9E1 0x62A8 # +0xA9E2 0x62BD # +0xA9E3 0x62BC # +0xA9E4 0x62D0 # +0xA9E5 0x62D9 # +0xA9E6 0x62C7 # +0xA9E7 0x62CD # +0xA9E8 0x62B5 # +0xA9E9 0x62DA # +0xA9EA 0x62B1 # +0xA9EB 0x62D8 # +0xA9EC 0x62D6 # +0xA9ED 0x62D7 # +0xA9EE 0x62C6 # +0xA9EF 0x62AC # +0xA9F0 0x62CE # +0xA9F1 0x653E # +0xA9F2 0x65A7 # +0xA9F3 0x65BC # +0xA9F4 0x65FA # +0xA9F5 0x6614 # +0xA9F6 0x6613 # +0xA9F7 0x660C # +0xA9F8 0x6606 # +0xA9F9 0x6602 # +0xA9FA 0x660E # +0xA9FB 0x6600 # +0xA9FC 0x660F # +0xA9FD 0x6615 # +0xA9FE 0x660A # +0xAA40 0x6607 # +0xAA41 0x670D # +0xAA42 0x670B # +0xAA43 0x676D # +0xAA44 0x678B # +0xAA45 0x6795 # +0xAA46 0x6771 # +0xAA47 0x679C # +0xAA48 0x6773 # +0xAA49 0x6777 # +0xAA4A 0x6787 # +0xAA4B 0x679D # +0xAA4C 0x6797 # +0xAA4D 0x676F # +0xAA4E 0x6770 # +0xAA4F 0x677F # +0xAA50 0x6789 # +0xAA51 0x677E # +0xAA52 0x6790 # +0xAA53 0x6775 # +0xAA54 0x679A # +0xAA55 0x6793 # +0xAA56 0x677C # +0xAA57 0x676A # +0xAA58 0x6772 # +0xAA59 0x6B23 # +0xAA5A 0x6B66 # +0xAA5B 0x6B67 # +0xAA5C 0x6B7F # +0xAA5D 0x6C13 # +0xAA5E 0x6C1B # +0xAA5F 0x6CE3 # +0xAA60 0x6CE8 # +0xAA61 0x6CF3 # +0xAA62 0x6CB1 # +0xAA63 0x6CCC # +0xAA64 0x6CE5 # +0xAA65 0x6CB3 # +0xAA66 0x6CBD # +0xAA67 0x6CBE # +0xAA68 0x6CBC # +0xAA69 0x6CE2 # +0xAA6A 0x6CAB # +0xAA6B 0x6CD5 # +0xAA6C 0x6CD3 # +0xAA6D 0x6CB8 # +0xAA6E 0x6CC4 # +0xAA6F 0x6CB9 # +0xAA70 0x6CC1 # +0xAA71 0x6CAE # +0xAA72 0x6CD7 # +0xAA73 0x6CC5 # +0xAA74 0x6CF1 # +0xAA75 0x6CBF # +0xAA76 0x6CBB # +0xAA77 0x6CE1 # +0xAA78 0x6CDB # +0xAA79 0x6CCA # +0xAA7A 0x6CAC # +0xAA7B 0x6CEF # +0xAA7C 0x6CDC # +0xAA7D 0x6CD6 # +0xAA7E 0x6CE0 # +0xAAA1 0x7095 # +0xAAA2 0x708E # +0xAAA3 0x7092 # +0xAAA4 0x708A # +0xAAA5 0x7099 # +0xAAA6 0x722C # +0xAAA7 0x722D # +0xAAA8 0x7238 # +0xAAA9 0x7248 # +0xAAAA 0x7267 # +0xAAAB 0x7269 # +0xAAAC 0x72C0 # +0xAAAD 0x72CE # +0xAAAE 0x72D9 # +0xAAAF 0x72D7 # +0xAAB0 0x72D0 # +0xAAB1 0x73A9 # +0xAAB2 0x73A8 # +0xAAB3 0x739F # +0xAAB4 0x73AB # +0xAAB5 0x73A5 # +0xAAB6 0x753D # +0xAAB7 0x759D # +0xAAB8 0x7599 # +0xAAB9 0x759A # +0xAABA 0x7684 # +0xAABB 0x76C2 # +0xAABC 0x76F2 # +0xAABD 0x76F4 # +0xAABE 0x77E5 # +0xAABF 0x77FD # +0xAAC0 0x793E # +0xAAC1 0x7940 # +0xAAC2 0x7941 # +0xAAC3 0x79C9 # +0xAAC4 0x79C8 # +0xAAC5 0x7A7A # +0xAAC6 0x7A79 # +0xAAC7 0x7AFA # +0xAAC8 0x7CFE # +0xAAC9 0x7F54 # +0xAACA 0x7F8C # +0xAACB 0x7F8B # +0xAACC 0x8005 # +0xAACD 0x80BA # +0xAACE 0x80A5 # +0xAACF 0x80A2 # +0xAAD0 0x80B1 # +0xAAD1 0x80A1 # +0xAAD2 0x80AB # +0xAAD3 0x80A9 # +0xAAD4 0x80B4 # +0xAAD5 0x80AA # +0xAAD6 0x80AF # +0xAAD7 0x81E5 # +0xAAD8 0x81FE # +0xAAD9 0x820D # +0xAADA 0x82B3 # +0xAADB 0x829D # +0xAADC 0x8299 # +0xAADD 0x82AD # +0xAADE 0x82BD # +0xAADF 0x829F # +0xAAE0 0x82B9 # +0xAAE1 0x82B1 # +0xAAE2 0x82AC # +0xAAE3 0x82A5 # +0xAAE4 0x82AF # +0xAAE5 0x82B8 # +0xAAE6 0x82A3 # +0xAAE7 0x82B0 # +0xAAE8 0x82BE # +0xAAE9 0x82B7 # +0xAAEA 0x864E # +0xAAEB 0x8671 # +0xAAEC 0x521D # +0xAAED 0x8868 # +0xAAEE 0x8ECB # +0xAAEF 0x8FCE # +0xAAF0 0x8FD4 # +0xAAF1 0x8FD1 # +0xAAF2 0x90B5 # +0xAAF3 0x90B8 # +0xAAF4 0x90B1 # +0xAAF5 0x90B6 # +0xAAF6 0x91C7 # +0xAAF7 0x91D1 # +0xAAF8 0x9577 # +0xAAF9 0x9580 # +0xAAFA 0x961C # +0xAAFB 0x9640 # +0xAAFC 0x963F # +0xAAFD 0x963B # +0xAAFE 0x9644 # +0xAB40 0x9642 # +0xAB41 0x96B9 # +0xAB42 0x96E8 # +0xAB43 0x9752 # +0xAB44 0x975E # +0xAB45 0x4E9F # +0xAB46 0x4EAD # +0xAB47 0x4EAE # +0xAB48 0x4FE1 # +0xAB49 0x4FB5 # +0xAB4A 0x4FAF # +0xAB4B 0x4FBF # +0xAB4C 0x4FE0 # +0xAB4D 0x4FD1 # +0xAB4E 0x4FCF # +0xAB4F 0x4FDD # +0xAB50 0x4FC3 # +0xAB51 0x4FB6 # +0xAB52 0x4FD8 # +0xAB53 0x4FDF # +0xAB54 0x4FCA # +0xAB55 0x4FD7 # +0xAB56 0x4FAE # +0xAB57 0x4FD0 # +0xAB58 0x4FC4 # +0xAB59 0x4FC2 # +0xAB5A 0x4FDA # +0xAB5B 0x4FCE # +0xAB5C 0x4FDE # +0xAB5D 0x4FB7 # +0xAB5E 0x5157 # +0xAB5F 0x5192 # +0xAB60 0x5191 # +0xAB61 0x51A0 # +0xAB62 0x524E # +0xAB63 0x5243 # +0xAB64 0x524A # +0xAB65 0x524D # +0xAB66 0x524C # +0xAB67 0x524B # +0xAB68 0x5247 # +0xAB69 0x52C7 # +0xAB6A 0x52C9 # +0xAB6B 0x52C3 # +0xAB6C 0x52C1 # +0xAB6D 0x530D # +0xAB6E 0x5357 # +0xAB6F 0x537B # +0xAB70 0x539A # +0xAB71 0x53DB # +0xAB72 0x54AC # +0xAB73 0x54C0 # +0xAB74 0x54A8 # +0xAB75 0x54CE # +0xAB76 0x54C9 # +0xAB77 0x54B8 # +0xAB78 0x54A6 # +0xAB79 0x54B3 # +0xAB7A 0x54C7 # +0xAB7B 0x54C2 # +0xAB7C 0x54BD # +0xAB7D 0x54AA # +0xAB7E 0x54C1 # +0xABA1 0x54C4 # +0xABA2 0x54C8 # +0xABA3 0x54AF # +0xABA4 0x54AB # +0xABA5 0x54B1 # +0xABA6 0x54BB # +0xABA7 0x54A9 # +0xABA8 0x54A7 # +0xABA9 0x54BF # +0xABAA 0x56FF # +0xABAB 0x5782 # +0xABAC 0x578B # +0xABAD 0x57A0 # +0xABAE 0x57A3 # +0xABAF 0x57A2 # +0xABB0 0x57CE # +0xABB1 0x57AE # +0xABB2 0x5793 # +0xABB3 0x5955 # +0xABB4 0x5951 # +0xABB5 0x594F # +0xABB6 0x594E # +0xABB7 0x5950 # +0xABB8 0x59DC # +0xABB9 0x59D8 # +0xABBA 0x59FF # +0xABBB 0x59E3 # +0xABBC 0x59E8 # +0xABBD 0x5A03 # +0xABBE 0x59E5 # +0xABBF 0x59EA # +0xABC0 0x59DA # +0xABC1 0x59E6 # +0xABC2 0x5A01 # +0xABC3 0x59FB # +0xABC4 0x5B69 # +0xABC5 0x5BA3 # +0xABC6 0x5BA6 # +0xABC7 0x5BA4 # +0xABC8 0x5BA2 # +0xABC9 0x5BA5 # +0xABCA 0x5C01 # +0xABCB 0x5C4E # +0xABCC 0x5C4F # +0xABCD 0x5C4D # +0xABCE 0x5C4B # +0xABCF 0x5CD9 # +0xABD0 0x5CD2 # +0xABD1 0x5DF7 # +0xABD2 0x5E1D # +0xABD3 0x5E25 # +0xABD4 0x5E1F # +0xABD5 0x5E7D # +0xABD6 0x5EA0 # +0xABD7 0x5EA6 # +0xABD8 0x5EFA # +0xABD9 0x5F08 # +0xABDA 0x5F2D # +0xABDB 0x5F65 # +0xABDC 0x5F88 # +0xABDD 0x5F85 # +0xABDE 0x5F8A # +0xABDF 0x5F8B # +0xABE0 0x5F87 # +0xABE1 0x5F8C # +0xABE2 0x5F89 # +0xABE3 0x6012 # +0xABE4 0x601D # +0xABE5 0x6020 # +0xABE6 0x6025 # +0xABE7 0x600E # +0xABE8 0x6028 # +0xABE9 0x604D # +0xABEA 0x6070 # +0xABEB 0x6068 # +0xABEC 0x6062 # +0xABED 0x6046 # +0xABEE 0x6043 # +0xABEF 0x606C # +0xABF0 0x606B # +0xABF1 0x606A # +0xABF2 0x6064 # +0xABF3 0x6241 # +0xABF4 0x62DC # +0xABF5 0x6316 # +0xABF6 0x6309 # +0xABF7 0x62FC # +0xABF8 0x62ED # +0xABF9 0x6301 # +0xABFA 0x62EE # +0xABFB 0x62FD # +0xABFC 0x6307 # +0xABFD 0x62F1 # +0xABFE 0x62F7 # +0xAC40 0x62EF # +0xAC41 0x62EC # +0xAC42 0x62FE # +0xAC43 0x62F4 # +0xAC44 0x6311 # +0xAC45 0x6302 # +0xAC46 0x653F # +0xAC47 0x6545 # +0xAC48 0x65AB # +0xAC49 0x65BD # +0xAC4A 0x65E2 # +0xAC4B 0x6625 # +0xAC4C 0x662D # +0xAC4D 0x6620 # +0xAC4E 0x6627 # +0xAC4F 0x662F # +0xAC50 0x661F # +0xAC51 0x6628 # +0xAC52 0x6631 # +0xAC53 0x6624 # +0xAC54 0x66F7 # +0xAC55 0x67FF # +0xAC56 0x67D3 # +0xAC57 0x67F1 # +0xAC58 0x67D4 # +0xAC59 0x67D0 # +0xAC5A 0x67EC # +0xAC5B 0x67B6 # +0xAC5C 0x67AF # +0xAC5D 0x67F5 # +0xAC5E 0x67E9 # +0xAC5F 0x67EF # +0xAC60 0x67C4 # +0xAC61 0x67D1 # +0xAC62 0x67B4 # +0xAC63 0x67DA # +0xAC64 0x67E5 # +0xAC65 0x67B8 # +0xAC66 0x67CF # +0xAC67 0x67DE # +0xAC68 0x67F3 # +0xAC69 0x67B0 # +0xAC6A 0x67D9 # +0xAC6B 0x67E2 # +0xAC6C 0x67DD # +0xAC6D 0x67D2 # +0xAC6E 0x6B6A # +0xAC6F 0x6B83 # +0xAC70 0x6B86 # +0xAC71 0x6BB5 # +0xAC72 0x6BD2 # +0xAC73 0x6BD7 # +0xAC74 0x6C1F # +0xAC75 0x6CC9 # +0xAC76 0x6D0B # +0xAC77 0x6D32 # +0xAC78 0x6D2A # +0xAC79 0x6D41 # +0xAC7A 0x6D25 # +0xAC7B 0x6D0C # +0xAC7C 0x6D31 # +0xAC7D 0x6D1E # +0xAC7E 0x6D17 # +0xACA1 0x6D3B # +0xACA2 0x6D3D # +0xACA3 0x6D3E # +0xACA4 0x6D36 # +0xACA5 0x6D1B # +0xACA6 0x6CF5 # +0xACA7 0x6D39 # +0xACA8 0x6D27 # +0xACA9 0x6D38 # +0xACAA 0x6D29 # +0xACAB 0x6D2E # +0xACAC 0x6D35 # +0xACAD 0x6D0E # +0xACAE 0x6D2B # +0xACAF 0x70AB # +0xACB0 0x70BA # +0xACB1 0x70B3 # +0xACB2 0x70AC # +0xACB3 0x70AF # +0xACB4 0x70AD # +0xACB5 0x70B8 # +0xACB6 0x70AE # +0xACB7 0x70A4 # +0xACB8 0x7230 # +0xACB9 0x7272 # +0xACBA 0x726F # +0xACBB 0x7274 # +0xACBC 0x72E9 # +0xACBD 0x72E0 # +0xACBE 0x72E1 # +0xACBF 0x73B7 # +0xACC0 0x73CA # +0xACC1 0x73BB # +0xACC2 0x73B2 # +0xACC3 0x73CD # +0xACC4 0x73C0 # +0xACC5 0x73B3 # +0xACC6 0x751A # +0xACC7 0x752D # +0xACC8 0x754F # +0xACC9 0x754C # +0xACCA 0x754E # +0xACCB 0x754B # +0xACCC 0x75AB # +0xACCD 0x75A4 # +0xACCE 0x75A5 # +0xACCF 0x75A2 # +0xACD0 0x75A3 # +0xACD1 0x7678 # +0xACD2 0x7686 # +0xACD3 0x7687 # +0xACD4 0x7688 # +0xACD5 0x76C8 # +0xACD6 0x76C6 # +0xACD7 0x76C3 # +0xACD8 0x76C5 # +0xACD9 0x7701 # +0xACDA 0x76F9 # +0xACDB 0x76F8 # +0xACDC 0x7709 # +0xACDD 0x770B # +0xACDE 0x76FE # +0xACDF 0x76FC # +0xACE0 0x7707 # +0xACE1 0x77DC # +0xACE2 0x7802 # +0xACE3 0x7814 # +0xACE4 0x780C # +0xACE5 0x780D # +0xACE6 0x7946 # +0xACE7 0x7949 # +0xACE8 0x7948 # +0xACE9 0x7947 # +0xACEA 0x79B9 # +0xACEB 0x79BA # +0xACEC 0x79D1 # +0xACED 0x79D2 # +0xACEE 0x79CB # +0xACEF 0x7A7F # +0xACF0 0x7A81 # +0xACF1 0x7AFF # +0xACF2 0x7AFD # +0xACF3 0x7C7D # +0xACF4 0x7D02 # +0xACF5 0x7D05 # +0xACF6 0x7D00 # +0xACF7 0x7D09 # +0xACF8 0x7D07 # +0xACF9 0x7D04 # +0xACFA 0x7D06 # +0xACFB 0x7F38 # +0xACFC 0x7F8E # +0xACFD 0x7FBF # +0xACFE 0x8004 # +0xAD40 0x8010 # +0xAD41 0x800D # +0xAD42 0x8011 # +0xAD43 0x8036 # +0xAD44 0x80D6 # +0xAD45 0x80E5 # +0xAD46 0x80DA # +0xAD47 0x80C3 # +0xAD48 0x80C4 # +0xAD49 0x80CC # +0xAD4A 0x80E1 # +0xAD4B 0x80DB # +0xAD4C 0x80CE # +0xAD4D 0x80DE # +0xAD4E 0x80E4 # +0xAD4F 0x80DD # +0xAD50 0x81F4 # +0xAD51 0x8222 # +0xAD52 0x82E7 # +0xAD53 0x8303 # +0xAD54 0x8305 # +0xAD55 0x82E3 # +0xAD56 0x82DB # +0xAD57 0x82E6 # +0xAD58 0x8304 # +0xAD59 0x82E5 # +0xAD5A 0x8302 # +0xAD5B 0x8309 # +0xAD5C 0x82D2 # +0xAD5D 0x82D7 # +0xAD5E 0x82F1 # +0xAD5F 0x8301 # +0xAD60 0x82DC # +0xAD61 0x82D4 # +0xAD62 0x82D1 # +0xAD63 0x82DE # +0xAD64 0x82D3 # +0xAD65 0x82DF # +0xAD66 0x82EF # +0xAD67 0x8306 # +0xAD68 0x8650 # +0xAD69 0x8679 # +0xAD6A 0x867B # +0xAD6B 0x867A # +0xAD6C 0x884D # +0xAD6D 0x886B # +0xAD6E 0x8981 # +0xAD6F 0x89D4 # +0xAD70 0x8A08 # +0xAD71 0x8A02 # +0xAD72 0x8A03 # +0xAD73 0x8C9E # +0xAD74 0x8CA0 # +0xAD75 0x8D74 # +0xAD76 0x8D73 # +0xAD77 0x8DB4 # +0xAD78 0x8ECD # +0xAD79 0x8ECC # +0xAD7A 0x8FF0 # +0xAD7B 0x8FE6 # +0xAD7C 0x8FE2 # +0xAD7D 0x8FEA # +0xAD7E 0x8FE5 # +0xADA1 0x8FED # +0xADA2 0x8FEB # +0xADA3 0x8FE4 # +0xADA4 0x8FE8 # +0xADA5 0x90CA # +0xADA6 0x90CE # +0xADA7 0x90C1 # +0xADA8 0x90C3 # +0xADA9 0x914B # +0xADAA 0x914A # +0xADAB 0x91CD # +0xADAC 0x9582 # +0xADAD 0x9650 # +0xADAE 0x964B # +0xADAF 0x964C # +0xADB0 0x964D # +0xADB1 0x9762 # +0xADB2 0x9769 # +0xADB3 0x97CB # +0xADB4 0x97ED # +0xADB5 0x97F3 # +0xADB6 0x9801 # +0xADB7 0x98A8 # +0xADB8 0x98DB # +0xADB9 0x98DF # +0xADBA 0x9996 # +0xADBB 0x9999 # +0xADBC 0x4E58 # +0xADBD 0x4EB3 # +0xADBE 0x500C # +0xADBF 0x500D # +0xADC0 0x5023 # +0xADC1 0x4FEF # +0xADC2 0x5026 # +0xADC3 0x5025 # +0xADC4 0x4FF8 # +0xADC5 0x5029 # +0xADC6 0x5016 # +0xADC7 0x5006 # +0xADC8 0x503C # +0xADC9 0x501F # +0xADCA 0x501A # +0xADCB 0x5012 # +0xADCC 0x5011 # +0xADCD 0x4FFA # +0xADCE 0x5000 # +0xADCF 0x5014 # +0xADD0 0x5028 # +0xADD1 0x4FF1 # +0xADD2 0x5021 # +0xADD3 0x500B # +0xADD4 0x5019 # +0xADD5 0x5018 # +0xADD6 0x4FF3 # +0xADD7 0x4FEE # +0xADD8 0x502D # +0xADD9 0x502A # +0xADDA 0x4FFE # +0xADDB 0x502B # +0xADDC 0x5009 # +0xADDD 0x517C # +0xADDE 0x51A4 # +0xADDF 0x51A5 # +0xADE0 0x51A2 # +0xADE1 0x51CD # +0xADE2 0x51CC # +0xADE3 0x51C6 # +0xADE4 0x51CB # +0xADE5 0x5256 # +0xADE6 0x525C # +0xADE7 0x5254 # +0xADE8 0x525B # +0xADE9 0x525D # +0xADEA 0x532A # +0xADEB 0x537F # +0xADEC 0x539F # +0xADED 0x539D # +0xADEE 0x53DF # +0xADEF 0x54E8 # +0xADF0 0x5510 # +0xADF1 0x5501 # +0xADF2 0x5537 # +0xADF3 0x54FC # +0xADF4 0x54E5 # +0xADF5 0x54F2 # +0xADF6 0x5506 # +0xADF7 0x54FA # +0xADF8 0x5514 # +0xADF9 0x54E9 # +0xADFA 0x54ED # +0xADFB 0x54E1 # +0xADFC 0x5509 # +0xADFD 0x54EE # +0xADFE 0x54EA # +0xAE40 0x54E6 # +0xAE41 0x5527 # +0xAE42 0x5507 # +0xAE43 0x54FD # +0xAE44 0x550F # +0xAE45 0x5703 # +0xAE46 0x5704 # +0xAE47 0x57C2 # +0xAE48 0x57D4 # +0xAE49 0x57CB # +0xAE4A 0x57C3 # +0xAE4B 0x5809 # +0xAE4C 0x590F # +0xAE4D 0x5957 # +0xAE4E 0x5958 # +0xAE4F 0x595A # +0xAE50 0x5A11 # +0xAE51 0x5A18 # +0xAE52 0x5A1C # +0xAE53 0x5A1F # +0xAE54 0x5A1B # +0xAE55 0x5A13 # +0xAE56 0x59EC # +0xAE57 0x5A20 # +0xAE58 0x5A23 # +0xAE59 0x5A29 # +0xAE5A 0x5A25 # +0xAE5B 0x5A0C # +0xAE5C 0x5A09 # +0xAE5D 0x5B6B # +0xAE5E 0x5C58 # +0xAE5F 0x5BB0 # +0xAE60 0x5BB3 # +0xAE61 0x5BB6 # +0xAE62 0x5BB4 # +0xAE63 0x5BAE # +0xAE64 0x5BB5 # +0xAE65 0x5BB9 # +0xAE66 0x5BB8 # +0xAE67 0x5C04 # +0xAE68 0x5C51 # +0xAE69 0x5C55 # +0xAE6A 0x5C50 # +0xAE6B 0x5CED # +0xAE6C 0x5CFD # +0xAE6D 0x5CFB # +0xAE6E 0x5CEA # +0xAE6F 0x5CE8 # +0xAE70 0x5CF0 # +0xAE71 0x5CF6 # +0xAE72 0x5D01 # +0xAE73 0x5CF4 # +0xAE74 0x5DEE # +0xAE75 0x5E2D # +0xAE76 0x5E2B # +0xAE77 0x5EAB # +0xAE78 0x5EAD # +0xAE79 0x5EA7 # +0xAE7A 0x5F31 # +0xAE7B 0x5F92 # +0xAE7C 0x5F91 # +0xAE7D 0x5F90 # +0xAE7E 0x6059 # +0xAEA1 0x6063 # +0xAEA2 0x6065 # +0xAEA3 0x6050 # +0xAEA4 0x6055 # +0xAEA5 0x606D # +0xAEA6 0x6069 # +0xAEA7 0x606F # +0xAEA8 0x6084 # +0xAEA9 0x609F # +0xAEAA 0x609A # +0xAEAB 0x608D # +0xAEAC 0x6094 # +0xAEAD 0x608C # +0xAEAE 0x6085 # +0xAEAF 0x6096 # +0xAEB0 0x6247 # +0xAEB1 0x62F3 # +0xAEB2 0x6308 # +0xAEB3 0x62FF # +0xAEB4 0x634E # +0xAEB5 0x633E # +0xAEB6 0x632F # +0xAEB7 0x6355 # +0xAEB8 0x6342 # +0xAEB9 0x6346 # +0xAEBA 0x634F # +0xAEBB 0x6349 # +0xAEBC 0x633A # +0xAEBD 0x6350 # +0xAEBE 0x633D # +0xAEBF 0x632A # +0xAEC0 0x632B # +0xAEC1 0x6328 # +0xAEC2 0x634D # +0xAEC3 0x634C # +0xAEC4 0x6548 # +0xAEC5 0x6549 # +0xAEC6 0x6599 # +0xAEC7 0x65C1 # +0xAEC8 0x65C5 # +0xAEC9 0x6642 # +0xAECA 0x6649 # +0xAECB 0x664F # +0xAECC 0x6643 # +0xAECD 0x6652 # +0xAECE 0x664C # +0xAECF 0x6645 # +0xAED0 0x6641 # +0xAED1 0x66F8 # +0xAED2 0x6714 # +0xAED3 0x6715 # +0xAED4 0x6717 # +0xAED5 0x6821 # +0xAED6 0x6838 # +0xAED7 0x6848 # +0xAED8 0x6846 # +0xAED9 0x6853 # +0xAEDA 0x6839 # +0xAEDB 0x6842 # +0xAEDC 0x6854 # +0xAEDD 0x6829 # +0xAEDE 0x68B3 # +0xAEDF 0x6817 # +0xAEE0 0x684C # +0xAEE1 0x6851 # +0xAEE2 0x683D # +0xAEE3 0x67F4 # +0xAEE4 0x6850 # +0xAEE5 0x6840 # +0xAEE6 0x683C # +0xAEE7 0x6843 # +0xAEE8 0x682A # +0xAEE9 0x6845 # +0xAEEA 0x6813 # +0xAEEB 0x6818 # +0xAEEC 0x6841 # +0xAEED 0x6B8A # +0xAEEE 0x6B89 # +0xAEEF 0x6BB7 # +0xAEF0 0x6C23 # +0xAEF1 0x6C27 # +0xAEF2 0x6C28 # +0xAEF3 0x6C26 # +0xAEF4 0x6C24 # +0xAEF5 0x6CF0 # +0xAEF6 0x6D6A # +0xAEF7 0x6D95 # +0xAEF8 0x6D88 # +0xAEF9 0x6D87 # +0xAEFA 0x6D66 # +0xAEFB 0x6D78 # +0xAEFC 0x6D77 # +0xAEFD 0x6D59 # +0xAEFE 0x6D93 # +0xAF40 0x6D6C # +0xAF41 0x6D89 # +0xAF42 0x6D6E # +0xAF43 0x6D5A # +0xAF44 0x6D74 # +0xAF45 0x6D69 # +0xAF46 0x6D8C # +0xAF47 0x6D8A # +0xAF48 0x6D79 # +0xAF49 0x6D85 # +0xAF4A 0x6D65 # +0xAF4B 0x6D94 # +0xAF4C 0x70CA # +0xAF4D 0x70D8 # +0xAF4E 0x70E4 # +0xAF4F 0x70D9 # +0xAF50 0x70C8 # +0xAF51 0x70CF # +0xAF52 0x7239 # +0xAF53 0x7279 # +0xAF54 0x72FC # +0xAF55 0x72F9 # +0xAF56 0x72FD # +0xAF57 0x72F8 # +0xAF58 0x72F7 # +0xAF59 0x7386 # +0xAF5A 0x73ED # +0xAF5B 0x7409 # +0xAF5C 0x73EE # +0xAF5D 0x73E0 # +0xAF5E 0x73EA # +0xAF5F 0x73DE # +0xAF60 0x7554 # +0xAF61 0x755D # +0xAF62 0x755C # +0xAF63 0x755A # +0xAF64 0x7559 # +0xAF65 0x75BE # +0xAF66 0x75C5 # +0xAF67 0x75C7 # +0xAF68 0x75B2 # +0xAF69 0x75B3 # +0xAF6A 0x75BD # +0xAF6B 0x75BC # +0xAF6C 0x75B9 # +0xAF6D 0x75C2 # +0xAF6E 0x75B8 # +0xAF6F 0x768B # +0xAF70 0x76B0 # +0xAF71 0x76CA # +0xAF72 0x76CD # +0xAF73 0x76CE # +0xAF74 0x7729 # +0xAF75 0x771F # +0xAF76 0x7720 # +0xAF77 0x7728 # +0xAF78 0x77E9 # +0xAF79 0x7830 # +0xAF7A 0x7827 # +0xAF7B 0x7838 # +0xAF7C 0x781D # +0xAF7D 0x7834 # +0xAF7E 0x7837 # +0xAFA1 0x7825 # +0xAFA2 0x782D # +0xAFA3 0x7820 # +0xAFA4 0x781F # +0xAFA5 0x7832 # +0xAFA6 0x7955 # +0xAFA7 0x7950 # +0xAFA8 0x7960 # +0xAFA9 0x795F # +0xAFAA 0x7956 # +0xAFAB 0x795E # +0xAFAC 0x795D # +0xAFAD 0x7957 # +0xAFAE 0x795A # +0xAFAF 0x79E4 # +0xAFB0 0x79E3 # +0xAFB1 0x79E7 # +0xAFB2 0x79DF # +0xAFB3 0x79E6 # +0xAFB4 0x79E9 # +0xAFB5 0x79D8 # +0xAFB6 0x7A84 # +0xAFB7 0x7A88 # +0xAFB8 0x7AD9 # +0xAFB9 0x7B06 # +0xAFBA 0x7B11 # +0xAFBB 0x7C89 # +0xAFBC 0x7D21 # +0xAFBD 0x7D17 # +0xAFBE 0x7D0B # +0xAFBF 0x7D0A # +0xAFC0 0x7D20 # +0xAFC1 0x7D22 # +0xAFC2 0x7D14 # +0xAFC3 0x7D10 # +0xAFC4 0x7D15 # +0xAFC5 0x7D1A # +0xAFC6 0x7D1C # +0xAFC7 0x7D0D # +0xAFC8 0x7D19 # +0xAFC9 0x7D1B # +0xAFCA 0x7F3A # +0xAFCB 0x7F5F # +0xAFCC 0x7F94 # +0xAFCD 0x7FC5 # +0xAFCE 0x7FC1 # +0xAFCF 0x8006 # +0xAFD0 0x8018 # +0xAFD1 0x8015 # +0xAFD2 0x8019 # +0xAFD3 0x8017 # +0xAFD4 0x803D # +0xAFD5 0x803F # +0xAFD6 0x80F1 # +0xAFD7 0x8102 # +0xAFD8 0x80F0 # +0xAFD9 0x8105 # +0xAFDA 0x80ED # +0xAFDB 0x80F4 # +0xAFDC 0x8106 # +0xAFDD 0x80F8 # +0xAFDE 0x80F3 # +0xAFDF 0x8108 # +0xAFE0 0x80FD # +0xAFE1 0x810A # +0xAFE2 0x80FC # +0xAFE3 0x80EF # +0xAFE4 0x81ED # +0xAFE5 0x81EC # +0xAFE6 0x8200 # +0xAFE7 0x8210 # +0xAFE8 0x822A # +0xAFE9 0x822B # +0xAFEA 0x8228 # +0xAFEB 0x822C # +0xAFEC 0x82BB # +0xAFED 0x832B # +0xAFEE 0x8352 # +0xAFEF 0x8354 # +0xAFF0 0x834A # +0xAFF1 0x8338 # +0xAFF2 0x8350 # +0xAFF3 0x8349 # +0xAFF4 0x8335 # +0xAFF5 0x8334 # +0xAFF6 0x834F # +0xAFF7 0x8332 # +0xAFF8 0x8339 # +0xAFF9 0x8336 # +0xAFFA 0x8317 # +0xAFFB 0x8340 # +0xAFFC 0x8331 # +0xAFFD 0x8328 # +0xAFFE 0x8343 # +0xB040 0x8654 # +0xB041 0x868A # +0xB042 0x86AA # +0xB043 0x8693 # +0xB044 0x86A4 # +0xB045 0x86A9 # +0xB046 0x868C # +0xB047 0x86A3 # +0xB048 0x869C # +0xB049 0x8870 # +0xB04A 0x8877 # +0xB04B 0x8881 # +0xB04C 0x8882 # +0xB04D 0x887D # +0xB04E 0x8879 # +0xB04F 0x8A18 # +0xB050 0x8A10 # +0xB051 0x8A0E # +0xB052 0x8A0C # +0xB053 0x8A15 # +0xB054 0x8A0A # +0xB055 0x8A17 # +0xB056 0x8A13 # +0xB057 0x8A16 # +0xB058 0x8A0F # +0xB059 0x8A11 # +0xB05A 0x8C48 # +0xB05B 0x8C7A # +0xB05C 0x8C79 # +0xB05D 0x8CA1 # +0xB05E 0x8CA2 # +0xB05F 0x8D77 # +0xB060 0x8EAC # +0xB061 0x8ED2 # +0xB062 0x8ED4 # +0xB063 0x8ECF # +0xB064 0x8FB1 # +0xB065 0x9001 # +0xB066 0x9006 # +0xB067 0x8FF7 # +0xB068 0x9000 # +0xB069 0x8FFA # +0xB06A 0x8FF4 # +0xB06B 0x9003 # +0xB06C 0x8FFD # +0xB06D 0x9005 # +0xB06E 0x8FF8 # +0xB06F 0x9095 # +0xB070 0x90E1 # +0xB071 0x90DD # +0xB072 0x90E2 # +0xB073 0x9152 # +0xB074 0x914D # +0xB075 0x914C # +0xB076 0x91D8 # +0xB077 0x91DD # +0xB078 0x91D7 # +0xB079 0x91DC # +0xB07A 0x91D9 # +0xB07B 0x9583 # +0xB07C 0x9662 # +0xB07D 0x9663 # +0xB07E 0x9661 # +0xB0A1 0x965B # +0xB0A2 0x965D # +0xB0A3 0x9664 # +0xB0A4 0x9658 # +0xB0A5 0x965E # +0xB0A6 0x96BB # +0xB0A7 0x98E2 # +0xB0A8 0x99AC # +0xB0A9 0x9AA8 # +0xB0AA 0x9AD8 # +0xB0AB 0x9B25 # +0xB0AC 0x9B32 # +0xB0AD 0x9B3C # +0xB0AE 0x4E7E # +0xB0AF 0x507A # +0xB0B0 0x507D # +0xB0B1 0x505C # +0xB0B2 0x5047 # +0xB0B3 0x5043 # +0xB0B4 0x504C # +0xB0B5 0x505A # +0xB0B6 0x5049 # +0xB0B7 0x5065 # +0xB0B8 0x5076 # +0xB0B9 0x504E # +0xB0BA 0x5055 # +0xB0BB 0x5075 # +0xB0BC 0x5074 # +0xB0BD 0x5077 # +0xB0BE 0x504F # +0xB0BF 0x500F # +0xB0C0 0x506F # +0xB0C1 0x506D # +0xB0C2 0x515C # +0xB0C3 0x5195 # +0xB0C4 0x51F0 # +0xB0C5 0x526A # +0xB0C6 0x526F # +0xB0C7 0x52D2 # +0xB0C8 0x52D9 # +0xB0C9 0x52D8 # +0xB0CA 0x52D5 # +0xB0CB 0x5310 # +0xB0CC 0x530F # +0xB0CD 0x5319 # +0xB0CE 0x533F # +0xB0CF 0x5340 # +0xB0D0 0x533E # +0xB0D1 0x53C3 # +0xB0D2 0x66FC # +0xB0D3 0x5546 # +0xB0D4 0x556A # +0xB0D5 0x5566 # +0xB0D6 0x5544 # +0xB0D7 0x555E # +0xB0D8 0x5561 # +0xB0D9 0x5543 # +0xB0DA 0x554A # +0xB0DB 0x5531 # +0xB0DC 0x5556 # +0xB0DD 0x554F # +0xB0DE 0x5555 # +0xB0DF 0x552F # +0xB0E0 0x5564 # +0xB0E1 0x5538 # +0xB0E2 0x552E # +0xB0E3 0x555C # +0xB0E4 0x552C # +0xB0E5 0x5563 # +0xB0E6 0x5533 # +0xB0E7 0x5541 # +0xB0E8 0x5557 # +0xB0E9 0x5708 # +0xB0EA 0x570B # +0xB0EB 0x5709 # +0xB0EC 0x57DF # +0xB0ED 0x5805 # +0xB0EE 0x580A # +0xB0EF 0x5806 # +0xB0F0 0x57E0 # +0xB0F1 0x57E4 # +0xB0F2 0x57FA # +0xB0F3 0x5802 # +0xB0F4 0x5835 # +0xB0F5 0x57F7 # +0xB0F6 0x57F9 # +0xB0F7 0x5920 # +0xB0F8 0x5962 # +0xB0F9 0x5A36 # +0xB0FA 0x5A41 # +0xB0FB 0x5A49 # +0xB0FC 0x5A66 # +0xB0FD 0x5A6A # +0xB0FE 0x5A40 # +0xB140 0x5A3C # +0xB141 0x5A62 # +0xB142 0x5A5A # +0xB143 0x5A46 # +0xB144 0x5A4A # +0xB145 0x5B70 # +0xB146 0x5BC7 # +0xB147 0x5BC5 # +0xB148 0x5BC4 # +0xB149 0x5BC2 # +0xB14A 0x5BBF # +0xB14B 0x5BC6 # +0xB14C 0x5C09 # +0xB14D 0x5C08 # +0xB14E 0x5C07 # +0xB14F 0x5C60 # +0xB150 0x5C5C # +0xB151 0x5C5D # +0xB152 0x5D07 # +0xB153 0x5D06 # +0xB154 0x5D0E # +0xB155 0x5D1B # +0xB156 0x5D16 # +0xB157 0x5D22 # +0xB158 0x5D11 # +0xB159 0x5D29 # +0xB15A 0x5D14 # +0xB15B 0x5D19 # +0xB15C 0x5D24 # +0xB15D 0x5D27 # +0xB15E 0x5D17 # +0xB15F 0x5DE2 # +0xB160 0x5E38 # +0xB161 0x5E36 # +0xB162 0x5E33 # +0xB163 0x5E37 # +0xB164 0x5EB7 # +0xB165 0x5EB8 # +0xB166 0x5EB6 # +0xB167 0x5EB5 # +0xB168 0x5EBE # +0xB169 0x5F35 # +0xB16A 0x5F37 # +0xB16B 0x5F57 # +0xB16C 0x5F6C # +0xB16D 0x5F69 # +0xB16E 0x5F6B # +0xB16F 0x5F97 # +0xB170 0x5F99 # +0xB171 0x5F9E # +0xB172 0x5F98 # +0xB173 0x5FA1 # +0xB174 0x5FA0 # +0xB175 0x5F9C # +0xB176 0x607F # +0xB177 0x60A3 # +0xB178 0x6089 # +0xB179 0x60A0 # +0xB17A 0x60A8 # +0xB17B 0x60CB # +0xB17C 0x60B4 # +0xB17D 0x60E6 # +0xB17E 0x60BD # +0xB1A1 0x60C5 # +0xB1A2 0x60BB # +0xB1A3 0x60B5 # +0xB1A4 0x60DC # +0xB1A5 0x60BC # +0xB1A6 0x60D8 # +0xB1A7 0x60D5 # +0xB1A8 0x60C6 # +0xB1A9 0x60DF # +0xB1AA 0x60B8 # +0xB1AB 0x60DA # +0xB1AC 0x60C7 # +0xB1AD 0x621A # +0xB1AE 0x621B # +0xB1AF 0x6248 # +0xB1B0 0x63A0 # +0xB1B1 0x63A7 # +0xB1B2 0x6372 # +0xB1B3 0x6396 # +0xB1B4 0x63A2 # +0xB1B5 0x63A5 # +0xB1B6 0x6377 # +0xB1B7 0x6367 # +0xB1B8 0x6398 # +0xB1B9 0x63AA # +0xB1BA 0x6371 # +0xB1BB 0x63A9 # +0xB1BC 0x6389 # +0xB1BD 0x6383 # +0xB1BE 0x639B # +0xB1BF 0x636B # +0xB1C0 0x63A8 # +0xB1C1 0x6384 # +0xB1C2 0x6388 # +0xB1C3 0x6399 # +0xB1C4 0x63A1 # +0xB1C5 0x63AC # +0xB1C6 0x6392 # +0xB1C7 0x638F # +0xB1C8 0x6380 # +0xB1C9 0x637B # +0xB1CA 0x6369 # +0xB1CB 0x6368 # +0xB1CC 0x637A # +0xB1CD 0x655D # +0xB1CE 0x6556 # +0xB1CF 0x6551 # +0xB1D0 0x6559 # +0xB1D1 0x6557 # +0xB1D2 0x555F # +0xB1D3 0x654F # +0xB1D4 0x6558 # +0xB1D5 0x6555 # +0xB1D6 0x6554 # +0xB1D7 0x659C # +0xB1D8 0x659B # +0xB1D9 0x65AC # +0xB1DA 0x65CF # +0xB1DB 0x65CB # +0xB1DC 0x65CC # +0xB1DD 0x65CE # +0xB1DE 0x665D # +0xB1DF 0x665A # +0xB1E0 0x6664 # +0xB1E1 0x6668 # +0xB1E2 0x6666 # +0xB1E3 0x665E # +0xB1E4 0x66F9 # +0xB1E5 0x52D7 # +0xB1E6 0x671B # +0xB1E7 0x6881 # +0xB1E8 0x68AF # +0xB1E9 0x68A2 # +0xB1EA 0x6893 # +0xB1EB 0x68B5 # +0xB1EC 0x687F # +0xB1ED 0x6876 # +0xB1EE 0x68B1 # +0xB1EF 0x68A7 # +0xB1F0 0x6897 # +0xB1F1 0x68B0 # +0xB1F2 0x6883 # +0xB1F3 0x68C4 # +0xB1F4 0x68AD # +0xB1F5 0x6886 # +0xB1F6 0x6885 # +0xB1F7 0x6894 # +0xB1F8 0x689D # +0xB1F9 0x68A8 # +0xB1FA 0x689F # +0xB1FB 0x68A1 # +0xB1FC 0x6882 # +0xB1FD 0x6B32 # +0xB1FE 0x6BBA # +0xB240 0x6BEB # +0xB241 0x6BEC # +0xB242 0x6C2B # +0xB243 0x6D8E # +0xB244 0x6DBC # +0xB245 0x6DF3 # +0xB246 0x6DD9 # +0xB247 0x6DB2 # +0xB248 0x6DE1 # +0xB249 0x6DCC # +0xB24A 0x6DE4 # +0xB24B 0x6DFB # +0xB24C 0x6DFA # +0xB24D 0x6E05 # +0xB24E 0x6DC7 # +0xB24F 0x6DCB # +0xB250 0x6DAF # +0xB251 0x6DD1 # +0xB252 0x6DAE # +0xB253 0x6DDE # +0xB254 0x6DF9 # +0xB255 0x6DB8 # +0xB256 0x6DF7 # +0xB257 0x6DF5 # +0xB258 0x6DC5 # +0xB259 0x6DD2 # +0xB25A 0x6E1A # +0xB25B 0x6DB5 # +0xB25C 0x6DDA # +0xB25D 0x6DEB # +0xB25E 0x6DD8 # +0xB25F 0x6DEA # +0xB260 0x6DF1 # +0xB261 0x6DEE # +0xB262 0x6DE8 # +0xB263 0x6DC6 # +0xB264 0x6DC4 # +0xB265 0x6DAA # +0xB266 0x6DEC # +0xB267 0x6DBF # +0xB268 0x6DE6 # +0xB269 0x70F9 # +0xB26A 0x7109 # +0xB26B 0x710A # +0xB26C 0x70FD # +0xB26D 0x70EF # +0xB26E 0x723D # +0xB26F 0x727D # +0xB270 0x7281 # +0xB271 0x731C # +0xB272 0x731B # +0xB273 0x7316 # +0xB274 0x7313 # +0xB275 0x7319 # +0xB276 0x7387 # +0xB277 0x7405 # +0xB278 0x740A # +0xB279 0x7403 # +0xB27A 0x7406 # +0xB27B 0x73FE # +0xB27C 0x740D # +0xB27D 0x74E0 # +0xB27E 0x74F6 # +0xB2A1 0x74F7 # +0xB2A2 0x751C # +0xB2A3 0x7522 # +0xB2A4 0x7565 # +0xB2A5 0x7566 # +0xB2A6 0x7562 # +0xB2A7 0x7570 # +0xB2A8 0x758F # +0xB2A9 0x75D4 # +0xB2AA 0x75D5 # +0xB2AB 0x75B5 # +0xB2AC 0x75CA # +0xB2AD 0x75CD # +0xB2AE 0x768E # +0xB2AF 0x76D4 # +0xB2B0 0x76D2 # +0xB2B1 0x76DB # +0xB2B2 0x7737 # +0xB2B3 0x773E # +0xB2B4 0x773C # +0xB2B5 0x7736 # +0xB2B6 0x7738 # +0xB2B7 0x773A # +0xB2B8 0x786B # +0xB2B9 0x7843 # +0xB2BA 0x784E # +0xB2BB 0x7965 # +0xB2BC 0x7968 # +0xB2BD 0x796D # +0xB2BE 0x79FB # +0xB2BF 0x7A92 # +0xB2C0 0x7A95 # +0xB2C1 0x7B20 # +0xB2C2 0x7B28 # +0xB2C3 0x7B1B # +0xB2C4 0x7B2C # +0xB2C5 0x7B26 # +0xB2C6 0x7B19 # +0xB2C7 0x7B1E # +0xB2C8 0x7B2E # +0xB2C9 0x7C92 # +0xB2CA 0x7C97 # +0xB2CB 0x7C95 # +0xB2CC 0x7D46 # +0xB2CD 0x7D43 # +0xB2CE 0x7D71 # +0xB2CF 0x7D2E # +0xB2D0 0x7D39 # +0xB2D1 0x7D3C # +0xB2D2 0x7D40 # +0xB2D3 0x7D30 # +0xB2D4 0x7D33 # +0xB2D5 0x7D44 # +0xB2D6 0x7D2F # +0xB2D7 0x7D42 # +0xB2D8 0x7D32 # +0xB2D9 0x7D31 # +0xB2DA 0x7F3D # +0xB2DB 0x7F9E # +0xB2DC 0x7F9A # +0xB2DD 0x7FCC # +0xB2DE 0x7FCE # +0xB2DF 0x7FD2 # +0xB2E0 0x801C # +0xB2E1 0x804A # +0xB2E2 0x8046 # +0xB2E3 0x812F # +0xB2E4 0x8116 # +0xB2E5 0x8123 # +0xB2E6 0x812B # +0xB2E7 0x8129 # +0xB2E8 0x8130 # +0xB2E9 0x8124 # +0xB2EA 0x8202 # +0xB2EB 0x8235 # +0xB2EC 0x8237 # +0xB2ED 0x8236 # +0xB2EE 0x8239 # +0xB2EF 0x838E # +0xB2F0 0x839E # +0xB2F1 0x8398 # +0xB2F2 0x8378 # +0xB2F3 0x83A2 # +0xB2F4 0x8396 # +0xB2F5 0x83BD # +0xB2F6 0x83AB # +0xB2F7 0x8392 # +0xB2F8 0x838A # +0xB2F9 0x8393 # +0xB2FA 0x8389 # +0xB2FB 0x83A0 # +0xB2FC 0x8377 # +0xB2FD 0x837B # +0xB2FE 0x837C # +0xB340 0x8386 # +0xB341 0x83A7 # +0xB342 0x8655 # +0xB343 0x5F6A # +0xB344 0x86C7 # +0xB345 0x86C0 # +0xB346 0x86B6 # +0xB347 0x86C4 # +0xB348 0x86B5 # +0xB349 0x86C6 # +0xB34A 0x86CB # +0xB34B 0x86B1 # +0xB34C 0x86AF # +0xB34D 0x86C9 # +0xB34E 0x8853 # +0xB34F 0x889E # +0xB350 0x8888 # +0xB351 0x88AB # +0xB352 0x8892 # +0xB353 0x8896 # +0xB354 0x888D # +0xB355 0x888B # +0xB356 0x8993 # +0xB357 0x898F # +0xB358 0x8A2A # +0xB359 0x8A1D # +0xB35A 0x8A23 # +0xB35B 0x8A25 # +0xB35C 0x8A31 # +0xB35D 0x8A2D # +0xB35E 0x8A1F # +0xB35F 0x8A1B # +0xB360 0x8A22 # +0xB361 0x8C49 # +0xB362 0x8C5A # +0xB363 0x8CA9 # +0xB364 0x8CAC # +0xB365 0x8CAB # +0xB366 0x8CA8 # +0xB367 0x8CAA # +0xB368 0x8CA7 # +0xB369 0x8D67 # +0xB36A 0x8D66 # +0xB36B 0x8DBE # +0xB36C 0x8DBA # +0xB36D 0x8EDB # +0xB36E 0x8EDF # +0xB36F 0x9019 # +0xB370 0x900D # +0xB371 0x901A # +0xB372 0x9017 # +0xB373 0x9023 # +0xB374 0x901F # +0xB375 0x901D # +0xB376 0x9010 # +0xB377 0x9015 # +0xB378 0x901E # +0xB379 0x9020 # +0xB37A 0x900F # +0xB37B 0x9022 # +0xB37C 0x9016 # +0xB37D 0x901B # +0xB37E 0x9014 # +0xB3A1 0x90E8 # +0xB3A2 0x90ED # +0xB3A3 0x90FD # +0xB3A4 0x9157 # +0xB3A5 0x91CE # +0xB3A6 0x91F5 # +0xB3A7 0x91E6 # +0xB3A8 0x91E3 # +0xB3A9 0x91E7 # +0xB3AA 0x91ED # +0xB3AB 0x91E9 # +0xB3AC 0x9589 # +0xB3AD 0x966A # +0xB3AE 0x9675 # +0xB3AF 0x9673 # +0xB3B0 0x9678 # +0xB3B1 0x9670 # +0xB3B2 0x9674 # +0xB3B3 0x9676 # +0xB3B4 0x9677 # +0xB3B5 0x966C # +0xB3B6 0x96C0 # +0xB3B7 0x96EA # +0xB3B8 0x96E9 # +0xB3B9 0x7AE0 # +0xB3BA 0x7ADF # +0xB3BB 0x9802 # +0xB3BC 0x9803 # +0xB3BD 0x9B5A # +0xB3BE 0x9CE5 # +0xB3BF 0x9E75 # +0xB3C0 0x9E7F # +0xB3C1 0x9EA5 # +0xB3C2 0x9EBB # +0xB3C3 0x50A2 # +0xB3C4 0x508D # +0xB3C5 0x5085 # +0xB3C6 0x5099 # +0xB3C7 0x5091 # +0xB3C8 0x5080 # +0xB3C9 0x5096 # +0xB3CA 0x5098 # +0xB3CB 0x509A # +0xB3CC 0x6700 # +0xB3CD 0x51F1 # +0xB3CE 0x5272 # +0xB3CF 0x5274 # +0xB3D0 0x5275 # +0xB3D1 0x5269 # +0xB3D2 0x52DE # +0xB3D3 0x52DD # +0xB3D4 0x52DB # +0xB3D5 0x535A # +0xB3D6 0x53A5 # +0xB3D7 0x557B # +0xB3D8 0x5580 # +0xB3D9 0x55A7 # +0xB3DA 0x557C # +0xB3DB 0x558A # +0xB3DC 0x559D # +0xB3DD 0x5598 # +0xB3DE 0x5582 # +0xB3DF 0x559C # +0xB3E0 0x55AA # +0xB3E1 0x5594 # +0xB3E2 0x5587 # +0xB3E3 0x558B # +0xB3E4 0x5583 # +0xB3E5 0x55B3 # +0xB3E6 0x55AE # +0xB3E7 0x559F # +0xB3E8 0x553E # +0xB3E9 0x55B2 # +0xB3EA 0x559A # +0xB3EB 0x55BB # +0xB3EC 0x55AC # +0xB3ED 0x55B1 # +0xB3EE 0x557E # +0xB3EF 0x5589 # +0xB3F0 0x55AB # +0xB3F1 0x5599 # +0xB3F2 0x570D # +0xB3F3 0x582F # +0xB3F4 0x582A # +0xB3F5 0x5834 # +0xB3F6 0x5824 # +0xB3F7 0x5830 # +0xB3F8 0x5831 # +0xB3F9 0x5821 # +0xB3FA 0x581D # +0xB3FB 0x5820 # +0xB3FC 0x58F9 # +0xB3FD 0x58FA # +0xB3FE 0x5960 # +0xB440 0x5A77 # +0xB441 0x5A9A # +0xB442 0x5A7F # +0xB443 0x5A92 # +0xB444 0x5A9B # +0xB445 0x5AA7 # +0xB446 0x5B73 # +0xB447 0x5B71 # +0xB448 0x5BD2 # +0xB449 0x5BCC # +0xB44A 0x5BD3 # +0xB44B 0x5BD0 # +0xB44C 0x5C0A # +0xB44D 0x5C0B # +0xB44E 0x5C31 # +0xB44F 0x5D4C # +0xB450 0x5D50 # +0xB451 0x5D34 # +0xB452 0x5D47 # +0xB453 0x5DFD # +0xB454 0x5E45 # +0xB455 0x5E3D # +0xB456 0x5E40 # +0xB457 0x5E43 # +0xB458 0x5E7E # +0xB459 0x5ECA # +0xB45A 0x5EC1 # +0xB45B 0x5EC2 # +0xB45C 0x5EC4 # +0xB45D 0x5F3C # +0xB45E 0x5F6D # +0xB45F 0x5FA9 # +0xB460 0x5FAA # +0xB461 0x5FA8 # +0xB462 0x60D1 # +0xB463 0x60E1 # +0xB464 0x60B2 # +0xB465 0x60B6 # +0xB466 0x60E0 # +0xB467 0x611C # +0xB468 0x6123 # +0xB469 0x60FA # +0xB46A 0x6115 # +0xB46B 0x60F0 # +0xB46C 0x60FB # +0xB46D 0x60F4 # +0xB46E 0x6168 # +0xB46F 0x60F1 # +0xB470 0x610E # +0xB471 0x60F6 # +0xB472 0x6109 # +0xB473 0x6100 # +0xB474 0x6112 # +0xB475 0x621F # +0xB476 0x6249 # +0xB477 0x63A3 # +0xB478 0x638C # +0xB479 0x63CF # +0xB47A 0x63C0 # +0xB47B 0x63E9 # +0xB47C 0x63C9 # +0xB47D 0x63C6 # +0xB47E 0x63CD # +0xB4A1 0x63D2 # +0xB4A2 0x63E3 # +0xB4A3 0x63D0 # +0xB4A4 0x63E1 # +0xB4A5 0x63D6 # +0xB4A6 0x63ED # +0xB4A7 0x63EE # +0xB4A8 0x6376 # +0xB4A9 0x63F4 # +0xB4AA 0x63EA # +0xB4AB 0x63DB # +0xB4AC 0x6452 # +0xB4AD 0x63DA # +0xB4AE 0x63F9 # +0xB4AF 0x655E # +0xB4B0 0x6566 # +0xB4B1 0x6562 # +0xB4B2 0x6563 # +0xB4B3 0x6591 # +0xB4B4 0x6590 # +0xB4B5 0x65AF # +0xB4B6 0x666E # +0xB4B7 0x6670 # +0xB4B8 0x6674 # +0xB4B9 0x6676 # +0xB4BA 0x666F # +0xB4BB 0x6691 # +0xB4BC 0x667A # +0xB4BD 0x667E # +0xB4BE 0x6677 # +0xB4BF 0x66FE # +0xB4C0 0x66FF # +0xB4C1 0x671F # +0xB4C2 0x671D # +0xB4C3 0x68FA # +0xB4C4 0x68D5 # +0xB4C5 0x68E0 # +0xB4C6 0x68D8 # +0xB4C7 0x68D7 # +0xB4C8 0x6905 # +0xB4C9 0x68DF # +0xB4CA 0x68F5 # +0xB4CB 0x68EE # +0xB4CC 0x68E7 # +0xB4CD 0x68F9 # +0xB4CE 0x68D2 # +0xB4CF 0x68F2 # +0xB4D0 0x68E3 # +0xB4D1 0x68CB # +0xB4D2 0x68CD # +0xB4D3 0x690D # +0xB4D4 0x6912 # +0xB4D5 0x690E # +0xB4D6 0x68C9 # +0xB4D7 0x68DA # +0xB4D8 0x696E # +0xB4D9 0x68FB # +0xB4DA 0x6B3E # +0xB4DB 0x6B3A # +0xB4DC 0x6B3D # +0xB4DD 0x6B98 # +0xB4DE 0x6B96 # +0xB4DF 0x6BBC # +0xB4E0 0x6BEF # +0xB4E1 0x6C2E # +0xB4E2 0x6C2F # +0xB4E3 0x6C2C # +0xB4E4 0x6E2F # +0xB4E5 0x6E38 # +0xB4E6 0x6E54 # +0xB4E7 0x6E21 # +0xB4E8 0x6E32 # +0xB4E9 0x6E67 # +0xB4EA 0x6E4A # +0xB4EB 0x6E20 # +0xB4EC 0x6E25 # +0xB4ED 0x6E23 # +0xB4EE 0x6E1B # +0xB4EF 0x6E5B # +0xB4F0 0x6E58 # +0xB4F1 0x6E24 # +0xB4F2 0x6E56 # +0xB4F3 0x6E6E # +0xB4F4 0x6E2D # +0xB4F5 0x6E26 # +0xB4F6 0x6E6F # +0xB4F7 0x6E34 # +0xB4F8 0x6E4D # +0xB4F9 0x6E3A # +0xB4FA 0x6E2C # +0xB4FB 0x6E43 # +0xB4FC 0x6E1D # +0xB4FD 0x6E3E # +0xB4FE 0x6ECB # +0xB540 0x6E89 # +0xB541 0x6E19 # +0xB542 0x6E4E # +0xB543 0x6E63 # +0xB544 0x6E44 # +0xB545 0x6E72 # +0xB546 0x6E69 # +0xB547 0x6E5F # +0xB548 0x7119 # +0xB549 0x711A # +0xB54A 0x7126 # +0xB54B 0x7130 # +0xB54C 0x7121 # +0xB54D 0x7136 # +0xB54E 0x716E # +0xB54F 0x711C # +0xB550 0x724C # +0xB551 0x7284 # +0xB552 0x7280 # +0xB553 0x7336 # +0xB554 0x7325 # +0xB555 0x7334 # +0xB556 0x7329 # +0xB557 0x743A # +0xB558 0x742A # +0xB559 0x7433 # +0xB55A 0x7422 # +0xB55B 0x7425 # +0xB55C 0x7435 # +0xB55D 0x7436 # +0xB55E 0x7434 # +0xB55F 0x742F # +0xB560 0x741B # +0xB561 0x7426 # +0xB562 0x7428 # +0xB563 0x7525 # +0xB564 0x7526 # +0xB565 0x756B # +0xB566 0x756A # +0xB567 0x75E2 # +0xB568 0x75DB # +0xB569 0x75E3 # +0xB56A 0x75D9 # +0xB56B 0x75D8 # +0xB56C 0x75DE # +0xB56D 0x75E0 # +0xB56E 0x767B # +0xB56F 0x767C # +0xB570 0x7696 # +0xB571 0x7693 # +0xB572 0x76B4 # +0xB573 0x76DC # +0xB574 0x774F # +0xB575 0x77ED # +0xB576 0x785D # +0xB577 0x786C # +0xB578 0x786F # +0xB579 0x7A0D # +0xB57A 0x7A08 # +0xB57B 0x7A0B # +0xB57C 0x7A05 # +0xB57D 0x7A00 # +0xB57E 0x7A98 # +0xB5A1 0x7A97 # +0xB5A2 0x7A96 # +0xB5A3 0x7AE5 # +0xB5A4 0x7AE3 # +0xB5A5 0x7B49 # +0xB5A6 0x7B56 # +0xB5A7 0x7B46 # +0xB5A8 0x7B50 # +0xB5A9 0x7B52 # +0xB5AA 0x7B54 # +0xB5AB 0x7B4D # +0xB5AC 0x7B4B # +0xB5AD 0x7B4F # +0xB5AE 0x7B51 # +0xB5AF 0x7C9F # +0xB5B0 0x7CA5 # +0xB5B1 0x7D5E # +0xB5B2 0x7D50 # +0xB5B3 0x7D68 # +0xB5B4 0x7D55 # +0xB5B5 0x7D2B # +0xB5B6 0x7D6E # +0xB5B7 0x7D72 # +0xB5B8 0x7D61 # +0xB5B9 0x7D66 # +0xB5BA 0x7D62 # +0xB5BB 0x7D70 # +0xB5BC 0x7D73 # +0xB5BD 0x5584 # +0xB5BE 0x7FD4 # +0xB5BF 0x7FD5 # +0xB5C0 0x800B # +0xB5C1 0x8052 # +0xB5C2 0x8085 # +0xB5C3 0x8155 # +0xB5C4 0x8154 # +0xB5C5 0x814B # +0xB5C6 0x8151 # +0xB5C7 0x814E # +0xB5C8 0x8139 # +0xB5C9 0x8146 # +0xB5CA 0x813E # +0xB5CB 0x814C # +0xB5CC 0x8153 # +0xB5CD 0x8174 # +0xB5CE 0x8212 # +0xB5CF 0x821C # +0xB5D0 0x83E9 # +0xB5D1 0x8403 # +0xB5D2 0x83F8 # +0xB5D3 0x840D # +0xB5D4 0x83E0 # +0xB5D5 0x83C5 # +0xB5D6 0x840B # +0xB5D7 0x83C1 # +0xB5D8 0x83EF # +0xB5D9 0x83F1 # +0xB5DA 0x83F4 # +0xB5DB 0x8457 # +0xB5DC 0x840A # +0xB5DD 0x83F0 # +0xB5DE 0x840C # +0xB5DF 0x83CC # +0xB5E0 0x83FD # +0xB5E1 0x83F2 # +0xB5E2 0x83CA # +0xB5E3 0x8438 # +0xB5E4 0x840E # +0xB5E5 0x8404 # +0xB5E6 0x83DC # +0xB5E7 0x8407 # +0xB5E8 0x83D4 # +0xB5E9 0x83DF # +0xB5EA 0x865B # +0xB5EB 0x86DF # +0xB5EC 0x86D9 # +0xB5ED 0x86ED # +0xB5EE 0x86D4 # +0xB5EF 0x86DB # +0xB5F0 0x86E4 # +0xB5F1 0x86D0 # +0xB5F2 0x86DE # +0xB5F3 0x8857 # +0xB5F4 0x88C1 # +0xB5F5 0x88C2 # +0xB5F6 0x88B1 # +0xB5F7 0x8983 # +0xB5F8 0x8996 # +0xB5F9 0x8A3B # +0xB5FA 0x8A60 # +0xB5FB 0x8A55 # +0xB5FC 0x8A5E # +0xB5FD 0x8A3C # +0xB5FE 0x8A41 # +0xB640 0x8A54 # +0xB641 0x8A5B # +0xB642 0x8A50 # +0xB643 0x8A46 # +0xB644 0x8A34 # +0xB645 0x8A3A # +0xB646 0x8A36 # +0xB647 0x8A56 # +0xB648 0x8C61 # +0xB649 0x8C82 # +0xB64A 0x8CAF # +0xB64B 0x8CBC # +0xB64C 0x8CB3 # +0xB64D 0x8CBD # +0xB64E 0x8CC1 # +0xB64F 0x8CBB # +0xB650 0x8CC0 # +0xB651 0x8CB4 # +0xB652 0x8CB7 # +0xB653 0x8CB6 # +0xB654 0x8CBF # +0xB655 0x8CB8 # +0xB656 0x8D8A # +0xB657 0x8D85 # +0xB658 0x8D81 # +0xB659 0x8DCE # +0xB65A 0x8DDD # +0xB65B 0x8DCB # +0xB65C 0x8DDA # +0xB65D 0x8DD1 # +0xB65E 0x8DCC # +0xB65F 0x8DDB # +0xB660 0x8DC6 # +0xB661 0x8EFB # +0xB662 0x8EF8 # +0xB663 0x8EFC # +0xB664 0x8F9C # +0xB665 0x902E # +0xB666 0x9035 # +0xB667 0x9031 # +0xB668 0x9038 # +0xB669 0x9032 # +0xB66A 0x9036 # +0xB66B 0x9102 # +0xB66C 0x90F5 # +0xB66D 0x9109 # +0xB66E 0x90FE # +0xB66F 0x9163 # +0xB670 0x9165 # +0xB671 0x91CF # +0xB672 0x9214 # +0xB673 0x9215 # +0xB674 0x9223 # +0xB675 0x9209 # +0xB676 0x921E # +0xB677 0x920D # +0xB678 0x9210 # +0xB679 0x9207 # +0xB67A 0x9211 # +0xB67B 0x9594 # +0xB67C 0x958F # +0xB67D 0x958B # +0xB67E 0x9591 # +0xB6A1 0x9593 # +0xB6A2 0x9592 # +0xB6A3 0x958E # +0xB6A4 0x968A # +0xB6A5 0x968E # +0xB6A6 0x968B # +0xB6A7 0x967D # +0xB6A8 0x9685 # +0xB6A9 0x9686 # +0xB6AA 0x968D # +0xB6AB 0x9672 # +0xB6AC 0x9684 # +0xB6AD 0x96C1 # +0xB6AE 0x96C5 # +0xB6AF 0x96C4 # +0xB6B0 0x96C6 # +0xB6B1 0x96C7 # +0xB6B2 0x96EF # +0xB6B3 0x96F2 # +0xB6B4 0x97CC # +0xB6B5 0x9805 # +0xB6B6 0x9806 # +0xB6B7 0x9808 # +0xB6B8 0x98E7 # +0xB6B9 0x98EA # +0xB6BA 0x98EF # +0xB6BB 0x98E9 # +0xB6BC 0x98F2 # +0xB6BD 0x98ED # +0xB6BE 0x99AE # +0xB6BF 0x99AD # +0xB6C0 0x9EC3 # +0xB6C1 0x9ECD # +0xB6C2 0x9ED1 # +0xB6C3 0x4E82 # +0xB6C4 0x50AD # +0xB6C5 0x50B5 # +0xB6C6 0x50B2 # +0xB6C7 0x50B3 # +0xB6C8 0x50C5 # +0xB6C9 0x50BE # +0xB6CA 0x50AC # +0xB6CB 0x50B7 # +0xB6CC 0x50BB # +0xB6CD 0x50AF # +0xB6CE 0x50C7 # +0xB6CF 0x527F # +0xB6D0 0x5277 # +0xB6D1 0x527D # +0xB6D2 0x52DF # +0xB6D3 0x52E6 # +0xB6D4 0x52E4 # +0xB6D5 0x52E2 # +0xB6D6 0x52E3 # +0xB6D7 0x532F # +0xB6D8 0x55DF # +0xB6D9 0x55E8 # +0xB6DA 0x55D3 # +0xB6DB 0x55E6 # +0xB6DC 0x55CE # +0xB6DD 0x55DC # +0xB6DE 0x55C7 # +0xB6DF 0x55D1 # +0xB6E0 0x55E3 # +0xB6E1 0x55E4 # +0xB6E2 0x55EF # +0xB6E3 0x55DA # +0xB6E4 0x55E1 # +0xB6E5 0x55C5 # +0xB6E6 0x55C6 # +0xB6E7 0x55E5 # +0xB6E8 0x55C9 # +0xB6E9 0x5712 # +0xB6EA 0x5713 # +0xB6EB 0x585E # +0xB6EC 0x5851 # +0xB6ED 0x5858 # +0xB6EE 0x5857 # +0xB6EF 0x585A # +0xB6F0 0x5854 # +0xB6F1 0x586B # +0xB6F2 0x584C # +0xB6F3 0x586D # +0xB6F4 0x584A # +0xB6F5 0x5862 # +0xB6F6 0x5852 # +0xB6F7 0x584B # +0xB6F8 0x5967 # +0xB6F9 0x5AC1 # +0xB6FA 0x5AC9 # +0xB6FB 0x5ACC # +0xB6FC 0x5ABE # +0xB6FD 0x5ABD # +0xB6FE 0x5ABC # +0xB740 0x5AB3 # +0xB741 0x5AC2 # +0xB742 0x5AB2 # +0xB743 0x5D69 # +0xB744 0x5D6F # +0xB745 0x5E4C # +0xB746 0x5E79 # +0xB747 0x5EC9 # +0xB748 0x5EC8 # +0xB749 0x5F12 # +0xB74A 0x5F59 # +0xB74B 0x5FAC # +0xB74C 0x5FAE # +0xB74D 0x611A # +0xB74E 0x610F # +0xB74F 0x6148 # +0xB750 0x611F # +0xB751 0x60F3 # +0xB752 0x611B # +0xB753 0x60F9 # +0xB754 0x6101 # +0xB755 0x6108 # +0xB756 0x614E # +0xB757 0x614C # +0xB758 0x6144 # +0xB759 0x614D # +0xB75A 0x613E # +0xB75B 0x6134 # +0xB75C 0x6127 # +0xB75D 0x610D # +0xB75E 0x6106 # +0xB75F 0x6137 # +0xB760 0x6221 # +0xB761 0x6222 # +0xB762 0x6413 # +0xB763 0x643E # +0xB764 0x641E # +0xB765 0x642A # +0xB766 0x642D # +0xB767 0x643D # +0xB768 0x642C # +0xB769 0x640F # +0xB76A 0x641C # +0xB76B 0x6414 # +0xB76C 0x640D # +0xB76D 0x6436 # +0xB76E 0x6416 # +0xB76F 0x6417 # +0xB770 0x6406 # +0xB771 0x656C # +0xB772 0x659F # +0xB773 0x65B0 # +0xB774 0x6697 # +0xB775 0x6689 # +0xB776 0x6687 # +0xB777 0x6688 # +0xB778 0x6696 # +0xB779 0x6684 # +0xB77A 0x6698 # +0xB77B 0x668D # +0xB77C 0x6703 # +0xB77D 0x6994 # +0xB77E 0x696D # +0xB7A1 0x695A # +0xB7A2 0x6977 # +0xB7A3 0x6960 # +0xB7A4 0x6954 # +0xB7A5 0x6975 # +0xB7A6 0x6930 # +0xB7A7 0x6982 # +0xB7A8 0x694A # +0xB7A9 0x6968 # +0xB7AA 0x696B # +0xB7AB 0x695E # +0xB7AC 0x6953 # +0xB7AD 0x6979 # +0xB7AE 0x6986 # +0xB7AF 0x695D # +0xB7B0 0x6963 # +0xB7B1 0x695B # +0xB7B2 0x6B47 # +0xB7B3 0x6B72 # +0xB7B4 0x6BC0 # +0xB7B5 0x6BBF # +0xB7B6 0x6BD3 # +0xB7B7 0x6BFD # +0xB7B8 0x6EA2 # +0xB7B9 0x6EAF # +0xB7BA 0x6ED3 # +0xB7BB 0x6EB6 # +0xB7BC 0x6EC2 # +0xB7BD 0x6E90 # +0xB7BE 0x6E9D # +0xB7BF 0x6EC7 # +0xB7C0 0x6EC5 # +0xB7C1 0x6EA5 # +0xB7C2 0x6E98 # +0xB7C3 0x6EBC # +0xB7C4 0x6EBA # +0xB7C5 0x6EAB # +0xB7C6 0x6ED1 # +0xB7C7 0x6E96 # +0xB7C8 0x6E9C # +0xB7C9 0x6EC4 # +0xB7CA 0x6ED4 # +0xB7CB 0x6EAA # +0xB7CC 0x6EA7 # +0xB7CD 0x6EB4 # +0xB7CE 0x714E # +0xB7CF 0x7159 # +0xB7D0 0x7169 # +0xB7D1 0x7164 # +0xB7D2 0x7149 # +0xB7D3 0x7167 # +0xB7D4 0x715C # +0xB7D5 0x716C # +0xB7D6 0x7166 # +0xB7D7 0x714C # +0xB7D8 0x7165 # +0xB7D9 0x715E # +0xB7DA 0x7146 # +0xB7DB 0x7168 # +0xB7DC 0x7156 # +0xB7DD 0x723A # +0xB7DE 0x7252 # +0xB7DF 0x7337 # +0xB7E0 0x7345 # +0xB7E1 0x733F # +0xB7E2 0x733E # +0xB7E3 0x746F # +0xB7E4 0x745A # +0xB7E5 0x7455 # +0xB7E6 0x745F # +0xB7E7 0x745E # +0xB7E8 0x7441 # +0xB7E9 0x743F # +0xB7EA 0x7459 # +0xB7EB 0x745B # +0xB7EC 0x745C # +0xB7ED 0x7576 # +0xB7EE 0x7578 # +0xB7EF 0x7600 # +0xB7F0 0x75F0 # +0xB7F1 0x7601 # +0xB7F2 0x75F2 # +0xB7F3 0x75F1 # +0xB7F4 0x75FA # +0xB7F5 0x75FF # +0xB7F6 0x75F4 # +0xB7F7 0x75F3 # +0xB7F8 0x76DE # +0xB7F9 0x76DF # +0xB7FA 0x775B # +0xB7FB 0x776B # +0xB7FC 0x7766 # +0xB7FD 0x775E # +0xB7FE 0x7763 # +0xB840 0x7779 # +0xB841 0x776A # +0xB842 0x776C # +0xB843 0x775C # +0xB844 0x7765 # +0xB845 0x7768 # +0xB846 0x7762 # +0xB847 0x77EE # +0xB848 0x788E # +0xB849 0x78B0 # +0xB84A 0x7897 # +0xB84B 0x7898 # +0xB84C 0x788C # +0xB84D 0x7889 # +0xB84E 0x787C # +0xB84F 0x7891 # +0xB850 0x7893 # +0xB851 0x787F # +0xB852 0x797A # +0xB853 0x797F # +0xB854 0x7981 # +0xB855 0x842C # +0xB856 0x79BD # +0xB857 0x7A1C # +0xB858 0x7A1A # +0xB859 0x7A20 # +0xB85A 0x7A14 # +0xB85B 0x7A1F # +0xB85C 0x7A1E # +0xB85D 0x7A9F # +0xB85E 0x7AA0 # +0xB85F 0x7B77 # +0xB860 0x7BC0 # +0xB861 0x7B60 # +0xB862 0x7B6E # +0xB863 0x7B67 # +0xB864 0x7CB1 # +0xB865 0x7CB3 # +0xB866 0x7CB5 # +0xB867 0x7D93 # +0xB868 0x7D79 # +0xB869 0x7D91 # +0xB86A 0x7D81 # +0xB86B 0x7D8F # +0xB86C 0x7D5B # +0xB86D 0x7F6E # +0xB86E 0x7F69 # +0xB86F 0x7F6A # +0xB870 0x7F72 # +0xB871 0x7FA9 # +0xB872 0x7FA8 # +0xB873 0x7FA4 # +0xB874 0x8056 # +0xB875 0x8058 # +0xB876 0x8086 # +0xB877 0x8084 # +0xB878 0x8171 # +0xB879 0x8170 # +0xB87A 0x8178 # +0xB87B 0x8165 # +0xB87C 0x816E # +0xB87D 0x8173 # +0xB87E 0x816B # +0xB8A1 0x8179 # +0xB8A2 0x817A # +0xB8A3 0x8166 # +0xB8A4 0x8205 # +0xB8A5 0x8247 # +0xB8A6 0x8482 # +0xB8A7 0x8477 # +0xB8A8 0x843D # +0xB8A9 0x8431 # +0xB8AA 0x8475 # +0xB8AB 0x8466 # +0xB8AC 0x846B # +0xB8AD 0x8449 # +0xB8AE 0x846C # +0xB8AF 0x845B # +0xB8B0 0x843C # +0xB8B1 0x8435 # +0xB8B2 0x8461 # +0xB8B3 0x8463 # +0xB8B4 0x8469 # +0xB8B5 0x846D # +0xB8B6 0x8446 # +0xB8B7 0x865E # +0xB8B8 0x865C # +0xB8B9 0x865F # +0xB8BA 0x86F9 # +0xB8BB 0x8713 # +0xB8BC 0x8708 # +0xB8BD 0x8707 # +0xB8BE 0x8700 # +0xB8BF 0x86FE # +0xB8C0 0x86FB # +0xB8C1 0x8702 # +0xB8C2 0x8703 # +0xB8C3 0x8706 # +0xB8C4 0x870A # +0xB8C5 0x8859 # +0xB8C6 0x88DF # +0xB8C7 0x88D4 # +0xB8C8 0x88D9 # +0xB8C9 0x88DC # +0xB8CA 0x88D8 # +0xB8CB 0x88DD # +0xB8CC 0x88E1 # +0xB8CD 0x88CA # +0xB8CE 0x88D5 # +0xB8CF 0x88D2 # +0xB8D0 0x899C # +0xB8D1 0x89E3 # +0xB8D2 0x8A6B # +0xB8D3 0x8A72 # +0xB8D4 0x8A73 # +0xB8D5 0x8A66 # +0xB8D6 0x8A69 # +0xB8D7 0x8A70 # +0xB8D8 0x8A87 # +0xB8D9 0x8A7C # +0xB8DA 0x8A63 # +0xB8DB 0x8AA0 # +0xB8DC 0x8A71 # +0xB8DD 0x8A85 # +0xB8DE 0x8A6D # +0xB8DF 0x8A62 # +0xB8E0 0x8A6E # +0xB8E1 0x8A6C # +0xB8E2 0x8A79 # +0xB8E3 0x8A7B # +0xB8E4 0x8A3E # +0xB8E5 0x8A68 # +0xB8E6 0x8C62 # +0xB8E7 0x8C8A # +0xB8E8 0x8C89 # +0xB8E9 0x8CCA # +0xB8EA 0x8CC7 # +0xB8EB 0x8CC8 # +0xB8EC 0x8CC4 # +0xB8ED 0x8CB2 # +0xB8EE 0x8CC3 # +0xB8EF 0x8CC2 # +0xB8F0 0x8CC5 # +0xB8F1 0x8DE1 # +0xB8F2 0x8DDF # +0xB8F3 0x8DE8 # +0xB8F4 0x8DEF # +0xB8F5 0x8DF3 # +0xB8F6 0x8DFA # +0xB8F7 0x8DEA # +0xB8F8 0x8DE4 # +0xB8F9 0x8DE6 # +0xB8FA 0x8EB2 # +0xB8FB 0x8F03 # +0xB8FC 0x8F09 # +0xB8FD 0x8EFE # +0xB8FE 0x8F0A # +0xB940 0x8F9F # +0xB941 0x8FB2 # +0xB942 0x904B # +0xB943 0x904A # +0xB944 0x9053 # +0xB945 0x9042 # +0xB946 0x9054 # +0xB947 0x903C # +0xB948 0x9055 # +0xB949 0x9050 # +0xB94A 0x9047 # +0xB94B 0x904F # +0xB94C 0x904E # +0xB94D 0x904D # +0xB94E 0x9051 # +0xB94F 0x903E # +0xB950 0x9041 # +0xB951 0x9112 # +0xB952 0x9117 # +0xB953 0x916C # +0xB954 0x916A # +0xB955 0x9169 # +0xB956 0x91C9 # +0xB957 0x9237 # +0xB958 0x9257 # +0xB959 0x9238 # +0xB95A 0x923D # +0xB95B 0x9240 # +0xB95C 0x923E # +0xB95D 0x925B # +0xB95E 0x924B # +0xB95F 0x9264 # +0xB960 0x9251 # +0xB961 0x9234 # +0xB962 0x9249 # +0xB963 0x924D # +0xB964 0x9245 # +0xB965 0x9239 # +0xB966 0x923F # +0xB967 0x925A # +0xB968 0x9598 # +0xB969 0x9698 # +0xB96A 0x9694 # +0xB96B 0x9695 # +0xB96C 0x96CD # +0xB96D 0x96CB # +0xB96E 0x96C9 # +0xB96F 0x96CA # +0xB970 0x96F7 # +0xB971 0x96FB # +0xB972 0x96F9 # +0xB973 0x96F6 # +0xB974 0x9756 # +0xB975 0x9774 # +0xB976 0x9776 # +0xB977 0x9810 # +0xB978 0x9811 # +0xB979 0x9813 # +0xB97A 0x980A # +0xB97B 0x9812 # +0xB97C 0x980C # +0xB97D 0x98FC # +0xB97E 0x98F4 # +0xB9A1 0x98FD # +0xB9A2 0x98FE # +0xB9A3 0x99B3 # +0xB9A4 0x99B1 # +0xB9A5 0x99B4 # +0xB9A6 0x9AE1 # +0xB9A7 0x9CE9 # +0xB9A8 0x9E82 # +0xB9A9 0x9F0E # +0xB9AA 0x9F13 # +0xB9AB 0x9F20 # +0xB9AC 0x50E7 # +0xB9AD 0x50EE # +0xB9AE 0x50E5 # +0xB9AF 0x50D6 # +0xB9B0 0x50ED # +0xB9B1 0x50DA # +0xB9B2 0x50D5 # +0xB9B3 0x50CF # +0xB9B4 0x50D1 # +0xB9B5 0x50F1 # +0xB9B6 0x50CE # +0xB9B7 0x50E9 # +0xB9B8 0x5162 # +0xB9B9 0x51F3 # +0xB9BA 0x5283 # +0xB9BB 0x5282 # +0xB9BC 0x5331 # +0xB9BD 0x53AD # +0xB9BE 0x55FE # +0xB9BF 0x5600 # +0xB9C0 0x561B # +0xB9C1 0x5617 # +0xB9C2 0x55FD # +0xB9C3 0x5614 # +0xB9C4 0x5606 # +0xB9C5 0x5609 # +0xB9C6 0x560D # +0xB9C7 0x560E # +0xB9C8 0x55F7 # +0xB9C9 0x5616 # +0xB9CA 0x561F # +0xB9CB 0x5608 # +0xB9CC 0x5610 # +0xB9CD 0x55F6 # +0xB9CE 0x5718 # +0xB9CF 0x5716 # +0xB9D0 0x5875 # +0xB9D1 0x587E # +0xB9D2 0x5883 # +0xB9D3 0x5893 # +0xB9D4 0x588A # +0xB9D5 0x5879 # +0xB9D6 0x5885 # +0xB9D7 0x587D # +0xB9D8 0x58FD # +0xB9D9 0x5925 # +0xB9DA 0x5922 # +0xB9DB 0x5924 # +0xB9DC 0x596A # +0xB9DD 0x5969 # +0xB9DE 0x5AE1 # +0xB9DF 0x5AE6 # +0xB9E0 0x5AE9 # +0xB9E1 0x5AD7 # +0xB9E2 0x5AD6 # +0xB9E3 0x5AD8 # +0xB9E4 0x5AE3 # +0xB9E5 0x5B75 # +0xB9E6 0x5BDE # +0xB9E7 0x5BE7 # +0xB9E8 0x5BE1 # +0xB9E9 0x5BE5 # +0xB9EA 0x5BE6 # +0xB9EB 0x5BE8 # +0xB9EC 0x5BE2 # +0xB9ED 0x5BE4 # +0xB9EE 0x5BDF # +0xB9EF 0x5C0D # +0xB9F0 0x5C62 # +0xB9F1 0x5D84 # +0xB9F2 0x5D87 # +0xB9F3 0x5E5B # +0xB9F4 0x5E63 # +0xB9F5 0x5E55 # +0xB9F6 0x5E57 # +0xB9F7 0x5E54 # +0xB9F8 0x5ED3 # +0xB9F9 0x5ED6 # +0xB9FA 0x5F0A # +0xB9FB 0x5F46 # +0xB9FC 0x5F70 # +0xB9FD 0x5FB9 # +0xB9FE 0x6147 # +0xBA40 0x613F # +0xBA41 0x614B # +0xBA42 0x6177 # +0xBA43 0x6162 # +0xBA44 0x6163 # +0xBA45 0x615F # +0xBA46 0x615A # +0xBA47 0x6158 # +0xBA48 0x6175 # +0xBA49 0x622A # +0xBA4A 0x6487 # +0xBA4B 0x6458 # +0xBA4C 0x6454 # +0xBA4D 0x64A4 # +0xBA4E 0x6478 # +0xBA4F 0x645F # +0xBA50 0x647A # +0xBA51 0x6451 # +0xBA52 0x6467 # +0xBA53 0x6434 # +0xBA54 0x646D # +0xBA55 0x647B # +0xBA56 0x6572 # +0xBA57 0x65A1 # +0xBA58 0x65D7 # +0xBA59 0x65D6 # +0xBA5A 0x66A2 # +0xBA5B 0x66A8 # +0xBA5C 0x669D # +0xBA5D 0x699C # +0xBA5E 0x69A8 # +0xBA5F 0x6995 # +0xBA60 0x69C1 # +0xBA61 0x69AE # +0xBA62 0x69D3 # +0xBA63 0x69CB # +0xBA64 0x699B # +0xBA65 0x69B7 # +0xBA66 0x69BB # +0xBA67 0x69AB # +0xBA68 0x69B4 # +0xBA69 0x69D0 # +0xBA6A 0x69CD # +0xBA6B 0x69AD # +0xBA6C 0x69CC # +0xBA6D 0x69A6 # +0xBA6E 0x69C3 # +0xBA6F 0x69A3 # +0xBA70 0x6B49 # +0xBA71 0x6B4C # +0xBA72 0x6C33 # +0xBA73 0x6F33 # +0xBA74 0x6F14 # +0xBA75 0x6EFE # +0xBA76 0x6F13 # +0xBA77 0x6EF4 # +0xBA78 0x6F29 # +0xBA79 0x6F3E # +0xBA7A 0x6F20 # +0xBA7B 0x6F2C # +0xBA7C 0x6F0F # +0xBA7D 0x6F02 # +0xBA7E 0x6F22 # +0xBAA1 0x6EFF # +0xBAA2 0x6EEF # +0xBAA3 0x6F06 # +0xBAA4 0x6F31 # +0xBAA5 0x6F38 # +0xBAA6 0x6F32 # +0xBAA7 0x6F23 # +0xBAA8 0x6F15 # +0xBAA9 0x6F2B # +0xBAAA 0x6F2F # +0xBAAB 0x6F88 # +0xBAAC 0x6F2A # +0xBAAD 0x6EEC # +0xBAAE 0x6F01 # +0xBAAF 0x6EF2 # +0xBAB0 0x6ECC # +0xBAB1 0x6EF7 # +0xBAB2 0x7194 # +0xBAB3 0x7199 # +0xBAB4 0x717D # +0xBAB5 0x718A # +0xBAB6 0x7184 # +0xBAB7 0x7192 # +0xBAB8 0x723E # +0xBAB9 0x7292 # +0xBABA 0x7296 # +0xBABB 0x7344 # +0xBABC 0x7350 # +0xBABD 0x7464 # +0xBABE 0x7463 # +0xBABF 0x746A # +0xBAC0 0x7470 # +0xBAC1 0x746D # +0xBAC2 0x7504 # +0xBAC3 0x7591 # +0xBAC4 0x7627 # +0xBAC5 0x760D # +0xBAC6 0x760B # +0xBAC7 0x7609 # +0xBAC8 0x7613 # +0xBAC9 0x76E1 # +0xBACA 0x76E3 # +0xBACB 0x7784 # +0xBACC 0x777D # +0xBACD 0x777F # +0xBACE 0x7761 # +0xBACF 0x78C1 # +0xBAD0 0x789F # +0xBAD1 0x78A7 # +0xBAD2 0x78B3 # +0xBAD3 0x78A9 # +0xBAD4 0x78A3 # +0xBAD5 0x798E # +0xBAD6 0x798F # +0xBAD7 0x798D # +0xBAD8 0x7A2E # +0xBAD9 0x7A31 # +0xBADA 0x7AAA # +0xBADB 0x7AA9 # +0xBADC 0x7AED # +0xBADD 0x7AEF # +0xBADE 0x7BA1 # +0xBADF 0x7B95 # +0xBAE0 0x7B8B # +0xBAE1 0x7B75 # +0xBAE2 0x7B97 # +0xBAE3 0x7B9D # +0xBAE4 0x7B94 # +0xBAE5 0x7B8F # +0xBAE6 0x7BB8 # +0xBAE7 0x7B87 # +0xBAE8 0x7B84 # +0xBAE9 0x7CB9 # +0xBAEA 0x7CBD # +0xBAEB 0x7CBE # +0xBAEC 0x7DBB # +0xBAED 0x7DB0 # +0xBAEE 0x7D9C # +0xBAEF 0x7DBD # +0xBAF0 0x7DBE # +0xBAF1 0x7DA0 # +0xBAF2 0x7DCA # +0xBAF3 0x7DB4 # +0xBAF4 0x7DB2 # +0xBAF5 0x7DB1 # +0xBAF6 0x7DBA # +0xBAF7 0x7DA2 # +0xBAF8 0x7DBF # +0xBAF9 0x7DB5 # +0xBAFA 0x7DB8 # +0xBAFB 0x7DAD # +0xBAFC 0x7DD2 # +0xBAFD 0x7DC7 # +0xBAFE 0x7DAC # +0xBB40 0x7F70 # +0xBB41 0x7FE0 # +0xBB42 0x7FE1 # +0xBB43 0x7FDF # +0xBB44 0x805E # +0xBB45 0x805A # +0xBB46 0x8087 # +0xBB47 0x8150 # +0xBB48 0x8180 # +0xBB49 0x818F # +0xBB4A 0x8188 # +0xBB4B 0x818A # +0xBB4C 0x817F # +0xBB4D 0x8182 # +0xBB4E 0x81E7 # +0xBB4F 0x81FA # +0xBB50 0x8207 # +0xBB51 0x8214 # +0xBB52 0x821E # +0xBB53 0x824B # +0xBB54 0x84C9 # +0xBB55 0x84BF # +0xBB56 0x84C6 # +0xBB57 0x84C4 # +0xBB58 0x8499 # +0xBB59 0x849E # +0xBB5A 0x84B2 # +0xBB5B 0x849C # +0xBB5C 0x84CB # +0xBB5D 0x84B8 # +0xBB5E 0x84C0 # +0xBB5F 0x84D3 # +0xBB60 0x8490 # +0xBB61 0x84BC # +0xBB62 0x84D1 # +0xBB63 0x84CA # +0xBB64 0x873F # +0xBB65 0x871C # +0xBB66 0x873B # +0xBB67 0x8722 # +0xBB68 0x8725 # +0xBB69 0x8734 # +0xBB6A 0x8718 # +0xBB6B 0x8755 # +0xBB6C 0x8737 # +0xBB6D 0x8729 # +0xBB6E 0x88F3 # +0xBB6F 0x8902 # +0xBB70 0x88F4 # +0xBB71 0x88F9 # +0xBB72 0x88F8 # +0xBB73 0x88FD # +0xBB74 0x88E8 # +0xBB75 0x891A # +0xBB76 0x88EF # +0xBB77 0x8AA6 # +0xBB78 0x8A8C # +0xBB79 0x8A9E # +0xBB7A 0x8AA3 # +0xBB7B 0x8A8D # +0xBB7C 0x8AA1 # +0xBB7D 0x8A93 # +0xBB7E 0x8AA4 # +0xBBA1 0x8AAA # +0xBBA2 0x8AA5 # +0xBBA3 0x8AA8 # +0xBBA4 0x8A98 # +0xBBA5 0x8A91 # +0xBBA6 0x8A9A # +0xBBA7 0x8AA7 # +0xBBA8 0x8C6A # +0xBBA9 0x8C8D # +0xBBAA 0x8C8C # +0xBBAB 0x8CD3 # +0xBBAC 0x8CD1 # +0xBBAD 0x8CD2 # +0xBBAE 0x8D6B # +0xBBAF 0x8D99 # +0xBBB0 0x8D95 # +0xBBB1 0x8DFC # +0xBBB2 0x8F14 # +0xBBB3 0x8F12 # +0xBBB4 0x8F15 # +0xBBB5 0x8F13 # +0xBBB6 0x8FA3 # +0xBBB7 0x9060 # +0xBBB8 0x9058 # +0xBBB9 0x905C # +0xBBBA 0x9063 # +0xBBBB 0x9059 # +0xBBBC 0x905E # +0xBBBD 0x9062 # +0xBBBE 0x905D # +0xBBBF 0x905B # +0xBBC0 0x9119 # +0xBBC1 0x9118 # +0xBBC2 0x911E # +0xBBC3 0x9175 # +0xBBC4 0x9178 # +0xBBC5 0x9177 # +0xBBC6 0x9174 # +0xBBC7 0x9278 # +0xBBC8 0x9280 # +0xBBC9 0x9285 # +0xBBCA 0x9298 # +0xBBCB 0x9296 # +0xBBCC 0x927B # +0xBBCD 0x9293 # +0xBBCE 0x929C # +0xBBCF 0x92A8 # +0xBBD0 0x927C # +0xBBD1 0x9291 # +0xBBD2 0x95A1 # +0xBBD3 0x95A8 # +0xBBD4 0x95A9 # +0xBBD5 0x95A3 # +0xBBD6 0x95A5 # +0xBBD7 0x95A4 # +0xBBD8 0x9699 # +0xBBD9 0x969C # +0xBBDA 0x969B # +0xBBDB 0x96CC # +0xBBDC 0x96D2 # +0xBBDD 0x9700 # +0xBBDE 0x977C # +0xBBDF 0x9785 # +0xBBE0 0x97F6 # +0xBBE1 0x9817 # +0xBBE2 0x9818 # +0xBBE3 0x98AF # +0xBBE4 0x98B1 # +0xBBE5 0x9903 # +0xBBE6 0x9905 # +0xBBE7 0x990C # +0xBBE8 0x9909 # +0xBBE9 0x99C1 # +0xBBEA 0x9AAF # +0xBBEB 0x9AB0 # +0xBBEC 0x9AE6 # +0xBBED 0x9B41 # +0xBBEE 0x9B42 # +0xBBEF 0x9CF4 # +0xBBF0 0x9CF6 # +0xBBF1 0x9CF3 # +0xBBF2 0x9EBC # +0xBBF3 0x9F3B # +0xBBF4 0x9F4A # +0xBBF5 0x5104 # +0xBBF6 0x5100 # +0xBBF7 0x50FB # +0xBBF8 0x50F5 # +0xBBF9 0x50F9 # +0xBBFA 0x5102 # +0xBBFB 0x5108 # +0xBBFC 0x5109 # +0xBBFD 0x5105 # +0xBBFE 0x51DC # +0xBC40 0x5287 # +0xBC41 0x5288 # +0xBC42 0x5289 # +0xBC43 0x528D # +0xBC44 0x528A # +0xBC45 0x52F0 # +0xBC46 0x53B2 # +0xBC47 0x562E # +0xBC48 0x563B # +0xBC49 0x5639 # +0xBC4A 0x5632 # +0xBC4B 0x563F # +0xBC4C 0x5634 # +0xBC4D 0x5629 # +0xBC4E 0x5653 # +0xBC4F 0x564E # +0xBC50 0x5657 # +0xBC51 0x5674 # +0xBC52 0x5636 # +0xBC53 0x562F # +0xBC54 0x5630 # +0xBC55 0x5880 # +0xBC56 0x589F # +0xBC57 0x589E # +0xBC58 0x58B3 # +0xBC59 0x589C # +0xBC5A 0x58AE # +0xBC5B 0x58A9 # +0xBC5C 0x58A6 # +0xBC5D 0x596D # +0xBC5E 0x5B09 # +0xBC5F 0x5AFB # +0xBC60 0x5B0B # +0xBC61 0x5AF5 # +0xBC62 0x5B0C # +0xBC63 0x5B08 # +0xBC64 0x5BEE # +0xBC65 0x5BEC # +0xBC66 0x5BE9 # +0xBC67 0x5BEB # +0xBC68 0x5C64 # +0xBC69 0x5C65 # +0xBC6A 0x5D9D # +0xBC6B 0x5D94 # +0xBC6C 0x5E62 # +0xBC6D 0x5E5F # +0xBC6E 0x5E61 # +0xBC6F 0x5EE2 # +0xBC70 0x5EDA # +0xBC71 0x5EDF # +0xBC72 0x5EDD # +0xBC73 0x5EE3 # +0xBC74 0x5EE0 # +0xBC75 0x5F48 # +0xBC76 0x5F71 # +0xBC77 0x5FB7 # +0xBC78 0x5FB5 # +0xBC79 0x6176 # +0xBC7A 0x6167 # +0xBC7B 0x616E # +0xBC7C 0x615D # +0xBC7D 0x6155 # +0xBC7E 0x6182 # +0xBCA1 0x617C # +0xBCA2 0x6170 # +0xBCA3 0x616B # +0xBCA4 0x617E # +0xBCA5 0x61A7 # +0xBCA6 0x6190 # +0xBCA7 0x61AB # +0xBCA8 0x618E # +0xBCA9 0x61AC # +0xBCAA 0x619A # +0xBCAB 0x61A4 # +0xBCAC 0x6194 # +0xBCAD 0x61AE # +0xBCAE 0x622E # +0xBCAF 0x6469 # +0xBCB0 0x646F # +0xBCB1 0x6479 # +0xBCB2 0x649E # +0xBCB3 0x64B2 # +0xBCB4 0x6488 # +0xBCB5 0x6490 # +0xBCB6 0x64B0 # +0xBCB7 0x64A5 # +0xBCB8 0x6493 # +0xBCB9 0x6495 # +0xBCBA 0x64A9 # +0xBCBB 0x6492 # +0xBCBC 0x64AE # +0xBCBD 0x64AD # +0xBCBE 0x64AB # +0xBCBF 0x649A # +0xBCC0 0x64AC # +0xBCC1 0x6499 # +0xBCC2 0x64A2 # +0xBCC3 0x64B3 # +0xBCC4 0x6575 # +0xBCC5 0x6577 # +0xBCC6 0x6578 # +0xBCC7 0x66AE # +0xBCC8 0x66AB # +0xBCC9 0x66B4 # +0xBCCA 0x66B1 # +0xBCCB 0x6A23 # +0xBCCC 0x6A1F # +0xBCCD 0x69E8 # +0xBCCE 0x6A01 # +0xBCCF 0x6A1E # +0xBCD0 0x6A19 # +0xBCD1 0x69FD # +0xBCD2 0x6A21 # +0xBCD3 0x6A13 # +0xBCD4 0x6A0A # +0xBCD5 0x69F3 # +0xBCD6 0x6A02 # +0xBCD7 0x6A05 # +0xBCD8 0x69ED # +0xBCD9 0x6A11 # +0xBCDA 0x6B50 # +0xBCDB 0x6B4E # +0xBCDC 0x6BA4 # +0xBCDD 0x6BC5 # +0xBCDE 0x6BC6 # +0xBCDF 0x6F3F # +0xBCE0 0x6F7C # +0xBCE1 0x6F84 # +0xBCE2 0x6F51 # +0xBCE3 0x6F66 # +0xBCE4 0x6F54 # +0xBCE5 0x6F86 # +0xBCE6 0x6F6D # +0xBCE7 0x6F5B # +0xBCE8 0x6F78 # +0xBCE9 0x6F6E # +0xBCEA 0x6F8E # +0xBCEB 0x6F7A # +0xBCEC 0x6F70 # +0xBCED 0x6F64 # +0xBCEE 0x6F97 # +0xBCEF 0x6F58 # +0xBCF0 0x6ED5 # +0xBCF1 0x6F6F # +0xBCF2 0x6F60 # +0xBCF3 0x6F5F # +0xBCF4 0x719F # +0xBCF5 0x71AC # +0xBCF6 0x71B1 # +0xBCF7 0x71A8 # +0xBCF8 0x7256 # +0xBCF9 0x729B # +0xBCFA 0x734E # +0xBCFB 0x7357 # +0xBCFC 0x7469 # +0xBCFD 0x748B # +0xBCFE 0x7483 # +0xBD40 0x747E # +0xBD41 0x7480 # +0xBD42 0x757F # +0xBD43 0x7620 # +0xBD44 0x7629 # +0xBD45 0x761F # +0xBD46 0x7624 # +0xBD47 0x7626 # +0xBD48 0x7621 # +0xBD49 0x7622 # +0xBD4A 0x769A # +0xBD4B 0x76BA # +0xBD4C 0x76E4 # +0xBD4D 0x778E # +0xBD4E 0x7787 # +0xBD4F 0x778C # +0xBD50 0x7791 # +0xBD51 0x778B # +0xBD52 0x78CB # +0xBD53 0x78C5 # +0xBD54 0x78BA # +0xBD55 0x78CA # +0xBD56 0x78BE # +0xBD57 0x78D5 # +0xBD58 0x78BC # +0xBD59 0x78D0 # +0xBD5A 0x7A3F # +0xBD5B 0x7A3C # +0xBD5C 0x7A40 # +0xBD5D 0x7A3D # +0xBD5E 0x7A37 # +0xBD5F 0x7A3B # +0xBD60 0x7AAF # +0xBD61 0x7AAE # +0xBD62 0x7BAD # +0xBD63 0x7BB1 # +0xBD64 0x7BC4 # +0xBD65 0x7BB4 # +0xBD66 0x7BC6 # +0xBD67 0x7BC7 # +0xBD68 0x7BC1 # +0xBD69 0x7BA0 # +0xBD6A 0x7BCC # +0xBD6B 0x7CCA # +0xBD6C 0x7DE0 # +0xBD6D 0x7DF4 # +0xBD6E 0x7DEF # +0xBD6F 0x7DFB # +0xBD70 0x7DD8 # +0xBD71 0x7DEC # +0xBD72 0x7DDD # +0xBD73 0x7DE8 # +0xBD74 0x7DE3 # +0xBD75 0x7DDA # +0xBD76 0x7DDE # +0xBD77 0x7DE9 # +0xBD78 0x7D9E # +0xBD79 0x7DD9 # +0xBD7A 0x7DF2 # +0xBD7B 0x7DF9 # +0xBD7C 0x7F75 # +0xBD7D 0x7F77 # +0xBD7E 0x7FAF # +0xBDA1 0x7FE9 # +0xBDA2 0x8026 # +0xBDA3 0x819B # +0xBDA4 0x819C # +0xBDA5 0x819D # +0xBDA6 0x81A0 # +0xBDA7 0x819A # +0xBDA8 0x8198 # +0xBDA9 0x8517 # +0xBDAA 0x853D # +0xBDAB 0x851A # +0xBDAC 0x84EE # +0xBDAD 0x852C # +0xBDAE 0x852D # +0xBDAF 0x8513 # +0xBDB0 0x8511 # +0xBDB1 0x8523 # +0xBDB2 0x8521 # +0xBDB3 0x8514 # +0xBDB4 0x84EC # +0xBDB5 0x8525 # +0xBDB6 0x84FF # +0xBDB7 0x8506 # +0xBDB8 0x8782 # +0xBDB9 0x8774 # +0xBDBA 0x8776 # +0xBDBB 0x8760 # +0xBDBC 0x8766 # +0xBDBD 0x8778 # +0xBDBE 0x8768 # +0xBDBF 0x8759 # +0xBDC0 0x8757 # +0xBDC1 0x874C # +0xBDC2 0x8753 # +0xBDC3 0x885B # +0xBDC4 0x885D # +0xBDC5 0x8910 # +0xBDC6 0x8907 # +0xBDC7 0x8912 # +0xBDC8 0x8913 # +0xBDC9 0x8915 # +0xBDCA 0x890A # +0xBDCB 0x8ABC # +0xBDCC 0x8AD2 # +0xBDCD 0x8AC7 # +0xBDCE 0x8AC4 # +0xBDCF 0x8A95 # +0xBDD0 0x8ACB # +0xBDD1 0x8AF8 # +0xBDD2 0x8AB2 # +0xBDD3 0x8AC9 # +0xBDD4 0x8AC2 # +0xBDD5 0x8ABF # +0xBDD6 0x8AB0 # +0xBDD7 0x8AD6 # +0xBDD8 0x8ACD # +0xBDD9 0x8AB6 # +0xBDDA 0x8AB9 # +0xBDDB 0x8ADB # +0xBDDC 0x8C4C # +0xBDDD 0x8C4E # +0xBDDE 0x8C6C # +0xBDDF 0x8CE0 # +0xBDE0 0x8CDE # +0xBDE1 0x8CE6 # +0xBDE2 0x8CE4 # +0xBDE3 0x8CEC # +0xBDE4 0x8CED # +0xBDE5 0x8CE2 # +0xBDE6 0x8CE3 # +0xBDE7 0x8CDC # +0xBDE8 0x8CEA # +0xBDE9 0x8CE1 # +0xBDEA 0x8D6D # +0xBDEB 0x8D9F # +0xBDEC 0x8DA3 # +0xBDED 0x8E2B # +0xBDEE 0x8E10 # +0xBDEF 0x8E1D # +0xBDF0 0x8E22 # +0xBDF1 0x8E0F # +0xBDF2 0x8E29 # +0xBDF3 0x8E1F # +0xBDF4 0x8E21 # +0xBDF5 0x8E1E # +0xBDF6 0x8EBA # +0xBDF7 0x8F1D # +0xBDF8 0x8F1B # +0xBDF9 0x8F1F # +0xBDFA 0x8F29 # +0xBDFB 0x8F26 # +0xBDFC 0x8F2A # +0xBDFD 0x8F1C # +0xBDFE 0x8F1E # +0xBE40 0x8F25 # +0xBE41 0x9069 # +0xBE42 0x906E # +0xBE43 0x9068 # +0xBE44 0x906D # +0xBE45 0x9077 # +0xBE46 0x9130 # +0xBE47 0x912D # +0xBE48 0x9127 # +0xBE49 0x9131 # +0xBE4A 0x9187 # +0xBE4B 0x9189 # +0xBE4C 0x918B # +0xBE4D 0x9183 # +0xBE4E 0x92C5 # +0xBE4F 0x92BB # +0xBE50 0x92B7 # +0xBE51 0x92EA # +0xBE52 0x92AC # +0xBE53 0x92E4 # +0xBE54 0x92C1 # +0xBE55 0x92B3 # +0xBE56 0x92BC # +0xBE57 0x92D2 # +0xBE58 0x92C7 # +0xBE59 0x92F0 # +0xBE5A 0x92B2 # +0xBE5B 0x95AD # +0xBE5C 0x95B1 # +0xBE5D 0x9704 # +0xBE5E 0x9706 # +0xBE5F 0x9707 # +0xBE60 0x9709 # +0xBE61 0x9760 # +0xBE62 0x978D # +0xBE63 0x978B # +0xBE64 0x978F # +0xBE65 0x9821 # +0xBE66 0x982B # +0xBE67 0x981C # +0xBE68 0x98B3 # +0xBE69 0x990A # +0xBE6A 0x9913 # +0xBE6B 0x9912 # +0xBE6C 0x9918 # +0xBE6D 0x99DD # +0xBE6E 0x99D0 # +0xBE6F 0x99DF # +0xBE70 0x99DB # +0xBE71 0x99D1 # +0xBE72 0x99D5 # +0xBE73 0x99D2 # +0xBE74 0x99D9 # +0xBE75 0x9AB7 # +0xBE76 0x9AEE # +0xBE77 0x9AEF # +0xBE78 0x9B27 # +0xBE79 0x9B45 # +0xBE7A 0x9B44 # +0xBE7B 0x9B77 # +0xBE7C 0x9B6F # +0xBE7D 0x9D06 # +0xBE7E 0x9D09 # +0xBEA1 0x9D03 # +0xBEA2 0x9EA9 # +0xBEA3 0x9EBE # +0xBEA4 0x9ECE # +0xBEA5 0x58A8 # +0xBEA6 0x9F52 # +0xBEA7 0x5112 # +0xBEA8 0x5118 # +0xBEA9 0x5114 # +0xBEAA 0x5110 # +0xBEAB 0x5115 # +0xBEAC 0x5180 # +0xBEAD 0x51AA # +0xBEAE 0x51DD # +0xBEAF 0x5291 # +0xBEB0 0x5293 # +0xBEB1 0x52F3 # +0xBEB2 0x5659 # +0xBEB3 0x566B # +0xBEB4 0x5679 # +0xBEB5 0x5669 # +0xBEB6 0x5664 # +0xBEB7 0x5678 # +0xBEB8 0x566A # +0xBEB9 0x5668 # +0xBEBA 0x5665 # +0xBEBB 0x5671 # +0xBEBC 0x566F # +0xBEBD 0x566C # +0xBEBE 0x5662 # +0xBEBF 0x5676 # +0xBEC0 0x58C1 # +0xBEC1 0x58BE # +0xBEC2 0x58C7 # +0xBEC3 0x58C5 # +0xBEC4 0x596E # +0xBEC5 0x5B1D # +0xBEC6 0x5B34 # +0xBEC7 0x5B78 # +0xBEC8 0x5BF0 # +0xBEC9 0x5C0E # +0xBECA 0x5F4A # +0xBECB 0x61B2 # +0xBECC 0x6191 # +0xBECD 0x61A9 # +0xBECE 0x618A # +0xBECF 0x61CD # +0xBED0 0x61B6 # +0xBED1 0x61BE # +0xBED2 0x61CA # +0xBED3 0x61C8 # +0xBED4 0x6230 # +0xBED5 0x64C5 # +0xBED6 0x64C1 # +0xBED7 0x64CB # +0xBED8 0x64BB # +0xBED9 0x64BC # +0xBEDA 0x64DA # +0xBEDB 0x64C4 # +0xBEDC 0x64C7 # +0xBEDD 0x64C2 # +0xBEDE 0x64CD # +0xBEDF 0x64BF # +0xBEE0 0x64D2 # +0xBEE1 0x64D4 # +0xBEE2 0x64BE # +0xBEE3 0x6574 # +0xBEE4 0x66C6 # +0xBEE5 0x66C9 # +0xBEE6 0x66B9 # +0xBEE7 0x66C4 # +0xBEE8 0x66C7 # +0xBEE9 0x66B8 # +0xBEEA 0x6A3D # +0xBEEB 0x6A38 # +0xBEEC 0x6A3A # +0xBEED 0x6A59 # +0xBEEE 0x6A6B # +0xBEEF 0x6A58 # +0xBEF0 0x6A39 # +0xBEF1 0x6A44 # +0xBEF2 0x6A62 # +0xBEF3 0x6A61 # +0xBEF4 0x6A4B # +0xBEF5 0x6A47 # +0xBEF6 0x6A35 # +0xBEF7 0x6A5F # +0xBEF8 0x6A48 # +0xBEF9 0x6B59 # +0xBEFA 0x6B77 # +0xBEFB 0x6C05 # +0xBEFC 0x6FC2 # +0xBEFD 0x6FB1 # +0xBEFE 0x6FA1 # +0xBF40 0x6FC3 # +0xBF41 0x6FA4 # +0xBF42 0x6FC1 # +0xBF43 0x6FA7 # +0xBF44 0x6FB3 # +0xBF45 0x6FC0 # +0xBF46 0x6FB9 # +0xBF47 0x6FB6 # +0xBF48 0x6FA6 # +0xBF49 0x6FA0 # +0xBF4A 0x6FB4 # +0xBF4B 0x71BE # +0xBF4C 0x71C9 # +0xBF4D 0x71D0 # +0xBF4E 0x71D2 # +0xBF4F 0x71C8 # +0xBF50 0x71D5 # +0xBF51 0x71B9 # +0xBF52 0x71CE # +0xBF53 0x71D9 # +0xBF54 0x71DC # +0xBF55 0x71C3 # +0xBF56 0x71C4 # +0xBF57 0x7368 # +0xBF58 0x749C # +0xBF59 0x74A3 # +0xBF5A 0x7498 # +0xBF5B 0x749F # +0xBF5C 0x749E # +0xBF5D 0x74E2 # +0xBF5E 0x750C # +0xBF5F 0x750D # +0xBF60 0x7634 # +0xBF61 0x7638 # +0xBF62 0x763A # +0xBF63 0x76E7 # +0xBF64 0x76E5 # +0xBF65 0x77A0 # +0xBF66 0x779E # +0xBF67 0x779F # +0xBF68 0x77A5 # +0xBF69 0x78E8 # +0xBF6A 0x78DA # +0xBF6B 0x78EC # +0xBF6C 0x78E7 # +0xBF6D 0x79A6 # +0xBF6E 0x7A4D # +0xBF6F 0x7A4E # +0xBF70 0x7A46 # +0xBF71 0x7A4C # +0xBF72 0x7A4B # +0xBF73 0x7ABA # +0xBF74 0x7BD9 # +0xBF75 0x7C11 # +0xBF76 0x7BC9 # +0xBF77 0x7BE4 # +0xBF78 0x7BDB # +0xBF79 0x7BE1 # +0xBF7A 0x7BE9 # +0xBF7B 0x7BE6 # +0xBF7C 0x7CD5 # +0xBF7D 0x7CD6 # +0xBF7E 0x7E0A # +0xBFA1 0x7E11 # +0xBFA2 0x7E08 # +0xBFA3 0x7E1B # +0xBFA4 0x7E23 # +0xBFA5 0x7E1E # +0xBFA6 0x7E1D # +0xBFA7 0x7E09 # +0xBFA8 0x7E10 # +0xBFA9 0x7F79 # +0xBFAA 0x7FB2 # +0xBFAB 0x7FF0 # +0xBFAC 0x7FF1 # +0xBFAD 0x7FEE # +0xBFAE 0x8028 # +0xBFAF 0x81B3 # +0xBFB0 0x81A9 # +0xBFB1 0x81A8 # +0xBFB2 0x81FB # +0xBFB3 0x8208 # +0xBFB4 0x8258 # +0xBFB5 0x8259 # +0xBFB6 0x854A # +0xBFB7 0x8559 # +0xBFB8 0x8548 # +0xBFB9 0x8568 # +0xBFBA 0x8569 # +0xBFBB 0x8543 # +0xBFBC 0x8549 # +0xBFBD 0x856D # +0xBFBE 0x856A # +0xBFBF 0x855E # +0xBFC0 0x8783 # +0xBFC1 0x879F # +0xBFC2 0x879E # +0xBFC3 0x87A2 # +0xBFC4 0x878D # +0xBFC5 0x8861 # +0xBFC6 0x892A # +0xBFC7 0x8932 # +0xBFC8 0x8925 # +0xBFC9 0x892B # +0xBFCA 0x8921 # +0xBFCB 0x89AA # +0xBFCC 0x89A6 # +0xBFCD 0x8AE6 # +0xBFCE 0x8AFA # +0xBFCF 0x8AEB # +0xBFD0 0x8AF1 # +0xBFD1 0x8B00 # +0xBFD2 0x8ADC # +0xBFD3 0x8AE7 # +0xBFD4 0x8AEE # +0xBFD5 0x8AFE # +0xBFD6 0x8B01 # +0xBFD7 0x8B02 # +0xBFD8 0x8AF7 # +0xBFD9 0x8AED # +0xBFDA 0x8AF3 # +0xBFDB 0x8AF6 # +0xBFDC 0x8AFC # +0xBFDD 0x8C6B # +0xBFDE 0x8C6D # +0xBFDF 0x8C93 # +0xBFE0 0x8CF4 # +0xBFE1 0x8E44 # +0xBFE2 0x8E31 # +0xBFE3 0x8E34 # +0xBFE4 0x8E42 # +0xBFE5 0x8E39 # +0xBFE6 0x8E35 # +0xBFE7 0x8F3B # +0xBFE8 0x8F2F # +0xBFE9 0x8F38 # +0xBFEA 0x8F33 # +0xBFEB 0x8FA8 # +0xBFEC 0x8FA6 # +0xBFED 0x9075 # +0xBFEE 0x9074 # +0xBFEF 0x9078 # +0xBFF0 0x9072 # +0xBFF1 0x907C # +0xBFF2 0x907A # +0xBFF3 0x9134 # +0xBFF4 0x9192 # +0xBFF5 0x9320 # +0xBFF6 0x9336 # +0xBFF7 0x92F8 # +0xBFF8 0x9333 # +0xBFF9 0x932F # +0xBFFA 0x9322 # +0xBFFB 0x92FC # +0xBFFC 0x932B # +0xBFFD 0x9304 # +0xBFFE 0x931A # +0xC040 0x9310 # +0xC041 0x9326 # +0xC042 0x9321 # +0xC043 0x9315 # +0xC044 0x932E # +0xC045 0x9319 # +0xC046 0x95BB # +0xC047 0x96A7 # +0xC048 0x96A8 # +0xC049 0x96AA # +0xC04A 0x96D5 # +0xC04B 0x970E # +0xC04C 0x9711 # +0xC04D 0x9716 # +0xC04E 0x970D # +0xC04F 0x9713 # +0xC050 0x970F # +0xC051 0x975B # +0xC052 0x975C # +0xC053 0x9766 # +0xC054 0x9798 # +0xC055 0x9830 # +0xC056 0x9838 # +0xC057 0x983B # +0xC058 0x9837 # +0xC059 0x982D # +0xC05A 0x9839 # +0xC05B 0x9824 # +0xC05C 0x9910 # +0xC05D 0x9928 # +0xC05E 0x991E # +0xC05F 0x991B # +0xC060 0x9921 # +0xC061 0x991A # +0xC062 0x99ED # +0xC063 0x99E2 # +0xC064 0x99F1 # +0xC065 0x9AB8 # +0xC066 0x9ABC # +0xC067 0x9AFB # +0xC068 0x9AED # +0xC069 0x9B28 # +0xC06A 0x9B91 # +0xC06B 0x9D15 # +0xC06C 0x9D23 # +0xC06D 0x9D26 # +0xC06E 0x9D28 # +0xC06F 0x9D12 # +0xC070 0x9D1B # +0xC071 0x9ED8 # +0xC072 0x9ED4 # +0xC073 0x9F8D # +0xC074 0x9F9C # +0xC075 0x512A # +0xC076 0x511F # +0xC077 0x5121 # +0xC078 0x5132 # +0xC079 0x52F5 # +0xC07A 0x568E # +0xC07B 0x5680 # +0xC07C 0x5690 # +0xC07D 0x5685 # +0xC07E 0x5687 # +0xC0A1 0x568F # +0xC0A2 0x58D5 # +0xC0A3 0x58D3 # +0xC0A4 0x58D1 # +0xC0A5 0x58CE # +0xC0A6 0x5B30 # +0xC0A7 0x5B2A # +0xC0A8 0x5B24 # +0xC0A9 0x5B7A # +0xC0AA 0x5C37 # +0xC0AB 0x5C68 # +0xC0AC 0x5DBC # +0xC0AD 0x5DBA # +0xC0AE 0x5DBD # +0xC0AF 0x5DB8 # +0xC0B0 0x5E6B # +0xC0B1 0x5F4C # +0xC0B2 0x5FBD # +0xC0B3 0x61C9 # +0xC0B4 0x61C2 # +0xC0B5 0x61C7 # +0xC0B6 0x61E6 # +0xC0B7 0x61CB # +0xC0B8 0x6232 # +0xC0B9 0x6234 # +0xC0BA 0x64CE # +0xC0BB 0x64CA # +0xC0BC 0x64D8 # +0xC0BD 0x64E0 # +0xC0BE 0x64F0 # +0xC0BF 0x64E6 # +0xC0C0 0x64EC # +0xC0C1 0x64F1 # +0xC0C2 0x64E2 # +0xC0C3 0x64ED # +0xC0C4 0x6582 # +0xC0C5 0x6583 # +0xC0C6 0x66D9 # +0xC0C7 0x66D6 # +0xC0C8 0x6A80 # +0xC0C9 0x6A94 # +0xC0CA 0x6A84 # +0xC0CB 0x6AA2 # +0xC0CC 0x6A9C # +0xC0CD 0x6ADB # +0xC0CE 0x6AA3 # +0xC0CF 0x6A7E # +0xC0D0 0x6A97 # +0xC0D1 0x6A90 # +0xC0D2 0x6AA0 # +0xC0D3 0x6B5C # +0xC0D4 0x6BAE # +0xC0D5 0x6BDA # +0xC0D6 0x6C08 # +0xC0D7 0x6FD8 # +0xC0D8 0x6FF1 # +0xC0D9 0x6FDF # +0xC0DA 0x6FE0 # +0xC0DB 0x6FDB # +0xC0DC 0x6FE4 # +0xC0DD 0x6FEB # +0xC0DE 0x6FEF # +0xC0DF 0x6F80 # +0xC0E0 0x6FEC # +0xC0E1 0x6FE1 # +0xC0E2 0x6FE9 # +0xC0E3 0x6FD5 # +0xC0E4 0x6FEE # +0xC0E5 0x6FF0 # +0xC0E6 0x71E7 # +0xC0E7 0x71DF # +0xC0E8 0x71EE # +0xC0E9 0x71E6 # +0xC0EA 0x71E5 # +0xC0EB 0x71ED # +0xC0EC 0x71EC # +0xC0ED 0x71F4 # +0xC0EE 0x71E0 # +0xC0EF 0x7235 # +0xC0F0 0x7246 # +0xC0F1 0x7370 # +0xC0F2 0x7372 # +0xC0F3 0x74A9 # +0xC0F4 0x74B0 # +0xC0F5 0x74A6 # +0xC0F6 0x74A8 # +0xC0F7 0x7646 # +0xC0F8 0x7642 # +0xC0F9 0x764C # +0xC0FA 0x76EA # +0xC0FB 0x77B3 # +0xC0FC 0x77AA # +0xC0FD 0x77B0 # +0xC0FE 0x77AC # +0xC140 0x77A7 # +0xC141 0x77AD # +0xC142 0x77EF # +0xC143 0x78F7 # +0xC144 0x78FA # +0xC145 0x78F4 # +0xC146 0x78EF # +0xC147 0x7901 # +0xC148 0x79A7 # +0xC149 0x79AA # +0xC14A 0x7A57 # +0xC14B 0x7ABF # +0xC14C 0x7C07 # +0xC14D 0x7C0D # +0xC14E 0x7BFE # +0xC14F 0x7BF7 # +0xC150 0x7C0C # +0xC151 0x7BE0 # +0xC152 0x7CE0 # +0xC153 0x7CDC # +0xC154 0x7CDE # +0xC155 0x7CE2 # +0xC156 0x7CDF # +0xC157 0x7CD9 # +0xC158 0x7CDD # +0xC159 0x7E2E # +0xC15A 0x7E3E # +0xC15B 0x7E46 # +0xC15C 0x7E37 # +0xC15D 0x7E32 # +0xC15E 0x7E43 # +0xC15F 0x7E2B # +0xC160 0x7E3D # +0xC161 0x7E31 # +0xC162 0x7E45 # +0xC163 0x7E41 # +0xC164 0x7E34 # +0xC165 0x7E39 # +0xC166 0x7E48 # +0xC167 0x7E35 # +0xC168 0x7E3F # +0xC169 0x7E2F # +0xC16A 0x7F44 # +0xC16B 0x7FF3 # +0xC16C 0x7FFC # +0xC16D 0x8071 # +0xC16E 0x8072 # +0xC16F 0x8070 # +0xC170 0x806F # +0xC171 0x8073 # +0xC172 0x81C6 # +0xC173 0x81C3 # +0xC174 0x81BA # +0xC175 0x81C2 # +0xC176 0x81C0 # +0xC177 0x81BF # +0xC178 0x81BD # +0xC179 0x81C9 # +0xC17A 0x81BE # +0xC17B 0x81E8 # +0xC17C 0x8209 # +0xC17D 0x8271 # +0xC17E 0x85AA # +0xC1A1 0x8584 # +0xC1A2 0x857E # +0xC1A3 0x859C # +0xC1A4 0x8591 # +0xC1A5 0x8594 # +0xC1A6 0x85AF # +0xC1A7 0x859B # +0xC1A8 0x8587 # +0xC1A9 0x85A8 # +0xC1AA 0x858A # +0xC1AB 0x8667 # +0xC1AC 0x87C0 # +0xC1AD 0x87D1 # +0xC1AE 0x87B3 # +0xC1AF 0x87D2 # +0xC1B0 0x87C6 # +0xC1B1 0x87AB # +0xC1B2 0x87BB # +0xC1B3 0x87BA # +0xC1B4 0x87C8 # +0xC1B5 0x87CB # +0xC1B6 0x893B # +0xC1B7 0x8936 # +0xC1B8 0x8944 # +0xC1B9 0x8938 # +0xC1BA 0x893D # +0xC1BB 0x89AC # +0xC1BC 0x8B0E # +0xC1BD 0x8B17 # +0xC1BE 0x8B19 # +0xC1BF 0x8B1B # +0xC1C0 0x8B0A # +0xC1C1 0x8B20 # +0xC1C2 0x8B1D # +0xC1C3 0x8B04 # +0xC1C4 0x8B10 # +0xC1C5 0x8C41 # +0xC1C6 0x8C3F # +0xC1C7 0x8C73 # +0xC1C8 0x8CFA # +0xC1C9 0x8CFD # +0xC1CA 0x8CFC # +0xC1CB 0x8CF8 # +0xC1CC 0x8CFB # +0xC1CD 0x8DA8 # +0xC1CE 0x8E49 # +0xC1CF 0x8E4B # +0xC1D0 0x8E48 # +0xC1D1 0x8E4A # +0xC1D2 0x8F44 # +0xC1D3 0x8F3E # +0xC1D4 0x8F42 # +0xC1D5 0x8F45 # +0xC1D6 0x8F3F # +0xC1D7 0x907F # +0xC1D8 0x907D # +0xC1D9 0x9084 # +0xC1DA 0x9081 # +0xC1DB 0x9082 # +0xC1DC 0x9080 # +0xC1DD 0x9139 # +0xC1DE 0x91A3 # +0xC1DF 0x919E # +0xC1E0 0x919C # +0xC1E1 0x934D # +0xC1E2 0x9382 # +0xC1E3 0x9328 # +0xC1E4 0x9375 # +0xC1E5 0x934A # +0xC1E6 0x9365 # +0xC1E7 0x934B # +0xC1E8 0x9318 # +0xC1E9 0x937E # +0xC1EA 0x936C # +0xC1EB 0x935B # +0xC1EC 0x9370 # +0xC1ED 0x935A # +0xC1EE 0x9354 # +0xC1EF 0x95CA # +0xC1F0 0x95CB # +0xC1F1 0x95CC # +0xC1F2 0x95C8 # +0xC1F3 0x95C6 # +0xC1F4 0x96B1 # +0xC1F5 0x96B8 # +0xC1F6 0x96D6 # +0xC1F7 0x971C # +0xC1F8 0x971E # +0xC1F9 0x97A0 # +0xC1FA 0x97D3 # +0xC1FB 0x9846 # +0xC1FC 0x98B6 # +0xC1FD 0x9935 # +0xC1FE 0x9A01 # +0xC240 0x99FF # +0xC241 0x9BAE # +0xC242 0x9BAB # +0xC243 0x9BAA # +0xC244 0x9BAD # +0xC245 0x9D3B # +0xC246 0x9D3F # +0xC247 0x9E8B # +0xC248 0x9ECF # +0xC249 0x9EDE # +0xC24A 0x9EDC # +0xC24B 0x9EDD # +0xC24C 0x9EDB # +0xC24D 0x9F3E # +0xC24E 0x9F4B # +0xC24F 0x53E2 # +0xC250 0x5695 # +0xC251 0x56AE # +0xC252 0x58D9 # +0xC253 0x58D8 # +0xC254 0x5B38 # +0xC255 0x5F5D # +0xC256 0x61E3 # +0xC257 0x6233 # +0xC258 0x64F4 # +0xC259 0x64F2 # +0xC25A 0x64FE # +0xC25B 0x6506 # +0xC25C 0x64FA # +0xC25D 0x64FB # +0xC25E 0x64F7 # +0xC25F 0x65B7 # +0xC260 0x66DC # +0xC261 0x6726 # +0xC262 0x6AB3 # +0xC263 0x6AAC # +0xC264 0x6AC3 # +0xC265 0x6ABB # +0xC266 0x6AB8 # +0xC267 0x6AC2 # +0xC268 0x6AAE # +0xC269 0x6AAF # +0xC26A 0x6B5F # +0xC26B 0x6B78 # +0xC26C 0x6BAF # +0xC26D 0x7009 # +0xC26E 0x700B # +0xC26F 0x6FFE # +0xC270 0x7006 # +0xC271 0x6FFA # +0xC272 0x7011 # +0xC273 0x700F # +0xC274 0x71FB # +0xC275 0x71FC # +0xC276 0x71FE # +0xC277 0x71F8 # +0xC278 0x7377 # +0xC279 0x7375 # +0xC27A 0x74A7 # +0xC27B 0x74BF # +0xC27C 0x7515 # +0xC27D 0x7656 # +0xC27E 0x7658 # +0xC2A1 0x7652 # +0xC2A2 0x77BD # +0xC2A3 0x77BF # +0xC2A4 0x77BB # +0xC2A5 0x77BC # +0xC2A6 0x790E # +0xC2A7 0x79AE # +0xC2A8 0x7A61 # +0xC2A9 0x7A62 # +0xC2AA 0x7A60 # +0xC2AB 0x7AC4 # +0xC2AC 0x7AC5 # +0xC2AD 0x7C2B # +0xC2AE 0x7C27 # +0xC2AF 0x7C2A # +0xC2B0 0x7C1E # +0xC2B1 0x7C23 # +0xC2B2 0x7C21 # +0xC2B3 0x7CE7 # +0xC2B4 0x7E54 # +0xC2B5 0x7E55 # +0xC2B6 0x7E5E # +0xC2B7 0x7E5A # +0xC2B8 0x7E61 # +0xC2B9 0x7E52 # +0xC2BA 0x7E59 # +0xC2BB 0x7F48 # +0xC2BC 0x7FF9 # +0xC2BD 0x7FFB # +0xC2BE 0x8077 # +0xC2BF 0x8076 # +0xC2C0 0x81CD # +0xC2C1 0x81CF # +0xC2C2 0x820A # +0xC2C3 0x85CF # +0xC2C4 0x85A9 # +0xC2C5 0x85CD # +0xC2C6 0x85D0 # +0xC2C7 0x85C9 # +0xC2C8 0x85B0 # +0xC2C9 0x85BA # +0xC2CA 0x85B9 # +0xC2CB 0x85A6 # +0xC2CC 0x87EF # +0xC2CD 0x87EC # +0xC2CE 0x87F2 # +0xC2CF 0x87E0 # +0xC2D0 0x8986 # +0xC2D1 0x89B2 # +0xC2D2 0x89F4 # +0xC2D3 0x8B28 # +0xC2D4 0x8B39 # +0xC2D5 0x8B2C # +0xC2D6 0x8B2B # +0xC2D7 0x8C50 # +0xC2D8 0x8D05 # +0xC2D9 0x8E59 # +0xC2DA 0x8E63 # +0xC2DB 0x8E66 # +0xC2DC 0x8E64 # +0xC2DD 0x8E5F # +0xC2DE 0x8E55 # +0xC2DF 0x8EC0 # +0xC2E0 0x8F49 # +0xC2E1 0x8F4D # +0xC2E2 0x9087 # +0xC2E3 0x9083 # +0xC2E4 0x9088 # +0xC2E5 0x91AB # +0xC2E6 0x91AC # +0xC2E7 0x91D0 # +0xC2E8 0x9394 # +0xC2E9 0x938A # +0xC2EA 0x9396 # +0xC2EB 0x93A2 # +0xC2EC 0x93B3 # +0xC2ED 0x93AE # +0xC2EE 0x93AC # +0xC2EF 0x93B0 # +0xC2F0 0x9398 # +0xC2F1 0x939A # +0xC2F2 0x9397 # +0xC2F3 0x95D4 # +0xC2F4 0x95D6 # +0xC2F5 0x95D0 # +0xC2F6 0x95D5 # +0xC2F7 0x96E2 # +0xC2F8 0x96DC # +0xC2F9 0x96D9 # +0xC2FA 0x96DB # +0xC2FB 0x96DE # +0xC2FC 0x9724 # +0xC2FD 0x97A3 # +0xC2FE 0x97A6 # +0xC340 0x97AD # +0xC341 0x97F9 # +0xC342 0x984D # +0xC343 0x984F # +0xC344 0x984C # +0xC345 0x984E # +0xC346 0x9853 # +0xC347 0x98BA # +0xC348 0x993E # +0xC349 0x993F # +0xC34A 0x993D # +0xC34B 0x992E # +0xC34C 0x99A5 # +0xC34D 0x9A0E # +0xC34E 0x9AC1 # +0xC34F 0x9B03 # +0xC350 0x9B06 # +0xC351 0x9B4F # +0xC352 0x9B4E # +0xC353 0x9B4D # +0xC354 0x9BCA # +0xC355 0x9BC9 # +0xC356 0x9BFD # +0xC357 0x9BC8 # +0xC358 0x9BC0 # +0xC359 0x9D51 # +0xC35A 0x9D5D # +0xC35B 0x9D60 # +0xC35C 0x9EE0 # +0xC35D 0x9F15 # +0xC35E 0x9F2C # +0xC35F 0x5133 # +0xC360 0x56A5 # +0xC361 0x58DE # +0xC362 0x58DF # +0xC363 0x58E2 # +0xC364 0x5BF5 # +0xC365 0x9F90 # +0xC366 0x5EEC # +0xC367 0x61F2 # +0xC368 0x61F7 # +0xC369 0x61F6 # +0xC36A 0x61F5 # +0xC36B 0x6500 # +0xC36C 0x650F # +0xC36D 0x66E0 # +0xC36E 0x66DD # +0xC36F 0x6AE5 # +0xC370 0x6ADD # +0xC371 0x6ADA # +0xC372 0x6AD3 # +0xC373 0x701B # +0xC374 0x701F # +0xC375 0x7028 # +0xC376 0x701A # +0xC377 0x701D # +0xC378 0x7015 # +0xC379 0x7018 # +0xC37A 0x7206 # +0xC37B 0x720D # +0xC37C 0x7258 # +0xC37D 0x72A2 # +0xC37E 0x7378 # +0xC3A1 0x737A # +0xC3A2 0x74BD # +0xC3A3 0x74CA # +0xC3A4 0x74E3 # +0xC3A5 0x7587 # +0xC3A6 0x7586 # +0xC3A7 0x765F # +0xC3A8 0x7661 # +0xC3A9 0x77C7 # +0xC3AA 0x7919 # +0xC3AB 0x79B1 # +0xC3AC 0x7A6B # +0xC3AD 0x7A69 # +0xC3AE 0x7C3E # +0xC3AF 0x7C3F # +0xC3B0 0x7C38 # +0xC3B1 0x7C3D # +0xC3B2 0x7C37 # +0xC3B3 0x7C40 # +0xC3B4 0x7E6B # +0xC3B5 0x7E6D # +0xC3B6 0x7E79 # +0xC3B7 0x7E69 # +0xC3B8 0x7E6A # +0xC3B9 0x7F85 # +0xC3BA 0x7E73 # +0xC3BB 0x7FB6 # +0xC3BC 0x7FB9 # +0xC3BD 0x7FB8 # +0xC3BE 0x81D8 # +0xC3BF 0x85E9 # +0xC3C0 0x85DD # +0xC3C1 0x85EA # +0xC3C2 0x85D5 # +0xC3C3 0x85E4 # +0xC3C4 0x85E5 # +0xC3C5 0x85F7 # +0xC3C6 0x87FB # +0xC3C7 0x8805 # +0xC3C8 0x880D # +0xC3C9 0x87F9 # +0xC3CA 0x87FE # +0xC3CB 0x8960 # +0xC3CC 0x895F # +0xC3CD 0x8956 # +0xC3CE 0x895E # +0xC3CF 0x8B41 # +0xC3D0 0x8B5C # +0xC3D1 0x8B58 # +0xC3D2 0x8B49 # +0xC3D3 0x8B5A # +0xC3D4 0x8B4E # +0xC3D5 0x8B4F # +0xC3D6 0x8B46 # +0xC3D7 0x8B59 # +0xC3D8 0x8D08 # +0xC3D9 0x8D0A # +0xC3DA 0x8E7C # +0xC3DB 0x8E72 # +0xC3DC 0x8E87 # +0xC3DD 0x8E76 # +0xC3DE 0x8E6C # +0xC3DF 0x8E7A # +0xC3E0 0x8E74 # +0xC3E1 0x8F54 # +0xC3E2 0x8F4E # +0xC3E3 0x8FAD # +0xC3E4 0x908A # +0xC3E5 0x908B # +0xC3E6 0x91B1 # +0xC3E7 0x91AE # +0xC3E8 0x93E1 # +0xC3E9 0x93D1 # +0xC3EA 0x93DF # +0xC3EB 0x93C3 # +0xC3EC 0x93C8 # +0xC3ED 0x93DC # +0xC3EE 0x93DD # +0xC3EF 0x93D6 # +0xC3F0 0x93E2 # +0xC3F1 0x93CD # +0xC3F2 0x93D8 # +0xC3F3 0x93E4 # +0xC3F4 0x93D7 # +0xC3F5 0x93E8 # +0xC3F6 0x95DC # +0xC3F7 0x96B4 # +0xC3F8 0x96E3 # +0xC3F9 0x972A # +0xC3FA 0x9727 # +0xC3FB 0x9761 # +0xC3FC 0x97DC # +0xC3FD 0x97FB # +0xC3FE 0x985E # +0xC440 0x9858 # +0xC441 0x985B # +0xC442 0x98BC # +0xC443 0x9945 # +0xC444 0x9949 # +0xC445 0x9A16 # +0xC446 0x9A19 # +0xC447 0x9B0D # +0xC448 0x9BE8 # +0xC449 0x9BE7 # +0xC44A 0x9BD6 # +0xC44B 0x9BDB # +0xC44C 0x9D89 # +0xC44D 0x9D61 # +0xC44E 0x9D72 # +0xC44F 0x9D6A # +0xC450 0x9D6C # +0xC451 0x9E92 # +0xC452 0x9E97 # +0xC453 0x9E93 # +0xC454 0x9EB4 # +0xC455 0x52F8 # +0xC456 0x56A8 # +0xC457 0x56B7 # +0xC458 0x56B6 # +0xC459 0x56B4 # +0xC45A 0x56BC # +0xC45B 0x58E4 # +0xC45C 0x5B40 # +0xC45D 0x5B43 # +0xC45E 0x5B7D # +0xC45F 0x5BF6 # +0xC460 0x5DC9 # +0xC461 0x61F8 # +0xC462 0x61FA # +0xC463 0x6518 # +0xC464 0x6514 # +0xC465 0x6519 # +0xC466 0x66E6 # +0xC467 0x6727 # +0xC468 0x6AEC # +0xC469 0x703E # +0xC46A 0x7030 # +0xC46B 0x7032 # +0xC46C 0x7210 # +0xC46D 0x737B # +0xC46E 0x74CF # +0xC46F 0x7662 # +0xC470 0x7665 # +0xC471 0x7926 # +0xC472 0x792A # +0xC473 0x792C # +0xC474 0x792B # +0xC475 0x7AC7 # +0xC476 0x7AF6 # +0xC477 0x7C4C # +0xC478 0x7C43 # +0xC479 0x7C4D # +0xC47A 0x7CEF # +0xC47B 0x7CF0 # +0xC47C 0x8FAE # +0xC47D 0x7E7D # +0xC47E 0x7E7C # +0xC4A1 0x7E82 # +0xC4A2 0x7F4C # +0xC4A3 0x8000 # +0xC4A4 0x81DA # +0xC4A5 0x8266 # +0xC4A6 0x85FB # +0xC4A7 0x85F9 # +0xC4A8 0x8611 # +0xC4A9 0x85FA # +0xC4AA 0x8606 # +0xC4AB 0x860B # +0xC4AC 0x8607 # +0xC4AD 0x860A # +0xC4AE 0x8814 # +0xC4AF 0x8815 # +0xC4B0 0x8964 # +0xC4B1 0x89BA # +0xC4B2 0x89F8 # +0xC4B3 0x8B70 # +0xC4B4 0x8B6C # +0xC4B5 0x8B66 # +0xC4B6 0x8B6F # +0xC4B7 0x8B5F # +0xC4B8 0x8B6B # +0xC4B9 0x8D0F # +0xC4BA 0x8D0D # +0xC4BB 0x8E89 # +0xC4BC 0x8E81 # +0xC4BD 0x8E85 # +0xC4BE 0x8E82 # +0xC4BF 0x91B4 # +0xC4C0 0x91CB # +0xC4C1 0x9418 # +0xC4C2 0x9403 # +0xC4C3 0x93FD # +0xC4C4 0x95E1 # +0xC4C5 0x9730 # +0xC4C6 0x98C4 # +0xC4C7 0x9952 # +0xC4C8 0x9951 # +0xC4C9 0x99A8 # +0xC4CA 0x9A2B # +0xC4CB 0x9A30 # +0xC4CC 0x9A37 # +0xC4CD 0x9A35 # +0xC4CE 0x9C13 # +0xC4CF 0x9C0D # +0xC4D0 0x9E79 # +0xC4D1 0x9EB5 # +0xC4D2 0x9EE8 # +0xC4D3 0x9F2F # +0xC4D4 0x9F5F # +0xC4D5 0x9F63 # +0xC4D6 0x9F61 # +0xC4D7 0x5137 # +0xC4D8 0x5138 # +0xC4D9 0x56C1 # +0xC4DA 0x56C0 # +0xC4DB 0x56C2 # +0xC4DC 0x5914 # +0xC4DD 0x5C6C # +0xC4DE 0x5DCD # +0xC4DF 0x61FC # +0xC4E0 0x61FE # +0xC4E1 0x651D # +0xC4E2 0x651C # +0xC4E3 0x6595 # +0xC4E4 0x66E9 # +0xC4E5 0x6AFB # +0xC4E6 0x6B04 # +0xC4E7 0x6AFA # +0xC4E8 0x6BB2 # +0xC4E9 0x704C # +0xC4EA 0x721B # +0xC4EB 0x72A7 # +0xC4EC 0x74D6 # +0xC4ED 0x74D4 # +0xC4EE 0x7669 # +0xC4EF 0x77D3 # +0xC4F0 0x7C50 # +0xC4F1 0x7E8F # +0xC4F2 0x7E8C # +0xC4F3 0x7FBC # +0xC4F4 0x8617 # +0xC4F5 0x862D # +0xC4F6 0x861A # +0xC4F7 0x8823 # +0xC4F8 0x8822 # +0xC4F9 0x8821 # +0xC4FA 0x881F # +0xC4FB 0x896A # +0xC4FC 0x896C # +0xC4FD 0x89BD # +0xC4FE 0x8B74 # +0xC540 0x8B77 # +0xC541 0x8B7D # +0xC542 0x8D13 # +0xC543 0x8E8A # +0xC544 0x8E8D # +0xC545 0x8E8B # +0xC546 0x8F5F # +0xC547 0x8FAF # +0xC548 0x91BA # +0xC549 0x942E # +0xC54A 0x9433 # +0xC54B 0x9435 # +0xC54C 0x943A # +0xC54D 0x9438 # +0xC54E 0x9432 # +0xC54F 0x942B # +0xC550 0x95E2 # +0xC551 0x9738 # +0xC552 0x9739 # +0xC553 0x9732 # +0xC554 0x97FF # +0xC555 0x9867 # +0xC556 0x9865 # +0xC557 0x9957 # +0xC558 0x9A45 # +0xC559 0x9A43 # +0xC55A 0x9A40 # +0xC55B 0x9A3E # +0xC55C 0x9ACF # +0xC55D 0x9B54 # +0xC55E 0x9B51 # +0xC55F 0x9C2D # +0xC560 0x9C25 # +0xC561 0x9DAF # +0xC562 0x9DB4 # +0xC563 0x9DC2 # +0xC564 0x9DB8 # +0xC565 0x9E9D # +0xC566 0x9EEF # +0xC567 0x9F19 # +0xC568 0x9F5C # +0xC569 0x9F66 # +0xC56A 0x9F67 # +0xC56B 0x513C # +0xC56C 0x513B # +0xC56D 0x56C8 # +0xC56E 0x56CA # +0xC56F 0x56C9 # +0xC570 0x5B7F # +0xC571 0x5DD4 # +0xC572 0x5DD2 # +0xC573 0x5F4E # +0xC574 0x61FF # +0xC575 0x6524 # +0xC576 0x6B0A # +0xC577 0x6B61 # +0xC578 0x7051 # +0xC579 0x7058 # +0xC57A 0x7380 # +0xC57B 0x74E4 # +0xC57C 0x758A # +0xC57D 0x766E # +0xC57E 0x766C # +0xC5A1 0x79B3 # +0xC5A2 0x7C60 # +0xC5A3 0x7C5F # +0xC5A4 0x807E # +0xC5A5 0x807D # +0xC5A6 0x81DF # +0xC5A7 0x8972 # +0xC5A8 0x896F # +0xC5A9 0x89FC # +0xC5AA 0x8B80 # +0xC5AB 0x8D16 # +0xC5AC 0x8D17 # +0xC5AD 0x8E91 # +0xC5AE 0x8E93 # +0xC5AF 0x8F61 # +0xC5B0 0x9148 # +0xC5B1 0x9444 # +0xC5B2 0x9451 # +0xC5B3 0x9452 # +0xC5B4 0x973D # +0xC5B5 0x973E # +0xC5B6 0x97C3 # +0xC5B7 0x97C1 # +0xC5B8 0x986B # +0xC5B9 0x9955 # +0xC5BA 0x9A55 # +0xC5BB 0x9A4D # +0xC5BC 0x9AD2 # +0xC5BD 0x9B1A # +0xC5BE 0x9C49 # +0xC5BF 0x9C31 # +0xC5C0 0x9C3E # +0xC5C1 0x9C3B # +0xC5C2 0x9DD3 # +0xC5C3 0x9DD7 # +0xC5C4 0x9F34 # +0xC5C5 0x9F6C # +0xC5C6 0x9F6A # +0xC5C7 0x9F94 # +0xC5C8 0x56CC # +0xC5C9 0x5DD6 # +0xC5CA 0x6200 # +0xC5CB 0x6523 # +0xC5CC 0x652B # +0xC5CD 0x652A # +0xC5CE 0x66EC # +0xC5CF 0x6B10 # +0xC5D0 0x74DA # +0xC5D1 0x7ACA # +0xC5D2 0x7C64 # +0xC5D3 0x7C63 # +0xC5D4 0x7C65 # +0xC5D5 0x7E93 # +0xC5D6 0x7E96 # +0xC5D7 0x7E94 # +0xC5D8 0x81E2 # +0xC5D9 0x8638 # +0xC5DA 0x863F # +0xC5DB 0x8831 # +0xC5DC 0x8B8A # +0xC5DD 0x9090 # +0xC5DE 0x908F # +0xC5DF 0x9463 # +0xC5E0 0x9460 # +0xC5E1 0x9464 # +0xC5E2 0x9768 # +0xC5E3 0x986F # +0xC5E4 0x995C # +0xC5E5 0x9A5A # +0xC5E6 0x9A5B # +0xC5E7 0x9A57 # +0xC5E8 0x9AD3 # +0xC5E9 0x9AD4 # +0xC5EA 0x9AD1 # +0xC5EB 0x9C54 # +0xC5EC 0x9C57 # +0xC5ED 0x9C56 # +0xC5EE 0x9DE5 # +0xC5EF 0x9E9F # +0xC5F0 0x9EF4 # +0xC5F1 0x56D1 # +0xC5F2 0x58E9 # +0xC5F3 0x652C # +0xC5F4 0x705E # +0xC5F5 0x7671 # +0xC5F6 0x7672 # +0xC5F7 0x77D7 # +0xC5F8 0x7F50 # +0xC5F9 0x7F88 # +0xC5FA 0x8836 # +0xC5FB 0x8839 # +0xC5FC 0x8862 # +0xC5FD 0x8B93 # +0xC5FE 0x8B92 # +0xC640 0x8B96 # +0xC641 0x8277 # +0xC642 0x8D1B # +0xC643 0x91C0 # +0xC644 0x946A # +0xC645 0x9742 # +0xC646 0x9748 # +0xC647 0x9744 # +0xC648 0x97C6 # +0xC649 0x9870 # +0xC64A 0x9A5F # +0xC64B 0x9B22 # +0xC64C 0x9B58 # +0xC64D 0x9C5F # +0xC64E 0x9DF9 # +0xC64F 0x9DFA # +0xC650 0x9E7C # +0xC651 0x9E7D # +0xC652 0x9F07 # +0xC653 0x9F77 # +0xC654 0x9F72 # +0xC655 0x5EF3 # +0xC656 0x6B16 # +0xC657 0x7063 # +0xC658 0x7C6C # +0xC659 0x7C6E # +0xC65A 0x883B # +0xC65B 0x89C0 # +0xC65C 0x8EA1 # +0xC65D 0x91C1 # +0xC65E 0x9472 # +0xC65F 0x9470 # +0xC660 0x9871 # +0xC661 0x995E # +0xC662 0x9AD6 # +0xC663 0x9B23 # +0xC664 0x9ECC # +0xC665 0x7064 # +0xC666 0x77DA # +0xC667 0x8B9A # +0xC668 0x9477 # +0xC669 0x97C9 # +0xC66A 0x9A62 # +0xC66B 0x9A65 # +0xC66C 0x7E9C # +0xC66D 0x8B9C # +0xC66E 0x8EAA # +0xC66F 0x91C5 # +0xC670 0x947D # +0xC671 0x947E # +0xC672 0x947C # +0xC673 0x9C77 # +0xC674 0x9C78 # +0xC675 0x9EF7 # +0xC676 0x8C54 # +0xC677 0x947F # +0xC678 0x9E1A # +0xC679 0x7228 # +0xC67A 0x9A6A # +0xC67B 0x9B31 # +0xC67C 0x9E1B # +0xC67D 0x9E1E # +0xC67E 0x7C72 # +0xC6A1 0x30FE # KATAKANA VOICED ITERATION MARK +0xC6A2 0x309D # HIRAGANA ITERATION MARK +0xC6A3 0x309E # HIRAGANA VOICED ITERATION MARK +0xC6A4 0x3005 # IDEOGRAPHIC ITERATION MARK +0xC6A5 0x3041 # HIRAGANA LETTER SMALL A +0xC6A6 0x3042 # HIRAGANA LETTER A +0xC6A7 0x3043 # HIRAGANA LETTER SMALL I +0xC6A8 0x3044 # HIRAGANA LETTER I +0xC6A9 0x3045 # HIRAGANA LETTER SMALL U +0xC6AA 0x3046 # HIRAGANA LETTER U +0xC6AB 0x3047 # HIRAGANA LETTER SMALL E +0xC6AC 0x3048 # HIRAGANA LETTER E +0xC6AD 0x3049 # HIRAGANA LETTER SMALL O +0xC6AE 0x304A # HIRAGANA LETTER O +0xC6AF 0x304B # HIRAGANA LETTER KA +0xC6B0 0x304C # HIRAGANA LETTER GA +0xC6B1 0x304D # HIRAGANA LETTER KI +0xC6B2 0x304E # HIRAGANA LETTER GI +0xC6B3 0x304F # HIRAGANA LETTER KU +0xC6B4 0x3050 # HIRAGANA LETTER GU +0xC6B5 0x3051 # HIRAGANA LETTER KE +0xC6B6 0x3052 # HIRAGANA LETTER GE +0xC6B7 0x3053 # HIRAGANA LETTER KO +0xC6B8 0x3054 # HIRAGANA LETTER GO +0xC6B9 0x3055 # HIRAGANA LETTER SA +0xC6BA 0x3056 # HIRAGANA LETTER ZA +0xC6BB 0x3057 # HIRAGANA LETTER SI +0xC6BC 0x3058 # HIRAGANA LETTER ZI +0xC6BD 0x3059 # HIRAGANA LETTER SU +0xC6BE 0x305A # HIRAGANA LETTER ZU +0xC6BF 0x305B # HIRAGANA LETTER SE +0xC6C0 0x305C # HIRAGANA LETTER ZE +0xC6C1 0x305D # HIRAGANA LETTER SO +0xC6C2 0x305E # HIRAGANA LETTER ZO +0xC6C3 0x305F # HIRAGANA LETTER TA +0xC6C4 0x3060 # HIRAGANA LETTER DA +0xC6C5 0x3061 # HIRAGANA LETTER TI +0xC6C6 0x3062 # HIRAGANA LETTER DI +0xC6C7 0x3063 # HIRAGANA LETTER SMALL TU +0xC6C8 0x3064 # HIRAGANA LETTER TU +0xC6C9 0x3065 # HIRAGANA LETTER DU +0xC6CA 0x3066 # HIRAGANA LETTER TE +0xC6CB 0x3067 # HIRAGANA LETTER DE +0xC6CC 0x3068 # HIRAGANA LETTER TO +0xC6CD 0x3069 # HIRAGANA LETTER DO +0xC6CE 0x306A # HIRAGANA LETTER NA +0xC6CF 0x306B # HIRAGANA LETTER NI +0xC6D0 0x306C # HIRAGANA LETTER NU +0xC6D1 0x306D # HIRAGANA LETTER NE +0xC6D2 0x306E # HIRAGANA LETTER NO +0xC6D3 0x306F # HIRAGANA LETTER HA +0xC6D4 0x3070 # HIRAGANA LETTER BA +0xC6D5 0x3071 # HIRAGANA LETTER PA +0xC6D6 0x3072 # HIRAGANA LETTER HI +0xC6D7 0x3073 # HIRAGANA LETTER BI +0xC6D8 0x3074 # HIRAGANA LETTER PI +0xC6D9 0x3075 # HIRAGANA LETTER HU +0xC6DA 0x3076 # HIRAGANA LETTER BU +0xC6DB 0x3077 # HIRAGANA LETTER PU +0xC6DC 0x3078 # HIRAGANA LETTER HE +0xC6DD 0x3079 # HIRAGANA LETTER BE +0xC6DE 0x307A # HIRAGANA LETTER PE +0xC6DF 0x307B # HIRAGANA LETTER HO +0xC6E0 0x307C # HIRAGANA LETTER BO +0xC6E1 0x307D # HIRAGANA LETTER PO +0xC6E2 0x307E # HIRAGANA LETTER MA +0xC6E3 0x307F # HIRAGANA LETTER MI +0xC6E4 0x3080 # HIRAGANA LETTER MU +0xC6E5 0x3081 # HIRAGANA LETTER ME +0xC6E6 0x3082 # HIRAGANA LETTER MO +0xC6E7 0x3083 # HIRAGANA LETTER SMALL YA +0xC6E8 0x3084 # HIRAGANA LETTER YA +0xC6E9 0x3085 # HIRAGANA LETTER SMALL YU +0xC6EA 0x3086 # HIRAGANA LETTER YU +0xC6EB 0x3087 # HIRAGANA LETTER SMALL YO +0xC6EC 0x3088 # HIRAGANA LETTER YO +0xC6ED 0x3089 # HIRAGANA LETTER RA +0xC6EE 0x308A # HIRAGANA LETTER RI +0xC6EF 0x308B # HIRAGANA LETTER RU +0xC6F0 0x308C # HIRAGANA LETTER RE +0xC6F1 0x308D # HIRAGANA LETTER RO +0xC6F2 0x308E # HIRAGANA LETTER SMALL WA +0xC6F3 0x308F # HIRAGANA LETTER WA +0xC6F4 0x3090 # HIRAGANA LETTER WI +0xC6F5 0x3091 # HIRAGANA LETTER WE +0xC6F6 0x3092 # HIRAGANA LETTER WO +0xC6F7 0x3093 # HIRAGANA LETTER N +0xC6F8 0x30A1 # KATAKANA LETTER SMALL A +0xC6F9 0x30A2 # KATAKANA LETTER A +0xC6FA 0x30A3 # KATAKANA LETTER SMALL I +0xC6FB 0x30A4 # KATAKANA LETTER I +0xC6FC 0x30A5 # KATAKANA LETTER SMALL U +0xC6FD 0x30A6 # KATAKANA LETTER U +0xC6FE 0x30A7 # KATAKANA LETTER SMALL E +0xC740 0x30A8 # KATAKANA LETTER E +0xC741 0x30A9 # KATAKANA LETTER SMALL O +0xC742 0x30AA # KATAKANA LETTER O +0xC743 0x30AB # KATAKANA LETTER KA +0xC744 0x30AC # KATAKANA LETTER GA +0xC745 0x30AD # KATAKANA LETTER KI +0xC746 0x30AE # KATAKANA LETTER GI +0xC747 0x30AF # KATAKANA LETTER KU +0xC748 0x30B0 # KATAKANA LETTER GU +0xC749 0x30B1 # KATAKANA LETTER KE +0xC74A 0x30B2 # KATAKANA LETTER GE +0xC74B 0x30B3 # KATAKANA LETTER KO +0xC74C 0x30B4 # KATAKANA LETTER GO +0xC74D 0x30B5 # KATAKANA LETTER SA +0xC74E 0x30B6 # KATAKANA LETTER ZA +0xC74F 0x30B7 # KATAKANA LETTER SI +0xC750 0x30B8 # KATAKANA LETTER ZI +0xC751 0x30B9 # KATAKANA LETTER SU +0xC752 0x30BA # KATAKANA LETTER ZU +0xC753 0x30BB # KATAKANA LETTER SE +0xC754 0x30BC # KATAKANA LETTER ZE +0xC755 0x30BD # KATAKANA LETTER SO +0xC756 0x30BE # KATAKANA LETTER ZO +0xC757 0x30BF # KATAKANA LETTER TA +0xC758 0x30C0 # KATAKANA LETTER DA +0xC759 0x30C1 # KATAKANA LETTER TI +0xC75A 0x30C2 # KATAKANA LETTER DI +0xC75B 0x30C3 # KATAKANA LETTER SMALL TU +0xC75C 0x30C4 # KATAKANA LETTER TU +0xC75D 0x30C5 # KATAKANA LETTER DU +0xC75E 0x30C6 # KATAKANA LETTER TE +0xC75F 0x30C7 # KATAKANA LETTER DE +0xC760 0x30C8 # KATAKANA LETTER TO +0xC761 0x30C9 # KATAKANA LETTER DO +0xC762 0x30CA # KATAKANA LETTER NA +0xC763 0x30CB # KATAKANA LETTER NI +0xC764 0x30CC # KATAKANA LETTER NU +0xC765 0x30CD # KATAKANA LETTER NE +0xC766 0x30CE # KATAKANA LETTER NO +0xC767 0x30CF # KATAKANA LETTER HA +0xC768 0x30D0 # KATAKANA LETTER BA +0xC769 0x30D1 # KATAKANA LETTER PA +0xC76A 0x30D2 # KATAKANA LETTER HI +0xC76B 0x30D3 # KATAKANA LETTER BI +0xC76C 0x30D4 # KATAKANA LETTER PI +0xC76D 0x30D5 # KATAKANA LETTER HU +0xC76E 0x30D6 # KATAKANA LETTER BU +0xC76F 0x30D7 # KATAKANA LETTER PU +0xC770 0x30D8 # KATAKANA LETTER HE +0xC771 0x30D9 # KATAKANA LETTER BE +0xC772 0x30DA # KATAKANA LETTER PE +0xC773 0x30DB # KATAKANA LETTER HO +0xC774 0x30DC # KATAKANA LETTER BO +0xC775 0x30DD # KATAKANA LETTER PO +0xC776 0x30DE # KATAKANA LETTER MA +0xC777 0x30DF # KATAKANA LETTER MI +0xC778 0x30E0 # KATAKANA LETTER MU +0xC779 0x30E1 # KATAKANA LETTER ME +0xC77A 0x30E2 # KATAKANA LETTER MO +0xC77B 0x30E3 # KATAKANA LETTER SMALL YA +0xC77C 0x30E4 # KATAKANA LETTER YA +0xC77D 0x30E5 # KATAKANA LETTER SMALL YU +0xC77E 0x30E6 # KATAKANA LETTER YU +0xC7A1 0x30E7 # KATAKANA LETTER SMALL YO +0xC7A2 0x30E8 # KATAKANA LETTER YO +0xC7A3 0x30E9 # KATAKANA LETTER RA +0xC7A4 0x30EA # KATAKANA LETTER RI +0xC7A5 0x30EB # KATAKANA LETTER RU +0xC7A6 0x30EC # KATAKANA LETTER RE +0xC7A7 0x30ED # KATAKANA LETTER RO +0xC7A8 0x30EE # KATAKANA LETTER SMALL WA +0xC7A9 0x30EF # KATAKANA LETTER WA +0xC7AA 0x30F0 # KATAKANA LETTER WI +0xC7AB 0x30F1 # KATAKANA LETTER WE +0xC7AC 0x30F2 # KATAKANA LETTER WO +0xC7AD 0x30F3 # KATAKANA LETTER N +0xC7AE 0x30F4 # KATAKANA LETTER VU +0xC7AF 0x30F5 # KATAKANA LETTER SMALL KA +0xC7B0 0x30F6 # KATAKANA LETTER SMALL KE +0xC7B1 0x0414 # CYRILLIC CAPITAL LETTER DE +0xC7B2 0x0415 # CYRILLIC CAPITAL LETTER IE +0xC7B3 0x0401 # CYRILLIC CAPITAL LETTER IO +0xC7B4 0x0416 # CYRILLIC CAPITAL LETTER ZHE +0xC7B5 0x0417 # CYRILLIC CAPITAL LETTER ZE +0xC7B6 0x0418 # CYRILLIC CAPITAL LETTER I +0xC7B7 0x0419 # CYRILLIC CAPITAL LETTER SHORT I +0xC7B8 0x041A # CYRILLIC CAPITAL LETTER KA +0xC7B9 0x041B # CYRILLIC CAPITAL LETTER EL +0xC7BA 0x041C # CYRILLIC CAPITAL LETTER EM +0xC7BB 0x0423 # CYRILLIC CAPITAL LETTER U +0xC7BC 0x0424 # CYRILLIC CAPITAL LETTER EF +0xC7BD 0x0425 # CYRILLIC CAPITAL LETTER HA +0xC7BE 0x0426 # CYRILLIC CAPITAL LETTER TSE +0xC7BF 0x0427 # CYRILLIC CAPITAL LETTER CHE +0xC7C0 0x0428 # CYRILLIC CAPITAL LETTER SHA +0xC7C1 0x0429 # CYRILLIC CAPITAL LETTER SHCHA +0xC7C2 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN +0xC7C3 0x042B # CYRILLIC CAPITAL LETTER YERU +0xC7C4 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN +0xC7C5 0x042D # CYRILLIC CAPITAL LETTER E +0xC7C6 0x042E # CYRILLIC CAPITAL LETTER YU +0xC7C7 0x042F # CYRILLIC CAPITAL LETTER YA +0xC7C8 0x0430 # CYRILLIC SMALL LETTER A +0xC7C9 0x0431 # CYRILLIC SMALL LETTER BE +0xC7CA 0x0432 # CYRILLIC SMALL LETTER VE +0xC7CB 0x0433 # CYRILLIC SMALL LETTER GHE +0xC7CC 0x0434 # CYRILLIC SMALL LETTER DE +0xC7CD 0x0435 # CYRILLIC SMALL LETTER IE +0xC7CE 0x0451 # CYRILLIC SMALL LETTER IO +0xC7CF 0x0436 # CYRILLIC SMALL LETTER ZHE +0xC7D0 0x0437 # CYRILLIC SMALL LETTER ZE +0xC7D1 0x0438 # CYRILLIC SMALL LETTER I +0xC7D2 0x0439 # CYRILLIC SMALL LETTER SHORT I +0xC7D3 0x043A # CYRILLIC SMALL LETTER KA +0xC7D4 0x043B # CYRILLIC SMALL LETTER EL +0xC7D5 0x043C # CYRILLIC SMALL LETTER EM +0xC7D6 0x043D # CYRILLIC SMALL LETTER EN +0xC7D7 0x043E # CYRILLIC SMALL LETTER O +0xC7D8 0x043F # CYRILLIC SMALL LETTER PE +0xC7D9 0x0440 # CYRILLIC SMALL LETTER ER +0xC7DA 0x0441 # CYRILLIC SMALL LETTER ES +0xC7DB 0x0442 # CYRILLIC SMALL LETTER TE +0xC7DC 0x0443 # CYRILLIC SMALL LETTER U +0xC7DD 0x0444 # CYRILLIC SMALL LETTER EF +0xC7DE 0x0445 # CYRILLIC SMALL LETTER HA +0xC7DF 0x0446 # CYRILLIC SMALL LETTER TSE +0xC7E0 0x0447 # CYRILLIC SMALL LETTER CHE +0xC7E1 0x0448 # CYRILLIC SMALL LETTER SHA +0xC7E2 0x0449 # CYRILLIC SMALL LETTER SHCHA +0xC7E3 0x044A # CYRILLIC SMALL LETTER HARD SIGN +0xC7E4 0x044B # CYRILLIC SMALL LETTER YERU +0xC7E5 0x044C # CYRILLIC SMALL LETTER SOFT SIGN +0xC7E6 0x044D # CYRILLIC SMALL LETTER E +0xC7E7 0x044E # CYRILLIC SMALL LETTER YU +0xC7E8 0x044F # CYRILLIC SMALL LETTER YA +0xC7E9 0x2460 # CIRCLED DIGIT ONE +0xC7EA 0x2461 # CIRCLED DIGIT TWO +0xC7EB 0x2462 # CIRCLED DIGIT THREE +0xC7EC 0x2463 # CIRCLED DIGIT FOUR +0xC7ED 0x2464 # CIRCLED DIGIT FIVE +0xC7EE 0x2465 # CIRCLED DIGIT SIX +0xC7EF 0x2466 # CIRCLED DIGIT SEVEN +0xC7F0 0x2467 # CIRCLED DIGIT EIGHT +0xC7F1 0x2468 # CIRCLED DIGIT NINE +0xC7F2 0x2469 # CIRCLED NUMBER TEN +0xC7F3 0x2474 # PARENTHESIZED DIGIT ONE +0xC7F4 0x2475 # PARENTHESIZED DIGIT TWO +0xC7F5 0x2476 # PARENTHESIZED DIGIT THREE +0xC7F6 0x2477 # PARENTHESIZED DIGIT FOUR +0xC7F7 0x2478 # PARENTHESIZED DIGIT FIVE +0xC7F8 0x2479 # PARENTHESIZED DIGIT SIX +0xC7F9 0x247A # PARENTHESIZED DIGIT SEVEN +0xC7FA 0x247B # PARENTHESIZED DIGIT EIGHT +0xC7FB 0x247C # PARENTHESIZED DIGIT NINE +0xC7FC 0x247D # PARENTHESIZED NUMBER TEN +0xC940 0x4E42 # +0xC941 0x4E5C # +0xC942 0x51F5 # +0xC943 0x531A # +0xC944 0x5382 # +0xC945 0x4E07 # +0xC946 0x4E0C # +0xC947 0x4E47 # +0xC948 0x4E8D # +0xC949 0x56D7 # +0xC94A 0xFA0C # CJK COMPATIBILITY IDEOGRAPH-FA0C +0xC94B 0x5C6E # +0xC94C 0x5F73 # +0xC94D 0x4E0F # +0xC94E 0x5187 # +0xC94F 0x4E0E # +0xC950 0x4E2E # +0xC951 0x4E93 # +0xC952 0x4EC2 # +0xC953 0x4EC9 # +0xC954 0x4EC8 # +0xC955 0x5198 # +0xC956 0x52FC # +0xC957 0x536C # +0xC958 0x53B9 # +0xC959 0x5720 # +0xC95A 0x5903 # +0xC95B 0x592C # +0xC95C 0x5C10 # +0xC95D 0x5DFF # +0xC95E 0x65E1 # +0xC95F 0x6BB3 # +0xC960 0x6BCC # +0xC961 0x6C14 # +0xC962 0x723F # +0xC963 0x4E31 # +0xC964 0x4E3C # +0xC965 0x4EE8 # +0xC966 0x4EDC # +0xC967 0x4EE9 # +0xC968 0x4EE1 # +0xC969 0x4EDD # +0xC96A 0x4EDA # +0xC96B 0x520C # +0xC96C 0x531C # +0xC96D 0x534C # +0xC96E 0x5722 # +0xC96F 0x5723 # +0xC970 0x5917 # +0xC971 0x592F # +0xC972 0x5B81 # +0xC973 0x5B84 # +0xC974 0x5C12 # +0xC975 0x5C3B # +0xC976 0x5C74 # +0xC977 0x5C73 # +0xC978 0x5E04 # +0xC979 0x5E80 # +0xC97A 0x5E82 # +0xC97B 0x5FC9 # +0xC97C 0x6209 # +0xC97D 0x6250 # +0xC97E 0x6C15 # +0xC9A1 0x6C36 # +0xC9A2 0x6C43 # +0xC9A3 0x6C3F # +0xC9A4 0x6C3B # +0xC9A5 0x72AE # +0xC9A6 0x72B0 # +0xC9A7 0x738A # +0xC9A8 0x79B8 # +0xC9A9 0x808A # +0xC9AA 0x961E # +0xC9AB 0x4F0E # +0xC9AC 0x4F18 # +0xC9AD 0x4F2C # +0xC9AE 0x4EF5 # +0xC9AF 0x4F14 # +0xC9B0 0x4EF1 # +0xC9B1 0x4F00 # +0xC9B2 0x4EF7 # +0xC9B3 0x4F08 # +0xC9B4 0x4F1D # +0xC9B5 0x4F02 # +0xC9B6 0x4F05 # +0xC9B7 0x4F22 # +0xC9B8 0x4F13 # +0xC9B9 0x4F04 # +0xC9BA 0x4EF4 # +0xC9BB 0x4F12 # +0xC9BC 0x51B1 # +0xC9BD 0x5213 # +0xC9BE 0x5209 # +0xC9BF 0x5210 # +0xC9C0 0x52A6 # +0xC9C1 0x5322 # +0xC9C2 0x531F # +0xC9C3 0x534D # +0xC9C4 0x538A # +0xC9C5 0x5407 # +0xC9C6 0x56E1 # +0xC9C7 0x56DF # +0xC9C8 0x572E # +0xC9C9 0x572A # +0xC9CA 0x5734 # +0xC9CB 0x593C # +0xC9CC 0x5980 # +0xC9CD 0x597C # +0xC9CE 0x5985 # +0xC9CF 0x597B # +0xC9D0 0x597E # +0xC9D1 0x5977 # +0xC9D2 0x597F # +0xC9D3 0x5B56 # +0xC9D4 0x5C15 # +0xC9D5 0x5C25 # +0xC9D6 0x5C7C # +0xC9D7 0x5C7A # +0xC9D8 0x5C7B # +0xC9D9 0x5C7E # +0xC9DA 0x5DDF # +0xC9DB 0x5E75 # +0xC9DC 0x5E84 # +0xC9DD 0x5F02 # +0xC9DE 0x5F1A # +0xC9DF 0x5F74 # +0xC9E0 0x5FD5 # +0xC9E1 0x5FD4 # +0xC9E2 0x5FCF # +0xC9E3 0x625C # +0xC9E4 0x625E # +0xC9E5 0x6264 # +0xC9E6 0x6261 # +0xC9E7 0x6266 # +0xC9E8 0x6262 # +0xC9E9 0x6259 # +0xC9EA 0x6260 # +0xC9EB 0x625A # +0xC9EC 0x6265 # +0xC9ED 0x65EF # +0xC9EE 0x65EE # +0xC9EF 0x673E # +0xC9F0 0x6739 # +0xC9F1 0x6738 # +0xC9F2 0x673B # +0xC9F3 0x673A # +0xC9F4 0x673F # +0xC9F5 0x673C # +0xC9F6 0x6733 # +0xC9F7 0x6C18 # +0xC9F8 0x6C46 # +0xC9F9 0x6C52 # +0xC9FA 0x6C5C # +0xC9FB 0x6C4F # +0xC9FC 0x6C4A # +0xC9FD 0x6C54 # +0xC9FE 0x6C4B # +0xCA40 0x6C4C # +0xCA41 0x7071 # +0xCA42 0x725E # +0xCA43 0x72B4 # +0xCA44 0x72B5 # +0xCA45 0x738E # +0xCA46 0x752A # +0xCA47 0x767F # +0xCA48 0x7A75 # +0xCA49 0x7F51 # +0xCA4A 0x8278 # +0xCA4B 0x827C # +0xCA4C 0x8280 # +0xCA4D 0x827D # +0xCA4E 0x827F # +0xCA4F 0x864D # +0xCA50 0x897E # +0xCA51 0x9099 # +0xCA52 0x9097 # +0xCA53 0x9098 # +0xCA54 0x909B # +0xCA55 0x9094 # +0xCA56 0x9622 # +0xCA57 0x9624 # +0xCA58 0x9620 # +0xCA59 0x9623 # +0xCA5A 0x4F56 # +0xCA5B 0x4F3B # +0xCA5C 0x4F62 # +0xCA5D 0x4F49 # +0xCA5E 0x4F53 # +0xCA5F 0x4F64 # +0xCA60 0x4F3E # +0xCA61 0x4F67 # +0xCA62 0x4F52 # +0xCA63 0x4F5F # +0xCA64 0x4F41 # +0xCA65 0x4F58 # +0xCA66 0x4F2D # +0xCA67 0x4F33 # +0xCA68 0x4F3F # +0xCA69 0x4F61 # +0xCA6A 0x518F # +0xCA6B 0x51B9 # +0xCA6C 0x521C # +0xCA6D 0x521E # +0xCA6E 0x5221 # +0xCA6F 0x52AD # +0xCA70 0x52AE # +0xCA71 0x5309 # +0xCA72 0x5363 # +0xCA73 0x5372 # +0xCA74 0x538E # +0xCA75 0x538F # +0xCA76 0x5430 # +0xCA77 0x5437 # +0xCA78 0x542A # +0xCA79 0x5454 # +0xCA7A 0x5445 # +0xCA7B 0x5419 # +0xCA7C 0x541C # +0xCA7D 0x5425 # +0xCA7E 0x5418 # +0xCAA1 0x543D # +0xCAA2 0x544F # +0xCAA3 0x5441 # +0xCAA4 0x5428 # +0xCAA5 0x5424 # +0xCAA6 0x5447 # +0xCAA7 0x56EE # +0xCAA8 0x56E7 # +0xCAA9 0x56E5 # +0xCAAA 0x5741 # +0xCAAB 0x5745 # +0xCAAC 0x574C # +0xCAAD 0x5749 # +0xCAAE 0x574B # +0xCAAF 0x5752 # +0xCAB0 0x5906 # +0xCAB1 0x5940 # +0xCAB2 0x59A6 # +0xCAB3 0x5998 # +0xCAB4 0x59A0 # +0xCAB5 0x5997 # +0xCAB6 0x598E # +0xCAB7 0x59A2 # +0xCAB8 0x5990 # +0xCAB9 0x598F # +0xCABA 0x59A7 # +0xCABB 0x59A1 # +0xCABC 0x5B8E # +0xCABD 0x5B92 # +0xCABE 0x5C28 # +0xCABF 0x5C2A # +0xCAC0 0x5C8D # +0xCAC1 0x5C8F # +0xCAC2 0x5C88 # +0xCAC3 0x5C8B # +0xCAC4 0x5C89 # +0xCAC5 0x5C92 # +0xCAC6 0x5C8A # +0xCAC7 0x5C86 # +0xCAC8 0x5C93 # +0xCAC9 0x5C95 # +0xCACA 0x5DE0 # +0xCACB 0x5E0A # +0xCACC 0x5E0E # +0xCACD 0x5E8B # +0xCACE 0x5E89 # +0xCACF 0x5E8C # +0xCAD0 0x5E88 # +0xCAD1 0x5E8D # +0xCAD2 0x5F05 # +0xCAD3 0x5F1D # +0xCAD4 0x5F78 # +0xCAD5 0x5F76 # +0xCAD6 0x5FD2 # +0xCAD7 0x5FD1 # +0xCAD8 0x5FD0 # +0xCAD9 0x5FED # +0xCADA 0x5FE8 # +0xCADB 0x5FEE # +0xCADC 0x5FF3 # +0xCADD 0x5FE1 # +0xCADE 0x5FE4 # +0xCADF 0x5FE3 # +0xCAE0 0x5FFA # +0xCAE1 0x5FEF # +0xCAE2 0x5FF7 # +0xCAE3 0x5FFB # +0xCAE4 0x6000 # +0xCAE5 0x5FF4 # +0xCAE6 0x623A # +0xCAE7 0x6283 # +0xCAE8 0x628C # +0xCAE9 0x628E # +0xCAEA 0x628F # +0xCAEB 0x6294 # +0xCAEC 0x6287 # +0xCAED 0x6271 # +0xCAEE 0x627B # +0xCAEF 0x627A # +0xCAF0 0x6270 # +0xCAF1 0x6281 # +0xCAF2 0x6288 # +0xCAF3 0x6277 # +0xCAF4 0x627D # +0xCAF5 0x6272 # +0xCAF6 0x6274 # +0xCAF7 0x6537 # +0xCAF8 0x65F0 # +0xCAF9 0x65F4 # +0xCAFA 0x65F3 # +0xCAFB 0x65F2 # +0xCAFC 0x65F5 # +0xCAFD 0x6745 # +0xCAFE 0x6747 # +0xCB40 0x6759 # +0xCB41 0x6755 # +0xCB42 0x674C # +0xCB43 0x6748 # +0xCB44 0x675D # +0xCB45 0x674D # +0xCB46 0x675A # +0xCB47 0x674B # +0xCB48 0x6BD0 # +0xCB49 0x6C19 # +0xCB4A 0x6C1A # +0xCB4B 0x6C78 # +0xCB4C 0x6C67 # +0xCB4D 0x6C6B # +0xCB4E 0x6C84 # +0xCB4F 0x6C8B # +0xCB50 0x6C8F # +0xCB51 0x6C71 # +0xCB52 0x6C6F # +0xCB53 0x6C69 # +0xCB54 0x6C9A # +0xCB55 0x6C6D # +0xCB56 0x6C87 # +0xCB57 0x6C95 # +0xCB58 0x6C9C # +0xCB59 0x6C66 # +0xCB5A 0x6C73 # +0xCB5B 0x6C65 # +0xCB5C 0x6C7B # +0xCB5D 0x6C8E # +0xCB5E 0x7074 # +0xCB5F 0x707A # +0xCB60 0x7263 # +0xCB61 0x72BF # +0xCB62 0x72BD # +0xCB63 0x72C3 # +0xCB64 0x72C6 # +0xCB65 0x72C1 # +0xCB66 0x72BA # +0xCB67 0x72C5 # +0xCB68 0x7395 # +0xCB69 0x7397 # +0xCB6A 0x7393 # +0xCB6B 0x7394 # +0xCB6C 0x7392 # +0xCB6D 0x753A # +0xCB6E 0x7539 # +0xCB6F 0x7594 # +0xCB70 0x7595 # +0xCB71 0x7681 # +0xCB72 0x793D # +0xCB73 0x8034 # +0xCB74 0x8095 # +0xCB75 0x8099 # +0xCB76 0x8090 # +0xCB77 0x8092 # +0xCB78 0x809C # +0xCB79 0x8290 # +0xCB7A 0x828F # +0xCB7B 0x8285 # +0xCB7C 0x828E # +0xCB7D 0x8291 # +0xCB7E 0x8293 # +0xCBA1 0x828A # +0xCBA2 0x8283 # +0xCBA3 0x8284 # +0xCBA4 0x8C78 # +0xCBA5 0x8FC9 # +0xCBA6 0x8FBF # +0xCBA7 0x909F # +0xCBA8 0x90A1 # +0xCBA9 0x90A5 # +0xCBAA 0x909E # +0xCBAB 0x90A7 # +0xCBAC 0x90A0 # +0xCBAD 0x9630 # +0xCBAE 0x9628 # +0xCBAF 0x962F # +0xCBB0 0x962D # +0xCBB1 0x4E33 # +0xCBB2 0x4F98 # +0xCBB3 0x4F7C # +0xCBB4 0x4F85 # +0xCBB5 0x4F7D # +0xCBB6 0x4F80 # +0xCBB7 0x4F87 # +0xCBB8 0x4F76 # +0xCBB9 0x4F74 # +0xCBBA 0x4F89 # +0xCBBB 0x4F84 # +0xCBBC 0x4F77 # +0xCBBD 0x4F4C # +0xCBBE 0x4F97 # +0xCBBF 0x4F6A # +0xCBC0 0x4F9A # +0xCBC1 0x4F79 # +0xCBC2 0x4F81 # +0xCBC3 0x4F78 # +0xCBC4 0x4F90 # +0xCBC5 0x4F9C # +0xCBC6 0x4F94 # +0xCBC7 0x4F9E # +0xCBC8 0x4F92 # +0xCBC9 0x4F82 # +0xCBCA 0x4F95 # +0xCBCB 0x4F6B # +0xCBCC 0x4F6E # +0xCBCD 0x519E # +0xCBCE 0x51BC # +0xCBCF 0x51BE # +0xCBD0 0x5235 # +0xCBD1 0x5232 # +0xCBD2 0x5233 # +0xCBD3 0x5246 # +0xCBD4 0x5231 # +0xCBD5 0x52BC # +0xCBD6 0x530A # +0xCBD7 0x530B # +0xCBD8 0x533C # +0xCBD9 0x5392 # +0xCBDA 0x5394 # +0xCBDB 0x5487 # +0xCBDC 0x547F # +0xCBDD 0x5481 # +0xCBDE 0x5491 # +0xCBDF 0x5482 # +0xCBE0 0x5488 # +0xCBE1 0x546B # +0xCBE2 0x547A # +0xCBE3 0x547E # +0xCBE4 0x5465 # +0xCBE5 0x546C # +0xCBE6 0x5474 # +0xCBE7 0x5466 # +0xCBE8 0x548D # +0xCBE9 0x546F # +0xCBEA 0x5461 # +0xCBEB 0x5460 # +0xCBEC 0x5498 # +0xCBED 0x5463 # +0xCBEE 0x5467 # +0xCBEF 0x5464 # +0xCBF0 0x56F7 # +0xCBF1 0x56F9 # +0xCBF2 0x576F # +0xCBF3 0x5772 # +0xCBF4 0x576D # +0xCBF5 0x576B # +0xCBF6 0x5771 # +0xCBF7 0x5770 # +0xCBF8 0x5776 # +0xCBF9 0x5780 # +0xCBFA 0x5775 # +0xCBFB 0x577B # +0xCBFC 0x5773 # +0xCBFD 0x5774 # +0xCBFE 0x5762 # +0xCC40 0x5768 # +0xCC41 0x577D # +0xCC42 0x590C # +0xCC43 0x5945 # +0xCC44 0x59B5 # +0xCC45 0x59BA # +0xCC46 0x59CF # +0xCC47 0x59CE # +0xCC48 0x59B2 # +0xCC49 0x59CC # +0xCC4A 0x59C1 # +0xCC4B 0x59B6 # +0xCC4C 0x59BC # +0xCC4D 0x59C3 # +0xCC4E 0x59D6 # +0xCC4F 0x59B1 # +0xCC50 0x59BD # +0xCC51 0x59C0 # +0xCC52 0x59C8 # +0xCC53 0x59B4 # +0xCC54 0x59C7 # +0xCC55 0x5B62 # +0xCC56 0x5B65 # +0xCC57 0x5B93 # +0xCC58 0x5B95 # +0xCC59 0x5C44 # +0xCC5A 0x5C47 # +0xCC5B 0x5CAE # +0xCC5C 0x5CA4 # +0xCC5D 0x5CA0 # +0xCC5E 0x5CB5 # +0xCC5F 0x5CAF # +0xCC60 0x5CA8 # +0xCC61 0x5CAC # +0xCC62 0x5C9F # +0xCC63 0x5CA3 # +0xCC64 0x5CAD # +0xCC65 0x5CA2 # +0xCC66 0x5CAA # +0xCC67 0x5CA7 # +0xCC68 0x5C9D # +0xCC69 0x5CA5 # +0xCC6A 0x5CB6 # +0xCC6B 0x5CB0 # +0xCC6C 0x5CA6 # +0xCC6D 0x5E17 # +0xCC6E 0x5E14 # +0xCC6F 0x5E19 # +0xCC70 0x5F28 # +0xCC71 0x5F22 # +0xCC72 0x5F23 # +0xCC73 0x5F24 # +0xCC74 0x5F54 # +0xCC75 0x5F82 # +0xCC76 0x5F7E # +0xCC77 0x5F7D # +0xCC78 0x5FDE # +0xCC79 0x5FE5 # +0xCC7A 0x602D # +0xCC7B 0x6026 # +0xCC7C 0x6019 # +0xCC7D 0x6032 # +0xCC7E 0x600B # +0xCCA1 0x6034 # +0xCCA2 0x600A # +0xCCA3 0x6017 # +0xCCA4 0x6033 # +0xCCA5 0x601A # +0xCCA6 0x601E # +0xCCA7 0x602C # +0xCCA8 0x6022 # +0xCCA9 0x600D # +0xCCAA 0x6010 # +0xCCAB 0x602E # +0xCCAC 0x6013 # +0xCCAD 0x6011 # +0xCCAE 0x600C # +0xCCAF 0x6009 # +0xCCB0 0x601C # +0xCCB1 0x6214 # +0xCCB2 0x623D # +0xCCB3 0x62AD # +0xCCB4 0x62B4 # +0xCCB5 0x62D1 # +0xCCB6 0x62BE # +0xCCB7 0x62AA # +0xCCB8 0x62B6 # +0xCCB9 0x62CA # +0xCCBA 0x62AE # +0xCCBB 0x62B3 # +0xCCBC 0x62AF # +0xCCBD 0x62BB # +0xCCBE 0x62A9 # +0xCCBF 0x62B0 # +0xCCC0 0x62B8 # +0xCCC1 0x653D # +0xCCC2 0x65A8 # +0xCCC3 0x65BB # +0xCCC4 0x6609 # +0xCCC5 0x65FC # +0xCCC6 0x6604 # +0xCCC7 0x6612 # +0xCCC8 0x6608 # +0xCCC9 0x65FB # +0xCCCA 0x6603 # +0xCCCB 0x660B # +0xCCCC 0x660D # +0xCCCD 0x6605 # +0xCCCE 0x65FD # +0xCCCF 0x6611 # +0xCCD0 0x6610 # +0xCCD1 0x66F6 # +0xCCD2 0x670A # +0xCCD3 0x6785 # +0xCCD4 0x676C # +0xCCD5 0x678E # +0xCCD6 0x6792 # +0xCCD7 0x6776 # +0xCCD8 0x677B # +0xCCD9 0x6798 # +0xCCDA 0x6786 # +0xCCDB 0x6784 # +0xCCDC 0x6774 # +0xCCDD 0x678D # +0xCCDE 0x678C # +0xCCDF 0x677A # +0xCCE0 0x679F # +0xCCE1 0x6791 # +0xCCE2 0x6799 # +0xCCE3 0x6783 # +0xCCE4 0x677D # +0xCCE5 0x6781 # +0xCCE6 0x6778 # +0xCCE7 0x6779 # +0xCCE8 0x6794 # +0xCCE9 0x6B25 # +0xCCEA 0x6B80 # +0xCCEB 0x6B7E # +0xCCEC 0x6BDE # +0xCCED 0x6C1D # +0xCCEE 0x6C93 # +0xCCEF 0x6CEC # +0xCCF0 0x6CEB # +0xCCF1 0x6CEE # +0xCCF2 0x6CD9 # +0xCCF3 0x6CB6 # +0xCCF4 0x6CD4 # +0xCCF5 0x6CAD # +0xCCF6 0x6CE7 # +0xCCF7 0x6CB7 # +0xCCF8 0x6CD0 # +0xCCF9 0x6CC2 # +0xCCFA 0x6CBA # +0xCCFB 0x6CC3 # +0xCCFC 0x6CC6 # +0xCCFD 0x6CED # +0xCCFE 0x6CF2 # +0xCD40 0x6CD2 # +0xCD41 0x6CDD # +0xCD42 0x6CB4 # +0xCD43 0x6C8A # +0xCD44 0x6C9D # +0xCD45 0x6C80 # +0xCD46 0x6CDE # +0xCD47 0x6CC0 # +0xCD48 0x6D30 # +0xCD49 0x6CCD # +0xCD4A 0x6CC7 # +0xCD4B 0x6CB0 # +0xCD4C 0x6CF9 # +0xCD4D 0x6CCF # +0xCD4E 0x6CE9 # +0xCD4F 0x6CD1 # +0xCD50 0x7094 # +0xCD51 0x7098 # +0xCD52 0x7085 # +0xCD53 0x7093 # +0xCD54 0x7086 # +0xCD55 0x7084 # +0xCD56 0x7091 # +0xCD57 0x7096 # +0xCD58 0x7082 # +0xCD59 0x709A # +0xCD5A 0x7083 # +0xCD5B 0x726A # +0xCD5C 0x72D6 # +0xCD5D 0x72CB # +0xCD5E 0x72D8 # +0xCD5F 0x72C9 # +0xCD60 0x72DC # +0xCD61 0x72D2 # +0xCD62 0x72D4 # +0xCD63 0x72DA # +0xCD64 0x72CC # +0xCD65 0x72D1 # +0xCD66 0x73A4 # +0xCD67 0x73A1 # +0xCD68 0x73AD # +0xCD69 0x73A6 # +0xCD6A 0x73A2 # +0xCD6B 0x73A0 # +0xCD6C 0x73AC # +0xCD6D 0x739D # +0xCD6E 0x74DD # +0xCD6F 0x74E8 # +0xCD70 0x753F # +0xCD71 0x7540 # +0xCD72 0x753E # +0xCD73 0x758C # +0xCD74 0x7598 # +0xCD75 0x76AF # +0xCD76 0x76F3 # +0xCD77 0x76F1 # +0xCD78 0x76F0 # +0xCD79 0x76F5 # +0xCD7A 0x77F8 # +0xCD7B 0x77FC # +0xCD7C 0x77F9 # +0xCD7D 0x77FB # +0xCD7E 0x77FA # +0xCDA1 0x77F7 # +0xCDA2 0x7942 # +0xCDA3 0x793F # +0xCDA4 0x79C5 # +0xCDA5 0x7A78 # +0xCDA6 0x7A7B # +0xCDA7 0x7AFB # +0xCDA8 0x7C75 # +0xCDA9 0x7CFD # +0xCDAA 0x8035 # +0xCDAB 0x808F # +0xCDAC 0x80AE # +0xCDAD 0x80A3 # +0xCDAE 0x80B8 # +0xCDAF 0x80B5 # +0xCDB0 0x80AD # +0xCDB1 0x8220 # +0xCDB2 0x82A0 # +0xCDB3 0x82C0 # +0xCDB4 0x82AB # +0xCDB5 0x829A # +0xCDB6 0x8298 # +0xCDB7 0x829B # +0xCDB8 0x82B5 # +0xCDB9 0x82A7 # +0xCDBA 0x82AE # +0xCDBB 0x82BC # +0xCDBC 0x829E # +0xCDBD 0x82BA # +0xCDBE 0x82B4 # +0xCDBF 0x82A8 # +0xCDC0 0x82A1 # +0xCDC1 0x82A9 # +0xCDC2 0x82C2 # +0xCDC3 0x82A4 # +0xCDC4 0x82C3 # +0xCDC5 0x82B6 # +0xCDC6 0x82A2 # +0xCDC7 0x8670 # +0xCDC8 0x866F # +0xCDC9 0x866D # +0xCDCA 0x866E # +0xCDCB 0x8C56 # +0xCDCC 0x8FD2 # +0xCDCD 0x8FCB # +0xCDCE 0x8FD3 # +0xCDCF 0x8FCD # +0xCDD0 0x8FD6 # +0xCDD1 0x8FD5 # +0xCDD2 0x8FD7 # +0xCDD3 0x90B2 # +0xCDD4 0x90B4 # +0xCDD5 0x90AF # +0xCDD6 0x90B3 # +0xCDD7 0x90B0 # +0xCDD8 0x9639 # +0xCDD9 0x963D # +0xCDDA 0x963C # +0xCDDB 0x963A # +0xCDDC 0x9643 # +0xCDDD 0x4FCD # +0xCDDE 0x4FC5 # +0xCDDF 0x4FD3 # +0xCDE0 0x4FB2 # +0xCDE1 0x4FC9 # +0xCDE2 0x4FCB # +0xCDE3 0x4FC1 # +0xCDE4 0x4FD4 # +0xCDE5 0x4FDC # +0xCDE6 0x4FD9 # +0xCDE7 0x4FBB # +0xCDE8 0x4FB3 # +0xCDE9 0x4FDB # +0xCDEA 0x4FC7 # +0xCDEB 0x4FD6 # +0xCDEC 0x4FBA # +0xCDED 0x4FC0 # +0xCDEE 0x4FB9 # +0xCDEF 0x4FEC # +0xCDF0 0x5244 # +0xCDF1 0x5249 # +0xCDF2 0x52C0 # +0xCDF3 0x52C2 # +0xCDF4 0x533D # +0xCDF5 0x537C # +0xCDF6 0x5397 # +0xCDF7 0x5396 # +0xCDF8 0x5399 # +0xCDF9 0x5398 # +0xCDFA 0x54BA # +0xCDFB 0x54A1 # +0xCDFC 0x54AD # +0xCDFD 0x54A5 # +0xCDFE 0x54CF # +0xCE40 0x54C3 # +0xCE41 0x830D # +0xCE42 0x54B7 # +0xCE43 0x54AE # +0xCE44 0x54D6 # +0xCE45 0x54B6 # +0xCE46 0x54C5 # +0xCE47 0x54C6 # +0xCE48 0x54A0 # +0xCE49 0x5470 # +0xCE4A 0x54BC # +0xCE4B 0x54A2 # +0xCE4C 0x54BE # +0xCE4D 0x5472 # +0xCE4E 0x54DE # +0xCE4F 0x54B0 # +0xCE50 0x57B5 # +0xCE51 0x579E # +0xCE52 0x579F # +0xCE53 0x57A4 # +0xCE54 0x578C # +0xCE55 0x5797 # +0xCE56 0x579D # +0xCE57 0x579B # +0xCE58 0x5794 # +0xCE59 0x5798 # +0xCE5A 0x578F # +0xCE5B 0x5799 # +0xCE5C 0x57A5 # +0xCE5D 0x579A # +0xCE5E 0x5795 # +0xCE5F 0x58F4 # +0xCE60 0x590D # +0xCE61 0x5953 # +0xCE62 0x59E1 # +0xCE63 0x59DE # +0xCE64 0x59EE # +0xCE65 0x5A00 # +0xCE66 0x59F1 # +0xCE67 0x59DD # +0xCE68 0x59FA # +0xCE69 0x59FD # +0xCE6A 0x59FC # +0xCE6B 0x59F6 # +0xCE6C 0x59E4 # +0xCE6D 0x59F2 # +0xCE6E 0x59F7 # +0xCE6F 0x59DB # +0xCE70 0x59E9 # +0xCE71 0x59F3 # +0xCE72 0x59F5 # +0xCE73 0x59E0 # +0xCE74 0x59FE # +0xCE75 0x59F4 # +0xCE76 0x59ED # +0xCE77 0x5BA8 # +0xCE78 0x5C4C # +0xCE79 0x5CD0 # +0xCE7A 0x5CD8 # +0xCE7B 0x5CCC # +0xCE7C 0x5CD7 # +0xCE7D 0x5CCB # +0xCE7E 0x5CDB # +0xCEA1 0x5CDE # +0xCEA2 0x5CDA # +0xCEA3 0x5CC9 # +0xCEA4 0x5CC7 # +0xCEA5 0x5CCA # +0xCEA6 0x5CD6 # +0xCEA7 0x5CD3 # +0xCEA8 0x5CD4 # +0xCEA9 0x5CCF # +0xCEAA 0x5CC8 # +0xCEAB 0x5CC6 # +0xCEAC 0x5CCE # +0xCEAD 0x5CDF # +0xCEAE 0x5CF8 # +0xCEAF 0x5DF9 # +0xCEB0 0x5E21 # +0xCEB1 0x5E22 # +0xCEB2 0x5E23 # +0xCEB3 0x5E20 # +0xCEB4 0x5E24 # +0xCEB5 0x5EB0 # +0xCEB6 0x5EA4 # +0xCEB7 0x5EA2 # +0xCEB8 0x5E9B # +0xCEB9 0x5EA3 # +0xCEBA 0x5EA5 # +0xCEBB 0x5F07 # +0xCEBC 0x5F2E # +0xCEBD 0x5F56 # +0xCEBE 0x5F86 # +0xCEBF 0x6037 # +0xCEC0 0x6039 # +0xCEC1 0x6054 # +0xCEC2 0x6072 # +0xCEC3 0x605E # +0xCEC4 0x6045 # +0xCEC5 0x6053 # +0xCEC6 0x6047 # +0xCEC7 0x6049 # +0xCEC8 0x605B # +0xCEC9 0x604C # +0xCECA 0x6040 # +0xCECB 0x6042 # +0xCECC 0x605F # +0xCECD 0x6024 # +0xCECE 0x6044 # +0xCECF 0x6058 # +0xCED0 0x6066 # +0xCED1 0x606E # +0xCED2 0x6242 # +0xCED3 0x6243 # +0xCED4 0x62CF # +0xCED5 0x630D # +0xCED6 0x630B # +0xCED7 0x62F5 # +0xCED8 0x630E # +0xCED9 0x6303 # +0xCEDA 0x62EB # +0xCEDB 0x62F9 # +0xCEDC 0x630F # +0xCEDD 0x630C # +0xCEDE 0x62F8 # +0xCEDF 0x62F6 # +0xCEE0 0x6300 # +0xCEE1 0x6313 # +0xCEE2 0x6314 # +0xCEE3 0x62FA # +0xCEE4 0x6315 # +0xCEE5 0x62FB # +0xCEE6 0x62F0 # +0xCEE7 0x6541 # +0xCEE8 0x6543 # +0xCEE9 0x65AA # +0xCEEA 0x65BF # +0xCEEB 0x6636 # +0xCEEC 0x6621 # +0xCEED 0x6632 # +0xCEEE 0x6635 # +0xCEEF 0x661C # +0xCEF0 0x6626 # +0xCEF1 0x6622 # +0xCEF2 0x6633 # +0xCEF3 0x662B # +0xCEF4 0x663A # +0xCEF5 0x661D # +0xCEF6 0x6634 # +0xCEF7 0x6639 # +0xCEF8 0x662E # +0xCEF9 0x670F # +0xCEFA 0x6710 # +0xCEFB 0x67C1 # +0xCEFC 0x67F2 # +0xCEFD 0x67C8 # +0xCEFE 0x67BA # +0xCF40 0x67DC # +0xCF41 0x67BB # +0xCF42 0x67F8 # +0xCF43 0x67D8 # +0xCF44 0x67C0 # +0xCF45 0x67B7 # +0xCF46 0x67C5 # +0xCF47 0x67EB # +0xCF48 0x67E4 # +0xCF49 0x67DF # +0xCF4A 0x67B5 # +0xCF4B 0x67CD # +0xCF4C 0x67B3 # +0xCF4D 0x67F7 # +0xCF4E 0x67F6 # +0xCF4F 0x67EE # +0xCF50 0x67E3 # +0xCF51 0x67C2 # +0xCF52 0x67B9 # +0xCF53 0x67CE # +0xCF54 0x67E7 # +0xCF55 0x67F0 # +0xCF56 0x67B2 # +0xCF57 0x67FC # +0xCF58 0x67C6 # +0xCF59 0x67ED # +0xCF5A 0x67CC # +0xCF5B 0x67AE # +0xCF5C 0x67E6 # +0xCF5D 0x67DB # +0xCF5E 0x67FA # +0xCF5F 0x67C9 # +0xCF60 0x67CA # +0xCF61 0x67C3 # +0xCF62 0x67EA # +0xCF63 0x67CB # +0xCF64 0x6B28 # +0xCF65 0x6B82 # +0xCF66 0x6B84 # +0xCF67 0x6BB6 # +0xCF68 0x6BD6 # +0xCF69 0x6BD8 # +0xCF6A 0x6BE0 # +0xCF6B 0x6C20 # +0xCF6C 0x6C21 # +0xCF6D 0x6D28 # +0xCF6E 0x6D34 # +0xCF6F 0x6D2D # +0xCF70 0x6D1F # +0xCF71 0x6D3C # +0xCF72 0x6D3F # +0xCF73 0x6D12 # +0xCF74 0x6D0A # +0xCF75 0x6CDA # +0xCF76 0x6D33 # +0xCF77 0x6D04 # +0xCF78 0x6D19 # +0xCF79 0x6D3A # +0xCF7A 0x6D1A # +0xCF7B 0x6D11 # +0xCF7C 0x6D00 # +0xCF7D 0x6D1D # +0xCF7E 0x6D42 # +0xCFA1 0x6D01 # +0xCFA2 0x6D18 # +0xCFA3 0x6D37 # +0xCFA4 0x6D03 # +0xCFA5 0x6D0F # +0xCFA6 0x6D40 # +0xCFA7 0x6D07 # +0xCFA8 0x6D20 # +0xCFA9 0x6D2C # +0xCFAA 0x6D08 # +0xCFAB 0x6D22 # +0xCFAC 0x6D09 # +0xCFAD 0x6D10 # +0xCFAE 0x70B7 # +0xCFAF 0x709F # +0xCFB0 0x70BE # +0xCFB1 0x70B1 # +0xCFB2 0x70B0 # +0xCFB3 0x70A1 # +0xCFB4 0x70B4 # +0xCFB5 0x70B5 # +0xCFB6 0x70A9 # +0xCFB7 0x7241 # +0xCFB8 0x7249 # +0xCFB9 0x724A # +0xCFBA 0x726C # +0xCFBB 0x7270 # +0xCFBC 0x7273 # +0xCFBD 0x726E # +0xCFBE 0x72CA # +0xCFBF 0x72E4 # +0xCFC0 0x72E8 # +0xCFC1 0x72EB # +0xCFC2 0x72DF # +0xCFC3 0x72EA # +0xCFC4 0x72E6 # +0xCFC5 0x72E3 # +0xCFC6 0x7385 # +0xCFC7 0x73CC # +0xCFC8 0x73C2 # +0xCFC9 0x73C8 # +0xCFCA 0x73C5 # +0xCFCB 0x73B9 # +0xCFCC 0x73B6 # +0xCFCD 0x73B5 # +0xCFCE 0x73B4 # +0xCFCF 0x73EB # +0xCFD0 0x73BF # +0xCFD1 0x73C7 # +0xCFD2 0x73BE # +0xCFD3 0x73C3 # +0xCFD4 0x73C6 # +0xCFD5 0x73B8 # +0xCFD6 0x73CB # +0xCFD7 0x74EC # +0xCFD8 0x74EE # +0xCFD9 0x752E # +0xCFDA 0x7547 # +0xCFDB 0x7548 # +0xCFDC 0x75A7 # +0xCFDD 0x75AA # +0xCFDE 0x7679 # +0xCFDF 0x76C4 # +0xCFE0 0x7708 # +0xCFE1 0x7703 # +0xCFE2 0x7704 # +0xCFE3 0x7705 # +0xCFE4 0x770A # +0xCFE5 0x76F7 # +0xCFE6 0x76FB # +0xCFE7 0x76FA # +0xCFE8 0x77E7 # +0xCFE9 0x77E8 # +0xCFEA 0x7806 # +0xCFEB 0x7811 # +0xCFEC 0x7812 # +0xCFED 0x7805 # +0xCFEE 0x7810 # +0xCFEF 0x780F # +0xCFF0 0x780E # +0xCFF1 0x7809 # +0xCFF2 0x7803 # +0xCFF3 0x7813 # +0xCFF4 0x794A # +0xCFF5 0x794C # +0xCFF6 0x794B # +0xCFF7 0x7945 # +0xCFF8 0x7944 # +0xCFF9 0x79D5 # +0xCFFA 0x79CD # +0xCFFB 0x79CF # +0xCFFC 0x79D6 # +0xCFFD 0x79CE # +0xCFFE 0x7A80 # +0xD040 0x7A7E # +0xD041 0x7AD1 # +0xD042 0x7B00 # +0xD043 0x7B01 # +0xD044 0x7C7A # +0xD045 0x7C78 # +0xD046 0x7C79 # +0xD047 0x7C7F # +0xD048 0x7C80 # +0xD049 0x7C81 # +0xD04A 0x7D03 # +0xD04B 0x7D08 # +0xD04C 0x7D01 # +0xD04D 0x7F58 # +0xD04E 0x7F91 # +0xD04F 0x7F8D # +0xD050 0x7FBE # +0xD051 0x8007 # +0xD052 0x800E # +0xD053 0x800F # +0xD054 0x8014 # +0xD055 0x8037 # +0xD056 0x80D8 # +0xD057 0x80C7 # +0xD058 0x80E0 # +0xD059 0x80D1 # +0xD05A 0x80C8 # +0xD05B 0x80C2 # +0xD05C 0x80D0 # +0xD05D 0x80C5 # +0xD05E 0x80E3 # +0xD05F 0x80D9 # +0xD060 0x80DC # +0xD061 0x80CA # +0xD062 0x80D5 # +0xD063 0x80C9 # +0xD064 0x80CF # +0xD065 0x80D7 # +0xD066 0x80E6 # +0xD067 0x80CD # +0xD068 0x81FF # +0xD069 0x8221 # +0xD06A 0x8294 # +0xD06B 0x82D9 # +0xD06C 0x82FE # +0xD06D 0x82F9 # +0xD06E 0x8307 # +0xD06F 0x82E8 # +0xD070 0x8300 # +0xD071 0x82D5 # +0xD072 0x833A # +0xD073 0x82EB # +0xD074 0x82D6 # +0xD075 0x82F4 # +0xD076 0x82EC # +0xD077 0x82E1 # +0xD078 0x82F2 # +0xD079 0x82F5 # +0xD07A 0x830C # +0xD07B 0x82FB # +0xD07C 0x82F6 # +0xD07D 0x82F0 # +0xD07E 0x82EA # +0xD0A1 0x82E4 # +0xD0A2 0x82E0 # +0xD0A3 0x82FA # +0xD0A4 0x82F3 # +0xD0A5 0x82ED # +0xD0A6 0x8677 # +0xD0A7 0x8674 # +0xD0A8 0x867C # +0xD0A9 0x8673 # +0xD0AA 0x8841 # +0xD0AB 0x884E # +0xD0AC 0x8867 # +0xD0AD 0x886A # +0xD0AE 0x8869 # +0xD0AF 0x89D3 # +0xD0B0 0x8A04 # +0xD0B1 0x8A07 # +0xD0B2 0x8D72 # +0xD0B3 0x8FE3 # +0xD0B4 0x8FE1 # +0xD0B5 0x8FEE # +0xD0B6 0x8FE0 # +0xD0B7 0x90F1 # +0xD0B8 0x90BD # +0xD0B9 0x90BF # +0xD0BA 0x90D5 # +0xD0BB 0x90C5 # +0xD0BC 0x90BE # +0xD0BD 0x90C7 # +0xD0BE 0x90CB # +0xD0BF 0x90C8 # +0xD0C0 0x91D4 # +0xD0C1 0x91D3 # +0xD0C2 0x9654 # +0xD0C3 0x964F # +0xD0C4 0x9651 # +0xD0C5 0x9653 # +0xD0C6 0x964A # +0xD0C7 0x964E # +0xD0C8 0x501E # +0xD0C9 0x5005 # +0xD0CA 0x5007 # +0xD0CB 0x5013 # +0xD0CC 0x5022 # +0xD0CD 0x5030 # +0xD0CE 0x501B # +0xD0CF 0x4FF5 # +0xD0D0 0x4FF4 # +0xD0D1 0x5033 # +0xD0D2 0x5037 # +0xD0D3 0x502C # +0xD0D4 0x4FF6 # +0xD0D5 0x4FF7 # +0xD0D6 0x5017 # +0xD0D7 0x501C # +0xD0D8 0x5020 # +0xD0D9 0x5027 # +0xD0DA 0x5035 # +0xD0DB 0x502F # +0xD0DC 0x5031 # +0xD0DD 0x500E # +0xD0DE 0x515A # +0xD0DF 0x5194 # +0xD0E0 0x5193 # +0xD0E1 0x51CA # +0xD0E2 0x51C4 # +0xD0E3 0x51C5 # +0xD0E4 0x51C8 # +0xD0E5 0x51CE # +0xD0E6 0x5261 # +0xD0E7 0x525A # +0xD0E8 0x5252 # +0xD0E9 0x525E # +0xD0EA 0x525F # +0xD0EB 0x5255 # +0xD0EC 0x5262 # +0xD0ED 0x52CD # +0xD0EE 0x530E # +0xD0EF 0x539E # +0xD0F0 0x5526 # +0xD0F1 0x54E2 # +0xD0F2 0x5517 # +0xD0F3 0x5512 # +0xD0F4 0x54E7 # +0xD0F5 0x54F3 # +0xD0F6 0x54E4 # +0xD0F7 0x551A # +0xD0F8 0x54FF # +0xD0F9 0x5504 # +0xD0FA 0x5508 # +0xD0FB 0x54EB # +0xD0FC 0x5511 # +0xD0FD 0x5505 # +0xD0FE 0x54F1 # +0xD140 0x550A # +0xD141 0x54FB # +0xD142 0x54F7 # +0xD143 0x54F8 # +0xD144 0x54E0 # +0xD145 0x550E # +0xD146 0x5503 # +0xD147 0x550B # +0xD148 0x5701 # +0xD149 0x5702 # +0xD14A 0x57CC # +0xD14B 0x5832 # +0xD14C 0x57D5 # +0xD14D 0x57D2 # +0xD14E 0x57BA # +0xD14F 0x57C6 # +0xD150 0x57BD # +0xD151 0x57BC # +0xD152 0x57B8 # +0xD153 0x57B6 # +0xD154 0x57BF # +0xD155 0x57C7 # +0xD156 0x57D0 # +0xD157 0x57B9 # +0xD158 0x57C1 # +0xD159 0x590E # +0xD15A 0x594A # +0xD15B 0x5A19 # +0xD15C 0x5A16 # +0xD15D 0x5A2D # +0xD15E 0x5A2E # +0xD15F 0x5A15 # +0xD160 0x5A0F # +0xD161 0x5A17 # +0xD162 0x5A0A # +0xD163 0x5A1E # +0xD164 0x5A33 # +0xD165 0x5B6C # +0xD166 0x5BA7 # +0xD167 0x5BAD # +0xD168 0x5BAC # +0xD169 0x5C03 # +0xD16A 0x5C56 # +0xD16B 0x5C54 # +0xD16C 0x5CEC # +0xD16D 0x5CFF # +0xD16E 0x5CEE # +0xD16F 0x5CF1 # +0xD170 0x5CF7 # +0xD171 0x5D00 # +0xD172 0x5CF9 # +0xD173 0x5E29 # +0xD174 0x5E28 # +0xD175 0x5EA8 # +0xD176 0x5EAE # +0xD177 0x5EAA # +0xD178 0x5EAC # +0xD179 0x5F33 # +0xD17A 0x5F30 # +0xD17B 0x5F67 # +0xD17C 0x605D # +0xD17D 0x605A # +0xD17E 0x6067 # +0xD1A1 0x6041 # +0xD1A2 0x60A2 # +0xD1A3 0x6088 # +0xD1A4 0x6080 # +0xD1A5 0x6092 # +0xD1A6 0x6081 # +0xD1A7 0x609D # +0xD1A8 0x6083 # +0xD1A9 0x6095 # +0xD1AA 0x609B # +0xD1AB 0x6097 # +0xD1AC 0x6087 # +0xD1AD 0x609C # +0xD1AE 0x608E # +0xD1AF 0x6219 # +0xD1B0 0x6246 # +0xD1B1 0x62F2 # +0xD1B2 0x6310 # +0xD1B3 0x6356 # +0xD1B4 0x632C # +0xD1B5 0x6344 # +0xD1B6 0x6345 # +0xD1B7 0x6336 # +0xD1B8 0x6343 # +0xD1B9 0x63E4 # +0xD1BA 0x6339 # +0xD1BB 0x634B # +0xD1BC 0x634A # +0xD1BD 0x633C # +0xD1BE 0x6329 # +0xD1BF 0x6341 # +0xD1C0 0x6334 # +0xD1C1 0x6358 # +0xD1C2 0x6354 # +0xD1C3 0x6359 # +0xD1C4 0x632D # +0xD1C5 0x6347 # +0xD1C6 0x6333 # +0xD1C7 0x635A # +0xD1C8 0x6351 # +0xD1C9 0x6338 # +0xD1CA 0x6357 # +0xD1CB 0x6340 # +0xD1CC 0x6348 # +0xD1CD 0x654A # +0xD1CE 0x6546 # +0xD1CF 0x65C6 # +0xD1D0 0x65C3 # +0xD1D1 0x65C4 # +0xD1D2 0x65C2 # +0xD1D3 0x664A # +0xD1D4 0x665F # +0xD1D5 0x6647 # +0xD1D6 0x6651 # +0xD1D7 0x6712 # +0xD1D8 0x6713 # +0xD1D9 0x681F # +0xD1DA 0x681A # +0xD1DB 0x6849 # +0xD1DC 0x6832 # +0xD1DD 0x6833 # +0xD1DE 0x683B # +0xD1DF 0x684B # +0xD1E0 0x684F # +0xD1E1 0x6816 # +0xD1E2 0x6831 # +0xD1E3 0x681C # +0xD1E4 0x6835 # +0xD1E5 0x682B # +0xD1E6 0x682D # +0xD1E7 0x682F # +0xD1E8 0x684E # +0xD1E9 0x6844 # +0xD1EA 0x6834 # +0xD1EB 0x681D # +0xD1EC 0x6812 # +0xD1ED 0x6814 # +0xD1EE 0x6826 # +0xD1EF 0x6828 # +0xD1F0 0x682E # +0xD1F1 0x684D # +0xD1F2 0x683A # +0xD1F3 0x6825 # +0xD1F4 0x6820 # +0xD1F5 0x6B2C # +0xD1F6 0x6B2F # +0xD1F7 0x6B2D # +0xD1F8 0x6B31 # +0xD1F9 0x6B34 # +0xD1FA 0x6B6D # +0xD1FB 0x8082 # +0xD1FC 0x6B88 # +0xD1FD 0x6BE6 # +0xD1FE 0x6BE4 # +0xD240 0x6BE8 # +0xD241 0x6BE3 # +0xD242 0x6BE2 # +0xD243 0x6BE7 # +0xD244 0x6C25 # +0xD245 0x6D7A # +0xD246 0x6D63 # +0xD247 0x6D64 # +0xD248 0x6D76 # +0xD249 0x6D0D # +0xD24A 0x6D61 # +0xD24B 0x6D92 # +0xD24C 0x6D58 # +0xD24D 0x6D62 # +0xD24E 0x6D6D # +0xD24F 0x6D6F # +0xD250 0x6D91 # +0xD251 0x6D8D # +0xD252 0x6DEF # +0xD253 0x6D7F # +0xD254 0x6D86 # +0xD255 0x6D5E # +0xD256 0x6D67 # +0xD257 0x6D60 # +0xD258 0x6D97 # +0xD259 0x6D70 # +0xD25A 0x6D7C # +0xD25B 0x6D5F # +0xD25C 0x6D82 # +0xD25D 0x6D98 # +0xD25E 0x6D2F # +0xD25F 0x6D68 # +0xD260 0x6D8B # +0xD261 0x6D7E # +0xD262 0x6D80 # +0xD263 0x6D84 # +0xD264 0x6D16 # +0xD265 0x6D83 # +0xD266 0x6D7B # +0xD267 0x6D7D # +0xD268 0x6D75 # +0xD269 0x6D90 # +0xD26A 0x70DC # +0xD26B 0x70D3 # +0xD26C 0x70D1 # +0xD26D 0x70DD # +0xD26E 0x70CB # +0xD26F 0x7F39 # +0xD270 0x70E2 # +0xD271 0x70D7 # +0xD272 0x70D2 # +0xD273 0x70DE # +0xD274 0x70E0 # +0xD275 0x70D4 # +0xD276 0x70CD # +0xD277 0x70C5 # +0xD278 0x70C6 # +0xD279 0x70C7 # +0xD27A 0x70DA # +0xD27B 0x70CE # +0xD27C 0x70E1 # +0xD27D 0x7242 # +0xD27E 0x7278 # +0xD2A1 0x7277 # +0xD2A2 0x7276 # +0xD2A3 0x7300 # +0xD2A4 0x72FA # +0xD2A5 0x72F4 # +0xD2A6 0x72FE # +0xD2A7 0x72F6 # +0xD2A8 0x72F3 # +0xD2A9 0x72FB # +0xD2AA 0x7301 # +0xD2AB 0x73D3 # +0xD2AC 0x73D9 # +0xD2AD 0x73E5 # +0xD2AE 0x73D6 # +0xD2AF 0x73BC # +0xD2B0 0x73E7 # +0xD2B1 0x73E3 # +0xD2B2 0x73E9 # +0xD2B3 0x73DC # +0xD2B4 0x73D2 # +0xD2B5 0x73DB # +0xD2B6 0x73D4 # +0xD2B7 0x73DD # +0xD2B8 0x73DA # +0xD2B9 0x73D7 # +0xD2BA 0x73D8 # +0xD2BB 0x73E8 # +0xD2BC 0x74DE # +0xD2BD 0x74DF # +0xD2BE 0x74F4 # +0xD2BF 0x74F5 # +0xD2C0 0x7521 # +0xD2C1 0x755B # +0xD2C2 0x755F # +0xD2C3 0x75B0 # +0xD2C4 0x75C1 # +0xD2C5 0x75BB # +0xD2C6 0x75C4 # +0xD2C7 0x75C0 # +0xD2C8 0x75BF # +0xD2C9 0x75B6 # +0xD2CA 0x75BA # +0xD2CB 0x768A # +0xD2CC 0x76C9 # +0xD2CD 0x771D # +0xD2CE 0x771B # +0xD2CF 0x7710 # +0xD2D0 0x7713 # +0xD2D1 0x7712 # +0xD2D2 0x7723 # +0xD2D3 0x7711 # +0xD2D4 0x7715 # +0xD2D5 0x7719 # +0xD2D6 0x771A # +0xD2D7 0x7722 # +0xD2D8 0x7727 # +0xD2D9 0x7823 # +0xD2DA 0x782C # +0xD2DB 0x7822 # +0xD2DC 0x7835 # +0xD2DD 0x782F # +0xD2DE 0x7828 # +0xD2DF 0x782E # +0xD2E0 0x782B # +0xD2E1 0x7821 # +0xD2E2 0x7829 # +0xD2E3 0x7833 # +0xD2E4 0x782A # +0xD2E5 0x7831 # +0xD2E6 0x7954 # +0xD2E7 0x795B # +0xD2E8 0x794F # +0xD2E9 0x795C # +0xD2EA 0x7953 # +0xD2EB 0x7952 # +0xD2EC 0x7951 # +0xD2ED 0x79EB # +0xD2EE 0x79EC # +0xD2EF 0x79E0 # +0xD2F0 0x79EE # +0xD2F1 0x79ED # +0xD2F2 0x79EA # +0xD2F3 0x79DC # +0xD2F4 0x79DE # +0xD2F5 0x79DD # +0xD2F6 0x7A86 # +0xD2F7 0x7A89 # +0xD2F8 0x7A85 # +0xD2F9 0x7A8B # +0xD2FA 0x7A8C # +0xD2FB 0x7A8A # +0xD2FC 0x7A87 # +0xD2FD 0x7AD8 # +0xD2FE 0x7B10 # +0xD340 0x7B04 # +0xD341 0x7B13 # +0xD342 0x7B05 # +0xD343 0x7B0F # +0xD344 0x7B08 # +0xD345 0x7B0A # +0xD346 0x7B0E # +0xD347 0x7B09 # +0xD348 0x7B12 # +0xD349 0x7C84 # +0xD34A 0x7C91 # +0xD34B 0x7C8A # +0xD34C 0x7C8C # +0xD34D 0x7C88 # +0xD34E 0x7C8D # +0xD34F 0x7C85 # +0xD350 0x7D1E # +0xD351 0x7D1D # +0xD352 0x7D11 # +0xD353 0x7D0E # +0xD354 0x7D18 # +0xD355 0x7D16 # +0xD356 0x7D13 # +0xD357 0x7D1F # +0xD358 0x7D12 # +0xD359 0x7D0F # +0xD35A 0x7D0C # +0xD35B 0x7F5C # +0xD35C 0x7F61 # +0xD35D 0x7F5E # +0xD35E 0x7F60 # +0xD35F 0x7F5D # +0xD360 0x7F5B # +0xD361 0x7F96 # +0xD362 0x7F92 # +0xD363 0x7FC3 # +0xD364 0x7FC2 # +0xD365 0x7FC0 # +0xD366 0x8016 # +0xD367 0x803E # +0xD368 0x8039 # +0xD369 0x80FA # +0xD36A 0x80F2 # +0xD36B 0x80F9 # +0xD36C 0x80F5 # +0xD36D 0x8101 # +0xD36E 0x80FB # +0xD36F 0x8100 # +0xD370 0x8201 # +0xD371 0x822F # +0xD372 0x8225 # +0xD373 0x8333 # +0xD374 0x832D # +0xD375 0x8344 # +0xD376 0x8319 # +0xD377 0x8351 # +0xD378 0x8325 # +0xD379 0x8356 # +0xD37A 0x833F # +0xD37B 0x8341 # +0xD37C 0x8326 # +0xD37D 0x831C # +0xD37E 0x8322 # +0xD3A1 0x8342 # +0xD3A2 0x834E # +0xD3A3 0x831B # +0xD3A4 0x832A # +0xD3A5 0x8308 # +0xD3A6 0x833C # +0xD3A7 0x834D # +0xD3A8 0x8316 # +0xD3A9 0x8324 # +0xD3AA 0x8320 # +0xD3AB 0x8337 # +0xD3AC 0x832F # +0xD3AD 0x8329 # +0xD3AE 0x8347 # +0xD3AF 0x8345 # +0xD3B0 0x834C # +0xD3B1 0x8353 # +0xD3B2 0x831E # +0xD3B3 0x832C # +0xD3B4 0x834B # +0xD3B5 0x8327 # +0xD3B6 0x8348 # +0xD3B7 0x8653 # +0xD3B8 0x8652 # +0xD3B9 0x86A2 # +0xD3BA 0x86A8 # +0xD3BB 0x8696 # +0xD3BC 0x868D # +0xD3BD 0x8691 # +0xD3BE 0x869E # +0xD3BF 0x8687 # +0xD3C0 0x8697 # +0xD3C1 0x8686 # +0xD3C2 0x868B # +0xD3C3 0x869A # +0xD3C4 0x8685 # +0xD3C5 0x86A5 # +0xD3C6 0x8699 # +0xD3C7 0x86A1 # +0xD3C8 0x86A7 # +0xD3C9 0x8695 # +0xD3CA 0x8698 # +0xD3CB 0x868E # +0xD3CC 0x869D # +0xD3CD 0x8690 # +0xD3CE 0x8694 # +0xD3CF 0x8843 # +0xD3D0 0x8844 # +0xD3D1 0x886D # +0xD3D2 0x8875 # +0xD3D3 0x8876 # +0xD3D4 0x8872 # +0xD3D5 0x8880 # +0xD3D6 0x8871 # +0xD3D7 0x887F # +0xD3D8 0x886F # +0xD3D9 0x8883 # +0xD3DA 0x887E # +0xD3DB 0x8874 # +0xD3DC 0x887C # +0xD3DD 0x8A12 # +0xD3DE 0x8C47 # +0xD3DF 0x8C57 # +0xD3E0 0x8C7B # +0xD3E1 0x8CA4 # +0xD3E2 0x8CA3 # +0xD3E3 0x8D76 # +0xD3E4 0x8D78 # +0xD3E5 0x8DB5 # +0xD3E6 0x8DB7 # +0xD3E7 0x8DB6 # +0xD3E8 0x8ED1 # +0xD3E9 0x8ED3 # +0xD3EA 0x8FFE # +0xD3EB 0x8FF5 # +0xD3EC 0x9002 # +0xD3ED 0x8FFF # +0xD3EE 0x8FFB # +0xD3EF 0x9004 # +0xD3F0 0x8FFC # +0xD3F1 0x8FF6 # +0xD3F2 0x90D6 # +0xD3F3 0x90E0 # +0xD3F4 0x90D9 # +0xD3F5 0x90DA # +0xD3F6 0x90E3 # +0xD3F7 0x90DF # +0xD3F8 0x90E5 # +0xD3F9 0x90D8 # +0xD3FA 0x90DB # +0xD3FB 0x90D7 # +0xD3FC 0x90DC # +0xD3FD 0x90E4 # +0xD3FE 0x9150 # +0xD440 0x914E # +0xD441 0x914F # +0xD442 0x91D5 # +0xD443 0x91E2 # +0xD444 0x91DA # +0xD445 0x965C # +0xD446 0x965F # +0xD447 0x96BC # +0xD448 0x98E3 # +0xD449 0x9ADF # +0xD44A 0x9B2F # +0xD44B 0x4E7F # +0xD44C 0x5070 # +0xD44D 0x506A # +0xD44E 0x5061 # +0xD44F 0x505E # +0xD450 0x5060 # +0xD451 0x5053 # +0xD452 0x504B # +0xD453 0x505D # +0xD454 0x5072 # +0xD455 0x5048 # +0xD456 0x504D # +0xD457 0x5041 # +0xD458 0x505B # +0xD459 0x504A # +0xD45A 0x5062 # +0xD45B 0x5015 # +0xD45C 0x5045 # +0xD45D 0x505F # +0xD45E 0x5069 # +0xD45F 0x506B # +0xD460 0x5063 # +0xD461 0x5064 # +0xD462 0x5046 # +0xD463 0x5040 # +0xD464 0x506E # +0xD465 0x5073 # +0xD466 0x5057 # +0xD467 0x5051 # +0xD468 0x51D0 # +0xD469 0x526B # +0xD46A 0x526D # +0xD46B 0x526C # +0xD46C 0x526E # +0xD46D 0x52D6 # +0xD46E 0x52D3 # +0xD46F 0x532D # +0xD470 0x539C # +0xD471 0x5575 # +0xD472 0x5576 # +0xD473 0x553C # +0xD474 0x554D # +0xD475 0x5550 # +0xD476 0x5534 # +0xD477 0x552A # +0xD478 0x5551 # +0xD479 0x5562 # +0xD47A 0x5536 # +0xD47B 0x5535 # +0xD47C 0x5530 # +0xD47D 0x5552 # +0xD47E 0x5545 # +0xD4A1 0x550C # +0xD4A2 0x5532 # +0xD4A3 0x5565 # +0xD4A4 0x554E # +0xD4A5 0x5539 # +0xD4A6 0x5548 # +0xD4A7 0x552D # +0xD4A8 0x553B # +0xD4A9 0x5540 # +0xD4AA 0x554B # +0xD4AB 0x570A # +0xD4AC 0x5707 # +0xD4AD 0x57FB # +0xD4AE 0x5814 # +0xD4AF 0x57E2 # +0xD4B0 0x57F6 # +0xD4B1 0x57DC # +0xD4B2 0x57F4 # +0xD4B3 0x5800 # +0xD4B4 0x57ED # +0xD4B5 0x57FD # +0xD4B6 0x5808 # +0xD4B7 0x57F8 # +0xD4B8 0x580B # +0xD4B9 0x57F3 # +0xD4BA 0x57CF # +0xD4BB 0x5807 # +0xD4BC 0x57EE # +0xD4BD 0x57E3 # +0xD4BE 0x57F2 # +0xD4BF 0x57E5 # +0xD4C0 0x57EC # +0xD4C1 0x57E1 # +0xD4C2 0x580E # +0xD4C3 0x57FC # +0xD4C4 0x5810 # +0xD4C5 0x57E7 # +0xD4C6 0x5801 # +0xD4C7 0x580C # +0xD4C8 0x57F1 # +0xD4C9 0x57E9 # +0xD4CA 0x57F0 # +0xD4CB 0x580D # +0xD4CC 0x5804 # +0xD4CD 0x595C # +0xD4CE 0x5A60 # +0xD4CF 0x5A58 # +0xD4D0 0x5A55 # +0xD4D1 0x5A67 # +0xD4D2 0x5A5E # +0xD4D3 0x5A38 # +0xD4D4 0x5A35 # +0xD4D5 0x5A6D # +0xD4D6 0x5A50 # +0xD4D7 0x5A5F # +0xD4D8 0x5A65 # +0xD4D9 0x5A6C # +0xD4DA 0x5A53 # +0xD4DB 0x5A64 # +0xD4DC 0x5A57 # +0xD4DD 0x5A43 # +0xD4DE 0x5A5D # +0xD4DF 0x5A52 # +0xD4E0 0x5A44 # +0xD4E1 0x5A5B # +0xD4E2 0x5A48 # +0xD4E3 0x5A8E # +0xD4E4 0x5A3E # +0xD4E5 0x5A4D # +0xD4E6 0x5A39 # +0xD4E7 0x5A4C # +0xD4E8 0x5A70 # +0xD4E9 0x5A69 # +0xD4EA 0x5A47 # +0xD4EB 0x5A51 # +0xD4EC 0x5A56 # +0xD4ED 0x5A42 # +0xD4EE 0x5A5C # +0xD4EF 0x5B72 # +0xD4F0 0x5B6E # +0xD4F1 0x5BC1 # +0xD4F2 0x5BC0 # +0xD4F3 0x5C59 # +0xD4F4 0x5D1E # +0xD4F5 0x5D0B # +0xD4F6 0x5D1D # +0xD4F7 0x5D1A # +0xD4F8 0x5D20 # +0xD4F9 0x5D0C # +0xD4FA 0x5D28 # +0xD4FB 0x5D0D # +0xD4FC 0x5D26 # +0xD4FD 0x5D25 # +0xD4FE 0x5D0F # +0xD540 0x5D30 # +0xD541 0x5D12 # +0xD542 0x5D23 # +0xD543 0x5D1F # +0xD544 0x5D2E # +0xD545 0x5E3E # +0xD546 0x5E34 # +0xD547 0x5EB1 # +0xD548 0x5EB4 # +0xD549 0x5EB9 # +0xD54A 0x5EB2 # +0xD54B 0x5EB3 # +0xD54C 0x5F36 # +0xD54D 0x5F38 # +0xD54E 0x5F9B # +0xD54F 0x5F96 # +0xD550 0x5F9F # +0xD551 0x608A # +0xD552 0x6090 # +0xD553 0x6086 # +0xD554 0x60BE # +0xD555 0x60B0 # +0xD556 0x60BA # +0xD557 0x60D3 # +0xD558 0x60D4 # +0xD559 0x60CF # +0xD55A 0x60E4 # +0xD55B 0x60D9 # +0xD55C 0x60DD # +0xD55D 0x60C8 # +0xD55E 0x60B1 # +0xD55F 0x60DB # +0xD560 0x60B7 # +0xD561 0x60CA # +0xD562 0x60BF # +0xD563 0x60C3 # +0xD564 0x60CD # +0xD565 0x60C0 # +0xD566 0x6332 # +0xD567 0x6365 # +0xD568 0x638A # +0xD569 0x6382 # +0xD56A 0x637D # +0xD56B 0x63BD # +0xD56C 0x639E # +0xD56D 0x63AD # +0xD56E 0x639D # +0xD56F 0x6397 # +0xD570 0x63AB # +0xD571 0x638E # +0xD572 0x636F # +0xD573 0x6387 # +0xD574 0x6390 # +0xD575 0x636E # +0xD576 0x63AF # +0xD577 0x6375 # +0xD578 0x639C # +0xD579 0x636D # +0xD57A 0x63AE # +0xD57B 0x637C # +0xD57C 0x63A4 # +0xD57D 0x633B # +0xD57E 0x639F # +0xD5A1 0x6378 # +0xD5A2 0x6385 # +0xD5A3 0x6381 # +0xD5A4 0x6391 # +0xD5A5 0x638D # +0xD5A6 0x6370 # +0xD5A7 0x6553 # +0xD5A8 0x65CD # +0xD5A9 0x6665 # +0xD5AA 0x6661 # +0xD5AB 0x665B # +0xD5AC 0x6659 # +0xD5AD 0x665C # +0xD5AE 0x6662 # +0xD5AF 0x6718 # +0xD5B0 0x6879 # +0xD5B1 0x6887 # +0xD5B2 0x6890 # +0xD5B3 0x689C # +0xD5B4 0x686D # +0xD5B5 0x686E # +0xD5B6 0x68AE # +0xD5B7 0x68AB # +0xD5B8 0x6956 # +0xD5B9 0x686F # +0xD5BA 0x68A3 # +0xD5BB 0x68AC # +0xD5BC 0x68A9 # +0xD5BD 0x6875 # +0xD5BE 0x6874 # +0xD5BF 0x68B2 # +0xD5C0 0x688F # +0xD5C1 0x6877 # +0xD5C2 0x6892 # +0xD5C3 0x687C # +0xD5C4 0x686B # +0xD5C5 0x6872 # +0xD5C6 0x68AA # +0xD5C7 0x6880 # +0xD5C8 0x6871 # +0xD5C9 0x687E # +0xD5CA 0x689B # +0xD5CB 0x6896 # +0xD5CC 0x688B # +0xD5CD 0x68A0 # +0xD5CE 0x6889 # +0xD5CF 0x68A4 # +0xD5D0 0x6878 # +0xD5D1 0x687B # +0xD5D2 0x6891 # +0xD5D3 0x688C # +0xD5D4 0x688A # +0xD5D5 0x687D # +0xD5D6 0x6B36 # +0xD5D7 0x6B33 # +0xD5D8 0x6B37 # +0xD5D9 0x6B38 # +0xD5DA 0x6B91 # +0xD5DB 0x6B8F # +0xD5DC 0x6B8D # +0xD5DD 0x6B8E # +0xD5DE 0x6B8C # +0xD5DF 0x6C2A # +0xD5E0 0x6DC0 # +0xD5E1 0x6DAB # +0xD5E2 0x6DB4 # +0xD5E3 0x6DB3 # +0xD5E4 0x6E74 # +0xD5E5 0x6DAC # +0xD5E6 0x6DE9 # +0xD5E7 0x6DE2 # +0xD5E8 0x6DB7 # +0xD5E9 0x6DF6 # +0xD5EA 0x6DD4 # +0xD5EB 0x6E00 # +0xD5EC 0x6DC8 # +0xD5ED 0x6DE0 # +0xD5EE 0x6DDF # +0xD5EF 0x6DD6 # +0xD5F0 0x6DBE # +0xD5F1 0x6DE5 # +0xD5F2 0x6DDC # +0xD5F3 0x6DDD # +0xD5F4 0x6DDB # +0xD5F5 0x6DF4 # +0xD5F6 0x6DCA # +0xD5F7 0x6DBD # +0xD5F8 0x6DED # +0xD5F9 0x6DF0 # +0xD5FA 0x6DBA # +0xD5FB 0x6DD5 # +0xD5FC 0x6DC2 # +0xD5FD 0x6DCF # +0xD5FE 0x6DC9 # +0xD640 0x6DD0 # +0xD641 0x6DF2 # +0xD642 0x6DD3 # +0xD643 0x6DFD # +0xD644 0x6DD7 # +0xD645 0x6DCD # +0xD646 0x6DE3 # +0xD647 0x6DBB # +0xD648 0x70FA # +0xD649 0x710D # +0xD64A 0x70F7 # +0xD64B 0x7117 # +0xD64C 0x70F4 # +0xD64D 0x710C # +0xD64E 0x70F0 # +0xD64F 0x7104 # +0xD650 0x70F3 # +0xD651 0x7110 # +0xD652 0x70FC # +0xD653 0x70FF # +0xD654 0x7106 # +0xD655 0x7113 # +0xD656 0x7100 # +0xD657 0x70F8 # +0xD658 0x70F6 # +0xD659 0x710B # +0xD65A 0x7102 # +0xD65B 0x710E # +0xD65C 0x727E # +0xD65D 0x727B # +0xD65E 0x727C # +0xD65F 0x727F # +0xD660 0x731D # +0xD661 0x7317 # +0xD662 0x7307 # +0xD663 0x7311 # +0xD664 0x7318 # +0xD665 0x730A # +0xD666 0x7308 # +0xD667 0x72FF # +0xD668 0x730F # +0xD669 0x731E # +0xD66A 0x7388 # +0xD66B 0x73F6 # +0xD66C 0x73F8 # +0xD66D 0x73F5 # +0xD66E 0x7404 # +0xD66F 0x7401 # +0xD670 0x73FD # +0xD671 0x7407 # +0xD672 0x7400 # +0xD673 0x73FA # +0xD674 0x73FC # +0xD675 0x73FF # +0xD676 0x740C # +0xD677 0x740B # +0xD678 0x73F4 # +0xD679 0x7408 # +0xD67A 0x7564 # +0xD67B 0x7563 # +0xD67C 0x75CE # +0xD67D 0x75D2 # +0xD67E 0x75CF # +0xD6A1 0x75CB # +0xD6A2 0x75CC # +0xD6A3 0x75D1 # +0xD6A4 0x75D0 # +0xD6A5 0x768F # +0xD6A6 0x7689 # +0xD6A7 0x76D3 # +0xD6A8 0x7739 # +0xD6A9 0x772F # +0xD6AA 0x772D # +0xD6AB 0x7731 # +0xD6AC 0x7732 # +0xD6AD 0x7734 # +0xD6AE 0x7733 # +0xD6AF 0x773D # +0xD6B0 0x7725 # +0xD6B1 0x773B # +0xD6B2 0x7735 # +0xD6B3 0x7848 # +0xD6B4 0x7852 # +0xD6B5 0x7849 # +0xD6B6 0x784D # +0xD6B7 0x784A # +0xD6B8 0x784C # +0xD6B9 0x7826 # +0xD6BA 0x7845 # +0xD6BB 0x7850 # +0xD6BC 0x7964 # +0xD6BD 0x7967 # +0xD6BE 0x7969 # +0xD6BF 0x796A # +0xD6C0 0x7963 # +0xD6C1 0x796B # +0xD6C2 0x7961 # +0xD6C3 0x79BB # +0xD6C4 0x79FA # +0xD6C5 0x79F8 # +0xD6C6 0x79F6 # +0xD6C7 0x79F7 # +0xD6C8 0x7A8F # +0xD6C9 0x7A94 # +0xD6CA 0x7A90 # +0xD6CB 0x7B35 # +0xD6CC 0x7B47 # +0xD6CD 0x7B34 # +0xD6CE 0x7B25 # +0xD6CF 0x7B30 # +0xD6D0 0x7B22 # +0xD6D1 0x7B24 # +0xD6D2 0x7B33 # +0xD6D3 0x7B18 # +0xD6D4 0x7B2A # +0xD6D5 0x7B1D # +0xD6D6 0x7B31 # +0xD6D7 0x7B2B # +0xD6D8 0x7B2D # +0xD6D9 0x7B2F # +0xD6DA 0x7B32 # +0xD6DB 0x7B38 # +0xD6DC 0x7B1A # +0xD6DD 0x7B23 # +0xD6DE 0x7C94 # +0xD6DF 0x7C98 # +0xD6E0 0x7C96 # +0xD6E1 0x7CA3 # +0xD6E2 0x7D35 # +0xD6E3 0x7D3D # +0xD6E4 0x7D38 # +0xD6E5 0x7D36 # +0xD6E6 0x7D3A # +0xD6E7 0x7D45 # +0xD6E8 0x7D2C # +0xD6E9 0x7D29 # +0xD6EA 0x7D41 # +0xD6EB 0x7D47 # +0xD6EC 0x7D3E # +0xD6ED 0x7D3F # +0xD6EE 0x7D4A # +0xD6EF 0x7D3B # +0xD6F0 0x7D28 # +0xD6F1 0x7F63 # +0xD6F2 0x7F95 # +0xD6F3 0x7F9C # +0xD6F4 0x7F9D # +0xD6F5 0x7F9B # +0xD6F6 0x7FCA # +0xD6F7 0x7FCB # +0xD6F8 0x7FCD # +0xD6F9 0x7FD0 # +0xD6FA 0x7FD1 # +0xD6FB 0x7FC7 # +0xD6FC 0x7FCF # +0xD6FD 0x7FC9 # +0xD6FE 0x801F # +0xD740 0x801E # +0xD741 0x801B # +0xD742 0x8047 # +0xD743 0x8043 # +0xD744 0x8048 # +0xD745 0x8118 # +0xD746 0x8125 # +0xD747 0x8119 # +0xD748 0x811B # +0xD749 0x812D # +0xD74A 0x811F # +0xD74B 0x812C # +0xD74C 0x811E # +0xD74D 0x8121 # +0xD74E 0x8115 # +0xD74F 0x8127 # +0xD750 0x811D # +0xD751 0x8122 # +0xD752 0x8211 # +0xD753 0x8238 # +0xD754 0x8233 # +0xD755 0x823A # +0xD756 0x8234 # +0xD757 0x8232 # +0xD758 0x8274 # +0xD759 0x8390 # +0xD75A 0x83A3 # +0xD75B 0x83A8 # +0xD75C 0x838D # +0xD75D 0x837A # +0xD75E 0x8373 # +0xD75F 0x83A4 # +0xD760 0x8374 # +0xD761 0x838F # +0xD762 0x8381 # +0xD763 0x8395 # +0xD764 0x8399 # +0xD765 0x8375 # +0xD766 0x8394 # +0xD767 0x83A9 # +0xD768 0x837D # +0xD769 0x8383 # +0xD76A 0x838C # +0xD76B 0x839D # +0xD76C 0x839B # +0xD76D 0x83AA # +0xD76E 0x838B # +0xD76F 0x837E # +0xD770 0x83A5 # +0xD771 0x83AF # +0xD772 0x8388 # +0xD773 0x8397 # +0xD774 0x83B0 # +0xD775 0x837F # +0xD776 0x83A6 # +0xD777 0x8387 # +0xD778 0x83AE # +0xD779 0x8376 # +0xD77A 0x839A # +0xD77B 0x8659 # +0xD77C 0x8656 # +0xD77D 0x86BF # +0xD77E 0x86B7 # +0xD7A1 0x86C2 # +0xD7A2 0x86C1 # +0xD7A3 0x86C5 # +0xD7A4 0x86BA # +0xD7A5 0x86B0 # +0xD7A6 0x86C8 # +0xD7A7 0x86B9 # +0xD7A8 0x86B3 # +0xD7A9 0x86B8 # +0xD7AA 0x86CC # +0xD7AB 0x86B4 # +0xD7AC 0x86BB # +0xD7AD 0x86BC # +0xD7AE 0x86C3 # +0xD7AF 0x86BD # +0xD7B0 0x86BE # +0xD7B1 0x8852 # +0xD7B2 0x8889 # +0xD7B3 0x8895 # +0xD7B4 0x88A8 # +0xD7B5 0x88A2 # +0xD7B6 0x88AA # +0xD7B7 0x889A # +0xD7B8 0x8891 # +0xD7B9 0x88A1 # +0xD7BA 0x889F # +0xD7BB 0x8898 # +0xD7BC 0x88A7 # +0xD7BD 0x8899 # +0xD7BE 0x889B # +0xD7BF 0x8897 # +0xD7C0 0x88A4 # +0xD7C1 0x88AC # +0xD7C2 0x888C # +0xD7C3 0x8893 # +0xD7C4 0x888E # +0xD7C5 0x8982 # +0xD7C6 0x89D6 # +0xD7C7 0x89D9 # +0xD7C8 0x89D5 # +0xD7C9 0x8A30 # +0xD7CA 0x8A27 # +0xD7CB 0x8A2C # +0xD7CC 0x8A1E # +0xD7CD 0x8C39 # +0xD7CE 0x8C3B # +0xD7CF 0x8C5C # +0xD7D0 0x8C5D # +0xD7D1 0x8C7D # +0xD7D2 0x8CA5 # +0xD7D3 0x8D7D # +0xD7D4 0x8D7B # +0xD7D5 0x8D79 # +0xD7D6 0x8DBC # +0xD7D7 0x8DC2 # +0xD7D8 0x8DB9 # +0xD7D9 0x8DBF # +0xD7DA 0x8DC1 # +0xD7DB 0x8ED8 # +0xD7DC 0x8EDE # +0xD7DD 0x8EDD # +0xD7DE 0x8EDC # +0xD7DF 0x8ED7 # +0xD7E0 0x8EE0 # +0xD7E1 0x8EE1 # +0xD7E2 0x9024 # +0xD7E3 0x900B # +0xD7E4 0x9011 # +0xD7E5 0x901C # +0xD7E6 0x900C # +0xD7E7 0x9021 # +0xD7E8 0x90EF # +0xD7E9 0x90EA # +0xD7EA 0x90F0 # +0xD7EB 0x90F4 # +0xD7EC 0x90F2 # +0xD7ED 0x90F3 # +0xD7EE 0x90D4 # +0xD7EF 0x90EB # +0xD7F0 0x90EC # +0xD7F1 0x90E9 # +0xD7F2 0x9156 # +0xD7F3 0x9158 # +0xD7F4 0x915A # +0xD7F5 0x9153 # +0xD7F6 0x9155 # +0xD7F7 0x91EC # +0xD7F8 0x91F4 # +0xD7F9 0x91F1 # +0xD7FA 0x91F3 # +0xD7FB 0x91F8 # +0xD7FC 0x91E4 # +0xD7FD 0x91F9 # +0xD7FE 0x91EA # +0xD840 0x91EB # +0xD841 0x91F7 # +0xD842 0x91E8 # +0xD843 0x91EE # +0xD844 0x957A # +0xD845 0x9586 # +0xD846 0x9588 # +0xD847 0x967C # +0xD848 0x966D # +0xD849 0x966B # +0xD84A 0x9671 # +0xD84B 0x966F # +0xD84C 0x96BF # +0xD84D 0x976A # +0xD84E 0x9804 # +0xD84F 0x98E5 # +0xD850 0x9997 # +0xD851 0x509B # +0xD852 0x5095 # +0xD853 0x5094 # +0xD854 0x509E # +0xD855 0x508B # +0xD856 0x50A3 # +0xD857 0x5083 # +0xD858 0x508C # +0xD859 0x508E # +0xD85A 0x509D # +0xD85B 0x5068 # +0xD85C 0x509C # +0xD85D 0x5092 # +0xD85E 0x5082 # +0xD85F 0x5087 # +0xD860 0x515F # +0xD861 0x51D4 # +0xD862 0x5312 # +0xD863 0x5311 # +0xD864 0x53A4 # +0xD865 0x53A7 # +0xD866 0x5591 # +0xD867 0x55A8 # +0xD868 0x55A5 # +0xD869 0x55AD # +0xD86A 0x5577 # +0xD86B 0x5645 # +0xD86C 0x55A2 # +0xD86D 0x5593 # +0xD86E 0x5588 # +0xD86F 0x558F # +0xD870 0x55B5 # +0xD871 0x5581 # +0xD872 0x55A3 # +0xD873 0x5592 # +0xD874 0x55A4 # +0xD875 0x557D # +0xD876 0x558C # +0xD877 0x55A6 # +0xD878 0x557F # +0xD879 0x5595 # +0xD87A 0x55A1 # +0xD87B 0x558E # +0xD87C 0x570C # +0xD87D 0x5829 # +0xD87E 0x5837 # +0xD8A1 0x5819 # +0xD8A2 0x581E # +0xD8A3 0x5827 # +0xD8A4 0x5823 # +0xD8A5 0x5828 # +0xD8A6 0x57F5 # +0xD8A7 0x5848 # +0xD8A8 0x5825 # +0xD8A9 0x581C # +0xD8AA 0x581B # +0xD8AB 0x5833 # +0xD8AC 0x583F # +0xD8AD 0x5836 # +0xD8AE 0x582E # +0xD8AF 0x5839 # +0xD8B0 0x5838 # +0xD8B1 0x582D # +0xD8B2 0x582C # +0xD8B3 0x583B # +0xD8B4 0x5961 # +0xD8B5 0x5AAF # +0xD8B6 0x5A94 # +0xD8B7 0x5A9F # +0xD8B8 0x5A7A # +0xD8B9 0x5AA2 # +0xD8BA 0x5A9E # +0xD8BB 0x5A78 # +0xD8BC 0x5AA6 # +0xD8BD 0x5A7C # +0xD8BE 0x5AA5 # +0xD8BF 0x5AAC # +0xD8C0 0x5A95 # +0xD8C1 0x5AAE # +0xD8C2 0x5A37 # +0xD8C3 0x5A84 # +0xD8C4 0x5A8A # +0xD8C5 0x5A97 # +0xD8C6 0x5A83 # +0xD8C7 0x5A8B # +0xD8C8 0x5AA9 # +0xD8C9 0x5A7B # +0xD8CA 0x5A7D # +0xD8CB 0x5A8C # +0xD8CC 0x5A9C # +0xD8CD 0x5A8F # +0xD8CE 0x5A93 # +0xD8CF 0x5A9D # +0xD8D0 0x5BEA # +0xD8D1 0x5BCD # +0xD8D2 0x5BCB # +0xD8D3 0x5BD4 # +0xD8D4 0x5BD1 # +0xD8D5 0x5BCA # +0xD8D6 0x5BCE # +0xD8D7 0x5C0C # +0xD8D8 0x5C30 # +0xD8D9 0x5D37 # +0xD8DA 0x5D43 # +0xD8DB 0x5D6B # +0xD8DC 0x5D41 # +0xD8DD 0x5D4B # +0xD8DE 0x5D3F # +0xD8DF 0x5D35 # +0xD8E0 0x5D51 # +0xD8E1 0x5D4E # +0xD8E2 0x5D55 # +0xD8E3 0x5D33 # +0xD8E4 0x5D3A # +0xD8E5 0x5D52 # +0xD8E6 0x5D3D # +0xD8E7 0x5D31 # +0xD8E8 0x5D59 # +0xD8E9 0x5D42 # +0xD8EA 0x5D39 # +0xD8EB 0x5D49 # +0xD8EC 0x5D38 # +0xD8ED 0x5D3C # +0xD8EE 0x5D32 # +0xD8EF 0x5D36 # +0xD8F0 0x5D40 # +0xD8F1 0x5D45 # +0xD8F2 0x5E44 # +0xD8F3 0x5E41 # +0xD8F4 0x5F58 # +0xD8F5 0x5FA6 # +0xD8F6 0x5FA5 # +0xD8F7 0x5FAB # +0xD8F8 0x60C9 # +0xD8F9 0x60B9 # +0xD8FA 0x60CC # +0xD8FB 0x60E2 # +0xD8FC 0x60CE # +0xD8FD 0x60C4 # +0xD8FE 0x6114 # +0xD940 0x60F2 # +0xD941 0x610A # +0xD942 0x6116 # +0xD943 0x6105 # +0xD944 0x60F5 # +0xD945 0x6113 # +0xD946 0x60F8 # +0xD947 0x60FC # +0xD948 0x60FE # +0xD949 0x60C1 # +0xD94A 0x6103 # +0xD94B 0x6118 # +0xD94C 0x611D # +0xD94D 0x6110 # +0xD94E 0x60FF # +0xD94F 0x6104 # +0xD950 0x610B # +0xD951 0x624A # +0xD952 0x6394 # +0xD953 0x63B1 # +0xD954 0x63B0 # +0xD955 0x63CE # +0xD956 0x63E5 # +0xD957 0x63E8 # +0xD958 0x63EF # +0xD959 0x63C3 # +0xD95A 0x649D # +0xD95B 0x63F3 # +0xD95C 0x63CA # +0xD95D 0x63E0 # +0xD95E 0x63F6 # +0xD95F 0x63D5 # +0xD960 0x63F2 # +0xD961 0x63F5 # +0xD962 0x6461 # +0xD963 0x63DF # +0xD964 0x63BE # +0xD965 0x63DD # +0xD966 0x63DC # +0xD967 0x63C4 # +0xD968 0x63D8 # +0xD969 0x63D3 # +0xD96A 0x63C2 # +0xD96B 0x63C7 # +0xD96C 0x63CC # +0xD96D 0x63CB # +0xD96E 0x63C8 # +0xD96F 0x63F0 # +0xD970 0x63D7 # +0xD971 0x63D9 # +0xD972 0x6532 # +0xD973 0x6567 # +0xD974 0x656A # +0xD975 0x6564 # +0xD976 0x655C # +0xD977 0x6568 # +0xD978 0x6565 # +0xD979 0x658C # +0xD97A 0x659D # +0xD97B 0x659E # +0xD97C 0x65AE # +0xD97D 0x65D0 # +0xD97E 0x65D2 # +0xD9A1 0x667C # +0xD9A2 0x666C # +0xD9A3 0x667B # +0xD9A4 0x6680 # +0xD9A5 0x6671 # +0xD9A6 0x6679 # +0xD9A7 0x666A # +0xD9A8 0x6672 # +0xD9A9 0x6701 # +0xD9AA 0x690C # +0xD9AB 0x68D3 # +0xD9AC 0x6904 # +0xD9AD 0x68DC # +0xD9AE 0x692A # +0xD9AF 0x68EC # +0xD9B0 0x68EA # +0xD9B1 0x68F1 # +0xD9B2 0x690F # +0xD9B3 0x68D6 # +0xD9B4 0x68F7 # +0xD9B5 0x68EB # +0xD9B6 0x68E4 # +0xD9B7 0x68F6 # +0xD9B8 0x6913 # +0xD9B9 0x6910 # +0xD9BA 0x68F3 # +0xD9BB 0x68E1 # +0xD9BC 0x6907 # +0xD9BD 0x68CC # +0xD9BE 0x6908 # +0xD9BF 0x6970 # +0xD9C0 0x68B4 # +0xD9C1 0x6911 # +0xD9C2 0x68EF # +0xD9C3 0x68C6 # +0xD9C4 0x6914 # +0xD9C5 0x68F8 # +0xD9C6 0x68D0 # +0xD9C7 0x68FD # +0xD9C8 0x68FC # +0xD9C9 0x68E8 # +0xD9CA 0x690B # +0xD9CB 0x690A # +0xD9CC 0x6917 # +0xD9CD 0x68CE # +0xD9CE 0x68C8 # +0xD9CF 0x68DD # +0xD9D0 0x68DE # +0xD9D1 0x68E6 # +0xD9D2 0x68F4 # +0xD9D3 0x68D1 # +0xD9D4 0x6906 # +0xD9D5 0x68D4 # +0xD9D6 0x68E9 # +0xD9D7 0x6915 # +0xD9D8 0x6925 # +0xD9D9 0x68C7 # +0xD9DA 0x6B39 # +0xD9DB 0x6B3B # +0xD9DC 0x6B3F # +0xD9DD 0x6B3C # +0xD9DE 0x6B94 # +0xD9DF 0x6B97 # +0xD9E0 0x6B99 # +0xD9E1 0x6B95 # +0xD9E2 0x6BBD # +0xD9E3 0x6BF0 # +0xD9E4 0x6BF2 # +0xD9E5 0x6BF3 # +0xD9E6 0x6C30 # +0xD9E7 0x6DFC # +0xD9E8 0x6E46 # +0xD9E9 0x6E47 # +0xD9EA 0x6E1F # +0xD9EB 0x6E49 # +0xD9EC 0x6E88 # +0xD9ED 0x6E3C # +0xD9EE 0x6E3D # +0xD9EF 0x6E45 # +0xD9F0 0x6E62 # +0xD9F1 0x6E2B # +0xD9F2 0x6E3F # +0xD9F3 0x6E41 # +0xD9F4 0x6E5D # +0xD9F5 0x6E73 # +0xD9F6 0x6E1C # +0xD9F7 0x6E33 # +0xD9F8 0x6E4B # +0xD9F9 0x6E40 # +0xD9FA 0x6E51 # +0xD9FB 0x6E3B # +0xD9FC 0x6E03 # +0xD9FD 0x6E2E # +0xD9FE 0x6E5E # +0xDA40 0x6E68 # +0xDA41 0x6E5C # +0xDA42 0x6E61 # +0xDA43 0x6E31 # +0xDA44 0x6E28 # +0xDA45 0x6E60 # +0xDA46 0x6E71 # +0xDA47 0x6E6B # +0xDA48 0x6E39 # +0xDA49 0x6E22 # +0xDA4A 0x6E30 # +0xDA4B 0x6E53 # +0xDA4C 0x6E65 # +0xDA4D 0x6E27 # +0xDA4E 0x6E78 # +0xDA4F 0x6E64 # +0xDA50 0x6E77 # +0xDA51 0x6E55 # +0xDA52 0x6E79 # +0xDA53 0x6E52 # +0xDA54 0x6E66 # +0xDA55 0x6E35 # +0xDA56 0x6E36 # +0xDA57 0x6E5A # +0xDA58 0x7120 # +0xDA59 0x711E # +0xDA5A 0x712F # +0xDA5B 0x70FB # +0xDA5C 0x712E # +0xDA5D 0x7131 # +0xDA5E 0x7123 # +0xDA5F 0x7125 # +0xDA60 0x7122 # +0xDA61 0x7132 # +0xDA62 0x711F # +0xDA63 0x7128 # +0xDA64 0x713A # +0xDA65 0x711B # +0xDA66 0x724B # +0xDA67 0x725A # +0xDA68 0x7288 # +0xDA69 0x7289 # +0xDA6A 0x7286 # +0xDA6B 0x7285 # +0xDA6C 0x728B # +0xDA6D 0x7312 # +0xDA6E 0x730B # +0xDA6F 0x7330 # +0xDA70 0x7322 # +0xDA71 0x7331 # +0xDA72 0x7333 # +0xDA73 0x7327 # +0xDA74 0x7332 # +0xDA75 0x732D # +0xDA76 0x7326 # +0xDA77 0x7323 # +0xDA78 0x7335 # +0xDA79 0x730C # +0xDA7A 0x742E # +0xDA7B 0x742C # +0xDA7C 0x7430 # +0xDA7D 0x742B # +0xDA7E 0x7416 # +0xDAA1 0x741A # +0xDAA2 0x7421 # +0xDAA3 0x742D # +0xDAA4 0x7431 # +0xDAA5 0x7424 # +0xDAA6 0x7423 # +0xDAA7 0x741D # +0xDAA8 0x7429 # +0xDAA9 0x7420 # +0xDAAA 0x7432 # +0xDAAB 0x74FB # +0xDAAC 0x752F # +0xDAAD 0x756F # +0xDAAE 0x756C # +0xDAAF 0x75E7 # +0xDAB0 0x75DA # +0xDAB1 0x75E1 # +0xDAB2 0x75E6 # +0xDAB3 0x75DD # +0xDAB4 0x75DF # +0xDAB5 0x75E4 # +0xDAB6 0x75D7 # +0xDAB7 0x7695 # +0xDAB8 0x7692 # +0xDAB9 0x76DA # +0xDABA 0x7746 # +0xDABB 0x7747 # +0xDABC 0x7744 # +0xDABD 0x774D # +0xDABE 0x7745 # +0xDABF 0x774A # +0xDAC0 0x774E # +0xDAC1 0x774B # +0xDAC2 0x774C # +0xDAC3 0x77DE # +0xDAC4 0x77EC # +0xDAC5 0x7860 # +0xDAC6 0x7864 # +0xDAC7 0x7865 # +0xDAC8 0x785C # +0xDAC9 0x786D # +0xDACA 0x7871 # +0xDACB 0x786A # +0xDACC 0x786E # +0xDACD 0x7870 # +0xDACE 0x7869 # +0xDACF 0x7868 # +0xDAD0 0x785E # +0xDAD1 0x7862 # +0xDAD2 0x7974 # +0xDAD3 0x7973 # +0xDAD4 0x7972 # +0xDAD5 0x7970 # +0xDAD6 0x7A02 # +0xDAD7 0x7A0A # +0xDAD8 0x7A03 # +0xDAD9 0x7A0C # +0xDADA 0x7A04 # +0xDADB 0x7A99 # +0xDADC 0x7AE6 # +0xDADD 0x7AE4 # +0xDADE 0x7B4A # +0xDADF 0x7B3B # +0xDAE0 0x7B44 # +0xDAE1 0x7B48 # +0xDAE2 0x7B4C # +0xDAE3 0x7B4E # +0xDAE4 0x7B40 # +0xDAE5 0x7B58 # +0xDAE6 0x7B45 # +0xDAE7 0x7CA2 # +0xDAE8 0x7C9E # +0xDAE9 0x7CA8 # +0xDAEA 0x7CA1 # +0xDAEB 0x7D58 # +0xDAEC 0x7D6F # +0xDAED 0x7D63 # +0xDAEE 0x7D53 # +0xDAEF 0x7D56 # +0xDAF0 0x7D67 # +0xDAF1 0x7D6A # +0xDAF2 0x7D4F # +0xDAF3 0x7D6D # +0xDAF4 0x7D5C # +0xDAF5 0x7D6B # +0xDAF6 0x7D52 # +0xDAF7 0x7D54 # +0xDAF8 0x7D69 # +0xDAF9 0x7D51 # +0xDAFA 0x7D5F # +0xDAFB 0x7D4E # +0xDAFC 0x7F3E # +0xDAFD 0x7F3F # +0xDAFE 0x7F65 # +0xDB40 0x7F66 # +0xDB41 0x7FA2 # +0xDB42 0x7FA0 # +0xDB43 0x7FA1 # +0xDB44 0x7FD7 # +0xDB45 0x8051 # +0xDB46 0x804F # +0xDB47 0x8050 # +0xDB48 0x80FE # +0xDB49 0x80D4 # +0xDB4A 0x8143 # +0xDB4B 0x814A # +0xDB4C 0x8152 # +0xDB4D 0x814F # +0xDB4E 0x8147 # +0xDB4F 0x813D # +0xDB50 0x814D # +0xDB51 0x813A # +0xDB52 0x81E6 # +0xDB53 0x81EE # +0xDB54 0x81F7 # +0xDB55 0x81F8 # +0xDB56 0x81F9 # +0xDB57 0x8204 # +0xDB58 0x823C # +0xDB59 0x823D # +0xDB5A 0x823F # +0xDB5B 0x8275 # +0xDB5C 0x833B # +0xDB5D 0x83CF # +0xDB5E 0x83F9 # +0xDB5F 0x8423 # +0xDB60 0x83C0 # +0xDB61 0x83E8 # +0xDB62 0x8412 # +0xDB63 0x83E7 # +0xDB64 0x83E4 # +0xDB65 0x83FC # +0xDB66 0x83F6 # +0xDB67 0x8410 # +0xDB68 0x83C6 # +0xDB69 0x83C8 # +0xDB6A 0x83EB # +0xDB6B 0x83E3 # +0xDB6C 0x83BF # +0xDB6D 0x8401 # +0xDB6E 0x83DD # +0xDB6F 0x83E5 # +0xDB70 0x83D8 # +0xDB71 0x83FF # +0xDB72 0x83E1 # +0xDB73 0x83CB # +0xDB74 0x83CE # +0xDB75 0x83D6 # +0xDB76 0x83F5 # +0xDB77 0x83C9 # +0xDB78 0x8409 # +0xDB79 0x840F # +0xDB7A 0x83DE # +0xDB7B 0x8411 # +0xDB7C 0x8406 # +0xDB7D 0x83C2 # +0xDB7E 0x83F3 # +0xDBA1 0x83D5 # +0xDBA2 0x83FA # +0xDBA3 0x83C7 # +0xDBA4 0x83D1 # +0xDBA5 0x83EA # +0xDBA6 0x8413 # +0xDBA7 0x83C3 # +0xDBA8 0x83EC # +0xDBA9 0x83EE # +0xDBAA 0x83C4 # +0xDBAB 0x83FB # +0xDBAC 0x83D7 # +0xDBAD 0x83E2 # +0xDBAE 0x841B # +0xDBAF 0x83DB # +0xDBB0 0x83FE # +0xDBB1 0x86D8 # +0xDBB2 0x86E2 # +0xDBB3 0x86E6 # +0xDBB4 0x86D3 # +0xDBB5 0x86E3 # +0xDBB6 0x86DA # +0xDBB7 0x86EA # +0xDBB8 0x86DD # +0xDBB9 0x86EB # +0xDBBA 0x86DC # +0xDBBB 0x86EC # +0xDBBC 0x86E9 # +0xDBBD 0x86D7 # +0xDBBE 0x86E8 # +0xDBBF 0x86D1 # +0xDBC0 0x8848 # +0xDBC1 0x8856 # +0xDBC2 0x8855 # +0xDBC3 0x88BA # +0xDBC4 0x88D7 # +0xDBC5 0x88B9 # +0xDBC6 0x88B8 # +0xDBC7 0x88C0 # +0xDBC8 0x88BE # +0xDBC9 0x88B6 # +0xDBCA 0x88BC # +0xDBCB 0x88B7 # +0xDBCC 0x88BD # +0xDBCD 0x88B2 # +0xDBCE 0x8901 # +0xDBCF 0x88C9 # +0xDBD0 0x8995 # +0xDBD1 0x8998 # +0xDBD2 0x8997 # +0xDBD3 0x89DD # +0xDBD4 0x89DA # +0xDBD5 0x89DB # +0xDBD6 0x8A4E # +0xDBD7 0x8A4D # +0xDBD8 0x8A39 # +0xDBD9 0x8A59 # +0xDBDA 0x8A40 # +0xDBDB 0x8A57 # +0xDBDC 0x8A58 # +0xDBDD 0x8A44 # +0xDBDE 0x8A45 # +0xDBDF 0x8A52 # +0xDBE0 0x8A48 # +0xDBE1 0x8A51 # +0xDBE2 0x8A4A # +0xDBE3 0x8A4C # +0xDBE4 0x8A4F # +0xDBE5 0x8C5F # +0xDBE6 0x8C81 # +0xDBE7 0x8C80 # +0xDBE8 0x8CBA # +0xDBE9 0x8CBE # +0xDBEA 0x8CB0 # +0xDBEB 0x8CB9 # +0xDBEC 0x8CB5 # +0xDBED 0x8D84 # +0xDBEE 0x8D80 # +0xDBEF 0x8D89 # +0xDBF0 0x8DD8 # +0xDBF1 0x8DD3 # +0xDBF2 0x8DCD # +0xDBF3 0x8DC7 # +0xDBF4 0x8DD6 # +0xDBF5 0x8DDC # +0xDBF6 0x8DCF # +0xDBF7 0x8DD5 # +0xDBF8 0x8DD9 # +0xDBF9 0x8DC8 # +0xDBFA 0x8DD7 # +0xDBFB 0x8DC5 # +0xDBFC 0x8EEF # +0xDBFD 0x8EF7 # +0xDBFE 0x8EFA # +0xDC40 0x8EF9 # +0xDC41 0x8EE6 # +0xDC42 0x8EEE # +0xDC43 0x8EE5 # +0xDC44 0x8EF5 # +0xDC45 0x8EE7 # +0xDC46 0x8EE8 # +0xDC47 0x8EF6 # +0xDC48 0x8EEB # +0xDC49 0x8EF1 # +0xDC4A 0x8EEC # +0xDC4B 0x8EF4 # +0xDC4C 0x8EE9 # +0xDC4D 0x902D # +0xDC4E 0x9034 # +0xDC4F 0x902F # +0xDC50 0x9106 # +0xDC51 0x912C # +0xDC52 0x9104 # +0xDC53 0x90FF # +0xDC54 0x90FC # +0xDC55 0x9108 # +0xDC56 0x90F9 # +0xDC57 0x90FB # +0xDC58 0x9101 # +0xDC59 0x9100 # +0xDC5A 0x9107 # +0xDC5B 0x9105 # +0xDC5C 0x9103 # +0xDC5D 0x9161 # +0xDC5E 0x9164 # +0xDC5F 0x915F # +0xDC60 0x9162 # +0xDC61 0x9160 # +0xDC62 0x9201 # +0xDC63 0x920A # +0xDC64 0x9225 # +0xDC65 0x9203 # +0xDC66 0x921A # +0xDC67 0x9226 # +0xDC68 0x920F # +0xDC69 0x920C # +0xDC6A 0x9200 # +0xDC6B 0x9212 # +0xDC6C 0x91FF # +0xDC6D 0x91FD # +0xDC6E 0x9206 # +0xDC6F 0x9204 # +0xDC70 0x9227 # +0xDC71 0x9202 # +0xDC72 0x921C # +0xDC73 0x9224 # +0xDC74 0x9219 # +0xDC75 0x9217 # +0xDC76 0x9205 # +0xDC77 0x9216 # +0xDC78 0x957B # +0xDC79 0x958D # +0xDC7A 0x958C # +0xDC7B 0x9590 # +0xDC7C 0x9687 # +0xDC7D 0x967E # +0xDC7E 0x9688 # +0xDCA1 0x9689 # +0xDCA2 0x9683 # +0xDCA3 0x9680 # +0xDCA4 0x96C2 # +0xDCA5 0x96C8 # +0xDCA6 0x96C3 # +0xDCA7 0x96F1 # +0xDCA8 0x96F0 # +0xDCA9 0x976C # +0xDCAA 0x9770 # +0xDCAB 0x976E # +0xDCAC 0x9807 # +0xDCAD 0x98A9 # +0xDCAE 0x98EB # +0xDCAF 0x9CE6 # +0xDCB0 0x9EF9 # +0xDCB1 0x4E83 # +0xDCB2 0x4E84 # +0xDCB3 0x4EB6 # +0xDCB4 0x50BD # +0xDCB5 0x50BF # +0xDCB6 0x50C6 # +0xDCB7 0x50AE # +0xDCB8 0x50C4 # +0xDCB9 0x50CA # +0xDCBA 0x50B4 # +0xDCBB 0x50C8 # +0xDCBC 0x50C2 # +0xDCBD 0x50B0 # +0xDCBE 0x50C1 # +0xDCBF 0x50BA # +0xDCC0 0x50B1 # +0xDCC1 0x50CB # +0xDCC2 0x50C9 # +0xDCC3 0x50B6 # +0xDCC4 0x50B8 # +0xDCC5 0x51D7 # +0xDCC6 0x527A # +0xDCC7 0x5278 # +0xDCC8 0x527B # +0xDCC9 0x527C # +0xDCCA 0x55C3 # +0xDCCB 0x55DB # +0xDCCC 0x55CC # +0xDCCD 0x55D0 # +0xDCCE 0x55CB # +0xDCCF 0x55CA # +0xDCD0 0x55DD # +0xDCD1 0x55C0 # +0xDCD2 0x55D4 # +0xDCD3 0x55C4 # +0xDCD4 0x55E9 # +0xDCD5 0x55BF # +0xDCD6 0x55D2 # +0xDCD7 0x558D # +0xDCD8 0x55CF # +0xDCD9 0x55D5 # +0xDCDA 0x55E2 # +0xDCDB 0x55D6 # +0xDCDC 0x55C8 # +0xDCDD 0x55F2 # +0xDCDE 0x55CD # +0xDCDF 0x55D9 # +0xDCE0 0x55C2 # +0xDCE1 0x5714 # +0xDCE2 0x5853 # +0xDCE3 0x5868 # +0xDCE4 0x5864 # +0xDCE5 0x584F # +0xDCE6 0x584D # +0xDCE7 0x5849 # +0xDCE8 0x586F # +0xDCE9 0x5855 # +0xDCEA 0x584E # +0xDCEB 0x585D # +0xDCEC 0x5859 # +0xDCED 0x5865 # +0xDCEE 0x585B # +0xDCEF 0x583D # +0xDCF0 0x5863 # +0xDCF1 0x5871 # +0xDCF2 0x58FC # +0xDCF3 0x5AC7 # +0xDCF4 0x5AC4 # +0xDCF5 0x5ACB # +0xDCF6 0x5ABA # +0xDCF7 0x5AB8 # +0xDCF8 0x5AB1 # +0xDCF9 0x5AB5 # +0xDCFA 0x5AB0 # +0xDCFB 0x5ABF # +0xDCFC 0x5AC8 # +0xDCFD 0x5ABB # +0xDCFE 0x5AC6 # +0xDD40 0x5AB7 # +0xDD41 0x5AC0 # +0xDD42 0x5ACA # +0xDD43 0x5AB4 # +0xDD44 0x5AB6 # +0xDD45 0x5ACD # +0xDD46 0x5AB9 # +0xDD47 0x5A90 # +0xDD48 0x5BD6 # +0xDD49 0x5BD8 # +0xDD4A 0x5BD9 # +0xDD4B 0x5C1F # +0xDD4C 0x5C33 # +0xDD4D 0x5D71 # +0xDD4E 0x5D63 # +0xDD4F 0x5D4A # +0xDD50 0x5D65 # +0xDD51 0x5D72 # +0xDD52 0x5D6C # +0xDD53 0x5D5E # +0xDD54 0x5D68 # +0xDD55 0x5D67 # +0xDD56 0x5D62 # +0xDD57 0x5DF0 # +0xDD58 0x5E4F # +0xDD59 0x5E4E # +0xDD5A 0x5E4A # +0xDD5B 0x5E4D # +0xDD5C 0x5E4B # +0xDD5D 0x5EC5 # +0xDD5E 0x5ECC # +0xDD5F 0x5EC6 # +0xDD60 0x5ECB # +0xDD61 0x5EC7 # +0xDD62 0x5F40 # +0xDD63 0x5FAF # +0xDD64 0x5FAD # +0xDD65 0x60F7 # +0xDD66 0x6149 # +0xDD67 0x614A # +0xDD68 0x612B # +0xDD69 0x6145 # +0xDD6A 0x6136 # +0xDD6B 0x6132 # +0xDD6C 0x612E # +0xDD6D 0x6146 # +0xDD6E 0x612F # +0xDD6F 0x614F # +0xDD70 0x6129 # +0xDD71 0x6140 # +0xDD72 0x6220 # +0xDD73 0x9168 # +0xDD74 0x6223 # +0xDD75 0x6225 # +0xDD76 0x6224 # +0xDD77 0x63C5 # +0xDD78 0x63F1 # +0xDD79 0x63EB # +0xDD7A 0x6410 # +0xDD7B 0x6412 # +0xDD7C 0x6409 # +0xDD7D 0x6420 # +0xDD7E 0x6424 # +0xDDA1 0x6433 # +0xDDA2 0x6443 # +0xDDA3 0x641F # +0xDDA4 0x6415 # +0xDDA5 0x6418 # +0xDDA6 0x6439 # +0xDDA7 0x6437 # +0xDDA8 0x6422 # +0xDDA9 0x6423 # +0xDDAA 0x640C # +0xDDAB 0x6426 # +0xDDAC 0x6430 # +0xDDAD 0x6428 # +0xDDAE 0x6441 # +0xDDAF 0x6435 # +0xDDB0 0x642F # +0xDDB1 0x640A # +0xDDB2 0x641A # +0xDDB3 0x6440 # +0xDDB4 0x6425 # +0xDDB5 0x6427 # +0xDDB6 0x640B # +0xDDB7 0x63E7 # +0xDDB8 0x641B # +0xDDB9 0x642E # +0xDDBA 0x6421 # +0xDDBB 0x640E # +0xDDBC 0x656F # +0xDDBD 0x6592 # +0xDDBE 0x65D3 # +0xDDBF 0x6686 # +0xDDC0 0x668C # +0xDDC1 0x6695 # +0xDDC2 0x6690 # +0xDDC3 0x668B # +0xDDC4 0x668A # +0xDDC5 0x6699 # +0xDDC6 0x6694 # +0xDDC7 0x6678 # +0xDDC8 0x6720 # +0xDDC9 0x6966 # +0xDDCA 0x695F # +0xDDCB 0x6938 # +0xDDCC 0x694E # +0xDDCD 0x6962 # +0xDDCE 0x6971 # +0xDDCF 0x693F # +0xDDD0 0x6945 # +0xDDD1 0x696A # +0xDDD2 0x6939 # +0xDDD3 0x6942 # +0xDDD4 0x6957 # +0xDDD5 0x6959 # +0xDDD6 0x697A # +0xDDD7 0x6948 # +0xDDD8 0x6949 # +0xDDD9 0x6935 # +0xDDDA 0x696C # +0xDDDB 0x6933 # +0xDDDC 0x693D # +0xDDDD 0x6965 # +0xDDDE 0x68F0 # +0xDDDF 0x6978 # +0xDDE0 0x6934 # +0xDDE1 0x6969 # +0xDDE2 0x6940 # +0xDDE3 0x696F # +0xDDE4 0x6944 # +0xDDE5 0x6976 # +0xDDE6 0x6958 # +0xDDE7 0x6941 # +0xDDE8 0x6974 # +0xDDE9 0x694C # +0xDDEA 0x693B # +0xDDEB 0x694B # +0xDDEC 0x6937 # +0xDDED 0x695C # +0xDDEE 0x694F # +0xDDEF 0x6951 # +0xDDF0 0x6932 # +0xDDF1 0x6952 # +0xDDF2 0x692F # +0xDDF3 0x697B # +0xDDF4 0x693C # +0xDDF5 0x6B46 # +0xDDF6 0x6B45 # +0xDDF7 0x6B43 # +0xDDF8 0x6B42 # +0xDDF9 0x6B48 # +0xDDFA 0x6B41 # +0xDDFB 0x6B9B # +0xDDFC 0xFA0D # CJK COMPATIBILITY IDEOGRAPH-FA0D +0xDDFD 0x6BFB # +0xDDFE 0x6BFC # +0xDE40 0x6BF9 # +0xDE41 0x6BF7 # +0xDE42 0x6BF8 # +0xDE43 0x6E9B # +0xDE44 0x6ED6 # +0xDE45 0x6EC8 # +0xDE46 0x6E8F # +0xDE47 0x6EC0 # +0xDE48 0x6E9F # +0xDE49 0x6E93 # +0xDE4A 0x6E94 # +0xDE4B 0x6EA0 # +0xDE4C 0x6EB1 # +0xDE4D 0x6EB9 # +0xDE4E 0x6EC6 # +0xDE4F 0x6ED2 # +0xDE50 0x6EBD # +0xDE51 0x6EC1 # +0xDE52 0x6E9E # +0xDE53 0x6EC9 # +0xDE54 0x6EB7 # +0xDE55 0x6EB0 # +0xDE56 0x6ECD # +0xDE57 0x6EA6 # +0xDE58 0x6ECF # +0xDE59 0x6EB2 # +0xDE5A 0x6EBE # +0xDE5B 0x6EC3 # +0xDE5C 0x6EDC # +0xDE5D 0x6ED8 # +0xDE5E 0x6E99 # +0xDE5F 0x6E92 # +0xDE60 0x6E8E # +0xDE61 0x6E8D # +0xDE62 0x6EA4 # +0xDE63 0x6EA1 # +0xDE64 0x6EBF # +0xDE65 0x6EB3 # +0xDE66 0x6ED0 # +0xDE67 0x6ECA # +0xDE68 0x6E97 # +0xDE69 0x6EAE # +0xDE6A 0x6EA3 # +0xDE6B 0x7147 # +0xDE6C 0x7154 # +0xDE6D 0x7152 # +0xDE6E 0x7163 # +0xDE6F 0x7160 # +0xDE70 0x7141 # +0xDE71 0x715D # +0xDE72 0x7162 # +0xDE73 0x7172 # +0xDE74 0x7178 # +0xDE75 0x716A # +0xDE76 0x7161 # +0xDE77 0x7142 # +0xDE78 0x7158 # +0xDE79 0x7143 # +0xDE7A 0x714B # +0xDE7B 0x7170 # +0xDE7C 0x715F # +0xDE7D 0x7150 # +0xDE7E 0x7153 # +0xDEA1 0x7144 # +0xDEA2 0x714D # +0xDEA3 0x715A # +0xDEA4 0x724F # +0xDEA5 0x728D # +0xDEA6 0x728C # +0xDEA7 0x7291 # +0xDEA8 0x7290 # +0xDEA9 0x728E # +0xDEAA 0x733C # +0xDEAB 0x7342 # +0xDEAC 0x733B # +0xDEAD 0x733A # +0xDEAE 0x7340 # +0xDEAF 0x734A # +0xDEB0 0x7349 # +0xDEB1 0x7444 # +0xDEB2 0x744A # +0xDEB3 0x744B # +0xDEB4 0x7452 # +0xDEB5 0x7451 # +0xDEB6 0x7457 # +0xDEB7 0x7440 # +0xDEB8 0x744F # +0xDEB9 0x7450 # +0xDEBA 0x744E # +0xDEBB 0x7442 # +0xDEBC 0x7446 # +0xDEBD 0x744D # +0xDEBE 0x7454 # +0xDEBF 0x74E1 # +0xDEC0 0x74FF # +0xDEC1 0x74FE # +0xDEC2 0x74FD # +0xDEC3 0x751D # +0xDEC4 0x7579 # +0xDEC5 0x7577 # +0xDEC6 0x6983 # +0xDEC7 0x75EF # +0xDEC8 0x760F # +0xDEC9 0x7603 # +0xDECA 0x75F7 # +0xDECB 0x75FE # +0xDECC 0x75FC # +0xDECD 0x75F9 # +0xDECE 0x75F8 # +0xDECF 0x7610 # +0xDED0 0x75FB # +0xDED1 0x75F6 # +0xDED2 0x75ED # +0xDED3 0x75F5 # +0xDED4 0x75FD # +0xDED5 0x7699 # +0xDED6 0x76B5 # +0xDED7 0x76DD # +0xDED8 0x7755 # +0xDED9 0x775F # +0xDEDA 0x7760 # +0xDEDB 0x7752 # +0xDEDC 0x7756 # +0xDEDD 0x775A # +0xDEDE 0x7769 # +0xDEDF 0x7767 # +0xDEE0 0x7754 # +0xDEE1 0x7759 # +0xDEE2 0x776D # +0xDEE3 0x77E0 # +0xDEE4 0x7887 # +0xDEE5 0x789A # +0xDEE6 0x7894 # +0xDEE7 0x788F # +0xDEE8 0x7884 # +0xDEE9 0x7895 # +0xDEEA 0x7885 # +0xDEEB 0x7886 # +0xDEEC 0x78A1 # +0xDEED 0x7883 # +0xDEEE 0x7879 # +0xDEEF 0x7899 # +0xDEF0 0x7880 # +0xDEF1 0x7896 # +0xDEF2 0x787B # +0xDEF3 0x797C # +0xDEF4 0x7982 # +0xDEF5 0x797D # +0xDEF6 0x7979 # +0xDEF7 0x7A11 # +0xDEF8 0x7A18 # +0xDEF9 0x7A19 # +0xDEFA 0x7A12 # +0xDEFB 0x7A17 # +0xDEFC 0x7A15 # +0xDEFD 0x7A22 # +0xDEFE 0x7A13 # +0xDF40 0x7A1B # +0xDF41 0x7A10 # +0xDF42 0x7AA3 # +0xDF43 0x7AA2 # +0xDF44 0x7A9E # +0xDF45 0x7AEB # +0xDF46 0x7B66 # +0xDF47 0x7B64 # +0xDF48 0x7B6D # +0xDF49 0x7B74 # +0xDF4A 0x7B69 # +0xDF4B 0x7B72 # +0xDF4C 0x7B65 # +0xDF4D 0x7B73 # +0xDF4E 0x7B71 # +0xDF4F 0x7B70 # +0xDF50 0x7B61 # +0xDF51 0x7B78 # +0xDF52 0x7B76 # +0xDF53 0x7B63 # +0xDF54 0x7CB2 # +0xDF55 0x7CB4 # +0xDF56 0x7CAF # +0xDF57 0x7D88 # +0xDF58 0x7D86 # +0xDF59 0x7D80 # +0xDF5A 0x7D8D # +0xDF5B 0x7D7F # +0xDF5C 0x7D85 # +0xDF5D 0x7D7A # +0xDF5E 0x7D8E # +0xDF5F 0x7D7B # +0xDF60 0x7D83 # +0xDF61 0x7D7C # +0xDF62 0x7D8C # +0xDF63 0x7D94 # +0xDF64 0x7D84 # +0xDF65 0x7D7D # +0xDF66 0x7D92 # +0xDF67 0x7F6D # +0xDF68 0x7F6B # +0xDF69 0x7F67 # +0xDF6A 0x7F68 # +0xDF6B 0x7F6C # +0xDF6C 0x7FA6 # +0xDF6D 0x7FA5 # +0xDF6E 0x7FA7 # +0xDF6F 0x7FDB # +0xDF70 0x7FDC # +0xDF71 0x8021 # +0xDF72 0x8164 # +0xDF73 0x8160 # +0xDF74 0x8177 # +0xDF75 0x815C # +0xDF76 0x8169 # +0xDF77 0x815B # +0xDF78 0x8162 # +0xDF79 0x8172 # +0xDF7A 0x6721 # +0xDF7B 0x815E # +0xDF7C 0x8176 # +0xDF7D 0x8167 # +0xDF7E 0x816F # +0xDFA1 0x8144 # +0xDFA2 0x8161 # +0xDFA3 0x821D # +0xDFA4 0x8249 # +0xDFA5 0x8244 # +0xDFA6 0x8240 # +0xDFA7 0x8242 # +0xDFA8 0x8245 # +0xDFA9 0x84F1 # +0xDFAA 0x843F # +0xDFAB 0x8456 # +0xDFAC 0x8476 # +0xDFAD 0x8479 # +0xDFAE 0x848F # +0xDFAF 0x848D # +0xDFB0 0x8465 # +0xDFB1 0x8451 # +0xDFB2 0x8440 # +0xDFB3 0x8486 # +0xDFB4 0x8467 # +0xDFB5 0x8430 # +0xDFB6 0x844D # +0xDFB7 0x847D # +0xDFB8 0x845A # +0xDFB9 0x8459 # +0xDFBA 0x8474 # +0xDFBB 0x8473 # +0xDFBC 0x845D # +0xDFBD 0x8507 # +0xDFBE 0x845E # +0xDFBF 0x8437 # +0xDFC0 0x843A # +0xDFC1 0x8434 # +0xDFC2 0x847A # +0xDFC3 0x8443 # +0xDFC4 0x8478 # +0xDFC5 0x8432 # +0xDFC6 0x8445 # +0xDFC7 0x8429 # +0xDFC8 0x83D9 # +0xDFC9 0x844B # +0xDFCA 0x842F # +0xDFCB 0x8442 # +0xDFCC 0x842D # +0xDFCD 0x845F # +0xDFCE 0x8470 # +0xDFCF 0x8439 # +0xDFD0 0x844E # +0xDFD1 0x844C # +0xDFD2 0x8452 # +0xDFD3 0x846F # +0xDFD4 0x84C5 # +0xDFD5 0x848E # +0xDFD6 0x843B # +0xDFD7 0x8447 # +0xDFD8 0x8436 # +0xDFD9 0x8433 # +0xDFDA 0x8468 # +0xDFDB 0x847E # +0xDFDC 0x8444 # +0xDFDD 0x842B # +0xDFDE 0x8460 # +0xDFDF 0x8454 # +0xDFE0 0x846E # +0xDFE1 0x8450 # +0xDFE2 0x870B # +0xDFE3 0x8704 # +0xDFE4 0x86F7 # +0xDFE5 0x870C # +0xDFE6 0x86FA # +0xDFE7 0x86D6 # +0xDFE8 0x86F5 # +0xDFE9 0x874D # +0xDFEA 0x86F8 # +0xDFEB 0x870E # +0xDFEC 0x8709 # +0xDFED 0x8701 # +0xDFEE 0x86F6 # +0xDFEF 0x870D # +0xDFF0 0x8705 # +0xDFF1 0x88D6 # +0xDFF2 0x88CB # +0xDFF3 0x88CD # +0xDFF4 0x88CE # +0xDFF5 0x88DE # +0xDFF6 0x88DB # +0xDFF7 0x88DA # +0xDFF8 0x88CC # +0xDFF9 0x88D0 # +0xDFFA 0x8985 # +0xDFFB 0x899B # +0xDFFC 0x89DF # +0xDFFD 0x89E5 # +0xDFFE 0x89E4 # +0xE040 0x89E1 # +0xE041 0x89E0 # +0xE042 0x89E2 # +0xE043 0x89DC # +0xE044 0x89E6 # +0xE045 0x8A76 # +0xE046 0x8A86 # +0xE047 0x8A7F # +0xE048 0x8A61 # +0xE049 0x8A3F # +0xE04A 0x8A77 # +0xE04B 0x8A82 # +0xE04C 0x8A84 # +0xE04D 0x8A75 # +0xE04E 0x8A83 # +0xE04F 0x8A81 # +0xE050 0x8A74 # +0xE051 0x8A7A # +0xE052 0x8C3C # +0xE053 0x8C4B # +0xE054 0x8C4A # +0xE055 0x8C65 # +0xE056 0x8C64 # +0xE057 0x8C66 # +0xE058 0x8C86 # +0xE059 0x8C84 # +0xE05A 0x8C85 # +0xE05B 0x8CCC # +0xE05C 0x8D68 # +0xE05D 0x8D69 # +0xE05E 0x8D91 # +0xE05F 0x8D8C # +0xE060 0x8D8E # +0xE061 0x8D8F # +0xE062 0x8D8D # +0xE063 0x8D93 # +0xE064 0x8D94 # +0xE065 0x8D90 # +0xE066 0x8D92 # +0xE067 0x8DF0 # +0xE068 0x8DE0 # +0xE069 0x8DEC # +0xE06A 0x8DF1 # +0xE06B 0x8DEE # +0xE06C 0x8DD0 # +0xE06D 0x8DE9 # +0xE06E 0x8DE3 # +0xE06F 0x8DE2 # +0xE070 0x8DE7 # +0xE071 0x8DF2 # +0xE072 0x8DEB # +0xE073 0x8DF4 # +0xE074 0x8F06 # +0xE075 0x8EFF # +0xE076 0x8F01 # +0xE077 0x8F00 # +0xE078 0x8F05 # +0xE079 0x8F07 # +0xE07A 0x8F08 # +0xE07B 0x8F02 # +0xE07C 0x8F0B # +0xE07D 0x9052 # +0xE07E 0x903F # +0xE0A1 0x9044 # +0xE0A2 0x9049 # +0xE0A3 0x903D # +0xE0A4 0x9110 # +0xE0A5 0x910D # +0xE0A6 0x910F # +0xE0A7 0x9111 # +0xE0A8 0x9116 # +0xE0A9 0x9114 # +0xE0AA 0x910B # +0xE0AB 0x910E # +0xE0AC 0x916E # +0xE0AD 0x916F # +0xE0AE 0x9248 # +0xE0AF 0x9252 # +0xE0B0 0x9230 # +0xE0B1 0x923A # +0xE0B2 0x9266 # +0xE0B3 0x9233 # +0xE0B4 0x9265 # +0xE0B5 0x925E # +0xE0B6 0x9283 # +0xE0B7 0x922E # +0xE0B8 0x924A # +0xE0B9 0x9246 # +0xE0BA 0x926D # +0xE0BB 0x926C # +0xE0BC 0x924F # +0xE0BD 0x9260 # +0xE0BE 0x9267 # +0xE0BF 0x926F # +0xE0C0 0x9236 # +0xE0C1 0x9261 # +0xE0C2 0x9270 # +0xE0C3 0x9231 # +0xE0C4 0x9254 # +0xE0C5 0x9263 # +0xE0C6 0x9250 # +0xE0C7 0x9272 # +0xE0C8 0x924E # +0xE0C9 0x9253 # +0xE0CA 0x924C # +0xE0CB 0x9256 # +0xE0CC 0x9232 # +0xE0CD 0x959F # +0xE0CE 0x959C # +0xE0CF 0x959E # +0xE0D0 0x959B # +0xE0D1 0x9692 # +0xE0D2 0x9693 # +0xE0D3 0x9691 # +0xE0D4 0x9697 # +0xE0D5 0x96CE # +0xE0D6 0x96FA # +0xE0D7 0x96FD # +0xE0D8 0x96F8 # +0xE0D9 0x96F5 # +0xE0DA 0x9773 # +0xE0DB 0x9777 # +0xE0DC 0x9778 # +0xE0DD 0x9772 # +0xE0DE 0x980F # +0xE0DF 0x980D # +0xE0E0 0x980E # +0xE0E1 0x98AC # +0xE0E2 0x98F6 # +0xE0E3 0x98F9 # +0xE0E4 0x99AF # +0xE0E5 0x99B2 # +0xE0E6 0x99B0 # +0xE0E7 0x99B5 # +0xE0E8 0x9AAD # +0xE0E9 0x9AAB # +0xE0EA 0x9B5B # +0xE0EB 0x9CEA # +0xE0EC 0x9CED # +0xE0ED 0x9CE7 # +0xE0EE 0x9E80 # +0xE0EF 0x9EFD # +0xE0F0 0x50E6 # +0xE0F1 0x50D4 # +0xE0F2 0x50D7 # +0xE0F3 0x50E8 # +0xE0F4 0x50F3 # +0xE0F5 0x50DB # +0xE0F6 0x50EA # +0xE0F7 0x50DD # +0xE0F8 0x50E4 # +0xE0F9 0x50D3 # +0xE0FA 0x50EC # +0xE0FB 0x50F0 # +0xE0FC 0x50EF # +0xE0FD 0x50E3 # +0xE0FE 0x50E0 # +0xE140 0x51D8 # +0xE141 0x5280 # +0xE142 0x5281 # +0xE143 0x52E9 # +0xE144 0x52EB # +0xE145 0x5330 # +0xE146 0x53AC # +0xE147 0x5627 # +0xE148 0x5615 # +0xE149 0x560C # +0xE14A 0x5612 # +0xE14B 0x55FC # +0xE14C 0x560F # +0xE14D 0x561C # +0xE14E 0x5601 # +0xE14F 0x5613 # +0xE150 0x5602 # +0xE151 0x55FA # +0xE152 0x561D # +0xE153 0x5604 # +0xE154 0x55FF # +0xE155 0x55F9 # +0xE156 0x5889 # +0xE157 0x587C # +0xE158 0x5890 # +0xE159 0x5898 # +0xE15A 0x5886 # +0xE15B 0x5881 # +0xE15C 0x587F # +0xE15D 0x5874 # +0xE15E 0x588B # +0xE15F 0x587A # +0xE160 0x5887 # +0xE161 0x5891 # +0xE162 0x588E # +0xE163 0x5876 # +0xE164 0x5882 # +0xE165 0x5888 # +0xE166 0x587B # +0xE167 0x5894 # +0xE168 0x588F # +0xE169 0x58FE # +0xE16A 0x596B # +0xE16B 0x5ADC # +0xE16C 0x5AEE # +0xE16D 0x5AE5 # +0xE16E 0x5AD5 # +0xE16F 0x5AEA # +0xE170 0x5ADA # +0xE171 0x5AED # +0xE172 0x5AEB # +0xE173 0x5AF3 # +0xE174 0x5AE2 # +0xE175 0x5AE0 # +0xE176 0x5ADB # +0xE177 0x5AEC # +0xE178 0x5ADE # +0xE179 0x5ADD # +0xE17A 0x5AD9 # +0xE17B 0x5AE8 # +0xE17C 0x5ADF # +0xE17D 0x5B77 # +0xE17E 0x5BE0 # +0xE1A1 0x5BE3 # +0xE1A2 0x5C63 # +0xE1A3 0x5D82 # +0xE1A4 0x5D80 # +0xE1A5 0x5D7D # +0xE1A6 0x5D86 # +0xE1A7 0x5D7A # +0xE1A8 0x5D81 # +0xE1A9 0x5D77 # +0xE1AA 0x5D8A # +0xE1AB 0x5D89 # +0xE1AC 0x5D88 # +0xE1AD 0x5D7E # +0xE1AE 0x5D7C # +0xE1AF 0x5D8D # +0xE1B0 0x5D79 # +0xE1B1 0x5D7F # +0xE1B2 0x5E58 # +0xE1B3 0x5E59 # +0xE1B4 0x5E53 # +0xE1B5 0x5ED8 # +0xE1B6 0x5ED1 # +0xE1B7 0x5ED7 # +0xE1B8 0x5ECE # +0xE1B9 0x5EDC # +0xE1BA 0x5ED5 # +0xE1BB 0x5ED9 # +0xE1BC 0x5ED2 # +0xE1BD 0x5ED4 # +0xE1BE 0x5F44 # +0xE1BF 0x5F43 # +0xE1C0 0x5F6F # +0xE1C1 0x5FB6 # +0xE1C2 0x612C # +0xE1C3 0x6128 # +0xE1C4 0x6141 # +0xE1C5 0x615E # +0xE1C6 0x6171 # +0xE1C7 0x6173 # +0xE1C8 0x6152 # +0xE1C9 0x6153 # +0xE1CA 0x6172 # +0xE1CB 0x616C # +0xE1CC 0x6180 # +0xE1CD 0x6174 # +0xE1CE 0x6154 # +0xE1CF 0x617A # +0xE1D0 0x615B # +0xE1D1 0x6165 # +0xE1D2 0x613B # +0xE1D3 0x616A # +0xE1D4 0x6161 # +0xE1D5 0x6156 # +0xE1D6 0x6229 # +0xE1D7 0x6227 # +0xE1D8 0x622B # +0xE1D9 0x642B # +0xE1DA 0x644D # +0xE1DB 0x645B # +0xE1DC 0x645D # +0xE1DD 0x6474 # +0xE1DE 0x6476 # +0xE1DF 0x6472 # +0xE1E0 0x6473 # +0xE1E1 0x647D # +0xE1E2 0x6475 # +0xE1E3 0x6466 # +0xE1E4 0x64A6 # +0xE1E5 0x644E # +0xE1E6 0x6482 # +0xE1E7 0x645E # +0xE1E8 0x645C # +0xE1E9 0x644B # +0xE1EA 0x6453 # +0xE1EB 0x6460 # +0xE1EC 0x6450 # +0xE1ED 0x647F # +0xE1EE 0x643F # +0xE1EF 0x646C # +0xE1F0 0x646B # +0xE1F1 0x6459 # +0xE1F2 0x6465 # +0xE1F3 0x6477 # +0xE1F4 0x6573 # +0xE1F5 0x65A0 # +0xE1F6 0x66A1 # +0xE1F7 0x66A0 # +0xE1F8 0x669F # +0xE1F9 0x6705 # +0xE1FA 0x6704 # +0xE1FB 0x6722 # +0xE1FC 0x69B1 # +0xE1FD 0x69B6 # +0xE1FE 0x69C9 # +0xE240 0x69A0 # +0xE241 0x69CE # +0xE242 0x6996 # +0xE243 0x69B0 # +0xE244 0x69AC # +0xE245 0x69BC # +0xE246 0x6991 # +0xE247 0x6999 # +0xE248 0x698E # +0xE249 0x69A7 # +0xE24A 0x698D # +0xE24B 0x69A9 # +0xE24C 0x69BE # +0xE24D 0x69AF # +0xE24E 0x69BF # +0xE24F 0x69C4 # +0xE250 0x69BD # +0xE251 0x69A4 # +0xE252 0x69D4 # +0xE253 0x69B9 # +0xE254 0x69CA # +0xE255 0x699A # +0xE256 0x69CF # +0xE257 0x69B3 # +0xE258 0x6993 # +0xE259 0x69AA # +0xE25A 0x69A1 # +0xE25B 0x699E # +0xE25C 0x69D9 # +0xE25D 0x6997 # +0xE25E 0x6990 # +0xE25F 0x69C2 # +0xE260 0x69B5 # +0xE261 0x69A5 # +0xE262 0x69C6 # +0xE263 0x6B4A # +0xE264 0x6B4D # +0xE265 0x6B4B # +0xE266 0x6B9E # +0xE267 0x6B9F # +0xE268 0x6BA0 # +0xE269 0x6BC3 # +0xE26A 0x6BC4 # +0xE26B 0x6BFE # +0xE26C 0x6ECE # +0xE26D 0x6EF5 # +0xE26E 0x6EF1 # +0xE26F 0x6F03 # +0xE270 0x6F25 # +0xE271 0x6EF8 # +0xE272 0x6F37 # +0xE273 0x6EFB # +0xE274 0x6F2E # +0xE275 0x6F09 # +0xE276 0x6F4E # +0xE277 0x6F19 # +0xE278 0x6F1A # +0xE279 0x6F27 # +0xE27A 0x6F18 # +0xE27B 0x6F3B # +0xE27C 0x6F12 # +0xE27D 0x6EED # +0xE27E 0x6F0A # +0xE2A1 0x6F36 # +0xE2A2 0x6F73 # +0xE2A3 0x6EF9 # +0xE2A4 0x6EEE # +0xE2A5 0x6F2D # +0xE2A6 0x6F40 # +0xE2A7 0x6F30 # +0xE2A8 0x6F3C # +0xE2A9 0x6F35 # +0xE2AA 0x6EEB # +0xE2AB 0x6F07 # +0xE2AC 0x6F0E # +0xE2AD 0x6F43 # +0xE2AE 0x6F05 # +0xE2AF 0x6EFD # +0xE2B0 0x6EF6 # +0xE2B1 0x6F39 # +0xE2B2 0x6F1C # +0xE2B3 0x6EFC # +0xE2B4 0x6F3A # +0xE2B5 0x6F1F # +0xE2B6 0x6F0D # +0xE2B7 0x6F1E # +0xE2B8 0x6F08 # +0xE2B9 0x6F21 # +0xE2BA 0x7187 # +0xE2BB 0x7190 # +0xE2BC 0x7189 # +0xE2BD 0x7180 # +0xE2BE 0x7185 # +0xE2BF 0x7182 # +0xE2C0 0x718F # +0xE2C1 0x717B # +0xE2C2 0x7186 # +0xE2C3 0x7181 # +0xE2C4 0x7197 # +0xE2C5 0x7244 # +0xE2C6 0x7253 # +0xE2C7 0x7297 # +0xE2C8 0x7295 # +0xE2C9 0x7293 # +0xE2CA 0x7343 # +0xE2CB 0x734D # +0xE2CC 0x7351 # +0xE2CD 0x734C # +0xE2CE 0x7462 # +0xE2CF 0x7473 # +0xE2D0 0x7471 # +0xE2D1 0x7475 # +0xE2D2 0x7472 # +0xE2D3 0x7467 # +0xE2D4 0x746E # +0xE2D5 0x7500 # +0xE2D6 0x7502 # +0xE2D7 0x7503 # +0xE2D8 0x757D # +0xE2D9 0x7590 # +0xE2DA 0x7616 # +0xE2DB 0x7608 # +0xE2DC 0x760C # +0xE2DD 0x7615 # +0xE2DE 0x7611 # +0xE2DF 0x760A # +0xE2E0 0x7614 # +0xE2E1 0x76B8 # +0xE2E2 0x7781 # +0xE2E3 0x777C # +0xE2E4 0x7785 # +0xE2E5 0x7782 # +0xE2E6 0x776E # +0xE2E7 0x7780 # +0xE2E8 0x776F # +0xE2E9 0x777E # +0xE2EA 0x7783 # +0xE2EB 0x78B2 # +0xE2EC 0x78AA # +0xE2ED 0x78B4 # +0xE2EE 0x78AD # +0xE2EF 0x78A8 # +0xE2F0 0x787E # +0xE2F1 0x78AB # +0xE2F2 0x789E # +0xE2F3 0x78A5 # +0xE2F4 0x78A0 # +0xE2F5 0x78AC # +0xE2F6 0x78A2 # +0xE2F7 0x78A4 # +0xE2F8 0x7998 # +0xE2F9 0x798A # +0xE2FA 0x798B # +0xE2FB 0x7996 # +0xE2FC 0x7995 # +0xE2FD 0x7994 # +0xE2FE 0x7993 # +0xE340 0x7997 # +0xE341 0x7988 # +0xE342 0x7992 # +0xE343 0x7990 # +0xE344 0x7A2B # +0xE345 0x7A4A # +0xE346 0x7A30 # +0xE347 0x7A2F # +0xE348 0x7A28 # +0xE349 0x7A26 # +0xE34A 0x7AA8 # +0xE34B 0x7AAB # +0xE34C 0x7AAC # +0xE34D 0x7AEE # +0xE34E 0x7B88 # +0xE34F 0x7B9C # +0xE350 0x7B8A # +0xE351 0x7B91 # +0xE352 0x7B90 # +0xE353 0x7B96 # +0xE354 0x7B8D # +0xE355 0x7B8C # +0xE356 0x7B9B # +0xE357 0x7B8E # +0xE358 0x7B85 # +0xE359 0x7B98 # +0xE35A 0x5284 # +0xE35B 0x7B99 # +0xE35C 0x7BA4 # +0xE35D 0x7B82 # +0xE35E 0x7CBB # +0xE35F 0x7CBF # +0xE360 0x7CBC # +0xE361 0x7CBA # +0xE362 0x7DA7 # +0xE363 0x7DB7 # +0xE364 0x7DC2 # +0xE365 0x7DA3 # +0xE366 0x7DAA # +0xE367 0x7DC1 # +0xE368 0x7DC0 # +0xE369 0x7DC5 # +0xE36A 0x7D9D # +0xE36B 0x7DCE # +0xE36C 0x7DC4 # +0xE36D 0x7DC6 # +0xE36E 0x7DCB # +0xE36F 0x7DCC # +0xE370 0x7DAF # +0xE371 0x7DB9 # +0xE372 0x7D96 # +0xE373 0x7DBC # +0xE374 0x7D9F # +0xE375 0x7DA6 # +0xE376 0x7DAE # +0xE377 0x7DA9 # +0xE378 0x7DA1 # +0xE379 0x7DC9 # +0xE37A 0x7F73 # +0xE37B 0x7FE2 # +0xE37C 0x7FE3 # +0xE37D 0x7FE5 # +0xE37E 0x7FDE # +0xE3A1 0x8024 # +0xE3A2 0x805D # +0xE3A3 0x805C # +0xE3A4 0x8189 # +0xE3A5 0x8186 # +0xE3A6 0x8183 # +0xE3A7 0x8187 # +0xE3A8 0x818D # +0xE3A9 0x818C # +0xE3AA 0x818B # +0xE3AB 0x8215 # +0xE3AC 0x8497 # +0xE3AD 0x84A4 # +0xE3AE 0x84A1 # +0xE3AF 0x849F # +0xE3B0 0x84BA # +0xE3B1 0x84CE # +0xE3B2 0x84C2 # +0xE3B3 0x84AC # +0xE3B4 0x84AE # +0xE3B5 0x84AB # +0xE3B6 0x84B9 # +0xE3B7 0x84B4 # +0xE3B8 0x84C1 # +0xE3B9 0x84CD # +0xE3BA 0x84AA # +0xE3BB 0x849A # +0xE3BC 0x84B1 # +0xE3BD 0x84D0 # +0xE3BE 0x849D # +0xE3BF 0x84A7 # +0xE3C0 0x84BB # +0xE3C1 0x84A2 # +0xE3C2 0x8494 # +0xE3C3 0x84C7 # +0xE3C4 0x84CC # +0xE3C5 0x849B # +0xE3C6 0x84A9 # +0xE3C7 0x84AF # +0xE3C8 0x84A8 # +0xE3C9 0x84D6 # +0xE3CA 0x8498 # +0xE3CB 0x84B6 # +0xE3CC 0x84CF # +0xE3CD 0x84A0 # +0xE3CE 0x84D7 # +0xE3CF 0x84D4 # +0xE3D0 0x84D2 # +0xE3D1 0x84DB # +0xE3D2 0x84B0 # +0xE3D3 0x8491 # +0xE3D4 0x8661 # +0xE3D5 0x8733 # +0xE3D6 0x8723 # +0xE3D7 0x8728 # +0xE3D8 0x876B # +0xE3D9 0x8740 # +0xE3DA 0x872E # +0xE3DB 0x871E # +0xE3DC 0x8721 # +0xE3DD 0x8719 # +0xE3DE 0x871B # +0xE3DF 0x8743 # +0xE3E0 0x872C # +0xE3E1 0x8741 # +0xE3E2 0x873E # +0xE3E3 0x8746 # +0xE3E4 0x8720 # +0xE3E5 0x8732 # +0xE3E6 0x872A # +0xE3E7 0x872D # +0xE3E8 0x873C # +0xE3E9 0x8712 # +0xE3EA 0x873A # +0xE3EB 0x8731 # +0xE3EC 0x8735 # +0xE3ED 0x8742 # +0xE3EE 0x8726 # +0xE3EF 0x8727 # +0xE3F0 0x8738 # +0xE3F1 0x8724 # +0xE3F2 0x871A # +0xE3F3 0x8730 # +0xE3F4 0x8711 # +0xE3F5 0x88F7 # +0xE3F6 0x88E7 # +0xE3F7 0x88F1 # +0xE3F8 0x88F2 # +0xE3F9 0x88FA # +0xE3FA 0x88FE # +0xE3FB 0x88EE # +0xE3FC 0x88FC # +0xE3FD 0x88F6 # +0xE3FE 0x88FB # +0xE440 0x88F0 # +0xE441 0x88EC # +0xE442 0x88EB # +0xE443 0x899D # +0xE444 0x89A1 # +0xE445 0x899F # +0xE446 0x899E # +0xE447 0x89E9 # +0xE448 0x89EB # +0xE449 0x89E8 # +0xE44A 0x8AAB # +0xE44B 0x8A99 # +0xE44C 0x8A8B # +0xE44D 0x8A92 # +0xE44E 0x8A8F # +0xE44F 0x8A96 # +0xE450 0x8C3D # +0xE451 0x8C68 # +0xE452 0x8C69 # +0xE453 0x8CD5 # +0xE454 0x8CCF # +0xE455 0x8CD7 # +0xE456 0x8D96 # +0xE457 0x8E09 # +0xE458 0x8E02 # +0xE459 0x8DFF # +0xE45A 0x8E0D # +0xE45B 0x8DFD # +0xE45C 0x8E0A # +0xE45D 0x8E03 # +0xE45E 0x8E07 # +0xE45F 0x8E06 # +0xE460 0x8E05 # +0xE461 0x8DFE # +0xE462 0x8E00 # +0xE463 0x8E04 # +0xE464 0x8F10 # +0xE465 0x8F11 # +0xE466 0x8F0E # +0xE467 0x8F0D # +0xE468 0x9123 # +0xE469 0x911C # +0xE46A 0x9120 # +0xE46B 0x9122 # +0xE46C 0x911F # +0xE46D 0x911D # +0xE46E 0x911A # +0xE46F 0x9124 # +0xE470 0x9121 # +0xE471 0x911B # +0xE472 0x917A # +0xE473 0x9172 # +0xE474 0x9179 # +0xE475 0x9173 # +0xE476 0x92A5 # +0xE477 0x92A4 # +0xE478 0x9276 # +0xE479 0x929B # +0xE47A 0x927A # +0xE47B 0x92A0 # +0xE47C 0x9294 # +0xE47D 0x92AA # +0xE47E 0x928D # +0xE4A1 0x92A6 # +0xE4A2 0x929A # +0xE4A3 0x92AB # +0xE4A4 0x9279 # +0xE4A5 0x9297 # +0xE4A6 0x927F # +0xE4A7 0x92A3 # +0xE4A8 0x92EE # +0xE4A9 0x928E # +0xE4AA 0x9282 # +0xE4AB 0x9295 # +0xE4AC 0x92A2 # +0xE4AD 0x927D # +0xE4AE 0x9288 # +0xE4AF 0x92A1 # +0xE4B0 0x928A # +0xE4B1 0x9286 # +0xE4B2 0x928C # +0xE4B3 0x9299 # +0xE4B4 0x92A7 # +0xE4B5 0x927E # +0xE4B6 0x9287 # +0xE4B7 0x92A9 # +0xE4B8 0x929D # +0xE4B9 0x928B # +0xE4BA 0x922D # +0xE4BB 0x969E # +0xE4BC 0x96A1 # +0xE4BD 0x96FF # +0xE4BE 0x9758 # +0xE4BF 0x977D # +0xE4C0 0x977A # +0xE4C1 0x977E # +0xE4C2 0x9783 # +0xE4C3 0x9780 # +0xE4C4 0x9782 # +0xE4C5 0x977B # +0xE4C6 0x9784 # +0xE4C7 0x9781 # +0xE4C8 0x977F # +0xE4C9 0x97CE # +0xE4CA 0x97CD # +0xE4CB 0x9816 # +0xE4CC 0x98AD # +0xE4CD 0x98AE # +0xE4CE 0x9902 # +0xE4CF 0x9900 # +0xE4D0 0x9907 # +0xE4D1 0x999D # +0xE4D2 0x999C # +0xE4D3 0x99C3 # +0xE4D4 0x99B9 # +0xE4D5 0x99BB # +0xE4D6 0x99BA # +0xE4D7 0x99C2 # +0xE4D8 0x99BD # +0xE4D9 0x99C7 # +0xE4DA 0x9AB1 # +0xE4DB 0x9AE3 # +0xE4DC 0x9AE7 # +0xE4DD 0x9B3E # +0xE4DE 0x9B3F # +0xE4DF 0x9B60 # +0xE4E0 0x9B61 # +0xE4E1 0x9B5F # +0xE4E2 0x9CF1 # +0xE4E3 0x9CF2 # +0xE4E4 0x9CF5 # +0xE4E5 0x9EA7 # +0xE4E6 0x50FF # +0xE4E7 0x5103 # +0xE4E8 0x5130 # +0xE4E9 0x50F8 # +0xE4EA 0x5106 # +0xE4EB 0x5107 # +0xE4EC 0x50F6 # +0xE4ED 0x50FE # +0xE4EE 0x510B # +0xE4EF 0x510C # +0xE4F0 0x50FD # +0xE4F1 0x510A # +0xE4F2 0x528B # +0xE4F3 0x528C # +0xE4F4 0x52F1 # +0xE4F5 0x52EF # +0xE4F6 0x5648 # +0xE4F7 0x5642 # +0xE4F8 0x564C # +0xE4F9 0x5635 # +0xE4FA 0x5641 # +0xE4FB 0x564A # +0xE4FC 0x5649 # +0xE4FD 0x5646 # +0xE4FE 0x5658 # +0xE540 0x565A # +0xE541 0x5640 # +0xE542 0x5633 # +0xE543 0x563D # +0xE544 0x562C # +0xE545 0x563E # +0xE546 0x5638 # +0xE547 0x562A # +0xE548 0x563A # +0xE549 0x571A # +0xE54A 0x58AB # +0xE54B 0x589D # +0xE54C 0x58B1 # +0xE54D 0x58A0 # +0xE54E 0x58A3 # +0xE54F 0x58AF # +0xE550 0x58AC # +0xE551 0x58A5 # +0xE552 0x58A1 # +0xE553 0x58FF # +0xE554 0x5AFF # +0xE555 0x5AF4 # +0xE556 0x5AFD # +0xE557 0x5AF7 # +0xE558 0x5AF6 # +0xE559 0x5B03 # +0xE55A 0x5AF8 # +0xE55B 0x5B02 # +0xE55C 0x5AF9 # +0xE55D 0x5B01 # +0xE55E 0x5B07 # +0xE55F 0x5B05 # +0xE560 0x5B0F # +0xE561 0x5C67 # +0xE562 0x5D99 # +0xE563 0x5D97 # +0xE564 0x5D9F # +0xE565 0x5D92 # +0xE566 0x5DA2 # +0xE567 0x5D93 # +0xE568 0x5D95 # +0xE569 0x5DA0 # +0xE56A 0x5D9C # +0xE56B 0x5DA1 # +0xE56C 0x5D9A # +0xE56D 0x5D9E # +0xE56E 0x5E69 # +0xE56F 0x5E5D # +0xE570 0x5E60 # +0xE571 0x5E5C # +0xE572 0x7DF3 # +0xE573 0x5EDB # +0xE574 0x5EDE # +0xE575 0x5EE1 # +0xE576 0x5F49 # +0xE577 0x5FB2 # +0xE578 0x618B # +0xE579 0x6183 # +0xE57A 0x6179 # +0xE57B 0x61B1 # +0xE57C 0x61B0 # +0xE57D 0x61A2 # +0xE57E 0x6189 # +0xE5A1 0x619B # +0xE5A2 0x6193 # +0xE5A3 0x61AF # +0xE5A4 0x61AD # +0xE5A5 0x619F # +0xE5A6 0x6192 # +0xE5A7 0x61AA # +0xE5A8 0x61A1 # +0xE5A9 0x618D # +0xE5AA 0x6166 # +0xE5AB 0x61B3 # +0xE5AC 0x622D # +0xE5AD 0x646E # +0xE5AE 0x6470 # +0xE5AF 0x6496 # +0xE5B0 0x64A0 # +0xE5B1 0x6485 # +0xE5B2 0x6497 # +0xE5B3 0x649C # +0xE5B4 0x648F # +0xE5B5 0x648B # +0xE5B6 0x648A # +0xE5B7 0x648C # +0xE5B8 0x64A3 # +0xE5B9 0x649F # +0xE5BA 0x6468 # +0xE5BB 0x64B1 # +0xE5BC 0x6498 # +0xE5BD 0x6576 # +0xE5BE 0x657A # +0xE5BF 0x6579 # +0xE5C0 0x657B # +0xE5C1 0x65B2 # +0xE5C2 0x65B3 # +0xE5C3 0x66B5 # +0xE5C4 0x66B0 # +0xE5C5 0x66A9 # +0xE5C6 0x66B2 # +0xE5C7 0x66B7 # +0xE5C8 0x66AA # +0xE5C9 0x66AF # +0xE5CA 0x6A00 # +0xE5CB 0x6A06 # +0xE5CC 0x6A17 # +0xE5CD 0x69E5 # +0xE5CE 0x69F8 # +0xE5CF 0x6A15 # +0xE5D0 0x69F1 # +0xE5D1 0x69E4 # +0xE5D2 0x6A20 # +0xE5D3 0x69FF # +0xE5D4 0x69EC # +0xE5D5 0x69E2 # +0xE5D6 0x6A1B # +0xE5D7 0x6A1D # +0xE5D8 0x69FE # +0xE5D9 0x6A27 # +0xE5DA 0x69F2 # +0xE5DB 0x69EE # +0xE5DC 0x6A14 # +0xE5DD 0x69F7 # +0xE5DE 0x69E7 # +0xE5DF 0x6A40 # +0xE5E0 0x6A08 # +0xE5E1 0x69E6 # +0xE5E2 0x69FB # +0xE5E3 0x6A0D # +0xE5E4 0x69FC # +0xE5E5 0x69EB # +0xE5E6 0x6A09 # +0xE5E7 0x6A04 # +0xE5E8 0x6A18 # +0xE5E9 0x6A25 # +0xE5EA 0x6A0F # +0xE5EB 0x69F6 # +0xE5EC 0x6A26 # +0xE5ED 0x6A07 # +0xE5EE 0x69F4 # +0xE5EF 0x6A16 # +0xE5F0 0x6B51 # +0xE5F1 0x6BA5 # +0xE5F2 0x6BA3 # +0xE5F3 0x6BA2 # +0xE5F4 0x6BA6 # +0xE5F5 0x6C01 # +0xE5F6 0x6C00 # +0xE5F7 0x6BFF # +0xE5F8 0x6C02 # +0xE5F9 0x6F41 # +0xE5FA 0x6F26 # +0xE5FB 0x6F7E # +0xE5FC 0x6F87 # +0xE5FD 0x6FC6 # +0xE5FE 0x6F92 # +0xE640 0x6F8D # +0xE641 0x6F89 # +0xE642 0x6F8C # +0xE643 0x6F62 # +0xE644 0x6F4F # +0xE645 0x6F85 # +0xE646 0x6F5A # +0xE647 0x6F96 # +0xE648 0x6F76 # +0xE649 0x6F6C # +0xE64A 0x6F82 # +0xE64B 0x6F55 # +0xE64C 0x6F72 # +0xE64D 0x6F52 # +0xE64E 0x6F50 # +0xE64F 0x6F57 # +0xE650 0x6F94 # +0xE651 0x6F93 # +0xE652 0x6F5D # +0xE653 0x6F00 # +0xE654 0x6F61 # +0xE655 0x6F6B # +0xE656 0x6F7D # +0xE657 0x6F67 # +0xE658 0x6F90 # +0xE659 0x6F53 # +0xE65A 0x6F8B # +0xE65B 0x6F69 # +0xE65C 0x6F7F # +0xE65D 0x6F95 # +0xE65E 0x6F63 # +0xE65F 0x6F77 # +0xE660 0x6F6A # +0xE661 0x6F7B # +0xE662 0x71B2 # +0xE663 0x71AF # +0xE664 0x719B # +0xE665 0x71B0 # +0xE666 0x71A0 # +0xE667 0x719A # +0xE668 0x71A9 # +0xE669 0x71B5 # +0xE66A 0x719D # +0xE66B 0x71A5 # +0xE66C 0x719E # +0xE66D 0x71A4 # +0xE66E 0x71A1 # +0xE66F 0x71AA # +0xE670 0x719C # +0xE671 0x71A7 # +0xE672 0x71B3 # +0xE673 0x7298 # +0xE674 0x729A # +0xE675 0x7358 # +0xE676 0x7352 # +0xE677 0x735E # +0xE678 0x735F # +0xE679 0x7360 # +0xE67A 0x735D # +0xE67B 0x735B # +0xE67C 0x7361 # +0xE67D 0x735A # +0xE67E 0x7359 # +0xE6A1 0x7362 # +0xE6A2 0x7487 # +0xE6A3 0x7489 # +0xE6A4 0x748A # +0xE6A5 0x7486 # +0xE6A6 0x7481 # +0xE6A7 0x747D # +0xE6A8 0x7485 # +0xE6A9 0x7488 # +0xE6AA 0x747C # +0xE6AB 0x7479 # +0xE6AC 0x7508 # +0xE6AD 0x7507 # +0xE6AE 0x757E # +0xE6AF 0x7625 # +0xE6B0 0x761E # +0xE6B1 0x7619 # +0xE6B2 0x761D # +0xE6B3 0x761C # +0xE6B4 0x7623 # +0xE6B5 0x761A # +0xE6B6 0x7628 # +0xE6B7 0x761B # +0xE6B8 0x769C # +0xE6B9 0x769D # +0xE6BA 0x769E # +0xE6BB 0x769B # +0xE6BC 0x778D # +0xE6BD 0x778F # +0xE6BE 0x7789 # +0xE6BF 0x7788 # +0xE6C0 0x78CD # +0xE6C1 0x78BB # +0xE6C2 0x78CF # +0xE6C3 0x78CC # +0xE6C4 0x78D1 # +0xE6C5 0x78CE # +0xE6C6 0x78D4 # +0xE6C7 0x78C8 # +0xE6C8 0x78C3 # +0xE6C9 0x78C4 # +0xE6CA 0x78C9 # +0xE6CB 0x799A # +0xE6CC 0x79A1 # +0xE6CD 0x79A0 # +0xE6CE 0x799C # +0xE6CF 0x79A2 # +0xE6D0 0x799B # +0xE6D1 0x6B76 # +0xE6D2 0x7A39 # +0xE6D3 0x7AB2 # +0xE6D4 0x7AB4 # +0xE6D5 0x7AB3 # +0xE6D6 0x7BB7 # +0xE6D7 0x7BCB # +0xE6D8 0x7BBE # +0xE6D9 0x7BAC # +0xE6DA 0x7BCE # +0xE6DB 0x7BAF # +0xE6DC 0x7BB9 # +0xE6DD 0x7BCA # +0xE6DE 0x7BB5 # +0xE6DF 0x7CC5 # +0xE6E0 0x7CC8 # +0xE6E1 0x7CCC # +0xE6E2 0x7CCB # +0xE6E3 0x7DF7 # +0xE6E4 0x7DDB # +0xE6E5 0x7DEA # +0xE6E6 0x7DE7 # +0xE6E7 0x7DD7 # +0xE6E8 0x7DE1 # +0xE6E9 0x7E03 # +0xE6EA 0x7DFA # +0xE6EB 0x7DE6 # +0xE6EC 0x7DF6 # +0xE6ED 0x7DF1 # +0xE6EE 0x7DF0 # +0xE6EF 0x7DEE # +0xE6F0 0x7DDF # +0xE6F1 0x7F76 # +0xE6F2 0x7FAC # +0xE6F3 0x7FB0 # +0xE6F4 0x7FAD # +0xE6F5 0x7FED # +0xE6F6 0x7FEB # +0xE6F7 0x7FEA # +0xE6F8 0x7FEC # +0xE6F9 0x7FE6 # +0xE6FA 0x7FE8 # +0xE6FB 0x8064 # +0xE6FC 0x8067 # +0xE6FD 0x81A3 # +0xE6FE 0x819F # +0xE740 0x819E # +0xE741 0x8195 # +0xE742 0x81A2 # +0xE743 0x8199 # +0xE744 0x8197 # +0xE745 0x8216 # +0xE746 0x824F # +0xE747 0x8253 # +0xE748 0x8252 # +0xE749 0x8250 # +0xE74A 0x824E # +0xE74B 0x8251 # +0xE74C 0x8524 # +0xE74D 0x853B # +0xE74E 0x850F # +0xE74F 0x8500 # +0xE750 0x8529 # +0xE751 0x850E # +0xE752 0x8509 # +0xE753 0x850D # +0xE754 0x851F # +0xE755 0x850A # +0xE756 0x8527 # +0xE757 0x851C # +0xE758 0x84FB # +0xE759 0x852B # +0xE75A 0x84FA # +0xE75B 0x8508 # +0xE75C 0x850C # +0xE75D 0x84F4 # +0xE75E 0x852A # +0xE75F 0x84F2 # +0xE760 0x8515 # +0xE761 0x84F7 # +0xE762 0x84EB # +0xE763 0x84F3 # +0xE764 0x84FC # +0xE765 0x8512 # +0xE766 0x84EA # +0xE767 0x84E9 # +0xE768 0x8516 # +0xE769 0x84FE # +0xE76A 0x8528 # +0xE76B 0x851D # +0xE76C 0x852E # +0xE76D 0x8502 # +0xE76E 0x84FD # +0xE76F 0x851E # +0xE770 0x84F6 # +0xE771 0x8531 # +0xE772 0x8526 # +0xE773 0x84E7 # +0xE774 0x84E8 # +0xE775 0x84F0 # +0xE776 0x84EF # +0xE777 0x84F9 # +0xE778 0x8518 # +0xE779 0x8520 # +0xE77A 0x8530 # +0xE77B 0x850B # +0xE77C 0x8519 # +0xE77D 0x852F # +0xE77E 0x8662 # +0xE7A1 0x8756 # +0xE7A2 0x8763 # +0xE7A3 0x8764 # +0xE7A4 0x8777 # +0xE7A5 0x87E1 # +0xE7A6 0x8773 # +0xE7A7 0x8758 # +0xE7A8 0x8754 # +0xE7A9 0x875B # +0xE7AA 0x8752 # +0xE7AB 0x8761 # +0xE7AC 0x875A # +0xE7AD 0x8751 # +0xE7AE 0x875E # +0xE7AF 0x876D # +0xE7B0 0x876A # +0xE7B1 0x8750 # +0xE7B2 0x874E # +0xE7B3 0x875F # +0xE7B4 0x875D # +0xE7B5 0x876F # +0xE7B6 0x876C # +0xE7B7 0x877A # +0xE7B8 0x876E # +0xE7B9 0x875C # +0xE7BA 0x8765 # +0xE7BB 0x874F # +0xE7BC 0x877B # +0xE7BD 0x8775 # +0xE7BE 0x8762 # +0xE7BF 0x8767 # +0xE7C0 0x8769 # +0xE7C1 0x885A # +0xE7C2 0x8905 # +0xE7C3 0x890C # +0xE7C4 0x8914 # +0xE7C5 0x890B # +0xE7C6 0x8917 # +0xE7C7 0x8918 # +0xE7C8 0x8919 # +0xE7C9 0x8906 # +0xE7CA 0x8916 # +0xE7CB 0x8911 # +0xE7CC 0x890E # +0xE7CD 0x8909 # +0xE7CE 0x89A2 # +0xE7CF 0x89A4 # +0xE7D0 0x89A3 # +0xE7D1 0x89ED # +0xE7D2 0x89F0 # +0xE7D3 0x89EC # +0xE7D4 0x8ACF # +0xE7D5 0x8AC6 # +0xE7D6 0x8AB8 # +0xE7D7 0x8AD3 # +0xE7D8 0x8AD1 # +0xE7D9 0x8AD4 # +0xE7DA 0x8AD5 # +0xE7DB 0x8ABB # +0xE7DC 0x8AD7 # +0xE7DD 0x8ABE # +0xE7DE 0x8AC0 # +0xE7DF 0x8AC5 # +0xE7E0 0x8AD8 # +0xE7E1 0x8AC3 # +0xE7E2 0x8ABA # +0xE7E3 0x8ABD # +0xE7E4 0x8AD9 # +0xE7E5 0x8C3E # +0xE7E6 0x8C4D # +0xE7E7 0x8C8F # +0xE7E8 0x8CE5 # +0xE7E9 0x8CDF # +0xE7EA 0x8CD9 # +0xE7EB 0x8CE8 # +0xE7EC 0x8CDA # +0xE7ED 0x8CDD # +0xE7EE 0x8CE7 # +0xE7EF 0x8DA0 # +0xE7F0 0x8D9C # +0xE7F1 0x8DA1 # +0xE7F2 0x8D9B # +0xE7F3 0x8E20 # +0xE7F4 0x8E23 # +0xE7F5 0x8E25 # +0xE7F6 0x8E24 # +0xE7F7 0x8E2E # +0xE7F8 0x8E15 # +0xE7F9 0x8E1B # +0xE7FA 0x8E16 # +0xE7FB 0x8E11 # +0xE7FC 0x8E19 # +0xE7FD 0x8E26 # +0xE7FE 0x8E27 # +0xE840 0x8E14 # +0xE841 0x8E12 # +0xE842 0x8E18 # +0xE843 0x8E13 # +0xE844 0x8E1C # +0xE845 0x8E17 # +0xE846 0x8E1A # +0xE847 0x8F2C # +0xE848 0x8F24 # +0xE849 0x8F18 # +0xE84A 0x8F1A # +0xE84B 0x8F20 # +0xE84C 0x8F23 # +0xE84D 0x8F16 # +0xE84E 0x8F17 # +0xE84F 0x9073 # +0xE850 0x9070 # +0xE851 0x906F # +0xE852 0x9067 # +0xE853 0x906B # +0xE854 0x912F # +0xE855 0x912B # +0xE856 0x9129 # +0xE857 0x912A # +0xE858 0x9132 # +0xE859 0x9126 # +0xE85A 0x912E # +0xE85B 0x9185 # +0xE85C 0x9186 # +0xE85D 0x918A # +0xE85E 0x9181 # +0xE85F 0x9182 # +0xE860 0x9184 # +0xE861 0x9180 # +0xE862 0x92D0 # +0xE863 0x92C3 # +0xE864 0x92C4 # +0xE865 0x92C0 # +0xE866 0x92D9 # +0xE867 0x92B6 # +0xE868 0x92CF # +0xE869 0x92F1 # +0xE86A 0x92DF # +0xE86B 0x92D8 # +0xE86C 0x92E9 # +0xE86D 0x92D7 # +0xE86E 0x92DD # +0xE86F 0x92CC # +0xE870 0x92EF # +0xE871 0x92C2 # +0xE872 0x92E8 # +0xE873 0x92CA # +0xE874 0x92C8 # +0xE875 0x92CE # +0xE876 0x92E6 # +0xE877 0x92CD # +0xE878 0x92D5 # +0xE879 0x92C9 # +0xE87A 0x92E0 # +0xE87B 0x92DE # +0xE87C 0x92E7 # +0xE87D 0x92D1 # +0xE87E 0x92D3 # +0xE8A1 0x92B5 # +0xE8A2 0x92E1 # +0xE8A3 0x92C6 # +0xE8A4 0x92B4 # +0xE8A5 0x957C # +0xE8A6 0x95AC # +0xE8A7 0x95AB # +0xE8A8 0x95AE # +0xE8A9 0x95B0 # +0xE8AA 0x96A4 # +0xE8AB 0x96A2 # +0xE8AC 0x96D3 # +0xE8AD 0x9705 # +0xE8AE 0x9708 # +0xE8AF 0x9702 # +0xE8B0 0x975A # +0xE8B1 0x978A # +0xE8B2 0x978E # +0xE8B3 0x9788 # +0xE8B4 0x97D0 # +0xE8B5 0x97CF # +0xE8B6 0x981E # +0xE8B7 0x981D # +0xE8B8 0x9826 # +0xE8B9 0x9829 # +0xE8BA 0x9828 # +0xE8BB 0x9820 # +0xE8BC 0x981B # +0xE8BD 0x9827 # +0xE8BE 0x98B2 # +0xE8BF 0x9908 # +0xE8C0 0x98FA # +0xE8C1 0x9911 # +0xE8C2 0x9914 # +0xE8C3 0x9916 # +0xE8C4 0x9917 # +0xE8C5 0x9915 # +0xE8C6 0x99DC # +0xE8C7 0x99CD # +0xE8C8 0x99CF # +0xE8C9 0x99D3 # +0xE8CA 0x99D4 # +0xE8CB 0x99CE # +0xE8CC 0x99C9 # +0xE8CD 0x99D6 # +0xE8CE 0x99D8 # +0xE8CF 0x99CB # +0xE8D0 0x99D7 # +0xE8D1 0x99CC # +0xE8D2 0x9AB3 # +0xE8D3 0x9AEC # +0xE8D4 0x9AEB # +0xE8D5 0x9AF3 # +0xE8D6 0x9AF2 # +0xE8D7 0x9AF1 # +0xE8D8 0x9B46 # +0xE8D9 0x9B43 # +0xE8DA 0x9B67 # +0xE8DB 0x9B74 # +0xE8DC 0x9B71 # +0xE8DD 0x9B66 # +0xE8DE 0x9B76 # +0xE8DF 0x9B75 # +0xE8E0 0x9B70 # +0xE8E1 0x9B68 # +0xE8E2 0x9B64 # +0xE8E3 0x9B6C # +0xE8E4 0x9CFC # +0xE8E5 0x9CFA # +0xE8E6 0x9CFD # +0xE8E7 0x9CFF # +0xE8E8 0x9CF7 # +0xE8E9 0x9D07 # +0xE8EA 0x9D00 # +0xE8EB 0x9CF9 # +0xE8EC 0x9CFB # +0xE8ED 0x9D08 # +0xE8EE 0x9D05 # +0xE8EF 0x9D04 # +0xE8F0 0x9E83 # +0xE8F1 0x9ED3 # +0xE8F2 0x9F0F # +0xE8F3 0x9F10 # +0xE8F4 0x511C # +0xE8F5 0x5113 # +0xE8F6 0x5117 # +0xE8F7 0x511A # +0xE8F8 0x5111 # +0xE8F9 0x51DE # +0xE8FA 0x5334 # +0xE8FB 0x53E1 # +0xE8FC 0x5670 # +0xE8FD 0x5660 # +0xE8FE 0x566E # +0xE940 0x5673 # +0xE941 0x5666 # +0xE942 0x5663 # +0xE943 0x566D # +0xE944 0x5672 # +0xE945 0x565E # +0xE946 0x5677 # +0xE947 0x571C # +0xE948 0x571B # +0xE949 0x58C8 # +0xE94A 0x58BD # +0xE94B 0x58C9 # +0xE94C 0x58BF # +0xE94D 0x58BA # +0xE94E 0x58C2 # +0xE94F 0x58BC # +0xE950 0x58C6 # +0xE951 0x5B17 # +0xE952 0x5B19 # +0xE953 0x5B1B # +0xE954 0x5B21 # +0xE955 0x5B14 # +0xE956 0x5B13 # +0xE957 0x5B10 # +0xE958 0x5B16 # +0xE959 0x5B28 # +0xE95A 0x5B1A # +0xE95B 0x5B20 # +0xE95C 0x5B1E # +0xE95D 0x5BEF # +0xE95E 0x5DAC # +0xE95F 0x5DB1 # +0xE960 0x5DA9 # +0xE961 0x5DA7 # +0xE962 0x5DB5 # +0xE963 0x5DB0 # +0xE964 0x5DAE # +0xE965 0x5DAA # +0xE966 0x5DA8 # +0xE967 0x5DB2 # +0xE968 0x5DAD # +0xE969 0x5DAF # +0xE96A 0x5DB4 # +0xE96B 0x5E67 # +0xE96C 0x5E68 # +0xE96D 0x5E66 # +0xE96E 0x5E6F # +0xE96F 0x5EE9 # +0xE970 0x5EE7 # +0xE971 0x5EE6 # +0xE972 0x5EE8 # +0xE973 0x5EE5 # +0xE974 0x5F4B # +0xE975 0x5FBC # +0xE976 0x619D # +0xE977 0x61A8 # +0xE978 0x6196 # +0xE979 0x61C5 # +0xE97A 0x61B4 # +0xE97B 0x61C6 # +0xE97C 0x61C1 # +0xE97D 0x61CC # +0xE97E 0x61BA # +0xE9A1 0x61BF # +0xE9A2 0x61B8 # +0xE9A3 0x618C # +0xE9A4 0x64D7 # +0xE9A5 0x64D6 # +0xE9A6 0x64D0 # +0xE9A7 0x64CF # +0xE9A8 0x64C9 # +0xE9A9 0x64BD # +0xE9AA 0x6489 # +0xE9AB 0x64C3 # +0xE9AC 0x64DB # +0xE9AD 0x64F3 # +0xE9AE 0x64D9 # +0xE9AF 0x6533 # +0xE9B0 0x657F # +0xE9B1 0x657C # +0xE9B2 0x65A2 # +0xE9B3 0x66C8 # +0xE9B4 0x66BE # +0xE9B5 0x66C0 # +0xE9B6 0x66CA # +0xE9B7 0x66CB # +0xE9B8 0x66CF # +0xE9B9 0x66BD # +0xE9BA 0x66BB # +0xE9BB 0x66BA # +0xE9BC 0x66CC # +0xE9BD 0x6723 # +0xE9BE 0x6A34 # +0xE9BF 0x6A66 # +0xE9C0 0x6A49 # +0xE9C1 0x6A67 # +0xE9C2 0x6A32 # +0xE9C3 0x6A68 # +0xE9C4 0x6A3E # +0xE9C5 0x6A5D # +0xE9C6 0x6A6D # +0xE9C7 0x6A76 # +0xE9C8 0x6A5B # +0xE9C9 0x6A51 # +0xE9CA 0x6A28 # +0xE9CB 0x6A5A # +0xE9CC 0x6A3B # +0xE9CD 0x6A3F # +0xE9CE 0x6A41 # +0xE9CF 0x6A6A # +0xE9D0 0x6A64 # +0xE9D1 0x6A50 # +0xE9D2 0x6A4F # +0xE9D3 0x6A54 # +0xE9D4 0x6A6F # +0xE9D5 0x6A69 # +0xE9D6 0x6A60 # +0xE9D7 0x6A3C # +0xE9D8 0x6A5E # +0xE9D9 0x6A56 # +0xE9DA 0x6A55 # +0xE9DB 0x6A4D # +0xE9DC 0x6A4E # +0xE9DD 0x6A46 # +0xE9DE 0x6B55 # +0xE9DF 0x6B54 # +0xE9E0 0x6B56 # +0xE9E1 0x6BA7 # +0xE9E2 0x6BAA # +0xE9E3 0x6BAB # +0xE9E4 0x6BC8 # +0xE9E5 0x6BC7 # +0xE9E6 0x6C04 # +0xE9E7 0x6C03 # +0xE9E8 0x6C06 # +0xE9E9 0x6FAD # +0xE9EA 0x6FCB # +0xE9EB 0x6FA3 # +0xE9EC 0x6FC7 # +0xE9ED 0x6FBC # +0xE9EE 0x6FCE # +0xE9EF 0x6FC8 # +0xE9F0 0x6F5E # +0xE9F1 0x6FC4 # +0xE9F2 0x6FBD # +0xE9F3 0x6F9E # +0xE9F4 0x6FCA # +0xE9F5 0x6FA8 # +0xE9F6 0x7004 # +0xE9F7 0x6FA5 # +0xE9F8 0x6FAE # +0xE9F9 0x6FBA # +0xE9FA 0x6FAC # +0xE9FB 0x6FAA # +0xE9FC 0x6FCF # +0xE9FD 0x6FBF # +0xE9FE 0x6FB8 # +0xEA40 0x6FA2 # +0xEA41 0x6FC9 # +0xEA42 0x6FAB # +0xEA43 0x6FCD # +0xEA44 0x6FAF # +0xEA45 0x6FB2 # +0xEA46 0x6FB0 # +0xEA47 0x71C5 # +0xEA48 0x71C2 # +0xEA49 0x71BF # +0xEA4A 0x71B8 # +0xEA4B 0x71D6 # +0xEA4C 0x71C0 # +0xEA4D 0x71C1 # +0xEA4E 0x71CB # +0xEA4F 0x71D4 # +0xEA50 0x71CA # +0xEA51 0x71C7 # +0xEA52 0x71CF # +0xEA53 0x71BD # +0xEA54 0x71D8 # +0xEA55 0x71BC # +0xEA56 0x71C6 # +0xEA57 0x71DA # +0xEA58 0x71DB # +0xEA59 0x729D # +0xEA5A 0x729E # +0xEA5B 0x7369 # +0xEA5C 0x7366 # +0xEA5D 0x7367 # +0xEA5E 0x736C # +0xEA5F 0x7365 # +0xEA60 0x736B # +0xEA61 0x736A # +0xEA62 0x747F # +0xEA63 0x749A # +0xEA64 0x74A0 # +0xEA65 0x7494 # +0xEA66 0x7492 # +0xEA67 0x7495 # +0xEA68 0x74A1 # +0xEA69 0x750B # +0xEA6A 0x7580 # +0xEA6B 0x762F # +0xEA6C 0x762D # +0xEA6D 0x7631 # +0xEA6E 0x763D # +0xEA6F 0x7633 # +0xEA70 0x763C # +0xEA71 0x7635 # +0xEA72 0x7632 # +0xEA73 0x7630 # +0xEA74 0x76BB # +0xEA75 0x76E6 # +0xEA76 0x779A # +0xEA77 0x779D # +0xEA78 0x77A1 # +0xEA79 0x779C # +0xEA7A 0x779B # +0xEA7B 0x77A2 # +0xEA7C 0x77A3 # +0xEA7D 0x7795 # +0xEA7E 0x7799 # +0xEAA1 0x7797 # +0xEAA2 0x78DD # +0xEAA3 0x78E9 # +0xEAA4 0x78E5 # +0xEAA5 0x78EA # +0xEAA6 0x78DE # +0xEAA7 0x78E3 # +0xEAA8 0x78DB # +0xEAA9 0x78E1 # +0xEAAA 0x78E2 # +0xEAAB 0x78ED # +0xEAAC 0x78DF # +0xEAAD 0x78E0 # +0xEAAE 0x79A4 # +0xEAAF 0x7A44 # +0xEAB0 0x7A48 # +0xEAB1 0x7A47 # +0xEAB2 0x7AB6 # +0xEAB3 0x7AB8 # +0xEAB4 0x7AB5 # +0xEAB5 0x7AB1 # +0xEAB6 0x7AB7 # +0xEAB7 0x7BDE # +0xEAB8 0x7BE3 # +0xEAB9 0x7BE7 # +0xEABA 0x7BDD # +0xEABB 0x7BD5 # +0xEABC 0x7BE5 # +0xEABD 0x7BDA # +0xEABE 0x7BE8 # +0xEABF 0x7BF9 # +0xEAC0 0x7BD4 # +0xEAC1 0x7BEA # +0xEAC2 0x7BE2 # +0xEAC3 0x7BDC # +0xEAC4 0x7BEB # +0xEAC5 0x7BD8 # +0xEAC6 0x7BDF # +0xEAC7 0x7CD2 # +0xEAC8 0x7CD4 # +0xEAC9 0x7CD7 # +0xEACA 0x7CD0 # +0xEACB 0x7CD1 # +0xEACC 0x7E12 # +0xEACD 0x7E21 # +0xEACE 0x7E17 # +0xEACF 0x7E0C # +0xEAD0 0x7E1F # +0xEAD1 0x7E20 # +0xEAD2 0x7E13 # +0xEAD3 0x7E0E # +0xEAD4 0x7E1C # +0xEAD5 0x7E15 # +0xEAD6 0x7E1A # +0xEAD7 0x7E22 # +0xEAD8 0x7E0B # +0xEAD9 0x7E0F # +0xEADA 0x7E16 # +0xEADB 0x7E0D # +0xEADC 0x7E14 # +0xEADD 0x7E25 # +0xEADE 0x7E24 # +0xEADF 0x7F43 # +0xEAE0 0x7F7B # +0xEAE1 0x7F7C # +0xEAE2 0x7F7A # +0xEAE3 0x7FB1 # +0xEAE4 0x7FEF # +0xEAE5 0x802A # +0xEAE6 0x8029 # +0xEAE7 0x806C # +0xEAE8 0x81B1 # +0xEAE9 0x81A6 # +0xEAEA 0x81AE # +0xEAEB 0x81B9 # +0xEAEC 0x81B5 # +0xEAED 0x81AB # +0xEAEE 0x81B0 # +0xEAEF 0x81AC # +0xEAF0 0x81B4 # +0xEAF1 0x81B2 # +0xEAF2 0x81B7 # +0xEAF3 0x81A7 # +0xEAF4 0x81F2 # +0xEAF5 0x8255 # +0xEAF6 0x8256 # +0xEAF7 0x8257 # +0xEAF8 0x8556 # +0xEAF9 0x8545 # +0xEAFA 0x856B # +0xEAFB 0x854D # +0xEAFC 0x8553 # +0xEAFD 0x8561 # +0xEAFE 0x8558 # +0xEB40 0x8540 # +0xEB41 0x8546 # +0xEB42 0x8564 # +0xEB43 0x8541 # +0xEB44 0x8562 # +0xEB45 0x8544 # +0xEB46 0x8551 # +0xEB47 0x8547 # +0xEB48 0x8563 # +0xEB49 0x853E # +0xEB4A 0x855B # +0xEB4B 0x8571 # +0xEB4C 0x854E # +0xEB4D 0x856E # +0xEB4E 0x8575 # +0xEB4F 0x8555 # +0xEB50 0x8567 # +0xEB51 0x8560 # +0xEB52 0x858C # +0xEB53 0x8566 # +0xEB54 0x855D # +0xEB55 0x8554 # +0xEB56 0x8565 # +0xEB57 0x856C # +0xEB58 0x8663 # +0xEB59 0x8665 # +0xEB5A 0x8664 # +0xEB5B 0x879B # +0xEB5C 0x878F # +0xEB5D 0x8797 # +0xEB5E 0x8793 # +0xEB5F 0x8792 # +0xEB60 0x8788 # +0xEB61 0x8781 # +0xEB62 0x8796 # +0xEB63 0x8798 # +0xEB64 0x8779 # +0xEB65 0x8787 # +0xEB66 0x87A3 # +0xEB67 0x8785 # +0xEB68 0x8790 # +0xEB69 0x8791 # +0xEB6A 0x879D # +0xEB6B 0x8784 # +0xEB6C 0x8794 # +0xEB6D 0x879C # +0xEB6E 0x879A # +0xEB6F 0x8789 # +0xEB70 0x891E # +0xEB71 0x8926 # +0xEB72 0x8930 # +0xEB73 0x892D # +0xEB74 0x892E # +0xEB75 0x8927 # +0xEB76 0x8931 # +0xEB77 0x8922 # +0xEB78 0x8929 # +0xEB79 0x8923 # +0xEB7A 0x892F # +0xEB7B 0x892C # +0xEB7C 0x891F # +0xEB7D 0x89F1 # +0xEB7E 0x8AE0 # +0xEBA1 0x8AE2 # +0xEBA2 0x8AF2 # +0xEBA3 0x8AF4 # +0xEBA4 0x8AF5 # +0xEBA5 0x8ADD # +0xEBA6 0x8B14 # +0xEBA7 0x8AE4 # +0xEBA8 0x8ADF # +0xEBA9 0x8AF0 # +0xEBAA 0x8AC8 # +0xEBAB 0x8ADE # +0xEBAC 0x8AE1 # +0xEBAD 0x8AE8 # +0xEBAE 0x8AFF # +0xEBAF 0x8AEF # +0xEBB0 0x8AFB # +0xEBB1 0x8C91 # +0xEBB2 0x8C92 # +0xEBB3 0x8C90 # +0xEBB4 0x8CF5 # +0xEBB5 0x8CEE # +0xEBB6 0x8CF1 # +0xEBB7 0x8CF0 # +0xEBB8 0x8CF3 # +0xEBB9 0x8D6C # +0xEBBA 0x8D6E # +0xEBBB 0x8DA5 # +0xEBBC 0x8DA7 # +0xEBBD 0x8E33 # +0xEBBE 0x8E3E # +0xEBBF 0x8E38 # +0xEBC0 0x8E40 # +0xEBC1 0x8E45 # +0xEBC2 0x8E36 # +0xEBC3 0x8E3C # +0xEBC4 0x8E3D # +0xEBC5 0x8E41 # +0xEBC6 0x8E30 # +0xEBC7 0x8E3F # +0xEBC8 0x8EBD # +0xEBC9 0x8F36 # +0xEBCA 0x8F2E # +0xEBCB 0x8F35 # +0xEBCC 0x8F32 # +0xEBCD 0x8F39 # +0xEBCE 0x8F37 # +0xEBCF 0x8F34 # +0xEBD0 0x9076 # +0xEBD1 0x9079 # +0xEBD2 0x907B # +0xEBD3 0x9086 # +0xEBD4 0x90FA # +0xEBD5 0x9133 # +0xEBD6 0x9135 # +0xEBD7 0x9136 # +0xEBD8 0x9193 # +0xEBD9 0x9190 # +0xEBDA 0x9191 # +0xEBDB 0x918D # +0xEBDC 0x918F # +0xEBDD 0x9327 # +0xEBDE 0x931E # +0xEBDF 0x9308 # +0xEBE0 0x931F # +0xEBE1 0x9306 # +0xEBE2 0x930F # +0xEBE3 0x937A # +0xEBE4 0x9338 # +0xEBE5 0x933C # +0xEBE6 0x931B # +0xEBE7 0x9323 # +0xEBE8 0x9312 # +0xEBE9 0x9301 # +0xEBEA 0x9346 # +0xEBEB 0x932D # +0xEBEC 0x930E # +0xEBED 0x930D # +0xEBEE 0x92CB # +0xEBEF 0x931D # +0xEBF0 0x92FA # +0xEBF1 0x9325 # +0xEBF2 0x9313 # +0xEBF3 0x92F9 # +0xEBF4 0x92F7 # +0xEBF5 0x9334 # +0xEBF6 0x9302 # +0xEBF7 0x9324 # +0xEBF8 0x92FF # +0xEBF9 0x9329 # +0xEBFA 0x9339 # +0xEBFB 0x9335 # +0xEBFC 0x932A # +0xEBFD 0x9314 # +0xEBFE 0x930C # +0xEC40 0x930B # +0xEC41 0x92FE # +0xEC42 0x9309 # +0xEC43 0x9300 # +0xEC44 0x92FB # +0xEC45 0x9316 # +0xEC46 0x95BC # +0xEC47 0x95CD # +0xEC48 0x95BE # +0xEC49 0x95B9 # +0xEC4A 0x95BA # +0xEC4B 0x95B6 # +0xEC4C 0x95BF # +0xEC4D 0x95B5 # +0xEC4E 0x95BD # +0xEC4F 0x96A9 # +0xEC50 0x96D4 # +0xEC51 0x970B # +0xEC52 0x9712 # +0xEC53 0x9710 # +0xEC54 0x9799 # +0xEC55 0x9797 # +0xEC56 0x9794 # +0xEC57 0x97F0 # +0xEC58 0x97F8 # +0xEC59 0x9835 # +0xEC5A 0x982F # +0xEC5B 0x9832 # +0xEC5C 0x9924 # +0xEC5D 0x991F # +0xEC5E 0x9927 # +0xEC5F 0x9929 # +0xEC60 0x999E # +0xEC61 0x99EE # +0xEC62 0x99EC # +0xEC63 0x99E5 # +0xEC64 0x99E4 # +0xEC65 0x99F0 # +0xEC66 0x99E3 # +0xEC67 0x99EA # +0xEC68 0x99E9 # +0xEC69 0x99E7 # +0xEC6A 0x9AB9 # +0xEC6B 0x9ABF # +0xEC6C 0x9AB4 # +0xEC6D 0x9ABB # +0xEC6E 0x9AF6 # +0xEC6F 0x9AFA # +0xEC70 0x9AF9 # +0xEC71 0x9AF7 # +0xEC72 0x9B33 # +0xEC73 0x9B80 # +0xEC74 0x9B85 # +0xEC75 0x9B87 # +0xEC76 0x9B7C # +0xEC77 0x9B7E # +0xEC78 0x9B7B # +0xEC79 0x9B82 # +0xEC7A 0x9B93 # +0xEC7B 0x9B92 # +0xEC7C 0x9B90 # +0xEC7D 0x9B7A # +0xEC7E 0x9B95 # +0xECA1 0x9B7D # +0xECA2 0x9B88 # +0xECA3 0x9D25 # +0xECA4 0x9D17 # +0xECA5 0x9D20 # +0xECA6 0x9D1E # +0xECA7 0x9D14 # +0xECA8 0x9D29 # +0xECA9 0x9D1D # +0xECAA 0x9D18 # +0xECAB 0x9D22 # +0xECAC 0x9D10 # +0xECAD 0x9D19 # +0xECAE 0x9D1F # +0xECAF 0x9E88 # +0xECB0 0x9E86 # +0xECB1 0x9E87 # +0xECB2 0x9EAE # +0xECB3 0x9EAD # +0xECB4 0x9ED5 # +0xECB5 0x9ED6 # +0xECB6 0x9EFA # +0xECB7 0x9F12 # +0xECB8 0x9F3D # +0xECB9 0x5126 # +0xECBA 0x5125 # +0xECBB 0x5122 # +0xECBC 0x5124 # +0xECBD 0x5120 # +0xECBE 0x5129 # +0xECBF 0x52F4 # +0xECC0 0x5693 # +0xECC1 0x568C # +0xECC2 0x568D # +0xECC3 0x5686 # +0xECC4 0x5684 # +0xECC5 0x5683 # +0xECC6 0x567E # +0xECC7 0x5682 # +0xECC8 0x567F # +0xECC9 0x5681 # +0xECCA 0x58D6 # +0xECCB 0x58D4 # +0xECCC 0x58CF # +0xECCD 0x58D2 # +0xECCE 0x5B2D # +0xECCF 0x5B25 # +0xECD0 0x5B32 # +0xECD1 0x5B23 # +0xECD2 0x5B2C # +0xECD3 0x5B27 # +0xECD4 0x5B26 # +0xECD5 0x5B2F # +0xECD6 0x5B2E # +0xECD7 0x5B7B # +0xECD8 0x5BF1 # +0xECD9 0x5BF2 # +0xECDA 0x5DB7 # +0xECDB 0x5E6C # +0xECDC 0x5E6A # +0xECDD 0x5FBE # +0xECDE 0x5FBB # +0xECDF 0x61C3 # +0xECE0 0x61B5 # +0xECE1 0x61BC # +0xECE2 0x61E7 # +0xECE3 0x61E0 # +0xECE4 0x61E5 # +0xECE5 0x61E4 # +0xECE6 0x61E8 # +0xECE7 0x61DE # +0xECE8 0x64EF # +0xECE9 0x64E9 # +0xECEA 0x64E3 # +0xECEB 0x64EB # +0xECEC 0x64E4 # +0xECED 0x64E8 # +0xECEE 0x6581 # +0xECEF 0x6580 # +0xECF0 0x65B6 # +0xECF1 0x65DA # +0xECF2 0x66D2 # +0xECF3 0x6A8D # +0xECF4 0x6A96 # +0xECF5 0x6A81 # +0xECF6 0x6AA5 # +0xECF7 0x6A89 # +0xECF8 0x6A9F # +0xECF9 0x6A9B # +0xECFA 0x6AA1 # +0xECFB 0x6A9E # +0xECFC 0x6A87 # +0xECFD 0x6A93 # +0xECFE 0x6A8E # +0xED40 0x6A95 # +0xED41 0x6A83 # +0xED42 0x6AA8 # +0xED43 0x6AA4 # +0xED44 0x6A91 # +0xED45 0x6A7F # +0xED46 0x6AA6 # +0xED47 0x6A9A # +0xED48 0x6A85 # +0xED49 0x6A8C # +0xED4A 0x6A92 # +0xED4B 0x6B5B # +0xED4C 0x6BAD # +0xED4D 0x6C09 # +0xED4E 0x6FCC # +0xED4F 0x6FA9 # +0xED50 0x6FF4 # +0xED51 0x6FD4 # +0xED52 0x6FE3 # +0xED53 0x6FDC # +0xED54 0x6FED # +0xED55 0x6FE7 # +0xED56 0x6FE6 # +0xED57 0x6FDE # +0xED58 0x6FF2 # +0xED59 0x6FDD # +0xED5A 0x6FE2 # +0xED5B 0x6FE8 # +0xED5C 0x71E1 # +0xED5D 0x71F1 # +0xED5E 0x71E8 # +0xED5F 0x71F2 # +0xED60 0x71E4 # +0xED61 0x71F0 # +0xED62 0x71E2 # +0xED63 0x7373 # +0xED64 0x736E # +0xED65 0x736F # +0xED66 0x7497 # +0xED67 0x74B2 # +0xED68 0x74AB # +0xED69 0x7490 # +0xED6A 0x74AA # +0xED6B 0x74AD # +0xED6C 0x74B1 # +0xED6D 0x74A5 # +0xED6E 0x74AF # +0xED6F 0x7510 # +0xED70 0x7511 # +0xED71 0x7512 # +0xED72 0x750F # +0xED73 0x7584 # +0xED74 0x7643 # +0xED75 0x7648 # +0xED76 0x7649 # +0xED77 0x7647 # +0xED78 0x76A4 # +0xED79 0x76E9 # +0xED7A 0x77B5 # +0xED7B 0x77AB # +0xED7C 0x77B2 # +0xED7D 0x77B7 # +0xED7E 0x77B6 # +0xEDA1 0x77B4 # +0xEDA2 0x77B1 # +0xEDA3 0x77A8 # +0xEDA4 0x77F0 # +0xEDA5 0x78F3 # +0xEDA6 0x78FD # +0xEDA7 0x7902 # +0xEDA8 0x78FB # +0xEDA9 0x78FC # +0xEDAA 0x78F2 # +0xEDAB 0x7905 # +0xEDAC 0x78F9 # +0xEDAD 0x78FE # +0xEDAE 0x7904 # +0xEDAF 0x79AB # +0xEDB0 0x79A8 # +0xEDB1 0x7A5C # +0xEDB2 0x7A5B # +0xEDB3 0x7A56 # +0xEDB4 0x7A58 # +0xEDB5 0x7A54 # +0xEDB6 0x7A5A # +0xEDB7 0x7ABE # +0xEDB8 0x7AC0 # +0xEDB9 0x7AC1 # +0xEDBA 0x7C05 # +0xEDBB 0x7C0F # +0xEDBC 0x7BF2 # +0xEDBD 0x7C00 # +0xEDBE 0x7BFF # +0xEDBF 0x7BFB # +0xEDC0 0x7C0E # +0xEDC1 0x7BF4 # +0xEDC2 0x7C0B # +0xEDC3 0x7BF3 # +0xEDC4 0x7C02 # +0xEDC5 0x7C09 # +0xEDC6 0x7C03 # +0xEDC7 0x7C01 # +0xEDC8 0x7BF8 # +0xEDC9 0x7BFD # +0xEDCA 0x7C06 # +0xEDCB 0x7BF0 # +0xEDCC 0x7BF1 # +0xEDCD 0x7C10 # +0xEDCE 0x7C0A # +0xEDCF 0x7CE8 # +0xEDD0 0x7E2D # +0xEDD1 0x7E3C # +0xEDD2 0x7E42 # +0xEDD3 0x7E33 # +0xEDD4 0x9848 # +0xEDD5 0x7E38 # +0xEDD6 0x7E2A # +0xEDD7 0x7E49 # +0xEDD8 0x7E40 # +0xEDD9 0x7E47 # +0xEDDA 0x7E29 # +0xEDDB 0x7E4C # +0xEDDC 0x7E30 # +0xEDDD 0x7E3B # +0xEDDE 0x7E36 # +0xEDDF 0x7E44 # +0xEDE0 0x7E3A # +0xEDE1 0x7F45 # +0xEDE2 0x7F7F # +0xEDE3 0x7F7E # +0xEDE4 0x7F7D # +0xEDE5 0x7FF4 # +0xEDE6 0x7FF2 # +0xEDE7 0x802C # +0xEDE8 0x81BB # +0xEDE9 0x81C4 # +0xEDEA 0x81CC # +0xEDEB 0x81CA # +0xEDEC 0x81C5 # +0xEDED 0x81C7 # +0xEDEE 0x81BC # +0xEDEF 0x81E9 # +0xEDF0 0x825B # +0xEDF1 0x825A # +0xEDF2 0x825C # +0xEDF3 0x8583 # +0xEDF4 0x8580 # +0xEDF5 0x858F # +0xEDF6 0x85A7 # +0xEDF7 0x8595 # +0xEDF8 0x85A0 # +0xEDF9 0x858B # +0xEDFA 0x85A3 # +0xEDFB 0x857B # +0xEDFC 0x85A4 # +0xEDFD 0x859A # +0xEDFE 0x859E # +0xEE40 0x8577 # +0xEE41 0x857C # +0xEE42 0x8589 # +0xEE43 0x85A1 # +0xEE44 0x857A # +0xEE45 0x8578 # +0xEE46 0x8557 # +0xEE47 0x858E # +0xEE48 0x8596 # +0xEE49 0x8586 # +0xEE4A 0x858D # +0xEE4B 0x8599 # +0xEE4C 0x859D # +0xEE4D 0x8581 # +0xEE4E 0x85A2 # +0xEE4F 0x8582 # +0xEE50 0x8588 # +0xEE51 0x8585 # +0xEE52 0x8579 # +0xEE53 0x8576 # +0xEE54 0x8598 # +0xEE55 0x8590 # +0xEE56 0x859F # +0xEE57 0x8668 # +0xEE58 0x87BE # +0xEE59 0x87AA # +0xEE5A 0x87AD # +0xEE5B 0x87C5 # +0xEE5C 0x87B0 # +0xEE5D 0x87AC # +0xEE5E 0x87B9 # +0xEE5F 0x87B5 # +0xEE60 0x87BC # +0xEE61 0x87AE # +0xEE62 0x87C9 # +0xEE63 0x87C3 # +0xEE64 0x87C2 # +0xEE65 0x87CC # +0xEE66 0x87B7 # +0xEE67 0x87AF # +0xEE68 0x87C4 # +0xEE69 0x87CA # +0xEE6A 0x87B4 # +0xEE6B 0x87B6 # +0xEE6C 0x87BF # +0xEE6D 0x87B8 # +0xEE6E 0x87BD # +0xEE6F 0x87DE # +0xEE70 0x87B2 # +0xEE71 0x8935 # +0xEE72 0x8933 # +0xEE73 0x893C # +0xEE74 0x893E # +0xEE75 0x8941 # +0xEE76 0x8952 # +0xEE77 0x8937 # +0xEE78 0x8942 # +0xEE79 0x89AD # +0xEE7A 0x89AF # +0xEE7B 0x89AE # +0xEE7C 0x89F2 # +0xEE7D 0x89F3 # +0xEE7E 0x8B1E # +0xEEA1 0x8B18 # +0xEEA2 0x8B16 # +0xEEA3 0x8B11 # +0xEEA4 0x8B05 # +0xEEA5 0x8B0B # +0xEEA6 0x8B22 # +0xEEA7 0x8B0F # +0xEEA8 0x8B12 # +0xEEA9 0x8B15 # +0xEEAA 0x8B07 # +0xEEAB 0x8B0D # +0xEEAC 0x8B08 # +0xEEAD 0x8B06 # +0xEEAE 0x8B1C # +0xEEAF 0x8B13 # +0xEEB0 0x8B1A # +0xEEB1 0x8C4F # +0xEEB2 0x8C70 # +0xEEB3 0x8C72 # +0xEEB4 0x8C71 # +0xEEB5 0x8C6F # +0xEEB6 0x8C95 # +0xEEB7 0x8C94 # +0xEEB8 0x8CF9 # +0xEEB9 0x8D6F # +0xEEBA 0x8E4E # +0xEEBB 0x8E4D # +0xEEBC 0x8E53 # +0xEEBD 0x8E50 # +0xEEBE 0x8E4C # +0xEEBF 0x8E47 # +0xEEC0 0x8F43 # +0xEEC1 0x8F40 # +0xEEC2 0x9085 # +0xEEC3 0x907E # +0xEEC4 0x9138 # +0xEEC5 0x919A # +0xEEC6 0x91A2 # +0xEEC7 0x919B # +0xEEC8 0x9199 # +0xEEC9 0x919F # +0xEECA 0x91A1 # +0xEECB 0x919D # +0xEECC 0x91A0 # +0xEECD 0x93A1 # +0xEECE 0x9383 # +0xEECF 0x93AF # +0xEED0 0x9364 # +0xEED1 0x9356 # +0xEED2 0x9347 # +0xEED3 0x937C # +0xEED4 0x9358 # +0xEED5 0x935C # +0xEED6 0x9376 # +0xEED7 0x9349 # +0xEED8 0x9350 # +0xEED9 0x9351 # +0xEEDA 0x9360 # +0xEEDB 0x936D # +0xEEDC 0x938F # +0xEEDD 0x934C # +0xEEDE 0x936A # +0xEEDF 0x9379 # +0xEEE0 0x9357 # +0xEEE1 0x9355 # +0xEEE2 0x9352 # +0xEEE3 0x934F # +0xEEE4 0x9371 # +0xEEE5 0x9377 # +0xEEE6 0x937B # +0xEEE7 0x9361 # +0xEEE8 0x935E # +0xEEE9 0x9363 # +0xEEEA 0x9367 # +0xEEEB 0x9380 # +0xEEEC 0x934E # +0xEEED 0x9359 # +0xEEEE 0x95C7 # +0xEEEF 0x95C0 # +0xEEF0 0x95C9 # +0xEEF1 0x95C3 # +0xEEF2 0x95C5 # +0xEEF3 0x95B7 # +0xEEF4 0x96AE # +0xEEF5 0x96B0 # +0xEEF6 0x96AC # +0xEEF7 0x9720 # +0xEEF8 0x971F # +0xEEF9 0x9718 # +0xEEFA 0x971D # +0xEEFB 0x9719 # +0xEEFC 0x979A # +0xEEFD 0x97A1 # +0xEEFE 0x979C # +0xEF40 0x979E # +0xEF41 0x979D # +0xEF42 0x97D5 # +0xEF43 0x97D4 # +0xEF44 0x97F1 # +0xEF45 0x9841 # +0xEF46 0x9844 # +0xEF47 0x984A # +0xEF48 0x9849 # +0xEF49 0x9845 # +0xEF4A 0x9843 # +0xEF4B 0x9925 # +0xEF4C 0x992B # +0xEF4D 0x992C # +0xEF4E 0x992A # +0xEF4F 0x9933 # +0xEF50 0x9932 # +0xEF51 0x992F # +0xEF52 0x992D # +0xEF53 0x9931 # +0xEF54 0x9930 # +0xEF55 0x9998 # +0xEF56 0x99A3 # +0xEF57 0x99A1 # +0xEF58 0x9A02 # +0xEF59 0x99FA # +0xEF5A 0x99F4 # +0xEF5B 0x99F7 # +0xEF5C 0x99F9 # +0xEF5D 0x99F8 # +0xEF5E 0x99F6 # +0xEF5F 0x99FB # +0xEF60 0x99FD # +0xEF61 0x99FE # +0xEF62 0x99FC # +0xEF63 0x9A03 # +0xEF64 0x9ABE # +0xEF65 0x9AFE # +0xEF66 0x9AFD # +0xEF67 0x9B01 # +0xEF68 0x9AFC # +0xEF69 0x9B48 # +0xEF6A 0x9B9A # +0xEF6B 0x9BA8 # +0xEF6C 0x9B9E # +0xEF6D 0x9B9B # +0xEF6E 0x9BA6 # +0xEF6F 0x9BA1 # +0xEF70 0x9BA5 # +0xEF71 0x9BA4 # +0xEF72 0x9B86 # +0xEF73 0x9BA2 # +0xEF74 0x9BA0 # +0xEF75 0x9BAF # +0xEF76 0x9D33 # +0xEF77 0x9D41 # +0xEF78 0x9D67 # +0xEF79 0x9D36 # +0xEF7A 0x9D2E # +0xEF7B 0x9D2F # +0xEF7C 0x9D31 # +0xEF7D 0x9D38 # +0xEF7E 0x9D30 # +0xEFA1 0x9D45 # +0xEFA2 0x9D42 # +0xEFA3 0x9D43 # +0xEFA4 0x9D3E # +0xEFA5 0x9D37 # +0xEFA6 0x9D40 # +0xEFA7 0x9D3D # +0xEFA8 0x7FF5 # +0xEFA9 0x9D2D # +0xEFAA 0x9E8A # +0xEFAB 0x9E89 # +0xEFAC 0x9E8D # +0xEFAD 0x9EB0 # +0xEFAE 0x9EC8 # +0xEFAF 0x9EDA # +0xEFB0 0x9EFB # +0xEFB1 0x9EFF # +0xEFB2 0x9F24 # +0xEFB3 0x9F23 # +0xEFB4 0x9F22 # +0xEFB5 0x9F54 # +0xEFB6 0x9FA0 # +0xEFB7 0x5131 # +0xEFB8 0x512D # +0xEFB9 0x512E # +0xEFBA 0x5698 # +0xEFBB 0x569C # +0xEFBC 0x5697 # +0xEFBD 0x569A # +0xEFBE 0x569D # +0xEFBF 0x5699 # +0xEFC0 0x5970 # +0xEFC1 0x5B3C # +0xEFC2 0x5C69 # +0xEFC3 0x5C6A # +0xEFC4 0x5DC0 # +0xEFC5 0x5E6D # +0xEFC6 0x5E6E # +0xEFC7 0x61D8 # +0xEFC8 0x61DF # +0xEFC9 0x61ED # +0xEFCA 0x61EE # +0xEFCB 0x61F1 # +0xEFCC 0x61EA # +0xEFCD 0x61F0 # +0xEFCE 0x61EB # +0xEFCF 0x61D6 # +0xEFD0 0x61E9 # +0xEFD1 0x64FF # +0xEFD2 0x6504 # +0xEFD3 0x64FD # +0xEFD4 0x64F8 # +0xEFD5 0x6501 # +0xEFD6 0x6503 # +0xEFD7 0x64FC # +0xEFD8 0x6594 # +0xEFD9 0x65DB # +0xEFDA 0x66DA # +0xEFDB 0x66DB # +0xEFDC 0x66D8 # +0xEFDD 0x6AC5 # +0xEFDE 0x6AB9 # +0xEFDF 0x6ABD # +0xEFE0 0x6AE1 # +0xEFE1 0x6AC6 # +0xEFE2 0x6ABA # +0xEFE3 0x6AB6 # +0xEFE4 0x6AB7 # +0xEFE5 0x6AC7 # +0xEFE6 0x6AB4 # +0xEFE7 0x6AAD # +0xEFE8 0x6B5E # +0xEFE9 0x6BC9 # +0xEFEA 0x6C0B # +0xEFEB 0x7007 # +0xEFEC 0x700C # +0xEFED 0x700D # +0xEFEE 0x7001 # +0xEFEF 0x7005 # +0xEFF0 0x7014 # +0xEFF1 0x700E # +0xEFF2 0x6FFF # +0xEFF3 0x7000 # +0xEFF4 0x6FFB # +0xEFF5 0x7026 # +0xEFF6 0x6FFC # +0xEFF7 0x6FF7 # +0xEFF8 0x700A # +0xEFF9 0x7201 # +0xEFFA 0x71FF # +0xEFFB 0x71F9 # +0xEFFC 0x7203 # +0xEFFD 0x71FD # +0xEFFE 0x7376 # +0xF040 0x74B8 # +0xF041 0x74C0 # +0xF042 0x74B5 # +0xF043 0x74C1 # +0xF044 0x74BE # +0xF045 0x74B6 # +0xF046 0x74BB # +0xF047 0x74C2 # +0xF048 0x7514 # +0xF049 0x7513 # +0xF04A 0x765C # +0xF04B 0x7664 # +0xF04C 0x7659 # +0xF04D 0x7650 # +0xF04E 0x7653 # +0xF04F 0x7657 # +0xF050 0x765A # +0xF051 0x76A6 # +0xF052 0x76BD # +0xF053 0x76EC # +0xF054 0x77C2 # +0xF055 0x77BA # +0xF056 0x78FF # +0xF057 0x790C # +0xF058 0x7913 # +0xF059 0x7914 # +0xF05A 0x7909 # +0xF05B 0x7910 # +0xF05C 0x7912 # +0xF05D 0x7911 # +0xF05E 0x79AD # +0xF05F 0x79AC # +0xF060 0x7A5F # +0xF061 0x7C1C # +0xF062 0x7C29 # +0xF063 0x7C19 # +0xF064 0x7C20 # +0xF065 0x7C1F # +0xF066 0x7C2D # +0xF067 0x7C1D # +0xF068 0x7C26 # +0xF069 0x7C28 # +0xF06A 0x7C22 # +0xF06B 0x7C25 # +0xF06C 0x7C30 # +0xF06D 0x7E5C # +0xF06E 0x7E50 # +0xF06F 0x7E56 # +0xF070 0x7E63 # +0xF071 0x7E58 # +0xF072 0x7E62 # +0xF073 0x7E5F # +0xF074 0x7E51 # +0xF075 0x7E60 # +0xF076 0x7E57 # +0xF077 0x7E53 # +0xF078 0x7FB5 # +0xF079 0x7FB3 # +0xF07A 0x7FF7 # +0xF07B 0x7FF8 # +0xF07C 0x8075 # +0xF07D 0x81D1 # +0xF07E 0x81D2 # +0xF0A1 0x81D0 # +0xF0A2 0x825F # +0xF0A3 0x825E # +0xF0A4 0x85B4 # +0xF0A5 0x85C6 # +0xF0A6 0x85C0 # +0xF0A7 0x85C3 # +0xF0A8 0x85C2 # +0xF0A9 0x85B3 # +0xF0AA 0x85B5 # +0xF0AB 0x85BD # +0xF0AC 0x85C7 # +0xF0AD 0x85C4 # +0xF0AE 0x85BF # +0xF0AF 0x85CB # +0xF0B0 0x85CE # +0xF0B1 0x85C8 # +0xF0B2 0x85C5 # +0xF0B3 0x85B1 # +0xF0B4 0x85B6 # +0xF0B5 0x85D2 # +0xF0B6 0x8624 # +0xF0B7 0x85B8 # +0xF0B8 0x85B7 # +0xF0B9 0x85BE # +0xF0BA 0x8669 # +0xF0BB 0x87E7 # +0xF0BC 0x87E6 # +0xF0BD 0x87E2 # +0xF0BE 0x87DB # +0xF0BF 0x87EB # +0xF0C0 0x87EA # +0xF0C1 0x87E5 # +0xF0C2 0x87DF # +0xF0C3 0x87F3 # +0xF0C4 0x87E4 # +0xF0C5 0x87D4 # +0xF0C6 0x87DC # +0xF0C7 0x87D3 # +0xF0C8 0x87ED # +0xF0C9 0x87D8 # +0xF0CA 0x87E3 # +0xF0CB 0x87A4 # +0xF0CC 0x87D7 # +0xF0CD 0x87D9 # +0xF0CE 0x8801 # +0xF0CF 0x87F4 # +0xF0D0 0x87E8 # +0xF0D1 0x87DD # +0xF0D2 0x8953 # +0xF0D3 0x894B # +0xF0D4 0x894F # +0xF0D5 0x894C # +0xF0D6 0x8946 # +0xF0D7 0x8950 # +0xF0D8 0x8951 # +0xF0D9 0x8949 # +0xF0DA 0x8B2A # +0xF0DB 0x8B27 # +0xF0DC 0x8B23 # +0xF0DD 0x8B33 # +0xF0DE 0x8B30 # +0xF0DF 0x8B35 # +0xF0E0 0x8B47 # +0xF0E1 0x8B2F # +0xF0E2 0x8B3C # +0xF0E3 0x8B3E # +0xF0E4 0x8B31 # +0xF0E5 0x8B25 # +0xF0E6 0x8B37 # +0xF0E7 0x8B26 # +0xF0E8 0x8B36 # +0xF0E9 0x8B2E # +0xF0EA 0x8B24 # +0xF0EB 0x8B3B # +0xF0EC 0x8B3D # +0xF0ED 0x8B3A # +0xF0EE 0x8C42 # +0xF0EF 0x8C75 # +0xF0F0 0x8C99 # +0xF0F1 0x8C98 # +0xF0F2 0x8C97 # +0xF0F3 0x8CFE # +0xF0F4 0x8D04 # +0xF0F5 0x8D02 # +0xF0F6 0x8D00 # +0xF0F7 0x8E5C # +0xF0F8 0x8E62 # +0xF0F9 0x8E60 # +0xF0FA 0x8E57 # +0xF0FB 0x8E56 # +0xF0FC 0x8E5E # +0xF0FD 0x8E65 # +0xF0FE 0x8E67 # +0xF140 0x8E5B # +0xF141 0x8E5A # +0xF142 0x8E61 # +0xF143 0x8E5D # +0xF144 0x8E69 # +0xF145 0x8E54 # +0xF146 0x8F46 # +0xF147 0x8F47 # +0xF148 0x8F48 # +0xF149 0x8F4B # +0xF14A 0x9128 # +0xF14B 0x913A # +0xF14C 0x913B # +0xF14D 0x913E # +0xF14E 0x91A8 # +0xF14F 0x91A5 # +0xF150 0x91A7 # +0xF151 0x91AF # +0xF152 0x91AA # +0xF153 0x93B5 # +0xF154 0x938C # +0xF155 0x9392 # +0xF156 0x93B7 # +0xF157 0x939B # +0xF158 0x939D # +0xF159 0x9389 # +0xF15A 0x93A7 # +0xF15B 0x938E # +0xF15C 0x93AA # +0xF15D 0x939E # +0xF15E 0x93A6 # +0xF15F 0x9395 # +0xF160 0x9388 # +0xF161 0x9399 # +0xF162 0x939F # +0xF163 0x938D # +0xF164 0x93B1 # +0xF165 0x9391 # +0xF166 0x93B2 # +0xF167 0x93A4 # +0xF168 0x93A8 # +0xF169 0x93B4 # +0xF16A 0x93A3 # +0xF16B 0x93A5 # +0xF16C 0x95D2 # +0xF16D 0x95D3 # +0xF16E 0x95D1 # +0xF16F 0x96B3 # +0xF170 0x96D7 # +0xF171 0x96DA # +0xF172 0x5DC2 # +0xF173 0x96DF # +0xF174 0x96D8 # +0xF175 0x96DD # +0xF176 0x9723 # +0xF177 0x9722 # +0xF178 0x9725 # +0xF179 0x97AC # +0xF17A 0x97AE # +0xF17B 0x97A8 # +0xF17C 0x97AB # +0xF17D 0x97A4 # +0xF17E 0x97AA # +0xF1A1 0x97A2 # +0xF1A2 0x97A5 # +0xF1A3 0x97D7 # +0xF1A4 0x97D9 # +0xF1A5 0x97D6 # +0xF1A6 0x97D8 # +0xF1A7 0x97FA # +0xF1A8 0x9850 # +0xF1A9 0x9851 # +0xF1AA 0x9852 # +0xF1AB 0x98B8 # +0xF1AC 0x9941 # +0xF1AD 0x993C # +0xF1AE 0x993A # +0xF1AF 0x9A0F # +0xF1B0 0x9A0B # +0xF1B1 0x9A09 # +0xF1B2 0x9A0D # +0xF1B3 0x9A04 # +0xF1B4 0x9A11 # +0xF1B5 0x9A0A # +0xF1B6 0x9A05 # +0xF1B7 0x9A07 # +0xF1B8 0x9A06 # +0xF1B9 0x9AC0 # +0xF1BA 0x9ADC # +0xF1BB 0x9B08 # +0xF1BC 0x9B04 # +0xF1BD 0x9B05 # +0xF1BE 0x9B29 # +0xF1BF 0x9B35 # +0xF1C0 0x9B4A # +0xF1C1 0x9B4C # +0xF1C2 0x9B4B # +0xF1C3 0x9BC7 # +0xF1C4 0x9BC6 # +0xF1C5 0x9BC3 # +0xF1C6 0x9BBF # +0xF1C7 0x9BC1 # +0xF1C8 0x9BB5 # +0xF1C9 0x9BB8 # +0xF1CA 0x9BD3 # +0xF1CB 0x9BB6 # +0xF1CC 0x9BC4 # +0xF1CD 0x9BB9 # +0xF1CE 0x9BBD # +0xF1CF 0x9D5C # +0xF1D0 0x9D53 # +0xF1D1 0x9D4F # +0xF1D2 0x9D4A # +0xF1D3 0x9D5B # +0xF1D4 0x9D4B # +0xF1D5 0x9D59 # +0xF1D6 0x9D56 # +0xF1D7 0x9D4C # +0xF1D8 0x9D57 # +0xF1D9 0x9D52 # +0xF1DA 0x9D54 # +0xF1DB 0x9D5F # +0xF1DC 0x9D58 # +0xF1DD 0x9D5A # +0xF1DE 0x9E8E # +0xF1DF 0x9E8C # +0xF1E0 0x9EDF # +0xF1E1 0x9F01 # +0xF1E2 0x9F00 # +0xF1E3 0x9F16 # +0xF1E4 0x9F25 # +0xF1E5 0x9F2B # +0xF1E6 0x9F2A # +0xF1E7 0x9F29 # +0xF1E8 0x9F28 # +0xF1E9 0x9F4C # +0xF1EA 0x9F55 # +0xF1EB 0x5134 # +0xF1EC 0x5135 # +0xF1ED 0x5296 # +0xF1EE 0x52F7 # +0xF1EF 0x53B4 # +0xF1F0 0x56AB # +0xF1F1 0x56AD # +0xF1F2 0x56A6 # +0xF1F3 0x56A7 # +0xF1F4 0x56AA # +0xF1F5 0x56AC # +0xF1F6 0x58DA # +0xF1F7 0x58DD # +0xF1F8 0x58DB # +0xF1F9 0x5912 # +0xF1FA 0x5B3D # +0xF1FB 0x5B3E # +0xF1FC 0x5B3F # +0xF1FD 0x5DC3 # +0xF1FE 0x5E70 # +0xF240 0x5FBF # +0xF241 0x61FB # +0xF242 0x6507 # +0xF243 0x6510 # +0xF244 0x650D # +0xF245 0x6509 # +0xF246 0x650C # +0xF247 0x650E # +0xF248 0x6584 # +0xF249 0x65DE # +0xF24A 0x65DD # +0xF24B 0x66DE # +0xF24C 0x6AE7 # +0xF24D 0x6AE0 # +0xF24E 0x6ACC # +0xF24F 0x6AD1 # +0xF250 0x6AD9 # +0xF251 0x6ACB # +0xF252 0x6ADF # +0xF253 0x6ADC # +0xF254 0x6AD0 # +0xF255 0x6AEB # +0xF256 0x6ACF # +0xF257 0x6ACD # +0xF258 0x6ADE # +0xF259 0x6B60 # +0xF25A 0x6BB0 # +0xF25B 0x6C0C # +0xF25C 0x7019 # +0xF25D 0x7027 # +0xF25E 0x7020 # +0xF25F 0x7016 # +0xF260 0x702B # +0xF261 0x7021 # +0xF262 0x7022 # +0xF263 0x7023 # +0xF264 0x7029 # +0xF265 0x7017 # +0xF266 0x7024 # +0xF267 0x701C # +0xF268 0x702A # +0xF269 0x720C # +0xF26A 0x720A # +0xF26B 0x7207 # +0xF26C 0x7202 # +0xF26D 0x7205 # +0xF26E 0x72A5 # +0xF26F 0x72A6 # +0xF270 0x72A4 # +0xF271 0x72A3 # +0xF272 0x72A1 # +0xF273 0x74CB # +0xF274 0x74C5 # +0xF275 0x74B7 # +0xF276 0x74C3 # +0xF277 0x7516 # +0xF278 0x7660 # +0xF279 0x77C9 # +0xF27A 0x77CA # +0xF27B 0x77C4 # +0xF27C 0x77F1 # +0xF27D 0x791D # +0xF27E 0x791B # +0xF2A1 0x7921 # +0xF2A2 0x791C # +0xF2A3 0x7917 # +0xF2A4 0x791E # +0xF2A5 0x79B0 # +0xF2A6 0x7A67 # +0xF2A7 0x7A68 # +0xF2A8 0x7C33 # +0xF2A9 0x7C3C # +0xF2AA 0x7C39 # +0xF2AB 0x7C2C # +0xF2AC 0x7C3B # +0xF2AD 0x7CEC # +0xF2AE 0x7CEA # +0xF2AF 0x7E76 # +0xF2B0 0x7E75 # +0xF2B1 0x7E78 # +0xF2B2 0x7E70 # +0xF2B3 0x7E77 # +0xF2B4 0x7E6F # +0xF2B5 0x7E7A # +0xF2B6 0x7E72 # +0xF2B7 0x7E74 # +0xF2B8 0x7E68 # +0xF2B9 0x7F4B # +0xF2BA 0x7F4A # +0xF2BB 0x7F83 # +0xF2BC 0x7F86 # +0xF2BD 0x7FB7 # +0xF2BE 0x7FFD # +0xF2BF 0x7FFE # +0xF2C0 0x8078 # +0xF2C1 0x81D7 # +0xF2C2 0x81D5 # +0xF2C3 0x8264 # +0xF2C4 0x8261 # +0xF2C5 0x8263 # +0xF2C6 0x85EB # +0xF2C7 0x85F1 # +0xF2C8 0x85ED # +0xF2C9 0x85D9 # +0xF2CA 0x85E1 # +0xF2CB 0x85E8 # +0xF2CC 0x85DA # +0xF2CD 0x85D7 # +0xF2CE 0x85EC # +0xF2CF 0x85F2 # +0xF2D0 0x85F8 # +0xF2D1 0x85D8 # +0xF2D2 0x85DF # +0xF2D3 0x85E3 # +0xF2D4 0x85DC # +0xF2D5 0x85D1 # +0xF2D6 0x85F0 # +0xF2D7 0x85E6 # +0xF2D8 0x85EF # +0xF2D9 0x85DE # +0xF2DA 0x85E2 # +0xF2DB 0x8800 # +0xF2DC 0x87FA # +0xF2DD 0x8803 # +0xF2DE 0x87F6 # +0xF2DF 0x87F7 # +0xF2E0 0x8809 # +0xF2E1 0x880C # +0xF2E2 0x880B # +0xF2E3 0x8806 # +0xF2E4 0x87FC # +0xF2E5 0x8808 # +0xF2E6 0x87FF # +0xF2E7 0x880A # +0xF2E8 0x8802 # +0xF2E9 0x8962 # +0xF2EA 0x895A # +0xF2EB 0x895B # +0xF2EC 0x8957 # +0xF2ED 0x8961 # +0xF2EE 0x895C # +0xF2EF 0x8958 # +0xF2F0 0x895D # +0xF2F1 0x8959 # +0xF2F2 0x8988 # +0xF2F3 0x89B7 # +0xF2F4 0x89B6 # +0xF2F5 0x89F6 # +0xF2F6 0x8B50 # +0xF2F7 0x8B48 # +0xF2F8 0x8B4A # +0xF2F9 0x8B40 # +0xF2FA 0x8B53 # +0xF2FB 0x8B56 # +0xF2FC 0x8B54 # +0xF2FD 0x8B4B # +0xF2FE 0x8B55 # +0xF340 0x8B51 # +0xF341 0x8B42 # +0xF342 0x8B52 # +0xF343 0x8B57 # +0xF344 0x8C43 # +0xF345 0x8C77 # +0xF346 0x8C76 # +0xF347 0x8C9A # +0xF348 0x8D06 # +0xF349 0x8D07 # +0xF34A 0x8D09 # +0xF34B 0x8DAC # +0xF34C 0x8DAA # +0xF34D 0x8DAD # +0xF34E 0x8DAB # +0xF34F 0x8E6D # +0xF350 0x8E78 # +0xF351 0x8E73 # +0xF352 0x8E6A # +0xF353 0x8E6F # +0xF354 0x8E7B # +0xF355 0x8EC2 # +0xF356 0x8F52 # +0xF357 0x8F51 # +0xF358 0x8F4F # +0xF359 0x8F50 # +0xF35A 0x8F53 # +0xF35B 0x8FB4 # +0xF35C 0x9140 # +0xF35D 0x913F # +0xF35E 0x91B0 # +0xF35F 0x91AD # +0xF360 0x93DE # +0xF361 0x93C7 # +0xF362 0x93CF # +0xF363 0x93C2 # +0xF364 0x93DA # +0xF365 0x93D0 # +0xF366 0x93F9 # +0xF367 0x93EC # +0xF368 0x93CC # +0xF369 0x93D9 # +0xF36A 0x93A9 # +0xF36B 0x93E6 # +0xF36C 0x93CA # +0xF36D 0x93D4 # +0xF36E 0x93EE # +0xF36F 0x93E3 # +0xF370 0x93D5 # +0xF371 0x93C4 # +0xF372 0x93CE # +0xF373 0x93C0 # +0xF374 0x93D2 # +0xF375 0x93E7 # +0xF376 0x957D # +0xF377 0x95DA # +0xF378 0x95DB # +0xF379 0x96E1 # +0xF37A 0x9729 # +0xF37B 0x972B # +0xF37C 0x972C # +0xF37D 0x9728 # +0xF37E 0x9726 # +0xF3A1 0x97B3 # +0xF3A2 0x97B7 # +0xF3A3 0x97B6 # +0xF3A4 0x97DD # +0xF3A5 0x97DE # +0xF3A6 0x97DF # +0xF3A7 0x985C # +0xF3A8 0x9859 # +0xF3A9 0x985D # +0xF3AA 0x9857 # +0xF3AB 0x98BF # +0xF3AC 0x98BD # +0xF3AD 0x98BB # +0xF3AE 0x98BE # +0xF3AF 0x9948 # +0xF3B0 0x9947 # +0xF3B1 0x9943 # +0xF3B2 0x99A6 # +0xF3B3 0x99A7 # +0xF3B4 0x9A1A # +0xF3B5 0x9A15 # +0xF3B6 0x9A25 # +0xF3B7 0x9A1D # +0xF3B8 0x9A24 # +0xF3B9 0x9A1B # +0xF3BA 0x9A22 # +0xF3BB 0x9A20 # +0xF3BC 0x9A27 # +0xF3BD 0x9A23 # +0xF3BE 0x9A1E # +0xF3BF 0x9A1C # +0xF3C0 0x9A14 # +0xF3C1 0x9AC2 # +0xF3C2 0x9B0B # +0xF3C3 0x9B0A # +0xF3C4 0x9B0E # +0xF3C5 0x9B0C # +0xF3C6 0x9B37 # +0xF3C7 0x9BEA # +0xF3C8 0x9BEB # +0xF3C9 0x9BE0 # +0xF3CA 0x9BDE # +0xF3CB 0x9BE4 # +0xF3CC 0x9BE6 # +0xF3CD 0x9BE2 # +0xF3CE 0x9BF0 # +0xF3CF 0x9BD4 # +0xF3D0 0x9BD7 # +0xF3D1 0x9BEC # +0xF3D2 0x9BDC # +0xF3D3 0x9BD9 # +0xF3D4 0x9BE5 # +0xF3D5 0x9BD5 # +0xF3D6 0x9BE1 # +0xF3D7 0x9BDA # +0xF3D8 0x9D77 # +0xF3D9 0x9D81 # +0xF3DA 0x9D8A # +0xF3DB 0x9D84 # +0xF3DC 0x9D88 # +0xF3DD 0x9D71 # +0xF3DE 0x9D80 # +0xF3DF 0x9D78 # +0xF3E0 0x9D86 # +0xF3E1 0x9D8B # +0xF3E2 0x9D8C # +0xF3E3 0x9D7D # +0xF3E4 0x9D6B # +0xF3E5 0x9D74 # +0xF3E6 0x9D75 # +0xF3E7 0x9D70 # +0xF3E8 0x9D69 # +0xF3E9 0x9D85 # +0xF3EA 0x9D73 # +0xF3EB 0x9D7B # +0xF3EC 0x9D82 # +0xF3ED 0x9D6F # +0xF3EE 0x9D79 # +0xF3EF 0x9D7F # +0xF3F0 0x9D87 # +0xF3F1 0x9D68 # +0xF3F2 0x9E94 # +0xF3F3 0x9E91 # +0xF3F4 0x9EC0 # +0xF3F5 0x9EFC # +0xF3F6 0x9F2D # +0xF3F7 0x9F40 # +0xF3F8 0x9F41 # +0xF3F9 0x9F4D # +0xF3FA 0x9F56 # +0xF3FB 0x9F57 # +0xF3FC 0x9F58 # +0xF3FD 0x5337 # +0xF3FE 0x56B2 # +0xF440 0x56B5 # +0xF441 0x56B3 # +0xF442 0x58E3 # +0xF443 0x5B45 # +0xF444 0x5DC6 # +0xF445 0x5DC7 # +0xF446 0x5EEE # +0xF447 0x5EEF # +0xF448 0x5FC0 # +0xF449 0x5FC1 # +0xF44A 0x61F9 # +0xF44B 0x6517 # +0xF44C 0x6516 # +0xF44D 0x6515 # +0xF44E 0x6513 # +0xF44F 0x65DF # +0xF450 0x66E8 # +0xF451 0x66E3 # +0xF452 0x66E4 # +0xF453 0x6AF3 # +0xF454 0x6AF0 # +0xF455 0x6AEA # +0xF456 0x6AE8 # +0xF457 0x6AF9 # +0xF458 0x6AF1 # +0xF459 0x6AEE # +0xF45A 0x6AEF # +0xF45B 0x703C # +0xF45C 0x7035 # +0xF45D 0x702F # +0xF45E 0x7037 # +0xF45F 0x7034 # +0xF460 0x7031 # +0xF461 0x7042 # +0xF462 0x7038 # +0xF463 0x703F # +0xF464 0x703A # +0xF465 0x7039 # +0xF466 0x7040 # +0xF467 0x703B # +0xF468 0x7033 # +0xF469 0x7041 # +0xF46A 0x7213 # +0xF46B 0x7214 # +0xF46C 0x72A8 # +0xF46D 0x737D # +0xF46E 0x737C # +0xF46F 0x74BA # +0xF470 0x76AB # +0xF471 0x76AA # +0xF472 0x76BE # +0xF473 0x76ED # +0xF474 0x77CC # +0xF475 0x77CE # +0xF476 0x77CF # +0xF477 0x77CD # +0xF478 0x77F2 # +0xF479 0x7925 # +0xF47A 0x7923 # +0xF47B 0x7927 # +0xF47C 0x7928 # +0xF47D 0x7924 # +0xF47E 0x7929 # +0xF4A1 0x79B2 # +0xF4A2 0x7A6E # +0xF4A3 0x7A6C # +0xF4A4 0x7A6D # +0xF4A5 0x7AF7 # +0xF4A6 0x7C49 # +0xF4A7 0x7C48 # +0xF4A8 0x7C4A # +0xF4A9 0x7C47 # +0xF4AA 0x7C45 # +0xF4AB 0x7CEE # +0xF4AC 0x7E7B # +0xF4AD 0x7E7E # +0xF4AE 0x7E81 # +0xF4AF 0x7E80 # +0xF4B0 0x7FBA # +0xF4B1 0x7FFF # +0xF4B2 0x8079 # +0xF4B3 0x81DB # +0xF4B4 0x81D9 # +0xF4B5 0x820B # +0xF4B6 0x8268 # +0xF4B7 0x8269 # +0xF4B8 0x8622 # +0xF4B9 0x85FF # +0xF4BA 0x8601 # +0xF4BB 0x85FE # +0xF4BC 0x861B # +0xF4BD 0x8600 # +0xF4BE 0x85F6 # +0xF4BF 0x8604 # +0xF4C0 0x8609 # +0xF4C1 0x8605 # +0xF4C2 0x860C # +0xF4C3 0x85FD # +0xF4C4 0x8819 # +0xF4C5 0x8810 # +0xF4C6 0x8811 # +0xF4C7 0x8817 # +0xF4C8 0x8813 # +0xF4C9 0x8816 # +0xF4CA 0x8963 # +0xF4CB 0x8966 # +0xF4CC 0x89B9 # +0xF4CD 0x89F7 # +0xF4CE 0x8B60 # +0xF4CF 0x8B6A # +0xF4D0 0x8B5D # +0xF4D1 0x8B68 # +0xF4D2 0x8B63 # +0xF4D3 0x8B65 # +0xF4D4 0x8B67 # +0xF4D5 0x8B6D # +0xF4D6 0x8DAE # +0xF4D7 0x8E86 # +0xF4D8 0x8E88 # +0xF4D9 0x8E84 # +0xF4DA 0x8F59 # +0xF4DB 0x8F56 # +0xF4DC 0x8F57 # +0xF4DD 0x8F55 # +0xF4DE 0x8F58 # +0xF4DF 0x8F5A # +0xF4E0 0x908D # +0xF4E1 0x9143 # +0xF4E2 0x9141 # +0xF4E3 0x91B7 # +0xF4E4 0x91B5 # +0xF4E5 0x91B2 # +0xF4E6 0x91B3 # +0xF4E7 0x940B # +0xF4E8 0x9413 # +0xF4E9 0x93FB # +0xF4EA 0x9420 # +0xF4EB 0x940F # +0xF4EC 0x9414 # +0xF4ED 0x93FE # +0xF4EE 0x9415 # +0xF4EF 0x9410 # +0xF4F0 0x9428 # +0xF4F1 0x9419 # +0xF4F2 0x940D # +0xF4F3 0x93F5 # +0xF4F4 0x9400 # +0xF4F5 0x93F7 # +0xF4F6 0x9407 # +0xF4F7 0x940E # +0xF4F8 0x9416 # +0xF4F9 0x9412 # +0xF4FA 0x93FA # +0xF4FB 0x9409 # +0xF4FC 0x93F8 # +0xF4FD 0x940A # +0xF4FE 0x93FF # +0xF540 0x93FC # +0xF541 0x940C # +0xF542 0x93F6 # +0xF543 0x9411 # +0xF544 0x9406 # +0xF545 0x95DE # +0xF546 0x95E0 # +0xF547 0x95DF # +0xF548 0x972E # +0xF549 0x972F # +0xF54A 0x97B9 # +0xF54B 0x97BB # +0xF54C 0x97FD # +0xF54D 0x97FE # +0xF54E 0x9860 # +0xF54F 0x9862 # +0xF550 0x9863 # +0xF551 0x985F # +0xF552 0x98C1 # +0xF553 0x98C2 # +0xF554 0x9950 # +0xF555 0x994E # +0xF556 0x9959 # +0xF557 0x994C # +0xF558 0x994B # +0xF559 0x9953 # +0xF55A 0x9A32 # +0xF55B 0x9A34 # +0xF55C 0x9A31 # +0xF55D 0x9A2C # +0xF55E 0x9A2A # +0xF55F 0x9A36 # +0xF560 0x9A29 # +0xF561 0x9A2E # +0xF562 0x9A38 # +0xF563 0x9A2D # +0xF564 0x9AC7 # +0xF565 0x9ACA # +0xF566 0x9AC6 # +0xF567 0x9B10 # +0xF568 0x9B12 # +0xF569 0x9B11 # +0xF56A 0x9C0B # +0xF56B 0x9C08 # +0xF56C 0x9BF7 # +0xF56D 0x9C05 # +0xF56E 0x9C12 # +0xF56F 0x9BF8 # +0xF570 0x9C40 # +0xF571 0x9C07 # +0xF572 0x9C0E # +0xF573 0x9C06 # +0xF574 0x9C17 # +0xF575 0x9C14 # +0xF576 0x9C09 # +0xF577 0x9D9F # +0xF578 0x9D99 # +0xF579 0x9DA4 # +0xF57A 0x9D9D # +0xF57B 0x9D92 # +0xF57C 0x9D98 # +0xF57D 0x9D90 # +0xF57E 0x9D9B # +0xF5A1 0x9DA0 # +0xF5A2 0x9D94 # +0xF5A3 0x9D9C # +0xF5A4 0x9DAA # +0xF5A5 0x9D97 # +0xF5A6 0x9DA1 # +0xF5A7 0x9D9A # +0xF5A8 0x9DA2 # +0xF5A9 0x9DA8 # +0xF5AA 0x9D9E # +0xF5AB 0x9DA3 # +0xF5AC 0x9DBF # +0xF5AD 0x9DA9 # +0xF5AE 0x9D96 # +0xF5AF 0x9DA6 # +0xF5B0 0x9DA7 # +0xF5B1 0x9E99 # +0xF5B2 0x9E9B # +0xF5B3 0x9E9A # +0xF5B4 0x9EE5 # +0xF5B5 0x9EE4 # +0xF5B6 0x9EE7 # +0xF5B7 0x9EE6 # +0xF5B8 0x9F30 # +0xF5B9 0x9F2E # +0xF5BA 0x9F5B # +0xF5BB 0x9F60 # +0xF5BC 0x9F5E # +0xF5BD 0x9F5D # +0xF5BE 0x9F59 # +0xF5BF 0x9F91 # +0xF5C0 0x513A # +0xF5C1 0x5139 # +0xF5C2 0x5298 # +0xF5C3 0x5297 # +0xF5C4 0x56C3 # +0xF5C5 0x56BD # +0xF5C6 0x56BE # +0xF5C7 0x5B48 # +0xF5C8 0x5B47 # +0xF5C9 0x5DCB # +0xF5CA 0x5DCF # +0xF5CB 0x5EF1 # +0xF5CC 0x61FD # +0xF5CD 0x651B # +0xF5CE 0x6B02 # +0xF5CF 0x6AFC # +0xF5D0 0x6B03 # +0xF5D1 0x6AF8 # +0xF5D2 0x6B00 # +0xF5D3 0x7043 # +0xF5D4 0x7044 # +0xF5D5 0x704A # +0xF5D6 0x7048 # +0xF5D7 0x7049 # +0xF5D8 0x7045 # +0xF5D9 0x7046 # +0xF5DA 0x721D # +0xF5DB 0x721A # +0xF5DC 0x7219 # +0xF5DD 0x737E # +0xF5DE 0x7517 # +0xF5DF 0x766A # +0xF5E0 0x77D0 # +0xF5E1 0x792D # +0xF5E2 0x7931 # +0xF5E3 0x792F # +0xF5E4 0x7C54 # +0xF5E5 0x7C53 # +0xF5E6 0x7CF2 # +0xF5E7 0x7E8A # +0xF5E8 0x7E87 # +0xF5E9 0x7E88 # +0xF5EA 0x7E8B # +0xF5EB 0x7E86 # +0xF5EC 0x7E8D # +0xF5ED 0x7F4D # +0xF5EE 0x7FBB # +0xF5EF 0x8030 # +0xF5F0 0x81DD # +0xF5F1 0x8618 # +0xF5F2 0x862A # +0xF5F3 0x8626 # +0xF5F4 0x861F # +0xF5F5 0x8623 # +0xF5F6 0x861C # +0xF5F7 0x8619 # +0xF5F8 0x8627 # +0xF5F9 0x862E # +0xF5FA 0x8621 # +0xF5FB 0x8620 # +0xF5FC 0x8629 # +0xF5FD 0x861E # +0xF5FE 0x8625 # +0xF640 0x8829 # +0xF641 0x881D # +0xF642 0x881B # +0xF643 0x8820 # +0xF644 0x8824 # +0xF645 0x881C # +0xF646 0x882B # +0xF647 0x884A # +0xF648 0x896D # +0xF649 0x8969 # +0xF64A 0x896E # +0xF64B 0x896B # +0xF64C 0x89FA # +0xF64D 0x8B79 # +0xF64E 0x8B78 # +0xF64F 0x8B45 # +0xF650 0x8B7A # +0xF651 0x8B7B # +0xF652 0x8D10 # +0xF653 0x8D14 # +0xF654 0x8DAF # +0xF655 0x8E8E # +0xF656 0x8E8C # +0xF657 0x8F5E # +0xF658 0x8F5B # +0xF659 0x8F5D # +0xF65A 0x9146 # +0xF65B 0x9144 # +0xF65C 0x9145 # +0xF65D 0x91B9 # +0xF65E 0x943F # +0xF65F 0x943B # +0xF660 0x9436 # +0xF661 0x9429 # +0xF662 0x943D # +0xF663 0x943C # +0xF664 0x9430 # +0xF665 0x9439 # +0xF666 0x942A # +0xF667 0x9437 # +0xF668 0x942C # +0xF669 0x9440 # +0xF66A 0x9431 # +0xF66B 0x95E5 # +0xF66C 0x95E4 # +0xF66D 0x95E3 # +0xF66E 0x9735 # +0xF66F 0x973A # +0xF670 0x97BF # +0xF671 0x97E1 # +0xF672 0x9864 # +0xF673 0x98C9 # +0xF674 0x98C6 # +0xF675 0x98C0 # +0xF676 0x9958 # +0xF677 0x9956 # +0xF678 0x9A39 # +0xF679 0x9A3D # +0xF67A 0x9A46 # +0xF67B 0x9A44 # +0xF67C 0x9A42 # +0xF67D 0x9A41 # +0xF67E 0x9A3A # +0xF6A1 0x9A3F # +0xF6A2 0x9ACD # +0xF6A3 0x9B15 # +0xF6A4 0x9B17 # +0xF6A5 0x9B18 # +0xF6A6 0x9B16 # +0xF6A7 0x9B3A # +0xF6A8 0x9B52 # +0xF6A9 0x9C2B # +0xF6AA 0x9C1D # +0xF6AB 0x9C1C # +0xF6AC 0x9C2C # +0xF6AD 0x9C23 # +0xF6AE 0x9C28 # +0xF6AF 0x9C29 # +0xF6B0 0x9C24 # +0xF6B1 0x9C21 # +0xF6B2 0x9DB7 # +0xF6B3 0x9DB6 # +0xF6B4 0x9DBC # +0xF6B5 0x9DC1 # +0xF6B6 0x9DC7 # +0xF6B7 0x9DCA # +0xF6B8 0x9DCF # +0xF6B9 0x9DBE # +0xF6BA 0x9DC5 # +0xF6BB 0x9DC3 # +0xF6BC 0x9DBB # +0xF6BD 0x9DB5 # +0xF6BE 0x9DCE # +0xF6BF 0x9DB9 # +0xF6C0 0x9DBA # +0xF6C1 0x9DAC # +0xF6C2 0x9DC8 # +0xF6C3 0x9DB1 # +0xF6C4 0x9DAD # +0xF6C5 0x9DCC # +0xF6C6 0x9DB3 # +0xF6C7 0x9DCD # +0xF6C8 0x9DB2 # +0xF6C9 0x9E7A # +0xF6CA 0x9E9C # +0xF6CB 0x9EEB # +0xF6CC 0x9EEE # +0xF6CD 0x9EED # +0xF6CE 0x9F1B # +0xF6CF 0x9F18 # +0xF6D0 0x9F1A # +0xF6D1 0x9F31 # +0xF6D2 0x9F4E # +0xF6D3 0x9F65 # +0xF6D4 0x9F64 # +0xF6D5 0x9F92 # +0xF6D6 0x4EB9 # +0xF6D7 0x56C6 # +0xF6D8 0x56C5 # +0xF6D9 0x56CB # +0xF6DA 0x5971 # +0xF6DB 0x5B4B # +0xF6DC 0x5B4C # +0xF6DD 0x5DD5 # +0xF6DE 0x5DD1 # +0xF6DF 0x5EF2 # +0xF6E0 0x6521 # +0xF6E1 0x6520 # +0xF6E2 0x6526 # +0xF6E3 0x6522 # +0xF6E4 0x6B0B # +0xF6E5 0x6B08 # +0xF6E6 0x6B09 # +0xF6E7 0x6C0D # +0xF6E8 0x7055 # +0xF6E9 0x7056 # +0xF6EA 0x7057 # +0xF6EB 0x7052 # +0xF6EC 0x721E # +0xF6ED 0x721F # +0xF6EE 0x72A9 # +0xF6EF 0x737F # +0xF6F0 0x74D8 # +0xF6F1 0x74D5 # +0xF6F2 0x74D9 # +0xF6F3 0x74D7 # +0xF6F4 0x766D # +0xF6F5 0x76AD # +0xF6F6 0x7935 # +0xF6F7 0x79B4 # +0xF6F8 0x7A70 # +0xF6F9 0x7A71 # +0xF6FA 0x7C57 # +0xF6FB 0x7C5C # +0xF6FC 0x7C59 # +0xF6FD 0x7C5B # +0xF6FE 0x7C5A # +0xF740 0x7CF4 # +0xF741 0x7CF1 # +0xF742 0x7E91 # +0xF743 0x7F4F # +0xF744 0x7F87 # +0xF745 0x81DE # +0xF746 0x826B # +0xF747 0x8634 # +0xF748 0x8635 # +0xF749 0x8633 # +0xF74A 0x862C # +0xF74B 0x8632 # +0xF74C 0x8636 # +0xF74D 0x882C # +0xF74E 0x8828 # +0xF74F 0x8826 # +0xF750 0x882A # +0xF751 0x8825 # +0xF752 0x8971 # +0xF753 0x89BF # +0xF754 0x89BE # +0xF755 0x89FB # +0xF756 0x8B7E # +0xF757 0x8B84 # +0xF758 0x8B82 # +0xF759 0x8B86 # +0xF75A 0x8B85 # +0xF75B 0x8B7F # +0xF75C 0x8D15 # +0xF75D 0x8E95 # +0xF75E 0x8E94 # +0xF75F 0x8E9A # +0xF760 0x8E92 # +0xF761 0x8E90 # +0xF762 0x8E96 # +0xF763 0x8E97 # +0xF764 0x8F60 # +0xF765 0x8F62 # +0xF766 0x9147 # +0xF767 0x944C # +0xF768 0x9450 # +0xF769 0x944A # +0xF76A 0x944B # +0xF76B 0x944F # +0xF76C 0x9447 # +0xF76D 0x9445 # +0xF76E 0x9448 # +0xF76F 0x9449 # +0xF770 0x9446 # +0xF771 0x973F # +0xF772 0x97E3 # +0xF773 0x986A # +0xF774 0x9869 # +0xF775 0x98CB # +0xF776 0x9954 # +0xF777 0x995B # +0xF778 0x9A4E # +0xF779 0x9A53 # +0xF77A 0x9A54 # +0xF77B 0x9A4C # +0xF77C 0x9A4F # +0xF77D 0x9A48 # +0xF77E 0x9A4A # +0xF7A1 0x9A49 # +0xF7A2 0x9A52 # +0xF7A3 0x9A50 # +0xF7A4 0x9AD0 # +0xF7A5 0x9B19 # +0xF7A6 0x9B2B # +0xF7A7 0x9B3B # +0xF7A8 0x9B56 # +0xF7A9 0x9B55 # +0xF7AA 0x9C46 # +0xF7AB 0x9C48 # +0xF7AC 0x9C3F # +0xF7AD 0x9C44 # +0xF7AE 0x9C39 # +0xF7AF 0x9C33 # +0xF7B0 0x9C41 # +0xF7B1 0x9C3C # +0xF7B2 0x9C37 # +0xF7B3 0x9C34 # +0xF7B4 0x9C32 # +0xF7B5 0x9C3D # +0xF7B6 0x9C36 # +0xF7B7 0x9DDB # +0xF7B8 0x9DD2 # +0xF7B9 0x9DDE # +0xF7BA 0x9DDA # +0xF7BB 0x9DCB # +0xF7BC 0x9DD0 # +0xF7BD 0x9DDC # +0xF7BE 0x9DD1 # +0xF7BF 0x9DDF # +0xF7C0 0x9DE9 # +0xF7C1 0x9DD9 # +0xF7C2 0x9DD8 # +0xF7C3 0x9DD6 # +0xF7C4 0x9DF5 # +0xF7C5 0x9DD5 # +0xF7C6 0x9DDD # +0xF7C7 0x9EB6 # +0xF7C8 0x9EF0 # +0xF7C9 0x9F35 # +0xF7CA 0x9F33 # +0xF7CB 0x9F32 # +0xF7CC 0x9F42 # +0xF7CD 0x9F6B # +0xF7CE 0x9F95 # +0xF7CF 0x9FA2 # +0xF7D0 0x513D # +0xF7D1 0x5299 # +0xF7D2 0x58E8 # +0xF7D3 0x58E7 # +0xF7D4 0x5972 # +0xF7D5 0x5B4D # +0xF7D6 0x5DD8 # +0xF7D7 0x882F # +0xF7D8 0x5F4F # +0xF7D9 0x6201 # +0xF7DA 0x6203 # +0xF7DB 0x6204 # +0xF7DC 0x6529 # +0xF7DD 0x6525 # +0xF7DE 0x6596 # +0xF7DF 0x66EB # +0xF7E0 0x6B11 # +0xF7E1 0x6B12 # +0xF7E2 0x6B0F # +0xF7E3 0x6BCA # +0xF7E4 0x705B # +0xF7E5 0x705A # +0xF7E6 0x7222 # +0xF7E7 0x7382 # +0xF7E8 0x7381 # +0xF7E9 0x7383 # +0xF7EA 0x7670 # +0xF7EB 0x77D4 # +0xF7EC 0x7C67 # +0xF7ED 0x7C66 # +0xF7EE 0x7E95 # +0xF7EF 0x826C # +0xF7F0 0x863A # +0xF7F1 0x8640 # +0xF7F2 0x8639 # +0xF7F3 0x863C # +0xF7F4 0x8631 # +0xF7F5 0x863B # +0xF7F6 0x863E # +0xF7F7 0x8830 # +0xF7F8 0x8832 # +0xF7F9 0x882E # +0xF7FA 0x8833 # +0xF7FB 0x8976 # +0xF7FC 0x8974 # +0xF7FD 0x8973 # +0xF7FE 0x89FE # +0xF840 0x8B8C # +0xF841 0x8B8E # +0xF842 0x8B8B # +0xF843 0x8B88 # +0xF844 0x8C45 # +0xF845 0x8D19 # +0xF846 0x8E98 # +0xF847 0x8F64 # +0xF848 0x8F63 # +0xF849 0x91BC # +0xF84A 0x9462 # +0xF84B 0x9455 # +0xF84C 0x945D # +0xF84D 0x9457 # +0xF84E 0x945E # +0xF84F 0x97C4 # +0xF850 0x97C5 # +0xF851 0x9800 # +0xF852 0x9A56 # +0xF853 0x9A59 # +0xF854 0x9B1E # +0xF855 0x9B1F # +0xF856 0x9B20 # +0xF857 0x9C52 # +0xF858 0x9C58 # +0xF859 0x9C50 # +0xF85A 0x9C4A # +0xF85B 0x9C4D # +0xF85C 0x9C4B # +0xF85D 0x9C55 # +0xF85E 0x9C59 # +0xF85F 0x9C4C # +0xF860 0x9C4E # +0xF861 0x9DFB # +0xF862 0x9DF7 # +0xF863 0x9DEF # +0xF864 0x9DE3 # +0xF865 0x9DEB # +0xF866 0x9DF8 # +0xF867 0x9DE4 # +0xF868 0x9DF6 # +0xF869 0x9DE1 # +0xF86A 0x9DEE # +0xF86B 0x9DE6 # +0xF86C 0x9DF2 # +0xF86D 0x9DF0 # +0xF86E 0x9DE2 # +0xF86F 0x9DEC # +0xF870 0x9DF4 # +0xF871 0x9DF3 # +0xF872 0x9DE8 # +0xF873 0x9DED # +0xF874 0x9EC2 # +0xF875 0x9ED0 # +0xF876 0x9EF2 # +0xF877 0x9EF3 # +0xF878 0x9F06 # +0xF879 0x9F1C # +0xF87A 0x9F38 # +0xF87B 0x9F37 # +0xF87C 0x9F36 # +0xF87D 0x9F43 # +0xF87E 0x9F4F # +0xF8A1 0x9F71 # +0xF8A2 0x9F70 # +0xF8A3 0x9F6E # +0xF8A4 0x9F6F # +0xF8A5 0x56D3 # +0xF8A6 0x56CD # +0xF8A7 0x5B4E # +0xF8A8 0x5C6D # +0xF8A9 0x652D # +0xF8AA 0x66ED # +0xF8AB 0x66EE # +0xF8AC 0x6B13 # +0xF8AD 0x705F # +0xF8AE 0x7061 # +0xF8AF 0x705D # +0xF8B0 0x7060 # +0xF8B1 0x7223 # +0xF8B2 0x74DB # +0xF8B3 0x74E5 # +0xF8B4 0x77D5 # +0xF8B5 0x7938 # +0xF8B6 0x79B7 # +0xF8B7 0x79B6 # +0xF8B8 0x7C6A # +0xF8B9 0x7E97 # +0xF8BA 0x7F89 # +0xF8BB 0x826D # +0xF8BC 0x8643 # +0xF8BD 0x8838 # +0xF8BE 0x8837 # +0xF8BF 0x8835 # +0xF8C0 0x884B # +0xF8C1 0x8B94 # +0xF8C2 0x8B95 # +0xF8C3 0x8E9E # +0xF8C4 0x8E9F # +0xF8C5 0x8EA0 # +0xF8C6 0x8E9D # +0xF8C7 0x91BE # +0xF8C8 0x91BD # +0xF8C9 0x91C2 # +0xF8CA 0x946B # +0xF8CB 0x9468 # +0xF8CC 0x9469 # +0xF8CD 0x96E5 # +0xF8CE 0x9746 # +0xF8CF 0x9743 # +0xF8D0 0x9747 # +0xF8D1 0x97C7 # +0xF8D2 0x97E5 # +0xF8D3 0x9A5E # +0xF8D4 0x9AD5 # +0xF8D5 0x9B59 # +0xF8D6 0x9C63 # +0xF8D7 0x9C67 # +0xF8D8 0x9C66 # +0xF8D9 0x9C62 # +0xF8DA 0x9C5E # +0xF8DB 0x9C60 # +0xF8DC 0x9E02 # +0xF8DD 0x9DFE # +0xF8DE 0x9E07 # +0xF8DF 0x9E03 # +0xF8E0 0x9E06 # +0xF8E1 0x9E05 # +0xF8E2 0x9E00 # +0xF8E3 0x9E01 # +0xF8E4 0x9E09 # +0xF8E5 0x9DFF # +0xF8E6 0x9DFD # +0xF8E7 0x9E04 # +0xF8E8 0x9EA0 # +0xF8E9 0x9F1E # +0xF8EA 0x9F46 # +0xF8EB 0x9F74 # +0xF8EC 0x9F75 # +0xF8ED 0x9F76 # +0xF8EE 0x56D4 # +0xF8EF 0x652E # +0xF8F0 0x65B8 # +0xF8F1 0x6B18 # +0xF8F2 0x6B19 # +0xF8F3 0x6B17 # +0xF8F4 0x6B1A # +0xF8F5 0x7062 # +0xF8F6 0x7226 # +0xF8F7 0x72AA # +0xF8F8 0x77D8 # +0xF8F9 0x77D9 # +0xF8FA 0x7939 # +0xF8FB 0x7C69 # +0xF8FC 0x7C6B # +0xF8FD 0x7CF6 # +0xF8FE 0x7E9A # +0xF940 0x7E98 # +0xF941 0x7E9B # +0xF942 0x7E99 # +0xF943 0x81E0 # +0xF944 0x81E1 # +0xF945 0x8646 # +0xF946 0x8647 # +0xF947 0x8648 # +0xF948 0x8979 # +0xF949 0x897A # +0xF94A 0x897C # +0xF94B 0x897B # +0xF94C 0x89FF # +0xF94D 0x8B98 # +0xF94E 0x8B99 # +0xF94F 0x8EA5 # +0xF950 0x8EA4 # +0xF951 0x8EA3 # +0xF952 0x946E # +0xF953 0x946D # +0xF954 0x946F # +0xF955 0x9471 # +0xF956 0x9473 # +0xF957 0x9749 # +0xF958 0x9872 # +0xF959 0x995F # +0xF95A 0x9C68 # +0xF95B 0x9C6E # +0xF95C 0x9C6D # +0xF95D 0x9E0B # +0xF95E 0x9E0D # +0xF95F 0x9E10 # +0xF960 0x9E0F # +0xF961 0x9E12 # +0xF962 0x9E11 # +0xF963 0x9EA1 # +0xF964 0x9EF5 # +0xF965 0x9F09 # +0xF966 0x9F47 # +0xF967 0x9F78 # +0xF968 0x9F7B # +0xF969 0x9F7A # +0xF96A 0x9F79 # +0xF96B 0x571E # +0xF96C 0x7066 # +0xF96D 0x7C6F # +0xF96E 0x883C # +0xF96F 0x8DB2 # +0xF970 0x8EA6 # +0xF971 0x91C3 # +0xF972 0x9474 # +0xF973 0x9478 # +0xF974 0x9476 # +0xF975 0x9475 # +0xF976 0x9A60 # +0xF977 0x9C74 # +0xF978 0x9C73 # +0xF979 0x9C71 # +0xF97A 0x9C75 # +0xF97B 0x9E14 # +0xF97C 0x9E13 # +0xF97D 0x9EF6 # +0xF97E 0x9F0A # +0xF9A1 0x9FA4 # +0xF9A2 0x7068 # +0xF9A3 0x7065 # +0xF9A4 0x7CF7 # +0xF9A5 0x866A # +0xF9A6 0x883E # +0xF9A7 0x883D # +0xF9A8 0x883F # +0xF9A9 0x8B9E # +0xF9AA 0x8C9C # +0xF9AB 0x8EA9 # +0xF9AC 0x8EC9 # +0xF9AD 0x974B # +0xF9AE 0x9873 # +0xF9AF 0x9874 # +0xF9B0 0x98CC # +0xF9B1 0x9961 # +0xF9B2 0x99AB # +0xF9B3 0x9A64 # +0xF9B4 0x9A66 # +0xF9B5 0x9A67 # +0xF9B6 0x9B24 # +0xF9B7 0x9E15 # +0xF9B8 0x9E17 # +0xF9B9 0x9F48 # +0xF9BA 0x6207 # +0xF9BB 0x6B1E # +0xF9BC 0x7227 # +0xF9BD 0x864C # +0xF9BE 0x8EA8 # +0xF9BF 0x9482 # +0xF9C0 0x9480 # +0xF9C1 0x9481 # +0xF9C2 0x9A69 # +0xF9C3 0x9A68 # +0xF9C4 0x9B2E # +0xF9C5 0x9E19 # +0xF9C6 0x7229 # +0xF9C7 0x864B # +0xF9C8 0x8B9F # +0xF9C9 0x9483 # +0xF9CA 0x9C79 # +0xF9CB 0x9EB7 # +0xF9CC 0x7675 # +0xF9CD 0x9A6B # +0xF9CE 0x9C7A # +0xF9CF 0x9E1D # +0xF9D0 0x7069 # +0xF9D1 0x706A # +0xF9D2 0x9EA4 # +0xF9D3 0x9F7E # +0xF9D4 0x9F49 # +0xF9D5 0x9F98 # +# +0xA15A 0xFF3F #SPACING UNDERSCORE +0xA1FE 0x2571 #LT DIAG UP RIGHT TO LOW LEFT +0xA240 0x2572 #LT DIAG UP LEFT TO LOW RIGHTG +0xA2CC 0x5341 #HANGHZOU NUMERAL TEN +0xA2CE 0x5345 #HANGZHOU NUMERAL THIRTY diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/Big5.nr --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/Big5.nr Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,5 @@ +0xA15A 0xFF3F #SPACING UNDERSCORE +0xA1FE 0x2571 #LT DIAG UP RIGHT TO LOW LEFT +0xA240 0x2572 #LT DIAG UP LEFT TO LOW RIGHTG +0xA2CC 0x5341 #HANGHZOU NUMERAL TEN +0xA2CE 0x5345 #HANGZHOU NUMERAL THIRTY diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS2001.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS2001.c2b Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,2187 @@ +# Generated from HKSCS2001.Encoder +# +# "0xc074 0x9f9c" is the only entry commented out because it +# exists in Big.map already, so should not be in c2b mapping +# +# 0xC074 0x9F9C +# +0x8845 0xF308 +0x8847 0xF30A +0x8848 0xF30B +0x884B 0xF30E +0x884C 0xF30F +0x884E 0xF311 +0x8853 0xF316 +0x8940 0xF3A0 +0x8941 0xF3A1 +0x894C 0xF3AC +0x89B2 0xF3F0 +0x89B7 0xF3F5 +0x89BA 0xF3F8 +0x89BB 0xF3F9 +0x89BC 0xF3FA +0x89BE 0xF3FC +0x89BF 0xF3FD +0x89C5 0xF403 +0x89CA 0xF408 +0x89CB 0xF409 +0x89CC 0xF40A +0x89CD 0xF40B +0x89D5 0xF413 +0x89D7 0xF415 +0x89DA 0xF418 +0x89DB 0xF419 +0x89DC 0xF41A +0x89E6 0xF424 +0x89E8 0xF426 +0x89EA 0xF428 +0x89ED 0xF42B +0x89EE 0xF42C +0x89EF 0xF42D +0x89F9 0xF437 +0x89FB 0xF439 +0x89FC 0xF43A +0x89FE 0xF43C +0x8A40 0xF43D +0x8A43 0xF440 +0x8A44 0xF441 +0x8A45 0xF442 +0x8A47 0xF444 +0x8A48 0xF445 +0x8A49 0xF446 +0x8A4B 0xF448 +0x8A4C 0xF449 +0x8A4D 0xF44A +0x8A4E 0xF44B +0x8A50 0xF44D +0x8A51 0xF44E +0x8A52 0xF44F +0x8A53 0xF450 +0x8A54 0xF451 +0x8A55 0xF452 +0x8A57 0xF454 +0x8A58 0xF455 +0x8A59 0xF456 +0x8A5A 0xF457 +0x8A5D 0xF45A +0x8A5E 0xF45B +0x8A5F 0xF45C +0x8A60 0xF45D +0x8A61 0xF45E +0x8A62 0xF45F +0x8A64 0xF461 +0x8A65 0xF462 +0x8A66 0xF463 +0x8A67 0xF464 +0x8A68 0xF465 +0x8A69 0xF466 +0x8A6B 0xF468 +0x8A6C 0xF469 +0x8A6D 0xF46A +0x8A6E 0xF46B +0x8A6F 0xF46C +0x8A70 0xF46D +0x8A71 0xF46E +0x8A72 0xF46F +0x8A76 0xF473 +0x8A77 0xF474 +0x8A7A 0xF477 +0x8A7B 0xF478 +0x8A7C 0xF479 +0x8A7D 0xF47A +0x8A7E 0xF47B +0x8AA1 0xF47C +0x8AA2 0xF47D +0x8AA3 0xF47E +0x8AA5 0xF480 +0x8AA6 0xF481 +0x8AA8 0xF483 +0x8AA9 0xF484 +0x8AAA 0xF485 +0x8AAC 0xF487 +0x8AAD 0xF488 +0x8AAE 0xF489 +0x8AB0 0xF48B +0x8AB2 0xF48D +0x8AB3 0xF48E +0x8AB4 0xF48F +0x8AB5 0xF490 +0x8AB6 0xF491 +0x8AB8 0xF493 +0x8AB9 0xF494 +0x8ABB 0xF496 +0x8ABC 0xF497 +0x8ABD 0xF498 +0x8AC0 0xF49B +0x8AC2 0xF49D +0x8AC3 0xF49E +0x8AC7 0xF4A2 +0x8AC9 0xF4A4 +0x8ACA 0xF4A5 +0x8ACB 0xF4A6 +0x8ACC 0xF4A7 +0x8ACE 0xF4A9 +0x8ACF 0xF4AA +0x8AD0 0xF4AB +0x8AD1 0xF4AC +0x8AD2 0xF4AD +0x8AD3 0xF4AE +0x8AD4 0xF4AF +0x8AD5 0xF4B0 +0x8AD7 0xF4B2 +0x8AD8 0xF4B3 +0x8AD9 0xF4B4 +0x8ADA 0xF4B5 +0x8ADC 0xF4B7 +0x8ADF 0xF4BA +0x8AE0 0xF4BB +0x8AE1 0xF4BC +0x8AE2 0xF4BD +0x8AE3 0xF4BE +0x8AE4 0xF4BF +0x8AE5 0xF4C0 +0x8AE6 0xF4C1 +0x8AE8 0xF4C3 +0x8AE9 0xF4C4 +0x8AEA 0xF4C5 +0x8AEB 0xF4C6 +0x8AEC 0xF4C7 +0x8AED 0xF4C8 +0x8AEE 0xF4C9 +0x8AEF 0xF4CA +0x8AF0 0xF4CB +0x8AF1 0xF4CC +0x8AF2 0xF4CD +0x8AF3 0xF4CE +0x8AF4 0xF4CF +0x8AF6 0xF4D1 +0x8AF7 0xF4D2 +0x8AF8 0xF4D3 +0x8AF9 0xF4D4 +0x8AFA 0xF4D5 +0x8AFB 0xF4D6 +0x8AFC 0xF4D7 +0x8AFE 0xF4D9 +0x8B40 0xF4DA +0x8B41 0xF4DB +0x8B42 0xF4DC +0x8B43 0xF4DD +0x8B44 0xF4DE +0x8B45 0xF4DF +0x8B46 0xF4E0 +0x8B47 0xF4E1 +0x8B48 0xF4E2 +0x8B49 0xF4E3 +0x8B4A 0xF4E4 +0x8B4B 0xF4E5 +0x8B4C 0xF4E6 +0x8B4D 0xF4E7 +0x8B4E 0xF4E8 +0x8B4F 0xF4E9 +0x8B55 0xF4EF +0x8B58 0xF4F2 +0x8B59 0xF4F3 +0x8B5E 0xF4F8 +0x8B60 0xF4FA +0x8B62 0xF4FC +0x8B64 0xF4FE +0x8B65 0xF4FF +0x8B66 0xF500 +0x8B67 0xF501 +0x8B68 0xF502 +0x8B69 0xF503 +0x8B6A 0xF504 +0x8B6B 0xF505 +0x8B6D 0xF507 +0x8B6E 0xF508 +0x8B6F 0xF509 +0x8B70 0xF50A +0x8B71 0xF50B +0x8B72 0xF50C +0x8B73 0xF50D +0x8B74 0xF50E +0x8B75 0xF50F +0x8B76 0xF510 +0x8B77 0xF511 +0x8B79 0xF513 +0x8B7A 0xF514 +0x8B7B 0xF515 +0x8B7C 0xF516 +0x8B7E 0xF518 +0x8BA1 0xF519 +0x8BA2 0xF51A +0x8BA3 0xF51B +0x8BA4 0xF51C +0x8BA5 0xF51D +0x8BA6 0xF51E +0x8BA7 0xF51F +0x8BA8 0xF520 +0x8BA9 0xF521 +0x8BAA 0xF522 +0x8BAB 0xF523 +0x8BAC 0xF524 +0x8BAD 0xF525 +0x8BAE 0xF526 +0x8BB1 0xF529 +0x8BB2 0xF52A +0x8BB5 0xF52D +0x8BB6 0xF52E +0x8BB8 0xF530 +0x8BBB 0xF533 +0x8BBC 0xF534 +0x8BBE 0xF536 +0x8BC2 0xF53A +0x8BC3 0xF53B +0x8BC5 0xF53D +0x8BC8 0xF540 +0x8BCC 0xF544 +0x8BD6 0xF54E +0x8BDB 0xF553 +0x8BDC 0xF554 +0x8BDE 0xF556 +0x8BE1 0xF559 +0x8BE2 0xF55A +0x8BE6 0xF55E +0x8BED 0xF565 +0x8BF3 0xF56B +0x8BF8 0xF907 +0x8BFA 0xF572 +0x8C42 0xF579 +0x8C46 0xF57D +0x8C4A 0xF581 +0x8C4C 0xF583 +0x8C4E 0xF585 +0x8C54 0xF58B +0x8C55 0xF58C +0x8C57 0xF58E +0x8C5C 0xF593 +0x8C5F 0xF596 +0x8C64 0xF59B +0x8C65 0xF59C +0x8C69 0xF5A0 +0x8C6C 0xF5A3 +0x8C79 0xF5B0 +0x8C7D 0xF5B4 +0x8CA1 0xF5B6 +0x8CA4 0xF5B9 +0x8CA8 0xF5BD +0x8CAB 0xF5C0 +0x8CAF 0xF5C4 +0x8CB0 0xF5C5 +0x8CC1 0xF5D6 +0x8CC2 0xF5D7 +0x8CCF 0xF5E4 +0x8CD1 0xF5E6 +0x8CD3 0xF5E8 +0x8CD5 0xF5EA +0x8CD6 0xF5EB +0x8D63 0xF637 +0x8D64 0xF638 +0x8D67 0xF63B +0x8D68 0xF63C +0x8D6D 0xF641 +0x8D6E 0xF642 +0x8D6F 0xF643 +0x8D70 0xF644 +0x8D74 0xF648 +0x8D78 0xF64C +0x8D7D 0xF651 +0x8DA1 0xF653 +0x8DA6 0xF658 +0x8DAB 0xF65D +0x8DAD 0xF65F +0x8DB0 0xF662 +0x8DB2 0xF664 +0x8DB4 0xF666 +0x8DB7 0xF669 +0x8DBA 0xF66C +0x8DBB 0xF66D +0x8DBC 0xF66E +0x8DC3 0xF675 +0x8DC5 0xF677 +0x8DCA 0xF67C +0x8DCC 0xF67E +0x8DD6 0xF688 +0x8DDB 0xF68D +0x8DE2 0xF694 +0x8DEB 0xF69D +0x8DEC 0xF69E +0x8DEF 0xF6A1 +0x8DF0 0xF6A2 +0x8DF3 0xF6A5 +0x8DF5 0xF6A7 +0x8DFB 0xF6AD +0x8DFC 0xF6AE +0x8DFD 0xF6AF +0x8DFE 0xF6B0 +0x8E40 0xE311 +0x8E42 0xE313 +0x8E44 0xE315 +0x8E45 0xE316 +0x8E47 0xE318 +0x8E4A 0xE31B +0x8E4B 0xE31C +0x8E4E 0xE31F +0x8E54 0xE325 +0x8E55 0xE326 +0x8E59 0xE32A +0x8E5B 0xE32C +0x8E5F 0xE330 +0x8E60 0xE331 +0x8E64 0xE335 +0x8E65 0xE336 +0x8E6A 0xE33B +0x8E6B 0xE33C +0x8E6C 0xE33D +0x8E71 0xE342 +0x8E74 0xE345 +0x8E77 0xE348 +0x8EA2 0xE351 +0x8EA3 0xE352 +0x8EA5 0xE354 +0x8EAC 0xE35B +0x8EAD 0xE35C +0x8EAF 0xE35E +0x8EB1 0xE360 +0x8EB3 0xE362 +0x8EB5 0xE364 +0x8EB6 0xE365 +0x8EB9 0xE368 +0x8EC0 0xE36F +0x8EC3 0xE372 +0x8EC5 0xE374 +0x8EC6 0xE375 +0x8EC7 0xE376 +0x8EC8 0xE377 +0x8EC9 0xE378 +0x8ECA 0xE379 +0x8ECC 0xE37B +0x8ED2 0xE381 +0x8ED3 0xE382 +0x8ED7 0xE386 +0x8ED8 0xE387 +0x8ED9 0xE388 +0x8EDA 0xE389 +0x8EDB 0xE38A +0x8EDE 0xE38D +0x8EE2 0xE391 +0x8EE4 0xE393 +0x8EE5 0xE394 +0x8EE7 0xE396 +0x8EE9 0xE398 +0x8EEB 0xE39A +0x8EEC 0xE39B +0x8EED 0xE39C +0x8EEF 0xE39E +0x8EF0 0xE39F +0x8EF1 0xE3A0 +0x8EF3 0xE3A2 +0x8EF6 0xE3A5 +0x8EF7 0xE3A6 +0x8EF8 0xE3A7 +0x8EF9 0xE3A8 +0x8EFA 0xE3A9 +0x8EFD 0xE3AC +0x8EFE 0xE3AD +0x8F43 0xE3B1 +0x8F44 0xE3B2 +0x8F45 0xE3B3 +0x8F46 0xE3B4 +0x8F47 0xE3B5 +0x8F4B 0xE3B9 +0x8F4C 0xE3BA +0x8F4D 0xE3BB +0x8F4E 0xE3BC +0x8F4F 0xE3BD +0x8F50 0xE3BE +0x8F54 0xE3C2 +0x8F55 0xE3C3 +0x8F59 0xE3C7 +0x8F5A 0xE3C8 +0x8F5D 0xE3CB +0x8F5E 0xE3CC +0x8F5F 0xE3CD +0x8F61 0xE3CF +0x8F63 0xE3D1 +0x8F64 0xE3D2 +0x8F67 0xE3D5 +0x8F6A 0xE3D8 +0x8F6B 0xE3D9 +0x8F6C 0xE3DA +0x8F70 0xE3DE +0x8F73 0xE3E1 +0x8F74 0xE3E2 +0x8F75 0xE3E3 +0x8F76 0xE3E4 +0x8F79 0xE3E7 +0x8F7A 0xE3E8 +0x8F7C 0xE3EA +0x8FA1 0xE3ED +0x8FA2 0xE3EE +0x8FA4 0xE3F0 +0x8FA6 0xE3F2 +0x8FA7 0xE3F3 +0x8FA8 0xE3F4 +0x8FA9 0xE3F5 +0x8FAB 0xE3F7 +0x8FAC 0xE3F8 +0x8FAE 0xE3FA +0x8FB1 0xE3FD +0x8FB3 0xE3FF +0x8FBA 0xE406 +0x8FBD 0xE409 +0x8FBE 0xE40A +0x8FBF 0xE40B +0x8FC2 0xE40E +0x8FC8 0xE414 +0x8FCF 0xE41B +0x8FD1 0xE41D +0x8FD2 0xE41E +0x8FD7 0xE423 +0x8FD9 0xE425 +0x8FDA 0xE426 +0x8FDB 0xE427 +0x8FDC 0xE428 +0x8FE0 0xE42C +0x8FE1 0xE42D +0x8FE6 0xE432 +0x8FEA 0xE436 +0x8FEB 0xE437 +0x8FEE 0xE43A +0x8FEF 0xE43B +0x8FF0 0xE43C +0x8FF1 0xE43D +0x8FF2 0xE43E +0x8FF4 0xE440 +0x8FF5 0xE441 +0x8FF8 0xE444 +0x8FFC 0xE448 +0x8FFD 0xE449 +0x9041 0xE44C +0x9042 0xE44D +0x9043 0xE44E +0x9044 0xE44F +0x9045 0xE450 +0x9046 0xE451 +0x904E 0xE459 +0x904F 0xE45A +0x9052 0xE45D +0x9053 0xE45E +0x9055 0xE460 +0x9056 0xE461 +0x9057 0xE462 +0x9058 0xE463 +0x905A 0xE465 +0x905C 0xE467 +0x905D 0xE468 +0x905E 0xE469 +0x905F 0xE46A +0x9060 0xE46B +0x9061 0xE46C +0x9063 0xE46E +0x9064 0xE46F +0x9066 0xE471 +0x9067 0xE472 +0x9069 0xE474 +0x906B 0xE476 +0x906F 0xE47A +0x9073 0xE47E +0x9074 0xE47F +0x9079 0xE484 +0x907B 0xE486 +0x907C 0xE487 +0x907D 0xE488 +0x907E 0xE489 +0x90A1 0xE48A +0x90A4 0xE48D +0x90A5 0xE48E +0x90A8 0xE491 +0x90A9 0xE492 +0x90AA 0xE493 +0x90AC 0xE495 +0x90AD 0xE496 +0x90AE 0xE497 +0x90B7 0xE4A0 +0x90B8 0xE4A1 +0x90B9 0xE4A2 +0x90BA 0xE4A3 +0x90BB 0xE4A4 +0x90BC 0xE4A5 +0x90C0 0xE4A9 +0x90C2 0xE4AB +0x90C6 0xE4AF +0x90C9 0xE4B2 +0x90CA 0xE4B3 +0x90CB 0xE4B4 +0x90CC 0xE4B5 +0x90CD 0xE4B6 +0x90CE 0xE4B7 +0x90CF 0xE4B8 +0x90D0 0xE4B9 +0x90D1 0xE4BA +0x90D5 0xE4BE +0x90D6 0xE4BF +0x90D7 0xE4C0 +0x90D8 0xE4C1 +0x90DD 0xE4C6 +0x90E0 0xE4C9 +0x90E4 0xE4CD +0x90E5 0xE4CE +0x90ED 0xE4D6 +0x90F0 0xE4D9 +0x90F3 0xE4DC +0x90F4 0xE4DD +0x90F5 0xE4DE +0x90FA 0xE4E3 +0x90FB 0xE4E4 +0x90FC 0xE4E5 +0x90FD 0xE4E6 +0x90FE 0xE4E7 +0x9140 0xE4E8 +0x9145 0xE4ED +0x9146 0xE4EE +0x9147 0xE4EF +0x914E 0xE4F6 +0x914F 0xE4F7 +0x9150 0xE4F8 +0x9151 0xE4F9 +0x9157 0xE4FF +0x9158 0xE500 +0x9159 0xE501 +0x915A 0xE502 +0x915D 0xE505 +0x915F 0xE507 +0x9162 0xE50A +0x9165 0xE50D +0x9166 0xE50E +0x9167 0xE50F +0x916A 0xE512 +0x916C 0xE514 +0x916E 0xE516 +0x9172 0xE51A +0x9174 0xE51C +0x9175 0xE51D +0x9176 0xE51E +0x9177 0xE51F +0x9178 0xE520 +0x9179 0xE521 +0x917C 0xE524 +0x91A2 0xE528 +0x91A3 0xE529 +0x91A4 0xE52A +0x91A5 0xE52B +0x91A6 0xE52C +0x91A8 0xE52E +0x91A9 0xE52F +0x91AE 0xE534 +0x91B1 0xE537 +0x91B3 0xE539 +0x91B4 0xE53A +0x91B5 0xE53B +0x91B7 0xE53D +0x91B8 0xE53E +0x91BB 0xE541 +0x91BD 0xE543 +0x91C5 0xE54B +0x91CD 0xE553 +0x91CE 0xE554 +0x91CF 0xE555 +0x91D1 0xE557 +0x91D2 0xE558 +0x91D3 0xE559 +0x91D5 0xE55B +0x91D6 0xE55C +0x91D8 0xE55E +0x91D9 0xE55F +0x91DC 0xE562 +0x91E0 0xE566 +0x91E1 0xE567 +0x91E3 0xE569 +0x91E7 0xE56D +0x91E8 0xE56E +0x91EA 0xE570 +0x91EC 0xE572 +0x91ED 0xE573 +0x91EE 0xE574 +0x91EF 0xE575 +0x91F0 0xE576 +0x91F1 0xE577 +0x91F2 0xE578 +0x91F3 0xE579 +0x91F4 0xE57A +0x91F5 0xE57B +0x91F6 0xE57C +0x91F7 0xE57D +0x91F8 0xE57E +0x91F9 0xE57F +0x91FA 0xE580 +0x91FC 0xE582 +0x91FD 0xE583 +0x91FE 0xE584 +0x9240 0xE585 +0x9241 0xE586 +0x9243 0xE588 +0x9246 0xE58B +0x9247 0xE58C +0x9248 0xE58D +0x9249 0xE58E +0x924A 0xE58F +0x924B 0xE590 +0x924C 0xE591 +0x924D 0xE592 +0x924E 0xE593 +0x924F 0xE594 +0x9251 0xE596 +0x9252 0xE597 +0x9253 0xE598 +0x9255 0xE59A +0x9257 0xE59C +0x9258 0xE59D +0x9259 0xE59E +0x925A 0xE59F +0x925B 0xE5A0 +0x925C 0xE5A1 +0x925F 0xE5A4 +0x9261 0xE5A6 +0x9262 0xE5A7 +0x9263 0xE5A8 +0x9265 0xE5AA +0x9269 0xE5AE +0x926A 0xE5AF +0x926C 0xE5B1 +0x926D 0xE5B2 +0x9270 0xE5B5 +0x9272 0xE5B7 +0x9273 0xE5B8 +0x9274 0xE5B9 +0x9275 0xE5BA +0x9276 0xE5BB +0x9277 0xE5BC +0x9279 0xE5BE +0x927A 0xE5BF +0x927B 0xE5C0 +0x927D 0xE5C2 +0x92A5 0xE5C8 +0x92A6 0xE5C9 +0x92B4 0xE5D7 +0x92B5 0xE5D8 +0x92B6 0xE5D9 +0x92B8 0xE5DB +0x92B9 0xE5DC +0x92BC 0xE5DF +0x92BD 0xE5E0 +0x92BE 0xE5E1 +0x92BF 0xE5E2 +0x92C0 0xE5E3 +0x92C2 0xE5E5 +0x92C3 0xE5E6 +0x92C6 0xE5E9 +0x92C9 0xE5EC +0x92CB 0xE5EE +0x92CC 0xE5EF +0x92CD 0xE5F0 +0x92CE 0xE5F1 +0x92D0 0xE5F3 +0x92D2 0xE5F5 +0x92D7 0xE5FA +0x92D8 0xE5FB +0x92D9 0xE5FC +0x92DB 0xE5FE +0x92DD 0xE600 +0x92DF 0xE602 +0x92E1 0xE604 +0x92E9 0xE60C +0x92EC 0xE60F +0x92ED 0xE610 +0x92EE 0xE611 +0x92EF 0xE612 +0x92F6 0xE619 +0x92F7 0xE61A +0x92F8 0xE61B +0x92F9 0xE61C +0x92FA 0xE61D +0x92FE 0xE621 +0x9341 0xE623 +0x9342 0xE624 +0x9345 0xE627 +0x9347 0xE629 +0x9349 0xE62B +0x934B 0xE62D +0x9350 0xE632 +0x9351 0xE633 +0x9352 0xE634 +0x9355 0xE637 +0x9356 0xE638 +0x9357 0xE639 +0x9358 0xE63A +0x9359 0xE63B +0x935A 0xE63C +0x935B 0xE63D +0x935D 0xE63F +0x935E 0xE640 +0x935F 0xE641 +0x9360 0xE642 +0x9363 0xE645 +0x9364 0xE646 +0x9366 0xE648 +0x9369 0xE64B +0x936C 0xE64E +0x936D 0xE64F +0x936F 0xE651 +0x9370 0xE652 +0x9371 0xE653 +0x9372 0xE654 +0x9373 0xE655 +0x9375 0xE657 +0x9376 0xE658 +0x9377 0xE659 +0x937B 0xE65D +0x937C 0xE65E +0x937D 0xE65F +0x937E 0xE660 +0x93A2 0xE662 +0x93A3 0xE663 +0x93A4 0xE664 +0x93A5 0xE665 +0x93A6 0xE666 +0x93A7 0xE667 +0x93A8 0xE668 +0x93AA 0xE66A +0x93AE 0xE66E +0x93AF 0xE66F +0x93B1 0xE671 +0x93B5 0xE675 +0x93B6 0xE676 +0x93B7 0xE677 +0x93B8 0xE678 +0x93B9 0xE679 +0x93BB 0xE67B +0x93BC 0xE67C +0x93BD 0xE67D +0x93BF 0xE67F +0x93C0 0xE680 +0x93C1 0xE681 +0x93C2 0xE682 +0x93C3 0xE683 +0x93C4 0xE684 +0x93C5 0xE685 +0x93C6 0xE686 +0x93C7 0xE687 +0x93C8 0xE688 +0x93CA 0xE68A +0x93CB 0xE68B +0x93CC 0xE68C +0x93CD 0xE68D +0x93CE 0xE68E +0x93CF 0xE68F +0x93D0 0xE690 +0x93D2 0xE692 +0x93D4 0xE694 +0x93D6 0xE696 +0x93D7 0xE697 +0x93D9 0xE699 +0x93DA 0xE69A +0x93DC 0xE69C +0x93DD 0xE69D +0x93DE 0xE69E +0x93DF 0xE69F +0x93E0 0xE6A0 +0x93E1 0xE6A1 +0x93E2 0xE6A2 +0x93E4 0xE6A4 +0x93E6 0xE6A6 +0x93E9 0xE6A9 +0x93EB 0xE6AB +0x93EC 0xE6AC +0x93ED 0xE6AD +0x93F2 0xE6B2 +0x93F6 0xE6B6 +0x93F9 0xE6B9 +0x93FA 0xE6BA +0x93FD 0xE6BD +0x93FE 0xE6BE +0x9441 0xE6C0 +0x9442 0xE6C1 +0x9446 0xE6C5 +0x9448 0xE6C7 +0x9449 0xE6C8 +0x944B 0xE6CA +0x9452 0xE6D1 +0x9453 0xE6D2 +0x9458 0xE6D7 +0x9459 0xE6D8 +0x945B 0xE6DA +0x945C 0xE6DB +0x945E 0xE6DD +0x945F 0xE6DE +0x9460 0xE6DF +0x9461 0xE6E0 +0x9462 0xE6E1 +0x9463 0xE6E2 +0x9464 0xE6E3 +0x9465 0xE6E4 +0x9466 0xE6E5 +0x9467 0xE6E6 +0x9469 0xE6E8 +0x946E 0xE6ED +0x946F 0xE6EE +0x9470 0xE6EF +0x9472 0xE6F1 +0x9473 0xE6F2 +0x9474 0xE6F3 +0x9475 0xE6F4 +0x9478 0xE6F7 +0x9479 0xE6F8 +0x947B 0xE6FA +0x947C 0xE6FB +0x947D 0xE6FC +0x947E 0xE6FD +0x94A1 0xE6FE +0x94A2 0xE6FF +0x94A3 0xE700 +0x94A4 0xE701 +0x94A5 0xE702 +0x94A9 0xE706 +0x94AA 0xE707 +0x94AC 0xE709 +0x94AD 0xE70A +0x94AF 0xE70C +0x94B3 0xE710 +0x94B4 0xE711 +0x94B5 0xE712 +0x94B6 0xE713 +0x94B9 0xE716 +0x94BA 0xE717 +0x94BB 0xE718 +0x94BC 0xE719 +0x94BD 0xE71A +0x94BE 0xE71B +0x94C0 0xE71D +0x94C7 0xE724 +0x94C8 0xE725 +0x94C9 0xE726 +0x94CE 0xE72B +0x94D1 0xE72E +0x94D2 0xE72F +0x94D3 0xE730 +0x94D6 0xE733 +0x94D7 0xE734 +0x94D8 0xE735 +0x94D9 0xE736 +0x94DA 0xE737 +0x94DB 0xE738 +0x94DD 0xE73A +0x94DE 0xE73B +0x94DF 0xE73C +0x94E0 0xE73D +0x94E3 0xE740 +0x94E4 0xE741 +0x94E5 0xE742 +0x94E7 0xE744 +0x94EA 0xE747 +0x94EC 0xE749 +0x94EF 0xE74C +0x94F0 0xE74D +0x94F1 0xE74E +0x94F2 0xE74F +0x94F4 0xE751 +0x94F5 0xE752 +0x94FE 0xE75B +0x9540 0xE75C +0x9541 0xE75D +0x9543 0xE75F +0x9544 0xE760 +0x9545 0xE761 +0x9546 0xE762 +0x9548 0xE764 +0x9549 0xE765 +0x954B 0xE767 +0x954C 0xE768 +0x954D 0xE769 +0x9550 0xE76C +0x9551 0xE76D +0x9552 0xE76E +0x9554 0xE770 +0x9559 0xE775 +0x955A 0xE776 +0x955B 0xE777 +0x955C 0xE778 +0x955E 0xE77A +0x9560 0xE77C +0x9561 0xE77D +0x9562 0xE77E +0x9564 0xE780 +0x9568 0xE784 +0x956A 0xE786 +0x956D 0xE789 +0x956F 0xE78B +0x9571 0xE78D +0x9573 0xE78F +0x9574 0xE790 +0x9576 0xE792 +0x9578 0xE794 +0x957A 0xE796 +0x957B 0xE797 +0x957D 0xE799 +0x95A8 0xE7A2 +0x95AA 0xE7A4 +0x95AB 0xE7A5 +0x95AC 0xE7A6 +0x95AD 0xE7A7 +0x95AE 0xE7A8 +0x95AF 0xE7A9 +0x95B0 0xE7AA +0x95B2 0xE7AC +0x95B3 0xE7AD +0x95B4 0xE7AE +0x95B7 0xE7B1 +0x95BA 0xE7B4 +0x95BE 0xE7B8 +0x95C2 0xE7BC +0x95C6 0xE7C0 +0x95C7 0xE7C1 +0x95CA 0xE7C4 +0x95CD 0xE7C7 +0x95D0 0xE7CA +0x95D1 0xE7CB +0x95D4 0xE7CE +0x95D6 0xE7D0 +0x95D7 0xE7D1 +0x95DB 0xE7D5 +0x95DE 0xE7D8 +0x95DF 0xE7D9 +0x95E0 0xE7DA +0x95E2 0xE7DC +0x95E3 0xE7DD +0x95EA 0xE7E4 +0x95EC 0xE7E6 +0x95ED 0xE7E7 +0x95EE 0xE7E8 +0x95EF 0xE7E9 +0x95F0 0xE7EA +0x95F1 0xE7EB +0x95F3 0xE7ED +0x95F4 0xE7EE +0x95F5 0xE7EF +0x95F6 0xE7F0 +0x95F7 0xE7F1 +0x95F8 0xE7F2 +0x95F9 0xE7F3 +0x95FC 0xE7F6 +0x95FE 0xE7F8 +0x9641 0xE7FA +0x9642 0xE7FB +0x9643 0xE7FC +0x9646 0xE7FF +0x9647 0xE800 +0x9648 0xE801 +0x9649 0xE802 +0x964D 0xE806 +0x964F 0xE808 +0x9653 0xE80C +0x9655 0xE80E +0x9656 0xE80F +0x9658 0xE811 +0x965A 0xE813 +0x965C 0xE815 +0x965D 0xE816 +0x965E 0xE817 +0x965F 0xE818 +0x9661 0xE81A +0x9662 0xE81B +0x9664 0xE81D +0x9668 0xE821 +0x9669 0xE822 +0x966B 0xE824 +0x966E 0xE827 +0x966F 0xE828 +0x9674 0xE82D +0x9675 0xE82E +0x9676 0xE82F +0x9678 0xE831 +0x9679 0xE832 +0x967C 0xE835 +0x967E 0xE837 +0x96A1 0xE838 +0x96A3 0xE83A +0x96A4 0xE83B +0x96A6 0xE83D +0x96A8 0xE83F +0x96AA 0xE841 +0x96AB 0xE842 +0x96B4 0xE84B +0x96B6 0xE84D +0x96B7 0xE84E +0x96B9 0xE850 +0x96BA 0xE851 +0x96BC 0xE853 +0x96BE 0xE855 +0x96BF 0xE856 +0x96C0 0xE857 +0x96C1 0xE858 +0x96C4 0xE85B +0x96C5 0xE85C +0x96C6 0xE85D +0x96C8 0xE85F +0x96C9 0xE860 +0x96CA 0xE861 +0x96CB 0xE862 +0x96CE 0xE865 +0x96CF 0xE866 +0x96D0 0xE867 +0x96D2 0xE869 +0x96D3 0xE86A +0x96D4 0xE86B +0x96D5 0xE86C +0x96D6 0xE86D +0x96DA 0xE871 +0x96DF 0xE876 +0x96E1 0xE878 +0x96E6 0xE87D +0x96E7 0xE87E +0x96E8 0xE87F +0x96E9 0xE880 +0x96F0 0xE887 +0x96F7 0xE88E +0x96F8 0xE88F +0x96FA 0xE891 +0x96FB 0xE892 +0x96FD 0xE894 +0x96FE 0xE895 +0x9743 0xE899 +0x9744 0xE89A +0x9745 0xE89B +0x9746 0xE89C +0x9747 0xE89D +0x974A 0xE8A0 +0x974B 0xE8A1 +0x974D 0xE8A3 +0x974E 0xE8A4 +0x974F 0xE8A5 +0x9750 0xE8A6 +0x9751 0xE8A7 +0x9753 0xE8A9 +0x9754 0xE8AA +0x9756 0xE8AC +0x9757 0xE8AD +0x9758 0xE8AE +0x9759 0xE8AF +0x975A 0xE8B0 +0x975D 0xE8B3 +0x975F 0xE8B5 +0x9760 0xE8B6 +0x9761 0xE8B7 +0x9762 0xE8B8 +0x9766 0xE8BC +0x9767 0xE8BD +0x9768 0xE8BE +0x9769 0xE8BF +0x976A 0xE8C0 +0x976B 0xE8C1 +0x976C 0xE8C2 +0x976D 0xE8C3 +0x976F 0xE8C5 +0x9771 0xE8C7 +0x9775 0xE8CB +0x9777 0xE8CD +0x9778 0xE8CE +0x977A 0xE8D0 +0x977B 0xE8D1 +0x977C 0xE8D2 +0x977D 0xE8D3 +0x97A1 0xE8D5 +0x97A2 0xE8D6 +0x97A4 0xE8D8 +0x97A5 0xE8D9 +0x97A6 0xE8DA +0x97A9 0xE8DD +0x97AB 0xE8DF +0x97AC 0xE8E0 +0x97AD 0xE8E1 +0x97AE 0xE8E2 +0x97B0 0xE8E4 +0x97B1 0xE8E5 +0x97B2 0xE8E6 +0x97B4 0xE8E8 +0x97B5 0xE8E9 +0x97B6 0xE8EA +0x97B8 0xE8EC +0x97B9 0xE8ED +0x97BA 0xE8EE +0x97BD 0xE8F1 +0x97BE 0xE8F2 +0x97C0 0xE8F4 +0x97C1 0xE8F5 +0x97C2 0xE8F6 +0x97C3 0xE8F7 +0x97C5 0xE8F9 +0x97C6 0xE8FA +0x97C7 0xE8FB +0x97C9 0xE8FD +0x97CA 0xE8FE +0x97CC 0xE900 +0x97CD 0xE901 +0x97CF 0xE903 +0x97D2 0xE906 +0x97D3 0xE907 +0x97D4 0xE908 +0x97D7 0xE90B +0x97D8 0xE90C +0x97DA 0xE90E +0x97DB 0xE90F +0x97DC 0xE910 +0x97DD 0xE911 +0x97DE 0xE912 +0x97E1 0xE915 +0x97E3 0xE917 +0x97E4 0xE918 +0x97E7 0xE91B +0x97E8 0xE91C +0x97EA 0xE91E +0x97EB 0xE91F +0x97EC 0xE920 +0x97ED 0xE921 +0x97EE 0xE922 +0x97F1 0xE925 +0x97F2 0xE926 +0x97F3 0xE927 +0x97F4 0xE928 +0x97F5 0xE929 +0x97F6 0xE92A +0x97F7 0xE92B +0x97F8 0xE92C +0x97FA 0xE92E +0x97FB 0xE92F +0x97FD 0xE931 +0x97FE 0xE932 +0x9840 0xE933 +0x9841 0xE934 +0x9842 0xE935 +0x9843 0xE936 +0x9845 0xE938 +0x9847 0xE93A +0x9849 0xE93C +0x984A 0xE93D +0x984B 0xE93E +0x984E 0xE941 +0x9851 0xE944 +0x9852 0xE945 +0x9853 0xE946 +0x9855 0xE948 +0x9856 0xE949 +0x985A 0xE94D +0x985D 0xE950 +0x985F 0xE952 +0x9860 0xE953 +0x9861 0xE954 +0x9862 0xE955 +0x9864 0xE957 +0x9865 0xE958 +0x9867 0xE95A +0x9869 0xE95C +0x986A 0xE95D +0x986B 0xE95E +0x986D 0xE960 +0x986E 0xE961 +0x9871 0xE964 +0x9872 0xE965 +0x9874 0xE967 +0x9875 0xE968 +0x9879 0xE96C +0x987B 0xE96E +0x987C 0xE96F +0x98A2 0xE973 +0x98A3 0xE974 +0x98A4 0xE975 +0x98A6 0xE977 +0x98A7 0xE978 +0x98A8 0xE979 +0x98A9 0xE97A +0x98AA 0xE97B +0x98AC 0xE97D +0x98B0 0xE981 +0x98B1 0xE982 +0x98B6 0xE987 +0x98B9 0xE98A +0x98BC 0xE98D +0x98BD 0xE98E +0x98C0 0xE991 +0x98C3 0xE994 +0x98C5 0xE996 +0x98CB 0xE99C +0x98CC 0xE99D +0x98CD 0xE99E +0x98CE 0xE99F +0x98D0 0xE9A1 +0x98D1 0xE9A2 +0x98D6 0xE9A7 +0x98D9 0xE9AA +0x98DB 0xE9AC +0x98DD 0xE9AE +0x98DF 0xE9B0 +0x98E4 0xE9B5 +0x98E6 0xE9B7 +0x98E8 0xE9B9 +0x98E9 0xE9BA +0x98EB 0xE9BC +0x98EC 0xE9BD +0x98F4 0xE9C5 +0x98FA 0xE9CB +0x98FE 0xE9CF +0x9940 0xE9D0 +0x9946 0xE9D6 +0x9948 0xE9D8 +0x994B 0xE9DB +0x994E 0xE9DE +0x9955 0xE9E5 +0x9956 0xE9E6 +0x9959 0xE9E9 +0x995B 0xE9EB +0x995F 0xE9EF +0x9967 0xE9F7 +0x996E 0xE9FE +0x9973 0xEA03 +0x997A 0xEA0A +0x997B 0xEA0B +0x99A1 0xEA0F +0x99A5 0xEA13 +0x99A7 0xEA15 +0x99AD 0xEA1B +0x99B3 0xEA21 +0x99BC 0xEA2A +0x99C3 0xEA31 +0x99C7 0xEA35 +0x99CE 0xEA3C +0x99CF 0xEA3D +0x99D5 0xEA43 +0x99DE 0xEA4C +0x99E1 0xEA4F +0x99E9 0xEA57 +0x99F5 0xEA63 +0x99F8 0xEA66 +0x9A48 0xEA75 +0x9A49 0xEA76 +0x9A50 0xEA7D +0x9A55 0xEA82 +0x9A58 0xEA85 +0x9A5A 0xEA87 +0x9A5C 0xEA89 +0x9A60 0xEA8D +0x9A63 0xEA90 +0x9A6E 0xEA9B +0x9A70 0xEA9D +0x9A79 0xEAA6 +0x9A7B 0xEAA8 +0x9A7C 0xEAA9 +0x9AB4 0xEABF +0x9AB5 0xEAC0 +0x9AB6 0xEAC1 +0x9ABA 0xEAC5 +0x9ABD 0xEAC8 +0x9ABE 0xEAC9 +0x9ABF 0xEACA +0x9AC0 0xEACB +0x9AC1 0xEACC +0x9AC4 0xEACF +0x9AC5 0xEAD0 +0x9AC6 0xEAD1 +0x9AC8 0xEAD3 +0x9AC9 0xEAD4 +0x9ACB 0xEAD6 +0x9ACC 0xEAD7 +0x9ACD 0xEAD8 +0x9ACE 0xEAD9 +0x9ACF 0xEADA +0x9AD1 0xEADC +0x9AD3 0xEADE +0x9AD4 0xEADF +0x9AD5 0xEAE0 +0x9AD6 0xEAE1 +0x9AD7 0xEAE2 +0x9AD8 0xEAE3 +0x9ADC 0xEAE7 +0x9ADD 0xEAE8 +0x9ADE 0xEAE9 +0x9ADF 0xEAEA +0x9AE0 0xEAEB +0x9AE1 0xEAEC +0x9AE3 0xEAEE +0x9AE5 0xEAF0 +0x9AE6 0xEAF1 +0x9AE7 0xEAF2 +0x9AE9 0xEAF4 +0x9AEA 0xEAF5 +0x9AEB 0xEAF6 +0x9AEC 0xEAF7 +0x9AED 0xEAF8 +0x9AEE 0xEAF9 +0x9AEF 0xEAFA +0x9AF0 0xEAFB +0x9AF3 0xEAFE +0x9AF4 0xEAFF +0x9AF5 0xEB00 +0x9AF7 0xEB02 +0x9AF8 0xEB03 +0x9AF9 0xEB04 +0x9AFA 0xEB05 +0x9AFD 0xEB08 +0x9AFE 0xEB09 +0x9B40 0xEB0A +0x9B41 0xEB0B +0x9B42 0xEB0C +0x9B43 0xEB0D +0x9B44 0xEB0E +0x9B45 0xEB0F +0x9B47 0xEB11 +0x9B48 0xEB12 +0x9B4B 0xEB15 +0x9B4D 0xEB17 +0x9B4E 0xEB18 +0x9B4F 0xEB19 +0x9B50 0xEB1A +0x9B51 0xEB1B +0x9B52 0xEB1C +0x9B53 0xEB1D +0x9B55 0xEB1F +0x9B56 0xEB20 +0x9B57 0xEB21 +0x9B59 0xEB23 +0x9B5B 0xEB25 +0x9B5D 0xEB27 +0x9B60 0xEB2A +0x9B62 0xEB2C +0x9B63 0xEB2D +0x9B64 0xEB2E +0x9B65 0xEB2F +0x9B66 0xEB30 +0x9B67 0xEB31 +0x9B68 0xEB32 +0x9B69 0xEB33 +0x9B6A 0xEB34 +0x9B6B 0xEB35 +0x9B6C 0xEB36 +0x9B6D 0xEB37 +0x9B6E 0xEB38 +0x9B6F 0xEB39 +0x9B73 0xEB3D +0x9B74 0xEB3E +0x9B75 0xEB3F +0x9B77 0xEB41 +0x9B79 0xEB43 +0x9B7A 0xEB44 +0x9B7C 0xEB46 +0x9BA2 0xEB4A +0x9BA3 0xEB4B +0x9BA4 0xEB4C +0x9BA5 0xEB4D +0x9BA6 0xEB4E +0x9BA7 0xEB4F +0x9BA8 0xEB50 +0x9BA9 0xEB51 +0x9BAA 0xEB52 +0x9BAB 0xEB53 +0x9BAC 0xEB54 +0x9BAD 0xEB55 +0x9BAE 0xEB56 +0x9BAF 0xEB57 +0x9BB0 0xEB58 +0x9BB1 0xEB59 +0x9BB2 0xEB5A +0x9BB3 0xEB5B +0x9BB5 0xEB5D +0x9BB7 0xEB5F +0x9BB8 0xEB60 +0x9BB9 0xEB61 +0x9BBA 0xEB62 +0x9BBB 0xEB63 +0x9BBD 0xEB65 +0x9BBE 0xEB66 +0x9BBF 0xEB67 +0x9BC0 0xEB68 +0x9BC1 0xEB69 +0x9BC2 0xEB6A +0x9BC3 0xEB6B +0x9BC5 0xEB6D +0x9BC7 0xEB6F +0x9BC8 0xEB70 +0x9BC9 0xEB71 +0x9BCB 0xEB73 +0x9BCC 0xEB74 +0x9BCE 0xEB76 +0x9BCF 0xEB77 +0x9BD0 0xEB78 +0x9BD2 0xEB7A +0x9BD6 0xEB7E +0x9BD7 0xEB7F +0x9BD8 0xEB80 +0x9BD9 0xEB81 +0x9BDB 0xEB83 +0x9BDC 0xEB84 +0x9BDD 0xEB85 +0x9BDF 0xEB87 +0x9BE0 0xEB88 +0x9BE1 0xEB89 +0x9BE2 0xEB8A +0x9BE3 0xEB8B +0x9BE4 0xEB8C +0x9BE5 0xEB8D +0x9BE6 0xEB8E +0x9BE7 0xEB8F +0x9BE8 0xEB90 +0x9BEA 0xEB92 +0x9BEB 0xEB93 +0x9BED 0xEB95 +0x9BEE 0xEB96 +0x9BEF 0xEB97 +0x9BF0 0xEB98 +0x9BF1 0xEB99 +0x9BF2 0xEB9A +0x9BF3 0xEB9B +0x9BF7 0xEB9F +0x9BF8 0xEBA0 +0x9BFA 0xEBA2 +0x9BFB 0xEBA3 +0x9BFD 0xEBA5 +0x9BFE 0xEBA6 +0x9C41 0xEBA8 +0x9C43 0xEBAA +0x9C44 0xEBAB +0x9C46 0xEBAD +0x9C47 0xEBAE +0x9C48 0xEBAF +0x9C49 0xEBB0 +0x9C4A 0xEBB1 +0x9C4B 0xEBB2 +0x9C4C 0xEBB3 +0x9C4D 0xEBB4 +0x9C4F 0xEBB6 +0x9C52 0xEBB9 +0x9C55 0xEBBC +0x9C56 0xEBBD +0x9C58 0xEBBF +0x9C5B 0xEBC2 +0x9C5C 0xEBC3 +0x9C5E 0xEBC5 +0x9C5F 0xEBC6 +0x9C60 0xEBC7 +0x9C61 0xEBC8 +0x9C63 0xEBCA +0x9C65 0xEBCC +0x9C66 0xEBCD +0x9C67 0xEBCE +0x9C69 0xEBD0 +0x9C6C 0xEBD3 +0x9C6E 0xEBD5 +0x9C6F 0xEBD6 +0x9C70 0xEBD7 +0x9C71 0xEBD8 +0x9C73 0xEBDA +0x9C74 0xEBDB +0x9C76 0xEBDD +0x9C78 0xEBDF +0x9C79 0xEBE0 +0x9C7A 0xEBE1 +0x9C7D 0xEBE4 +0x9CA1 0xEBE6 +0x9CA2 0xEBE7 +0x9CA3 0xEBE8 +0x9CA4 0xEBE9 +0x9CA5 0xEBEA +0x9CA6 0xEBEB +0x9CA7 0xEBEC +0x9CA9 0xEBEE +0x9CAA 0xEBEF +0x9CAC 0xEBF1 +0x9CAD 0xEBF2 +0x9CB0 0xEBF5 +0x9CB1 0xEBF6 +0x9CB4 0xEBF9 +0x9CB5 0xEBFA +0x9CB6 0xEBFB +0x9CB8 0xEBFD +0x9CB9 0xEBFE +0x9CBA 0xEBFF +0x9CBB 0xEC00 +0x9CBE 0xEC03 +0x9CC0 0xEC05 +0x9CC1 0xEC06 +0x9CC3 0xEC08 +0x9CC4 0xEC09 +0x9CC6 0xEC0B +0x9CC7 0xEC0C +0x9CC8 0xEC0D +0x9CC9 0xEC0E +0x9CCA 0xEC0F +0x9CCB 0xEC10 +0x9CCE 0xEC13 +0x9CCF 0xEC14 +0x9CD1 0xEC16 +0x9CD2 0xEC17 +0x9CD3 0xEC18 +0x9CD4 0xEC19 +0x9CD5 0xEC1A +0x9CD6 0xEC1B +0x9CD7 0xEC1C +0x9CD8 0xEC1D +0x9CDB 0xEC20 +0x9CDD 0xEC22 +0x9CDF 0xEC24 +0x9CE1 0xEC26 +0x9CE5 0xEC2A +0x9CE6 0xEC2B +0x9CE7 0xEC2C +0x9CE8 0xEC2D +0x9CE9 0xEC2E +0x9CEA 0xEC2F +0x9CEC 0xEC31 +0x9CED 0xEC32 +0x9CF0 0xEC35 +0x9CF2 0xEC37 +0x9CF6 0xEC3B +0x9CF7 0xEC3C +0x9CF8 0xEC3D +0x9CFA 0xEC3F +0x9CFB 0xEC40 +0x9CFC 0xEC41 +0x9CFD 0xEC42 +0x9CFE 0xEC43 +0x9D40 0xEC44 +0x9D41 0xEC45 +0x9D42 0xEC46 +0x9D43 0xEC47 +0x9D44 0xEC48 +0x9D45 0xEC49 +0x9D46 0xEC4A +0x9D47 0xEC4B +0x9D48 0xEC4C +0x9D49 0xEC4D +0x9D4B 0xEC4F +0x9D4E 0xEC52 +0x9D4F 0xEC53 +0x9D50 0xEC54 +0x9D51 0xEC55 +0x9D52 0xEC56 +0x9D53 0xEC57 +0x9D54 0xEC58 +0x9D56 0xEC5A +0x9D58 0xEC5C +0x9D59 0xEC5D +0x9D5B 0xEC5F +0x9D5C 0xEC60 +0x9D5D 0xEC61 +0x9D5E 0xEC62 +0x9D5F 0xEC63 +0x9D63 0xEC67 +0x9D64 0xEC68 +0x9D65 0xEC69 +0x9D66 0xEC6A +0x9D67 0xEC6B +0x9D68 0xEC6C +0x9D69 0xEC6D +0x9D6A 0xEC6E +0x9D6B 0xEC6F +0x9D6C 0xEC70 +0x9D6D 0xEC71 +0x9D6E 0xEC72 +0x9D6F 0xEC73 +0x9D71 0xEC75 +0x9D72 0xEC76 +0x9D73 0xEC77 +0x9D75 0xEC79 +0x9D77 0xEC7B +0x9D78 0xEC7C +0x9D7A 0xEC7E +0x9D7B 0xEC7F +0x9D7C 0xEC80 +0x9DA2 0xEC84 +0x9DA4 0xEC86 +0x9DA5 0xEC87 +0x9DAA 0xEC8C +0x9DAB 0xEC8D +0x9DAC 0xEC8E +0x9DAD 0xEC8F +0x9DAF 0xEC91 +0x9DB0 0xEC92 +0x9DB1 0xEC93 +0x9DB2 0xEC94 +0x9DB3 0xEC95 +0x9DB4 0xEC96 +0x9DB5 0xEC97 +0x9DB6 0xEC98 +0x9DB7 0xEC99 +0x9DB8 0xEC9A +0x9DB9 0xEC9B +0x9DBB 0xEC9D +0x9DBC 0xEC9E +0x9DBE 0xECA0 +0x9DC1 0xECA3 +0x9DC2 0xECA4 +0x9DC5 0xECA7 +0x9DC6 0xECA8 +0x9DC9 0xECAB +0x9DCB 0xECAD +0x9DCC 0xECAE +0x9DCD 0xECAF +0x9DCE 0xECB0 +0x9DD2 0xECB4 +0x9DD4 0xECB6 +0x9DD7 0xECB9 +0x9DD8 0xECBA +0x9DD9 0xECBB +0x9DED 0xECCF +0x9DEE 0xECD0 +0x9DF2 0xECD4 +0x9DF3 0xECD5 +0x9DF9 0xECDB +0x9DFA 0xECDC +0x9DFC 0xECDE +0x9DFD 0xECDF +0x9DFE 0xECE0 +0x9E40 0xECE1 +0x9E44 0xECE5 +0x9E4F 0xECF0 +0x9E51 0xECF2 +0x9E53 0xECF4 +0x9E54 0xECF5 +0x9E5B 0xECFC +0x9E63 0xED04 +0x9E64 0xED05 +0x9E66 0xED07 +0x9E69 0xED0A +0x9E6B 0xED0C +0x9E6C 0xED0D +0x9E6D 0xED0E +0x9E6E 0xED0F +0x9E6F 0xED10 +0x9E70 0xED11 +0x9E72 0xED13 +0x9E74 0xED15 +0x9E75 0xED16 +0x9E76 0xED17 +0x9E77 0xED18 +0x9E79 0xED1A +0x9E7A 0xED1B +0x9E7B 0xED1C +0x9E7C 0xED1D +0x9E7D 0xED1E +0x9E7E 0xED1F +0x9EA3 0xED22 +0x9EA4 0xED23 +0x9EA5 0xED24 +0x9EA6 0xED25 +0x9EA7 0xED26 +0x9EA8 0xED27 +0x9EAA 0xED29 +0x9EAB 0xED2A +0x9EAD 0xED2C +0x9EAE 0xED2D +0x9EB4 0xED33 +0x9EB8 0xED37 +0x9EB9 0xED38 +0x9EBB 0xED3A +0x9EBC 0xED3B +0x9EBE 0xED3D +0x9EC2 0xED41 +0x9EC3 0xED42 +0x9EC5 0xED44 +0x9EC6 0xED45 +0x9EC8 0xED47 +0x9EC9 0xED48 +0x9ECB 0xED4A +0x9ECC 0xED4B +0x9ECD 0xED4C +0x9ECE 0xED4D +0x9ECF 0xED4E +0x9ED0 0xED4F +0x9ED2 0xED51 +0x9ED3 0xED52 +0x9ED4 0xED53 +0x9ED5 0xED54 +0x9ED8 0xED57 +0x9ED9 0xED58 +0x9EDA 0xED59 +0x9EDD 0xED5C +0x9EDE 0xED5D +0x9EDF 0xED5E +0x9EE0 0xED5F +0x9EE3 0xED62 +0x9EE5 0xED64 +0x9EE7 0xED66 +0x9EEC 0xED6B +0x9EEE 0xED6D +0x9EF0 0xED6F +0x9EF2 0xED71 +0x9EF3 0xED72 +0x9EF6 0xED75 +0x9EF8 0xED77 +0x9EF9 0xED78 +0x9EFB 0xED7A +0x9EFC 0xED7B +0x9F43 0xED81 +0x9F46 0xED84 +0x9F47 0xED85 +0x9F48 0xED86 +0x9F4A 0xED88 +0x9F4B 0xED89 +0x9F4C 0xED8A +0x9F4D 0xED8B +0x9F50 0xED8E +0x9F53 0xED91 +0x9F68 0xEDA6 +0x9F70 0xEDAE +0x9FA5 0xEDC1 +0x9FAA 0xEDC6 +0x9FB3 0xEDCF +0x9FB5 0xEDD1 +0x9FBB 0xEDD7 +0x9FBE 0xEDDA +0x9FBF 0xEDDB +0x9FC1 0xEDDD +0x9FC5 0xEDE1 +0x9FD1 0xEDED +0x9FD7 0xEDF3 +0x9FD9 0xEDF5 +0x9FEC 0xEE08 +0x9FF5 0xEE11 +0x9FF9 0xEE15 +0xA040 0xEE1B +0xA045 0xEE20 +0xA047 0xEE22 +0xA04F 0xEE2A +0xA053 0xEE2E +0xA055 0xEE30 +0xA056 0xEE31 +0xA059 0xEE34 +0xA068 0xEE43 +0xA06A 0xEE45 +0xA06D 0xEE48 +0xA06F 0xEE4A +0xA078 0xEE53 +0xA07B 0xEE56 +0xA07E 0xEE59 +0xA0A2 0xEE5B +0xA0A4 0xEE5D +0xA0A7 0xEE60 +0xA0AB 0xEE64 +0xA0AC 0xEE65 +0xA0B1 0xEE6A +0xA0BD 0xEE76 +0xA0C3 0xEE7C +0xA0C5 0xEE7E +0xA0D0 0xEE89 +0xA0D8 0xEE91 +0xA0DA 0xEE93 +0xA0DE 0xEE97 +0xA0E3 0xEE9C +0xA0E6 0xEE9F +0xA0E8 0xEEA1 +0xA0E9 0xEEA2 +0xA0EA 0xEEA3 +0xA0EB 0xEEA4 +0xA0EC 0xEEA5 +0xA0ED 0xEEA6 +0xA0EE 0xEEA7 +0xA0EF 0xEEA8 +0xA0F0 0xEEA9 +0xA0F1 0xEEAA +0xA0F3 0xEEAC +0xA0F4 0xEEAD +0xA0F5 0xEEAE +0xA0F6 0xEEAF +0xA0F7 0xEEB0 +0xA0F8 0xEEB1 +0xA0F9 0xEEB2 +0xA0FB 0xEEB4 +0xA0FE 0xEEB7 +0xC6CD 0xF6DD +0xC87A 0xF7E6 +0xC87C 0xF7E8 +0xC8A4 0xF7EE +0xC8D6 0xF920 +0xC8D7 0xF921 +0xC8D8 0xF922 +0xC8D9 0xF923 +0xC8DA 0xF924 +0xC8DB 0xF925 +0xC8DC 0xF926 +0xC8DD 0xF927 +0xC8DE 0xF928 +0xC8DF 0xF929 +0xC8E0 0xF92A +0xC8E1 0xF92B +0xC8E2 0xF92C +0xC8E3 0xF92D +0xC8E4 0xF92E +0xC8E5 0xF92F +0xC8E6 0xF930 +0xC8E7 0xF931 +0xC8E8 0xF932 +0xC8E9 0xF933 +0xC8EA 0xF934 +0xC8EB 0xF935 +0xC8EC 0xF936 +0xC8ED 0xF937 +0xC8EE 0xF938 +0xC8EF 0xF939 +0xC8F0 0xF93A +0xC8F1 0xF93B +0xFA40 0xE000 +0xFA42 0xE002 +0xFA43 0xE003 +0xFA45 0xE005 +0xFA48 0xE008 +0xFA49 0xE009 +0xFA4A 0xE00A +0xFA4C 0xE00C +0xFA4E 0xE00E +0xFA52 0xE012 +0xFA53 0xE013 +0xFA54 0xE014 +0xFA55 0xE015 +0xFA56 0xE016 +0xFA58 0xE018 +0xFA5A 0xE01A +0xFA5B 0xE01B +0xFA5C 0xE01C +0xFA5D 0xE01D +0xFA5E 0xE01E +0xFA60 0xE020 +0xFA62 0xE022 +0xFA63 0xE023 +0xFA65 0xE025 +0xFA68 0xE028 +0xFA6B 0xE02B +0xFA6D 0xE02D +0xFA6E 0xE02E +0xFA70 0xE030 +0xFA72 0xE032 +0xFA73 0xE033 +0xFA74 0xE034 +0xFA75 0xE035 +0xFA76 0xE036 +0xFA77 0xE037 +0xFA78 0xE038 +0xFA7B 0xE03B +0xFA7C 0xE03C +0xFAA5 0xE043 +0xFAA7 0xE045 +0xFAAE 0xE04C +0xFABC 0xE05A +0xFABE 0xE05C +0xFAC1 0xE05F +0xFAC2 0xE060 +0xFAC3 0xE061 +0xFAC6 0xE064 +0xFAC8 0xE066 +0xFACC 0xE06A +0xFACD 0xE06B +0xFACE 0xE06C +0xFAD0 0xE06E +0xFAD3 0xE071 +0xFAD6 0xE074 +0xFAD7 0xE075 +0xFADA 0xE078 +0xFADF 0xE07D +0xFAE0 0xE07E +0xFAE8 0xE086 +0xFAE9 0xE087 +0xFAEB 0xE089 +0xFAEC 0xE08A +0xFAEE 0xE08C +0xFAF5 0xE093 +0xFAF6 0xE094 +0xFAFA 0xE098 +0xFAFB 0xE099 +0xFAFC 0xE09A +0xFAFD 0xE09B +0xFAFE 0xE09C +0xFB40 0xE09D +0xFB41 0xE09E +0xFB43 0xE0A0 +0xFB49 0xE0A6 +0xFB4A 0xE0A7 +0xFB4B 0xE0A8 +0xFB4C 0xE0A9 +0xFB4E 0xE0AB +0xFB51 0xE0AE +0xFB5D 0xE0BA +0xFB5E 0xE0BB +0xFB5F 0xE0BC +0xFB61 0xE0BE +0xFB65 0xE0C2 +0xFB66 0xE0C3 +0xFB68 0xE0C5 +0xFB6A 0xE0C7 +0xFB6B 0xE0C8 +0xFB6D 0xE0CA +0xFB70 0xE0CD +0xFB73 0xE0D0 +0xFB77 0xE0D4 +0xFB78 0xE0D5 +0xFB7A 0xE0D7 +0xFB7D 0xE0DA +0xFBA1 0xE0DC +0xFBA4 0xE0DF +0xFBA7 0xE0E2 +0xFBA8 0xE0E3 +0xFBA9 0xE0E4 +0xFBAA 0xE0E5 +0xFBAC 0xE0E7 +0xFBAD 0xE0E8 +0xFBAE 0xE0E9 +0xFBB0 0xE0EB +0xFBB1 0xE0EC +0xFBB3 0xE0EE +0xFBB6 0xE0F1 +0xFBB7 0xE0F2 +0xFBB9 0xE0F4 +0xFBBD 0xE0F8 +0xFBBE 0xE0F9 +0xFBBF 0xE0FA +0xFBC0 0xE0FB +0xFBC1 0xE0FC +0xFBC2 0xE0FD +0xFBC8 0xE103 +0xFBC9 0xE104 +0xFBCA 0xE105 +0xFBCB 0xE106 +0xFBCE 0xE109 +0xFBCF 0xE10A +0xFBD0 0xE10B +0xFBD3 0xE10E +0xFBD5 0xE110 +0xFBD9 0xE114 +0xFBDA 0xE115 +0xFBDC 0xE117 +0xFBE1 0xE11C +0xFBE2 0xE11D +0xFBE6 0xE121 +0xFBEA 0xE125 +0xFBEB 0xE126 +0xFBEC 0xE127 +0xFBED 0xE128 +0xFBEF 0xE12A +0xFBF0 0xE12B +0xFBF5 0xE130 +0xFBF6 0xE131 +0xFBFB 0xE136 +0xFBFE 0xE139 +0xFC42 0xE13C +0xFC47 0xE141 +0xFC48 0xE142 +0xFC49 0xE143 +0xFC4A 0xE144 +0xFC4B 0xE145 +0xFC4D 0xE147 +0xFC4E 0xE148 +0xFC50 0xE14A +0xFC53 0xE14D +0xFC56 0xE150 +0xFC59 0xE153 +0xFC5A 0xE154 +0xFC5B 0xE155 +0xFC5C 0xE156 +0xFC5D 0xE157 +0xFC5F 0xE159 +0xFC60 0xE15A +0xFC63 0xE15D +0xFC64 0xE15E +0xFC65 0xE15F +0xFC66 0xE160 +0xFC68 0xE162 +0xFC6A 0xE164 +0xFC6E 0xE168 +0xFC6F 0xE169 +0xFC70 0xE16A +0xFC77 0xE171 +0xFC78 0xE172 +0xFC7B 0xE175 +0xFC7E 0xE178 +0xFCA1 0xE179 +0xFCA3 0xE17B +0xFCA4 0xE17C +0xFCA6 0xE17E +0xFCA7 0xE17F +0xFCA8 0xE180 +0xFCAD 0xE185 +0xFCAF 0xE187 +0xFCB1 0xE189 +0xFCB3 0xE18B +0xFCB4 0xE18C +0xFCB7 0xE18F +0xFCB8 0xE190 +0xFCBB 0xE193 +0xFCBD 0xE195 +0xFCBE 0xE196 +0xFCC2 0xE19A +0xFCC4 0xE19C +0xFCC7 0xE19F +0xFCC8 0xE1A0 +0xFCCC 0xE1A4 +0xFCCE 0xE1A6 +0xFCCF 0xE1A7 +0xFCD1 0xE1A9 +0xFCD2 0xE1AA +0xFCD6 0xE1AE +0xFCD8 0xE1B0 +0xFCD9 0xE1B1 +0xFCDB 0xE1B3 +0xFCDC 0xE1B4 +0xFCDE 0xE1B6 +0xFCE0 0xE1B8 +0xFCE3 0xE1BB +0xFCE4 0xE1BC +0xFCE5 0xE1BD +0xFCE6 0xE1BE +0xFCE7 0xE1BF +0xFCE9 0xE1C1 +0xFCEC 0xE1C4 +0xFCED 0xE1C5 +0xFCEE 0xE1C6 +0xFCF0 0xE1C8 +0xFCF4 0xE1CC +0xFCF5 0xE1CD +0xFCF7 0xE1CF +0xFCFC 0xE1D4 +0xFCFD 0xE1D5 +0xFD40 0xE1D7 +0xFD43 0xE1DA +0xFD46 0xE1DD +0xFD49 0xE1E0 +0xFD4A 0xE1E1 +0xFD4B 0xE1E2 +0xFD4C 0xE1E3 +0xFD4F 0xE1E6 +0xFD50 0xE1E7 +0xFD53 0xE1EA +0xFD54 0xE1EB +0xFD58 0xE1EF +0xFD59 0xE1F0 +0xFD5B 0xE1F2 +0xFD5D 0xE1F4 +0xFD60 0xE1F7 +0xFD61 0xE1F8 +0xFD63 0xE1FA +0xFD67 0xE1FE +0xFD69 0xE200 +0xFD6A 0xE201 +0xFD6B 0xE202 +0xFD6C 0xE203 +0xFD6E 0xE205 +0xFD70 0xE207 +0xFD73 0xE20A +0xFD74 0xE20B +0xFD75 0xE20C +0xFD79 0xE210 +0xFD7A 0xE211 +0xFD7B 0xE212 +0xFD7C 0xE213 +0xFD7D 0xE214 +0xFD7E 0xE215 +0xFDA1 0xE216 +0xFDA2 0xE217 +0xFDA3 0xE218 +0xFDA4 0xE219 +0xFDA6 0xE21B +0xFDA7 0xE21C +0xFDAA 0xE21F +0xFDAB 0xE220 +0xFDAC 0xE221 +0xFDB1 0xE226 +0xFDB2 0xE227 +0xFDB3 0xE228 +0xFDB5 0xE22A +0xFDBA 0xE22F +0xFDBC 0xE231 +0xFDBE 0xE233 +0xFDC2 0xE237 +0xFDC4 0xE239 +0xFDC6 0xE23B +0xFDC8 0xE23D +0xFDC9 0xE23E +0xFDCA 0xE23F +0xFDCE 0xE243 +0xFDD0 0xE245 +0xFDD1 0xE246 +0xFDD3 0xE248 +0xFDD5 0xE24A +0xFDD6 0xE24B +0xFDD7 0xE24C +0xFDD8 0xE24D +0xFDD9 0xE24E +0xFDDA 0xE24F +0xFDDC 0xE251 +0xFDDD 0xE252 +0xFDDE 0xE253 +0xFDDF 0xE254 +0xFDE8 0xE25D +0xFDE9 0xE25E +0xFDEC 0xE261 +0xFDF3 0xE268 +0xFDF6 0xE26B +0xFDF8 0xE26D +0xFDF9 0xE26E +0xFDFA 0xE26F +0xFDFC 0xE271 +0xFE46 0xE27A +0xFE49 0xE27D +0xFE4D 0xE281 +0xFE4E 0xE282 +0xFE54 0xE288 +0xFE55 0xE289 +0xFE56 0xE28A +0xFE57 0xE28B +0xFE5C 0xE290 +0xFE5D 0xE291 +0xFE60 0xE294 +0xFE61 0xE295 +0xFE62 0xE296 +0xFE64 0xE298 +0xFE65 0xE299 +0xFE66 0xE29A +0xFE67 0xE29B +0xFE6B 0xE29F +0xFE6D 0xE2A1 +0xFE6E 0xE2A2 +0xFE70 0xE2A4 +0xFE72 0xE2A6 +0xFE78 0xE2AC +0xFE7D 0xE2B1 +0xFE7E 0xE2B2 +0xFEA1 0xE2B3 +0xFEA2 0xE2B4 +0xFEA3 0xE2B5 +0xFEA5 0xE2B7 +0xFEA6 0xE2B8 +0xFEA8 0xE2BA +0xFEAC 0xE2BE +0xFEAD 0xE2BF +0xFEAF 0xE2C1 +0xFEB5 0xE2C7 +0xFEB6 0xE2C8 +0xFEB7 0xE2C9 +0xFEC2 0xE2D4 +0xFEC5 0xE2D7 +0xFEC6 0xE2D8 +0xFEC7 0xE2D9 +0xFECC 0xE2DE +0xFECE 0xE2E0 +0xFECF 0xE2E1 +0xFED0 0xE2E2 +0xFED5 0xE2E7 +0xFED7 0xE2E9 +0xFED9 0xE2EB +0xFEDA 0xE2EC +0xFEDB 0xE2ED +0xFEDE 0xE2F0 +0xFEDF 0xE2F1 +0xFEE6 0xE2F8 +0xFEEA 0xE2FC +0xFEED 0xE2FF +0xFEEE 0xE300 +0xFEEF 0xE301 +0xFEF4 0xE306 +0xFEF6 0xE308 +0xFEFA 0xE30C +0xFEFB 0xE30D +0xFEFD 0xE30F diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS2001.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS2001.map Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,4821 @@ +# Generated from HKSCS2001.Encoder +# +# +0x8840 0xF303 +0x8841 0xF304 +0x8842 0xF305 +0x8843 0xF306 +0x8844 0xF307 +0x8845 0x2010C +0x8846 0xF309 +0x8847 0x200D1 +0x8848 0x200CD +0x8849 0xF30C +0x884A 0xF30D +0x884B 0x200CB +0x884C 0x21FE8 +0x884D 0xF310 +0x884E 0x200CA +0x884F 0xF312 +0x8850 0xF313 +0x8851 0xF314 +0x8852 0xF315 +0x8853 0x2010E +0x8854 0xF317 +0x8855 0xF318 +0x8856 0x100 +0x8857 0xC1 +0x8858 0x1CD +0x8859 0xC0 +0x885A 0x112 +0x885B 0xC9 +0x885C 0x11A +0x885D 0xC8 +0x885E 0x14C +0x885F 0xD3 +0x8860 0x1D1 +0x8861 0xD2 +0x8862 0xF325 +0x8863 0x1EBE +0x8864 0xF327 +0x8865 0x1EC0 +0x8866 0xCA +0x8867 0x101 +0x8868 0xE1 +0x8869 0x1CE +0x886A 0xE0 +0x886B 0x251 +0x886C 0x113 +0x886D 0xE9 +0x886E 0x11B +0x886F 0xE8 +0x8870 0x12B +0x8871 0xED +0x8872 0x1D0 +0x8873 0xEC +0x8874 0x14D +0x8875 0xF3 +0x8876 0x1D2 +0x8877 0xF2 +0x8878 0x16B +0x8879 0xFA +0x887A 0x1D4 +0x887B 0xF9 +0x887C 0x1D6 +0x887D 0x1D8 +0x887E 0x1DA +0x88A1 0x1DC +0x88A2 0xFC +0x88A3 0xF344 +0x88A4 0x1EBF +0x88A5 0xF346 +0x88A6 0x1EC1 +0x88A7 0xEA +0x88A8 0x261 +0x88A9 0xF34A +0x88AA 0xF34B +0x8940 0x2A3A9 +0x8941 0x21145 +0x8943 0x650A +0x8946 0x4E3D +0x8947 0x6EDD +0x8948 0x9D4E +0x8949 0x91DF +0x894C 0x27735 +0x894D 0x6491 +0x894E 0x4F1A +0x894F 0x4F28 +0x8950 0x4FA8 +0x8951 0x5156 +0x8952 0x5174 +0x8953 0x519C +0x8954 0x51E4 +0x8955 0x52A1 +0x8956 0x52A8 +0x8957 0x533B +0x8958 0x534E +0x8959 0x53D1 +0x895A 0x53D8 +0x895B 0x56E2 +0x895C 0x58F0 +0x895D 0x5904 +0x895E 0x5907 +0x895F 0x5932 +0x8960 0x5934 +0x8961 0x5B66 +0x8962 0x5B9E +0x8963 0x5B9F +0x8964 0x5C9A +0x8965 0x5E86 +0x8966 0x603B +0x8967 0x6589 +0x8968 0x67FE +0x8969 0x6804 +0x896A 0x6865 +0x896B 0x6D4E +0x896C 0x70BC +0x896D 0x7535 +0x896E 0x7EA4 +0x896F 0x7EAC +0x8970 0x7EBA +0x8971 0x7EC7 +0x8972 0x7ECF +0x8973 0x7EDF +0x8974 0x7F06 +0x8975 0x7F37 +0x8976 0x827A +0x8977 0x82CF +0x8978 0x836F +0x8979 0x89C6 +0x897A 0x8BBE +0x897B 0x8BE2 +0x897C 0x8F66 +0x897D 0x8F67 +0x897E 0x8F6E +0x89A1 0x7411 +0x89A2 0x7CFC +0x89A3 0x7DCD +0x89A4 0x6946 +0x89A5 0x7AC9 +0x89A6 0x5227 +0x89AB 0x918C +0x89AC 0x78B8 +0x89AD 0x915E +0x89AE 0x80BC +0x89B0 0x8D0B +0x89B1 0x80F6 +0x89B2 0x209E7 +0x89B5 0x809F +0x89B6 0x9EC7 +0x89B7 0x4CCD +0x89B8 0x9DC9 +0x89B9 0x9E0C +0x89BA 0x4C3E +0x89BB 0x29DF6 +0x89BC 0x2700E +0x89BD 0x9E0A +0x89BE 0x2A133 +0x89BF 0x35C1 +0x89C1 0x6E9A +0x89C2 0x823E +0x89C3 0x7519 +0x89C5 0x4911 +0x89C6 0x9A6C +0x89C7 0x9A8F +0x89C8 0x9F99 +0x89C9 0x7987 +0x89CA 0x2846C +0x89CB 0x21DCA +0x89CC 0x205D0 +0x89CD 0x22AE6 +0x89CE 0x4E24 +0x89CF 0x4E81 +0x89D0 0x4E80 +0x89D1 0x4E87 +0x89D2 0x4EBF +0x89D3 0x4EEB +0x89D4 0x4F37 +0x89D5 0x344C +0x89D6 0x4FBD +0x89D7 0x3E48 +0x89D8 0x5003 +0x89D9 0x5088 +0x89DA 0x347D +0x89DB 0x3493 +0x89DC 0x34A5 +0x89DD 0x5186 +0x89DE 0x5905 +0x89DF 0x51DB +0x89E0 0x51FC +0x89E1 0x5205 +0x89E2 0x4E89 +0x89E3 0x5279 +0x89E4 0x5290 +0x89E5 0x5327 +0x89E6 0x35C7 +0x89E7 0x53A9 +0x89E8 0x3551 +0x89E9 0x53B0 +0x89EA 0x3553 +0x89EB 0x53C2 +0x89EC 0x5423 +0x89ED 0x356D +0x89EE 0x3572 +0x89EF 0x3681 +0x89F0 0x5493 +0x89F1 0x54A3 +0x89F2 0x54B4 +0x89F3 0x54B9 +0x89F4 0x54D0 +0x89F5 0x54EF +0x89F6 0x5518 +0x89F7 0x5523 +0x89F8 0x5528 +0x89F9 0x3598 +0x89FA 0x553F +0x89FB 0x35A5 +0x89FC 0x35BF +0x89FD 0x55D7 +0x89FE 0x35C5 +0x8A40 0x27D84 +0x8A41 0x5525 +0x8A43 0x20C42 +0x8A44 0x20D15 +0x8A45 0x2512B +0x8A46 0x5590 +0x8A47 0x22CC6 +0x8A48 0x39EC +0x8A49 0x20341 +0x8A4A 0x8E46 +0x8A4B 0x24DB8 +0x8A4C 0x294E5 +0x8A4D 0x4053 +0x8A4E 0x280BE +0x8A4F 0x777A +0x8A50 0x22C38 +0x8A51 0x3A34 +0x8A52 0x47D5 +0x8A53 0x2815D +0x8A54 0x269F2 +0x8A55 0x24DEA +0x8A56 0x64DD +0x8A57 0x20D7C +0x8A58 0x20FB4 +0x8A59 0x20CD5 +0x8A5A 0x210F4 +0x8A5B 0x648D +0x8A5C 0x8E7E +0x8A5D 0x20E96 +0x8A5E 0x20C0B +0x8A5F 0x20F64 +0x8A60 0x22CA9 +0x8A61 0x28256 +0x8A62 0x244D3 +0x8A64 0x20D46 +0x8A65 0x29A4D +0x8A66 0x280E9 +0x8A67 0x47F4 +0x8A68 0x24EA7 +0x8A69 0x22CC2 +0x8A6A 0x9AB2 +0x8A6B 0x3A67 +0x8A6C 0x295F4 +0x8A6D 0x3FED +0x8A6E 0x3506 +0x8A6F 0x252C7 +0x8A70 0x297D4 +0x8A71 0x278C8 +0x8A72 0x22D44 +0x8A73 0x9D6E +0x8A74 0x9815 +0x8A76 0x43D9 +0x8A77 0x260A5 +0x8A78 0x64B4 +0x8A79 0x54E3 +0x8A7A 0x22D4C +0x8A7B 0x22BCA +0x8A7C 0x21077 +0x8A7D 0x39FB +0x8A7E 0x2106F +0x8AA1 0x266DA +0x8AA2 0x26716 +0x8AA3 0x279A0 +0x8AA4 0x64EA +0x8AA5 0x25052 +0x8AA6 0x20C43 +0x8AA7 0x8E68 +0x8AA8 0x221A1 +0x8AA9 0x28B4C +0x8AAA 0x20731 +0x8AAC 0x480B +0x8AAD 0x201A9 +0x8AAE 0x3FFA +0x8AAF 0x5873 +0x8AB0 0x22D8D +0x8AB2 0x245C8 +0x8AB3 0x204FC +0x8AB4 0x26097 +0x8AB5 0x20F4C +0x8AB6 0x20D96 +0x8AB7 0x5579 +0x8AB8 0x40BB +0x8AB9 0x43BA +0x8ABB 0x4AB4 +0x8ABC 0x22A66 +0x8ABD 0x2109D +0x8ABE 0x81AA +0x8ABF 0x98F5 +0x8AC0 0x20D9C +0x8AC1 0x6379 +0x8AC2 0x39FE +0x8AC3 0x22775 +0x8AC4 0x8DC0 +0x8AC5 0x56A1 +0x8AC6 0x647C +0x8AC7 0x3E43 +0x8AC9 0x2A601 +0x8ACA 0x20E09 +0x8ACB 0x22ACF +0x8ACC 0x22CC9 +0x8ACE 0x210C8 +0x8ACF 0x239C2 +0x8AD0 0x3992 +0x8AD1 0x3A06 +0x8AD2 0x2829B +0x8AD3 0x3578 +0x8AD4 0x25E49 +0x8AD5 0x220C7 +0x8AD6 0x5652 +0x8AD7 0x20F31 +0x8AD8 0x22CB2 +0x8AD9 0x29720 +0x8ADA 0x34BC +0x8ADB 0x6C3D +0x8ADC 0x24E3B +0x8ADF 0x27574 +0x8AE0 0x22E8B +0x8AE1 0x22208 +0x8AE2 0x2A65B +0x8AE3 0x28CCD +0x8AE4 0x20E7A +0x8AE5 0x20C34 +0x8AE6 0x2681C +0x8AE7 0x7F93 +0x8AE8 0x210CF +0x8AE9 0x22803 +0x8AEA 0x22939 +0x8AEB 0x35FB +0x8AEC 0x251E3 +0x8AED 0x20E8C +0x8AEE 0x20F8D +0x8AEF 0x20EAA +0x8AF0 0x3F93 +0x8AF1 0x20F30 +0x8AF2 0x20D47 +0x8AF3 0x2114F +0x8AF4 0x20E4C +0x8AF6 0x20EAB +0x8AF7 0x20BA9 +0x8AF8 0x20D48 +0x8AF9 0x210C0 +0x8AFA 0x2113D +0x8AFB 0x3FF9 +0x8AFC 0x22696 +0x8AFD 0x6432 +0x8AFE 0x20FAD +0x8B40 0x233F4 +0x8B41 0x27639 +0x8B42 0x22BCE +0x8B43 0x20D7E +0x8B44 0x20D7F +0x8B45 0x22C51 +0x8B46 0x22C55 +0x8B47 0x3A18 +0x8B48 0x20E98 +0x8B49 0x210C7 +0x8B4A 0x20F2E +0x8B4B 0x2A632 +0x8B4C 0x26B50 +0x8B4D 0x28CD2 +0x8B4E 0x28D99 +0x8B4F 0x28CCA +0x8B50 0x95AA +0x8B51 0x54CC +0x8B52 0x82C4 +0x8B53 0x55B9 +0x8B55 0x29EC3 +0x8B56 0x9C26 +0x8B57 0x9AB6 +0x8B58 0x2775E +0x8B59 0x22DEE +0x8B5A 0x7140 +0x8B5B 0x816D +0x8B5C 0x80EC +0x8B5D 0x5C1C +0x8B5E 0x26572 +0x8B5F 0x8134 +0x8B60 0x3797 +0x8B61 0x535F +0x8B62 0x280BD +0x8B63 0x91B6 +0x8B64 0x20EFA +0x8B65 0x20E0F +0x8B66 0x20E77 +0x8B67 0x20EFB +0x8B68 0x35DD +0x8B69 0x24DEB +0x8B6A 0x3609 +0x8B6B 0x20CD6 +0x8B6C 0x56AF +0x8B6D 0x227B5 +0x8B6E 0x210C9 +0x8B6F 0x20E10 +0x8B70 0x20E78 +0x8B71 0x21078 +0x8B72 0x21148 +0x8B73 0x28207 +0x8B74 0x21455 +0x8B75 0x20E79 +0x8B76 0x24E50 +0x8B77 0x22DA4 +0x8B78 0x5A54 +0x8B79 0x2101D +0x8B7A 0x2101E +0x8B7B 0x210F5 +0x8B7C 0x210F6 +0x8B7D 0x579C +0x8B7E 0x20E11 +0x8BA1 0x27694 +0x8BA2 0x282CD +0x8BA3 0x20FB5 +0x8BA4 0x20E7B +0x8BA5 0x2517E +0x8BA6 0x3703 +0x8BA7 0x20FB6 +0x8BA8 0x21180 +0x8BA9 0x252D8 +0x8BAA 0x2A2BD +0x8BAB 0x249DA +0x8BAC 0x2183A +0x8BAD 0x24177 +0x8BAE 0x2827C +0x8BAF 0x5899 +0x8BB0 0x5268 +0x8BB1 0x361A +0x8BB2 0x2573D +0x8BB3 0x7BB2 +0x8BB4 0x5B68 +0x8BB5 0x4800 +0x8BB6 0x4B2C +0x8BB7 0x9F27 +0x8BB8 0x49E7 +0x8BB9 0x9C1F +0x8BBA 0x9B8D +0x8BBB 0x25B74 +0x8BBC 0x2313D +0x8BBD 0x55FB +0x8BBE 0x35F2 +0x8BBF 0x5689 +0x8BC0 0x4E28 +0x8BC1 0x5902 +0x8BC2 0x21BC1 +0x8BC3 0x2F878 +0x8BC4 0x9751 +0x8BC5 0x20086 +0x8BC6 0x4E5B +0x8BC7 0x4EBB +0x8BC8 0x353E +0x8BC9 0x5C23 +0x8BCA 0x5F51 +0x8BCB 0x5FC4 +0x8BCC 0x38FA +0x8BCD 0x624C +0x8BCE 0x6535 +0x8BCF 0x6B7A +0x8BD0 0x6C35 +0x8BD1 0x6C3A +0x8BD2 0x706C +0x8BD3 0x722B +0x8BD4 0x4E2C +0x8BD5 0x72AD +0x8BD6 0x248E9 +0x8BD7 0x7F52 +0x8BD8 0x793B +0x8BD9 0x7CF9 +0x8BDA 0x7F53 +0x8BDB 0x2626A +0x8BDC 0x34C1 +0x8BDE 0x2634B +0x8BDF 0x8002 +0x8BE0 0x8080 +0x8BE1 0x26612 +0x8BE2 0x26951 +0x8BE3 0x535D +0x8BE4 0x8864 +0x8BE5 0x89C1 +0x8BE6 0x278B2 +0x8BE7 0x8BA0 +0x8BE8 0x8D1D +0x8BE9 0x9485 +0x8BEA 0x9578 +0x8BEB 0x957F +0x8BEC 0x95E8 +0x8BED 0x28E0F +0x8BEE 0x97E6 +0x8BEF 0x9875 +0x8BF0 0x98CE +0x8BF1 0x98DE +0x8BF2 0x9963 +0x8BF3 0x29810 +0x8BF4 0x9C7C +0x8BF5 0x9E1F +0x8BF6 0x9EC4 +0x8BF7 0x6B6F +0x8BF8 0xF907 +0x8BF9 0x4E37 +0x8BFA 0x20087 +0x8BFB 0x961D +0x8BFC 0x6237 +0x8BFD 0x94A2 +0x8C40 0x503B +0x8C41 0x6DFE +0x8C42 0x29C73 +0x8C43 0xF57A +0x8C44 0x3DC9 +0x8C45 0x888F +0x8C46 0x2414E +0x8C47 0x7077 +0x8C48 0x5CF5 +0x8C49 0x4B20 +0x8C4A 0x251CD +0x8C4B 0x3559 +0x8C4C 0x25D30 +0x8C4D 0x6122 +0x8C4E 0x28A32 +0x8C4F 0x8FA7 +0x8C50 0x91F6 +0x8C51 0x7191 +0x8C52 0x6719 +0x8C53 0x73BA +0x8C54 0x23281 +0x8C55 0x2A107 +0x8C56 0x3C8B +0x8C57 0x21980 +0x8C58 0x4B10 +0x8C59 0x78E4 +0x8C5A 0x7402 +0x8C5B 0x51AE +0x8C5C 0x2870F +0x8C5D 0x4009 +0x8C5E 0x6A63 +0x8C5F 0x2A2BA +0x8C60 0x4223 +0x8C61 0x860F +0x8C63 0x7A2A +0x8C64 0x29947 +0x8C65 0x28AEA +0x8C66 0x9755 +0x8C67 0x704D +0x8C68 0x5324 +0x8C69 0x2207E +0x8C6A 0x93F4 +0x8C6B 0x76D9 +0x8C6C 0x289E3 +0x8C6D 0xF5A4 +0x8C6E 0x77DD +0x8C6F 0x4EA3 +0x8C70 0x4FF0 +0x8C71 0x50BC +0x8C72 0x4E2F +0x8C73 0x4F17 +0x8C74 0xF5AB +0x8C75 0x5434 +0x8C76 0x7D8B +0x8C77 0x5892 +0x8C78 0x58D0 +0x8C79 0x21DB6 +0x8C7A 0x5E92 +0x8C7B 0x5E99 +0x8C7C 0x5FC2 +0x8C7D 0x22712 +0x8C7E 0x658B +0x8CA1 0x233F9 +0x8CA2 0x6919 +0x8CA3 0x6A43 +0x8CA4 0x23C63 +0x8CA5 0x6CFF +0x8CA7 0x7200 +0x8CA8 0x24505 +0x8CA9 0x738C +0x8CAA 0x3EDB +0x8CAB 0x24A13 +0x8CAC 0x5B15 +0x8CAD 0x74B9 +0x8CAE 0x8B83 +0x8CAF 0x25CA4 +0x8CB0 0x25695 +0x8CB1 0x7A93 +0x8CB2 0x7BEC +0x8CB3 0x7CC3 +0x8CB4 0x7E6C +0x8CB5 0x82F8 +0x8CB6 0x8597 +0x8CB7 0xF5CC +0x8CB8 0x8890 +0x8CB9 0xF5CE +0x8CBA 0x8EB9 +0x8CBB 0xF5D0 +0x8CBC 0x8FCF +0x8CBD 0x855F +0x8CBE 0x99E0 +0x8CBF 0x9221 +0x8CC0 0xF5D5 +0x8CC1 0x28DB9 +0x8CC2 0x2143F +0x8CC3 0x4071 +0x8CC4 0x42A2 +0x8CC5 0x5A1A +0x8CC9 0x9868 +0x8CCA 0x676B +0x8CCB 0x4276 +0x8CCC 0x573D +0x8CCE 0x85D6 +0x8CCF 0x2497B +0x8CD0 0x82BF +0x8CD1 0x2710D +0x8CD2 0x4C81 +0x8CD3 0x26D74 +0x8CD4 0x5D7B +0x8CD5 0x26B15 +0x8CD6 0x26FBE +0x8CD7 0xF5EC +0x8CD8 0xF5ED +0x8CD9 0x5B96 +0x8CDA 0xF5EF +0x8CDC 0x7E5B +0x8D60 0x5D3E +0x8D61 0x5D48 +0x8D62 0x5D56 +0x8D63 0x3DFC +0x8D64 0x380F +0x8D65 0x5DA4 +0x8D66 0x5DB9 +0x8D67 0x3820 +0x8D68 0x3838 +0x8D69 0x5E42 +0x8D6A 0x5EBD +0x8D6B 0x5F25 +0x8D6C 0x5F83 +0x8D6D 0x3908 +0x8D6E 0x3914 +0x8D6F 0x393F +0x8D70 0x394D +0x8D71 0x60D7 +0x8D72 0x613D +0x8D73 0x5CE5 +0x8D74 0x3989 +0x8D75 0x61B7 +0x8D76 0x61B9 +0x8D77 0x61CF +0x8D78 0x39B8 +0x8D79 0x622C +0x8D7A 0x6290 +0x8D7B 0x62E5 +0x8D7C 0x6318 +0x8D7D 0x39F8 +0x8D7E 0x56B1 +0x8DA1 0x3A03 +0x8DA2 0x63E2 +0x8DA3 0x63FB +0x8DA4 0x6407 +0x8DA5 0x645A +0x8DA6 0x3A4B +0x8DA7 0x64C0 +0x8DA8 0x5D15 +0x8DA9 0x5621 +0x8DAA 0x9F9F +0x8DAB 0x3A97 +0x8DAC 0x6586 +0x8DAD 0x3ABD +0x8DAE 0x65FF +0x8DAF 0x6653 +0x8DB0 0x3AF2 +0x8DB1 0x6692 +0x8DB2 0x3B22 +0x8DB3 0x6716 +0x8DB4 0x3B42 +0x8DB5 0x67A4 +0x8DB6 0x6800 +0x8DB7 0x3B58 +0x8DB8 0x684A +0x8DB9 0x6884 +0x8DBA 0x3B72 +0x8DBB 0x3B71 +0x8DBC 0x3B7B +0x8DBD 0x6909 +0x8DBE 0x6943 +0x8DBF 0x725C +0x8DC0 0x6964 +0x8DC1 0x699F +0x8DC2 0x6985 +0x8DC3 0x3BBC +0x8DC4 0x69D6 +0x8DC5 0x3BDD +0x8DC6 0x6A65 +0x8DC7 0x6A74 +0x8DC8 0x6A71 +0x8DC9 0x6A82 +0x8DCA 0x3BEC +0x8DCB 0x6A99 +0x8DCC 0x3BF2 +0x8DCD 0x6AAB +0x8DCE 0x6AB5 +0x8DCF 0x6AD4 +0x8DD0 0x6AF6 +0x8DD1 0x6B81 +0x8DD2 0x6BC1 +0x8DD3 0x6BEA +0x8DD4 0x6C75 +0x8DD5 0x6CAA +0x8DD6 0x3CCB +0x8DD7 0x6D02 +0x8DD8 0x6D06 +0x8DD9 0x6D26 +0x8DDA 0x6D81 +0x8DDB 0x3CEF +0x8DDC 0x6DA4 +0x8DDD 0x6DB1 +0x8DDE 0x6E15 +0x8DDF 0x6E18 +0x8DE0 0x6E29 +0x8DE1 0x6E86 +0x8DE2 0x289C0 +0x8DE3 0x6EBB +0x8DE4 0x6EE2 +0x8DE5 0x6EDA +0x8DE6 0x9F7F +0x8DE7 0x6EE8 +0x8DE8 0x6EE9 +0x8DE9 0x6F24 +0x8DEA 0x6F34 +0x8DEB 0x3D46 +0x8DEC 0x23F41 +0x8DED 0x6F81 +0x8DEE 0x6FBE +0x8DEF 0x3D6A +0x8DF0 0x3D75 +0x8DF1 0x71B7 +0x8DF2 0x5C99 +0x8DF3 0x3D8A +0x8DF4 0x702C +0x8DF5 0x3D91 +0x8DF6 0x7050 +0x8DF7 0x7054 +0x8DF8 0x706F +0x8DF9 0x707F +0x8DFA 0x7089 +0x8DFB 0x20325 +0x8DFC 0x43C1 +0x8DFD 0x35F1 +0x8DFE 0x20ED8 +0x8E40 0x23ED7 +0x8E41 0x57BE +0x8E42 0x26ED3 +0x8E43 0x713E +0x8E44 0x257E0 +0x8E45 0x364E +0x8E46 0x69A2 +0x8E47 0x28BE9 +0x8E48 0x5B74 +0x8E49 0x7A49 +0x8E4A 0x258E1 +0x8E4B 0x294D9 +0x8E4C 0x7A65 +0x8E4D 0x7A7D +0x8E4E 0x259AC +0x8E4F 0x7ABB +0x8E50 0x7AB0 +0x8E51 0x7AC2 +0x8E52 0x7AC3 +0x8E53 0x71D1 +0x8E54 0x2648D +0x8E55 0x41CA +0x8E56 0x7ADA +0x8E57 0x7ADD +0x8E58 0x7AEA +0x8E59 0x41EF +0x8E5A 0x54B2 +0x8E5B 0x25C01 +0x8E5C 0x7B0B +0x8E5D 0x7B55 +0x8E5E 0x7B29 +0x8E5F 0x2530E +0x8E60 0x25CFE +0x8E61 0x7BA2 +0x8E62 0x7B6F +0x8E63 0x839C +0x8E64 0x25BB4 +0x8E65 0x26C7F +0x8E66 0x7BD0 +0x8E67 0x8421 +0x8E68 0x7B92 +0x8E6A 0x25D20 +0x8E6B 0x3DAD +0x8E6C 0x25C65 +0x8E6D 0x8492 +0x8E6E 0x7BFA +0x8E70 0x7C35 +0x8E71 0x25CC1 +0x8E72 0x7C44 +0x8E73 0x7C83 +0x8E74 0x24882 +0x8E75 0x7CA6 +0x8E76 0x667D +0x8E77 0x24578 +0x8E78 0x7CC9 +0x8E79 0x7CC7 +0x8E7A 0x7CE6 +0x8E7B 0x7C74 +0x8E7C 0x7CF3 +0x8E7D 0x7CF5 +0x8EA1 0x7E67 +0x8EA2 0x451D +0x8EA3 0x26E44 +0x8EA4 0x7D5D +0x8EA5 0x26ED6 +0x8EA6 0x748D +0x8EA7 0x7D89 +0x8EA8 0x7DAB +0x8EA9 0x7135 +0x8EAA 0x7DB3 +0x8EAC 0x24057 +0x8EAD 0x26029 +0x8EAE 0x7DE4 +0x8EAF 0x3D13 +0x8EB0 0x7DF5 +0x8EB1 0x217F9 +0x8EB2 0x7DE5 +0x8EB3 0x2836D +0x8EB5 0x26121 +0x8EB6 0x2615A +0x8EB7 0x7E6E +0x8EB8 0x7E92 +0x8EB9 0x432B +0x8EBA 0x946C +0x8EBB 0x7E27 +0x8EBC 0x7F40 +0x8EBD 0x7F41 +0x8EBE 0x7F47 +0x8EBF 0x7936 +0x8EC0 0x262D0 +0x8EC1 0x99E1 +0x8EC2 0x7F97 +0x8EC3 0x26351 +0x8EC4 0x7FA3 +0x8EC5 0x21661 +0x8EC6 0x20068 +0x8EC7 0x455C +0x8EC8 0x23766 +0x8EC9 0x4503 +0x8ECA 0x2833A +0x8ECB 0x7FFA +0x8ECC 0x26489 +0x8ECE 0x8008 +0x8ECF 0x801D +0x8ED1 0x802F +0x8ED2 0x2A087 +0x8ED3 0x26CC3 +0x8ED4 0x803B +0x8ED5 0x803C +0x8ED6 0x8061 +0x8ED7 0x22714 +0x8ED8 0x4989 +0x8ED9 0x26626 +0x8EDA 0x23DE3 +0x8EDB 0x266E8 +0x8EDC 0x6725 +0x8EDD 0x80A7 +0x8EDE 0x28A48 +0x8EDF 0x8107 +0x8EE0 0x811A +0x8EE1 0x58B0 +0x8EE2 0x226F6 +0x8EE3 0x6C7F +0x8EE4 0x26498 +0x8EE5 0x24FB8 +0x8EE6 0x64E7 +0x8EE7 0x2148A +0x8EE8 0x8218 +0x8EE9 0x2185E +0x8EEA 0x6A53 +0x8EEB 0x24A65 +0x8EEC 0x24A95 +0x8EED 0x447A +0x8EEE 0x8229 +0x8EEF 0x20B0D +0x8EF0 0x26A52 +0x8EF1 0x23D7E +0x8EF2 0x4FF9 +0x8EF3 0x214FD +0x8EF4 0x84E2 +0x8EF5 0x8362 +0x8EF6 0x26B0A +0x8EF7 0x249A7 +0x8EF8 0x23530 +0x8EF9 0x21773 +0x8EFA 0x23DF8 +0x8EFB 0x82AA +0x8EFC 0x691B +0x8EFD 0x2F994 +0x8EFE 0x41DB +0x8F40 0x854B +0x8F41 0x82D0 +0x8F42 0x831A +0x8F43 0x20E16 +0x8F44 0x217B4 +0x8F45 0x36C1 +0x8F46 0x2317D +0x8F47 0x2355A +0x8F48 0x827B +0x8F49 0x82E2 +0x8F4A 0x8318 +0x8F4B 0x23E8B +0x8F4C 0x26DA3 +0x8F4D 0x26B05 +0x8F4E 0x26B97 +0x8F4F 0x235CE +0x8F50 0x3DBF +0x8F51 0x831D +0x8F52 0x55EC +0x8F53 0x8385 +0x8F54 0x450B +0x8F55 0x26DA5 +0x8F56 0x83AC +0x8F58 0x83D3 +0x8F59 0x347E +0x8F5A 0x26ED4 +0x8F5B 0x6A57 +0x8F5C 0x855A +0x8F5D 0x3496 +0x8F5E 0x26E42 +0x8F5F 0x22EEF +0x8F60 0x8458 +0x8F61 0x25BE4 +0x8F62 0x8471 +0x8F63 0x3DD3 +0x8F64 0x44E4 +0x8F65 0x6AA7 +0x8F66 0x844A +0x8F67 0x23CB5 +0x8F68 0x7958 +0x8F6A 0x26B96 +0x8F6B 0x26E77 +0x8F6C 0x26E43 +0x8F6D 0x84DE +0x8F6F 0x8391 +0x8F70 0x44A0 +0x8F71 0x8493 +0x8F72 0x84E4 +0x8F73 0x25C91 +0x8F74 0x4240 +0x8F75 0x25CC0 +0x8F76 0x4543 +0x8F77 0x8534 +0x8F78 0x5AF2 +0x8F79 0x26E99 +0x8F7A 0x4527 +0x8F7B 0x8573 +0x8F7C 0x4516 +0x8F7D 0x67BF +0x8F7E 0x8616 +0x8FA1 0x28625 +0x8FA2 0x2863B +0x8FA3 0x85C1 +0x8FA4 0x27088 +0x8FA5 0x8602 +0x8FA6 0x21582 +0x8FA7 0x270CD +0x8FA8 0x2F9B2 +0x8FA9 0x456A +0x8FAA 0x8628 +0x8FAB 0x3648 +0x8FAC 0x218A2 +0x8FAD 0x53F7 +0x8FAE 0x2739A +0x8FAF 0x867E +0x8FB0 0x8771 +0x8FB1 0x2A0F8 +0x8FB2 0x87EE +0x8FB3 0x22C27 +0x8FB4 0x87B1 +0x8FB5 0x87DA +0x8FB6 0x880F +0x8FB7 0x5661 +0x8FB8 0x866C +0x8FB9 0x6856 +0x8FBA 0x460F +0x8FBB 0x8845 +0x8FBC 0x8846 +0x8FBD 0x275E0 +0x8FBE 0x23DB9 +0x8FBF 0x275E4 +0x8FC0 0x885E +0x8FC1 0x889C +0x8FC2 0x465B +0x8FC3 0x88B4 +0x8FC4 0x88B5 +0x8FC5 0x63C1 +0x8FC6 0x88C5 +0x8FC7 0x7777 +0x8FC8 0x2770F +0x8FC9 0x8987 +0x8FCA 0x898A +0x8FCD 0x89A7 +0x8FCE 0x89BC +0x8FCF 0x28A25 +0x8FD0 0x89E7 +0x8FD1 0x27924 +0x8FD2 0x27ABD +0x8FD3 0x8A9C +0x8FD4 0x7793 +0x8FD5 0x91FE +0x8FD6 0x8A90 +0x8FD7 0x27A59 +0x8FD8 0x7AE9 +0x8FD9 0x27B3A +0x8FDA 0x23F8F +0x8FDB 0x4713 +0x8FDC 0x27B38 +0x8FDD 0x717C +0x8FDE 0x8B0C +0x8FDF 0x8B1F +0x8FE0 0x25430 +0x8FE1 0x25565 +0x8FE2 0x8B3F +0x8FE3 0x8B4C +0x8FE4 0x8B4D +0x8FE5 0x8AA9 +0x8FE6 0x24A7A +0x8FE7 0x8B90 +0x8FE8 0x8B9B +0x8FE9 0x8AAF +0x8FEA 0x216DF +0x8FEB 0x4615 +0x8FEC 0x884F +0x8FED 0x8C9B +0x8FEE 0x27D54 +0x8FEF 0x27D8F +0x8FF0 0x2F9D4 +0x8FF1 0x3725 +0x8FF2 0x27D53 +0x8FF3 0x8CD6 +0x8FF4 0x27D98 +0x8FF5 0x27DBD +0x8FF6 0x8D12 +0x8FF7 0x8D03 +0x8FF8 0x21910 +0x8FF9 0x8CDB +0x8FFA 0x705C +0x8FFB 0x8D11 +0x8FFC 0x24CC9 +0x8FFD 0x3ED0 +0x9040 0x8DA9 +0x9041 0x28002 +0x9042 0x21014 +0x9043 0x2498A +0x9044 0x3B7C +0x9045 0x281BC +0x9046 0x2710C +0x9047 0x7AE7 +0x9048 0x8EAD +0x9049 0x8EB6 +0x904A 0x8EC3 +0x904B 0x92D4 +0x904C 0x8F19 +0x904D 0x8F2D +0x904E 0x28365 +0x904F 0x28412 +0x9050 0x8FA5 +0x9051 0x9303 +0x9052 0x2A29F +0x9053 0x20A50 +0x9054 0x8FB3 +0x9055 0x492A +0x9056 0x289DE +0x9057 0x2853D +0x9058 0x23DBB +0x9059 0x5EF8 +0x905A 0x23262 +0x905B 0x8FF9 +0x905C 0x2A014 +0x905D 0x286BC +0x905E 0x28501 +0x905F 0x22325 +0x9060 0x3980 +0x9061 0x26ED7 +0x9062 0x9037 +0x9063 0x2853C +0x9064 0x27ABE +0x9065 0x9061 +0x9066 0x2856C +0x9067 0x2860B +0x9068 0x90A8 +0x9069 0x28713 +0x906A 0x90C4 +0x906B 0x286E6 +0x906C 0x90AE +0x906E 0x9167 +0x906F 0x3AF0 +0x9070 0x91A9 +0x9071 0x91C4 +0x9072 0x7CAC +0x9073 0x28933 +0x9074 0x21E89 +0x9075 0x920E +0x9076 0x6C9F +0x9077 0x9241 +0x9078 0x9262 +0x9079 0x255B9 +0x907B 0x28AC6 +0x907C 0x23C9B +0x907D 0x28B0C +0x907E 0x255DB +0x90A1 0x20D31 +0x90A2 0x932C +0x90A3 0x936B +0x90A4 0x28AE1 +0x90A5 0x28BEB +0x90A6 0x708F +0x90A7 0x5AC3 +0x90A8 0x28AE2 +0x90A9 0x28AE5 +0x90AA 0x4965 +0x90AB 0x9244 +0x90AC 0x28BEC +0x90AD 0x28C39 +0x90AE 0x28BFF +0x90AF 0x9373 +0x90B0 0x945B +0x90B1 0x8EBC +0x90B2 0x9585 +0x90B3 0x95A6 +0x90B4 0x9426 +0x90B5 0x95A0 +0x90B6 0x6FF6 +0x90B7 0x42B9 +0x90B8 0x2267A +0x90B9 0x286D8 +0x90BA 0x2127C +0x90BB 0x23E2E +0x90BC 0x49DF +0x90BD 0x6C1C +0x90BE 0x967B +0x90BF 0x9696 +0x90C0 0x416C +0x90C1 0x96A3 +0x90C2 0x26ED5 +0x90C3 0x61DA +0x90C4 0x96B6 +0x90C5 0x78F5 +0x90C6 0x28AE0 +0x90C7 0x96BD +0x90C8 0x53CC +0x90C9 0x49A1 +0x90CA 0x26CB8 +0x90CB 0x20274 +0x90CC 0x26410 +0x90CD 0x290AF +0x90CE 0x290E5 +0x90CF 0x24AD1 +0x90D0 0x21915 +0x90D1 0x2330A +0x90D2 0x9731 +0x90D3 0x8642 +0x90D4 0x9736 +0x90D5 0x4A0F +0x90D6 0x453D +0x90D7 0x4585 +0x90D8 0x24AE9 +0x90D9 0x7075 +0x90DA 0x5B41 +0x90DB 0x971B +0x90DD 0x291D5 +0x90DE 0x9757 +0x90DF 0x5B4A +0x90E0 0x291EB +0x90E1 0x975F +0x90E2 0x9425 +0x90E3 0x50D0 +0x90E4 0x230B7 +0x90E5 0x230BC +0x90E6 0x9789 +0x90E7 0x979F +0x90E8 0x97B1 +0x90E9 0x97BE +0x90EA 0x97C0 +0x90EB 0x97D2 +0x90EC 0x97E0 +0x90ED 0x2546C +0x90EE 0x97EE +0x90EF 0x741C +0x90F0 0x29433 +0x90F2 0x97F5 +0x90F3 0x2941D +0x90F4 0x2797A +0x90F5 0x4AD1 +0x90F6 0x9834 +0x90F7 0x9833 +0x90F8 0x984B +0x90F9 0x9866 +0x90FA 0x3B0E +0x90FB 0x27175 +0x90FC 0x3D51 +0x90FD 0x20630 +0x90FE 0x2415C +0x9140 0x25706 +0x9141 0x98CA +0x9142 0x98B7 +0x9143 0x98C8 +0x9144 0x98C7 +0x9145 0x4AFF +0x9146 0x26D27 +0x9147 0x216D3 +0x9148 0x55B0 +0x9149 0x98E1 +0x914A 0x98E6 +0x914B 0x98EC +0x914C 0x9378 +0x914D 0x9939 +0x914E 0x24A29 +0x914F 0x4B72 +0x9150 0x29857 +0x9151 0x29905 +0x9152 0x99F5 +0x9153 0x9A0C +0x9154 0x9A3B +0x9155 0x9A10 +0x9156 0x9A58 +0x9157 0x25725 +0x9158 0x36C4 +0x9159 0x290B1 +0x915A 0x29BD5 +0x915B 0x9AE0 +0x915C 0x9AE2 +0x915D 0x29B05 +0x915E 0x9AF4 +0x915F 0x4C0E +0x9160 0x9B14 +0x9161 0x9B2D +0x9162 0x28600 +0x9163 0x5034 +0x9164 0x9B34 +0x9165 0x269A8 +0x9166 0x38C3 +0x9167 0x2307D +0x9168 0x9B50 +0x9169 0x9B40 +0x916A 0x29D3E +0x916B 0x5A45 +0x916C 0x21863 +0x916D 0x9B8E +0x916E 0x2424B +0x916F 0x9C02 +0x9170 0x9BFF +0x9171 0x9C0C +0x9172 0x29E68 +0x9173 0x9DD4 +0x9174 0x29FB7 +0x9175 0x2A192 +0x9176 0x2A1AB +0x9177 0x2A0E1 +0x9178 0x2A123 +0x9179 0x2A1DF +0x917A 0x9D7E +0x917B 0x9D83 +0x917C 0x2A134 +0x917D 0x9E0E +0x917E 0x6888 +0x91A1 0x9DC4 +0x91A2 0x2215B +0x91A3 0x2A193 +0x91A4 0x2A220 +0x91A5 0x2193B +0x91A6 0x2A233 +0x91A7 0x9D39 +0x91A8 0x2A0B9 +0x91A9 0x2A2B4 +0x91AA 0x9E90 +0x91AB 0x9E95 +0x91AC 0x9E9E +0x91AD 0x9EA2 +0x91AE 0x4D34 +0x91AF 0x9EAA +0x91B0 0x9EAF +0x91B1 0x24364 +0x91B2 0x9EC1 +0x91B3 0x3B60 +0x91B4 0x39E5 +0x91B5 0x3D1D +0x91B6 0x4F32 +0x91B7 0x37BE +0x91B8 0x28C2B +0x91B9 0x9F02 +0x91BA 0x9F08 +0x91BB 0x4B96 +0x91BC 0x9424 +0x91BD 0x26DA2 +0x91BE 0x9F17 +0x91C0 0x9F39 +0x91C1 0x569F +0x91C2 0x568A +0x91C3 0x9F45 +0x91C4 0x99B8 +0x91C5 0x2908B +0x91C6 0x97F2 +0x91C7 0x847F +0x91C8 0x9F62 +0x91C9 0x9F69 +0x91CA 0x7ADC +0x91CB 0x9F8E +0x91CC 0x7216 +0x91CD 0x4BBE +0x91CE 0x24975 +0x91CF 0x249BB +0x91D0 0x7177 +0x91D1 0x249F8 +0x91D2 0x24348 +0x91D3 0x24A51 +0x91D4 0x739E +0x91D5 0x28BDA +0x91D6 0x218FA +0x91D7 0x799F +0x91D8 0x2897E +0x91D9 0x28E36 +0x91DA 0x9369 +0x91DB 0x93F3 +0x91DC 0x28A44 +0x91DD 0x92EC +0x91DE 0x9381 +0x91DF 0x93CB +0x91E0 0x2896C +0x91E1 0x244B9 +0x91E2 0x7217 +0x91E3 0x3EEB +0x91E4 0x7772 +0x91E5 0x7A43 +0x91E6 0x70D0 +0x91E7 0x24473 +0x91E8 0x243F8 +0x91E9 0x717E +0x91EA 0x217EF +0x91EB 0x70A3 +0x91EC 0x218BE +0x91ED 0x23599 +0x91EE 0x3EC7 +0x91EF 0x21885 +0x91F0 0x2542F +0x91F1 0x217F8 +0x91F2 0x3722 +0x91F3 0x216FB +0x91F4 0x21839 +0x91F5 0x36E1 +0x91F6 0x21774 +0x91F7 0x218D1 +0x91F8 0x25F4B +0x91F9 0x3723 +0x91FA 0x216C0 +0x91FB 0x575B +0x91FC 0x24A25 +0x91FD 0x213FE +0x91FE 0x212A8 +0x9240 0x213C6 +0x9241 0x214B6 +0x9242 0x8503 +0x9243 0x236A6 +0x9245 0x8455 +0x9246 0x24994 +0x9247 0x27165 +0x9248 0x23E31 +0x9249 0x2555C +0x924A 0x23EFB +0x924B 0x27052 +0x924C 0x44F4 +0x924D 0x236EE +0x924E 0x2999D +0x924F 0x26F26 +0x9250 0x67F9 +0x9251 0x3733 +0x9252 0x3C15 +0x9253 0x3DE7 +0x9254 0x586C +0x9255 0x21922 +0x9256 0x6810 +0x9257 0x4057 +0x9258 0x2373F +0x9259 0x240E1 +0x925A 0x2408B +0x925B 0x2410F +0x925C 0x26C21 +0x925D 0x54CB +0x925E 0x569E +0x925F 0x266B1 +0x9260 0x5692 +0x9261 0x20FDF +0x9262 0x20BA8 +0x9263 0x20E0D +0x9264 0x93C6 +0x9265 0x28B13 +0x9266 0x939C +0x9267 0x4EF8 +0x9268 0x512B +0x9269 0x3819 +0x926A 0x24436 +0x926B 0x4EBC +0x926C 0x20465 +0x926D 0x2037F +0x926E 0x4F4B +0x926F 0x4F8A +0x9270 0x25651 +0x9271 0x5A68 +0x9272 0x201AB +0x9273 0x203CB +0x9274 0x3999 +0x9275 0x2030A +0x9276 0x20414 +0x9277 0x3435 +0x9278 0x4F29 +0x9279 0x202C0 +0x927A 0x28EB3 +0x927B 0x20275 +0x927C 0x8ADA +0x927D 0x2020C +0x927E 0x4E98 +0x92A1 0x50CD +0x92A2 0x510D +0x92A3 0x4FA2 +0x92A4 0x4F03 +0x92A5 0x24A0E +0x92A6 0x23E8A +0x92A7 0x4F42 +0x92A8 0x502E +0x92A9 0x506C +0x92AA 0x5081 +0x92AB 0x4FCC +0x92AC 0x4FE5 +0x92AD 0x5058 +0x92AE 0x50FC +0x92B3 0x6E76 +0x92B4 0x23595 +0x92B5 0x23E39 +0x92B6 0x23EBF +0x92B7 0x6D72 +0x92B8 0x21884 +0x92B9 0x23E89 +0x92BA 0x51A8 +0x92BB 0x51C3 +0x92BC 0x205E0 +0x92BD 0x44DD +0x92BE 0x204A3 +0x92BF 0x20492 +0x92C0 0x20491 +0x92C1 0x8D7A +0x92C2 0x28A9C +0x92C3 0x2070E +0x92C4 0x5259 +0x92C5 0x52A4 +0x92C6 0x20873 +0x92C7 0x52E1 +0x92C9 0x467A +0x92CA 0x718C +0x92CB 0x2438C +0x92CC 0x20C20 +0x92CD 0x249AC +0x92CE 0x210E4 +0x92CF 0x69D1 +0x92D0 0x20E1D +0x92D2 0x3EDE +0x92D3 0x7499 +0x92D4 0x7414 +0x92D5 0x7456 +0x92D6 0x7398 +0x92D7 0x4B8E +0x92D8 0x24ABC +0x92D9 0x2408D +0x92DA 0x53D0 +0x92DB 0x3584 +0x92DC 0x720F +0x92DD 0x240C9 +0x92DE 0x55B4 +0x92DF 0x20345 +0x92E0 0x54CD +0x92E1 0x20BC6 +0x92E2 0x571D +0x92E3 0x925D +0x92E4 0x96F4 +0x92E5 0x9366 +0x92E6 0x57DD +0x92E7 0x578D +0x92E8 0x577F +0x92E9 0x363E +0x92EA 0x58CB +0x92EB 0x5A99 +0x92EC 0x28A46 +0x92ED 0x216FA +0x92EE 0x2176F +0x92EF 0x21710 +0x92F0 0x5A2C +0x92F1 0x59B8 +0x92F2 0x928F +0x92F3 0x5A7E +0x92F4 0x5ACF +0x92F5 0x5A12 +0x92F6 0x25946 +0x92F7 0x219F3 +0x92F8 0x21861 +0x92F9 0x24295 +0x92FA 0x36F5 +0x92FB 0x6D05 +0x92FC 0x7443 +0x92FD 0x5A21 +0x92FE 0x25E83 +0x9340 0x5A81 +0x9341 0x28BD7 +0x9342 0x20413 +0x9343 0x93E0 +0x9344 0x748C +0x9345 0x21303 +0x9346 0x7105 +0x9347 0x4972 +0x9348 0x9408 +0x9349 0x289FB +0x934A 0x93BD +0x934B 0x37A0 +0x934C 0x5C1E +0x934D 0x5C9E +0x934E 0x5E5E +0x934F 0x5E48 +0x9350 0x21996 +0x9351 0x2197C +0x9352 0x23AEE +0x9353 0x5ECD +0x9354 0x5B4F +0x9355 0x21903 +0x9356 0x21904 +0x9357 0x3701 +0x9358 0x218A0 +0x9359 0x36DD +0x935A 0x216FE +0x935B 0x36D3 +0x935C 0x812A +0x935D 0x28A47 +0x935E 0x21DBA +0x935F 0x23472 +0x9360 0x289A8 +0x9361 0x5F0C +0x9362 0x5F0E +0x9363 0x21927 +0x9364 0x217AB +0x9365 0x5A6B +0x9366 0x2173B +0x9367 0x5B44 +0x9368 0x8614 +0x9369 0x275FD +0x936A 0x8860 +0x936B 0x607E +0x936C 0x22860 +0x936D 0x2262B +0x936E 0x5FDB +0x936F 0x3EB8 +0x9370 0x225AF +0x9371 0x225BE +0x9372 0x29088 +0x9373 0x26F73 +0x9374 0x61C0 +0x9375 0x2003E +0x9376 0x20046 +0x9377 0x2261B +0x9378 0x6199 +0x9379 0x6198 +0x937A 0x6075 +0x937B 0x22C9B +0x937C 0x22D07 +0x937D 0x246D4 +0x937E 0x2914D +0x93A1 0x6471 +0x93A2 0x24665 +0x93A3 0x22B6A +0x93A4 0x3A29 +0x93A5 0x22B22 +0x93A6 0x23450 +0x93A7 0x298EA +0x93A8 0x22E78 +0x93A9 0x6337 +0x93AA 0x2A45B +0x93AB 0x64B6 +0x93AC 0x6331 +0x93AD 0x63D1 +0x93AE 0x249E3 +0x93AF 0x22D67 +0x93B0 0x62A4 +0x93B1 0x22CA1 +0x93B2 0x643B +0x93B3 0x656B +0x93B4 0x6972 +0x93B5 0x3BF4 +0x93B6 0x2308E +0x93B7 0x232AD +0x93B8 0x24989 +0x93B9 0x232AB +0x93BA 0x550D +0x93BB 0x232E0 +0x93BC 0x218D9 +0x93BD 0x2943F +0x93BE 0x66CE +0x93BF 0x23289 +0x93C0 0x231B3 +0x93C1 0x3AE0 +0x93C2 0x4190 +0x93C3 0x25584 +0x93C4 0x28B22 +0x93C5 0x2558F +0x93C6 0x216FC +0x93C7 0x2555B +0x93C8 0x25425 +0x93C9 0x78EE +0x93CA 0x23103 +0x93CB 0x2182A +0x93CC 0x23234 +0x93CD 0x3464 +0x93CE 0x2320F +0x93CF 0x23182 +0x93D0 0x242C9 +0x93D1 0x668E +0x93D2 0x26D24 +0x93D3 0x666B +0x93D4 0x4B93 +0x93D5 0x6630 +0x93D6 0x27870 +0x93D7 0x21DEB +0x93D8 0x6663 +0x93D9 0x232D2 +0x93DA 0x232E1 +0x93DB 0x661E +0x93DC 0x25872 +0x93DD 0x38D1 +0x93DE 0x2383A +0x93DF 0x237BC +0x93E0 0x3B99 +0x93E1 0x237A2 +0x93E2 0x233FE +0x93E3 0x74D0 +0x93E4 0x3B96 +0x93E5 0x678F +0x93E6 0x2462A +0x93E7 0x68B6 +0x93E8 0x681E +0x93E9 0x3BC4 +0x93EA 0x6ABE +0x93EB 0x3863 +0x93EC 0x237D5 +0x93ED 0x24487 +0x93EE 0x6A33 +0x93EF 0x6A52 +0x93F0 0x6AC9 +0x93F1 0x6B05 +0x93F2 0x21912 +0x93F3 0x6511 +0x93F4 0x6898 +0x93F5 0x6A4C +0x93F6 0x3BD7 +0x93F7 0x6A7A +0x93F8 0x6B57 +0x93F9 0x23FC0 +0x93FA 0x23C9A +0x93FB 0x93A0 +0x93FC 0x92F2 +0x93FD 0x28BEA +0x93FE 0x28ACB +0x9440 0x9289 +0x9441 0x2801E +0x9442 0x289DC +0x9443 0x9467 +0x9444 0x6DA5 +0x9445 0x6F0B +0x9446 0x249EC +0x9448 0x23F7F +0x9449 0x3D8F +0x944A 0x6E04 +0x944B 0x2403C +0x944C 0x5A3D +0x944D 0x6E0A +0x944E 0x5847 +0x944F 0x6D24 +0x9450 0x7842 +0x9451 0x713B +0x9452 0x2431A +0x9453 0x24276 +0x9454 0x70F1 +0x9455 0x7250 +0x9456 0x7287 +0x9457 0x7294 +0x9458 0x2478F +0x9459 0x24725 +0x945A 0x5179 +0x945B 0x24AA4 +0x945C 0x205EB +0x945D 0x747A +0x945E 0x23EF8 +0x945F 0x2365F +0x9460 0x24A4A +0x9461 0x24917 +0x9462 0x25FE1 +0x9463 0x3F06 +0x9464 0x3EB1 +0x9465 0x24ADF +0x9466 0x28C23 +0x9467 0x23F35 +0x9468 0x60A7 +0x9469 0x3EF3 +0x946A 0x74CC +0x946B 0x743C +0x946C 0x9387 +0x946D 0x7437 +0x946E 0x449F +0x946F 0x26DEA +0x9470 0x4551 +0x9471 0x7583 +0x9472 0x3F63 +0x9473 0x24CD9 +0x9474 0x24D06 +0x9475 0x3F58 +0x9476 0x7555 +0x9477 0x7673 +0x9478 0x2A5C6 +0x9479 0x3B19 +0x947A 0x7468 +0x947B 0x28ACC +0x947C 0x249AB +0x947D 0x2498E +0x947E 0x3AFB +0x94A1 0x3DCD +0x94A2 0x24A4E +0x94A3 0x3EFF +0x94A4 0x249C5 +0x94A5 0x248F3 +0x94A6 0x91FA +0x94A7 0x5732 +0x94A8 0x9342 +0x94A9 0x28AE3 +0x94AA 0x21864 +0x94AB 0x50DF +0x94AC 0x25221 +0x94AD 0x251E7 +0x94AE 0x7778 +0x94AF 0x23232 +0x94B0 0x770E +0x94B1 0x770F +0x94B2 0x777B +0x94B3 0x24697 +0x94B4 0x23781 +0x94B5 0x3A5E +0x94B6 0x248F0 +0x94B7 0x7438 +0x94B8 0x749B +0x94B9 0x3EBF +0x94BA 0x24ABA +0x94BB 0x24AC7 +0x94BC 0x40C8 +0x94BD 0x24A96 +0x94BE 0x261AE +0x94BF 0x9307 +0x94C0 0x25581 +0x94C1 0x781E +0x94C2 0x788D +0x94C3 0x7888 +0x94C4 0x78D2 +0x94C5 0x73D0 +0x94C6 0x7959 +0x94C7 0x27741 +0x94C8 0x256E3 +0x94C9 0x410E +0x94CB 0x8496 +0x94CC 0x79A5 +0x94CD 0x6A2D +0x94CE 0x23EFA +0x94CF 0x7A3A +0x94D0 0x79F4 +0x94D1 0x416E +0x94D2 0x216E6 +0x94D3 0x4132 +0x94D4 0x9235 +0x94D5 0x79F1 +0x94D6 0x20D4C +0x94D7 0x2498C +0x94D8 0x20299 +0x94D9 0x23DBA +0x94DA 0x2176E +0x94DB 0x3597 +0x94DC 0x556B +0x94DD 0x3570 +0x94DE 0x36AA +0x94DF 0x201D4 +0x94E0 0x20C0D +0x94E1 0x7AE2 +0x94E2 0x5A59 +0x94E3 0x226F5 +0x94E4 0x25AAF +0x94E5 0x25A9C +0x94E6 0x5A0D +0x94E7 0x2025B +0x94E8 0x78F0 +0x94E9 0x5A2A +0x94EA 0x25BC6 +0x94EB 0x7AFE +0x94EC 0x41F9 +0x94ED 0x7C5D +0x94EE 0x7C6D +0x94EF 0x4211 +0x94F0 0x25BB3 +0x94F1 0x25EBC +0x94F2 0x25EA6 +0x94F3 0x7CCD +0x94F4 0x249F9 +0x94F5 0x217B0 +0x94F6 0x7C8E +0x94F7 0x7C7C +0x94F8 0x7CAE +0x94F9 0x6AB2 +0x94FA 0x7DDC +0x94FB 0x7E07 +0x94FC 0x7DD3 +0x94FD 0x7F4E +0x94FE 0x26261 +0x9540 0x2615C +0x9541 0x27B48 +0x9542 0x7D97 +0x9543 0x25E82 +0x9544 0x426A +0x9545 0x26B75 +0x9546 0x20916 +0x9547 0x67D6 +0x9548 0x2004E +0x9549 0x235CF +0x954A 0x57C4 +0x954B 0x26412 +0x954C 0x263F8 +0x954D 0x24962 +0x954E 0x7FDD +0x954F 0x7B27 +0x9550 0x2082C +0x9551 0x25AE9 +0x9552 0x25D43 +0x9553 0x7B0C +0x9554 0x25E0E +0x9555 0x99E6 +0x9556 0x8645 +0x9557 0x9A63 +0x9558 0x6A1C +0x9559 0x2343F +0x955A 0x39E2 +0x955B 0x249F7 +0x955C 0x265AD +0x955D 0x9A1F +0x955E 0x265A0 +0x955F 0x8480 +0x9560 0x27127 +0x9561 0x26CD1 +0x9562 0x44EA +0x9563 0x8137 +0x9564 0x4402 +0x9565 0x80C6 +0x9566 0x8109 +0x9567 0x8142 +0x9568 0x267B4 +0x9569 0x98C3 +0x956A 0x26A42 +0x956B 0x8262 +0x956C 0x8265 +0x956D 0x26A51 +0x956E 0x8453 +0x956F 0x26DA7 +0x9570 0x8610 +0x9571 0x2721B +0x9572 0x5A86 +0x9573 0x417F +0x9574 0x21840 +0x9575 0x5B2B +0x9576 0x218A1 +0x9577 0x5AE4 +0x9578 0x218D8 +0x9579 0x86A0 +0x957A 0x2F9BC +0x957B 0x23D8F +0x957C 0x882D +0x957D 0x27422 +0x957E 0x5A02 +0x95A1 0x886E +0x95A2 0x4F45 +0x95A3 0x8887 +0x95A4 0x88BF +0x95A5 0x88E6 +0x95A6 0x8965 +0x95A7 0x894D +0x95A8 0x25683 +0x95A9 0x8954 +0x95AA 0x27785 +0x95AB 0x27784 +0x95AC 0x28BF5 +0x95AD 0x28BD9 +0x95AE 0x28B9C +0x95AF 0x289F9 +0x95B0 0x3EAD +0x95B1 0x84A3 +0x95B2 0x46F5 +0x95B3 0x46CF +0x95B4 0x37F2 +0x95B5 0x8A3D +0x95B6 0x8A1C +0x95B7 0x29448 +0x95B8 0x5F4D +0x95B9 0x922B +0x95BA 0x24284 +0x95BB 0x65D4 +0x95BC 0x7129 +0x95BD 0x70C4 +0x95BE 0x21845 +0x95BF 0x9D6D +0x95C0 0x8C9F +0x95C1 0x8CE9 +0x95C2 0x27DDC +0x95C3 0x599A +0x95C4 0x77C3 +0x95C5 0x59F0 +0x95C6 0x436E +0x95C7 0x36D4 +0x95C8 0x8E2A +0x95C9 0x8EA7 +0x95CA 0x24C09 +0x95CB 0x8F30 +0x95CC 0x8F4A +0x95CD 0x42F4 +0x95CE 0x6C58 +0x95CF 0x6FBB +0x95D0 0x22321 +0x95D1 0x489B +0x95D2 0x6F79 +0x95D3 0x6E8B +0x95D4 0x217DA +0x95D5 0x9BE9 +0x95D6 0x36B5 +0x95D7 0x2492F +0x95D8 0x90BB +0x95DA 0x5571 +0x95DB 0x4906 +0x95DC 0x91BB +0x95DD 0x9404 +0x95DE 0x28A4B +0x95DF 0x4062 +0x95E0 0x28AFC +0x95E1 0x9427 +0x95E2 0x28C1D +0x95E3 0x28C3B +0x95E4 0x84E5 +0x95E5 0x8A2B +0x95E6 0x9599 +0x95E7 0x95A7 +0x95E8 0x9597 +0x95E9 0x9596 +0x95EA 0x28D34 +0x95EB 0x7445 +0x95EC 0x3EC2 +0x95ED 0x248FF +0x95EE 0x24A42 +0x95EF 0x243EA +0x95F0 0x3EE7 +0x95F1 0x23225 +0x95F2 0x968F +0x95F3 0x28EE7 +0x95F4 0x28E66 +0x95F5 0x28E65 +0x95F6 0x3ECC +0x95F7 0x249ED +0x95F8 0x24A78 +0x95F9 0x23FEE +0x95FA 0x7412 +0x95FB 0x746B +0x95FC 0x3EFC +0x95FD 0x9741 +0x95FE 0x290B0 +0x9640 0x6847 +0x9641 0x4A1D +0x9642 0x29093 +0x9643 0x257DF +0x9645 0x9368 +0x9646 0x28989 +0x9647 0x28C26 +0x9648 0x28B2F +0x9649 0x263BE +0x964A 0x92BA +0x964B 0x5B11 +0x964C 0x8B69 +0x964D 0x493C +0x964E 0x73F9 +0x964F 0x2421B +0x9650 0x979B +0x9651 0x9771 +0x9652 0x9938 +0x9653 0x20F26 +0x9654 0x5DC1 +0x9655 0x28BC5 +0x9656 0x24AB2 +0x9657 0x981F +0x9658 0x294DA +0x9659 0x92F6 +0x965A 0x295D7 +0x965B 0x91E5 +0x965C 0x44C0 +0x965D 0x28B50 +0x965E 0x24A67 +0x965F 0x28B64 +0x9660 0x98DC +0x9661 0x28A45 +0x9662 0x3F00 +0x9663 0x922A +0x9664 0x4925 +0x9665 0x8414 +0x9666 0x993B +0x9667 0x994D +0x9668 0x27B06 +0x9669 0x3DFD +0x966A 0x999B +0x966B 0x4B6F +0x966C 0x99AA +0x966D 0x9A5C +0x966E 0x28B65 +0x966F 0x258C8 +0x9670 0x6A8F +0x9671 0x9A21 +0x9672 0x5AFE +0x9673 0x9A2F +0x9674 0x298F1 +0x9675 0x4B90 +0x9676 0x29948 +0x9677 0x99BC +0x9678 0x4BBD +0x9679 0x4B97 +0x967A 0x937D +0x967B 0x5872 +0x967C 0x21302 +0x967D 0x5822 +0x967E 0x249B8 +0x96A1 0x214E8 +0x96A2 0x7844 +0x96A3 0x2271F +0x96A4 0x23DB8 +0x96A5 0x68C5 +0x96A6 0x3D7D +0x96A7 0x9458 +0x96A8 0x3927 +0x96A9 0x6150 +0x96AA 0x22781 +0x96AB 0x2296B +0x96AC 0x6107 +0x96AD 0x9C4F +0x96AE 0x9C53 +0x96AF 0x9C7B +0x96B0 0x9C35 +0x96B1 0x9C10 +0x96B2 0x9B7F +0x96B3 0x9BCF +0x96B4 0x29E2D +0x96B5 0x9B9F +0x96B6 0x2A1F5 +0x96B7 0x2A0FE +0x96B8 0x9D21 +0x96B9 0x4CAE +0x96BA 0x24104 +0x96BB 0x9E18 +0x96BC 0x4CB0 +0x96BD 0x9D0C +0x96BE 0x2A1B4 +0x96BF 0x2A0ED +0x96C0 0x2A0F3 +0x96C1 0x2992F +0x96C2 0x9DA5 +0x96C3 0x84BD +0x96C4 0x26E12 +0x96C5 0x26FDF +0x96C6 0x26B82 +0x96C7 0x85FC +0x96C8 0x4533 +0x96C9 0x26DA4 +0x96CA 0x26E84 +0x96CB 0x26DF0 +0x96CC 0x8420 +0x96CD 0x85EE +0x96CE 0x26E00 +0x96CF 0x237D7 +0x96D0 0x26064 +0x96D1 0x79E2 +0x96D2 0x2359C +0x96D3 0x23640 +0x96D4 0x492D +0x96D5 0x249DE +0x96D6 0x3D62 +0x96D7 0x93DB +0x96D8 0x92BE +0x96D9 0x9348 +0x96DA 0x202BF +0x96DB 0x78B9 +0x96DC 0x9277 +0x96DD 0x944D +0x96DE 0x4FE4 +0x96DF 0x3440 +0x96E0 0x9064 +0x96E1 0x2555D +0x96E2 0x783D +0x96E3 0x7854 +0x96E4 0x78B6 +0x96E5 0x784B +0x96E6 0x21757 +0x96E7 0x231C9 +0x96E8 0x24941 +0x96E9 0x369A +0x96EA 0x4F72 +0x96EB 0x6FDA +0x96EC 0x6FD9 +0x96EE 0x701E +0x96EF 0x5414 +0x96F0 0x241B5 +0x96F1 0x57BB +0x96F2 0x58F3 +0x96F3 0x578A +0x96F4 0x9D16 +0x96F5 0x57D7 +0x96F6 0x7134 +0x96F7 0x34AF +0x96F8 0x241AC +0x96F9 0x71EB +0x96FA 0x26C40 +0x96FB 0x24F97 +0x96FD 0x217B5 +0x96FE 0x28A49 +0x9740 0x610C +0x9741 0x5ACE +0x9742 0x5A0B +0x9743 0x42BC +0x9744 0x24488 +0x9745 0x372C +0x9746 0x4B7B +0x9747 0x289FC +0x9748 0x93BB +0x9749 0x93B8 +0x974A 0x218D6 +0x974B 0x20F1D +0x974C 0x8472 +0x974D 0x26CC0 +0x974E 0x21413 +0x974F 0x242FA +0x9750 0x22C26 +0x9751 0x243C1 +0x9752 0x5994 +0x9753 0x23DB7 +0x9754 0x26741 +0x9755 0x7DA8 +0x9756 0x2615B +0x9757 0x260A4 +0x9758 0x249B9 +0x9759 0x2498B +0x975A 0x289FA +0x975B 0x92E5 +0x975C 0x73E2 +0x975D 0x3EE9 +0x975E 0x74B4 +0x975F 0x28B63 +0x9760 0x2189F +0x9761 0x3EE1 +0x9762 0x24AB3 +0x9763 0x6AD8 +0x9764 0x73F3 +0x9765 0x73FB +0x9766 0x3ED6 +0x9767 0x24A3E +0x9768 0x24A94 +0x9769 0x217D9 +0x976A 0x24A66 +0x976B 0x203A7 +0x976C 0x21424 +0x976D 0x249E5 +0x976E 0x7448 +0x976F 0x24916 +0x9770 0x70A5 +0x9771 0x24976 +0x9772 0x9284 +0x9773 0x73E6 +0x9774 0x935F +0x9775 0x204FE +0x9776 0x9331 +0x9777 0x28ACE +0x9778 0x28A16 +0x9779 0x9386 +0x977A 0x28BE7 +0x977B 0x255D5 +0x977C 0x4935 +0x977D 0x28A82 +0x977E 0x716B +0x97A1 0x24943 +0x97A2 0x20CFF +0x97A3 0x56A4 +0x97A4 0x2061A +0x97A5 0x20BEB +0x97A6 0x20CB8 +0x97A7 0x5502 +0x97A8 0x79C4 +0x97A9 0x217FA +0x97AA 0x7DFE +0x97AB 0x216C2 +0x97AC 0x24A50 +0x97AD 0x21852 +0x97AE 0x452E +0x97AF 0x9401 +0x97B0 0x370A +0x97B1 0x28AC0 +0x97B2 0x249AD +0x97B3 0x59B0 +0x97B4 0x218BF +0x97B5 0x21883 +0x97B6 0x27484 +0x97B7 0x5AA1 +0x97B8 0x36E2 +0x97B9 0x23D5B +0x97BA 0x36B0 +0x97BB 0x925F +0x97BC 0x5A79 +0x97BD 0x28A81 +0x97BE 0x21862 +0x97BF 0x9374 +0x97C0 0x3CCD +0x97C1 0x20AB4 +0x97C2 0x4A96 +0x97C3 0x398A +0x97C4 0x50F4 +0x97C5 0x3D69 +0x97C6 0x3D4C +0x97C7 0x2139C +0x97C8 0x7175 +0x97C9 0x42FB +0x97CA 0x28218 +0x97CB 0x6E0F +0x97CC 0x290E4 +0x97CD 0x44EB +0x97CE 0x6D57 +0x97CF 0x27E4F +0x97D0 0x7067 +0x97D1 0x6CAF +0x97D2 0x3CD6 +0x97D3 0x23FED +0x97D4 0x23E2D +0x97D5 0x6E02 +0x97D6 0x6F0C +0x97D7 0x3D6F +0x97D8 0x203F5 +0x97D9 0x7551 +0x97DA 0x36BC +0x97DB 0x34C8 +0x97DC 0x4680 +0x97DD 0x3EDA +0x97DE 0x4871 +0x97DF 0x59C4 +0x97E0 0x926E +0x97E1 0x493E +0x97E2 0x8F41 +0x97E3 0x28C1C +0x97E4 0x26BC0 +0x97E5 0x5812 +0x97E6 0x57C8 +0x97E7 0x36D6 +0x97E8 0x21452 +0x97E9 0x70FE +0x97EA 0x24362 +0x97EB 0x24A71 +0x97EC 0x22FE3 +0x97ED 0x212B0 +0x97EE 0x223BD +0x97EF 0x68B9 +0x97F0 0x6967 +0x97F1 0x21398 +0x97F2 0x234E5 +0x97F3 0x27BF4 +0x97F4 0x236DF +0x97F5 0x28A83 +0x97F6 0x237D6 +0x97F7 0x233FA +0x97F8 0x24C9F +0x97F9 0x6A1A +0x97FA 0x236AD +0x97FB 0x26CB7 +0x97FC 0x843E +0x97FD 0x44DF +0x97FE 0x44CE +0x9840 0x26D26 +0x9841 0x26D51 +0x9842 0x26C82 +0x9843 0x26FDE +0x9844 0x6F17 +0x9845 0x27109 +0x9846 0x833D +0x9847 0x2173A +0x9848 0x83ED +0x9849 0x26C80 +0x984A 0x27053 +0x984B 0x217DB +0x984C 0x5989 +0x984D 0x5A82 +0x984E 0x217B3 +0x984F 0x5A61 +0x9850 0x5A71 +0x9851 0x21905 +0x9852 0x241FC +0x9853 0x372D +0x9854 0x59EF +0x9855 0x2173C +0x9856 0x36C7 +0x9857 0x718E +0x9858 0x9390 +0x9859 0x669A +0x985A 0x242A5 +0x985B 0x5A6E +0x985C 0x5A2B +0x985D 0x24293 +0x985E 0x6A2B +0x985F 0x23EF9 +0x9860 0x27736 +0x9861 0x2445B +0x9862 0x242CA +0x9863 0x711D +0x9864 0x24259 +0x9865 0x289E1 +0x9866 0x4FB0 +0x9867 0x26D28 +0x9868 0x5CC2 +0x9869 0x244CE +0x986A 0x27E4D +0x986B 0x243BD +0x986C 0x6A0C +0x986D 0x24256 +0x986E 0x21304 +0x986F 0x70A6 +0x9870 0x7133 +0x9871 0x243E9 +0x9872 0x3DA5 +0x9873 0x6CDF +0x9874 0x2F825 +0x9875 0x24A4F +0x9876 0x7E65 +0x9877 0x59EB +0x9878 0x5D2F +0x9879 0x3DF3 +0x987A 0x5F5C +0x987B 0x24A5D +0x987C 0x217DF +0x987D 0x7DA4 +0x987E 0x8426 +0x98A1 0x5485 +0x98A2 0x23AFA +0x98A3 0x23300 +0x98A4 0x20214 +0x98A5 0x577E +0x98A6 0x208D5 +0x98A7 0x20619 +0x98A8 0x3FE5 +0x98A9 0x21F9E +0x98AA 0x2A2B6 +0x98AB 0x7003 +0x98AC 0x2915B +0x98AD 0x5D70 +0x98AE 0x738F +0x98AF 0x7CD3 +0x98B0 0x28A59 +0x98B1 0x29420 +0x98B2 0x4FC8 +0x98B3 0x7FE7 +0x98B4 0x72CD +0x98B5 0x7310 +0x98B6 0x27AF4 +0x98B7 0x7338 +0x98B8 0x7339 +0x98B9 0x256F6 +0x98BA 0x7341 +0x98BB 0x7348 +0x98BC 0x3EA9 +0x98BD 0x27B18 +0x98BE 0x906C +0x98BF 0x71F5 +0x98C0 0x248F2 +0x98C1 0x73E1 +0x98C2 0x81F6 +0x98C3 0x3ECA +0x98C4 0x770C +0x98C5 0x3ED1 +0x98C6 0x6CA2 +0x98C7 0x56FD +0x98C8 0x7419 +0x98C9 0x741E +0x98CA 0x741F +0x98CB 0x3EE2 +0x98CC 0x3EF0 +0x98CD 0x3EF4 +0x98CE 0x3EFA +0x98CF 0x74D3 +0x98D0 0x3F0E +0x98D1 0x3F53 +0x98D2 0x7542 +0x98D3 0x756D +0x98D4 0x7572 +0x98D5 0x758D +0x98D6 0x3F7C +0x98D7 0x75C8 +0x98D8 0x75DC +0x98D9 0x3FC0 +0x98DA 0x764D +0x98DB 0x3FD7 +0x98DC 0x7674 +0x98DD 0x3FDC +0x98DE 0x767A +0x98DF 0x24F5C +0x98E0 0x7188 +0x98E1 0x5623 +0x98E2 0x8980 +0x98E3 0x5869 +0x98E4 0x401D +0x98E5 0x7743 +0x98E6 0x4039 +0x98E7 0x6761 +0x98E8 0x4045 +0x98E9 0x35DB +0x98EA 0x7798 +0x98EB 0x406A +0x98EC 0x406F +0x98ED 0x5C5E +0x98EE 0x77BE +0x98EF 0x77CB +0x98F0 0x58F2 +0x98F1 0x7818 +0x98F2 0x70B9 +0x98F3 0x781C +0x98F4 0x40A8 +0x98F5 0x7839 +0x98F6 0x7847 +0x98F7 0x7851 +0x98F8 0x7866 +0x98F9 0x8448 +0x98FA 0x25535 +0x98FB 0x7933 +0x98FC 0x6803 +0x98FD 0x7932 +0x98FE 0x4103 +0x9940 0x4109 +0x9941 0x7991 +0x9942 0x7999 +0x9943 0x8FBB +0x9944 0x7A06 +0x9945 0x8FBC +0x9946 0x4167 +0x9947 0x7A91 +0x9948 0x41B2 +0x9949 0x7ABC +0x994A 0x8279 +0x994B 0x41C4 +0x994C 0x7ACF +0x994D 0x7ADB +0x994E 0x41CF +0x994F 0x4E21 +0x9950 0x7B62 +0x9951 0x7B6C +0x9952 0x7B7B +0x9953 0x7C12 +0x9954 0x7C1B +0x9955 0x4260 +0x9956 0x427A +0x9957 0x7C7B +0x9958 0x7C9C +0x9959 0x428C +0x995A 0x7CB8 +0x995B 0x4294 +0x995C 0x7CED +0x995D 0x8F93 +0x995E 0x70C0 +0x995F 0x20CCF +0x9960 0x7DCF +0x9961 0x7DD4 +0x9962 0x7DD0 +0x9963 0x7DFD +0x9964 0x7FAE +0x9965 0x7FB4 +0x9966 0x729F +0x9967 0x4397 +0x9968 0x8020 +0x9969 0x8025 +0x996A 0x7B39 +0x996B 0x802E +0x996C 0x8031 +0x996D 0x8054 +0x996E 0x3DCC +0x996F 0x57B4 +0x9970 0x70A0 +0x9971 0x80B7 +0x9972 0x80E9 +0x9973 0x43ED +0x9974 0x810C +0x9975 0x732A +0x9976 0x810E +0x9977 0x8112 +0x9978 0x7560 +0x9979 0x8114 +0x997A 0x4401 +0x997B 0x3B39 +0x997C 0x8156 +0x997D 0x8159 +0x997E 0x815A +0x99A1 0x4413 +0x99A2 0x583A +0x99A3 0x817C +0x99A4 0x8184 +0x99A5 0x4425 +0x99A6 0x8193 +0x99A7 0x442D +0x99A8 0x81A5 +0x99A9 0x57EF +0x99AA 0x81C1 +0x99AB 0x81E4 +0x99AC 0x8254 +0x99AD 0x448F +0x99AE 0x82A6 +0x99AF 0x8276 +0x99B0 0x82CA +0x99B1 0x82D8 +0x99B2 0x82FF +0x99B3 0x44B0 +0x99B4 0x8357 +0x99B5 0x9669 +0x99B6 0x698A +0x99B7 0x8405 +0x99B8 0x70F5 +0x99B9 0x8464 +0x99BA 0x60E3 +0x99BB 0x8488 +0x99BC 0x4504 +0x99BD 0x84BE +0x99BE 0x84E1 +0x99BF 0x84F8 +0x99C0 0x8510 +0x99C1 0x8538 +0x99C2 0x8552 +0x99C3 0x453B +0x99C4 0x856F +0x99C5 0x8570 +0x99C6 0x85E0 +0x99C7 0x4577 +0x99C8 0x8672 +0x99C9 0x8692 +0x99CA 0x86B2 +0x99CB 0x86EF +0x99CC 0x9645 +0x99CD 0x878B +0x99CE 0x4606 +0x99CF 0x4617 +0x99D0 0x88AE +0x99D1 0x88FF +0x99D2 0x8924 +0x99D3 0x8947 +0x99D4 0x8991 +0x99D5 0x27967 +0x99D6 0x8A29 +0x99D7 0x8A38 +0x99D8 0x8A94 +0x99D9 0x8AB4 +0x99DA 0x8C51 +0x99DB 0x8CD4 +0x99DC 0x8CF2 +0x99DD 0x8D1C +0x99DE 0x4798 +0x99DF 0x585F +0x99E0 0x8DC3 +0x99E1 0x47ED +0x99E2 0x4EEE +0x99E3 0x8E3A +0x99E4 0x55D8 +0x99E5 0x5754 +0x99E6 0x8E71 +0x99E7 0x55F5 +0x99E8 0x8EB0 +0x99E9 0x4837 +0x99EA 0x8ECE +0x99EB 0x8EE2 +0x99EC 0x8EE4 +0x99ED 0x8EED +0x99EE 0x8EF2 +0x99EF 0x8FB7 +0x99F0 0x8FC1 +0x99F1 0x8FCA +0x99F2 0x8FCC +0x99F3 0x9033 +0x99F4 0x99C4 +0x99F5 0x48AD +0x99F6 0x98E0 +0x99F7 0x9213 +0x99F8 0x491E +0x99F9 0x9228 +0x99FA 0x9258 +0x99FB 0x926B +0x99FC 0x92B1 +0x99FD 0x92AE +0x99FE 0x92BF +0x9A40 0x92E3 +0x9A41 0x92EB +0x9A42 0x92F3 +0x9A43 0x92F4 +0x9A44 0x92FD +0x9A45 0x9343 +0x9A46 0x9384 +0x9A47 0x93AD +0x9A48 0x4945 +0x9A49 0x4951 +0x9A4A 0x9EBF +0x9A4B 0x9417 +0x9A4C 0x5301 +0x9A4D 0x941D +0x9A4E 0x942D +0x9A4F 0x943E +0x9A50 0x496A +0x9A51 0x9454 +0x9A52 0x9479 +0x9A53 0x952D +0x9A54 0x95A2 +0x9A55 0x49A7 +0x9A56 0x95F4 +0x9A57 0x9633 +0x9A58 0x49E5 +0x9A59 0x67A0 +0x9A5A 0x4A24 +0x9A5B 0x9740 +0x9A5C 0x4A35 +0x9A5D 0x97B2 +0x9A5E 0x97C2 +0x9A5F 0x5654 +0x9A60 0x4AE4 +0x9A61 0x60E8 +0x9A62 0x98B9 +0x9A63 0x4B19 +0x9A64 0x98F1 +0x9A65 0x5844 +0x9A66 0x990E +0x9A67 0x9919 +0x9A68 0x51B4 +0x9A69 0x991C +0x9A6A 0x9937 +0x9A6B 0x9942 +0x9A6C 0x995D +0x9A6D 0x9962 +0x9A6E 0x4B70 +0x9A6F 0x99C5 +0x9A70 0x4B9D +0x9A71 0x9A3C +0x9A72 0x9B0F +0x9A73 0x7A83 +0x9A74 0x9B69 +0x9A75 0x9B81 +0x9A76 0x9BDD +0x9A77 0x9BF1 +0x9A78 0x9BF4 +0x9A79 0x4C6D +0x9A7A 0x9C20 +0x9A7B 0x376F +0x9A7C 0x21BC2 +0x9A7D 0x9D49 +0x9A7E 0x9C3A +0x9AA1 0x9EFE +0x9AA2 0x5650 +0x9AA3 0x9D93 +0x9AA4 0x9DBD +0x9AA5 0x9DC0 +0x9AA6 0x9DFC +0x9AA7 0x94F6 +0x9AA8 0x8FB6 +0x9AA9 0x9E7B +0x9AAA 0x9EAC +0x9AAB 0x9EB1 +0x9AAC 0x9EBD +0x9AAD 0x9EC6 +0x9AAE 0x94DC +0x9AAF 0x9EE2 +0x9AB0 0x9EF1 +0x9AB1 0x9EF8 +0x9AB2 0x7AC8 +0x9AB3 0x9F44 +0x9AB4 0x20094 +0x9AB5 0x202B7 +0x9AB6 0x203A0 +0x9AB7 0x691A +0x9AB8 0x94C3 +0x9AB9 0x59AC +0x9ABA 0x204D7 +0x9ABB 0x5840 +0x9ABC 0x94C1 +0x9ABD 0x37B9 +0x9ABE 0x205D5 +0x9ABF 0x20615 +0x9AC0 0x20676 +0x9AC1 0x216BA +0x9AC2 0x5757 +0x9AC3 0x7173 +0x9AC4 0x20AC2 +0x9AC5 0x20ACD +0x9AC6 0x20BBF +0x9AC7 0x546A +0x9AC8 0x2F83B +0x9AC9 0x20BCB +0x9ACA 0x549E +0x9ACB 0x20BFB +0x9ACC 0x20C3B +0x9ACD 0x20C53 +0x9ACE 0x20C65 +0x9ACF 0x20C7C +0x9AD0 0x60E7 +0x9AD1 0x20C8D +0x9AD2 0x567A +0x9AD3 0x20CB5 +0x9AD4 0x20CDD +0x9AD5 0x20CED +0x9AD6 0x20D6F +0x9AD7 0x20DB2 +0x9AD8 0x20DC8 +0x9AD9 0x6955 +0x9ADA 0x9C2F +0x9ADB 0x87A5 +0x9ADC 0x20E04 +0x9ADD 0x20E0E +0x9ADE 0x20ED7 +0x9ADF 0x20F90 +0x9AE0 0x20F2D +0x9AE1 0x20E73 +0x9AE2 0x5C20 +0x9AE3 0x20FBC +0x9AE4 0x5E0B +0x9AE5 0x2105C +0x9AE6 0x2104F +0x9AE7 0x21076 +0x9AE8 0x671E +0x9AE9 0x2107B +0x9AEA 0x21088 +0x9AEB 0x21096 +0x9AEC 0x3647 +0x9AED 0x210BF +0x9AEE 0x210D3 +0x9AEF 0x2112F +0x9AF0 0x2113B +0x9AF1 0x5364 +0x9AF2 0x84AD +0x9AF3 0x212E3 +0x9AF4 0x21375 +0x9AF5 0x21336 +0x9AF6 0x8B81 +0x9AF7 0x21577 +0x9AF8 0x21619 +0x9AF9 0x217C3 +0x9AFA 0x217C7 +0x9AFB 0x4E78 +0x9AFC 0x70BB +0x9AFD 0x2182D +0x9AFE 0x2196A +0x9B40 0x21A2D +0x9B41 0x21A45 +0x9B42 0x21C2A +0x9B43 0x21C70 +0x9B44 0x21CAC +0x9B45 0x21EC8 +0x9B46 0x62C3 +0x9B47 0x21ED5 +0x9B48 0x21F15 +0x9B49 0x7198 +0x9B4A 0x6855 +0x9B4B 0x22045 +0x9B4C 0x69E9 +0x9B4D 0x36C8 +0x9B4E 0x2227C +0x9B4F 0x223D7 +0x9B50 0x223FA +0x9B51 0x2272A +0x9B52 0x22871 +0x9B53 0x2294F +0x9B54 0x82FD +0x9B55 0x22967 +0x9B56 0x22993 +0x9B57 0x22AD5 +0x9B58 0x89A5 +0x9B59 0x22AE8 +0x9B5A 0x8FA0 +0x9B5B 0x22B0E +0x9B5C 0x97B8 +0x9B5D 0x22B3F +0x9B5E 0x9847 +0x9B5F 0x9ABD +0x9B60 0x22C4C +0x9B62 0x22C88 +0x9B63 0x22CB7 +0x9B64 0x25BE8 +0x9B65 0x22D08 +0x9B66 0x22D12 +0x9B67 0x22DB7 +0x9B68 0x22D95 +0x9B69 0x22E42 +0x9B6A 0x22F74 +0x9B6B 0x22FCC +0x9B6C 0x23033 +0x9B6D 0x23066 +0x9B6E 0x2331F +0x9B6F 0x233DE +0x9B70 0x5FB1 +0x9B71 0x6648 +0x9B72 0x66BF +0x9B73 0x27A79 +0x9B74 0x23567 +0x9B75 0x235F3 +0x9B77 0x249BA +0x9B79 0x2361A +0x9B7A 0x23716 +0x9B7C 0x20346 +0x9B7D 0x58B5 +0x9B7E 0x670E +0x9BA1 0x6918 +0x9BA2 0x23AA7 +0x9BA3 0x27657 +0x9BA4 0x25FE2 +0x9BA5 0x23E11 +0x9BA6 0x23EB9 +0x9BA7 0x275FE +0x9BA8 0x2209A +0x9BA9 0x48D0 +0x9BAA 0x4AB8 +0x9BAB 0x24119 +0x9BAC 0x28A9A +0x9BAD 0x242EE +0x9BAE 0x2430D +0x9BAF 0x2403B +0x9BB0 0x24334 +0x9BB1 0x24396 +0x9BB2 0x24A45 +0x9BB3 0x205CA +0x9BB4 0x51D2 +0x9BB5 0x20611 +0x9BB6 0x599F +0x9BB7 0x21EA8 +0x9BB8 0x3BBE +0x9BB9 0x23CFF +0x9BBA 0x24404 +0x9BBB 0x244D6 +0x9BBC 0x5788 +0x9BBD 0x24674 +0x9BBE 0x399B +0x9BBF 0x2472F +0x9BC0 0x285E8 +0x9BC1 0x299C9 +0x9BC2 0x3762 +0x9BC3 0x221C3 +0x9BC4 0x8B5E +0x9BC5 0x28B4E +0x9BC7 0x24812 +0x9BC8 0x248FB +0x9BC9 0x24A15 +0x9BCA 0x7209 +0x9BCB 0x24AC0 +0x9BCC 0x20C78 +0x9BCD 0x5965 +0x9BCE 0x24EA5 +0x9BCF 0x24F86 +0x9BD0 0x20779 +0x9BD1 0x8EDA +0x9BD2 0x2502C +0x9BD3 0x528F +0x9BD4 0x573F +0x9BD5 0x7171 +0x9BD6 0x25299 +0x9BD7 0x25419 +0x9BD8 0x23F4A +0x9BD9 0x24AA7 +0x9BDA 0x55BC +0x9BDB 0x25446 +0x9BDC 0x2546E +0x9BDD 0x26B52 +0x9BDF 0x3473 +0x9BE0 0x2553F +0x9BE1 0x27632 +0x9BE2 0x2555E +0x9BE3 0x4718 +0x9BE4 0x25562 +0x9BE5 0x25566 +0x9BE6 0x257C7 +0x9BE7 0x2493F +0x9BE8 0x2585D +0x9BE9 0x5066 +0x9BEA 0x34FB +0x9BEB 0x233CC +0x9BED 0x25903 +0x9BEE 0x477C +0x9BEF 0x28948 +0x9BF0 0x25AAE +0x9BF1 0x25B89 +0x9BF2 0x25C06 +0x9BF3 0x21D90 +0x9BF4 0x57A1 +0x9BF5 0x7151 +0x9BF7 0x26102 +0x9BF8 0x27C12 +0x9BF9 0x9056 +0x9BFA 0x261B2 +0x9BFB 0x24F9A +0x9BFC 0x8B62 +0x9BFD 0x26402 +0x9BFE 0x2644A +0x9C40 0x5D5B +0x9C41 0x26BF7 +0x9C43 0x26484 +0x9C44 0x2191C +0x9C45 0x8AEA +0x9C46 0x249F6 +0x9C47 0x26488 +0x9C48 0x23FEF +0x9C49 0x26512 +0x9C4A 0x4BC0 +0x9C4B 0x265BF +0x9C4C 0x266B5 +0x9C4D 0x2271B +0x9C4E 0x9465 +0x9C4F 0x257E1 +0x9C50 0x6195 +0x9C51 0x5A27 +0x9C52 0x2F8CD +0x9C54 0x56B9 +0x9C55 0x24521 +0x9C56 0x266FC +0x9C57 0x4E6A +0x9C58 0x24934 +0x9C59 0x9656 +0x9C5A 0x6D8F +0x9C5B 0x26CBD +0x9C5C 0x3618 +0x9C5D 0x8977 +0x9C5E 0x26799 +0x9C5F 0x2686E +0x9C60 0x26411 +0x9C61 0x2685E +0x9C63 0x268C7 +0x9C64 0x7B42 +0x9C65 0x290C0 +0x9C66 0x20A11 +0x9C67 0x26926 +0x9C69 0x26939 +0x9C6A 0x7A45 +0x9C6C 0x269FA +0x9C6D 0x9A26 +0x9C6E 0x26A2D +0x9C6F 0x365F +0x9C70 0x26469 +0x9C71 0x20021 +0x9C72 0x7983 +0x9C73 0x26A34 +0x9C74 0x26B5B +0x9C75 0x5D2C +0x9C76 0x23519 +0x9C78 0x26B9D +0x9C79 0x46D0 +0x9C7A 0x26CA4 +0x9C7B 0x753B +0x9C7C 0x8865 +0x9C7D 0x26DAE +0x9C7E 0x58B6 +0x9CA1 0x371C +0x9CA2 0x2258D +0x9CA3 0x2704B +0x9CA4 0x271CD +0x9CA5 0x3C54 +0x9CA6 0x27280 +0x9CA7 0x27285 +0x9CA8 0x9281 +0x9CA9 0x2217A +0x9CAA 0x2728B +0x9CAB 0x9330 +0x9CAC 0x272E6 +0x9CAD 0x249D0 +0x9CAE 0x6C39 +0x9CAF 0x949F +0x9CB0 0x27450 +0x9CB1 0x20EF8 +0x9CB2 0x8827 +0x9CB3 0x88F5 +0x9CB4 0x22926 +0x9CB5 0x28473 +0x9CB6 0x217B1 +0x9CB7 0x6EB8 +0x9CB8 0x24A2A +0x9CB9 0x21820 +0x9CBA 0x39A4 +0x9CBB 0x36B9 +0x9CBE 0x453F +0x9CBF 0x66B6 +0x9CC0 0x29CAD +0x9CC1 0x298A4 +0x9CC2 0x8943 +0x9CC3 0x277CC +0x9CC4 0x27858 +0x9CC5 0x56D6 +0x9CC6 0x40DF +0x9CC7 0x2160A +0x9CC8 0x39A1 +0x9CC9 0x2372F +0x9CCA 0x280E8 +0x9CCB 0x213C5 +0x9CCC 0x71AD +0x9CCD 0x8366 +0x9CCE 0x279DD +0x9CCF 0x291A8 +0x9CD1 0x4CB7 +0x9CD2 0x270AF +0x9CD3 0x289AB +0x9CD4 0x279FD +0x9CD5 0x27A0A +0x9CD6 0x27B0B +0x9CD7 0x27D66 +0x9CD8 0x2417A +0x9CD9 0x7B43 +0x9CDA 0x797E +0x9CDB 0x28009 +0x9CDC 0x6FB5 +0x9CDD 0x2A2DF +0x9CDE 0x6A03 +0x9CDF 0x28318 +0x9CE0 0x53A2 +0x9CE1 0x26E07 +0x9CE2 0x93BF +0x9CE3 0x6836 +0x9CE4 0x975D +0x9CE5 0x2816F +0x9CE6 0x28023 +0x9CE7 0x269B5 +0x9CE8 0x213ED +0x9CE9 0x2322F +0x9CEA 0x28048 +0x9CEB 0x5D85 +0x9CEC 0x28C30 +0x9CED 0x28083 +0x9CEE 0x5715 +0x9CEF 0x9823 +0x9CF0 0x28949 +0x9CF1 0x5DAB +0x9CF2 0x24988 +0x9CF3 0x65BE +0x9CF4 0x69D5 +0x9CF5 0x53D2 +0x9CF6 0x24AA5 +0x9CF7 0x23F81 +0x9CF8 0x3C11 +0x9CF9 0x6736 +0x9CFA 0x28090 +0x9CFB 0x280F4 +0x9CFC 0x2812E +0x9CFD 0x21FA1 +0x9CFE 0x2814F +0x9D40 0x28189 +0x9D41 0x281AF +0x9D42 0x2821A +0x9D43 0x28306 +0x9D44 0x2832F +0x9D45 0x2838A +0x9D46 0x35CA +0x9D47 0x28468 +0x9D48 0x286AA +0x9D49 0x48FA +0x9D4A 0x63E6 +0x9D4B 0x28956 +0x9D4C 0x7808 +0x9D4D 0x9255 +0x9D4E 0x289B8 +0x9D4F 0x43F2 +0x9D50 0x289E7 +0x9D51 0x43DF +0x9D52 0x289E8 +0x9D53 0x28B46 +0x9D54 0x28BD4 +0x9D55 0x59F8 +0x9D56 0x28C09 +0x9D58 0x28FC5 +0x9D59 0x290EC +0x9D5B 0x29110 +0x9D5C 0x2913C +0x9D5D 0x3DF7 +0x9D5E 0x2915E +0x9D5F 0x24ACA +0x9D60 0x8FD0 +0x9D61 0x728F +0x9D62 0x568B +0x9D63 0x294E7 +0x9D64 0x295E9 +0x9D65 0x295B0 +0x9D66 0x295B8 +0x9D67 0x29732 +0x9D68 0x298D1 +0x9D69 0x29949 +0x9D6A 0x2996A +0x9D6B 0x299C3 +0x9D6C 0x29A28 +0x9D6D 0x29B0E +0x9D6E 0x29D5A +0x9D6F 0x29D9B +0x9D70 0x7E9F +0x9D71 0x29EF8 +0x9D72 0x29F23 +0x9D73 0x4CA4 +0x9D74 0x9547 +0x9D75 0x2A293 +0x9D76 0x71A2 +0x9D77 0x2A2FF +0x9D78 0x4D91 +0x9D79 0x9012 +0x9D7A 0x2A5CB +0x9D7B 0x4D9C +0x9D7C 0x20C9C +0x9D7D 0x8FBE +0x9D7E 0x55C1 +0x9DA1 0x8FBA +0x9DA2 0x224B0 +0x9DA3 0x8FB9 +0x9DA4 0x24A93 +0x9DA5 0x4509 +0x9DA6 0x7E7F +0x9DA7 0x6F56 +0x9DA8 0x6AB1 +0x9DA9 0x4EEA +0x9DAA 0x34E4 +0x9DAB 0x28B2C +0x9DAC 0x2789D +0x9DAD 0x373A +0x9DAE 0x8E80 +0x9DAF 0x217F5 +0x9DB0 0x28024 +0x9DB1 0x28B6C +0x9DB2 0x28B99 +0x9DB3 0x27A3E +0x9DB4 0x266AF +0x9DB5 0x3DEB +0x9DB6 0x27655 +0x9DB7 0x23CB7 +0x9DB8 0x25635 +0x9DB9 0x25956 +0x9DBA 0x4E9A +0x9DBB 0x25E81 +0x9DBC 0x26258 +0x9DBD 0x56BF +0x9DBE 0x20E6D +0x9DBF 0x8E0E +0x9DC0 0x5B6D +0x9DC1 0x23E88 +0x9DC2 0x24C9E +0x9DC3 0x63DE +0x9DC5 0x217F6 +0x9DC6 0x2187B +0x9DC7 0x6530 +0x9DC8 0x562D +0x9DC9 0x25C4A +0x9DCA 0x541A +0x9DCB 0x25311 +0x9DCC 0x3DC6 +0x9DCD 0x29D98 +0x9DCE 0x4C7D +0x9DCF 0x5622 +0x9DD0 0x561E +0x9DD1 0x7F49 +0x9DD2 0x25ED8 +0x9DD3 0x5975 +0x9DD4 0x23D40 +0x9DD5 0x8770 +0x9DD6 0x4E1C +0x9DD7 0x20FEA +0x9DD8 0x20D49 +0x9DD9 0x236BA +0x9DDA 0x8117 +0x9DDB 0x9D5E +0x9DDC 0x8D18 +0x9DDD 0x763B +0x9DDE 0x9C45 +0x9DDF 0x764E +0x9DE0 0x77B9 +0x9DE1 0x9345 +0x9DE2 0x5432 +0x9DE3 0x8148 +0x9DE4 0x82F7 +0x9DE5 0x5625 +0x9DE6 0x8132 +0x9DE7 0x8418 +0x9DE8 0x80BD +0x9DE9 0x55EA +0x9DEA 0x7962 +0x9DEB 0x5643 +0x9DEC 0x5416 +0x9DED 0x20E9D +0x9DEE 0x35CE +0x9DEF 0x5605 +0x9DF0 0x55F1 +0x9DF1 0x66F1 +0x9DF2 0x282E2 +0x9DF3 0x362D +0x9DF4 0x7534 +0x9DF5 0x55F0 +0x9DF6 0x55BA +0x9DF7 0x5497 +0x9DF8 0x5572 +0x9DF9 0x20C41 +0x9DFA 0x20C96 +0x9DFB 0x5ED0 +0x9DFC 0x25148 +0x9DFD 0x20E76 +0x9DFE 0x22C62 +0x9E40 0x20EA2 +0x9E41 0x9EAB +0x9E42 0x7D5A +0x9E43 0x55DE +0x9E44 0x21075 +0x9E45 0x629D +0x9E46 0x976D +0x9E47 0x5494 +0x9E48 0x8CCD +0x9E49 0x71F6 +0x9E4A 0x9176 +0x9E4B 0x63FC +0x9E4C 0x63B9 +0x9E4D 0x63FE +0x9E4E 0x5569 +0x9E4F 0x22B43 +0x9E50 0x9C72 +0x9E51 0x22EB3 +0x9E52 0x519A +0x9E53 0x34DF +0x9E54 0x20DA7 +0x9E55 0x51A7 +0x9E56 0x544D +0x9E57 0x551E +0x9E58 0x5513 +0x9E59 0x7666 +0x9E5A 0x8E2D +0x9E5B 0x2688A +0x9E5C 0x75B1 +0x9E5D 0x80B6 +0x9E5E 0x8804 +0x9E5F 0x8786 +0x9E60 0x88C7 +0x9E61 0x81B6 +0x9E62 0x841C +0x9E63 0x210C1 +0x9E64 0x44EC +0x9E65 0x7304 +0x9E66 0x24706 +0x9E67 0x5B90 +0x9E68 0x830B +0x9E69 0x26893 +0x9E6A 0x567B +0x9E6B 0x226F4 +0x9E6C 0x27D2F +0x9E6D 0x241A3 +0x9E6E 0x27D73 +0x9E6F 0x26ED0 +0x9E70 0x272B6 +0x9E71 0x9170 +0x9E72 0x211D9 +0x9E73 0x9208 +0x9E74 0x23CFC +0x9E75 0x2A6A9 +0x9E76 0x20EAC +0x9E77 0x20EF9 +0x9E78 0x7266 +0x9E79 0x21CA2 +0x9E7A 0x474E +0x9E7B 0x24FC2 +0x9E7C 0x27FF9 +0x9E7D 0x20FEB +0x9E7E 0x40FA +0x9EA1 0x9C5D +0x9EA2 0x651F +0x9EA3 0x22DA0 +0x9EA4 0x48F3 +0x9EA5 0x247E0 +0x9EA6 0x29D7C +0x9EA7 0x20FEC +0x9EA8 0x20E0A +0x9EAA 0x275A3 +0x9EAB 0x20FED +0x9EAD 0x26048 +0x9EAE 0x21187 +0x9EAF 0x71A3 +0x9EB0 0x7E8E +0x9EB1 0x9D50 +0x9EB2 0x4E1A +0x9EB3 0x4E04 +0x9EB4 0x3577 +0x9EB5 0x5B0D +0x9EB6 0x6CB2 +0x9EB7 0x5367 +0x9EB8 0x36AC +0x9EB9 0x39DC +0x9EBA 0x537D +0x9EBB 0x36A5 +0x9EBC 0x24618 +0x9EBD 0x589A +0x9EBE 0x24B6E +0x9EBF 0x822D +0x9EC0 0x544B +0x9EC1 0x57AA +0x9EC2 0x25A95 +0x9EC3 0x20979 +0x9EC5 0x3A52 +0x9EC6 0x22465 +0x9EC7 0x7374 +0x9EC8 0x29EAC +0x9EC9 0x4D09 +0x9ECA 0x9BED +0x9ECB 0x23CFE +0x9ECC 0x29F30 +0x9ECD 0x4C5B +0x9ECE 0x24FA9 +0x9ECF 0x2959E +0x9ED0 0x29FDE +0x9ED1 0x845C +0x9ED2 0x23DB6 +0x9ED3 0x272B2 +0x9ED4 0x267B3 +0x9ED5 0x23720 +0x9ED6 0x632E +0x9ED7 0x7D25 +0x9ED8 0x23EF7 +0x9ED9 0x23E2C +0x9EDA 0x3A2A +0x9EDB 0x9008 +0x9EDC 0x52CC +0x9EDD 0x3E74 +0x9EDE 0x367A +0x9EDF 0x45E9 +0x9EE0 0x2048E +0x9EE1 0x7640 +0x9EE2 0x5AF0 +0x9EE3 0x20EB6 +0x9EE4 0x787A +0x9EE5 0x47B6 +0x9EE6 0x58A7 +0x9EE7 0x40BF +0x9EE8 0x567C +0x9EE9 0x9B8B +0x9EEA 0x5D74 +0x9EEB 0x7654 +0x9EEC 0x2A434 +0x9EED 0x9E85 +0x9EEE 0x4CE1 +0x9EF0 0x37FB +0x9EF1 0x6119 +0x9EF2 0x230DA +0x9EF3 0x243F2 +0x9EF5 0x565D +0x9EF6 0x212A9 +0x9EF7 0x57A7 +0x9EF8 0x24963 +0x9EF9 0x29E06 +0x9EFA 0x5234 +0x9EFB 0x270AE +0x9EFC 0x35AD +0x9EFE 0x9D7C +0x9F40 0x7C56 +0x9F41 0x9B39 +0x9F42 0x57DE +0x9F43 0x2176C +0x9F44 0x5C53 +0x9F45 0x64D3 +0x9F46 0x294D0 +0x9F47 0x26335 +0x9F48 0x27164 +0x9F49 0x86AD +0x9F4A 0x20D28 +0x9F4B 0x26D22 +0x9F4C 0x24AE2 +0x9F4D 0x20D71 +0x9F4F 0x51FE +0x9F50 0x21F0F +0x9F51 0x5D8E +0x9F52 0x9703 +0x9F53 0x21DD1 +0x9F54 0x9E81 +0x9F55 0x904C +0x9F56 0x7B1F +0x9F57 0x9B02 +0x9F58 0x5CD1 +0x9F59 0x7BA3 +0x9F5A 0x6268 +0x9F5B 0x6335 +0x9F5C 0x9AFF +0x9F5D 0x7BCF +0x9F5E 0x9B2A +0x9F5F 0x7C7E +0x9F61 0x7C42 +0x9F62 0x7C86 +0x9F63 0x9C15 +0x9F64 0x7BFC +0x9F65 0x9B09 +0x9F67 0x9C1B +0x9F68 0x2493E +0x9F69 0x9F5A +0x9F6A 0x5573 +0x9F6B 0x5BC3 +0x9F6C 0x4FFD +0x9F6D 0x9E98 +0x9F6E 0x4FF2 +0x9F6F 0x5260 +0x9F70 0x3E06 +0x9F71 0x52D1 +0x9F72 0x5767 +0x9F73 0x5056 +0x9F74 0x59B7 +0x9F75 0x5E12 +0x9F76 0x97C8 +0x9F77 0x9DAB +0x9F78 0x8F5C +0x9F79 0x5469 +0x9F7A 0x97B4 +0x9F7B 0x9940 +0x9F7C 0x97BA +0x9F7D 0x532C +0x9F7E 0x6130 +0x9FA1 0x692C +0x9FA2 0x53DA +0x9FA3 0x9C0A +0x9FA4 0x9D02 +0x9FA5 0x4C3B +0x9FA6 0x9641 +0x9FA7 0x6980 +0x9FA8 0x50A6 +0x9FA9 0x7546 +0x9FAA 0x2176D +0x9FAB 0x99DA +0x9FAC 0x5273 +0x9FAE 0x9159 +0x9FAF 0x9681 +0x9FB0 0x915C +0x9FB2 0x9151 +0x9FB3 0x28E97 +0x9FB4 0x637F +0x9FB5 0x26D23 +0x9FB6 0x6ACA +0x9FB7 0x5611 +0x9FB8 0x918E +0x9FB9 0x757A +0x9FBA 0x6285 +0x9FBB 0x203FC +0x9FBC 0x734F +0x9FBD 0x7C70 +0x9FBE 0x25C21 +0x9FBF 0x23CFD +0x9FC1 0x24919 +0x9FC2 0x76D6 +0x9FC3 0x9B9D +0x9FC4 0x4E2A +0x9FC5 0x20CD4 +0x9FC6 0x83BE +0x9FC7 0x8842 +0x9FC9 0x5C4A +0x9FCA 0x69C0 +0x9FCC 0x577A +0x9FCD 0x521F +0x9FCE 0x5DF5 +0x9FCF 0x4ECE +0x9FD0 0x6C31 +0x9FD1 0x201F2 +0x9FD2 0x4F39 +0x9FD3 0x549C +0x9FD4 0x54DA +0x9FD5 0x529A +0x9FD6 0x8D82 +0x9FD7 0x35FE +0x9FD9 0x35F3 +0x9FDB 0x6B52 +0x9FDC 0x917C +0x9FDD 0x9FA5 +0x9FDE 0x9B97 +0x9FDF 0x982E +0x9FE0 0x98B4 +0x9FE1 0x9ABA +0x9FE2 0x9EA8 +0x9FE3 0x9E84 +0x9FE4 0x717A +0x9FE5 0x7B14 +0x9FE7 0x6BFA +0x9FE8 0x8818 +0x9FE9 0x7F78 +0x9FEB 0x5620 +0x9FEC 0x2A64A +0x9FED 0x8E77 +0x9FEE 0x9F53 +0x9FF0 0x8DD4 +0x9FF1 0x8E4F +0x9FF2 0x9E1C +0x9FF3 0x8E01 +0x9FF4 0x6282 +0x9FF5 0x2837D +0x9FF6 0x8E28 +0x9FF7 0x8E75 +0x9FF8 0x7AD3 +0x9FF9 0x24A77 +0x9FFA 0x7A3E +0x9FFB 0x78D8 +0x9FFC 0x6CEA +0x9FFD 0x8A67 +0x9FFE 0x7607 +0xA040 0x28A5A +0xA041 0x9F26 +0xA042 0x6CCE +0xA043 0x87D6 +0xA044 0x75C3 +0xA045 0x2A2B2 +0xA046 0x7853 +0xA047 0x2F840 +0xA048 0x8D0C +0xA049 0x72E2 +0xA04A 0x7371 +0xA04B 0x8B2D +0xA04C 0x7302 +0xA04D 0x74F1 +0xA04E 0x8CEB +0xA04F 0x24ABB +0xA050 0x862F +0xA051 0x5FBA +0xA052 0x88A0 +0xA053 0x44B7 +0xA055 0x2183B +0xA056 0x26E05 +0xA058 0x8A7E +0xA059 0x2251B +0xA05B 0x60FD +0xA05C 0x7667 +0xA05D 0x9AD7 +0xA05E 0x9D44 +0xA05F 0x936E +0xA060 0x9B8F +0xA061 0x87F5 +0xA064 0x8CF7 +0xA065 0x732C +0xA066 0x9721 +0xA067 0x9BB0 +0xA068 0x35D6 +0xA069 0x72B2 +0xA06A 0x4C07 +0xA06B 0x7C51 +0xA06C 0x994A +0xA06D 0x26159 +0xA06E 0x6159 +0xA06F 0x4C04 +0xA070 0x9E96 +0xA071 0x617D +0xA073 0x575F +0xA074 0x616F +0xA075 0x62A6 +0xA076 0x6239 +0xA078 0x3A5C +0xA079 0x61E2 +0xA07A 0x53AA +0xA07B 0x233F5 +0xA07C 0x6364 +0xA07D 0x6802 +0xA07E 0x35D2 +0xA0A1 0x5D57 +0xA0A2 0x28BC2 +0xA0A3 0x8FDA +0xA0A4 0x28E39 +0xA0A6 0x50D9 +0xA0A7 0x21D46 +0xA0A8 0x7906 +0xA0A9 0x5332 +0xA0AA 0x9638 +0xA0AB 0x20F3B +0xA0AC 0x4065 +0xA0AE 0x77FE +0xA0B0 0x7CC2 +0xA0B1 0x25F1A +0xA0B2 0x7CDA +0xA0B3 0x7A2D +0xA0B4 0x8066 +0xA0B5 0x8063 +0xA0B6 0x7D4D +0xA0B7 0x7505 +0xA0B8 0x74F2 +0xA0B9 0x8994 +0xA0BA 0x821A +0xA0BB 0x670C +0xA0BC 0x8062 +0xA0BD 0x27486 +0xA0BE 0x805B +0xA0BF 0x74F0 +0xA0C0 0x8103 +0xA0C1 0x7724 +0xA0C2 0x8989 +0xA0C3 0x267CC +0xA0C4 0x7553 +0xA0C5 0x26ED1 +0xA0C6 0x87A9 +0xA0C7 0x87CE +0xA0C8 0x81C8 +0xA0C9 0x878C +0xA0CA 0x8A49 +0xA0CB 0x8CAD +0xA0CC 0x8B43 +0xA0CD 0x772B +0xA0CE 0x74F8 +0xA0CF 0x84DA +0xA0D0 0x3635 +0xA0D1 0x69B2 +0xA0D2 0x8DA6 +0xA0D4 0x89A9 +0xA0D6 0x6DB9 +0xA0D7 0x87C1 +0xA0D8 0x24011 +0xA0D9 0x74E7 +0xA0DA 0x3DDB +0xA0DB 0x7176 +0xA0DC 0x60A4 +0xA0DD 0x619C +0xA0DE 0x3CD1 +0xA0E0 0x6077 +0xA0E2 0x7F71 +0xA0E3 0x28B2D +0xA0E5 0x60E9 +0xA0E6 0x4B7E +0xA0E7 0x5220 +0xA0E8 0x3C18 +0xA0E9 0x23CC7 +0xA0EA 0x25ED7 +0xA0EB 0x27656 +0xA0EC 0x25531 +0xA0ED 0x21944 +0xA0EE 0x212FE +0xA0EF 0x29903 +0xA0F0 0x26DDC +0xA0F1 0x270AD +0xA0F2 0x5CC1 +0xA0F3 0x261AD +0xA0F4 0x28A0F +0xA0F5 0x23677 +0xA0F6 0x200EE +0xA0F7 0x26846 +0xA0F8 0x24F0E +0xA0F9 0x4562 +0xA0FA 0x5B1F +0xA0FB 0x2634C +0xA0FC 0x9F50 +0xA0FD 0x9EA6 +0xA0FE 0x2626B +0xC6A1 0x2460 +0xC6A2 0x2461 +0xC6A3 0x2462 +0xC6A4 0x2463 +0xC6A5 0x2464 +0xC6A6 0x2465 +0xC6A7 0x2466 +0xC6A8 0x2467 +0xC6A9 0x2468 +0xC6AA 0x2469 +0xC6AB 0x2474 +0xC6AC 0x2475 +0xC6AD 0x2476 +0xC6AE 0x2477 +0xC6AF 0x2478 +0xC6B0 0x2479 +0xC6B1 0x247A +0xC6B2 0x247B +0xC6B3 0x247C +0xC6B4 0x247D +0xC6B5 0x2170 +0xC6B6 0x2171 +0xC6B7 0x2172 +0xC6B8 0x2173 +0xC6B9 0x2174 +0xC6BA 0x2175 +0xC6BB 0x2176 +0xC6BC 0x2177 +0xC6BD 0x2178 +0xC6BE 0x2179 +0xC6BF 0x4E36 +0xC6C0 0x4E3F +0xC6C1 0x4E85 +0xC6C2 0x4EA0 +0xC6C3 0x5182 +0xC6C4 0x5196 +0xC6C5 0x51AB +0xC6C6 0x52F9 +0xC6C7 0x5338 +0xC6C8 0x5369 +0xC6C9 0x53B6 +0xC6CA 0x590A +0xC6CB 0x5B80 +0xC6CC 0x5DDB +0xC6CD 0x2F33 +0xC6CE 0x5E7F +0xC6D0 0x5F50 +0xC6D1 0x5F61 +0xC6D2 0x6534 +0xC6D4 0x7592 +0xC6D6 0x8FB5 +0xC6D8 0xA8 +0xC6D9 0x2C6 +0xC6DA 0x30FD +0xC6DB 0x30FE +0xC6DC 0x309D +0xC6DD 0x309E +0xC6E0 0x3005 +0xC6E1 0x3006 +0xC6E2 0x3007 +0xC6E3 0x30FC +0xC6E4 0xFF3B +0xC6E5 0xFF3D +0xC6E6 0x273D +0xC6E7 0x3041 +0xC6E8 0x3042 +0xC6E9 0x3043 +0xC6EA 0x3044 +0xC6EB 0x3045 +0xC6EC 0x3046 +0xC6ED 0x3047 +0xC6EE 0x3048 +0xC6EF 0x3049 +0xC6F0 0x304A +0xC6F1 0x304B +0xC6F2 0x304C +0xC6F3 0x304D +0xC6F4 0x304E +0xC6F5 0x304F +0xC6F6 0x3050 +0xC6F7 0x3051 +0xC6F8 0x3052 +0xC6F9 0x3053 +0xC6FA 0x3054 +0xC6FB 0x3055 +0xC6FC 0x3056 +0xC6FD 0x3057 +0xC6FE 0x3058 +0xC740 0x3059 +0xC741 0x305A +0xC742 0x305B +0xC743 0x305C +0xC744 0x305D +0xC745 0x305E +0xC746 0x305F +0xC747 0x3060 +0xC748 0x3061 +0xC749 0x3062 +0xC74A 0x3063 +0xC74B 0x3064 +0xC74C 0x3065 +0xC74D 0x3066 +0xC74E 0x3067 +0xC74F 0x3068 +0xC750 0x3069 +0xC751 0x306A +0xC752 0x306B +0xC753 0x306C +0xC754 0x306D +0xC755 0x306E +0xC756 0x306F +0xC757 0x3070 +0xC758 0x3071 +0xC759 0x3072 +0xC75A 0x3073 +0xC75B 0x3074 +0xC75C 0x3075 +0xC75D 0x3076 +0xC75E 0x3077 +0xC75F 0x3078 +0xC760 0x3079 +0xC761 0x307A +0xC762 0x307B +0xC763 0x307C +0xC764 0x307D +0xC765 0x307E +0xC766 0x307F +0xC767 0x3080 +0xC768 0x3081 +0xC769 0x3082 +0xC76A 0x3083 +0xC76B 0x3084 +0xC76C 0x3085 +0xC76D 0x3086 +0xC76E 0x3087 +0xC76F 0x3088 +0xC770 0x3089 +0xC771 0x308A +0xC772 0x308B +0xC773 0x308C +0xC774 0x308D +0xC775 0x308E +0xC776 0x308F +0xC777 0x3090 +0xC778 0x3091 +0xC779 0x3092 +0xC77A 0x3093 +0xC77B 0x30A1 +0xC77C 0x30A2 +0xC77D 0x30A3 +0xC77E 0x30A4 +0xC7A1 0x30A5 +0xC7A2 0x30A6 +0xC7A3 0x30A7 +0xC7A4 0x30A8 +0xC7A5 0x30A9 +0xC7A6 0x30AA +0xC7A7 0x30AB +0xC7A8 0x30AC +0xC7A9 0x30AD +0xC7AA 0x30AE +0xC7AB 0x30AF +0xC7AC 0x30B0 +0xC7AD 0x30B1 +0xC7AE 0x30B2 +0xC7AF 0x30B3 +0xC7B0 0x30B4 +0xC7B1 0x30B5 +0xC7B2 0x30B6 +0xC7B3 0x30B7 +0xC7B4 0x30B8 +0xC7B5 0x30B9 +0xC7B6 0x30BA +0xC7B7 0x30BB +0xC7B8 0x30BC +0xC7B9 0x30BD +0xC7BA 0x30BE +0xC7BB 0x30BF +0xC7BC 0x30C0 +0xC7BD 0x30C1 +0xC7BE 0x30C2 +0xC7BF 0x30C3 +0xC7C0 0x30C4 +0xC7C1 0x30C5 +0xC7C2 0x30C6 +0xC7C3 0x30C7 +0xC7C4 0x30C8 +0xC7C5 0x30C9 +0xC7C6 0x30CA +0xC7C7 0x30CB +0xC7C8 0x30CC +0xC7C9 0x30CD +0xC7CA 0x30CE +0xC7CB 0x30CF +0xC7CC 0x30D0 +0xC7CD 0x30D1 +0xC7CE 0x30D2 +0xC7CF 0x30D3 +0xC7D0 0x30D4 +0xC7D1 0x30D5 +0xC7D2 0x30D6 +0xC7D3 0x30D7 +0xC7D4 0x30D8 +0xC7D5 0x30D9 +0xC7D6 0x30DA +0xC7D7 0x30DB +0xC7D8 0x30DC +0xC7D9 0x30DD +0xC7DA 0x30DE +0xC7DB 0x30DF +0xC7DC 0x30E0 +0xC7DD 0x30E1 +0xC7DE 0x30E2 +0xC7DF 0x30E3 +0xC7E0 0x30E4 +0xC7E1 0x30E5 +0xC7E2 0x30E6 +0xC7E3 0x30E7 +0xC7E4 0x30E8 +0xC7E5 0x30E9 +0xC7E6 0x30EA +0xC7E7 0x30EB +0xC7E8 0x30EC +0xC7E9 0x30ED +0xC7EA 0x30EE +0xC7EB 0x30EF +0xC7EC 0x30F0 +0xC7ED 0x30F1 +0xC7EE 0x30F2 +0xC7EF 0x30F3 +0xC7F0 0x30F4 +0xC7F1 0x30F5 +0xC7F2 0x30F6 +0xC7F3 0x410 +0xC7F4 0x411 +0xC7F5 0x412 +0xC7F6 0x413 +0xC7F7 0x414 +0xC7F8 0x415 +0xC7F9 0x401 +0xC7FA 0x416 +0xC7FB 0x417 +0xC7FC 0x418 +0xC7FD 0x419 +0xC7FE 0x41A +0xC840 0x41B +0xC841 0x41C +0xC842 0x41D +0xC843 0x41E +0xC844 0x41F +0xC845 0x420 +0xC846 0x421 +0xC847 0x422 +0xC848 0x423 +0xC849 0x424 +0xC84A 0x425 +0xC84B 0x426 +0xC84C 0x427 +0xC84D 0x428 +0xC84E 0x429 +0xC84F 0x42A +0xC850 0x42B +0xC851 0x42C +0xC852 0x42D +0xC853 0x42E +0xC854 0x42F +0xC855 0x430 +0xC856 0x431 +0xC857 0x432 +0xC858 0x433 +0xC859 0x434 +0xC85A 0x435 +0xC85B 0x451 +0xC85C 0x436 +0xC85D 0x437 +0xC85E 0x438 +0xC85F 0x439 +0xC860 0x43A +0xC861 0x43B +0xC862 0x43C +0xC863 0x43D +0xC864 0x43E +0xC865 0x43F +0xC866 0x440 +0xC867 0x441 +0xC868 0x442 +0xC869 0x443 +0xC86A 0x444 +0xC86B 0x445 +0xC86C 0x446 +0xC86D 0x447 +0xC86E 0x448 +0xC86F 0x449 +0xC870 0x44A +0xC871 0x44B +0xC872 0x44C +0xC873 0x44D +0xC874 0x44E +0xC875 0x44F +0xC876 0x21E7 +0xC877 0x21B8 +0xC878 0x21B9 +0xC879 0xF7E5 +0xC87A 0x200CC +0xC87B 0x4E5A +0xC87C 0x2008A +0xC87D 0x5202 +0xC87E 0xF7EA +0xC8A1 0xF7EB +0xC8A2 0x5188 +0xC8A3 0xF7ED +0xC8A4 0x27607 +0xC8CD 0xFFE2 +0xC8CE 0xFFE4 +0xC8CF 0xFF07 +0xC8D0 0xFF02 +0xC8D1 0x3231 +0xC8D2 0x2116 +0xC8D3 0x2121 +0xC8D4 0x309B +0xC8D5 0x309C +0xC8D6 0x2E80 +0xC8D7 0x2E84 +0xC8D8 0x2E86 +0xC8D9 0x2E87 +0xC8DA 0x2E88 +0xC8DB 0x2E8A +0xC8DC 0x2E8C +0xC8DD 0x2E8D +0xC8DE 0x2E95 +0xC8DF 0x2E9C +0xC8E0 0x2E9D +0xC8E1 0x2EA5 +0xC8E2 0x2EA7 +0xC8E3 0x2EAA +0xC8E4 0x2EAC +0xC8E5 0x2EAE +0xC8E6 0x2EB6 +0xC8E7 0x2EBC +0xC8E8 0x2EBE +0xC8E9 0x2EC6 +0xC8EA 0x2ECA +0xC8EB 0x2ECC +0xC8EC 0x2ECD +0xC8ED 0x2ECF +0xC8EE 0x2ED6 +0xC8EF 0x2ED7 +0xC8F0 0x2EDE +0xC8F1 0x2EE3 +0xC8F5 0x283 +0xC8F6 0x250 +0xC8F7 0x25B +0xC8F8 0x254 +0xC8F9 0x275 +0xC8FA 0x153 +0xC8FB 0xF8 +0xC8FC 0x14B +0xC8FD 0x28A +0xC8FE 0x26A +0xF9D6 0x7881 +0xF9D7 0x92B9 +0xF9D8 0x88CF +0xF9D9 0x58BB +0xF9DA 0x6052 +0xF9DB 0x7CA7 +0xF9DC 0x5AFA +0xF9DD 0x2554 +0xF9DE 0x2566 +0xF9DF 0x2557 +0xF9E0 0x2560 +0xF9E1 0x256C +0xF9E2 0x2563 +0xF9E3 0x255A +0xF9E4 0x2569 +0xF9E5 0x255D +0xF9E6 0x2552 +0xF9E7 0x2564 +0xF9E8 0x2555 +0xF9E9 0x255E +0xF9EA 0x256A +0xF9EB 0x2561 +0xF9EC 0x2558 +0xF9ED 0x2567 +0xF9EE 0x255B +0xF9EF 0x2553 +0xF9F0 0x2565 +0xF9F1 0x2556 +0xF9F2 0x255F +0xF9F3 0x256B +0xF9F4 0x2562 +0xF9F5 0x2559 +0xF9F6 0x2568 +0xF9F7 0x255C +0xF9F8 0x2551 +0xF9F9 0x2550 +0xF9FA 0x256D +0xF9FB 0x256E +0xF9FC 0x2570 +0xF9FD 0x256F +0xF9FE 0xFFED +0xFA40 0x20547 +0xFA41 0x92DB +0xFA42 0x205DF +0xFA43 0x23FC5 +0xFA44 0x854C +0xFA45 0x42B5 +0xFA46 0x73EF +0xFA47 0x51B5 +0xFA48 0x3649 +0xFA49 0x24942 +0xFA4A 0x289E4 +0xFA4B 0x9344 +0xFA4C 0x219DB +0xFA4D 0x82EE +0xFA4E 0x23CC8 +0xFA4F 0x783C +0xFA50 0x6744 +0xFA51 0x62DF +0xFA52 0x24933 +0xFA53 0x289AA +0xFA54 0x202A0 +0xFA55 0x26BB3 +0xFA56 0x21305 +0xFA57 0x4FAB +0xFA58 0x224ED +0xFA59 0x5008 +0xFA5A 0x26D29 +0xFA5B 0x27A84 +0xFA5C 0x23600 +0xFA5D 0x24AB1 +0xFA5E 0x22513 +0xFA60 0x2037E +0xFA61 0x5FA4 +0xFA62 0x20380 +0xFA63 0x20347 +0xFA64 0x6EDB +0xFA65 0x2041F +0xFA67 0x5101 +0xFA68 0x347A +0xFA69 0x510E +0xFA6A 0x986C +0xFA6B 0x3743 +0xFA6C 0x8416 +0xFA6D 0x249A4 +0xFA6E 0x20487 +0xFA6F 0x5160 +0xFA70 0x233B4 +0xFA71 0x516A +0xFA72 0x20BFF +0xFA73 0x220FC +0xFA74 0x202E5 +0xFA75 0x22530 +0xFA76 0x2058E +0xFA77 0x23233 +0xFA78 0x21983 +0xFA79 0x5B82 +0xFA7A 0x877D +0xFA7B 0x205B3 +0xFA7C 0x23C99 +0xFA7D 0x51B2 +0xFA7E 0x51B8 +0xFAA1 0x9D34 +0xFAA2 0x51C9 +0xFAA3 0x51CF +0xFAA4 0x51D1 +0xFAA5 0x3CDC +0xFAA6 0x51D3 +0xFAA7 0x24AA6 +0xFAA8 0x51B3 +0xFAA9 0x51E2 +0xFAAA 0x5342 +0xFAAB 0x51ED +0xFAAC 0x83CD +0xFAAD 0x693E +0xFAAE 0x2372D +0xFAAF 0x5F7B +0xFAB0 0x520B +0xFAB1 0x5226 +0xFAB2 0x523C +0xFAB3 0x52B5 +0xFAB4 0x5257 +0xFAB5 0x5294 +0xFAB6 0x52B9 +0xFAB7 0x52C5 +0xFAB8 0x7C15 +0xFAB9 0x8542 +0xFABA 0x52E0 +0xFABB 0x860D +0xFABC 0x26B13 +0xFABE 0x28ADE +0xFABF 0x5549 +0xFAC0 0x6ED9 +0xFAC1 0x23F80 +0xFAC2 0x20954 +0xFAC3 0x23FEC +0xFAC4 0x5333 +0xFAC6 0x20BE2 +0xFAC7 0x6CCB +0xFAC8 0x21726 +0xFAC9 0x681B +0xFACA 0x73D5 +0xFACB 0x604A +0xFACC 0x3EAA +0xFACD 0x38CC +0xFACE 0x216E8 +0xFACF 0x71DD +0xFAD0 0x44A2 +0xFAD1 0x536D +0xFAD2 0x5374 +0xFAD3 0x286AB +0xFAD4 0x537E +0xFAD6 0x21596 +0xFAD7 0x21613 +0xFAD8 0x77E6 +0xFAD9 0x5393 +0xFADA 0x28A9B +0xFADB 0x53A0 +0xFADC 0x53AB +0xFADD 0x53AE +0xFADE 0x73A7 +0xFADF 0x25772 +0xFAE0 0x3F59 +0xFAE1 0x739C +0xFAE2 0x53C1 +0xFAE3 0x53C5 +0xFAE4 0x6C49 +0xFAE5 0x4E49 +0xFAE6 0x57FE +0xFAE7 0x53D9 +0xFAE8 0x3AAB +0xFAE9 0x20B8F +0xFAEA 0x53E0 +0xFAEB 0x23FEB +0xFAEC 0x22DA3 +0xFAED 0x53F6 +0xFAEE 0x20C77 +0xFAEF 0x5413 +0xFAF0 0x7079 +0xFAF1 0x552B +0xFAF2 0x6657 +0xFAF3 0x6D5B +0xFAF4 0x546D +0xFAF5 0x26B53 +0xFAF6 0x20D74 +0xFAF7 0x555D +0xFAF8 0x548F +0xFAF9 0x54A4 +0xFAFA 0x47A6 +0xFAFB 0x2170D +0xFAFC 0x20EDD +0xFAFD 0x3DB4 +0xFAFE 0x20D4D +0xFB40 0x289BC +0xFB41 0x22698 +0xFB42 0x5547 +0xFB43 0x4CED +0xFB44 0x542F +0xFB45 0x7417 +0xFB46 0x5586 +0xFB47 0x55A9 +0xFB49 0x218D7 +0xFB4A 0x2403A +0xFB4B 0x4552 +0xFB4C 0x24435 +0xFB4D 0x66B3 +0xFB4E 0x210B4 +0xFB4F 0x5637 +0xFB50 0x66CD +0xFB51 0x2328A +0xFB52 0x66A4 +0xFB53 0x66AD +0xFB54 0x564D +0xFB55 0x564F +0xFB56 0x78F1 +0xFB57 0x56F1 +0xFB58 0x9787 +0xFB59 0x53FE +0xFB5A 0x5700 +0xFB5B 0x56EF +0xFB5C 0x56ED +0xFB5D 0x28B66 +0xFB5E 0x3623 +0xFB5F 0x2124F +0xFB60 0x5746 +0xFB61 0x241A5 +0xFB62 0x6C6E +0xFB63 0x708B +0xFB64 0x5742 +0xFB65 0x36B1 +0xFB66 0x26C7E +0xFB67 0x57E6 +0xFB68 0x21416 +0xFB69 0x5803 +0xFB6A 0x21454 +0xFB6B 0x24363 +0xFB6C 0x5826 +0xFB6D 0x24BF5 +0xFB6E 0x585C +0xFB6F 0x58AA +0xFB70 0x3561 +0xFB71 0x58E0 +0xFB72 0x58DC +0xFB73 0x2123C +0xFB74 0x58FB +0xFB75 0x5BFF +0xFB76 0x5743 +0xFB77 0x2A150 +0xFB78 0x24278 +0xFB79 0x93D3 +0xFB7A 0x35A1 +0xFB7B 0x591F +0xFB7C 0x68A6 +0xFB7D 0x36C3 +0xFB7E 0x6E59 +0xFBA1 0x2163E +0xFBA2 0x5A24 +0xFBA3 0x5553 +0xFBA4 0x21692 +0xFBA5 0x8505 +0xFBA6 0x59C9 +0xFBA7 0x20D4E +0xFBA8 0x26C81 +0xFBA9 0x26D2A +0xFBAA 0x217DC +0xFBAB 0x59D9 +0xFBAC 0x217FB +0xFBAD 0x217B2 +0xFBAE 0x26DA6 +0xFBAF 0x6D71 +0xFBB0 0x21828 +0xFBB1 0x216D5 +0xFBB2 0x59F9 +0xFBB3 0x26E45 +0xFBB4 0x5AAB +0xFBB5 0x5A63 +0xFBB6 0x36E6 +0xFBB7 0x249A9 +0xFBB9 0x3708 +0xFBBA 0x5A96 +0xFBBB 0x7465 +0xFBBC 0x5AD3 +0xFBBD 0x26FA1 +0xFBBE 0x22554 +0xFBBF 0x3D85 +0xFBC0 0x21911 +0xFBC1 0x3732 +0xFBC2 0x216B8 +0xFBC3 0x5E83 +0xFBC4 0x52D0 +0xFBC5 0x5B76 +0xFBC6 0x6588 +0xFBC7 0x5B7C +0xFBC8 0x27A0E +0xFBC9 0x4004 +0xFBCA 0x485D +0xFBCB 0x20204 +0xFBCC 0x5BD5 +0xFBCD 0x6160 +0xFBCE 0x21A34 +0xFBCF 0x259CC +0xFBD0 0x205A5 +0xFBD1 0x5BF3 +0xFBD2 0x5B9D +0xFBD3 0x4D10 +0xFBD4 0x5C05 +0xFBD5 0x21B44 +0xFBD6 0x5C13 +0xFBD7 0x73CE +0xFBD8 0x5C14 +0xFBD9 0x21CA5 +0xFBDA 0x26B28 +0xFBDB 0x5C49 +0xFBDC 0x48DD +0xFBDD 0x5C85 +0xFBDE 0x5CE9 +0xFBDF 0x5CEF +0xFBE0 0x5D8B +0xFBE1 0x21DF9 +0xFBE2 0x21E37 +0xFBE3 0x5D10 +0xFBE4 0x5D18 +0xFBE5 0x5D46 +0xFBE6 0x21EA4 +0xFBE7 0x5CBA +0xFBE8 0x5DD7 +0xFBE9 0x82FC +0xFBEA 0x382D +0xFBEB 0x24901 +0xFBEC 0x22049 +0xFBED 0x22173 +0xFBEE 0x8287 +0xFBEF 0x3836 +0xFBF0 0x3BC2 +0xFBF1 0x5E2E +0xFBF2 0x6A8A +0xFBF4 0x5E7A +0xFBF5 0x244BC +0xFBF6 0x20CD3 +0xFBF7 0x53A6 +0xFBF8 0x4EB7 +0xFBFA 0x53A8 +0xFBFB 0x21771 +0xFBFC 0x5E09 +0xFBFD 0x5EF4 +0xFBFE 0x28482 +0xFC40 0x5EF9 +0xFC41 0x5EFB +0xFC42 0x38A0 +0xFC43 0x5EFC +0xFC44 0x683E +0xFC45 0x941B +0xFC46 0x5F0D +0xFC47 0x201C1 +0xFC48 0x2F894 +0xFC49 0x3ADE +0xFC4A 0x48AE +0xFC4B 0x2133A +0xFC4C 0x5F3A +0xFC4D 0x26888 +0xFC4E 0x223D0 +0xFC50 0x22471 +0xFC51 0x5F63 +0xFC52 0x97BD +0xFC53 0x26E6E +0xFC54 0x5F72 +0xFC55 0x9340 +0xFC56 0x28A36 +0xFC57 0x5FA7 +0xFC58 0x5DB6 +0xFC59 0x3D5F +0xFC5A 0x25250 +0xFC5B 0x21F6A +0xFC5C 0x270F8 +0xFC5D 0x22668 +0xFC5E 0x91D6 +0xFC5F 0x2029E +0xFC60 0x28A29 +0xFC61 0x6031 +0xFC62 0x6685 +0xFC63 0x21877 +0xFC64 0x3963 +0xFC65 0x3DC7 +0xFC66 0x3639 +0xFC67 0x5790 +0xFC68 0x227B4 +0xFC69 0x7971 +0xFC6A 0x3E40 +0xFC6B 0x609E +0xFC6D 0x60B3 +0xFC6E 0x24982 +0xFC6F 0x2498F +0xFC70 0x27A53 +0xFC71 0x74A4 +0xFC72 0x50E1 +0xFC73 0x5AA0 +0xFC74 0x6164 +0xFC75 0x8424 +0xFC76 0x6142 +0xFC77 0x2F8A6 +0xFC78 0x26ED2 +0xFC79 0x6181 +0xFC7A 0x51F4 +0xFC7B 0x20656 +0xFC7C 0x6187 +0xFC7D 0x5BAA +0xFC7E 0x23FB7 +0xFCA1 0x2285F +0xFCA2 0x61D3 +0xFCA3 0x28B9D +0xFCA4 0x2995D +0xFCA5 0x61D0 +0xFCA6 0x3932 +0xFCA7 0x22980 +0xFCA8 0x228C1 +0xFCA9 0x6023 +0xFCAA 0x615C +0xFCAB 0x651E +0xFCAC 0x638B +0xFCAD 0x20118 +0xFCAE 0x62C5 +0xFCAF 0x21770 +0xFCB0 0x62D5 +0xFCB1 0x22E0D +0xFCB2 0x636C +0xFCB3 0x249DF +0xFCB4 0x3A17 +0xFCB5 0x6438 +0xFCB6 0x63F8 +0xFCB7 0x2138E +0xFCB8 0x217FC +0xFCBA 0x6F8A +0xFCBB 0x22E36 +0xFCBC 0x9814 +0xFCBD 0x2408C +0xFCBE 0x2571D +0xFCBF 0x64E1 +0xFCC0 0x64E5 +0xFCC1 0x947B +0xFCC2 0x3A66 +0xFCC3 0x643A +0xFCC4 0x3A57 +0xFCC5 0x654D +0xFCC6 0x6F16 +0xFCC7 0x24A28 +0xFCC8 0x24A23 +0xFCC9 0x6585 +0xFCCA 0x656D +0xFCCB 0x655F +0xFCCC 0x2307E +0xFCCD 0x65B5 +0xFCCE 0x24940 +0xFCCF 0x4B37 +0xFCD0 0x65D1 +0xFCD1 0x40D8 +0xFCD2 0x21829 +0xFCD3 0x65E0 +0xFCD4 0x65E3 +0xFCD5 0x5FDF +0xFCD6 0x23400 +0xFCD7 0x6618 +0xFCD8 0x231F7 +0xFCD9 0x231F8 +0xFCDA 0x6644 +0xFCDB 0x231A4 +0xFCDC 0x231A5 +0xFCDD 0x664B +0xFCDE 0x20E75 +0xFCDF 0x6667 +0xFCE0 0x251E6 +0xFCE1 0x6673 +0xFCE3 0x21E3D +0xFCE4 0x23231 +0xFCE5 0x285F4 +0xFCE6 0x231C8 +0xFCE7 0x25313 +0xFCE8 0x77C5 +0xFCE9 0x228F7 +0xFCEA 0x99A4 +0xFCEB 0x6702 +0xFCEC 0x2439C +0xFCED 0x24A21 +0xFCEE 0x3B2B +0xFCEF 0x69FA +0xFCF0 0x237C2 +0xFCF2 0x6767 +0xFCF3 0x6762 +0xFCF4 0x241CD +0xFCF5 0x290ED +0xFCF6 0x67D7 +0xFCF7 0x44E9 +0xFCF8 0x6822 +0xFCF9 0x6E50 +0xFCFA 0x923C +0xFCFB 0x6801 +0xFCFC 0x233E6 +0xFCFD 0x26DA0 +0xFCFE 0x685D +0xFD40 0x2346F +0xFD41 0x69E1 +0xFD42 0x6A0B +0xFD43 0x28ADF +0xFD44 0x6973 +0xFD45 0x68C3 +0xFD46 0x235CD +0xFD47 0x6901 +0xFD48 0x6900 +0xFD49 0x3D32 +0xFD4A 0x3A01 +0xFD4B 0x2363C +0xFD4C 0x3B80 +0xFD4D 0x67AC +0xFD4E 0x6961 +0xFD4F 0x28A4A +0xFD50 0x42FC +0xFD51 0x6936 +0xFD52 0x6998 +0xFD53 0x3BA1 +0xFD54 0x203C9 +0xFD55 0x8363 +0xFD56 0x5090 +0xFD57 0x69F9 +0xFD58 0x23659 +0xFD59 0x2212A +0xFD5A 0x6A45 +0xFD5B 0x23703 +0xFD5C 0x6A9D +0xFD5D 0x3BF3 +0xFD5E 0x67B1 +0xFD5F 0x6AC8 +0xFD60 0x2919C +0xFD61 0x3C0D +0xFD62 0x6B1D +0xFD63 0x20923 +0xFD64 0x60DE +0xFD65 0x6B35 +0xFD66 0x6B74 +0xFD67 0x227CD +0xFD68 0x6EB5 +0xFD69 0x23ADB +0xFD6A 0x203B5 +0xFD6B 0x21958 +0xFD6C 0x3740 +0xFD6D 0x5421 +0xFD6E 0x23B5A +0xFD6F 0x6BE1 +0xFD70 0x23EFC +0xFD71 0x6BDC +0xFD72 0x6C37 +0xFD73 0x2248B +0xFD74 0x248F1 +0xFD75 0x26B51 +0xFD76 0x6C5A +0xFD77 0x8226 +0xFD78 0x6C79 +0xFD79 0x23DBC +0xFD7A 0x44C5 +0xFD7B 0x23DBD +0xFD7C 0x241A4 +0xFD7D 0x2490C +0xFD7E 0x24900 +0xFDA1 0x23CC9 +0xFDA2 0x36E5 +0xFDA3 0x3CEB +0xFDA4 0x20D32 +0xFDA5 0x9B83 +0xFDA6 0x231F9 +0xFDA7 0x22491 +0xFDA8 0x7F8F +0xFDA9 0x6837 +0xFDAA 0x26D25 +0xFDAB 0x26DA1 +0xFDAC 0x26DEB +0xFDAD 0x6D96 +0xFDAE 0x6D5C +0xFDAF 0x6E7C +0xFDB0 0x6F04 +0xFDB1 0x2497F +0xFDB2 0x24085 +0xFDB3 0x26E72 +0xFDB4 0x8533 +0xFDB5 0x26F74 +0xFDB6 0x51C7 +0xFDB9 0x842E +0xFDBA 0x28B21 +0xFDBC 0x23E2F +0xFDBD 0x7453 +0xFDBE 0x23F82 +0xFDBF 0x79CC +0xFDC0 0x6E4F +0xFDC1 0x5A91 +0xFDC2 0x2304B +0xFDC3 0x6FF8 +0xFDC4 0x370D +0xFDC5 0x6F9D +0xFDC6 0x23E30 +0xFDC7 0x6EFA +0xFDC8 0x21497 +0xFDC9 0x2403D +0xFDCA 0x4555 +0xFDCB 0x93F0 +0xFDCC 0x6F44 +0xFDCD 0x6F5C +0xFDCE 0x3D4E +0xFDCF 0x6F74 +0xFDD0 0x29170 +0xFDD1 0x3D3B +0xFDD2 0x6F9F +0xFDD3 0x24144 +0xFDD4 0x6FD3 +0xFDD5 0x24091 +0xFDD6 0x24155 +0xFDD7 0x24039 +0xFDD8 0x23FF0 +0xFDD9 0x23FB4 +0xFDDA 0x2413F +0xFDDB 0x51DF +0xFDDC 0x24156 +0xFDDD 0x24157 +0xFDDE 0x24140 +0xFDDF 0x261DD +0xFDE0 0x704B +0xFDE1 0x707E +0xFDE2 0x70A7 +0xFDE3 0x7081 +0xFDE4 0x70CC +0xFDE5 0x70D5 +0xFDE6 0x70D6 +0xFDE7 0x70DF +0xFDE8 0x4104 +0xFDE9 0x3DE8 +0xFDEA 0x71B4 +0xFDEB 0x7196 +0xFDEC 0x24277 +0xFDED 0x712B +0xFDEE 0x7145 +0xFDEF 0x5A88 +0xFDF0 0x714A +0xFDF2 0x5C9C +0xFDF3 0x24365 +0xFDF4 0x714F +0xFDF5 0x9362 +0xFDF6 0x242C1 +0xFDF7 0x712C +0xFDF8 0x2445A +0xFDF9 0x24A27 +0xFDFA 0x24A22 +0xFDFB 0x71BA +0xFDFC 0x28BE8 +0xFDFD 0x70BD +0xFDFE 0x720E +0xFE40 0x9442 +0xFE41 0x7215 +0xFE42 0x5911 +0xFE43 0x9443 +0xFE44 0x7224 +0xFE45 0x9341 +0xFE46 0x25605 +0xFE47 0x722E +0xFE48 0x7240 +0xFE49 0x24974 +0xFE4A 0x68BD +0xFE4B 0x7255 +0xFE4C 0x7257 +0xFE4D 0x3E55 +0xFE4E 0x23044 +0xFE4F 0x680D +0xFE50 0x6F3D +0xFE51 0x7282 +0xFE53 0x732B +0xFE54 0x24823 +0xFE55 0x2882B +0xFE56 0x48ED +0xFE57 0x28804 +0xFE58 0x7328 +0xFE59 0x732E +0xFE5A 0x73CF +0xFE5B 0x73AA +0xFE5C 0x20C3A +0xFE5D 0x26A2E +0xFE5E 0x73C9 +0xFE5F 0x7449 +0xFE60 0x241E2 +0xFE61 0x216E7 +0xFE62 0x24A24 +0xFE63 0x6623 +0xFE64 0x36C5 +0xFE65 0x249B7 +0xFE66 0x2498D +0xFE67 0x249FB +0xFE68 0x73F7 +0xFE69 0x7415 +0xFE6A 0x6903 +0xFE6B 0x24A26 +0xFE6C 0x7439 +0xFE6D 0x205C3 +0xFE6E 0x3ED7 +0xFE70 0x228AD +0xFE71 0x7460 +0xFE72 0x28EB2 +0xFE73 0x7447 +0xFE74 0x73E4 +0xFE75 0x7476 +0xFE76 0x83B9 +0xFE77 0x746C +0xFE78 0x3730 +0xFE79 0x7474 +0xFE7A 0x93F1 +0xFE7B 0x6A2C +0xFE7C 0x7482 +0xFE7D 0x4953 +0xFE7E 0x24A8C +0xFEA1 0x2415F +0xFEA2 0x24A79 +0xFEA3 0x28B8F +0xFEA4 0x5B46 +0xFEA5 0x28C03 +0xFEA6 0x2189E +0xFEA7 0x74C8 +0xFEA8 0x21988 +0xFEA9 0x750E +0xFEAB 0x751E +0xFEAC 0x28ED9 +0xFEAD 0x21A4B +0xFEAE 0x5BD7 +0xFEAF 0x28EAC +0xFEB0 0x9385 +0xFEB1 0x754D +0xFEB2 0x754A +0xFEB3 0x7567 +0xFEB4 0x756E +0xFEB5 0x24F82 +0xFEB6 0x3F04 +0xFEB7 0x24D13 +0xFEB8 0x758E +0xFEB9 0x745D +0xFEBA 0x759E +0xFEBB 0x75B4 +0xFEBC 0x7602 +0xFEBD 0x762C +0xFEBE 0x7651 +0xFEBF 0x764F +0xFEC0 0x766F +0xFEC1 0x7676 +0xFEC2 0x263F5 +0xFEC3 0x7690 +0xFEC4 0x81EF +0xFEC5 0x37F8 +0xFEC6 0x26911 +0xFEC7 0x2690E +0xFEC8 0x76A1 +0xFEC9 0x76A5 +0xFECA 0x76B7 +0xFECB 0x76CC +0xFECC 0x26F9F +0xFECD 0x8462 +0xFECE 0x2509D +0xFECF 0x2517D +0xFED0 0x21E1C +0xFED1 0x771E +0xFED2 0x7726 +0xFED3 0x7740 +0xFED4 0x64AF +0xFED5 0x25220 +0xFED6 0x7758 +0xFED7 0x232AC +0xFED8 0x77AF +0xFED9 0x28964 +0xFEDA 0x28968 +0xFEDB 0x216C1 +0xFEDC 0x77F4 +0xFEDE 0x21376 +0xFEDF 0x24A12 +0xFEE0 0x68CA +0xFEE1 0x78AF +0xFEE2 0x78C7 +0xFEE3 0x78D3 +0xFEE4 0x96A5 +0xFEE5 0x792E +0xFEE6 0x255E0 +0xFEE7 0x78D7 +0xFEE8 0x7934 +0xFEE9 0x78B1 +0xFEEA 0x2760C +0xFEEB 0x8FB8 +0xFEEC 0x8884 +0xFEED 0x28B2B +0xFEEE 0x26083 +0xFEEF 0x2261C +0xFEF0 0x7986 +0xFEF1 0x8900 +0xFEF2 0x6902 +0xFEF3 0x7980 +0xFEF4 0x25857 +0xFEF5 0x799D +0xFEF6 0x27B39 +0xFEF7 0x793C +0xFEF8 0x79A9 +0xFEF9 0x6E2A +0xFEFA 0x27126 +0xFEFB 0x3EA8 +0xFEFC 0x79C6 +0xFEFD 0x2910D +0xFEFE 0x79D4 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS2008.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS2008.c2b Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,4969 @@ +8740 F266 +8741 F267 +8742 F268 +8743 F269 +8744 F26A +8745 F26B +8746 F26C +8747 F26D +8748 F26E +8749 F26F +874A F270 +874B F271 +874C F272 +874D F273 +874E F274 +874F F275 +8750 F276 +8751 F277 +8752 F278 +8753 F279 +8754 F27A +8755 F27B +8756 F27C +8757 F27D +8758 F27E +8759 F27F +875A F280 +875B F281 +875C F282 +875D F283 +875E F284 +875F F285 +8760 F286 +8761 F287 +8762 F288 +8763 F289 +8764 F28A +8765 F28B +8767 F28D +8768 F28E +8769 F28F +876A F290 +876B F291 +876C F292 +876D F293 +876E F294 +876F F295 +8770 F296 +8771 F297 +8772 F298 +8773 F299 +8774 F29A +8775 F29B +8776 F29C +8777 F29D +8778 F29E +8779 F29F +877A F2A0 +877B F2A1 +877C F2A2 +877D F2A3 +877E F2A4 +87A1 F2A5 +87A2 F2A6 +87A3 F2A7 +87A4 F2A8 +87A5 F2A9 +87A6 F2AA +87A7 F2AB +87A8 F2AC +87A9 F2AD +87AA F2AE +87AB F2AF +87AC F2B0 +87AD F2B1 +87AE F2B2 +87AF F2B3 +87B0 F2B4 +87B1 F2B5 +87B2 F2B6 +87B3 F2B7 +87B4 F2B8 +87B5 F2B9 +87B6 F2BA +87B7 F2BB +87B8 F2BC +87B9 F2BD +87BA F2BE +87BB F2BF +87BC F2C0 +87BD F2C1 +87BE F2C2 +87BF F2C3 +87C0 F2C4 +87C1 F2C5 +87C2 F2C6 +87C3 F2C7 +87C4 F2C8 +87C5 F2C9 +87C6 F2CA +87C7 F2CB +87C8 F2CC +87C9 F2CD +87CA F2CE +87CB F2CF +87CC F2D0 +87CD F2D1 +87CE F2D2 +87CF F2D3 +87D0 F2D4 +87D1 F2D5 +87D2 F2D6 +87D3 F2D7 +87D4 F2D8 +87D5 F2D9 +87D6 F2DA +87D7 F2DB +87D8 F2DC +87D9 F2DD +87DA F2DE +87DB F2DF +87DC F2E0 +87DD F2E1 +87DE F2E2 +87DF F2E3 +8840 F303 +8841 F304 +8842 F305 +8843 F306 +8844 F307 +8845 F308 +8846 F309 +8847 F30A +8848 F30B +8849 F30C +884A F30D +884B F30E +884C F30F +884D F310 +884E F311 +884F F312 +8850 F313 +8851 F314 +8852 F315 +8853 F316 +8854 F317 +8855 F318 +8856 F319 +8857 F31A +8858 F31B +8859 F31C +885A F31D +885B F31E +885C F31F +885D F320 +885E F321 +885F F322 +8860 F323 +8861 F324 +8862 F325 +8863 F326 +8864 F327 +8865 F328 +8866 F329 +8867 F32A +8868 F32B +8869 F32C +886A F32D +886B F32E +886C F32F +886D F330 +886E F331 +886F F332 +8870 F333 +8871 F334 +8872 F335 +8873 F336 +8874 F337 +8875 F338 +8876 F339 +8877 F33A +8878 F33B +8879 F33C +887A F33D +887B F33E +887C F33F +887D F340 +887E F341 +88A1 F342 +88A2 F343 +88A3 F344 +88A4 F345 +88A5 F346 +88A6 F347 +88A7 F348 +88A8 F349 +88A9 F34A +88AA F34B +8940 F3A0 +8941 F3A1 +8943 F3A3 +8946 F3A6 +8947 F3A7 +8948 F3A8 +8949 F3A9 +894C F3AC +894D F3AD +894E F3AE +894F F3AF +8950 F3B0 +8951 F3B1 +8952 F3B2 +8953 F3B3 +8954 F3B4 +8955 F3B5 +8956 F3B6 +8957 F3B7 +8958 F3B8 +8959 F3B9 +895A F3BA +895B F3BB +895C F3BC +895D F3BD +895E F3BE +895F F3BF +8960 F3C0 +8961 F3C1 +8962 F3C2 +8963 F3C3 +8964 F3C4 +8965 F3C5 +8966 F3C6 +8967 F3C7 +8968 F3C8 +8969 F3C9 +896A F3CA +896B F3CB +896C F3CC +896D F3CD +896E F3CE +896F F3CF +8970 F3D0 +8971 F3D1 +8972 F3D2 +8973 F3D3 +8974 F3D4 +8975 F3D5 +8976 F3D6 +8977 F3D7 +8978 F3D8 +8979 F3D9 +897A F3DA +897B F3DB +897C F3DC +897D F3DD +897E F3DE +89A1 F3DF +89A2 F3E0 +89A3 F3E1 +89A4 F3E2 +89A5 F3E3 +89A6 F3E4 +89AB F3E9 +89AC F3EA +89AD F3EB +89AE F3EC +89B0 F3EE +89B1 F3EF +89B2 F3F0 +89B5 F3F3 +89B6 F3F4 +89B7 F3F5 +89B8 F3F6 +89B9 F3F7 +89BA F3F8 +89BB F3F9 +89BC F3FA +89BD F3FB +89BE F3FC +89BF F3FD +89C1 F3FF +89C2 F400 +89C3 F401 +89C5 F403 +89C6 F404 +89C7 F405 +89C8 F406 +89C9 F407 +89CA F408 +89CB F409 +89CC F40A +89CD F40B +89CE F40C +89CF F40D +89D0 F40E +89D1 F40F +89D2 F410 +89D3 F411 +89D4 F412 +89D5 F413 +89D6 F414 +89D7 F415 +89D8 F416 +89D9 F417 +89DA F418 +89DB F419 +89DC F41A +89DD F41B +89DE F41C +89DF F41D +89E0 F41E +89E1 F41F +89E2 F420 +89E3 F421 +89E4 F422 +89E5 F423 +89E6 F424 +89E7 F425 +89E8 F426 +89E9 F427 +89EA F428 +89EB F429 +89EC F42A +89ED F42B +89EE F42C +89EF F42D +89F0 F42E +89F1 F42F +89F2 F430 +89F3 F431 +89F4 F432 +89F5 F433 +89F6 F434 +89F7 F435 +89F8 F436 +89F9 F437 +89FA F438 +89FB F439 +89FC F43A +89FD F43B +89FE F43C +8A40 F43D +8A41 F43E +8A43 F440 +8A44 F441 +8A45 F442 +8A46 F443 +8A47 F444 +8A48 F445 +8A49 F446 +8A4A F447 +8A4B F448 +8A4C F449 +8A4D F44A +8A4E F44B +8A4F F44C +8A50 F44D +8A51 F44E +8A52 F44F +8A53 F450 +8A54 F451 +8A55 F452 +8A56 F453 +8A57 F454 +8A58 F455 +8A59 F456 +8A5A F457 +8A5B F458 +8A5C F459 +8A5D F45A +8A5E F45B +8A5F F45C +8A60 F45D +8A61 F45E +8A62 F45F +8A64 F461 +8A65 F462 +8A66 F463 +8A67 F464 +8A68 F465 +8A69 F466 +8A6A F467 +8A6B F468 +8A6C F469 +8A6D F46A +8A6E F46B +8A6F F46C +8A70 F46D +8A71 F46E +8A72 F46F +8A73 F470 +8A74 F471 +8A76 F473 +8A77 F474 +8A78 F475 +8A79 F476 +8A7A F477 +8A7B F478 +8A7C F479 +8A7D F47A +8A7E F47B +8AA1 F47C +8AA2 F47D +8AA3 F47E +8AA4 F47F +8AA5 F480 +8AA6 F481 +8AA7 F482 +8AA8 F483 +8AA9 F484 +8AAA F485 +8AAC F487 +8AAD F488 +8AAE F489 +8AAF F48A +8AB0 F48B +8AB2 F48D +8AB3 F48E +8AB4 F48F +8AB5 F490 +8AB6 F491 +8AB7 F492 +8AB8 F493 +8AB9 F494 +8ABB F496 +8ABC F497 +8ABD F498 +8ABE F499 +8ABF F49A +8AC0 F49B +8AC1 F49C +8AC2 F49D +8AC3 F49E +8AC4 F49F +8AC5 F4A0 +8AC6 F4A1 +8AC7 F4A2 +8AC9 F4A4 +8ACA F4A5 +8ACB F4A6 +8ACC F4A7 +8ACE F4A9 +8ACF F4AA +8AD0 F4AB +8AD1 F4AC +8AD2 F4AD +8AD3 F4AE +8AD4 F4AF +8AD5 F4B0 +8AD6 F4B1 +8AD7 F4B2 +8AD8 F4B3 +8AD9 F4B4 +8ADA F4B5 +8ADB F4B6 +8ADC F4B7 +8ADF F4BA +8AE0 F4BB +8AE1 F4BC +8AE2 F4BD +8AE3 F4BE +8AE4 F4BF +8AE5 F4C0 +8AE6 F4C1 +8AE7 F4C2 +8AE8 F4C3 +8AE9 F4C4 +8AEA F4C5 +8AEB F4C6 +8AEC F4C7 +8AED F4C8 +8AEE F4C9 +8AEF F4CA +8AF0 F4CB +8AF1 F4CC +8AF2 F4CD +8AF3 F4CE +8AF4 F4CF +8AF6 F4D1 +8AF7 F4D2 +8AF8 F4D3 +8AF9 F4D4 +8AFA F4D5 +8AFB F4D6 +8AFC F4D7 +8AFD F4D8 +8AFE F4D9 +8B40 F4DA +8B41 F4DB +8B42 F4DC +8B43 F4DD +8B44 F4DE +8B45 F4DF +8B46 F4E0 +8B47 F4E1 +8B48 F4E2 +8B49 F4E3 +8B4A F4E4 +8B4B F4E5 +8B4C F4E6 +8B4D F4E7 +8B4E F4E8 +8B4F F4E9 +8B50 F4EA +8B51 F4EB +8B52 F4EC +8B53 F4ED +8B55 F4EF +8B56 F4F0 +8B57 F4F1 +8B58 F4F2 +8B59 F4F3 +8B5A F4F4 +8B5B F4F5 +8B5C F4F6 +8B5D F4F7 +8B5E F4F8 +8B5F F4F9 +8B60 F4FA +8B61 F4FB +8B62 F4FC +8B63 F4FD +8B64 F4FE +8B65 F4FF +8B66 F500 +8B67 F501 +8B68 F502 +8B69 F503 +8B6A F504 +8B6B F505 +8B6C F506 +8B6D F507 +8B6E F508 +8B6F F509 +8B70 F50A +8B71 F50B +8B72 F50C +8B73 F50D +8B74 F50E +8B75 F50F +8B76 F510 +8B77 F511 +8B78 F512 +8B79 F513 +8B7A F514 +8B7B F515 +8B7C F516 +8B7D F517 +8B7E F518 +8BA1 F519 +8BA2 F51A +8BA3 F51B +8BA4 F51C +8BA5 F51D +8BA6 F51E +8BA7 F51F +8BA8 F520 +8BA9 F521 +8BAA F522 +8BAB F523 +8BAC F524 +8BAD F525 +8BAE F526 +8BAF F527 +8BB0 F528 +8BB1 F529 +8BB2 F52A +8BB3 F52B +8BB4 F52C +8BB5 F52D +8BB6 F52E +8BB7 F52F +8BB8 F530 +8BB9 F531 +8BBA F532 +8BBB F533 +8BBC F534 +8BBD F535 +8BBE F536 +8BBF F537 +8BC0 F538 +8BC1 F539 +8BC2 F53A +8BC3 F53B +8BC4 F53C +8BC5 F53D +8BC6 F53E +8BC7 F53F +8BC8 F540 +8BC9 F541 +8BCA F542 +8BCB F543 +8BCC F544 +8BCD F545 +8BCE F546 +8BCF F547 +8BD0 F548 +8BD1 F549 +8BD2 F54A +8BD3 F54B +8BD4 F54C +8BD5 F54D +8BD6 F54E +8BD7 F54F +8BD8 F550 +8BD9 F551 +8BDA F552 +8BDB F553 +8BDC F554 +8BDE F556 +8BDF F557 +8BE0 F558 +8BE1 F559 +8BE2 F55A +8BE3 F55B +8BE4 F55C +8BE5 F55D +8BE6 F55E +8BE7 F55F +8BE8 F560 +8BE9 F561 +8BEA F562 +8BEB F563 +8BEC F564 +8BED F565 +8BEE F566 +8BEF F567 +8BF0 F568 +8BF1 F569 +8BF2 F56A +8BF3 F56B +8BF4 F56C +8BF5 F56D +8BF6 F56E +8BF7 F56F +8BF8 F570 +8BF9 F571 +8BFA F572 +8BFB F573 +8BFC F574 +8BFD F575 +8C40 F577 +8C41 F578 +8C42 F579 +8C43 F57A +8C44 F57B +8C45 F57C +8C46 F57D +8C47 F57E +8C48 F57F +8C49 F580 +8C4A F581 +8C4B F582 +8C4C F583 +8C4D F584 +8C4E F585 +8C4F F586 +8C50 F587 +8C51 F588 +8C52 F589 +8C53 F58A +8C54 F58B +8C55 F58C +8C56 F58D +8C57 F58E +8C58 F58F +8C59 F590 +8C5A F591 +8C5B F592 +8C5C F593 +8C5D F594 +8C5E F595 +8C5F F596 +8C60 F597 +8C61 F598 +8C62 F599 +8C63 F59A +8C64 F59B +8C65 F59C +8C66 F59D +8C67 F59E +8C68 F59F +8C69 F5A0 +8C6A F5A1 +8C6B F5A2 +8C6C F5A3 +8C6D F5A4 +8C6E F5A5 +8C6F F5A6 +8C70 F5A7 +8C71 F5A8 +8C72 F5A9 +8C73 F5AA +8C74 F5AB +8C75 F5AC +8C76 F5AD +8C77 F5AE +8C78 F5AF +8C79 F5B0 +8C7A F5B1 +8C7B F5B2 +8C7C F5B3 +8C7D F5B4 +8C7E F5B5 +8CA1 F5B6 +8CA2 F5B7 +8CA3 F5B8 +8CA4 F5B9 +8CA5 F5BA +8CA7 F5BC +8CA8 F5BD +8CA9 F5BE +8CAA F5BF +8CAB F5C0 +8CAC F5C1 +8CAD F5C2 +8CAE F5C3 +8CAF F5C4 +8CB0 F5C5 +8CB1 F5C6 +8CB2 F5C7 +8CB3 F5C8 +8CB4 F5C9 +8CB5 F5CA +8CB6 F5CB +8CB7 F5CC +8CB8 F5CD +8CB9 F5CE +8CBA F5CF +8CBB F5D0 +8CBC F5D1 +8CBD F5D2 +8CBE F5D3 +8CBF F5D4 +8CC0 F5D5 +8CC1 F5D6 +8CC2 F5D7 +8CC3 F5D8 +8CC4 F5D9 +8CC5 F5DA +8CC9 F5DE +8CCA F5DF +8CCB F5E0 +8CCC F5E1 +8CCE F5E3 +8CCF F5E4 +8CD0 F5E5 +8CD1 F5E6 +8CD2 F5E7 +8CD3 F5E8 +8CD4 F5E9 +8CD5 F5EA +8CD6 F5EB +8CD7 F5EC +8CD8 F5ED +8CD9 F5EE +8CDA F5EF +8CDB F5F0 +8CDC F5F1 +8CDD F5F2 +8CDE F5F3 +8CDF F5F4 +8CE0 F5F5 +8CE1 F5F6 +8CE2 F5F7 +8CE3 F5F8 +8CE4 F5F9 +8CE6 F5FB +8CE7 F5FC +8CE8 F5FD +8CE9 F5FE +8CEA F5FF +8CEB F600 +8CEC F601 +8CED F602 +8CEE F603 +8CEF F604 +8CF0 F605 +8CF1 F606 +8CF2 F607 +8CF3 F608 +8CF4 F609 +8CF5 F60A +8CF6 F60B +8CF7 F60C +8CF8 F60D +8CF9 F60E +8CFA F60F +8CFB F610 +8CFC F611 +8CFD F612 +8CFE F613 +8D40 F614 +8D42 F616 +8D43 F617 +8D44 F618 +8D45 F619 +8D46 F61A +8D47 F61B +8D48 F61C +8D49 F61D +8D4A F61E +8D4B F61F +8D4C F620 +8D4D F621 +8D4E F622 +8D4F F623 +8D50 F624 +8D51 F625 +8D52 F626 +8D53 F627 +8D54 F628 +8D55 F629 +8D56 F62A +8D57 F62B +8D58 F62C +8D59 F62D +8D5A F62E +8D5B F62F +8D5C F630 +8D5D F631 +8D5E F632 +8D5F F633 +8D60 F634 +8D61 F635 +8D62 F636 +8D63 F637 +8D64 F638 +8D65 F639 +8D66 F63A +8D67 F63B +8D68 F63C +8D69 F63D +8D6A F63E +8D6B F63F +8D6C F640 +8D6D F641 +8D6E F642 +8D6F F643 +8D70 F644 +8D71 F645 +8D72 F646 +8D73 F647 +8D74 F648 +8D75 F649 +8D76 F64A +8D77 F64B +8D78 F64C +8D79 F64D +8D7A F64E +8D7B F64F +8D7C F650 +8D7D F651 +8D7E F652 +8DA1 F653 +8DA2 F654 +8DA3 F655 +8DA4 F656 +8DA5 F657 +8DA6 F658 +8DA7 F659 +8DA8 F65A +8DA9 F65B +8DAA F65C +8DAB F65D +8DAC F65E +8DAD F65F +8DAE F660 +8DAF F661 +8DB0 F662 +8DB1 F663 +8DB2 F664 +8DB3 F665 +8DB4 F666 +8DB5 F667 +8DB6 F668 +8DB7 F669 +8DB8 F66A +8DB9 F66B +8DBA F66C +8DBB F66D +8DBC F66E +8DBD F66F +8DBE F670 +8DBF F671 +8DC0 F672 +8DC1 F673 +8DC2 F674 +8DC3 F675 +8DC4 F676 +8DC5 F677 +8DC6 F678 +8DC7 F679 +8DC8 F67A +8DC9 F67B +8DCA F67C +8DCB F67D +8DCC F67E +8DCD F67F +8DCE F680 +8DCF F681 +8DD0 F682 +8DD1 F683 +8DD2 F684 +8DD3 F685 +8DD4 F686 +8DD5 F687 +8DD6 F688 +8DD7 F689 +8DD8 F68A +8DD9 F68B +8DDA F68C +8DDB F68D +8DDC F68E +8DDD F68F +8DDE F690 +8DDF F691 +8DE0 F692 +8DE1 F693 +8DE2 F694 +8DE3 F695 +8DE4 F696 +8DE5 F697 +8DE6 F698 +8DE7 F699 +8DE8 F69A +8DE9 F69B +8DEA F69C +8DEB F69D +8DEC F69E +8DED F69F +8DEE F6A0 +8DEF F6A1 +8DF0 F6A2 +8DF1 F6A3 +8DF2 F6A4 +8DF3 F6A5 +8DF4 F6A6 +8DF5 F6A7 +8DF6 F6A8 +8DF7 F6A9 +8DF8 F6AA +8DF9 F6AB +8DFA F6AC +8DFB F6AD +8DFC F6AE +8DFD F6AF +8DFE F6B0 +8E40 E311 +8E41 E312 +8E42 E313 +8E43 E314 +8E44 E315 +8E45 E316 +8E46 E317 +8E47 E318 +8E48 E319 +8E49 E31A +8E4A E31B +8E4B E31C +8E4C E31D +8E4D E31E +8E4E E31F +8E4F E320 +8E50 E321 +8E51 E322 +8E52 E323 +8E53 E324 +8E54 E325 +8E55 E326 +8E56 E327 +8E57 E328 +8E58 E329 +8E59 E32A +8E5A E32B +8E5B E32C +8E5C E32D +8E5D E32E +8E5E E32F +8E5F E330 +8E60 E331 +8E61 E332 +8E62 E333 +8E63 E334 +8E64 E335 +8E65 E336 +8E66 E337 +8E67 E338 +8E68 E339 +8E6A E33B +8E6B E33C +8E6C E33D +8E6D E33E +8E6E E33F +8E70 E341 +8E71 E342 +8E72 E343 +8E73 E344 +8E74 E345 +8E75 E346 +8E76 E347 +8E77 E348 +8E78 E349 +8E79 E34A +8E7A E34B +8E7B E34C +8E7C E34D +8E7D E34E +8EA1 E350 +8EA2 E351 +8EA3 E352 +8EA4 E353 +8EA5 E354 +8EA6 E355 +8EA7 E356 +8EA8 E357 +8EA9 E358 +8EAA E359 +8EAC E35B +8EAD E35C +8EAE E35D +8EAF E35E +8EB0 E35F +8EB1 E360 +8EB2 E361 +8EB3 E362 +8EB5 E364 +8EB6 E365 +8EB7 E366 +8EB8 E367 +8EB9 E368 +8EBA E369 +8EBB E36A +8EBC E36B +8EBD E36C +8EBE E36D +8EBF E36E +8EC0 E36F +8EC1 E370 +8EC2 E371 +8EC3 E372 +8EC4 E373 +8EC5 E374 +8EC6 E375 +8EC7 E376 +8EC8 E377 +8EC9 E378 +8ECA E379 +8ECB E37A +8ECC E37B +8ECE E37D +8ECF E37E +8ED1 E380 +8ED2 E381 +8ED3 E382 +8ED4 E383 +8ED5 E384 +8ED6 E385 +8ED7 E386 +8ED8 E387 +8ED9 E388 +8EDA E389 +8EDB E38A +8EDC E38B +8EDD E38C +8EDE E38D +8EDF E38E +8EE0 E38F +8EE1 E390 +8EE2 E391 +8EE3 E392 +8EE4 E393 +8EE5 E394 +8EE6 E395 +8EE7 E396 +8EE8 E397 +8EE9 E398 +8EEA E399 +8EEB E39A +8EEC E39B +8EED E39C +8EEE E39D +8EEF E39E +8EF0 E39F +8EF1 E3A0 +8EF2 E3A1 +8EF3 E3A2 +8EF4 E3A3 +8EF5 E3A4 +8EF6 E3A5 +8EF7 E3A6 +8EF8 E3A7 +8EF9 E3A8 +8EFA E3A9 +8EFB E3AA +8EFC E3AB +8EFD E3AC +8EFE E3AD +8F40 E3AE +8F41 E3AF +8F42 E3B0 +8F43 E3B1 +8F44 E3B2 +8F45 E3B3 +8F46 E3B4 +8F47 E3B5 +8F48 E3B6 +8F49 E3B7 +8F4A E3B8 +8F4B E3B9 +8F4C E3BA +8F4D E3BB +8F4E E3BC +8F4F E3BD +8F50 E3BE +8F51 E3BF +8F52 E3C0 +8F53 E3C1 +8F54 E3C2 +8F55 E3C3 +8F56 E3C4 +8F58 E3C6 +8F59 E3C7 +8F5A E3C8 +8F5B E3C9 +8F5C E3CA +8F5D E3CB +8F5E E3CC +8F5F E3CD +8F60 E3CE +8F61 E3CF +8F62 E3D0 +8F63 E3D1 +8F64 E3D2 +8F65 E3D3 +8F66 E3D4 +8F67 E3D5 +8F68 E3D6 +8F6A E3D8 +8F6B E3D9 +8F6C E3DA +8F6D E3DB +8F6F E3DD +8F70 E3DE +8F71 E3DF +8F72 E3E0 +8F73 E3E1 +8F74 E3E2 +8F75 E3E3 +8F76 E3E4 +8F77 E3E5 +8F78 E3E6 +8F79 E3E7 +8F7A E3E8 +8F7B E3E9 +8F7C E3EA +8F7D E3EB +8F7E E3EC +8FA1 E3ED +8FA2 E3EE +8FA3 E3EF +8FA4 E3F0 +8FA5 E3F1 +8FA6 E3F2 +8FA7 E3F3 +8FA8 E3F4 +8FA9 E3F5 +8FAA E3F6 +8FAB E3F7 +8FAC E3F8 +8FAD E3F9 +8FAE E3FA +8FAF E3FB +8FB0 E3FC +8FB1 E3FD +8FB2 E3FE +8FB3 E3FF +8FB4 E400 +8FB5 E401 +8FB6 E402 +8FB7 E403 +8FB8 E404 +8FB9 E405 +8FBA E406 +8FBB E407 +8FBC E408 +8FBD E409 +8FBE E40A +8FBF E40B +8FC0 E40C +8FC1 E40D +8FC2 E40E +8FC3 E40F +8FC4 E410 +8FC5 E411 +8FC6 E412 +8FC7 E413 +8FC8 E414 +8FC9 E415 +8FCA E416 +8FCD E419 +8FCE E41A +8FCF E41B +8FD0 E41C +8FD1 E41D +8FD2 E41E +8FD3 E41F +8FD4 E420 +8FD5 E421 +8FD6 E422 +8FD7 E423 +8FD8 E424 +8FD9 E425 +8FDA E426 +8FDB E427 +8FDC E428 +8FDD E429 +8FDE E42A +8FDF E42B +8FE0 E42C +8FE1 E42D +8FE2 E42E +8FE3 E42F +8FE4 E430 +8FE5 E431 +8FE6 E432 +8FE7 E433 +8FE8 E434 +8FE9 E435 +8FEA E436 +8FEB E437 +8FEC E438 +8FED E439 +8FEE E43A +8FEF E43B +8FF0 E43C +8FF1 E43D +8FF2 E43E +8FF3 E43F +8FF4 E440 +8FF5 E441 +8FF6 E442 +8FF7 E443 +8FF8 E444 +8FF9 E445 +8FFA E446 +8FFB E447 +8FFC E448 +8FFD E449 +9040 E44B +9041 E44C +9042 E44D +9043 E44E +9044 E44F +9045 E450 +9046 E451 +9047 E452 +9048 E453 +9049 E454 +904A E455 +904B E456 +904C E457 +904D E458 +904E E459 +904F E45A +9050 E45B +9051 E45C +9052 E45D +9053 E45E +9054 E45F +9055 E460 +9056 E461 +9057 E462 +9058 E463 +9059 E464 +905A E465 +905B E466 +905C E467 +905D E468 +905E E469 +905F E46A +9060 E46B +9061 E46C +9062 E46D +9063 E46E +9064 E46F +9065 E470 +9066 E471 +9067 E472 +9068 E473 +9069 E474 +906A E475 +906B E476 +906C E477 +906E E479 +906F E47A +9070 E47B +9071 E47C +9072 E47D +9073 E47E +9074 E47F +9075 E480 +9076 E481 +9077 E482 +9078 E483 +9079 E484 +907B E486 +907C E487 +907D E488 +907E E489 +90A1 E48A +90A2 E48B +90A3 E48C +90A4 E48D +90A5 E48E +90A6 E48F +90A7 E490 +90A8 E491 +90A9 E492 +90AA E493 +90AB E494 +90AC E495 +90AD E496 +90AE E497 +90AF E498 +90B0 E499 +90B1 E49A +90B2 E49B +90B3 E49C +90B4 E49D +90B5 E49E +90B6 E49F +90B7 E4A0 +90B8 E4A1 +90B9 E4A2 +90BA E4A3 +90BB E4A4 +90BC E4A5 +90BD E4A6 +90BE E4A7 +90BF E4A8 +90C0 E4A9 +90C1 E4AA +90C2 E4AB +90C3 E4AC +90C4 E4AD +90C5 E4AE +90C6 E4AF +90C7 E4B0 +90C8 E4B1 +90C9 E4B2 +90CA E4B3 +90CB E4B4 +90CC E4B5 +90CD E4B6 +90CE E4B7 +90CF E4B8 +90D0 E4B9 +90D1 E4BA +90D2 E4BB +90D3 E4BC +90D4 E4BD +90D5 E4BE +90D6 E4BF +90D7 E4C0 +90D8 E4C1 +90D9 E4C2 +90DA E4C3 +90DB E4C4 +90DD E4C6 +90DE E4C7 +90DF E4C8 +90E0 E4C9 +90E1 E4CA +90E2 E4CB +90E3 E4CC +90E4 E4CD +90E5 E4CE +90E6 E4CF +90E7 E4D0 +90E8 E4D1 +90E9 E4D2 +90EA E4D3 +90EB E4D4 +90EC E4D5 +90ED E4D6 +90EE E4D7 +90EF E4D8 +90F0 E4D9 +90F2 E4DB +90F3 E4DC +90F4 E4DD +90F5 E4DE +90F6 E4DF +90F7 E4E0 +90F8 E4E1 +90F9 E4E2 +90FA E4E3 +90FB E4E4 +90FC E4E5 +90FD E4E6 +90FE E4E7 +9140 E4E8 +9141 E4E9 +9142 E4EA +9143 E4EB +9144 E4EC +9145 E4ED +9146 E4EE +9147 E4EF +9148 E4F0 +9149 E4F1 +914A E4F2 +914B E4F3 +914C E4F4 +914D E4F5 +914E E4F6 +914F E4F7 +9150 E4F8 +9151 E4F9 +9152 E4FA +9153 E4FB +9154 E4FC +9155 E4FD +9156 E4FE +9157 E4FF +9158 E500 +9159 E501 +915A E502 +915B E503 +915C E504 +915D E505 +915E E506 +915F E507 +9160 E508 +9161 E509 +9162 E50A +9163 E50B +9164 E50C +9165 E50D +9166 E50E +9167 E50F +9168 E510 +9169 E511 +916A E512 +916B E513 +916C E514 +916D E515 +916E E516 +916F E517 +9170 E518 +9171 E519 +9172 E51A +9173 E51B +9174 E51C +9175 E51D +9176 E51E +9177 E51F +9178 E520 +9179 E521 +917A E522 +917B E523 +917C E524 +917D E525 +917E E526 +91A1 E527 +91A2 E528 +91A3 E529 +91A4 E52A +91A5 E52B +91A6 E52C +91A7 E52D +91A8 E52E +91A9 E52F +91AA E530 +91AB E531 +91AC E532 +91AD E533 +91AE E534 +91AF E535 +91B0 E536 +91B1 E537 +91B2 E538 +91B3 E539 +91B4 E53A +91B5 E53B +91B6 E53C +91B7 E53D +91B8 E53E +91B9 E53F +91BA E540 +91BB E541 +91BC E542 +91BD E543 +91BE E544 +91C0 E546 +91C1 E547 +91C2 E548 +91C3 E549 +91C4 E54A +91C5 E54B +91C6 E54C +91C7 E54D +91C8 E54E +91C9 E54F +91CA E550 +91CB E551 +91CC E552 +91CD E553 +91CE E554 +91CF E555 +91D0 E556 +91D1 E557 +91D2 E558 +91D3 E559 +91D4 E55A +91D5 E55B +91D6 E55C +91D7 E55D +91D8 E55E +91D9 E55F +91DA E560 +91DB E561 +91DC E562 +91DD E563 +91DE E564 +91DF E565 +91E0 E566 +91E1 E567 +91E2 E568 +91E3 E569 +91E4 E56A +91E5 E56B +91E6 E56C +91E7 E56D +91E8 E56E +91E9 E56F +91EA E570 +91EB E571 +91EC E572 +91ED E573 +91EE E574 +91EF E575 +91F0 E576 +91F1 E577 +91F2 E578 +91F3 E579 +91F4 E57A +91F5 E57B +91F6 E57C +91F7 E57D +91F8 E57E +91F9 E57F +91FA E580 +91FB E581 +91FC E582 +91FD E583 +91FE E584 +9240 E585 +9241 E586 +9242 E587 +9243 E588 +9245 E58A +9246 E58B +9247 E58C +9248 E58D +9249 E58E +924A E58F +924B E590 +924C E591 +924D E592 +924E E593 +924F E594 +9250 E595 +9251 E596 +9252 E597 +9253 E598 +9254 E599 +9255 E59A +9256 E59B +9257 E59C +9258 E59D +9259 E59E +925A E59F +925B E5A0 +925C E5A1 +925D E5A2 +925E E5A3 +925F E5A4 +9260 E5A5 +9261 E5A6 +9262 E5A7 +9263 E5A8 +9264 E5A9 +9265 E5AA +9266 E5AB +9267 E5AC +9268 E5AD +9269 E5AE +926A E5AF +926B E5B0 +926C E5B1 +926D E5B2 +926E E5B3 +926F E5B4 +9270 E5B5 +9271 E5B6 +9272 E5B7 +9273 E5B8 +9274 E5B9 +9275 E5BA +9276 E5BB +9277 E5BC +9278 E5BD +9279 E5BE +927A E5BF +927B E5C0 +927C E5C1 +927D E5C2 +927E E5C3 +92A1 E5C4 +92A2 E5C5 +92A3 E5C6 +92A4 E5C7 +92A5 E5C8 +92A6 E5C9 +92A7 E5CA +92A8 E5CB +92A9 E5CC +92AA E5CD +92AB E5CE +92AC E5CF +92AD E5D0 +92AE E5D1 +92B3 E5D6 +92B4 E5D7 +92B5 E5D8 +92B6 E5D9 +92B7 E5DA +92B8 E5DB +92B9 E5DC +92BA E5DD +92BB E5DE +92BC E5DF +92BD E5E0 +92BE E5E1 +92BF E5E2 +92C0 E5E3 +92C1 E5E4 +92C2 E5E5 +92C3 E5E6 +92C4 E5E7 +92C5 E5E8 +92C6 E5E9 +92C7 E5EA +92C9 E5EC +92CA E5ED +92CB E5EE +92CC E5EF +92CD E5F0 +92CE E5F1 +92CF E5F2 +92D0 E5F3 +92D2 E5F5 +92D3 E5F6 +92D4 E5F7 +92D5 E5F8 +92D6 E5F9 +92D7 E5FA +92D8 E5FB +92D9 E5FC +92DA E5FD +92DB E5FE +92DC E5FF +92DD E600 +92DE E601 +92DF E602 +92E0 E603 +92E1 E604 +92E2 E605 +92E3 E606 +92E4 E607 +92E5 E608 +92E6 E609 +92E7 E60A +92E8 E60B +92E9 E60C +92EA E60D +92EB E60E +92EC E60F +92ED E610 +92EE E611 +92EF E612 +92F0 E613 +92F1 E614 +92F2 E615 +92F3 E616 +92F4 E617 +92F5 E618 +92F6 E619 +92F7 E61A +92F8 E61B +92F9 E61C +92FA E61D +92FB E61E +92FC E61F +92FD E620 +92FE E621 +9340 E622 +9341 E623 +9342 E624 +9343 E625 +9344 E626 +9345 E627 +9346 E628 +9347 E629 +9348 E62A +9349 E62B +934A E62C +934B E62D +934C E62E +934D E62F +934E E630 +934F E631 +9350 E632 +9351 E633 +9352 E634 +9353 E635 +9354 E636 +9355 E637 +9356 E638 +9357 E639 +9358 E63A +9359 E63B +935A E63C +935B E63D +935C E63E +935D E63F +935E E640 +935F E641 +9360 E642 +9361 E643 +9362 E644 +9363 E645 +9364 E646 +9365 E647 +9366 E648 +9367 E649 +9368 E64A +9369 E64B +936A E64C +936B E64D +936C E64E +936D E64F +936E E650 +936F E651 +9370 E652 +9371 E653 +9372 E654 +9373 E655 +9374 E656 +9375 E657 +9376 E658 +9377 E659 +9378 E65A +9379 E65B +937A E65C +937B E65D +937C E65E +937D E65F +937E E660 +93A1 E661 +93A2 E662 +93A3 E663 +93A4 E664 +93A5 E665 +93A6 E666 +93A7 E667 +93A8 E668 +93A9 E669 +93AA E66A +93AB E66B +93AC E66C +93AD E66D +93AE E66E +93AF E66F +93B0 E670 +93B1 E671 +93B2 E672 +93B3 E673 +93B4 E674 +93B5 E675 +93B6 E676 +93B7 E677 +93B8 E678 +93B9 E679 +93BA E67A +93BB E67B +93BC E67C +93BD E67D +93BE E67E +93BF E67F +93C0 E680 +93C1 E681 +93C2 E682 +93C3 E683 +93C4 E684 +93C5 E685 +93C6 E686 +93C7 E687 +93C8 E688 +93C9 E689 +93CA E68A +93CB E68B +93CC E68C +93CD E68D +93CE E68E +93CF E68F +93D0 E690 +93D1 E691 +93D2 E692 +93D3 E693 +93D4 E694 +93D5 E695 +93D6 E696 +93D7 E697 +93D8 E698 +93D9 E699 +93DA E69A +93DB E69B +93DC E69C +93DD E69D +93DE E69E +93DF E69F +93E0 E6A0 +93E1 E6A1 +93E2 E6A2 +93E3 E6A3 +93E4 E6A4 +93E5 E6A5 +93E6 E6A6 +93E7 E6A7 +93E8 E6A8 +93E9 E6A9 +93EA E6AA +93EB E6AB +93EC E6AC +93ED E6AD +93EE E6AE +93EF E6AF +93F0 E6B0 +93F1 E6B1 +93F2 E6B2 +93F3 E6B3 +93F4 E6B4 +93F5 E6B5 +93F6 E6B6 +93F7 E6B7 +93F8 E6B8 +93F9 E6B9 +93FA E6BA +93FB E6BB +93FC E6BC +93FD E6BD +93FE E6BE +9440 E6BF +9441 E6C0 +9442 E6C1 +9443 E6C2 +9444 E6C3 +9445 E6C4 +9446 E6C5 +9448 E6C7 +9449 E6C8 +944A E6C9 +944B E6CA +944C E6CB +944D E6CC +944E E6CD +944F E6CE +9450 E6CF +9451 E6D0 +9452 E6D1 +9453 E6D2 +9454 E6D3 +9455 E6D4 +9456 E6D5 +9457 E6D6 +9458 E6D7 +9459 E6D8 +945A E6D9 +945B E6DA +945C E6DB +945D E6DC +945E E6DD +945F E6DE +9460 E6DF +9461 E6E0 +9462 E6E1 +9463 E6E2 +9464 E6E3 +9465 E6E4 +9466 E6E5 +9467 E6E6 +9468 E6E7 +9469 E6E8 +946A E6E9 +946B E6EA +946C E6EB +946D E6EC +946E E6ED +946F E6EE +9470 E6EF +9471 E6F0 +9472 E6F1 +9473 E6F2 +9474 E6F3 +9475 E6F4 +9476 E6F5 +9477 E6F6 +9478 E6F7 +9479 E6F8 +947A E6F9 +947B E6FA +947C E6FB +947D E6FC +947E E6FD +94A1 E6FE +94A2 E6FF +94A3 E700 +94A4 E701 +94A5 E702 +94A6 E703 +94A7 E704 +94A8 E705 +94A9 E706 +94AA E707 +94AB E708 +94AC E709 +94AD E70A +94AE E70B +94AF E70C +94B0 E70D +94B1 E70E +94B2 E70F +94B3 E710 +94B4 E711 +94B5 E712 +94B6 E713 +94B7 E714 +94B8 E715 +94B9 E716 +94BA E717 +94BB E718 +94BC E719 +94BD E71A +94BE E71B +94BF E71C +94C0 E71D +94C1 E71E +94C2 E71F +94C3 E720 +94C4 E721 +94C5 E722 +94C6 E723 +94C7 E724 +94C8 E725 +94C9 E726 +94CB E728 +94CC E729 +94CD E72A +94CE E72B +94CF E72C +94D0 E72D +94D1 E72E +94D2 E72F +94D3 E730 +94D4 E731 +94D5 E732 +94D6 E733 +94D7 E734 +94D8 E735 +94D9 E736 +94DA E737 +94DB E738 +94DC E739 +94DD E73A +94DE E73B +94DF E73C +94E0 E73D +94E1 E73E +94E2 E73F +94E3 E740 +94E4 E741 +94E5 E742 +94E6 E743 +94E7 E744 +94E8 E745 +94E9 E746 +94EA E747 +94EB E748 +94EC E749 +94ED E74A +94EE E74B +94EF E74C +94F0 E74D +94F1 E74E +94F2 E74F +94F3 E750 +94F4 E751 +94F5 E752 +94F6 E753 +94F7 E754 +94F8 E755 +94F9 E756 +94FA E757 +94FB E758 +94FC E759 +94FD E75A +94FE E75B +9540 E75C +9541 E75D +9542 E75E +9543 E75F +9544 E760 +9545 E761 +9546 E762 +9547 E763 +9548 E764 +9549 E765 +954A E766 +954B E767 +954C E768 +954D E769 +954E E76A +954F E76B +9550 E76C +9551 E76D +9552 E76E +9553 E76F +9554 E770 +9555 E771 +9556 E772 +9557 E773 +9558 E774 +9559 E775 +955A E776 +955B E777 +955C E778 +955D E779 +955E E77A +955F E77B +9560 E77C +9561 E77D +9562 E77E +9563 E77F +9564 E780 +9565 E781 +9566 E782 +9567 E783 +9568 E784 +9569 E785 +956A E786 +956B E787 +956C E788 +956D E789 +956E E78A +956F E78B +9570 E78C +9571 E78D +9572 E78E +9573 E78F +9574 E790 +9575 E791 +9576 E792 +9577 E793 +9578 E794 +9579 E795 +957A E796 +957B E797 +957C E798 +957D E799 +957E E79A +95A1 E79B +95A2 E79C +95A3 E79D +95A4 E79E +95A5 E79F +95A6 E7A0 +95A7 E7A1 +95A8 E7A2 +95A9 E7A3 +95AA E7A4 +95AB E7A5 +95AC E7A6 +95AD E7A7 +95AE E7A8 +95AF E7A9 +95B0 E7AA +95B1 E7AB +95B2 E7AC +95B3 E7AD +95B4 E7AE +95B5 E7AF +95B6 E7B0 +95B7 E7B1 +95B8 E7B2 +95B9 E7B3 +95BA E7B4 +95BB E7B5 +95BC E7B6 +95BD E7B7 +95BE E7B8 +95BF E7B9 +95C0 E7BA +95C1 E7BB +95C2 E7BC +95C3 E7BD +95C4 E7BE +95C5 E7BF +95C6 E7C0 +95C7 E7C1 +95C8 E7C2 +95C9 E7C3 +95CA E7C4 +95CB E7C5 +95CC E7C6 +95CD E7C7 +95CE E7C8 +95CF E7C9 +95D0 E7CA +95D1 E7CB +95D2 E7CC +95D3 E7CD +95D4 E7CE +95D5 E7CF +95D6 E7D0 +95D7 E7D1 +95D8 E7D2 +95DA E7D4 +95DB E7D5 +95DC E7D6 +95DD E7D7 +95DE E7D8 +95DF E7D9 +95E0 E7DA +95E1 E7DB +95E2 E7DC +95E3 E7DD +95E4 E7DE +95E5 E7DF +95E6 E7E0 +95E7 E7E1 +95E8 E7E2 +95E9 E7E3 +95EA E7E4 +95EB E7E5 +95EC E7E6 +95ED E7E7 +95EE E7E8 +95EF E7E9 +95F0 E7EA +95F1 E7EB +95F2 E7EC +95F3 E7ED +95F4 E7EE +95F5 E7EF +95F6 E7F0 +95F7 E7F1 +95F8 E7F2 +95F9 E7F3 +95FA E7F4 +95FB E7F5 +95FC E7F6 +95FD E7F7 +95FE E7F8 +9640 E7F9 +9641 E7FA +9642 E7FB +9643 E7FC +9645 E7FE +9646 E7FF +9647 E800 +9648 E801 +9649 E802 +964A E803 +964B E804 +964C E805 +964D E806 +964E E807 +964F E808 +9650 E809 +9651 E80A +9652 E80B +9653 E80C +9654 E80D +9655 E80E +9656 E80F +9657 E810 +9658 E811 +9659 E812 +965A E813 +965B E814 +965C E815 +965D E816 +965E E817 +965F E818 +9660 E819 +9661 E81A +9662 E81B +9663 E81C +9664 E81D +9665 E81E +9666 E81F +9667 E820 +9668 E821 +9669 E822 +966A E823 +966B E824 +966C E825 +966D E826 +966E E827 +966F E828 +9670 E829 +9671 E82A +9672 E82B +9673 E82C +9674 E82D +9675 E82E +9676 E82F +9677 E830 +9678 E831 +9679 E832 +967A E833 +967B E834 +967C E835 +967D E836 +967E E837 +96A1 E838 +96A2 E839 +96A3 E83A +96A4 E83B +96A5 E83C +96A6 E83D +96A7 E83E +96A8 E83F +96A9 E840 +96AA E841 +96AB E842 +96AC E843 +96AD E844 +96AE E845 +96AF E846 +96B0 E847 +96B1 E848 +96B2 E849 +96B3 E84A +96B4 E84B +96B5 E84C +96B6 E84D +96B7 E84E +96B8 E84F +96B9 E850 +96BA E851 +96BB E852 +96BC E853 +96BD E854 +96BE E855 +96BF E856 +96C0 E857 +96C1 E858 +96C2 E859 +96C3 E85A +96C4 E85B +96C5 E85C +96C6 E85D +96C7 E85E +96C8 E85F +96C9 E860 +96CA E861 +96CB E862 +96CC E863 +96CD E864 +96CE E865 +96CF E866 +96D0 E867 +96D1 E868 +96D2 E869 +96D3 E86A +96D4 E86B +96D5 E86C +96D6 E86D +96D7 E86E +96D8 E86F +96D9 E870 +96DA E871 +96DB E872 +96DC E873 +96DD E874 +96DE E875 +96DF E876 +96E0 E877 +96E1 E878 +96E2 E879 +96E3 E87A +96E4 E87B +96E5 E87C +96E6 E87D +96E7 E87E +96E8 E87F +96E9 E880 +96EA E881 +96EB E882 +96EC E883 +96EE E885 +96EF E886 +96F0 E887 +96F1 E888 +96F2 E889 +96F3 E88A +96F4 E88B +96F5 E88C +96F6 E88D +96F7 E88E +96F8 E88F +96F9 E890 +96FA E891 +96FB E892 +96FD E894 +96FE E895 +9740 E896 +9741 E897 +9742 E898 +9743 E899 +9744 E89A +9745 E89B +9746 E89C +9747 E89D +9748 E89E +9749 E89F +974A E8A0 +974B E8A1 +974C E8A2 +974D E8A3 +974E E8A4 +974F E8A5 +9750 E8A6 +9751 E8A7 +9752 E8A8 +9753 E8A9 +9754 E8AA +9755 E8AB +9756 E8AC +9757 E8AD +9758 E8AE +9759 E8AF +975A E8B0 +975B E8B1 +975C E8B2 +975D E8B3 +975E E8B4 +975F E8B5 +9760 E8B6 +9761 E8B7 +9762 E8B8 +9763 E8B9 +9764 E8BA +9765 E8BB +9766 E8BC +9767 E8BD +9768 E8BE +9769 E8BF +976A E8C0 +976B E8C1 +976C E8C2 +976D E8C3 +976E E8C4 +976F E8C5 +9770 E8C6 +9771 E8C7 +9772 E8C8 +9773 E8C9 +9774 E8CA +9775 E8CB +9776 E8CC +9777 E8CD +9778 E8CE +9779 E8CF +977A E8D0 +977B E8D1 +977C E8D2 +977D E8D3 +977E E8D4 +97A1 E8D5 +97A2 E8D6 +97A3 E8D7 +97A4 E8D8 +97A5 E8D9 +97A6 E8DA +97A7 E8DB +97A8 E8DC +97A9 E8DD +97AA E8DE +97AB E8DF +97AC E8E0 +97AD E8E1 +97AE E8E2 +97AF E8E3 +97B0 E8E4 +97B1 E8E5 +97B2 E8E6 +97B3 E8E7 +97B4 E8E8 +97B5 E8E9 +97B6 E8EA +97B7 E8EB +97B8 E8EC +97B9 E8ED +97BA E8EE +97BB E8EF +97BC E8F0 +97BD E8F1 +97BE E8F2 +97BF E8F3 +97C0 E8F4 +97C1 E8F5 +97C2 E8F6 +97C3 E8F7 +97C4 E8F8 +97C5 E8F9 +97C6 E8FA +97C7 E8FB +97C8 E8FC +97C9 E8FD +97CA E8FE +97CB E8FF +97CC E900 +97CD E901 +97CE E902 +97CF E903 +97D0 E904 +97D1 E905 +97D2 E906 +97D3 E907 +97D4 E908 +97D5 E909 +97D6 E90A +97D7 E90B +97D8 E90C +97D9 E90D +97DA E90E +97DB E90F +97DC E910 +97DD E911 +97DE E912 +97DF E913 +97E0 E914 +97E1 E915 +97E2 E916 +97E3 E917 +97E4 E918 +97E5 E919 +97E6 E91A +97E7 E91B +97E8 E91C +97E9 E91D +97EA E91E +97EB E91F +97EC E920 +97ED E921 +97EE E922 +97EF E923 +97F0 E924 +97F1 E925 +97F2 E926 +97F3 E927 +97F4 E928 +97F5 E929 +97F6 E92A +97F7 E92B +97F8 E92C +97F9 E92D +97FA E92E +97FB E92F +97FC E930 +97FD E931 +97FE E932 +9840 E933 +9841 E934 +9842 E935 +9843 E936 +9844 E937 +9845 E938 +9846 E939 +9847 E93A +9848 E93B +9849 E93C +984A E93D +984B E93E +984C E93F +984D E940 +984E E941 +984F E942 +9850 E943 +9851 E944 +9852 E945 +9853 E946 +9854 E947 +9855 E948 +9856 E949 +9857 E94A +9858 E94B +9859 E94C +985A E94D +985B E94E +985C E94F +985D E950 +985E E951 +985F E952 +9860 E953 +9861 E954 +9862 E955 +9863 E956 +9864 E957 +9865 E958 +9866 E959 +9867 E95A +9868 E95B +9869 E95C +986A E95D +986B E95E +986C E95F +986D E960 +986E E961 +986F E962 +9870 E963 +9871 E964 +9872 E965 +9873 E966 +9874 E967 +9875 E968 +9876 E969 +9877 E96A +9878 E96B +9879 E96C +987A E96D +987B E96E +987C E96F +987D E970 +987E E971 +98A1 E972 +98A2 E973 +98A3 E974 +98A4 E975 +98A5 E976 +98A6 E977 +98A7 E978 +98A8 E979 +98A9 E97A +98AA E97B +98AB E97C +98AC E97D +98AD E97E +98AE E97F +98AF E980 +98B0 E981 +98B1 E982 +98B2 E983 +98B3 E984 +98B4 E985 +98B5 E986 +98B6 E987 +98B7 E988 +98B8 E989 +98B9 E98A +98BA E98B +98BB E98C +98BC E98D +98BD E98E +98BE E98F +98BF E990 +98C0 E991 +98C1 E992 +98C2 E993 +98C3 E994 +98C4 E995 +98C5 E996 +98C6 E997 +98C7 E998 +98C8 E999 +98C9 E99A +98CA E99B +98CB E99C +98CC E99D +98CD E99E +98CE E99F +98CF E9A0 +98D0 E9A1 +98D1 E9A2 +98D2 E9A3 +98D3 E9A4 +98D4 E9A5 +98D5 E9A6 +98D6 E9A7 +98D7 E9A8 +98D8 E9A9 +98D9 E9AA +98DA E9AB +98DB E9AC +98DC E9AD +98DD E9AE +98DE E9AF +98DF E9B0 +98E0 E9B1 +98E1 E9B2 +98E2 E9B3 +98E3 E9B4 +98E4 E9B5 +98E5 E9B6 +98E6 E9B7 +98E7 E9B8 +98E8 E9B9 +98E9 E9BA +98EA E9BB +98EB E9BC +98EC E9BD +98ED E9BE +98EE E9BF +98EF E9C0 +98F0 E9C1 +98F1 E9C2 +98F2 E9C3 +98F3 E9C4 +98F4 E9C5 +98F5 E9C6 +98F6 E9C7 +98F7 E9C8 +98F8 E9C9 +98F9 E9CA +98FA E9CB +98FB E9CC +98FC E9CD +98FD E9CE +98FE E9CF +9940 E9D0 +9941 E9D1 +9942 E9D2 +9943 E9D3 +9944 E9D4 +9945 E9D5 +9946 E9D6 +9947 E9D7 +9948 E9D8 +9949 E9D9 +994A E9DA +994B E9DB +994C E9DC +994D E9DD +994E E9DE +994F E9DF +9950 E9E0 +9951 E9E1 +9952 E9E2 +9953 E9E3 +9954 E9E4 +9955 E9E5 +9956 E9E6 +9957 E9E7 +9958 E9E8 +9959 E9E9 +995A E9EA +995B E9EB +995C E9EC +995D E9ED +995E E9EE +995F E9EF +9960 E9F0 +9961 E9F1 +9962 E9F2 +9963 E9F3 +9964 E9F4 +9965 E9F5 +9966 E9F6 +9967 E9F7 +9968 E9F8 +9969 E9F9 +996A E9FA +996B E9FB +996C E9FC +996D E9FD +996E E9FE +996F E9FF +9970 EA00 +9971 EA01 +9972 EA02 +9973 EA03 +9974 EA04 +9975 EA05 +9976 EA06 +9977 EA07 +9978 EA08 +9979 EA09 +997A EA0A +997B EA0B +997C EA0C +997D EA0D +997E EA0E +99A1 EA0F +99A2 EA10 +99A3 EA11 +99A4 EA12 +99A5 EA13 +99A6 EA14 +99A7 EA15 +99A8 EA16 +99A9 EA17 +99AA EA18 +99AB EA19 +99AC EA1A +99AD EA1B +99AE EA1C +99AF EA1D +99B0 EA1E +99B1 EA1F +99B2 EA20 +99B3 EA21 +99B4 EA22 +99B5 EA23 +99B6 EA24 +99B7 EA25 +99B8 EA26 +99B9 EA27 +99BA EA28 +99BB EA29 +99BC EA2A +99BD EA2B +99BE EA2C +99BF EA2D +99C0 EA2E +99C1 EA2F +99C2 EA30 +99C3 EA31 +99C4 EA32 +99C5 EA33 +99C6 EA34 +99C7 EA35 +99C8 EA36 +99C9 EA37 +99CA EA38 +99CB EA39 +99CC EA3A +99CD EA3B +99CE EA3C +99CF EA3D +99D0 EA3E +99D1 EA3F +99D2 EA40 +99D3 EA41 +99D4 EA42 +99D5 EA43 +99D6 EA44 +99D7 EA45 +99D8 EA46 +99D9 EA47 +99DA EA48 +99DB EA49 +99DC EA4A +99DD EA4B +99DE EA4C +99DF EA4D +99E0 EA4E +99E1 EA4F +99E2 EA50 +99E3 EA51 +99E4 EA52 +99E5 EA53 +99E6 EA54 +99E7 EA55 +99E8 EA56 +99E9 EA57 +99EA EA58 +99EB EA59 +99EC EA5A +99ED EA5B +99EE EA5C +99EF EA5D +99F0 EA5E +99F1 EA5F +99F2 EA60 +99F3 EA61 +99F4 EA62 +99F5 EA63 +99F6 EA64 +99F7 EA65 +99F8 EA66 +99F9 EA67 +99FA EA68 +99FB EA69 +99FC EA6A +99FD EA6B +99FE EA6C +9A40 EA6D +9A41 EA6E +9A42 EA6F +9A43 EA70 +9A44 EA71 +9A45 EA72 +9A46 EA73 +9A47 EA74 +9A48 EA75 +9A49 EA76 +9A4A EA77 +9A4B EA78 +9A4C EA79 +9A4D EA7A +9A4E EA7B +9A4F EA7C +9A50 EA7D +9A51 EA7E +9A52 EA7F +9A53 EA80 +9A54 EA81 +9A55 EA82 +9A56 EA83 +9A57 EA84 +9A58 EA85 +9A59 EA86 +9A5A EA87 +9A5B EA88 +9A5C EA89 +9A5D EA8A +9A5E EA8B +9A5F EA8C +9A60 EA8D +9A61 EA8E +9A62 EA8F +9A63 EA90 +9A64 EA91 +9A65 EA92 +9A66 EA93 +9A67 EA94 +9A68 EA95 +9A69 EA96 +9A6A EA97 +9A6B EA98 +9A6C EA99 +9A6D EA9A +9A6E EA9B +9A6F EA9C +9A70 EA9D +9A71 EA9E +9A72 EA9F +9A73 EAA0 +9A74 EAA1 +9A75 EAA2 +9A76 EAA3 +9A77 EAA4 +9A78 EAA5 +9A79 EAA6 +9A7A EAA7 +9A7B EAA8 +9A7C EAA9 +9A7D EAAA +9A7E EAAB +9AA1 EAAC +9AA2 EAAD +9AA3 EAAE +9AA4 EAAF +9AA5 EAB0 +9AA6 EAB1 +9AA7 EAB2 +9AA8 EAB3 +9AA9 EAB4 +9AAA EAB5 +9AAB EAB6 +9AAC EAB7 +9AAD EAB8 +9AAE EAB9 +9AAF EABA +9AB0 EABB +9AB1 EABC +9AB2 EABD +9AB3 EABE +9AB4 EABF +9AB5 EAC0 +9AB6 EAC1 +9AB7 EAC2 +9AB8 EAC3 +9AB9 EAC4 +9ABA EAC5 +9ABB EAC6 +9ABC EAC7 +9ABD EAC8 +9ABE EAC9 +9ABF EACA +9AC0 EACB +9AC1 EACC +9AC2 EACD +9AC3 EACE +9AC4 EACF +9AC5 EAD0 +9AC6 EAD1 +9AC7 EAD2 +9AC8 EAD3 +9AC9 EAD4 +9ACA EAD5 +9ACB EAD6 +9ACC EAD7 +9ACD EAD8 +9ACE EAD9 +9ACF EADA +9AD0 EADB +9AD1 EADC +9AD2 EADD +9AD3 EADE +9AD4 EADF +9AD5 EAE0 +9AD6 EAE1 +9AD7 EAE2 +9AD8 EAE3 +9AD9 EAE4 +9ADA EAE5 +9ADB EAE6 +9ADC EAE7 +9ADD EAE8 +9ADE EAE9 +9ADF EAEA +9AE0 EAEB +9AE1 EAEC +9AE2 EAED +9AE3 EAEE +9AE4 EAEF +9AE5 EAF0 +9AE6 EAF1 +9AE7 EAF2 +9AE8 EAF3 +9AE9 EAF4 +9AEA EAF5 +9AEB EAF6 +9AEC EAF7 +9AED EAF8 +9AEE EAF9 +9AEF EAFA +9AF0 EAFB +9AF1 EAFC +9AF2 EAFD +9AF3 EAFE +9AF4 EAFF +9AF5 EB00 +9AF6 EB01 +9AF7 EB02 +9AF8 EB03 +9AF9 EB04 +9AFA EB05 +9AFB EB06 +9AFC EB07 +9AFD EB08 +9AFE EB09 +9B40 EB0A +9B41 EB0B +9B42 EB0C +9B43 EB0D +9B44 EB0E +9B45 EB0F +9B46 EB10 +9B47 EB11 +9B48 EB12 +9B49 EB13 +9B4A EB14 +9B4B EB15 +9B4C EB16 +9B4D EB17 +9B4E EB18 +9B4F EB19 +9B50 EB1A +9B51 EB1B +9B52 EB1C +9B53 EB1D +9B54 EB1E +9B55 EB1F +9B56 EB20 +9B57 EB21 +9B58 EB22 +9B59 EB23 +9B5A EB24 +9B5B EB25 +9B5C EB26 +9B5D EB27 +9B5E EB28 +9B5F EB29 +9B60 EB2A +9B62 EB2C +9B63 EB2D +9B64 EB2E +9B65 EB2F +9B66 EB30 +9B67 EB31 +9B68 EB32 +9B69 EB33 +9B6A EB34 +9B6B EB35 +9B6C EB36 +9B6D EB37 +9B6E EB38 +9B6F EB39 +9B70 EB3A +9B71 EB3B +9B72 EB3C +9B73 EB3D +9B74 EB3E +9B75 EB3F +9B77 EB41 +9B79 EB43 +9B7A EB44 +9B7C EB46 +9B7D EB47 +9B7E EB48 +9BA1 EB49 +9BA2 EB4A +9BA3 EB4B +9BA4 EB4C +9BA5 EB4D +9BA6 EB4E +9BA7 EB4F +9BA8 EB50 +9BA9 EB51 +9BAA EB52 +9BAB EB53 +9BAC EB54 +9BAD EB55 +9BAE EB56 +9BAF EB57 +9BB0 EB58 +9BB1 EB59 +9BB2 EB5A +9BB3 EB5B +9BB4 EB5C +9BB5 EB5D +9BB6 EB5E +9BB7 EB5F +9BB8 EB60 +9BB9 EB61 +9BBA EB62 +9BBB EB63 +9BBC EB64 +9BBD EB65 +9BBE EB66 +9BBF EB67 +9BC0 EB68 +9BC1 EB69 +9BC2 EB6A +9BC3 EB6B +9BC4 EB6C +9BC5 EB6D +9BC7 EB6F +9BC8 EB70 +9BC9 EB71 +9BCA EB72 +9BCB EB73 +9BCC EB74 +9BCD EB75 +9BCE EB76 +9BCF EB77 +9BD0 EB78 +9BD1 EB79 +9BD2 EB7A +9BD3 EB7B +9BD4 EB7C +9BD5 EB7D +9BD6 EB7E +9BD7 EB7F +9BD8 EB80 +9BD9 EB81 +9BDA EB82 +9BDB EB83 +9BDC EB84 +9BDD EB85 +9BDF EB87 +9BE0 EB88 +9BE1 EB89 +9BE2 EB8A +9BE3 EB8B +9BE4 EB8C +9BE5 EB8D +9BE6 EB8E +9BE7 EB8F +9BE8 EB90 +9BE9 EB91 +9BEA EB92 +9BEB EB93 +9BED EB95 +9BEE EB96 +9BEF EB97 +9BF0 EB98 +9BF1 EB99 +9BF2 EB9A +9BF3 EB9B +9BF4 EB9C +9BF5 EB9D +9BF7 EB9F +9BF8 EBA0 +9BF9 EBA1 +9BFA EBA2 +9BFB EBA3 +9BFC EBA4 +9BFD EBA5 +9BFE EBA6 +9C40 EBA7 +9C41 EBA8 +9C43 EBAA +9C44 EBAB +9C45 EBAC +9C46 EBAD +9C47 EBAE +9C48 EBAF +9C49 EBB0 +9C4A EBB1 +9C4B EBB2 +9C4C EBB3 +9C4D EBB4 +9C4E EBB5 +9C4F EBB6 +9C50 EBB7 +9C51 EBB8 +9C52 EBB9 +9C54 EBBB +9C55 EBBC +9C56 EBBD +9C57 EBBE +9C58 EBBF +9C59 EBC0 +9C5A EBC1 +9C5B EBC2 +9C5C EBC3 +9C5D EBC4 +9C5E EBC5 +9C5F EBC6 +9C60 EBC7 +9C61 EBC8 +9C63 EBCA +9C64 EBCB +9C65 EBCC +9C66 EBCD +9C67 EBCE +9C69 EBD0 +9C6A EBD1 +9C6C EBD3 +9C6D EBD4 +9C6E EBD5 +9C6F EBD6 +9C70 EBD7 +9C71 EBD8 +9C72 EBD9 +9C73 EBDA +9C74 EBDB +9C75 EBDC +9C76 EBDD +9C78 EBDF +9C79 EBE0 +9C7A EBE1 +9C7B EBE2 +9C7C EBE3 +9C7D EBE4 +9C7E EBE5 +9CA1 EBE6 +9CA2 EBE7 +9CA3 EBE8 +9CA4 EBE9 +9CA5 EBEA +9CA6 EBEB +9CA7 EBEC +9CA8 EBED +9CA9 EBEE +9CAA EBEF +9CAB EBF0 +9CAC EBF1 +9CAD EBF2 +9CAE EBF3 +9CAF EBF4 +9CB0 EBF5 +9CB1 EBF6 +9CB2 EBF7 +9CB3 EBF8 +9CB4 EBF9 +9CB5 EBFA +9CB6 EBFB +9CB7 EBFC +9CB8 EBFD +9CB9 EBFE +9CBA EBFF +9CBB EC00 +9CBE EC03 +9CBF EC04 +9CC0 EC05 +9CC1 EC06 +9CC2 EC07 +9CC3 EC08 +9CC4 EC09 +9CC5 EC0A +9CC6 EC0B +9CC7 EC0C +9CC8 EC0D +9CC9 EC0E +9CCA EC0F +9CCB EC10 +9CCC EC11 +9CCD EC12 +9CCE EC13 +9CCF EC14 +9CD1 EC16 +9CD2 EC17 +9CD3 EC18 +9CD4 EC19 +9CD5 EC1A +9CD6 EC1B +9CD7 EC1C +9CD8 EC1D +9CD9 EC1E +9CDA EC1F +9CDB EC20 +9CDC EC21 +9CDD EC22 +9CDE EC23 +9CDF EC24 +9CE0 EC25 +9CE1 EC26 +9CE2 EC27 +9CE3 EC28 +9CE4 EC29 +9CE5 EC2A +9CE6 EC2B +9CE7 EC2C +9CE8 EC2D +9CE9 EC2E +9CEA EC2F +9CEB EC30 +9CEC EC31 +9CED EC32 +9CEE EC33 +9CEF EC34 +9CF0 EC35 +9CF1 EC36 +9CF2 EC37 +9CF3 EC38 +9CF4 EC39 +9CF5 EC3A +9CF6 EC3B +9CF7 EC3C +9CF8 EC3D +9CF9 EC3E +9CFA EC3F +9CFB EC40 +9CFC EC41 +9CFD EC42 +9CFE EC43 +9D40 EC44 +9D41 EC45 +9D42 EC46 +9D43 EC47 +9D44 EC48 +9D45 EC49 +9D46 EC4A +9D47 EC4B +9D48 EC4C +9D49 EC4D +9D4A EC4E +9D4B EC4F +9D4C EC50 +9D4D EC51 +9D4E EC52 +9D4F EC53 +9D50 EC54 +9D51 EC55 +9D52 EC56 +9D53 EC57 +9D54 EC58 +9D55 EC59 +9D56 EC5A +9D58 EC5C +9D59 EC5D +9D5B EC5F +9D5C EC60 +9D5D EC61 +9D5E EC62 +9D5F EC63 +9D60 EC64 +9D61 EC65 +9D62 EC66 +9D63 EC67 +9D64 EC68 +9D65 EC69 +9D66 EC6A +9D67 EC6B +9D68 EC6C +9D69 EC6D +9D6A EC6E +9D6B EC6F +9D6C EC70 +9D6D EC71 +9D6E EC72 +9D6F EC73 +9D70 EC74 +9D71 EC75 +9D72 EC76 +9D73 EC77 +9D74 EC78 +9D75 EC79 +9D76 EC7A +9D77 EC7B +9D78 EC7C +9D79 EC7D +9D7A EC7E +9D7B EC7F +9D7C EC80 +9D7D EC81 +9D7E EC82 +9DA1 EC83 +9DA2 EC84 +9DA3 EC85 +9DA4 EC86 +9DA5 EC87 +9DA6 EC88 +9DA7 EC89 +9DA8 EC8A +9DA9 EC8B +9DAA EC8C +9DAB EC8D +9DAC EC8E +9DAD EC8F +9DAE EC90 +9DAF EC91 +9DB0 EC92 +9DB1 EC93 +9DB2 EC94 +9DB3 EC95 +9DB4 EC96 +9DB5 EC97 +9DB6 EC98 +9DB7 EC99 +9DB8 EC9A +9DB9 EC9B +9DBA EC9C +9DBB EC9D +9DBC EC9E +9DBD EC9F +9DBE ECA0 +9DBF ECA1 +9DC0 ECA2 +9DC1 ECA3 +9DC2 ECA4 +9DC3 ECA5 +9DC5 ECA7 +9DC6 ECA8 +9DC7 ECA9 +9DC8 ECAA +9DC9 ECAB +9DCA ECAC +9DCB ECAD +9DCC ECAE +9DCD ECAF +9DCE ECB0 +9DCF ECB1 +9DD0 ECB2 +9DD1 ECB3 +9DD2 ECB4 +9DD3 ECB5 +9DD4 ECB6 +9DD5 ECB7 +9DD6 ECB8 +9DD7 ECB9 +9DD8 ECBA +9DD9 ECBB +9DDA ECBC +9DDB ECBD +9DDC ECBE +9DDD ECBF +9DDE ECC0 +9DDF ECC1 +9DE0 ECC2 +9DE1 ECC3 +9DE2 ECC4 +9DE3 ECC5 +9DE4 ECC6 +9DE5 ECC7 +9DE6 ECC8 +9DE7 ECC9 +9DE8 ECCA +9DE9 ECCB +9DEA ECCC +9DEB ECCD +9DEC ECCE +9DED ECCF +9DEE ECD0 +9DEF ECD1 +9DF0 ECD2 +9DF1 ECD3 +9DF2 ECD4 +9DF3 ECD5 +9DF4 ECD6 +9DF5 ECD7 +9DF6 ECD8 +9DF7 ECD9 +9DF8 ECDA +9DF9 ECDB +9DFA ECDC +9DFB ECDD +9DFC ECDE +9DFD ECDF +9DFE ECE0 +9E40 ECE1 +9E41 ECE2 +9E42 ECE3 +9E43 ECE4 +9E44 ECE5 +9E45 ECE6 +9E46 ECE7 +9E47 ECE8 +9E48 ECE9 +9E49 ECEA +9E4A ECEB +9E4B ECEC +9E4C ECED +9E4D ECEE +9E4E ECEF +9E4F ECF0 +9E50 ECF1 +9E51 ECF2 +9E52 ECF3 +9E53 ECF4 +9E54 ECF5 +9E55 ECF6 +9E56 ECF7 +9E57 ECF8 +9E58 ECF9 +9E59 ECFA +9E5A ECFB +9E5B ECFC +9E5C ECFD +9E5D ECFE +9E5E ECFF +9E5F ED00 +9E60 ED01 +9E61 ED02 +9E62 ED03 +9E63 ED04 +9E64 ED05 +9E65 ED06 +9E66 ED07 +9E67 ED08 +9E68 ED09 +9E69 ED0A +9E6A ED0B +9E6B ED0C +9E6C ED0D +9E6D ED0E +9E6E ED0F +9E6F ED10 +9E70 ED11 +9E71 ED12 +9E72 ED13 +9E73 ED14 +9E74 ED15 +9E75 ED16 +9E76 ED17 +9E77 ED18 +9E78 ED19 +9E79 ED1A +9E7A ED1B +9E7B ED1C +9E7C ED1D +9E7D ED1E +9E7E ED1F +9EA1 ED20 +9EA2 ED21 +9EA3 ED22 +9EA4 ED23 +9EA5 ED24 +9EA6 ED25 +9EA7 ED26 +9EA8 ED27 +9EAA ED29 +9EAB ED2A +9EAD ED2C +9EAE ED2D +9EAF ED2E +9EB0 ED2F +9EB1 ED30 +9EB2 ED31 +9EB3 ED32 +9EB4 ED33 +9EB5 ED34 +9EB6 ED35 +9EB7 ED36 +9EB8 ED37 +9EB9 ED38 +9EBA ED39 +9EBB ED3A +9EBC ED3B +9EBD ED3C +9EBE ED3D +9EBF ED3E +9EC0 ED3F +9EC1 ED40 +9EC2 ED41 +9EC3 ED42 +9EC5 ED44 +9EC6 ED45 +9EC7 ED46 +9EC8 ED47 +9EC9 ED48 +9ECA ED49 +9ECB ED4A +9ECC ED4B +9ECD ED4C +9ECE ED4D +9ECF ED4E +9ED0 ED4F +9ED1 ED50 +9ED2 ED51 +9ED3 ED52 +9ED4 ED53 +9ED5 ED54 +9ED6 ED55 +9ED7 ED56 +9ED8 ED57 +9ED9 ED58 +9EDA ED59 +9EDB ED5A +9EDC ED5B +9EDD ED5C +9EDE ED5D +9EDF ED5E +9EE0 ED5F +9EE1 ED60 +9EE2 ED61 +9EE3 ED62 +9EE4 ED63 +9EE5 ED64 +9EE6 ED65 +9EE7 ED66 +9EE8 ED67 +9EE9 ED68 +9EEA ED69 +9EEB ED6A +9EEC ED6B +9EED ED6C +9EEE ED6D +9EF0 ED6F +9EF1 ED70 +9EF2 ED71 +9EF3 ED72 +9EF5 ED74 +9EF6 ED75 +9EF7 ED76 +9EF8 ED77 +9EF9 ED78 +9EFA ED79 +9EFB ED7A +9EFC ED7B +9EFE ED7D +9F40 ED7E +9F41 ED7F +9F42 ED80 +9F43 ED81 +9F44 ED82 +9F45 ED83 +9F46 ED84 +9F47 ED85 +9F48 ED86 +9F49 ED87 +9F4A ED88 +9F4B ED89 +9F4C ED8A +9F4D ED8B +9F4F ED8D +9F50 ED8E +9F51 ED8F +9F52 ED90 +9F53 ED91 +9F54 ED92 +9F55 ED93 +9F56 ED94 +9F57 ED95 +9F58 ED96 +9F59 ED97 +9F5A ED98 +9F5B ED99 +9F5C ED9A +9F5D ED9B +9F5E ED9C +9F5F ED9D +9F61 ED9F +9F62 EDA0 +9F63 EDA1 +9F64 EDA2 +9F65 EDA3 +9F67 EDA5 +9F68 EDA6 +9F69 EDA7 +9F6A EDA8 +9F6B EDA9 +9F6C EDAA +9F6D EDAB +9F6E EDAC +9F6F EDAD +9F70 EDAE +9F71 EDAF +9F72 EDB0 +9F73 EDB1 +9F74 EDB2 +9F75 EDB3 +9F76 EDB4 +9F77 EDB5 +9F78 EDB6 +9F79 EDB7 +9F7A EDB8 +9F7B EDB9 +9F7C EDBA +9F7D EDBB +9F7E EDBC +9FA1 EDBD +9FA2 EDBE +9FA3 EDBF +9FA4 EDC0 +9FA5 EDC1 +9FA6 EDC2 +9FA7 EDC3 +9FA8 EDC4 +9FA9 EDC5 +9FAA EDC6 +9FAB EDC7 +9FAC EDC8 +9FAE EDCA +9FAF EDCB +9FB0 EDCC +9FB2 EDCE +9FB3 EDCF +9FB4 EDD0 +9FB5 EDD1 +9FB6 EDD2 +9FB7 EDD3 +9FB8 EDD4 +9FB9 EDD5 +9FBA EDD6 +9FBB EDD7 +9FBC EDD8 +9FBD EDD9 +9FBE EDDA +9FBF EDDB +9FC1 EDDD +9FC2 EDDE +9FC3 EDDF +9FC4 EDE0 +9FC5 EDE1 +9FC6 EDE2 +9FC7 EDE3 +9FC9 EDE5 +9FCA EDE6 +9FCC EDE8 +9FCD EDE9 +9FCE EDEA +9FCF EDEB +9FD0 EDEC +9FD1 EDED +9FD2 EDEE +9FD3 EDEF +9FD4 EDF0 +9FD5 EDF1 +9FD6 EDF2 +9FD7 EDF3 +9FD9 EDF5 +9FDB EDF7 +9FDC EDF8 +9FDD EDF9 +9FDE EDFA +9FDF EDFB +9FE0 EDFC +9FE1 EDFD +9FE2 EDFE +9FE3 EDFF +9FE4 EE00 +9FE5 EE01 +9FE7 EE03 +9FE8 EE04 +9FE9 EE05 +9FEB EE07 +9FEC EE08 +9FED EE09 +9FEE EE0A +9FF0 EE0C +9FF1 EE0D +9FF2 EE0E +9FF3 EE0F +9FF4 EE10 +9FF5 EE11 +9FF6 EE12 +9FF7 EE13 +9FF8 EE14 +9FF9 EE15 +9FFA EE16 +9FFB EE17 +9FFC EE18 +9FFD EE19 +9FFE EE1A +A040 EE1B +A041 EE1C +A042 EE1D +A043 EE1E +A044 EE1F +A045 EE20 +A046 EE21 +A047 EE22 +A048 EE23 +A049 EE24 +A04A EE25 +A04B EE26 +A04C EE27 +A04D EE28 +A04E EE29 +A04F EE2A +A050 EE2B +A051 EE2C +A052 EE2D +A053 EE2E +A055 EE30 +A056 EE31 +A058 EE33 +A059 EE34 +A05B EE36 +A05C EE37 +A05D EE38 +A05E EE39 +A05F EE3A +A060 EE3B +A061 EE3C +A064 EE3F +A065 EE40 +A066 EE41 +A067 EE42 +A068 EE43 +A069 EE44 +A06A EE45 +A06B EE46 +A06C EE47 +A06D EE48 +A06E EE49 +A06F EE4A +A070 EE4B +A071 EE4C +A073 EE4E +A074 EE4F +A075 EE50 +A076 EE51 +A078 EE53 +A079 EE54 +A07A EE55 +A07B EE56 +A07C EE57 +A07D EE58 +A07E EE59 +A0A1 EE5A +A0A2 EE5B +A0A3 EE5C +A0A4 EE5D +A0A6 EE5F +A0A7 EE60 +A0A8 EE61 +A0A9 EE62 +A0AA EE63 +A0AB EE64 +A0AC EE65 +A0AE EE67 +A0B0 EE69 +A0B1 EE6A +A0B2 EE6B +A0B3 EE6C +A0B4 EE6D +A0B5 EE6E +A0B6 EE6F +A0B7 EE70 +A0B8 EE71 +A0B9 EE72 +A0BA EE73 +A0BB EE74 +A0BC EE75 +A0BD EE76 +A0BE EE77 +A0BF EE78 +A0C0 EE79 +A0C1 EE7A +A0C2 EE7B +A0C3 EE7C +A0C4 EE7D +A0C5 EE7E +A0C6 EE7F +A0C7 EE80 +A0C8 EE81 +A0C9 EE82 +A0CA EE83 +A0CB EE84 +A0CC EE85 +A0CD EE86 +A0CE EE87 +A0CF EE88 +A0D0 EE89 +A0D1 EE8A +A0D2 EE8B +A0D4 EE8D +A0D6 EE8F +A0D7 EE90 +A0D8 EE91 +A0D9 EE92 +A0DA EE93 +A0DB EE94 +A0DC EE95 +A0DD EE96 +A0DE EE97 +A0E0 EE99 +A0E2 EE9B +A0E3 EE9C +A0E5 EE9E +A0E6 EE9F +A0E7 EEA0 +A0E8 EEA1 +A0E9 EEA2 +A0EA EEA3 +A0EB EEA4 +A0EC EEA5 +A0ED EEA6 +A0EE EEA7 +A0EF EEA8 +A0F0 EEA9 +A0F1 EEAA +A0F2 EEAB +A0F3 EEAC +A0F4 EEAD +A0F5 EEAE +A0F6 EEAF +A0F7 EEB0 +A0F8 EEB1 +A0F9 EEB2 +A0FA EEB3 +A0FB EEB4 +A0FC EEB5 +A0FD EEB6 +A0FE EEB7 +C6A1 F6B1 +C6A2 F6B2 +C6A3 F6B3 +C6A4 F6B4 +C6A5 F6B5 +C6A6 F6B6 +C6A7 F6B7 +C6A8 F6B8 +C6A9 F6B9 +C6AA F6BA +C6AB F6BB +C6AC F6BC +C6AD F6BD +C6AE F6BE +C6AF F6BF +C6B0 F6C0 +C6B1 F6C1 +C6B2 F6C2 +C6B3 F6C3 +C6B4 F6C4 +C6B5 F6C5 +C6B6 F6C6 +C6B7 F6C7 +C6B8 F6C8 +C6B9 F6C9 +C6BA F6CA +C6BB F6CB +C6BC F6CC +C6BD F6CD +C6BE F6CE +C6BF F6CF +C6C0 F6D0 +C6C1 F6D1 +C6C2 F6D2 +C6C3 F6D3 +C6C4 F6D4 +C6C5 F6D5 +C6C6 F6D6 +C6C7 F6D7 +C6C8 F6D8 +C6C9 F6D9 +C6CA F6DA +C6CB F6DB +C6CC F6DC +C6CD F6DD +C6CE F6DE +C6D0 F6E0 +C6D1 F6E1 +C6D2 F6E2 +C6D4 F6E4 +C6D6 F6E6 +C6D8 F6E8 +C6D9 F6E9 +C6DA F6EA +C6DB F6EB +C6DC F6EC +C6DD F6ED +C6E0 F6F0 +C6E1 F6F1 +C6E2 F6F2 +C6E3 F6F3 +C6E4 F6F4 +C6E5 F6F5 +C6E6 F6F6 +C6E7 F6F7 +C6E8 F6F8 +C6E9 F6F9 +C6EA F6FA +C6EB F6FB +C6EC F6FC +C6ED F6FD +C6EE F6FE +C6EF F6FF +C6F0 F700 +C6F1 F701 +C6F2 F702 +C6F3 F703 +C6F4 F704 +C6F5 F705 +C6F6 F706 +C6F7 F707 +C6F8 F708 +C6F9 F709 +C6FA F70A +C6FB F70B +C6FC F70C +C6FD F70D +C6FE F70E +C740 F70F +C741 F710 +C742 F711 +C743 F712 +C744 F713 +C745 F714 +C746 F715 +C747 F716 +C748 F717 +C749 F718 +C74A F719 +C74B F71A +C74C F71B +C74D F71C +C74E F71D +C74F F71E +C750 F71F +C751 F720 +C752 F721 +C753 F722 +C754 F723 +C755 F724 +C756 F725 +C757 F726 +C758 F727 +C759 F728 +C75A F729 +C75B F72A +C75C F72B +C75D F72C +C75E F72D +C75F F72E +C760 F72F +C761 F730 +C762 F731 +C763 F732 +C764 F733 +C765 F734 +C766 F735 +C767 F736 +C768 F737 +C769 F738 +C76A F739 +C76B F73A +C76C F73B +C76D F73C +C76E F73D +C76F F73E +C770 F73F +C771 F740 +C772 F741 +C773 F742 +C774 F743 +C775 F744 +C776 F745 +C777 F746 +C778 F747 +C779 F748 +C77A F749 +C77B F74A +C77C F74B +C77D F74C +C77E F74D +C7A1 F74E +C7A2 F74F +C7A3 F750 +C7A4 F751 +C7A5 F752 +C7A6 F753 +C7A7 F754 +C7A8 F755 +C7A9 F756 +C7AA F757 +C7AB F758 +C7AC F759 +C7AD F75A +C7AE F75B +C7AF F75C +C7B0 F75D +C7B1 F75E +C7B2 F75F +C7B3 F760 +C7B4 F761 +C7B5 F762 +C7B6 F763 +C7B7 F764 +C7B8 F765 +C7B9 F766 +C7BA F767 +C7BB F768 +C7BC F769 +C7BD F76A +C7BE F76B +C7BF F76C +C7C0 F76D +C7C1 F76E +C7C2 F76F +C7C3 F770 +C7C4 F771 +C7C5 F772 +C7C6 F773 +C7C7 F774 +C7C8 F775 +C7C9 F776 +C7CA F777 +C7CB F778 +C7CC F779 +C7CD F77A +C7CE F77B +C7CF F77C +C7D0 F77D +C7D1 F77E +C7D2 F77F +C7D3 F780 +C7D4 F781 +C7D5 F782 +C7D6 F783 +C7D7 F784 +C7D8 F785 +C7D9 F786 +C7DA F787 +C7DB F788 +C7DC F789 +C7DD F78A +C7DE F78B +C7DF F78C +C7E0 F78D +C7E1 F78E +C7E2 F78F +C7E3 F790 +C7E4 F791 +C7E5 F792 +C7E6 F793 +C7E7 F794 +C7E8 F795 +C7E9 F796 +C7EA F797 +C7EB F798 +C7EC F799 +C7ED F79A +C7EE F79B +C7EF F79C +C7F0 F79D +C7F1 F79E +C7F2 F79F +C7F3 F7A0 +C7F4 F7A1 +C7F5 F7A2 +C7F6 F7A3 +C7F7 F7A4 +C7F8 F7A5 +C7F9 F7A6 +C7FA F7A7 +C7FB F7A8 +C7FC F7A9 +C7FD F7AA +C7FE F7AB +C840 F7AC +C841 F7AD +C842 F7AE +C843 F7AF +C844 F7B0 +C845 F7B1 +C846 F7B2 +C847 F7B3 +C848 F7B4 +C849 F7B5 +C84A F7B6 +C84B F7B7 +C84C F7B8 +C84D F7B9 +C84E F7BA +C84F F7BB +C850 F7BC +C851 F7BD +C852 F7BE +C853 F7BF +C854 F7C0 +C855 F7C1 +C856 F7C2 +C857 F7C3 +C858 F7C4 +C859 F7C5 +C85A F7C6 +C85B F7C7 +C85C F7C8 +C85D F7C9 +C85E F7CA +C85F F7CB +C860 F7CC +C861 F7CD +C862 F7CE +C863 F7CF +C864 F7D0 +C865 F7D1 +C866 F7D2 +C867 F7D3 +C868 F7D4 +C869 F7D5 +C86A F7D6 +C86B F7D7 +C86C F7D8 +C86D F7D9 +C86E F7DA +C86F F7DB +C870 F7DC +C871 F7DD +C872 F7DE +C873 F7DF +C874 F7E0 +C875 F7E1 +C876 F7E2 +C877 F7E3 +C878 F7E4 +C879 F7E5 +C87A F7E6 +C87B F7E7 +C87C F7E8 +C87D F7E9 +C87E F7EA +C8A1 F7EB +C8A2 F7EC +C8A3 F7ED +C8A4 F7EE +C8CD F817 +C8CE F818 +C8CF F819 +C8D0 F81A +C8D1 F81B +C8D2 F81C +C8D3 F81D +C8D4 F81E +C8D5 F81F +C8D6 F820 +C8D7 F821 +C8D8 F822 +C8D9 F823 +C8DA F824 +C8DB F825 +C8DC F826 +C8DD F827 +C8DE F828 +C8DF F829 +C8E0 F82A +C8E1 F82B +C8E2 F82C +C8E3 F82D +C8E4 F82E +C8E5 F82F +C8E6 F830 +C8E7 F831 +C8E8 F832 +C8E9 F833 +C8EA F834 +C8EB F835 +C8EC F836 +C8ED F837 +C8EE F838 +C8EF F839 +C8F0 F83A +C8F1 F83B +C8F5 F83F +C8F6 F840 +C8F7 F841 +C8F8 F842 +C8F9 F843 +C8FA F844 +C8FB F845 +C8FC F846 +C8FD F847 +C8FE F848 +FA40 E000 +FA41 E001 +FA42 E002 +FA43 E003 +FA44 E004 +FA45 E005 +FA46 E006 +FA47 E007 +FA48 E008 +FA49 E009 +FA4A E00A +FA4B E00B +FA4C E00C +FA4D E00D +FA4E E00E +FA4F E00F +FA50 E010 +FA51 E011 +FA52 E012 +FA53 E013 +FA54 E014 +FA55 E015 +FA56 E016 +FA57 E017 +FA58 E018 +FA59 E019 +FA5A E01A +FA5B E01B +FA5C E01C +FA5D E01D +FA5E E01E +FA60 E020 +FA61 E021 +FA62 E022 +FA63 E023 +FA64 E024 +FA65 E025 +FA67 E027 +FA68 E028 +FA69 E029 +FA6A E02A +FA6B E02B +FA6C E02C +FA6D E02D +FA6E E02E +FA6F E02F +FA70 E030 +FA71 E031 +FA72 E032 +FA73 E033 +FA74 E034 +FA75 E035 +FA76 E036 +FA77 E037 +FA78 E038 +FA79 E039 +FA7A E03A +FA7B E03B +FA7C E03C +FA7D E03D +FA7E E03E +FAA1 E03F +FAA2 E040 +FAA3 E041 +FAA4 E042 +FAA5 E043 +FAA6 E044 +FAA7 E045 +FAA8 E046 +FAA9 E047 +FAAA E048 +FAAB E049 +FAAC E04A +FAAD E04B +FAAE E04C +FAAF E04D +FAB0 E04E +FAB1 E04F +FAB2 E050 +FAB3 E051 +FAB4 E052 +FAB5 E053 +FAB6 E054 +FAB7 E055 +FAB8 E056 +FAB9 E057 +FABA E058 +FABB E059 +FABC E05A +FABE E05C +FABF E05D +FAC0 E05E +FAC1 E05F +FAC2 E060 +FAC3 E061 +FAC4 E062 +FAC6 E064 +FAC7 E065 +FAC8 E066 +FAC9 E067 +FACA E068 +FACB E069 +FACC E06A +FACD E06B +FACE E06C +FACF E06D +FAD0 E06E +FAD1 E06F +FAD2 E070 +FAD3 E071 +FAD4 E072 +FAD6 E074 +FAD7 E075 +FAD8 E076 +FAD9 E077 +FADA E078 +FADB E079 +FADC E07A +FADD E07B +FADE E07C +FADF E07D +FAE0 E07E +FAE1 E07F +FAE2 E080 +FAE3 E081 +FAE4 E082 +FAE5 E083 +FAE6 E084 +FAE7 E085 +FAE8 E086 +FAE9 E087 +FAEA E088 +FAEB E089 +FAEC E08A +FAED E08B +FAEE E08C +FAEF E08D +FAF0 E08E +FAF1 E08F +FAF2 E090 +FAF3 E091 +FAF4 E092 +FAF5 E093 +FAF6 E094 +FAF7 E095 +FAF8 E096 +FAF9 E097 +FAFA E098 +FAFB E099 +FAFC E09A +FAFD E09B +FAFE E09C +FB40 E09D +FB41 E09E +FB42 E09F +FB43 E0A0 +FB44 E0A1 +FB45 E0A2 +FB46 E0A3 +FB47 E0A4 +FB49 E0A6 +FB4A E0A7 +FB4B E0A8 +FB4C E0A9 +FB4D E0AA +FB4E E0AB +FB4F E0AC +FB50 E0AD +FB51 E0AE +FB52 E0AF +FB53 E0B0 +FB54 E0B1 +FB55 E0B2 +FB56 E0B3 +FB57 E0B4 +FB58 E0B5 +FB59 E0B6 +FB5A E0B7 +FB5B E0B8 +FB5C E0B9 +FB5D E0BA +FB5E E0BB +FB5F E0BC +FB60 E0BD +FB61 E0BE +FB62 E0BF +FB63 E0C0 +FB64 E0C1 +FB65 E0C2 +FB66 E0C3 +FB67 E0C4 +FB68 E0C5 +FB69 E0C6 +FB6A E0C7 +FB6B E0C8 +FB6C E0C9 +FB6D E0CA +FB6E E0CB +FB6F E0CC +FB70 E0CD +FB71 E0CE +FB72 E0CF +FB73 E0D0 +FB74 E0D1 +FB75 E0D2 +FB76 E0D3 +FB77 E0D4 +FB78 E0D5 +FB79 E0D6 +FB7A E0D7 +FB7B E0D8 +FB7C E0D9 +FB7D E0DA +FB7E E0DB +FBA1 E0DC +FBA2 E0DD +FBA3 E0DE +FBA4 E0DF +FBA5 E0E0 +FBA6 E0E1 +FBA7 E0E2 +FBA8 E0E3 +FBA9 E0E4 +FBAA E0E5 +FBAB E0E6 +FBAC E0E7 +FBAD E0E8 +FBAE E0E9 +FBAF E0EA +FBB0 E0EB +FBB1 E0EC +FBB2 E0ED +FBB3 E0EE +FBB4 E0EF +FBB5 E0F0 +FBB6 E0F1 +FBB7 E0F2 +FBB9 E0F4 +FBBA E0F5 +FBBB E0F6 +FBBC E0F7 +FBBD E0F8 +FBBE E0F9 +FBBF E0FA +FBC0 E0FB +FBC1 E0FC +FBC2 E0FD +FBC3 E0FE +FBC4 E0FF +FBC5 E100 +FBC6 E101 +FBC7 E102 +FBC8 E103 +FBC9 E104 +FBCA E105 +FBCB E106 +FBCC E107 +FBCD E108 +FBCE E109 +FBCF E10A +FBD0 E10B +FBD1 E10C +FBD2 E10D +FBD3 E10E +FBD4 E10F +FBD5 E110 +FBD6 E111 +FBD7 E112 +FBD8 E113 +FBD9 E114 +FBDA E115 +FBDB E116 +FBDC E117 +FBDD E118 +FBDE E119 +FBDF E11A +FBE0 E11B +FBE1 E11C +FBE2 E11D +FBE3 E11E +FBE4 E11F +FBE5 E120 +FBE6 E121 +FBE7 E122 +FBE8 E123 +FBE9 E124 +FBEA E125 +FBEB E126 +FBEC E127 +FBED E128 +FBEE E129 +FBEF E12A +FBF0 E12B +FBF1 E12C +FBF2 E12D +FBF4 E12F +FBF5 E130 +FBF6 E131 +FBF7 E132 +FBF8 E133 +FBFA E135 +FBFB E136 +FBFC E137 +FBFD E138 +FBFE E139 +FC40 E13A +FC41 E13B +FC42 E13C +FC43 E13D +FC44 E13E +FC45 E13F +FC46 E140 +FC47 E141 +FC48 E142 +FC49 E143 +FC4A E144 +FC4B E145 +FC4C E146 +FC4D E147 +FC4E E148 +FC50 E14A +FC51 E14B +FC52 E14C +FC53 E14D +FC54 E14E +FC55 E14F +FC56 E150 +FC57 E151 +FC58 E152 +FC59 E153 +FC5A E154 +FC5B E155 +FC5C E156 +FC5D E157 +FC5E E158 +FC5F E159 +FC60 E15A +FC61 E15B +FC62 E15C +FC63 E15D +FC64 E15E +FC65 E15F +FC66 E160 +FC67 E161 +FC68 E162 +FC69 E163 +FC6A E164 +FC6B E165 +FC6D E167 +FC6E E168 +FC6F E169 +FC70 E16A +FC71 E16B +FC72 E16C +FC73 E16D +FC74 E16E +FC75 E16F +FC76 E170 +FC77 E171 +FC78 E172 +FC79 E173 +FC7A E174 +FC7B E175 +FC7C E176 +FC7D E177 +FC7E E178 +FCA1 E179 +FCA2 E17A +FCA3 E17B +FCA4 E17C +FCA5 E17D +FCA6 E17E +FCA7 E17F +FCA8 E180 +FCA9 E181 +FCAA E182 +FCAB E183 +FCAC E184 +FCAD E185 +FCAE E186 +FCAF E187 +FCB0 E188 +FCB1 E189 +FCB2 E18A +FCB3 E18B +FCB4 E18C +FCB5 E18D +FCB6 E18E +FCB7 E18F +FCB8 E190 +FCBA E192 +FCBB E193 +FCBC E194 +FCBD E195 +FCBE E196 +FCBF E197 +FCC0 E198 +FCC1 E199 +FCC2 E19A +FCC3 E19B +FCC4 E19C +FCC5 E19D +FCC6 E19E +FCC7 E19F +FCC8 E1A0 +FCC9 E1A1 +FCCA E1A2 +FCCB E1A3 +FCCC E1A4 +FCCD E1A5 +FCCE E1A6 +FCCF E1A7 +FCD0 E1A8 +FCD1 E1A9 +FCD2 E1AA +FCD3 E1AB +FCD4 E1AC +FCD5 E1AD +FCD6 E1AE +FCD7 E1AF +FCD8 E1B0 +FCD9 E1B1 +FCDA E1B2 +FCDB E1B3 +FCDC E1B4 +FCDD E1B5 +FCDE E1B6 +FCDF E1B7 +FCE0 E1B8 +FCE1 E1B9 +FCE3 E1BB +FCE4 E1BC +FCE5 E1BD +FCE6 E1BE +FCE7 E1BF +FCE8 E1C0 +FCE9 E1C1 +FCEA E1C2 +FCEB E1C3 +FCEC E1C4 +FCED E1C5 +FCEE E1C6 +FCEF E1C7 +FCF0 E1C8 +FCF2 E1CA +FCF3 E1CB +FCF4 E1CC +FCF5 E1CD +FCF6 E1CE +FCF7 E1CF +FCF8 E1D0 +FCF9 E1D1 +FCFA E1D2 +FCFB E1D3 +FCFC E1D4 +FCFD E1D5 +FCFE E1D6 +FD40 E1D7 +FD41 E1D8 +FD42 E1D9 +FD43 E1DA +FD44 E1DB +FD45 E1DC +FD46 E1DD +FD47 E1DE +FD48 E1DF +FD49 E1E0 +FD4A E1E1 +FD4B E1E2 +FD4C E1E3 +FD4D E1E4 +FD4E E1E5 +FD4F E1E6 +FD50 E1E7 +FD51 E1E8 +FD52 E1E9 +FD53 E1EA +FD54 E1EB +FD55 E1EC +FD56 E1ED +FD57 E1EE +FD58 E1EF +FD59 E1F0 +FD5A E1F1 +FD5B E1F2 +FD5C E1F3 +FD5D E1F4 +FD5E E1F5 +FD5F E1F6 +FD60 E1F7 +FD61 E1F8 +FD62 E1F9 +FD63 E1FA +FD64 E1FB +FD65 E1FC +FD66 E1FD +FD67 E1FE +FD68 E1FF +FD69 E200 +FD6A E201 +FD6B E202 +FD6C E203 +FD6D E204 +FD6E E205 +FD6F E206 +FD70 E207 +FD71 E208 +FD72 E209 +FD73 E20A +FD74 E20B +FD75 E20C +FD76 E20D +FD77 E20E +FD78 E20F +FD79 E210 +FD7A E211 +FD7B E212 +FD7C E213 +FD7D E214 +FD7E E215 +FDA1 E216 +FDA2 E217 +FDA3 E218 +FDA4 E219 +FDA5 E21A +FDA6 E21B +FDA7 E21C +FDA8 E21D +FDA9 E21E +FDAA E21F +FDAB E220 +FDAC E221 +FDAD E222 +FDAE E223 +FDAF E224 +FDB0 E225 +FDB1 E226 +FDB2 E227 +FDB3 E228 +FDB4 E229 +FDB5 E22A +FDB6 E22B +FDB9 E22E +FDBA E22F +FDBC E231 +FDBD E232 +FDBE E233 +FDBF E234 +FDC0 E235 +FDC1 E236 +FDC2 E237 +FDC3 E238 +FDC4 E239 +FDC5 E23A +FDC6 E23B +FDC7 E23C +FDC8 E23D +FDC9 E23E +FDCA E23F +FDCB E240 +FDCC E241 +FDCD E242 +FDCE E243 +FDCF E244 +FDD0 E245 +FDD1 E246 +FDD2 E247 +FDD3 E248 +FDD4 E249 +FDD5 E24A +FDD6 E24B +FDD7 E24C +FDD8 E24D +FDD9 E24E +FDDA E24F +FDDB E250 +FDDC E251 +FDDD E252 +FDDE E253 +FDDF E254 +FDE0 E255 +FDE1 E256 +FDE2 E257 +FDE3 E258 +FDE4 E259 +FDE5 E25A +FDE6 E25B +FDE7 E25C +FDE8 E25D +FDE9 E25E +FDEA E25F +FDEB E260 +FDEC E261 +FDED E262 +FDEE E263 +FDEF E264 +FDF0 E265 +FDF2 E267 +FDF3 E268 +FDF4 E269 +FDF5 E26A +FDF6 E26B +FDF7 E26C +FDF8 E26D +FDF9 E26E +FDFA E26F +FDFB E270 +FDFC E271 +FDFD E272 +FDFE E273 +FE40 E274 +FE41 E275 +FE42 E276 +FE43 E277 +FE44 E278 +FE45 E279 +FE46 E27A +FE47 E27B +FE48 E27C +FE49 E27D +FE4A E27E +FE4B E27F +FE4C E280 +FE4D E281 +FE4E E282 +FE4F E283 +FE50 E284 +FE51 E285 +FE53 E287 +FE54 E288 +FE55 E289 +FE56 E28A +FE57 E28B +FE58 E28C +FE59 E28D +FE5A E28E +FE5B E28F +FE5C E290 +FE5D E291 +FE5E E292 +FE5F E293 +FE60 E294 +FE61 E295 +FE62 E296 +FE63 E297 +FE64 E298 +FE65 E299 +FE66 E29A +FE67 E29B +FE68 E29C +FE69 E29D +FE6A E29E +FE6B E29F +FE6C E2A0 +FE6D E2A1 +FE6E E2A2 +FE70 E2A4 +FE71 E2A5 +FE72 E2A6 +FE73 E2A7 +FE74 E2A8 +FE75 E2A9 +FE76 E2AA +FE77 E2AB +FE78 E2AC +FE79 E2AD +FE7A E2AE +FE7B E2AF +FE7C E2B0 +FE7D E2B1 +FE7E E2B2 +FEA1 E2B3 +FEA2 E2B4 +FEA3 E2B5 +FEA4 E2B6 +FEA5 E2B7 +FEA6 E2B8 +FEA7 E2B9 +FEA8 E2BA +FEA9 E2BB +FEAB E2BD +FEAC E2BE +FEAD E2BF +FEAE E2C0 +FEAF E2C1 +FEB0 E2C2 +FEB1 E2C3 +FEB2 E2C4 +FEB3 E2C5 +FEB4 E2C6 +FEB5 E2C7 +FEB6 E2C8 +FEB7 E2C9 +FEB8 E2CA +FEB9 E2CB +FEBA E2CC +FEBB E2CD +FEBC E2CE +FEBD E2CF +FEBE E2D0 +FEBF E2D1 +FEC0 E2D2 +FEC1 E2D3 +FEC2 E2D4 +FEC3 E2D5 +FEC4 E2D6 +FEC5 E2D7 +FEC6 E2D8 +FEC7 E2D9 +FEC8 E2DA +FEC9 E2DB +FECA E2DC +FECB E2DD +FECC E2DE +FECD E2DF +FECE E2E0 +FECF E2E1 +FED0 E2E2 +FED1 E2E3 +FED2 E2E4 +FED3 E2E5 +FED4 E2E6 +FED5 E2E7 +FED6 E2E8 +FED7 E2E9 +FED8 E2EA +FED9 E2EB +FEDA E2EC +FEDB E2ED +FEDC E2EE +FEDE E2F0 +FEDF E2F1 +FEE0 E2F2 +FEE1 E2F3 +FEE2 E2F4 +FEE3 E2F5 +FEE4 E2F6 +FEE5 E2F7 +FEE6 E2F8 +FEE7 E2F9 +FEE8 E2FA +FEE9 E2FB +FEEA E2FC +FEEB E2FD +FEEC E2FE +FEED E2FF +FEEE E300 +FEEF E301 +FEF0 E302 +FEF1 E303 +FEF2 E304 +FEF3 E305 +FEF4 E306 +FEF5 E307 +FEF6 E308 +FEF7 E309 +FEF8 E30A +FEF9 E30B +FEFA E30C +FEFB E30D +FEFC E30E +FEFD E30F +FEFE E310 + diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS2008.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS2008.map Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,5019 @@ +# +# http://www.ogcio.gov.hk/ccli/eng/hskcs/mapping_table_2008.html +# +# commnent out following entries +# +# 88A3 <00EA,0304> +# 88A5 <00EA,030C> +# 8862 <00CA,0304> +# 8864 <00CA,030C> +# +8740 43F0 +8741 4C32 +8742 4603 +8743 45A6 +8744 4578 +8745 27267 +8746 4D77 +8747 45B3 +8748 27CB1 +8749 4CE2 +874A 27CC5 +874B 3B95 +874C 4736 +874D 4744 +874E 4C47 +874F 4C40 +8750 242BF +8751 23617 +8752 27352 +8753 26E8B +8754 270D2 +8755 4C57 +8756 2A351 +8757 474F +8758 45DA +8759 4C85 +875A 27C6C +875B 4D07 +875C 4AA4 +875D 46A1 +875E 26B23 +875F 7225 +8760 25A54 +8761 21A63 +8762 23E06 +8763 23F61 +8764 664D +8765 56FB +8767 7D95 +8768 591D +8769 28BB9 +876A 3DF4 +876B 9734 +876C 27BEF +876D 5BDB +876E 21D5E +876F 5AA4 +8770 3625 +8771 29EB0 +8772 5AD1 +8773 5BB7 +8774 5CFC +8775 676E +8776 8593 +8777 29945 +8778 7461 +8779 749D +877A 3875 +877B 21D53 +877C 2369E +877D 26021 +877E 3EEC +87A1 258DE +87A2 3AF5 +87A3 7AFC +87A4 9F97 +87A5 24161 +87A6 2890D +87A7 231EA +87A8 20A8A +87A9 2325E +87AA 430A +87AB 8484 +87AC 9F96 +87AD 942F +87AE 4930 +87AF 8613 +87B0 5896 +87B1 974A +87B2 9218 +87B3 79D0 +87B4 7A32 +87B5 6660 +87B6 6A29 +87B7 889D +87B8 744C +87B9 7BC5 +87BA 6782 +87BB 7A2C +87BC 524F +87BD 9046 +87BE 34E6 +87BF 73C4 +87C0 25DB9 +87C1 74C6 +87C2 9FC7 +87C3 57B3 +87C4 492F +87C5 544C +87C6 4131 +87C7 2368E +87C8 5818 +87C9 7A72 +87CA 27B65 +87CB 8B8F +87CC 46AE +87CD 26E88 +87CE 4181 +87CF 25D99 +87D0 7BAE +87D1 224BC +87D2 9FC8 +87D3 224C1 +87D4 224C9 +87D5 224CC +87D6 9FC9 +87D7 8504 +87D8 235BB +87D9 40B4 +87DA 9FCA +87DB 44E1 +87DC 2ADFF +87DD 62C1 +87DE 706E +87DF 9FCB +8840 31C0 +8841 31C1 +8842 31C2 +8843 31C3 +8844 31C4 +8845 2010C +8846 31C5 +8847 200D1 +8848 200CD +8849 31C6 +884A 31C7 +884B 200CB +884C 21FE8 +884D 31C8 +884E 200CA +884F 31C9 +8850 31CA +8851 31CB +8852 31CC +8853 2010E +8854 31CD +8855 31CE +8856 0100 +8857 00C1 +8858 01CD +8859 00C0 +885A 0112 +885B 00C9 +885C 011A +885D 00C8 +885E 014C +885F 00D3 +8860 01D1 +8861 00D2 +#8862 <00CA,0304> +8863 1EBE +#8864 <00CA,030C> +8865 1EC0 +8866 00CA +8867 0101 +8868 00E1 +8869 01CE +886A 00E0 +886B 0251 +886C 0113 +886D 00E9 +886E 011B +886F 00E8 +8870 012B +8871 00ED +8872 01D0 +8873 00EC +8874 014D +8875 00F3 +8876 01D2 +8877 00F2 +8878 016B +8879 00FA +887A 01D4 +887B 00F9 +887C 01D6 +887D 01D8 +887E 01DA +88A1 01DC +88A2 00FC +#88A3 <00EA,0304> +88A4 1EBF +#88A5 <00EA,030C> +88A6 1EC1 +88A7 00EA +88A8 0261 +88A9 23DA +88AA 23DB +8940 2A3A9 +8941 21145 +8943 650A +8946 4E3D +8947 6EDD +8948 9D4E +8949 91DF +894C 27735 +894D 6491 +894E 4F1A +894F 4F28 +8950 4FA8 +8951 5156 +8952 5174 +8953 519C +8954 51E4 +8955 52A1 +8956 52A8 +8957 533B +8958 534E +8959 53D1 +895A 53D8 +895B 56E2 +895C 58F0 +895D 5904 +895E 5907 +895F 5932 +8960 5934 +8961 5B66 +8962 5B9E +8963 5B9F +8964 5C9A +8965 5E86 +8966 603B +8967 6589 +8968 67FE +8969 6804 +896A 6865 +896B 6D4E +896C 70BC +896D 7535 +896E 7EA4 +896F 7EAC +8970 7EBA +8971 7EC7 +8972 7ECF +8973 7EDF +8974 7F06 +8975 7F37 +8976 827A +8977 82CF +8978 836F +8979 89C6 +897A 8BBE +897B 8BE2 +897C 8F66 +897D 8F67 +897E 8F6E +89A1 7411 +89A2 7CFC +89A3 7DCD +89A4 6946 +89A5 7AC9 +89A6 5227 +89AB 918C +89AC 78B8 +89AD 915E +89AE 80BC +89B0 8D0B +89B1 80F6 +89B2 209E7 +89B5 809F +89B6 9EC7 +89B7 4CCD +89B8 9DC9 +89B9 9E0C +89BA 4C3E +89BB 29DF6 +89BC 2700E +89BD 9E0A +89BE 2A133 +89BF 35C1 +89C1 6E9A +89C2 823E +89C3 7519 +89C5 4911 +89C6 9A6C +89C7 9A8F +89C8 9F99 +89C9 7987 +89CA 2846C +89CB 21DCA +89CC 205D0 +89CD 22AE6 +89CE 4E24 +89CF 4E81 +89D0 4E80 +89D1 4E87 +89D2 4EBF +89D3 4EEB +89D4 4F37 +89D5 344C +89D6 4FBD +89D7 3E48 +89D8 5003 +89D9 5088 +89DA 347D +89DB 3493 +89DC 34A5 +89DD 5186 +89DE 5905 +89DF 51DB +89E0 51FC +89E1 5205 +89E2 4E89 +89E3 5279 +89E4 5290 +89E5 5327 +89E6 35C7 +89E7 53A9 +89E8 3551 +89E9 53B0 +89EA 3553 +89EB 53C2 +89EC 5423 +89ED 356D +89EE 3572 +89EF 3681 +89F0 5493 +89F1 54A3 +89F2 54B4 +89F3 54B9 +89F4 54D0 +89F5 54EF +89F6 5518 +89F7 5523 +89F8 5528 +89F9 3598 +89FA 553F +89FB 35A5 +89FC 35BF +89FD 55D7 +89FE 35C5 +8A40 27D84 +8A41 5525 +8A43 20C42 +8A44 20D15 +8A45 2512B +8A46 5590 +8A47 22CC6 +8A48 39EC +8A49 20341 +8A4A 8E46 +8A4B 24DB8 +8A4C 294E5 +8A4D 4053 +8A4E 280BE +8A4F 777A +8A50 22C38 +8A51 3A34 +8A52 47D5 +8A53 2815D +8A54 269F2 +8A55 24DEA +8A56 64DD +8A57 20D7C +8A58 20FB4 +8A59 20CD5 +8A5A 210F4 +8A5B 648D +8A5C 8E7E +8A5D 20E96 +8A5E 20C0B +8A5F 20F64 +8A60 22CA9 +8A61 28256 +8A62 244D3 +8A64 20D46 +8A65 29A4D +8A66 280E9 +8A67 47F4 +8A68 24EA7 +8A69 22CC2 +8A6A 9AB2 +8A6B 3A67 +8A6C 295F4 +8A6D 3FED +8A6E 3506 +8A6F 252C7 +8A70 297D4 +8A71 278C8 +8A72 22D44 +8A73 9D6E +8A74 9815 +8A76 43D9 +8A77 260A5 +8A78 64B4 +8A79 54E3 +8A7A 22D4C +8A7B 22BCA +8A7C 21077 +8A7D 39FB +8A7E 2106F +8AA1 266DA +8AA2 26716 +8AA3 279A0 +8AA4 64EA +8AA5 25052 +8AA6 20C43 +8AA7 8E68 +8AA8 221A1 +8AA9 28B4C +8AAA 20731 +8AAC 480B +8AAD 201A9 +8AAE 3FFA +8AAF 5873 +8AB0 22D8D +8AB2 245C8 +8AB3 204FC +8AB4 26097 +8AB5 20F4C +8AB6 20D96 +8AB7 5579 +8AB8 40BB +8AB9 43BA +8ABB 4AB4 +8ABC 22A66 +8ABD 2109D +8ABE 81AA +8ABF 98F5 +8AC0 20D9C +8AC1 6379 +8AC2 39FE +8AC3 22775 +8AC4 8DC0 +8AC5 56A1 +8AC6 647C +8AC7 3E43 +8AC9 2A601 +8ACA 20E09 +8ACB 22ACF +8ACC 22CC9 +8ACE 210C8 +8ACF 239C2 +8AD0 3992 +8AD1 3A06 +8AD2 2829B +8AD3 3578 +8AD4 25E49 +8AD5 220C7 +8AD6 5652 +8AD7 20F31 +8AD8 22CB2 +8AD9 29720 +8ADA 34BC +8ADB 6C3D +8ADC 24E3B +8ADF 27574 +8AE0 22E8B +8AE1 22208 +8AE2 2A65B +8AE3 28CCD +8AE4 20E7A +8AE5 20C34 +8AE6 2681C +8AE7 7F93 +8AE8 210CF +8AE9 22803 +8AEA 22939 +8AEB 35FB +8AEC 251E3 +8AED 20E8C +8AEE 20F8D +8AEF 20EAA +8AF0 3F93 +8AF1 20F30 +8AF2 20D47 +8AF3 2114F +8AF4 20E4C +8AF6 20EAB +8AF7 20BA9 +8AF8 20D48 +8AF9 210C0 +8AFA 2113D +8AFB 3FF9 +8AFC 22696 +8AFD 6432 +8AFE 20FAD +8B40 233F4 +8B41 27639 +8B42 22BCE +8B43 20D7E +8B44 20D7F +8B45 22C51 +8B46 22C55 +8B47 3A18 +8B48 20E98 +8B49 210C7 +8B4A 20F2E +8B4B 2A632 +8B4C 26B50 +8B4D 28CD2 +8B4E 28D99 +8B4F 28CCA +8B50 95AA +8B51 54CC +8B52 82C4 +8B53 55B9 +8B55 29EC3 +8B56 9C26 +8B57 9AB6 +8B58 2775E +8B59 22DEE +8B5A 7140 +8B5B 816D +8B5C 80EC +8B5D 5C1C +8B5E 26572 +8B5F 8134 +8B60 3797 +8B61 535F +8B62 280BD +8B63 91B6 +8B64 20EFA +8B65 20E0F +8B66 20E77 +8B67 20EFB +8B68 35DD +8B69 24DEB +8B6A 3609 +8B6B 20CD6 +8B6C 56AF +8B6D 227B5 +8B6E 210C9 +8B6F 20E10 +8B70 20E78 +8B71 21078 +8B72 21148 +8B73 28207 +8B74 21455 +8B75 20E79 +8B76 24E50 +8B77 22DA4 +8B78 5A54 +8B79 2101D +8B7A 2101E +8B7B 210F5 +8B7C 210F6 +8B7D 579C +8B7E 20E11 +8BA1 27694 +8BA2 282CD +8BA3 20FB5 +8BA4 20E7B +8BA5 2517E +8BA6 3703 +8BA7 20FB6 +8BA8 21180 +8BA9 252D8 +8BAA 2A2BD +8BAB 249DA +8BAC 2183A +8BAD 24177 +8BAE 2827C +8BAF 5899 +8BB0 5268 +8BB1 361A +8BB2 2573D +8BB3 7BB2 +8BB4 5B68 +8BB5 4800 +8BB6 4B2C +8BB7 9F27 +8BB8 49E7 +8BB9 9C1F +8BBA 9B8D +8BBB 25B74 +8BBC 2313D +8BBD 55FB +8BBE 35F2 +8BBF 5689 +8BC0 4E28 +8BC1 5902 +8BC2 21BC1 +8BC3 2F878 +8BC4 9751 +8BC5 20086 +8BC6 4E5B +8BC7 4EBB +8BC8 353E +8BC9 5C23 +8BCA 5F51 +8BCB 5FC4 +8BCC 38FA +8BCD 624C +8BCE 6535 +8BCF 6B7A +8BD0 6C35 +8BD1 6C3A +8BD2 706C +8BD3 722B +8BD4 4E2C +8BD5 72AD +8BD6 248E9 +8BD7 7F52 +8BD8 793B +8BD9 7CF9 +8BDA 7F53 +8BDB 2626A +8BDC 34C1 +8BDE 2634B +8BDF 8002 +8BE0 8080 +8BE1 26612 +8BE2 26951 +8BE3 535D +8BE4 8864 +8BE5 89C1 +8BE6 278B2 +8BE7 8BA0 +8BE8 8D1D +8BE9 9485 +8BEA 9578 +8BEB 957F +8BEC 95E8 +8BED 28E0F +8BEE 97E6 +8BEF 9875 +8BF0 98CE +8BF1 98DE +8BF2 9963 +8BF3 29810 +8BF4 9C7C +8BF5 9E1F +8BF6 9EC4 +8BF7 6B6F +8BF8 F907 +8BF9 4E37 +8BFA 20087 +8BFB 961D +8BFC 6237 +8BFD 94A2 +8C40 503B +8C41 6DFE +8C42 29C73 +8C43 9FA6 +8C44 3DC9 +8C45 888F +8C46 2414E +8C47 7077 +8C48 5CF5 +8C49 4B20 +8C4A 251CD +8C4B 3559 +8C4C 25D30 +8C4D 6122 +8C4E 28A32 +8C4F 8FA7 +8C50 91F6 +8C51 7191 +8C52 6719 +8C53 73BA +8C54 23281 +8C55 2A107 +8C56 3C8B +8C57 21980 +8C58 4B10 +8C59 78E4 +8C5A 7402 +8C5B 51AE +8C5C 2870F +8C5D 4009 +8C5E 6A63 +8C5F 2A2BA +8C60 4223 +8C61 860F +8C62 20A6F +8C63 7A2A +8C64 29947 +8C65 28AEA +8C66 9755 +8C67 704D +8C68 5324 +8C69 2207E +8C6A 93F4 +8C6B 76D9 +8C6C 289E3 +8C6D 9FA7 +8C6E 77DD +8C6F 4EA3 +8C70 4FF0 +8C71 50BC +8C72 4E2F +8C73 4F17 +8C74 9FA8 +8C75 5434 +8C76 7D8B +8C77 5892 +8C78 58D0 +8C79 21DB6 +8C7A 5E92 +8C7B 5E99 +8C7C 5FC2 +8C7D 22712 +8C7E 658B +8CA1 233F9 +8CA2 6919 +8CA3 6A43 +8CA4 23C63 +8CA5 6CFF +8CA7 7200 +8CA8 24505 +8CA9 738C +8CAA 3EDB +8CAB 24A13 +8CAC 5B15 +8CAD 74B9 +8CAE 8B83 +8CAF 25CA4 +8CB0 25695 +8CB1 7A93 +8CB2 7BEC +8CB3 7CC3 +8CB4 7E6C +8CB5 82F8 +8CB6 8597 +8CB7 9FA9 +8CB8 8890 +8CB9 9FAA +8CBA 8EB9 +8CBB 9FAB +8CBC 8FCF +8CBD 855F +8CBE 99E0 +8CBF 9221 +8CC0 9FAC +8CC1 28DB9 +8CC2 2143F +8CC3 4071 +8CC4 42A2 +8CC5 5A1A +8CC9 9868 +8CCA 676B +8CCB 4276 +8CCC 573D +8CCE 85D6 +8CCF 2497B +8CD0 82BF +8CD1 2710D +8CD2 4C81 +8CD3 26D74 +8CD4 5D7B +8CD5 26B15 +8CD6 26FBE +8CD7 9FAD +8CD8 9FAE +8CD9 5B96 +8CDA 9FAF +8CDB 66E7 +8CDC 7E5B +8CDD 6E57 +8CDE 79CA +8CDF 3D88 +8CE0 44C3 +8CE1 23256 +8CE2 22796 +8CE3 439A +8CE4 4536 +8CE6 5CD5 +8CE7 23B1A +8CE8 8AF9 +8CE9 5C78 +8CEA 3D12 +8CEB 23551 +8CEC 5D78 +8CED 9FB2 +8CEE 7157 +8CEF 4558 +8CF0 240EC +8CF1 21E23 +8CF2 4C77 +8CF3 3978 +8CF4 344A +8CF5 201A4 +8CF6 26C41 +8CF7 8ACC +8CF8 4FB4 +8CF9 20239 +8CFA 59BF +8CFB 816C +8CFC 9856 +8CFD 298FA +8CFE 5F3B +8D40 20B9F +8D42 221C1 +8D43 2896D +8D44 4102 +8D45 46BB +8D46 29079 +8D47 3F07 +8D48 9FB3 +8D49 2A1B5 +8D4A 40F8 +8D4B 37D6 +8D4C 46F7 +8D4D 26C46 +8D4E 417C +8D4F 286B2 +8D50 273FF +8D51 456D +8D52 38D4 +8D53 2549A +8D54 4561 +8D55 451B +8D56 4D89 +8D57 4C7B +8D58 4D76 +8D59 45EA +8D5A 3FC8 +8D5B 24B0F +8D5C 3661 +8D5D 44DE +8D5E 44BD +8D5F 41ED +8D60 5D3E +8D61 5D48 +8D62 5D56 +8D63 3DFC +8D64 380F +8D65 5DA4 +8D66 5DB9 +8D67 3820 +8D68 3838 +8D69 5E42 +8D6A 5EBD +8D6B 5F25 +8D6C 5F83 +8D6D 3908 +8D6E 3914 +8D6F 393F +8D70 394D +8D71 60D7 +8D72 613D +8D73 5CE5 +8D74 3989 +8D75 61B7 +8D76 61B9 +8D77 61CF +8D78 39B8 +8D79 622C +8D7A 6290 +8D7B 62E5 +8D7C 6318 +8D7D 39F8 +8D7E 56B1 +8DA1 3A03 +8DA2 63E2 +8DA3 63FB +8DA4 6407 +8DA5 645A +8DA6 3A4B +8DA7 64C0 +8DA8 5D15 +8DA9 5621 +8DAA 9F9F +8DAB 3A97 +8DAC 6586 +8DAD 3ABD +8DAE 65FF +8DAF 6653 +8DB0 3AF2 +8DB1 6692 +8DB2 3B22 +8DB3 6716 +8DB4 3B42 +8DB5 67A4 +8DB6 6800 +8DB7 3B58 +8DB8 684A +8DB9 6884 +8DBA 3B72 +8DBB 3B71 +8DBC 3B7B +8DBD 6909 +8DBE 6943 +8DBF 725C +8DC0 6964 +8DC1 699F +8DC2 6985 +8DC3 3BBC +8DC4 69D6 +8DC5 3BDD +8DC6 6A65 +8DC7 6A74 +8DC8 6A71 +8DC9 6A82 +8DCA 3BEC +8DCB 6A99 +8DCC 3BF2 +8DCD 6AAB +8DCE 6AB5 +8DCF 6AD4 +8DD0 6AF6 +8DD1 6B81 +8DD2 6BC1 +8DD3 6BEA +8DD4 6C75 +8DD5 6CAA +8DD6 3CCB +8DD7 6D02 +8DD8 6D06 +8DD9 6D26 +8DDA 6D81 +8DDB 3CEF +8DDC 6DA4 +8DDD 6DB1 +8DDE 6E15 +8DDF 6E18 +8DE0 6E29 +8DE1 6E86 +8DE2 289C0 +8DE3 6EBB +8DE4 6EE2 +8DE5 6EDA +8DE6 9F7F +8DE7 6EE8 +8DE8 6EE9 +8DE9 6F24 +8DEA 6F34 +8DEB 3D46 +8DEC 23F41 +8DED 6F81 +8DEE 6FBE +8DEF 3D6A +8DF0 3D75 +8DF1 71B7 +8DF2 5C99 +8DF3 3D8A +8DF4 702C +8DF5 3D91 +8DF6 7050 +8DF7 7054 +8DF8 706F +8DF9 707F +8DFA 7089 +8DFB 20325 +8DFC 43C1 +8DFD 35F1 +8DFE 20ED8 +8E40 23ED7 +8E41 57BE +8E42 26ED3 +8E43 713E +8E44 257E0 +8E45 364E +8E46 69A2 +8E47 28BE9 +8E48 5B74 +8E49 7A49 +8E4A 258E1 +8E4B 294D9 +8E4C 7A65 +8E4D 7A7D +8E4E 259AC +8E4F 7ABB +8E50 7AB0 +8E51 7AC2 +8E52 7AC3 +8E53 71D1 +8E54 2648D +8E55 41CA +8E56 7ADA +8E57 7ADD +8E58 7AEA +8E59 41EF +8E5A 54B2 +8E5B 25C01 +8E5C 7B0B +8E5D 7B55 +8E5E 7B29 +8E5F 2530E +8E60 25CFE +8E61 7BA2 +8E62 7B6F +8E63 839C +8E64 25BB4 +8E65 26C7F +8E66 7BD0 +8E67 8421 +8E68 7B92 +8E6A 25D20 +8E6B 3DAD +8E6C 25C65 +8E6D 8492 +8E6E 7BFA +8E70 7C35 +8E71 25CC1 +8E72 7C44 +8E73 7C83 +8E74 24882 +8E75 7CA6 +8E76 667D +8E77 24578 +8E78 7CC9 +8E79 7CC7 +8E7A 7CE6 +8E7B 7C74 +8E7C 7CF3 +8E7D 7CF5 +8EA1 7E67 +8EA2 451D +8EA3 26E44 +8EA4 7D5D +8EA5 26ED6 +8EA6 748D +8EA7 7D89 +8EA8 7DAB +8EA9 7135 +8EAA 7DB3 +8EAC 24057 +8EAD 26029 +8EAE 7DE4 +8EAF 3D13 +8EB0 7DF5 +8EB1 217F9 +8EB2 7DE5 +8EB3 2836D +8EB5 26121 +8EB6 2615A +8EB7 7E6E +8EB8 7E92 +8EB9 432B +8EBA 946C +8EBB 7E27 +8EBC 7F40 +8EBD 7F41 +8EBE 7F47 +8EBF 7936 +8EC0 262D0 +8EC1 99E1 +8EC2 7F97 +8EC3 26351 +8EC4 7FA3 +8EC5 21661 +8EC6 20068 +8EC7 455C +8EC8 23766 +8EC9 4503 +8ECA 2833A +8ECB 7FFA +8ECC 26489 +8ECE 8008 +8ECF 801D +8ED1 802F +8ED2 2A087 +8ED3 26CC3 +8ED4 803B +8ED5 803C +8ED6 8061 +8ED7 22714 +8ED8 4989 +8ED9 26626 +8EDA 23DE3 +8EDB 266E8 +8EDC 6725 +8EDD 80A7 +8EDE 28A48 +8EDF 8107 +8EE0 811A +8EE1 58B0 +8EE2 226F6 +8EE3 6C7F +8EE4 26498 +8EE5 24FB8 +8EE6 64E7 +8EE7 2148A +8EE8 8218 +8EE9 2185E +8EEA 6A53 +8EEB 24A65 +8EEC 24A95 +8EED 447A +8EEE 8229 +8EEF 20B0D +8EF0 26A52 +8EF1 23D7E +8EF2 4FF9 +8EF3 214FD +8EF4 84E2 +8EF5 8362 +8EF6 26B0A +8EF7 249A7 +8EF8 23530 +8EF9 21773 +8EFA 23DF8 +8EFB 82AA +8EFC 691B +8EFD 2F994 +8EFE 41DB +8F40 854B +8F41 82D0 +8F42 831A +8F43 20E16 +8F44 217B4 +8F45 36C1 +8F46 2317D +8F47 2355A +8F48 827B +8F49 82E2 +8F4A 8318 +8F4B 23E8B +8F4C 26DA3 +8F4D 26B05 +8F4E 26B97 +8F4F 235CE +8F50 3DBF +8F51 831D +8F52 55EC +8F53 8385 +8F54 450B +8F55 26DA5 +8F56 83AC +8F58 83D3 +8F59 347E +8F5A 26ED4 +8F5B 6A57 +8F5C 855A +8F5D 3496 +8F5E 26E42 +8F5F 22EEF +8F60 8458 +8F61 25BE4 +8F62 8471 +8F63 3DD3 +8F64 44E4 +8F65 6AA7 +8F66 844A +8F67 23CB5 +8F68 7958 +8F6A 26B96 +8F6B 26E77 +8F6C 26E43 +8F6D 84DE +8F6F 8391 +8F70 44A0 +8F71 8493 +8F72 84E4 +8F73 25C91 +8F74 4240 +8F75 25CC0 +8F76 4543 +8F77 8534 +8F78 5AF2 +8F79 26E99 +8F7A 4527 +8F7B 8573 +8F7C 4516 +8F7D 67BF +8F7E 8616 +8FA1 28625 +8FA2 2863B +8FA3 85C1 +8FA4 27088 +8FA5 8602 +8FA6 21582 +8FA7 270CD +8FA8 2F9B2 +8FA9 456A +8FAA 8628 +8FAB 3648 +8FAC 218A2 +8FAD 53F7 +8FAE 2739A +8FAF 867E +8FB0 8771 +8FB1 2A0F8 +8FB2 87EE +8FB3 22C27 +8FB4 87B1 +8FB5 87DA +8FB6 880F +8FB7 5661 +8FB8 866C +8FB9 6856 +8FBA 460F +8FBB 8845 +8FBC 8846 +8FBD 275E0 +8FBE 23DB9 +8FBF 275E4 +8FC0 885E +8FC1 889C +8FC2 465B +8FC3 88B4 +8FC4 88B5 +8FC5 63C1 +8FC6 88C5 +8FC7 7777 +8FC8 2770F +8FC9 8987 +8FCA 898A +8FCD 89A7 +8FCE 89BC +8FCF 28A25 +8FD0 89E7 +8FD1 27924 +8FD2 27ABD +8FD3 8A9C +8FD4 7793 +8FD5 91FE +8FD6 8A90 +8FD7 27A59 +8FD8 7AE9 +8FD9 27B3A +8FDA 23F8F +8FDB 4713 +8FDC 27B38 +8FDD 717C +8FDE 8B0C +8FDF 8B1F +8FE0 25430 +8FE1 25565 +8FE2 8B3F +8FE3 8B4C +8FE4 8B4D +8FE5 8AA9 +8FE6 24A7A +8FE7 8B90 +8FE8 8B9B +8FE9 8AAF +8FEA 216DF +8FEB 4615 +8FEC 884F +8FED 8C9B +8FEE 27D54 +8FEF 27D8F +8FF0 2F9D4 +8FF1 3725 +8FF2 27D53 +8FF3 8CD6 +8FF4 27D98 +8FF5 27DBD +8FF6 8D12 +8FF7 8D03 +8FF8 21910 +8FF9 8CDB +8FFA 705C +8FFB 8D11 +8FFC 24CC9 +8FFD 3ED0 +9040 8DA9 +9041 28002 +9042 21014 +9043 2498A +9044 3B7C +9045 281BC +9046 2710C +9047 7AE7 +9048 8EAD +9049 8EB6 +904A 8EC3 +904B 92D4 +904C 8F19 +904D 8F2D +904E 28365 +904F 28412 +9050 8FA5 +9051 9303 +9052 2A29F +9053 20A50 +9054 8FB3 +9055 492A +9056 289DE +9057 2853D +9058 23DBB +9059 5EF8 +905A 23262 +905B 8FF9 +905C 2A014 +905D 286BC +905E 28501 +905F 22325 +9060 3980 +9061 26ED7 +9062 9037 +9063 2853C +9064 27ABE +9065 9061 +9066 2856C +9067 2860B +9068 90A8 +9069 28713 +906A 90C4 +906B 286E6 +906C 90AE +906E 9167 +906F 3AF0 +9070 91A9 +9071 91C4 +9072 7CAC +9073 28933 +9074 21E89 +9075 920E +9076 6C9F +9077 9241 +9078 9262 +9079 255B9 +907B 28AC6 +907C 23C9B +907D 28B0C +907E 255DB +90A1 20D31 +90A2 932C +90A3 936B +90A4 28AE1 +90A5 28BEB +90A6 708F +90A7 5AC3 +90A8 28AE2 +90A9 28AE5 +90AA 4965 +90AB 9244 +90AC 28BEC +90AD 28C39 +90AE 28BFF +90AF 9373 +90B0 945B +90B1 8EBC +90B2 9585 +90B3 95A6 +90B4 9426 +90B5 95A0 +90B6 6FF6 +90B7 42B9 +90B8 2267A +90B9 286D8 +90BA 2127C +90BB 23E2E +90BC 49DF +90BD 6C1C +90BE 967B +90BF 9696 +90C0 416C +90C1 96A3 +90C2 26ED5 +90C3 61DA +90C4 96B6 +90C5 78F5 +90C6 28AE0 +90C7 96BD +90C8 53CC +90C9 49A1 +90CA 26CB8 +90CB 20274 +90CC 26410 +90CD 290AF +90CE 290E5 +90CF 24AD1 +90D0 21915 +90D1 2330A +90D2 9731 +90D3 8642 +90D4 9736 +90D5 4A0F +90D6 453D +90D7 4585 +90D8 24AE9 +90D9 7075 +90DA 5B41 +90DB 971B +90DD 291D5 +90DE 9757 +90DF 5B4A +90E0 291EB +90E1 975F +90E2 9425 +90E3 50D0 +90E4 230B7 +90E5 230BC +90E6 9789 +90E7 979F +90E8 97B1 +90E9 97BE +90EA 97C0 +90EB 97D2 +90EC 97E0 +90ED 2546C +90EE 97EE +90EF 741C +90F0 29433 +90F2 97F5 +90F3 2941D +90F4 2797A +90F5 4AD1 +90F6 9834 +90F7 9833 +90F8 984B +90F9 9866 +90FA 3B0E +90FB 27175 +90FC 3D51 +90FD 20630 +90FE 2415C +9140 25706 +9141 98CA +9142 98B7 +9143 98C8 +9144 98C7 +9145 4AFF +9146 26D27 +9147 216D3 +9148 55B0 +9149 98E1 +914A 98E6 +914B 98EC +914C 9378 +914D 9939 +914E 24A29 +914F 4B72 +9150 29857 +9151 29905 +9152 99F5 +9153 9A0C +9154 9A3B +9155 9A10 +9156 9A58 +9157 25725 +9158 36C4 +9159 290B1 +915A 29BD5 +915B 9AE0 +915C 9AE2 +915D 29B05 +915E 9AF4 +915F 4C0E +9160 9B14 +9161 9B2D +9162 28600 +9163 5034 +9164 9B34 +9165 269A8 +9166 38C3 +9167 2307D +9168 9B50 +9169 9B40 +916A 29D3E +916B 5A45 +916C 21863 +916D 9B8E +916E 2424B +916F 9C02 +9170 9BFF +9171 9C0C +9172 29E68 +9173 9DD4 +9174 29FB7 +9175 2A192 +9176 2A1AB +9177 2A0E1 +9178 2A123 +9179 2A1DF +917A 9D7E +917B 9D83 +917C 2A134 +917D 9E0E +917E 6888 +91A1 9DC4 +91A2 2215B +91A3 2A193 +91A4 2A220 +91A5 2193B +91A6 2A233 +91A7 9D39 +91A8 2A0B9 +91A9 2A2B4 +91AA 9E90 +91AB 9E95 +91AC 9E9E +91AD 9EA2 +91AE 4D34 +91AF 9EAA +91B0 9EAF +91B1 24364 +91B2 9EC1 +91B3 3B60 +91B4 39E5 +91B5 3D1D +91B6 4F32 +91B7 37BE +91B8 28C2B +91B9 9F02 +91BA 9F08 +91BB 4B96 +91BC 9424 +91BD 26DA2 +91BE 9F17 +91C0 9F39 +91C1 569F +91C2 568A +91C3 9F45 +91C4 99B8 +91C5 2908B +91C6 97F2 +91C7 847F +91C8 9F62 +91C9 9F69 +91CA 7ADC +91CB 9F8E +91CC 7216 +91CD 4BBE +91CE 24975 +91CF 249BB +91D0 7177 +91D1 249F8 +91D2 24348 +91D3 24A51 +91D4 739E +91D5 28BDA +91D6 218FA +91D7 799F +91D8 2897E +91D9 28E36 +91DA 9369 +91DB 93F3 +91DC 28A44 +91DD 92EC +91DE 9381 +91DF 93CB +91E0 2896C +91E1 244B9 +91E2 7217 +91E3 3EEB +91E4 7772 +91E5 7A43 +91E6 70D0 +91E7 24473 +91E8 243F8 +91E9 717E +91EA 217EF +91EB 70A3 +91EC 218BE +91ED 23599 +91EE 3EC7 +91EF 21885 +91F0 2542F +91F1 217F8 +91F2 3722 +91F3 216FB +91F4 21839 +91F5 36E1 +91F6 21774 +91F7 218D1 +91F8 25F4B +91F9 3723 +91FA 216C0 +91FB 575B +91FC 24A25 +91FD 213FE +91FE 212A8 +9240 213C6 +9241 214B6 +9242 8503 +9243 236A6 +9245 8455 +9246 24994 +9247 27165 +9248 23E31 +9249 2555C +924A 23EFB +924B 27052 +924C 44F4 +924D 236EE +924E 2999D +924F 26F26 +9250 67F9 +9251 3733 +9252 3C15 +9253 3DE7 +9254 586C +9255 21922 +9256 6810 +9257 4057 +9258 2373F +9259 240E1 +925A 2408B +925B 2410F +925C 26C21 +925D 54CB +925E 569E +925F 266B1 +9260 5692 +9261 20FDF +9262 20BA8 +9263 20E0D +9264 93C6 +9265 28B13 +9266 939C +9267 4EF8 +9268 512B +9269 3819 +926A 24436 +926B 4EBC +926C 20465 +926D 2037F +926E 4F4B +926F 4F8A +9270 25651 +9271 5A68 +9272 201AB +9273 203CB +9274 3999 +9275 2030A +9276 20414 +9277 3435 +9278 4F29 +9279 202C0 +927A 28EB3 +927B 20275 +927C 8ADA +927D 2020C +927E 4E98 +92A1 50CD +92A2 510D +92A3 4FA2 +92A4 4F03 +92A5 24A0E +92A6 23E8A +92A7 4F42 +92A8 502E +92A9 506C +92AA 5081 +92AB 4FCC +92AC 4FE5 +92AD 5058 +92AE 50FC +92B3 6E76 +92B4 23595 +92B5 23E39 +92B6 23EBF +92B7 6D72 +92B8 21884 +92B9 23E89 +92BA 51A8 +92BB 51C3 +92BC 205E0 +92BD 44DD +92BE 204A3 +92BF 20492 +92C0 20491 +92C1 8D7A +92C2 28A9C +92C3 2070E +92C4 5259 +92C5 52A4 +92C6 20873 +92C7 52E1 +92C9 467A +92CA 718C +92CB 2438C +92CC 20C20 +92CD 249AC +92CE 210E4 +92CF 69D1 +92D0 20E1D +92D2 3EDE +92D3 7499 +92D4 7414 +92D5 7456 +92D6 7398 +92D7 4B8E +92D8 24ABC +92D9 2408D +92DA 53D0 +92DB 3584 +92DC 720F +92DD 240C9 +92DE 55B4 +92DF 20345 +92E0 54CD +92E1 20BC6 +92E2 571D +92E3 925D +92E4 96F4 +92E5 9366 +92E6 57DD +92E7 578D +92E8 577F +92E9 363E +92EA 58CB +92EB 5A99 +92EC 28A46 +92ED 216FA +92EE 2176F +92EF 21710 +92F0 5A2C +92F1 59B8 +92F2 928F +92F3 5A7E +92F4 5ACF +92F5 5A12 +92F6 25946 +92F7 219F3 +92F8 21861 +92F9 24295 +92FA 36F5 +92FB 6D05 +92FC 7443 +92FD 5A21 +92FE 25E83 +9340 5A81 +9341 28BD7 +9342 20413 +9343 93E0 +9344 748C +9345 21303 +9346 7105 +9347 4972 +9348 9408 +9349 289FB +934A 93BD +934B 37A0 +934C 5C1E +934D 5C9E +934E 5E5E +934F 5E48 +9350 21996 +9351 2197C +9352 23AEE +9353 5ECD +9354 5B4F +9355 21903 +9356 21904 +9357 3701 +9358 218A0 +9359 36DD +935A 216FE +935B 36D3 +935C 812A +935D 28A47 +935E 21DBA +935F 23472 +9360 289A8 +9361 5F0C +9362 5F0E +9363 21927 +9364 217AB +9365 5A6B +9366 2173B +9367 5B44 +9368 8614 +9369 275FD +936A 8860 +936B 607E +936C 22860 +936D 2262B +936E 5FDB +936F 3EB8 +9370 225AF +9371 225BE +9372 29088 +9373 26F73 +9374 61C0 +9375 2003E +9376 20046 +9377 2261B +9378 6199 +9379 6198 +937A 6075 +937B 22C9B +937C 22D07 +937D 246D4 +937E 2914D +93A1 6471 +93A2 24665 +93A3 22B6A +93A4 3A29 +93A5 22B22 +93A6 23450 +93A7 298EA +93A8 22E78 +93A9 6337 +93AA 2A45B +93AB 64B6 +93AC 6331 +93AD 63D1 +93AE 249E3 +93AF 22D67 +93B0 62A4 +93B1 22CA1 +93B2 643B +93B3 656B +93B4 6972 +93B5 3BF4 +93B6 2308E +93B7 232AD +93B8 24989 +93B9 232AB +93BA 550D +93BB 232E0 +93BC 218D9 +93BD 2943F +93BE 66CE +93BF 23289 +93C0 231B3 +93C1 3AE0 +93C2 4190 +93C3 25584 +93C4 28B22 +93C5 2558F +93C6 216FC +93C7 2555B +93C8 25425 +93C9 78EE +93CA 23103 +93CB 2182A +93CC 23234 +93CD 3464 +93CE 2320F +93CF 23182 +93D0 242C9 +93D1 668E +93D2 26D24 +93D3 666B +93D4 4B93 +93D5 6630 +93D6 27870 +93D7 21DEB +93D8 6663 +93D9 232D2 +93DA 232E1 +93DB 661E +93DC 25872 +93DD 38D1 +93DE 2383A +93DF 237BC +93E0 3B99 +93E1 237A2 +93E2 233FE +93E3 74D0 +93E4 3B96 +93E5 678F +93E6 2462A +93E7 68B6 +93E8 681E +93E9 3BC4 +93EA 6ABE +93EB 3863 +93EC 237D5 +93ED 24487 +93EE 6A33 +93EF 6A52 +93F0 6AC9 +93F1 6B05 +93F2 21912 +93F3 6511 +93F4 6898 +93F5 6A4C +93F6 3BD7 +93F7 6A7A +93F8 6B57 +93F9 23FC0 +93FA 23C9A +93FB 93A0 +93FC 92F2 +93FD 28BEA +93FE 28ACB +9440 9289 +9441 2801E +9442 289DC +9443 9467 +9444 6DA5 +9445 6F0B +9446 249EC +9448 23F7F +9449 3D8F +944A 6E04 +944B 2403C +944C 5A3D +944D 6E0A +944E 5847 +944F 6D24 +9450 7842 +9451 713B +9452 2431A +9453 24276 +9454 70F1 +9455 7250 +9456 7287 +9457 7294 +9458 2478F +9459 24725 +945A 5179 +945B 24AA4 +945C 205EB +945D 747A +945E 23EF8 +945F 2365F +9460 24A4A +9461 24917 +9462 25FE1 +9463 3F06 +9464 3EB1 +9465 24ADF +9466 28C23 +9467 23F35 +9468 60A7 +9469 3EF3 +946A 74CC +946B 743C +946C 9387 +946D 7437 +946E 449F +946F 26DEA +9470 4551 +9471 7583 +9472 3F63 +9473 24CD9 +9474 24D06 +9475 3F58 +9476 7555 +9477 7673 +9478 2A5C6 +9479 3B19 +947A 7468 +947B 28ACC +947C 249AB +947D 2498E +947E 3AFB +94A1 3DCD +94A2 24A4E +94A3 3EFF +94A4 249C5 +94A5 248F3 +94A6 91FA +94A7 5732 +94A8 9342 +94A9 28AE3 +94AA 21864 +94AB 50DF +94AC 25221 +94AD 251E7 +94AE 7778 +94AF 23232 +94B0 770E +94B1 770F +94B2 777B +94B3 24697 +94B4 23781 +94B5 3A5E +94B6 248F0 +94B7 7438 +94B8 749B +94B9 3EBF +94BA 24ABA +94BB 24AC7 +94BC 40C8 +94BD 24A96 +94BE 261AE +94BF 9307 +94C0 25581 +94C1 781E +94C2 788D +94C3 7888 +94C4 78D2 +94C5 73D0 +94C6 7959 +94C7 27741 +94C8 256E3 +94C9 410E +94CB 8496 +94CC 79A5 +94CD 6A2D +94CE 23EFA +94CF 7A3A +94D0 79F4 +94D1 416E +94D2 216E6 +94D3 4132 +94D4 9235 +94D5 79F1 +94D6 20D4C +94D7 2498C +94D8 20299 +94D9 23DBA +94DA 2176E +94DB 3597 +94DC 556B +94DD 3570 +94DE 36AA +94DF 201D4 +94E0 20C0D +94E1 7AE2 +94E2 5A59 +94E3 226F5 +94E4 25AAF +94E5 25A9C +94E6 5A0D +94E7 2025B +94E8 78F0 +94E9 5A2A +94EA 25BC6 +94EB 7AFE +94EC 41F9 +94ED 7C5D +94EE 7C6D +94EF 4211 +94F0 25BB3 +94F1 25EBC +94F2 25EA6 +94F3 7CCD +94F4 249F9 +94F5 217B0 +94F6 7C8E +94F7 7C7C +94F8 7CAE +94F9 6AB2 +94FA 7DDC +94FB 7E07 +94FC 7DD3 +94FD 7F4E +94FE 26261 +9540 2615C +9541 27B48 +9542 7D97 +9543 25E82 +9544 426A +9545 26B75 +9546 20916 +9547 67D6 +9548 2004E +9549 235CF +954A 57C4 +954B 26412 +954C 263F8 +954D 24962 +954E 7FDD +954F 7B27 +9550 2082C +9551 25AE9 +9552 25D43 +9553 7B0C +9554 25E0E +9555 99E6 +9556 8645 +9557 9A63 +9558 6A1C +9559 2343F +955A 39E2 +955B 249F7 +955C 265AD +955D 9A1F +955E 265A0 +955F 8480 +9560 27127 +9561 26CD1 +9562 44EA +9563 8137 +9564 4402 +9565 80C6 +9566 8109 +9567 8142 +9568 267B4 +9569 98C3 +956A 26A42 +956B 8262 +956C 8265 +956D 26A51 +956E 8453 +956F 26DA7 +9570 8610 +9571 2721B +9572 5A86 +9573 417F +9574 21840 +9575 5B2B +9576 218A1 +9577 5AE4 +9578 218D8 +9579 86A0 +957A 2F9BC +957B 23D8F +957C 882D +957D 27422 +957E 5A02 +95A1 886E +95A2 4F45 +95A3 8887 +95A4 88BF +95A5 88E6 +95A6 8965 +95A7 894D +95A8 25683 +95A9 8954 +95AA 27785 +95AB 27784 +95AC 28BF5 +95AD 28BD9 +95AE 28B9C +95AF 289F9 +95B0 3EAD +95B1 84A3 +95B2 46F5 +95B3 46CF +95B4 37F2 +95B5 8A3D +95B6 8A1C +95B7 29448 +95B8 5F4D +95B9 922B +95BA 24284 +95BB 65D4 +95BC 7129 +95BD 70C4 +95BE 21845 +95BF 9D6D +95C0 8C9F +95C1 8CE9 +95C2 27DDC +95C3 599A +95C4 77C3 +95C5 59F0 +95C6 436E +95C7 36D4 +95C8 8E2A +95C9 8EA7 +95CA 24C09 +95CB 8F30 +95CC 8F4A +95CD 42F4 +95CE 6C58 +95CF 6FBB +95D0 22321 +95D1 489B +95D2 6F79 +95D3 6E8B +95D4 217DA +95D5 9BE9 +95D6 36B5 +95D7 2492F +95D8 90BB +95DA 5571 +95DB 4906 +95DC 91BB +95DD 9404 +95DE 28A4B +95DF 4062 +95E0 28AFC +95E1 9427 +95E2 28C1D +95E3 28C3B +95E4 84E5 +95E5 8A2B +95E6 9599 +95E7 95A7 +95E8 9597 +95E9 9596 +95EA 28D34 +95EB 7445 +95EC 3EC2 +95ED 248FF +95EE 24A42 +95EF 243EA +95F0 3EE7 +95F1 23225 +95F2 968F +95F3 28EE7 +95F4 28E66 +95F5 28E65 +95F6 3ECC +95F7 249ED +95F8 24A78 +95F9 23FEE +95FA 7412 +95FB 746B +95FC 3EFC +95FD 9741 +95FE 290B0 +9640 6847 +9641 4A1D +9642 29093 +9643 257DF +9645 9368 +9646 28989 +9647 28C26 +9648 28B2F +9649 263BE +964A 92BA +964B 5B11 +964C 8B69 +964D 493C +964E 73F9 +964F 2421B +9650 979B +9651 9771 +9652 9938 +9653 20F26 +9654 5DC1 +9655 28BC5 +9656 24AB2 +9657 981F +9658 294DA +9659 92F6 +965A 295D7 +965B 91E5 +965C 44C0 +965D 28B50 +965E 24A67 +965F 28B64 +9660 98DC +9661 28A45 +9662 3F00 +9663 922A +9664 4925 +9665 8414 +9666 993B +9667 994D +9668 27B06 +9669 3DFD +966A 999B +966B 4B6F +966C 99AA +966D 9A5C +966E 28B65 +966F 258C8 +9670 6A8F +9671 9A21 +9672 5AFE +9673 9A2F +9674 298F1 +9675 4B90 +9676 29948 +9677 99BC +9678 4BBD +9679 4B97 +967A 937D +967B 5872 +967C 21302 +967D 5822 +967E 249B8 +96A1 214E8 +96A2 7844 +96A3 2271F +96A4 23DB8 +96A5 68C5 +96A6 3D7D +96A7 9458 +96A8 3927 +96A9 6150 +96AA 22781 +96AB 2296B +96AC 6107 +96AD 9C4F +96AE 9C53 +96AF 9C7B +96B0 9C35 +96B1 9C10 +96B2 9B7F +96B3 9BCF +96B4 29E2D +96B5 9B9F +96B6 2A1F5 +96B7 2A0FE +96B8 9D21 +96B9 4CAE +96BA 24104 +96BB 9E18 +96BC 4CB0 +96BD 9D0C +96BE 2A1B4 +96BF 2A0ED +96C0 2A0F3 +96C1 2992F +96C2 9DA5 +96C3 84BD +96C4 26E12 +96C5 26FDF +96C6 26B82 +96C7 85FC +96C8 4533 +96C9 26DA4 +96CA 26E84 +96CB 26DF0 +96CC 8420 +96CD 85EE +96CE 26E00 +96CF 237D7 +96D0 26064 +96D1 79E2 +96D2 2359C +96D3 23640 +96D4 492D +96D5 249DE +96D6 3D62 +96D7 93DB +96D8 92BE +96D9 9348 +96DA 202BF +96DB 78B9 +96DC 9277 +96DD 944D +96DE 4FE4 +96DF 3440 +96E0 9064 +96E1 2555D +96E2 783D +96E3 7854 +96E4 78B6 +96E5 784B +96E6 21757 +96E7 231C9 +96E8 24941 +96E9 369A +96EA 4F72 +96EB 6FDA +96EC 6FD9 +96EE 701E +96EF 5414 +96F0 241B5 +96F1 57BB +96F2 58F3 +96F3 578A +96F4 9D16 +96F5 57D7 +96F6 7134 +96F7 34AF +96F8 241AC +96F9 71EB +96FA 26C40 +96FB 24F97 +96FD 217B5 +96FE 28A49 +9740 610C +9741 5ACE +9742 5A0B +9743 42BC +9744 24488 +9745 372C +9746 4B7B +9747 289FC +9748 93BB +9749 93B8 +974A 218D6 +974B 20F1D +974C 8472 +974D 26CC0 +974E 21413 +974F 242FA +9750 22C26 +9751 243C1 +9752 5994 +9753 23DB7 +9754 26741 +9755 7DA8 +9756 2615B +9757 260A4 +9758 249B9 +9759 2498B +975A 289FA +975B 92E5 +975C 73E2 +975D 3EE9 +975E 74B4 +975F 28B63 +9760 2189F +9761 3EE1 +9762 24AB3 +9763 6AD8 +9764 73F3 +9765 73FB +9766 3ED6 +9767 24A3E +9768 24A94 +9769 217D9 +976A 24A66 +976B 203A7 +976C 21424 +976D 249E5 +976E 7448 +976F 24916 +9770 70A5 +9771 24976 +9772 9284 +9773 73E6 +9774 935F +9775 204FE +9776 9331 +9777 28ACE +9778 28A16 +9779 9386 +977A 28BE7 +977B 255D5 +977C 4935 +977D 28A82 +977E 716B +97A1 24943 +97A2 20CFF +97A3 56A4 +97A4 2061A +97A5 20BEB +97A6 20CB8 +97A7 5502 +97A8 79C4 +97A9 217FA +97AA 7DFE +97AB 216C2 +97AC 24A50 +97AD 21852 +97AE 452E +97AF 9401 +97B0 370A +97B1 28AC0 +97B2 249AD +97B3 59B0 +97B4 218BF +97B5 21883 +97B6 27484 +97B7 5AA1 +97B8 36E2 +97B9 23D5B +97BA 36B0 +97BB 925F +97BC 5A79 +97BD 28A81 +97BE 21862 +97BF 9374 +97C0 3CCD +97C1 20AB4 +97C2 4A96 +97C3 398A +97C4 50F4 +97C5 3D69 +97C6 3D4C +97C7 2139C +97C8 7175 +97C9 42FB +97CA 28218 +97CB 6E0F +97CC 290E4 +97CD 44EB +97CE 6D57 +97CF 27E4F +97D0 7067 +97D1 6CAF +97D2 3CD6 +97D3 23FED +97D4 23E2D +97D5 6E02 +97D6 6F0C +97D7 3D6F +97D8 203F5 +97D9 7551 +97DA 36BC +97DB 34C8 +97DC 4680 +97DD 3EDA +97DE 4871 +97DF 59C4 +97E0 926E +97E1 493E +97E2 8F41 +97E3 28C1C +97E4 26BC0 +97E5 5812 +97E6 57C8 +97E7 36D6 +97E8 21452 +97E9 70FE +97EA 24362 +97EB 24A71 +97EC 22FE3 +97ED 212B0 +97EE 223BD +97EF 68B9 +97F0 6967 +97F1 21398 +97F2 234E5 +97F3 27BF4 +97F4 236DF +97F5 28A83 +97F6 237D6 +97F7 233FA +97F8 24C9F +97F9 6A1A +97FA 236AD +97FB 26CB7 +97FC 843E +97FD 44DF +97FE 44CE +9840 26D26 +9841 26D51 +9842 26C82 +9843 26FDE +9844 6F17 +9845 27109 +9846 833D +9847 2173A +9848 83ED +9849 26C80 +984A 27053 +984B 217DB +984C 5989 +984D 5A82 +984E 217B3 +984F 5A61 +9850 5A71 +9851 21905 +9852 241FC +9853 372D +9854 59EF +9855 2173C +9856 36C7 +9857 718E +9858 9390 +9859 669A +985A 242A5 +985B 5A6E +985C 5A2B +985D 24293 +985E 6A2B +985F 23EF9 +9860 27736 +9861 2445B +9862 242CA +9863 711D +9864 24259 +9865 289E1 +9866 4FB0 +9867 26D28 +9868 5CC2 +9869 244CE +986A 27E4D +986B 243BD +986C 6A0C +986D 24256 +986E 21304 +986F 70A6 +9870 7133 +9871 243E9 +9872 3DA5 +9873 6CDF +9874 2F825 +9875 24A4F +9876 7E65 +9877 59EB +9878 5D2F +9879 3DF3 +987A 5F5C +987B 24A5D +987C 217DF +987D 7DA4 +987E 8426 +98A1 5485 +98A2 23AFA +98A3 23300 +98A4 20214 +98A5 577E +98A6 208D5 +98A7 20619 +98A8 3FE5 +98A9 21F9E +98AA 2A2B6 +98AB 7003 +98AC 2915B +98AD 5D70 +98AE 738F +98AF 7CD3 +98B0 28A59 +98B1 29420 +98B2 4FC8 +98B3 7FE7 +98B4 72CD +98B5 7310 +98B6 27AF4 +98B7 7338 +98B8 7339 +98B9 256F6 +98BA 7341 +98BB 7348 +98BC 3EA9 +98BD 27B18 +98BE 906C +98BF 71F5 +98C0 248F2 +98C1 73E1 +98C2 81F6 +98C3 3ECA +98C4 770C +98C5 3ED1 +98C6 6CA2 +98C7 56FD +98C8 7419 +98C9 741E +98CA 741F +98CB 3EE2 +98CC 3EF0 +98CD 3EF4 +98CE 3EFA +98CF 74D3 +98D0 3F0E +98D1 3F53 +98D2 7542 +98D3 756D +98D4 7572 +98D5 758D +98D6 3F7C +98D7 75C8 +98D8 75DC +98D9 3FC0 +98DA 764D +98DB 3FD7 +98DC 7674 +98DD 3FDC +98DE 767A +98DF 24F5C +98E0 7188 +98E1 5623 +98E2 8980 +98E3 5869 +98E4 401D +98E5 7743 +98E6 4039 +98E7 6761 +98E8 4045 +98E9 35DB +98EA 7798 +98EB 406A +98EC 406F +98ED 5C5E +98EE 77BE +98EF 77CB +98F0 58F2 +98F1 7818 +98F2 70B9 +98F3 781C +98F4 40A8 +98F5 7839 +98F6 7847 +98F7 7851 +98F8 7866 +98F9 8448 +98FA 25535 +98FB 7933 +98FC 6803 +98FD 7932 +98FE 4103 +9940 4109 +9941 7991 +9942 7999 +9943 8FBB +9944 7A06 +9945 8FBC +9946 4167 +9947 7A91 +9948 41B2 +9949 7ABC +994A 8279 +994B 41C4 +994C 7ACF +994D 7ADB +994E 41CF +994F 4E21 +9950 7B62 +9951 7B6C +9952 7B7B +9953 7C12 +9954 7C1B +9955 4260 +9956 427A +9957 7C7B +9958 7C9C +9959 428C +995A 7CB8 +995B 4294 +995C 7CED +995D 8F93 +995E 70C0 +995F 20CCF +9960 7DCF +9961 7DD4 +9962 7DD0 +9963 7DFD +9964 7FAE +9965 7FB4 +9966 729F +9967 4397 +9968 8020 +9969 8025 +996A 7B39 +996B 802E +996C 8031 +996D 8054 +996E 3DCC +996F 57B4 +9970 70A0 +9971 80B7 +9972 80E9 +9973 43ED +9974 810C +9975 732A +9976 810E +9977 8112 +9978 7560 +9979 8114 +997A 4401 +997B 3B39 +997C 8156 +997D 8159 +997E 815A +99A1 4413 +99A2 583A +99A3 817C +99A4 8184 +99A5 4425 +99A6 8193 +99A7 442D +99A8 81A5 +99A9 57EF +99AA 81C1 +99AB 81E4 +99AC 8254 +99AD 448F +99AE 82A6 +99AF 8276 +99B0 82CA +99B1 82D8 +99B2 82FF +99B3 44B0 +99B4 8357 +99B5 9669 +99B6 698A +99B7 8405 +99B8 70F5 +99B9 8464 +99BA 60E3 +99BB 8488 +99BC 4504 +99BD 84BE +99BE 84E1 +99BF 84F8 +99C0 8510 +99C1 8538 +99C2 8552 +99C3 453B +99C4 856F +99C5 8570 +99C6 85E0 +99C7 4577 +99C8 8672 +99C9 8692 +99CA 86B2 +99CB 86EF +99CC 9645 +99CD 878B +99CE 4606 +99CF 4617 +99D0 88AE +99D1 88FF +99D2 8924 +99D3 8947 +99D4 8991 +99D5 27967 +99D6 8A29 +99D7 8A38 +99D8 8A94 +99D9 8AB4 +99DA 8C51 +99DB 8CD4 +99DC 8CF2 +99DD 8D1C +99DE 4798 +99DF 585F +99E0 8DC3 +99E1 47ED +99E2 4EEE +99E3 8E3A +99E4 55D8 +99E5 5754 +99E6 8E71 +99E7 55F5 +99E8 8EB0 +99E9 4837 +99EA 8ECE +99EB 8EE2 +99EC 8EE4 +99ED 8EED +99EE 8EF2 +99EF 8FB7 +99F0 8FC1 +99F1 8FCA +99F2 8FCC +99F3 9033 +99F4 99C4 +99F5 48AD +99F6 98E0 +99F7 9213 +99F8 491E +99F9 9228 +99FA 9258 +99FB 926B +99FC 92B1 +99FD 92AE +99FE 92BF +9A40 92E3 +9A41 92EB +9A42 92F3 +9A43 92F4 +9A44 92FD +9A45 9343 +9A46 9384 +9A47 93AD +9A48 4945 +9A49 4951 +9A4A 9EBF +9A4B 9417 +9A4C 5301 +9A4D 941D +9A4E 942D +9A4F 943E +9A50 496A +9A51 9454 +9A52 9479 +9A53 952D +9A54 95A2 +9A55 49A7 +9A56 95F4 +9A57 9633 +9A58 49E5 +9A59 67A0 +9A5A 4A24 +9A5B 9740 +9A5C 4A35 +9A5D 97B2 +9A5E 97C2 +9A5F 5654 +9A60 4AE4 +9A61 60E8 +9A62 98B9 +9A63 4B19 +9A64 98F1 +9A65 5844 +9A66 990E +9A67 9919 +9A68 51B4 +9A69 991C +9A6A 9937 +9A6B 9942 +9A6C 995D +9A6D 9962 +9A6E 4B70 +9A6F 99C5 +9A70 4B9D +9A71 9A3C +9A72 9B0F +9A73 7A83 +9A74 9B69 +9A75 9B81 +9A76 9BDD +9A77 9BF1 +9A78 9BF4 +9A79 4C6D +9A7A 9C20 +9A7B 376F +9A7C 21BC2 +9A7D 9D49 +9A7E 9C3A +9AA1 9EFE +9AA2 5650 +9AA3 9D93 +9AA4 9DBD +9AA5 9DC0 +9AA6 9DFC +9AA7 94F6 +9AA8 8FB6 +9AA9 9E7B +9AAA 9EAC +9AAB 9EB1 +9AAC 9EBD +9AAD 9EC6 +9AAE 94DC +9AAF 9EE2 +9AB0 9EF1 +9AB1 9EF8 +9AB2 7AC8 +9AB3 9F44 +9AB4 20094 +9AB5 202B7 +9AB6 203A0 +9AB7 691A +9AB8 94C3 +9AB9 59AC +9ABA 204D7 +9ABB 5840 +9ABC 94C1 +9ABD 37B9 +9ABE 205D5 +9ABF 20615 +9AC0 20676 +9AC1 216BA +9AC2 5757 +9AC3 7173 +9AC4 20AC2 +9AC5 20ACD +9AC6 20BBF +9AC7 546A +9AC8 2F83B +9AC9 20BCB +9ACA 549E +9ACB 20BFB +9ACC 20C3B +9ACD 20C53 +9ACE 20C65 +9ACF 20C7C +9AD0 60E7 +9AD1 20C8D +9AD2 567A +9AD3 20CB5 +9AD4 20CDD +9AD5 20CED +9AD6 20D6F +9AD7 20DB2 +9AD8 20DC8 +9AD9 6955 +9ADA 9C2F +9ADB 87A5 +9ADC 20E04 +9ADD 20E0E +9ADE 20ED7 +9ADF 20F90 +9AE0 20F2D +9AE1 20E73 +9AE2 5C20 +9AE3 20FBC +9AE4 5E0B +9AE5 2105C +9AE6 2104F +9AE7 21076 +9AE8 671E +9AE9 2107B +9AEA 21088 +9AEB 21096 +9AEC 3647 +9AED 210BF +9AEE 210D3 +9AEF 2112F +9AF0 2113B +9AF1 5364 +9AF2 84AD +9AF3 212E3 +9AF4 21375 +9AF5 21336 +9AF6 8B81 +9AF7 21577 +9AF8 21619 +9AF9 217C3 +9AFA 217C7 +9AFB 4E78 +9AFC 70BB +9AFD 2182D +9AFE 2196A +9B40 21A2D +9B41 21A45 +9B42 21C2A +9B43 21C70 +9B44 21CAC +9B45 21EC8 +9B46 62C3 +9B47 21ED5 +9B48 21F15 +9B49 7198 +9B4A 6855 +9B4B 22045 +9B4C 69E9 +9B4D 36C8 +9B4E 2227C +9B4F 223D7 +9B50 223FA +9B51 2272A +9B52 22871 +9B53 2294F +9B54 82FD +9B55 22967 +9B56 22993 +9B57 22AD5 +9B58 89A5 +9B59 22AE8 +9B5A 8FA0 +9B5B 22B0E +9B5C 97B8 +9B5D 22B3F +9B5E 9847 +9B5F 9ABD +9B60 22C4C +9B62 22C88 +9B63 22CB7 +9B64 25BE8 +9B65 22D08 +9B66 22D12 +9B67 22DB7 +9B68 22D95 +9B69 22E42 +9B6A 22F74 +9B6B 22FCC +9B6C 23033 +9B6D 23066 +9B6E 2331F +9B6F 233DE +9B70 5FB1 +9B71 6648 +9B72 66BF +9B73 27A79 +9B74 23567 +9B75 235F3 +9B77 249BA +9B79 2361A +9B7A 23716 +9B7C 20346 +9B7D 58B5 +9B7E 670E +9BA1 6918 +9BA2 23AA7 +9BA3 27657 +9BA4 25FE2 +9BA5 23E11 +9BA6 23EB9 +9BA7 275FE +9BA8 2209A +9BA9 48D0 +9BAA 4AB8 +9BAB 24119 +9BAC 28A9A +9BAD 242EE +9BAE 2430D +9BAF 2403B +9BB0 24334 +9BB1 24396 +9BB2 24A45 +9BB3 205CA +9BB4 51D2 +9BB5 20611 +9BB6 599F +9BB7 21EA8 +9BB8 3BBE +9BB9 23CFF +9BBA 24404 +9BBB 244D6 +9BBC 5788 +9BBD 24674 +9BBE 399B +9BBF 2472F +9BC0 285E8 +9BC1 299C9 +9BC2 3762 +9BC3 221C3 +9BC4 8B5E +9BC5 28B4E +9BC7 24812 +9BC8 248FB +9BC9 24A15 +9BCA 7209 +9BCB 24AC0 +9BCC 20C78 +9BCD 5965 +9BCE 24EA5 +9BCF 24F86 +9BD0 20779 +9BD1 8EDA +9BD2 2502C +9BD3 528F +9BD4 573F +9BD5 7171 +9BD6 25299 +9BD7 25419 +9BD8 23F4A +9BD9 24AA7 +9BDA 55BC +9BDB 25446 +9BDC 2546E +9BDD 26B52 +9BDF 3473 +9BE0 2553F +9BE1 27632 +9BE2 2555E +9BE3 4718 +9BE4 25562 +9BE5 25566 +9BE6 257C7 +9BE7 2493F +9BE8 2585D +9BE9 5066 +9BEA 34FB +9BEB 233CC +9BED 25903 +9BEE 477C +9BEF 28948 +9BF0 25AAE +9BF1 25B89 +9BF2 25C06 +9BF3 21D90 +9BF4 57A1 +9BF5 7151 +9BF7 26102 +9BF8 27C12 +9BF9 9056 +9BFA 261B2 +9BFB 24F9A +9BFC 8B62 +9BFD 26402 +9BFE 2644A +9C40 5D5B +9C41 26BF7 +9C43 26484 +9C44 2191C +9C45 8AEA +9C46 249F6 +9C47 26488 +9C48 23FEF +9C49 26512 +9C4A 4BC0 +9C4B 265BF +9C4C 266B5 +9C4D 2271B +9C4E 9465 +9C4F 257E1 +9C50 6195 +9C51 5A27 +9C52 2F8CD +9C54 56B9 +9C55 24521 +9C56 266FC +9C57 4E6A +9C58 24934 +9C59 9656 +9C5A 6D8F +9C5B 26CBD +9C5C 3618 +9C5D 8977 +9C5E 26799 +9C5F 2686E +9C60 26411 +9C61 2685E +9C63 268C7 +9C64 7B42 +9C65 290C0 +9C66 20A11 +9C67 26926 +9C69 26939 +9C6A 7A45 +9C6C 269FA +9C6D 9A26 +9C6E 26A2D +9C6F 365F +9C70 26469 +9C71 20021 +9C72 7983 +9C73 26A34 +9C74 26B5B +9C75 5D2C +9C76 23519 +9C78 26B9D +9C79 46D0 +9C7A 26CA4 +9C7B 753B +9C7C 8865 +9C7D 26DAE +9C7E 58B6 +9CA1 371C +9CA2 2258D +9CA3 2704B +9CA4 271CD +9CA5 3C54 +9CA6 27280 +9CA7 27285 +9CA8 9281 +9CA9 2217A +9CAA 2728B +9CAB 9330 +9CAC 272E6 +9CAD 249D0 +9CAE 6C39 +9CAF 949F +9CB0 27450 +9CB1 20EF8 +9CB2 8827 +9CB3 88F5 +9CB4 22926 +9CB5 28473 +9CB6 217B1 +9CB7 6EB8 +9CB8 24A2A +9CB9 21820 +9CBA 39A4 +9CBB 36B9 +9CBE 453F +9CBF 66B6 +9CC0 29CAD +9CC1 298A4 +9CC2 8943 +9CC3 277CC +9CC4 27858 +9CC5 56D6 +9CC6 40DF +9CC7 2160A +9CC8 39A1 +9CC9 2372F +9CCA 280E8 +9CCB 213C5 +9CCC 71AD +9CCD 8366 +9CCE 279DD +9CCF 291A8 +9CD1 4CB7 +9CD2 270AF +9CD3 289AB +9CD4 279FD +9CD5 27A0A +9CD6 27B0B +9CD7 27D66 +9CD8 2417A +9CD9 7B43 +9CDA 797E +9CDB 28009 +9CDC 6FB5 +9CDD 2A2DF +9CDE 6A03 +9CDF 28318 +9CE0 53A2 +9CE1 26E07 +9CE2 93BF +9CE3 6836 +9CE4 975D +9CE5 2816F +9CE6 28023 +9CE7 269B5 +9CE8 213ED +9CE9 2322F +9CEA 28048 +9CEB 5D85 +9CEC 28C30 +9CED 28083 +9CEE 5715 +9CEF 9823 +9CF0 28949 +9CF1 5DAB +9CF2 24988 +9CF3 65BE +9CF4 69D5 +9CF5 53D2 +9CF6 24AA5 +9CF7 23F81 +9CF8 3C11 +9CF9 6736 +9CFA 28090 +9CFB 280F4 +9CFC 2812E +9CFD 21FA1 +9CFE 2814F +9D40 28189 +9D41 281AF +9D42 2821A +9D43 28306 +9D44 2832F +9D45 2838A +9D46 35CA +9D47 28468 +9D48 286AA +9D49 48FA +9D4A 63E6 +9D4B 28956 +9D4C 7808 +9D4D 9255 +9D4E 289B8 +9D4F 43F2 +9D50 289E7 +9D51 43DF +9D52 289E8 +9D53 28B46 +9D54 28BD4 +9D55 59F8 +9D56 28C09 +9D58 28FC5 +9D59 290EC +9D5B 29110 +9D5C 2913C +9D5D 3DF7 +9D5E 2915E +9D5F 24ACA +9D60 8FD0 +9D61 728F +9D62 568B +9D63 294E7 +9D64 295E9 +9D65 295B0 +9D66 295B8 +9D67 29732 +9D68 298D1 +9D69 29949 +9D6A 2996A +9D6B 299C3 +9D6C 29A28 +9D6D 29B0E +9D6E 29D5A +9D6F 29D9B +9D70 7E9F +9D71 29EF8 +9D72 29F23 +9D73 4CA4 +9D74 9547 +9D75 2A293 +9D76 71A2 +9D77 2A2FF +9D78 4D91 +9D79 9012 +9D7A 2A5CB +9D7B 4D9C +9D7C 20C9C +9D7D 8FBE +9D7E 55C1 +9DA1 8FBA +9DA2 224B0 +9DA3 8FB9 +9DA4 24A93 +9DA5 4509 +9DA6 7E7F +9DA7 6F56 +9DA8 6AB1 +9DA9 4EEA +9DAA 34E4 +9DAB 28B2C +9DAC 2789D +9DAD 373A +9DAE 8E80 +9DAF 217F5 +9DB0 28024 +9DB1 28B6C +9DB2 28B99 +9DB3 27A3E +9DB4 266AF +9DB5 3DEB +9DB6 27655 +9DB7 23CB7 +9DB8 25635 +9DB9 25956 +9DBA 4E9A +9DBB 25E81 +9DBC 26258 +9DBD 56BF +9DBE 20E6D +9DBF 8E0E +9DC0 5B6D +9DC1 23E88 +9DC2 24C9E +9DC3 63DE +9DC5 217F6 +9DC6 2187B +9DC7 6530 +9DC8 562D +9DC9 25C4A +9DCA 541A +9DCB 25311 +9DCC 3DC6 +9DCD 29D98 +9DCE 4C7D +9DCF 5622 +9DD0 561E +9DD1 7F49 +9DD2 25ED8 +9DD3 5975 +9DD4 23D40 +9DD5 8770 +9DD6 4E1C +9DD7 20FEA +9DD8 20D49 +9DD9 236BA +9DDA 8117 +9DDB 9D5E +9DDC 8D18 +9DDD 763B +9DDE 9C45 +9DDF 764E +9DE0 77B9 +9DE1 9345 +9DE2 5432 +9DE3 8148 +9DE4 82F7 +9DE5 5625 +9DE6 8132 +9DE7 8418 +9DE8 80BD +9DE9 55EA +9DEA 7962 +9DEB 5643 +9DEC 5416 +9DED 20E9D +9DEE 35CE +9DEF 5605 +9DF0 55F1 +9DF1 66F1 +9DF2 282E2 +9DF3 362D +9DF4 7534 +9DF5 55F0 +9DF6 55BA +9DF7 5497 +9DF8 5572 +9DF9 20C41 +9DFA 20C96 +9DFB 5ED0 +9DFC 25148 +9DFD 20E76 +9DFE 22C62 +9E40 20EA2 +9E41 9EAB +9E42 7D5A +9E43 55DE +9E44 21075 +9E45 629D +9E46 976D +9E47 5494 +9E48 8CCD +9E49 71F6 +9E4A 9176 +9E4B 63FC +9E4C 63B9 +9E4D 63FE +9E4E 5569 +9E4F 22B43 +9E50 9C72 +9E51 22EB3 +9E52 519A +9E53 34DF +9E54 20DA7 +9E55 51A7 +9E56 544D +9E57 551E +9E58 5513 +9E59 7666 +9E5A 8E2D +9E5B 2688A +9E5C 75B1 +9E5D 80B6 +9E5E 8804 +9E5F 8786 +9E60 88C7 +9E61 81B6 +9E62 841C +9E63 210C1 +9E64 44EC +9E65 7304 +9E66 24706 +9E67 5B90 +9E68 830B +9E69 26893 +9E6A 567B +9E6B 226F4 +9E6C 27D2F +9E6D 241A3 +9E6E 27D73 +9E6F 26ED0 +9E70 272B6 +9E71 9170 +9E72 211D9 +9E73 9208 +9E74 23CFC +9E75 2A6A9 +9E76 20EAC +9E77 20EF9 +9E78 7266 +9E79 21CA2 +9E7A 474E +9E7B 24FC2 +9E7C 27FF9 +9E7D 20FEB +9E7E 40FA +9EA1 9C5D +9EA2 651F +9EA3 22DA0 +9EA4 48F3 +9EA5 247E0 +9EA6 29D7C +9EA7 20FEC +9EA8 20E0A +9EAA 275A3 +9EAB 20FED +9EAD 26048 +9EAE 21187 +9EAF 71A3 +9EB0 7E8E +9EB1 9D50 +9EB2 4E1A +9EB3 4E04 +9EB4 3577 +9EB5 5B0D +9EB6 6CB2 +9EB7 5367 +9EB8 36AC +9EB9 39DC +9EBA 537D +9EBB 36A5 +9EBC 24618 +9EBD 589A +9EBE 24B6E +9EBF 822D +9EC0 544B +9EC1 57AA +9EC2 25A95 +9EC3 20979 +9EC5 3A52 +9EC6 22465 +9EC7 7374 +9EC8 29EAC +9EC9 4D09 +9ECA 9BED +9ECB 23CFE +9ECC 29F30 +9ECD 4C5B +9ECE 24FA9 +9ECF 2959E +9ED0 29FDE +9ED1 845C +9ED2 23DB6 +9ED3 272B2 +9ED4 267B3 +9ED5 23720 +9ED6 632E +9ED7 7D25 +9ED8 23EF7 +9ED9 23E2C +9EDA 3A2A +9EDB 9008 +9EDC 52CC +9EDD 3E74 +9EDE 367A +9EDF 45E9 +9EE0 2048E +9EE1 7640 +9EE2 5AF0 +9EE3 20EB6 +9EE4 787A +9EE5 27F2E +9EE6 58A7 +9EE7 40BF +9EE8 567C +9EE9 9B8B +9EEA 5D74 +9EEB 7654 +9EEC 2A434 +9EED 9E85 +9EEE 4CE1 +9EF0 37FB +9EF1 6119 +9EF2 230DA +9EF3 243F2 +9EF5 565D +9EF6 212A9 +9EF7 57A7 +9EF8 24963 +9EF9 29E06 +9EFA 5234 +9EFB 270AE +9EFC 35AD +9EFE 9D7C +9F40 7C56 +9F41 9B39 +9F42 57DE +9F43 2176C +9F44 5C53 +9F45 64D3 +9F46 294D0 +9F47 26335 +9F48 27164 +9F49 86AD +9F4A 20D28 +9F4B 26D22 +9F4C 24AE2 +9F4D 20D71 +9F4F 51FE +9F50 21F0F +9F51 5D8E +9F52 9703 +9F53 21DD1 +9F54 9E81 +9F55 904C +9F56 7B1F +9F57 9B02 +9F58 5CD1 +9F59 7BA3 +9F5A 6268 +9F5B 6335 +9F5C 9AFF +9F5D 7BCF +9F5E 9B2A +9F5F 7C7E +9F61 7C42 +9F62 7C86 +9F63 9C15 +9F64 7BFC +9F65 9B09 +9F67 9C1B +9F68 2493E +9F69 9F5A +9F6A 5573 +9F6B 5BC3 +9F6C 4FFD +9F6D 9E98 +9F6E 4FF2 +9F6F 5260 +9F70 3E06 +9F71 52D1 +9F72 5767 +9F73 5056 +9F74 59B7 +9F75 5E12 +9F76 97C8 +9F77 9DAB +9F78 8F5C +9F79 5469 +9F7A 97B4 +9F7B 9940 +9F7C 97BA +9F7D 532C +9F7E 6130 +9FA1 692C +9FA2 53DA +9FA3 9C0A +9FA4 9D02 +9FA5 4C3B +9FA6 9641 +9FA7 6980 +9FA8 50A6 +9FA9 7546 +9FAA 2176D +9FAB 99DA +9FAC 5273 +9FAE 9159 +9FAF 9681 +9FB0 915C +9FB2 9151 +9FB3 28E97 +9FB4 637F +9FB5 26D23 +9FB6 6ACA +9FB7 5611 +9FB8 918E +9FB9 757A +9FBA 6285 +9FBB 203FC +9FBC 734F +9FBD 7C70 +9FBE 25C21 +9FBF 23CFD +9FC1 24919 +9FC2 76D6 +9FC3 9B9D +9FC4 4E2A +9FC5 20CD4 +9FC6 83BE +9FC7 8842 +9FC9 5C4A +9FCA 69C0 +9FCC 577A +9FCD 521F +9FCE 5DF5 +9FCF 4ECE +9FD0 6C31 +9FD1 201F2 +9FD2 4F39 +9FD3 549C +9FD4 54DA +9FD5 529A +9FD6 8D82 +9FD7 35FE +9FD9 35F3 +9FDB 6B52 +9FDC 917C +9FDD 9FA5 +9FDE 9B97 +9FDF 982E +9FE0 98B4 +9FE1 9ABA +9FE2 9EA8 +9FE3 9E84 +9FE4 717A +9FE5 7B14 +9FE7 6BFA +9FE8 8818 +9FE9 7F78 +9FEB 5620 +9FEC 2A64A +9FED 8E77 +9FEE 9F53 +9FF0 8DD4 +9FF1 8E4F +9FF2 9E1C +9FF3 8E01 +9FF4 6282 +9FF5 2837D +9FF6 8E28 +9FF7 8E75 +9FF8 7AD3 +9FF9 24A77 +9FFA 7A3E +9FFB 78D8 +9FFC 6CEA +9FFD 8A67 +9FFE 7607 +A040 28A5A +A041 9F26 +A042 6CCE +A043 87D6 +A044 75C3 +A045 2A2B2 +A046 7853 +A047 2F840 +A048 8D0C +A049 72E2 +A04A 7371 +A04B 8B2D +A04C 7302 +A04D 74F1 +A04E 8CEB +A04F 24ABB +A050 862F +A051 5FBA +A052 88A0 +A053 44B7 +A055 2183B +A056 26E05 +A058 8A7E +A059 2251B +A05B 60FD +A05C 7667 +A05D 9AD7 +A05E 9D44 +A05F 936E +A060 9B8F +A061 87F5 +A064 8CF7 +A065 732C +A066 9721 +A067 9BB0 +A068 35D6 +A069 72B2 +A06A 4C07 +A06B 7C51 +A06C 994A +A06D 26159 +A06E 6159 +A06F 4C04 +A070 9E96 +A071 617D +A073 575F +A074 616F +A075 62A6 +A076 6239 +A078 3A5C +A079 61E2 +A07A 53AA +A07B 233F5 +A07C 6364 +A07D 6802 +A07E 35D2 +A0A1 5D57 +A0A2 28BC2 +A0A3 8FDA +A0A4 28E39 +A0A6 50D9 +A0A7 21D46 +A0A8 7906 +A0A9 5332 +A0AA 9638 +A0AB 20F3B +A0AC 4065 +A0AE 77FE +A0B0 7CC2 +A0B1 25F1A +A0B2 7CDA +A0B3 7A2D +A0B4 8066 +A0B5 8063 +A0B6 7D4D +A0B7 7505 +A0B8 74F2 +A0B9 8994 +A0BA 821A +A0BB 670C +A0BC 8062 +A0BD 27486 +A0BE 805B +A0BF 74F0 +A0C0 8103 +A0C1 7724 +A0C2 8989 +A0C3 267CC +A0C4 7553 +A0C5 26ED1 +A0C6 87A9 +A0C7 87CE +A0C8 81C8 +A0C9 878C +A0CA 8A49 +A0CB 8CAD +A0CC 8B43 +A0CD 772B +A0CE 74F8 +A0CF 84DA +A0D0 3635 +A0D1 69B2 +A0D2 8DA6 +A0D4 89A9 +A0D6 6DB9 +A0D7 87C1 +A0D8 24011 +A0D9 74E7 +A0DA 3DDB +A0DB 7176 +A0DC 60A4 +A0DD 619C +A0DE 3CD1 +A0E0 6077 +A0E2 7F71 +A0E3 28B2D +A0E5 60E9 +A0E6 4B7E +A0E7 5220 +A0E8 3C18 +A0E9 23CC7 +A0EA 25ED7 +A0EB 27656 +A0EC 25531 +A0ED 21944 +A0EE 212FE +A0EF 29903 +A0F0 26DDC +A0F1 270AD +A0F2 5CC1 +A0F3 261AD +A0F4 28A0F +A0F5 23677 +A0F6 200EE +A0F7 26846 +A0F8 24F0E +A0F9 4562 +A0FA 5B1F +A0FB 2634C +A0FC 9F50 +A0FD 9EA6 +A0FE 2626B +C6A1 2460 +C6A2 2461 +C6A3 2462 +C6A4 2463 +C6A5 2464 +C6A6 2465 +C6A7 2466 +C6A8 2467 +C6A9 2468 +C6AA 2469 +C6AB 2474 +C6AC 2475 +C6AD 2476 +C6AE 2477 +C6AF 2478 +C6B0 2479 +C6B1 247A +C6B2 247B +C6B3 247C +C6B4 247D +C6B5 2170 +C6B6 2171 +C6B7 2172 +C6B8 2173 +C6B9 2174 +C6BA 2175 +C6BB 2176 +C6BC 2177 +C6BD 2178 +C6BE 2179 +C6BF 4E36 +C6C0 4E3F +C6C1 4E85 +C6C2 4EA0 +C6C3 5182 +C6C4 5196 +C6C5 51AB +C6C6 52F9 +C6C7 5338 +C6C8 5369 +C6C9 53B6 +C6CA 590A +C6CB 5B80 +C6CC 5DDB +C6CD 2F33 +C6CE 5E7F +C6D0 5F50 +C6D1 5F61 +C6D2 6534 +C6D4 7592 +C6D6 8FB5 +C6D8 00A8 +C6D9 02C6 +C6DA 30FD +C6DB 30FE +C6DC 309D +C6DD 309E +C6E0 3005 +C6E1 3006 +C6E2 3007 +C6E3 30FC +C6E4 FF3B +C6E5 FF3D +C6E6 273D +C6E7 3041 +C6E8 3042 +C6E9 3043 +C6EA 3044 +C6EB 3045 +C6EC 3046 +C6ED 3047 +C6EE 3048 +C6EF 3049 +C6F0 304A +C6F1 304B +C6F2 304C +C6F3 304D +C6F4 304E +C6F5 304F +C6F6 3050 +C6F7 3051 +C6F8 3052 +C6F9 3053 +C6FA 3054 +C6FB 3055 +C6FC 3056 +C6FD 3057 +C6FE 3058 +C740 3059 +C741 305A +C742 305B +C743 305C +C744 305D +C745 305E +C746 305F +C747 3060 +C748 3061 +C749 3062 +C74A 3063 +C74B 3064 +C74C 3065 +C74D 3066 +C74E 3067 +C74F 3068 +C750 3069 +C751 306A +C752 306B +C753 306C +C754 306D +C755 306E +C756 306F +C757 3070 +C758 3071 +C759 3072 +C75A 3073 +C75B 3074 +C75C 3075 +C75D 3076 +C75E 3077 +C75F 3078 +C760 3079 +C761 307A +C762 307B +C763 307C +C764 307D +C765 307E +C766 307F +C767 3080 +C768 3081 +C769 3082 +C76A 3083 +C76B 3084 +C76C 3085 +C76D 3086 +C76E 3087 +C76F 3088 +C770 3089 +C771 308A +C772 308B +C773 308C +C774 308D +C775 308E +C776 308F +C777 3090 +C778 3091 +C779 3092 +C77A 3093 +C77B 30A1 +C77C 30A2 +C77D 30A3 +C77E 30A4 +C7A1 30A5 +C7A2 30A6 +C7A3 30A7 +C7A4 30A8 +C7A5 30A9 +C7A6 30AA +C7A7 30AB +C7A8 30AC +C7A9 30AD +C7AA 30AE +C7AB 30AF +C7AC 30B0 +C7AD 30B1 +C7AE 30B2 +C7AF 30B3 +C7B0 30B4 +C7B1 30B5 +C7B2 30B6 +C7B3 30B7 +C7B4 30B8 +C7B5 30B9 +C7B6 30BA +C7B7 30BB +C7B8 30BC +C7B9 30BD +C7BA 30BE +C7BB 30BF +C7BC 30C0 +C7BD 30C1 +C7BE 30C2 +C7BF 30C3 +C7C0 30C4 +C7C1 30C5 +C7C2 30C6 +C7C3 30C7 +C7C4 30C8 +C7C5 30C9 +C7C6 30CA +C7C7 30CB +C7C8 30CC +C7C9 30CD +C7CA 30CE +C7CB 30CF +C7CC 30D0 +C7CD 30D1 +C7CE 30D2 +C7CF 30D3 +C7D0 30D4 +C7D1 30D5 +C7D2 30D6 +C7D3 30D7 +C7D4 30D8 +C7D5 30D9 +C7D6 30DA +C7D7 30DB +C7D8 30DC +C7D9 30DD +C7DA 30DE +C7DB 30DF +C7DC 30E0 +C7DD 30E1 +C7DE 30E2 +C7DF 30E3 +C7E0 30E4 +C7E1 30E5 +C7E2 30E6 +C7E3 30E7 +C7E4 30E8 +C7E5 30E9 +C7E6 30EA +C7E7 30EB +C7E8 30EC +C7E9 30ED +C7EA 30EE +C7EB 30EF +C7EC 30F0 +C7ED 30F1 +C7EE 30F2 +C7EF 30F3 +C7F0 30F4 +C7F1 30F5 +C7F2 30F6 +C7F3 0410 +C7F4 0411 +C7F5 0412 +C7F6 0413 +C7F7 0414 +C7F8 0415 +C7F9 0401 +C7FA 0416 +C7FB 0417 +C7FC 0418 +C7FD 0419 +C7FE 041A +C840 041B +C841 041C +C842 041D +C843 041E +C844 041F +C845 0420 +C846 0421 +C847 0422 +C848 0423 +C849 0424 +C84A 0425 +C84B 0426 +C84C 0427 +C84D 0428 +C84E 0429 +C84F 042A +C850 042B +C851 042C +C852 042D +C853 042E +C854 042F +C855 0430 +C856 0431 +C857 0432 +C858 0433 +C859 0434 +C85A 0435 +C85B 0451 +C85C 0436 +C85D 0437 +C85E 0438 +C85F 0439 +C860 043A +C861 043B +C862 043C +C863 043D +C864 043E +C865 043F +C866 0440 +C867 0441 +C868 0442 +C869 0443 +C86A 0444 +C86B 0445 +C86C 0446 +C86D 0447 +C86E 0448 +C86F 0449 +C870 044A +C871 044B +C872 044C +C873 044D +C874 044E +C875 044F +C876 21E7 +C877 21B8 +C878 21B9 +C879 31CF +C87A 200CC +C87B 4E5A +C87C 2008A +C87D 5202 +C87E 4491 +C8A1 9FB0 +C8A2 5188 +C8A3 9FB1 +C8A4 27607 +C8CD FFE2 +C8CE FFE4 +C8CF FF07 +C8D0 FF02 +C8D1 3231 +C8D2 2116 +C8D3 2121 +C8D4 309B +C8D5 309C +C8D6 2E80 +C8D7 2E84 +C8D8 2E86 +C8D9 2E87 +C8DA 2E88 +C8DB 2E8A +C8DC 2E8C +C8DD 2E8D +C8DE 2E95 +C8DF 2E9C +C8E0 2E9D +C8E1 2EA5 +C8E2 2EA7 +C8E3 2EAA +C8E4 2EAC +C8E5 2EAE +C8E6 2EB6 +C8E7 2EBC +C8E8 2EBE +C8E9 2EC6 +C8EA 2ECA +C8EB 2ECC +C8EC 2ECD +C8ED 2ECF +C8EE 2ED6 +C8EF 2ED7 +C8F0 2EDE +C8F1 2EE3 +C8F5 0283 +C8F6 0250 +C8F7 025B +C8F8 0254 +C8F9 0275 +C8FA 0153 +C8FB 00F8 +C8FC 014B +C8FD 028A +C8FE 026A +F9D6 7881 +F9D7 92B9 +F9D8 88CF +F9D9 58BB +F9DA 6052 +F9DB 7CA7 +F9DC 5AFA +F9DD 2554 +F9DE 2566 +F9DF 2557 +F9E0 2560 +F9E1 256C +F9E2 2563 +F9E3 255A +F9E4 2569 +F9E5 255D +F9E6 2552 +F9E7 2564 +F9E8 2555 +F9E9 255E +F9EA 256A +F9EB 2561 +F9EC 2558 +F9ED 2567 +F9EE 255B +F9EF 2553 +F9F0 2565 +F9F1 2556 +F9F2 255F +F9F3 256B +F9F4 2562 +F9F5 2559 +F9F6 2568 +F9F7 255C +F9F8 2551 +F9F9 2550 +F9FA 256D +F9FB 256E +F9FC 2570 +F9FD 256F +F9FE FFED +FA40 20547 +FA41 92DB +FA42 205DF +FA43 23FC5 +FA44 854C +FA45 42B5 +FA46 73EF +FA47 51B5 +FA48 3649 +FA49 24942 +FA4A 289E4 +FA4B 9344 +FA4C 219DB +FA4D 82EE +FA4E 23CC8 +FA4F 783C +FA50 6744 +FA51 62DF +FA52 24933 +FA53 289AA +FA54 202A0 +FA55 26BB3 +FA56 21305 +FA57 4FAB +FA58 224ED +FA59 5008 +FA5A 26D29 +FA5B 27A84 +FA5C 23600 +FA5D 24AB1 +FA5E 22513 +FA60 2037E +FA61 5FA4 +FA62 20380 +FA63 20347 +FA64 6EDB +FA65 2041F +FA67 5101 +FA68 347A +FA69 510E +FA6A 986C +FA6B 3743 +FA6C 8416 +FA6D 249A4 +FA6E 20487 +FA6F 5160 +FA70 233B4 +FA71 516A +FA72 20BFF +FA73 220FC +FA74 202E5 +FA75 22530 +FA76 2058E +FA77 23233 +FA78 21983 +FA79 5B82 +FA7A 877D +FA7B 205B3 +FA7C 23C99 +FA7D 51B2 +FA7E 51B8 +FAA1 9D34 +FAA2 51C9 +FAA3 51CF +FAA4 51D1 +FAA5 3CDC +FAA6 51D3 +FAA7 24AA6 +FAA8 51B3 +FAA9 51E2 +FAAA 5342 +FAAB 51ED +FAAC 83CD +FAAD 693E +FAAE 2372D +FAAF 5F7B +FAB0 520B +FAB1 5226 +FAB2 523C +FAB3 52B5 +FAB4 5257 +FAB5 5294 +FAB6 52B9 +FAB7 52C5 +FAB8 7C15 +FAB9 8542 +FABA 52E0 +FABB 860D +FABC 26B13 +FABE 28ADE +FABF 5549 +FAC0 6ED9 +FAC1 23F80 +FAC2 20954 +FAC3 23FEC +FAC4 5333 +FAC6 20BE2 +FAC7 6CCB +FAC8 21726 +FAC9 681B +FACA 73D5 +FACB 604A +FACC 3EAA +FACD 38CC +FACE 216E8 +FACF 71DD +FAD0 44A2 +FAD1 536D +FAD2 5374 +FAD3 286AB +FAD4 537E +FAD6 21596 +FAD7 21613 +FAD8 77E6 +FAD9 5393 +FADA 28A9B +FADB 53A0 +FADC 53AB +FADD 53AE +FADE 73A7 +FADF 25772 +FAE0 3F59 +FAE1 739C +FAE2 53C1 +FAE3 53C5 +FAE4 6C49 +FAE5 4E49 +FAE6 57FE +FAE7 53D9 +FAE8 3AAB +FAE9 20B8F +FAEA 53E0 +FAEB 23FEB +FAEC 22DA3 +FAED 53F6 +FAEE 20C77 +FAEF 5413 +FAF0 7079 +FAF1 552B +FAF2 6657 +FAF3 6D5B +FAF4 546D +FAF5 26B53 +FAF6 20D74 +FAF7 555D +FAF8 548F +FAF9 54A4 +FAFA 47A6 +FAFB 2170D +FAFC 20EDD +FAFD 3DB4 +FAFE 20D4D +FB40 289BC +FB41 22698 +FB42 5547 +FB43 4CED +FB44 542F +FB45 7417 +FB46 5586 +FB47 55A9 +FB49 218D7 +FB4A 2403A +FB4B 4552 +FB4C 24435 +FB4D 66B3 +FB4E 210B4 +FB4F 5637 +FB50 66CD +FB51 2328A +FB52 66A4 +FB53 66AD +FB54 564D +FB55 564F +FB56 78F1 +FB57 56F1 +FB58 9787 +FB59 53FE +FB5A 5700 +FB5B 56EF +FB5C 56ED +FB5D 28B66 +FB5E 3623 +FB5F 2124F +FB60 5746 +FB61 241A5 +FB62 6C6E +FB63 708B +FB64 5742 +FB65 36B1 +FB66 26C7E +FB67 57E6 +FB68 21416 +FB69 5803 +FB6A 21454 +FB6B 24363 +FB6C 5826 +FB6D 24BF5 +FB6E 585C +FB6F 58AA +FB70 3561 +FB71 58E0 +FB72 58DC +FB73 2123C +FB74 58FB +FB75 5BFF +FB76 5743 +FB77 2A150 +FB78 24278 +FB79 93D3 +FB7A 35A1 +FB7B 591F +FB7C 68A6 +FB7D 36C3 +FB7E 6E59 +FBA1 2163E +FBA2 5A24 +FBA3 5553 +FBA4 21692 +FBA5 8505 +FBA6 59C9 +FBA7 20D4E +FBA8 26C81 +FBA9 26D2A +FBAA 217DC +FBAB 59D9 +FBAC 217FB +FBAD 217B2 +FBAE 26DA6 +FBAF 6D71 +FBB0 21828 +FBB1 216D5 +FBB2 59F9 +FBB3 26E45 +FBB4 5AAB +FBB5 5A63 +FBB6 36E6 +FBB7 249A9 +FBB9 3708 +FBBA 5A96 +FBBB 7465 +FBBC 5AD3 +FBBD 26FA1 +FBBE 22554 +FBBF 3D85 +FBC0 21911 +FBC1 3732 +FBC2 216B8 +FBC3 5E83 +FBC4 52D0 +FBC5 5B76 +FBC6 6588 +FBC7 5B7C +FBC8 27A0E +FBC9 4004 +FBCA 485D +FBCB 20204 +FBCC 5BD5 +FBCD 6160 +FBCE 21A34 +FBCF 259CC +FBD0 205A5 +FBD1 5BF3 +FBD2 5B9D +FBD3 4D10 +FBD4 5C05 +FBD5 21B44 +FBD6 5C13 +FBD7 73CE +FBD8 5C14 +FBD9 21CA5 +FBDA 26B28 +FBDB 5C49 +FBDC 48DD +FBDD 5C85 +FBDE 5CE9 +FBDF 5CEF +FBE0 5D8B +FBE1 21DF9 +FBE2 21E37 +FBE3 5D10 +FBE4 5D18 +FBE5 5D46 +FBE6 21EA4 +FBE7 5CBA +FBE8 5DD7 +FBE9 82FC +FBEA 382D +FBEB 24901 +FBEC 22049 +FBED 22173 +FBEE 8287 +FBEF 3836 +FBF0 3BC2 +FBF1 5E2E +FBF2 6A8A +FBF4 5E7A +FBF5 244BC +FBF6 20CD3 +FBF7 53A6 +FBF8 4EB7 +FBFA 53A8 +FBFB 21771 +FBFC 5E09 +FBFD 5EF4 +FBFE 28482 +FC40 5EF9 +FC41 5EFB +FC42 38A0 +FC43 5EFC +FC44 683E +FC45 941B +FC46 5F0D +FC47 201C1 +FC48 2F894 +FC49 3ADE +FC4A 48AE +FC4B 2133A +FC4C 5F3A +FC4D 26888 +FC4E 223D0 +FC50 22471 +FC51 5F63 +FC52 97BD +FC53 26E6E +FC54 5F72 +FC55 9340 +FC56 28A36 +FC57 5FA7 +FC58 5DB6 +FC59 3D5F +FC5A 25250 +FC5B 21F6A +FC5C 270F8 +FC5D 22668 +FC5E 91D6 +FC5F 2029E +FC60 28A29 +FC61 6031 +FC62 6685 +FC63 21877 +FC64 3963 +FC65 3DC7 +FC66 3639 +FC67 5790 +FC68 227B4 +FC69 7971 +FC6A 3E40 +FC6B 609E +FC6D 60B3 +FC6E 24982 +FC6F 2498F +FC70 27A53 +FC71 74A4 +FC72 50E1 +FC73 5AA0 +FC74 6164 +FC75 8424 +FC76 6142 +FC77 2F8A6 +FC78 26ED2 +FC79 6181 +FC7A 51F4 +FC7B 20656 +FC7C 6187 +FC7D 5BAA +FC7E 23FB7 +FCA1 2285F +FCA2 61D3 +FCA3 28B9D +FCA4 2995D +FCA5 61D0 +FCA6 3932 +FCA7 22980 +FCA8 228C1 +FCA9 6023 +FCAA 615C +FCAB 651E +FCAC 638B +FCAD 20118 +FCAE 62C5 +FCAF 21770 +FCB0 62D5 +FCB1 22E0D +FCB2 636C +FCB3 249DF +FCB4 3A17 +FCB5 6438 +FCB6 63F8 +FCB7 2138E +FCB8 217FC +FCBA 6F8A +FCBB 22E36 +FCBC 9814 +FCBD 2408C +FCBE 2571D +FCBF 64E1 +FCC0 64E5 +FCC1 947B +FCC2 3A66 +FCC3 643A +FCC4 3A57 +FCC5 654D +FCC6 6F16 +FCC7 24A28 +FCC8 24A23 +FCC9 6585 +FCCA 656D +FCCB 655F +FCCC 2307E +FCCD 65B5 +FCCE 24940 +FCCF 4B37 +FCD0 65D1 +FCD1 40D8 +FCD2 21829 +FCD3 65E0 +FCD4 65E3 +FCD5 5FDF +FCD6 23400 +FCD7 6618 +FCD8 231F7 +FCD9 231F8 +FCDA 6644 +FCDB 231A4 +FCDC 231A5 +FCDD 664B +FCDE 20E75 +FCDF 6667 +FCE0 251E6 +FCE1 6673 +FCE3 21E3D +FCE4 23231 +FCE5 285F4 +FCE6 231C8 +FCE7 25313 +FCE8 77C5 +FCE9 228F7 +FCEA 99A4 +FCEB 6702 +FCEC 2439C +FCED 24A21 +FCEE 3B2B +FCEF 69FA +FCF0 237C2 +FCF2 6767 +FCF3 6762 +FCF4 241CD +FCF5 290ED +FCF6 67D7 +FCF7 44E9 +FCF8 6822 +FCF9 6E50 +FCFA 923C +FCFB 6801 +FCFC 233E6 +FCFD 26DA0 +FCFE 685D +FD40 2346F +FD41 69E1 +FD42 6A0B +FD43 28ADF +FD44 6973 +FD45 68C3 +FD46 235CD +FD47 6901 +FD48 6900 +FD49 3D32 +FD4A 3A01 +FD4B 2363C +FD4C 3B80 +FD4D 67AC +FD4E 6961 +FD4F 28A4A +FD50 42FC +FD51 6936 +FD52 6998 +FD53 3BA1 +FD54 203C9 +FD55 8363 +FD56 5090 +FD57 69F9 +FD58 23659 +FD59 2212A +FD5A 6A45 +FD5B 23703 +FD5C 6A9D +FD5D 3BF3 +FD5E 67B1 +FD5F 6AC8 +FD60 2919C +FD61 3C0D +FD62 6B1D +FD63 20923 +FD64 60DE +FD65 6B35 +FD66 6B74 +FD67 227CD +FD68 6EB5 +FD69 23ADB +FD6A 203B5 +FD6B 21958 +FD6C 3740 +FD6D 5421 +FD6E 23B5A +FD6F 6BE1 +FD70 23EFC +FD71 6BDC +FD72 6C37 +FD73 2248B +FD74 248F1 +FD75 26B51 +FD76 6C5A +FD77 8226 +FD78 6C79 +FD79 23DBC +FD7A 44C5 +FD7B 23DBD +FD7C 241A4 +FD7D 2490C +FD7E 24900 +FDA1 23CC9 +FDA2 36E5 +FDA3 3CEB +FDA4 20D32 +FDA5 9B83 +FDA6 231F9 +FDA7 22491 +FDA8 7F8F +FDA9 6837 +FDAA 26D25 +FDAB 26DA1 +FDAC 26DEB +FDAD 6D96 +FDAE 6D5C +FDAF 6E7C +FDB0 6F04 +FDB1 2497F +FDB2 24085 +FDB3 26E72 +FDB4 8533 +FDB5 26F74 +FDB6 51C7 +FDB9 842E +FDBA 28B21 +FDBC 23E2F +FDBD 7453 +FDBE 23F82 +FDBF 79CC +FDC0 6E4F +FDC1 5A91 +FDC2 2304B +FDC3 6FF8 +FDC4 370D +FDC5 6F9D +FDC6 23E30 +FDC7 6EFA +FDC8 21497 +FDC9 2403D +FDCA 4555 +FDCB 93F0 +FDCC 6F44 +FDCD 6F5C +FDCE 3D4E +FDCF 6F74 +FDD0 29170 +FDD1 3D3B +FDD2 6F9F +FDD3 24144 +FDD4 6FD3 +FDD5 24091 +FDD6 24155 +FDD7 24039 +FDD8 23FF0 +FDD9 23FB4 +FDDA 2413F +FDDB 51DF +FDDC 24156 +FDDD 24157 +FDDE 24140 +FDDF 261DD +FDE0 704B +FDE1 707E +FDE2 70A7 +FDE3 7081 +FDE4 70CC +FDE5 70D5 +FDE6 70D6 +FDE7 70DF +FDE8 4104 +FDE9 3DE8 +FDEA 71B4 +FDEB 7196 +FDEC 24277 +FDED 712B +FDEE 7145 +FDEF 5A88 +FDF0 714A +FDF2 5C9C +FDF3 24365 +FDF4 714F +FDF5 9362 +FDF6 242C1 +FDF7 712C +FDF8 2445A +FDF9 24A27 +FDFA 24A22 +FDFB 71BA +FDFC 28BE8 +FDFD 70BD +FDFE 720E +FE40 9442 +FE41 7215 +FE42 5911 +FE43 9443 +FE44 7224 +FE45 9341 +FE46 25605 +FE47 722E +FE48 7240 +FE49 24974 +FE4A 68BD +FE4B 7255 +FE4C 7257 +FE4D 3E55 +FE4E 23044 +FE4F 680D +FE50 6F3D +FE51 7282 +FE53 732B +FE54 24823 +FE55 2882B +FE56 48ED +FE57 28804 +FE58 7328 +FE59 732E +FE5A 73CF +FE5B 73AA +FE5C 20C3A +FE5D 26A2E +FE5E 73C9 +FE5F 7449 +FE60 241E2 +FE61 216E7 +FE62 24A24 +FE63 6623 +FE64 36C5 +FE65 249B7 +FE66 2498D +FE67 249FB +FE68 73F7 +FE69 7415 +FE6A 6903 +FE6B 24A26 +FE6C 7439 +FE6D 205C3 +FE6E 3ED7 +FE70 228AD +FE71 7460 +FE72 28EB2 +FE73 7447 +FE74 73E4 +FE75 7476 +FE76 83B9 +FE77 746C +FE78 3730 +FE79 7474 +FE7A 93F1 +FE7B 6A2C +FE7C 7482 +FE7D 4953 +FE7E 24A8C +FEA1 2415F +FEA2 24A79 +FEA3 28B8F +FEA4 5B46 +FEA5 28C03 +FEA6 2189E +FEA7 74C8 +FEA8 21988 +FEA9 750E +FEAB 751E +FEAC 28ED9 +FEAD 21A4B +FEAE 5BD7 +FEAF 28EAC +FEB0 9385 +FEB1 754D +FEB2 754A +FEB3 7567 +FEB4 756E +FEB5 24F82 +FEB6 3F04 +FEB7 24D13 +FEB8 758E +FEB9 745D +FEBA 759E +FEBB 75B4 +FEBC 7602 +FEBD 762C +FEBE 7651 +FEBF 764F +FEC0 766F +FEC1 7676 +FEC2 263F5 +FEC3 7690 +FEC4 81EF +FEC5 37F8 +FEC6 26911 +FEC7 2690E +FEC8 76A1 +FEC9 76A5 +FECA 76B7 +FECB 76CC +FECC 26F9F +FECD 8462 +FECE 2509D +FECF 2517D +FED0 21E1C +FED1 771E +FED2 7726 +FED3 7740 +FED4 64AF +FED5 25220 +FED6 7758 +FED7 232AC +FED8 77AF +FED9 28964 +FEDA 28968 +FEDB 216C1 +FEDC 77F4 +FEDE 21376 +FEDF 24A12 +FEE0 68CA +FEE1 78AF +FEE2 78C7 +FEE3 78D3 +FEE4 96A5 +FEE5 792E +FEE6 255E0 +FEE7 78D7 +FEE8 7934 +FEE9 78B1 +FEEA 2760C +FEEB 8FB8 +FEEC 8884 +FEED 28B2B +FEEE 26083 +FEEF 2261C +FEF0 7986 +FEF1 8900 +FEF2 6902 +FEF3 7980 +FEF4 25857 +FEF5 799D +FEF6 27B39 +FEF7 793C +FEF8 79A9 +FEF9 6E2A +FEFA 27126 +FEFB 3EA8 +FEFC 79C6 +FEFD 2910D +FEFE 79D4 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS_XP.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS_XP.c2b Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,529 @@ +# Generated from HKSCS.Encoder +# +0xFA45 0xE005 +0xFA48 0xE008 +0xFA68 0xE028 +0xFA6B 0xE02B +0xFAA5 0xE043 +0xFACC 0xE06A +0xFACD 0xE06B +0xFAD0 0xE06E +0xFAE0 0xE07E +0xFAE8 0xE086 +0xFAFA 0xE098 +0xFAFD 0xE09B +0xFB43 0xE0A0 +0xFB4B 0xE0A8 +0xFB5E 0xE0BB +0xFB65 0xE0C2 +0xFB70 0xE0CD +0xFB7A 0xE0D7 +0xFB7D 0xE0DA +0xFBB6 0xE0F1 +0xFBB9 0xE0F4 +0xFBBF 0xE0FA +0xFBC1 0xE0FC +0xFBC9 0xE104 +0xFBCA 0xE105 +0xFBD3 0xE10E +0xFBDC 0xE117 +0xFBEA 0xE125 +0xFBEF 0xE12A +0xFBF0 0xE12B +0xFC42 0xE13C +0xFC49 0xE143 +0xFC4A 0xE144 +0xFC59 0xE153 +0xFC64 0xE15E +0xFC65 0xE15F +0xFC66 0xE160 +0xFC6A 0xE164 +0xFCA6 0xE17E +0xFCB4 0xE18C +0xFCC2 0xE19A +0xFCC4 0xE19C +0xFCCF 0xE1A7 +0xFCD1 0xE1A9 +0xFCEE 0xE1C6 +0xFCF7 0xE1CF +0xFD49 0xE1E0 +0xFD4A 0xE1E1 +0xFD4C 0xE1E3 +0xFD50 0xE1E7 +0xFD53 0xE1EA +0xFD5D 0xE1F4 +0xFD61 0xE1F8 +0xFD6C 0xE203 +0xFD7A 0xE211 +0xFDA2 0xE217 +0xFDA3 0xE218 +0xFDC4 0xE239 +0xFDCA 0xE23F +0xFDCE 0xE243 +0xFDD1 0xE246 +0xFDE8 0xE25D +0xFDE9 0xE25E +0xFE4D 0xE281 +0xFE56 0xE28A +0xFE64 0xE298 +0xFE6E 0xE2A2 +0xFE78 0xE2AC +0xFE7D 0xE2B1 +0xFEB6 0xE2C8 +0xFEC5 0xE2D7 +0xFEFB 0xE30D +0x8E45 0xE316 +0x8E55 0xE326 +0x8E59 0xE32A +0x8E6B 0xE33C +0x8EA2 0xE351 +0x8EAF 0xE35E +0x8EB9 0xE368 +0x8EC7 0xE376 +0x8EC9 0xE378 +0x8ED8 0xE387 +0x8EED 0xE39C +0x8EFE 0xE3AD +0x8F45 0xE3B3 +0x8F50 0xE3BE +0x8F54 0xE3C2 +0x8F59 0xE3C7 +0x8F5D 0xE3CB +0x8F63 0xE3D1 +0x8F64 0xE3D2 +0x8F70 0xE3DE +0x8F74 0xE3E2 +0x8F76 0xE3E4 +0x8F7A 0xE3E8 +0x8F7C 0xE3EA +0x8FA9 0xE3F5 +0x8FAB 0xE3F7 +0x8FBA 0xE406 +0x8FC2 0xE40E +0x8FDB 0xE427 +0x8FEB 0xE437 +0x8FF1 0xE43D +0x8FFD 0xE449 +0x9044 0xE44F +0x9055 0xE460 +0x9060 0xE46B +0x906F 0xE47A +0x90AA 0xE493 +0x90B7 0xE4A0 +0x90BC 0xE4A5 +0x90C0 0xE4A9 +0x90C9 0xE4B2 +0x90D5 0xE4BE +0x90D6 0xE4BF +0x90D7 0xE4C0 +0x90F5 0xE4DE +0x90FA 0xE4E3 +0x90FC 0xE4E5 +0x9145 0xE4ED +0x914F 0xE4F7 +0x9158 0xE500 +0x915F 0xE507 +0x9166 0xE50E +0x91AE 0xE534 +0x91B3 0xE539 +0x91B4 0xE53A +0x91B5 0xE53B +0x91B7 0xE53D +0x91BB 0xE541 +0x91CD 0xE553 +0x91E3 0xE569 +0x91EE 0xE574 +0x91F2 0xE578 +0x91F5 0xE57B +0x91F9 0xE57F +0x924C 0xE591 +0x9251 0xE596 +0x9252 0xE597 +0x9253 0xE598 +0x9257 0xE59C +0x9269 0xE5AE +0x9274 0xE5B9 +0x9277 0xE5BC +0x92BD 0xE5E0 +0x92C9 0xE5EC +0x92D2 0xE5F5 +0x92D7 0xE5FA +0x92DB 0xE5FE +0x92E9 0xE60C +0x92FA 0xE61D +0x9347 0xE629 +0x934B 0xE62D +0x9357 0xE639 +0x9359 0xE63B +0x935B 0xE63D +0x936F 0xE651 +0x93A4 0xE664 +0x93B5 0xE675 +0x93C1 0xE681 +0x93C2 0xE682 +0x93CD 0xE68D +0x93D4 0xE694 +0x93DD 0xE69D +0x93E0 0xE6A0 +0x93E4 0xE6A4 +0x93E9 0xE6A9 +0x93EB 0xE6AB +0x93F6 0xE6B6 +0x9449 0xE6C8 +0x9463 0xE6E2 +0x9464 0xE6E3 +0x9469 0xE6E8 +0x946E 0xE6ED +0x9470 0xE6EF +0x9472 0xE6F1 +0x9475 0xE6F4 +0x9479 0xE6F8 +0x947E 0xE6FD +0x94A1 0xE6FE +0x94A3 0xE700 +0x94B5 0xE712 +0x94B9 0xE716 +0x94BC 0xE719 +0x94C9 0xE726 +0x94D1 0xE72E +0x94D3 0xE730 +0x94DB 0xE738 +0x94DD 0xE73A +0x94DE 0xE73B +0x94EC 0xE749 +0x94EF 0xE74C +0x9544 0xE760 +0x955A 0xE776 +0x9562 0xE77E +0x9564 0xE780 +0x9573 0xE78F +0x95B0 0xE7AA +0x95B2 0xE7AC +0x95B3 0xE7AD +0x95B4 0xE7AE +0x95C6 0xE7C0 +0x95C7 0xE7C1 +0x95CD 0xE7C7 +0x95D1 0xE7CB +0x95D6 0xE7D0 +0x95DB 0xE7D5 +0x95DF 0xE7D9 +0x95EC 0xE7E6 +0x95F0 0xE7EA +0x95F6 0xE7F0 +0x95FC 0xE7F6 +0x9641 0xE7FA +0x964D 0xE806 +0x965C 0xE815 +0x9662 0xE81B +0x9664 0xE81D +0x9669 0xE822 +0x966B 0xE824 +0x9675 0xE82E +0x9678 0xE831 +0x9679 0xE832 +0x96A6 0xE83D +0x96A8 0xE83F +0x96B9 0xE850 +0x96BC 0xE853 +0x96C8 0xE85F +0x96D4 0xE86B +0x96D6 0xE86D +0x96DF 0xE876 +0x96E9 0xE880 +0x96F7 0xE88E +0x9743 0xE899 +0x9745 0xE89B +0x9746 0xE89C +0x975D 0xE8B3 +0x9761 0xE8B7 +0x9766 0xE8BC +0x977C 0xE8D2 +0x97AE 0xE8E2 +0x97B0 0xE8E4 +0x97B8 0xE8EC +0x97BA 0xE8EE +0x97C0 0xE8F4 +0x97C2 0xE8F6 +0x97C3 0xE8F7 +0x97C5 0xE8F9 +0x97C6 0xE8FA +0x97C9 0xE8FD +0x97CD 0xE901 +0x97D2 0xE906 +0x97D7 0xE90B +0x97DA 0xE90E +0x97DB 0xE90F +0x97DC 0xE910 +0x97DD 0xE911 +0x97DE 0xE912 +0x97E1 0xE915 +0x97E7 0xE91B +0x97FD 0xE931 +0x97FE 0xE932 +0x9853 0xE946 +0x9856 0xE949 +0x9872 0xE965 +0x9879 0xE96C +0x98A8 0xE979 +0x98BC 0xE98D +0x98C3 0xE994 +0x98C5 0xE996 +0x98CB 0xE99C +0x98CC 0xE99D +0x98CD 0xE99E +0x98CE 0xE99F +0x98D0 0xE9A1 +0x98D1 0xE9A2 +0x98D6 0xE9A7 +0x98D9 0xE9AA +0x98DB 0xE9AC +0x98DD 0xE9AE +0x98E4 0xE9B5 +0x98E6 0xE9B7 +0x98E8 0xE9B9 +0x98E9 0xE9BA +0x98EB 0xE9BC +0x98EC 0xE9BD +0x98F4 0xE9C5 +0x98FE 0xE9CF +0x9940 0xE9D0 +0x9946 0xE9D6 +0x9948 0xE9D8 +0x994B 0xE9DB +0x994E 0xE9DE +0x9955 0xE9E5 +0x9956 0xE9E6 +0x9959 0xE9E9 +0x995B 0xE9EB +0x9967 0xE9F7 +0x996E 0xE9FE +0x9973 0xEA03 +0x997A 0xEA0A +0x997B 0xEA0B +0x99A1 0xEA0F +0x99A5 0xEA13 +0x99A7 0xEA15 +0x99AD 0xEA1B +0x99B3 0xEA21 +0x99BC 0xEA2A +0x99C3 0xEA31 +0x99C7 0xEA35 +0x99CE 0xEA3C +0x99CF 0xEA3D +0x99DE 0xEA4C +0x99E1 0xEA4F +0x99E9 0xEA57 +0x99F5 0xEA63 +0x99F8 0xEA66 +0x9A48 0xEA75 +0x9A49 0xEA76 +0x9A50 0xEA7D +0x9A55 0xEA82 +0x9A58 0xEA85 +0x9A5A 0xEA87 +0x9A5C 0xEA89 +0x9A60 0xEA8D +0x9A63 0xEA90 +0x9A6E 0xEA9B +0x9A70 0xEA9D +0x9A79 0xEAA6 +0x9A7B 0xEAA8 +0x9ABD 0xEAC8 +0x9AEC 0xEAF7 +0x9B4D 0xEB17 +0x9BA9 0xEB51 +0x9BAA 0xEB52 +0x9BB8 0xEB60 +0x9BBE 0xEB66 +0x9BC2 0xEB6A +0x9BDF 0xEB87 +0x9BE3 0xEB8B +0x9BEA 0xEB92 +0x9BEE 0xEB96 +0x9C4A 0xEBB1 +0x9C5C 0xEBC3 +0x9C6F 0xEBD6 +0x9C79 0xEBE0 +0x9CA1 0xEBE6 +0x9CA5 0xEBEA +0x9CBA 0xEBFF +0x9CBB 0xEC00 +0x9CBE 0xEC03 +0x9CC6 0xEC0B +0x9CC8 0xEC0D +0x9CD1 0xEC16 +0x9CF8 0xEC3D +0x9D46 0xEC4A +0x9D49 0xEC4D +0x9D4F 0xEC53 +0x9D51 0xEC55 +0x9D5D 0xEC61 +0x9D73 0xEC77 +0x9D78 0xEC7C +0x9D7B 0xEC7F +0x9DA5 0xEC87 +0x9DAA 0xEC8C +0x9DAD 0xEC8F +0x9DB5 0xEC97 +0x9DCC 0xECAE +0x9DCE 0xECB0 +0x9DEE 0xECD0 +0x9DF3 0xECD5 +0x9E53 0xECF4 +0x9E64 0xED05 +0x9E7A 0xED1B +0x9E7E 0xED1F +0x9EA4 0xED23 +0x9EB4 0xED33 +0x9EB8 0xED37 +0x9EB9 0xED38 +0x9EBB 0xED3A +0x9EC5 0xED44 +0x9EC9 0xED48 +0x9ECD 0xED4C +0x9EDA 0xED59 +0x9EDD 0xED5C +0x9EDE 0xED5D +0x9EDF 0xED5E +0x9EE5 0xED64 +0x9EE7 0xED66 +0x9EEE 0xED6D +0x9EF0 0xED6F +0x9EFC 0xED7B +0x9F70 0xEDAE +0x9FA5 0xEDC1 +0x9FD7 0xEDF3 +0x9FD9 0xEDF5 +0xA053 0xEE2E +0xA068 0xEE43 +0xA06A 0xEE45 +0xA06F 0xEE4A +0xA078 0xEE53 +0xA07E 0xEE59 +0xA0AC 0xEE65 +0xA0D0 0xEE89 +0xA0DA 0xEE93 +0xA0DE 0xEE97 +0xA0E6 0xEE9F +0xA0F9 0xEEB2 +0x89B7 0xF3F5 +0x89BA 0xF3F8 +0x89BF 0xF3FD +0x89C5 0xF403 +0x89D5 0xF413 +0x89D7 0xF415 +0x89DA 0xF418 +0x89DB 0xF419 +0x89DC 0xF41A +0x89E6 0xF424 +0x89E8 0xF426 +0x89EA 0xF428 +0x89ED 0xF42B +0x89EE 0xF42C +0x89EF 0xF42D +0x89F9 0xF437 +0x89FB 0xF439 +0x89FC 0xF43A +0x89FE 0xF43C +0x8A48 0xF445 +0x8A4D 0xF44A +0x8A51 0xF44E +0x8A52 0xF44F +0x8A67 0xF464 +0x8A6B 0xF468 +0x8A6D 0xF46A +0x8A6E 0xF46B +0x8A76 0xF473 +0x8A7D 0xF47A +0x8AAC 0xF487 +0x8AAE 0xF489 +0x8AB8 0xF493 +0x8AB9 0xF494 +0x8ABB 0xF496 +0x8AC2 0xF49D +0x8AC7 0xF4A2 +0x8AD0 0xF4AB +0x8AD1 0xF4AC +0x8AD3 0xF4AE +0x8ADA 0xF4B5 +0x8AEB 0xF4C6 +0x8AF0 0xF4CB +0x8AFB 0xF4D6 +0x8B47 0xF4E1 +0x8B60 0xF4FA +0x8B68 0xF502 +0x8B6A 0xF504 +0x8BA6 0xF51E +0x8BB1 0xF529 +0x8BB5 0xF52D +0x8BB6 0xF52E +0x8BB8 0xF530 +0x8BBE 0xF536 +0x8BC8 0xF540 +0x8BCC 0xF544 +0x8BDC 0xF554 +0x8D63 0xF637 +0x8D64 0xF638 +0x8D67 0xF63B +0x8D68 0xF63C +0x8D6D 0xF641 +0x8D6E 0xF642 +0x8D6F 0xF643 +0x8D70 0xF644 +0x8D74 0xF648 +0x8D78 0xF64C +0x8D7D 0xF651 +0x8DA1 0xF653 +0x8DA6 0xF658 +0x8DAB 0xF65D +0x8DAD 0xF65F +0x8DB0 0xF662 +0x8DB2 0xF664 +0x8DB4 0xF666 +0x8DB7 0xF669 +0x8DBA 0xF66C +0x8DBB 0xF66D +0x8DBC 0xF66E +0x8DC3 0xF675 +0x8DC5 0xF677 +0x8DCA 0xF67C +0x8DCC 0xF67E +0x8DD6 0xF688 +0x8DDB 0xF68D +0x8DEB 0xF69D +0x8DEF 0xF6A1 +0x8DF0 0xF6A2 +0x8DF3 0xF6A5 +0x8DF5 0xF6A7 +0x8DFC 0xF6AE +0x8DFD 0xF6AF +0xC6CD 0xF6DD +0xC8D6 0xF820 +0xC8D7 0xF821 +0xC8D8 0xF822 +0xC8D9 0xF823 +0xC8DA 0xF824 +0xC8DB 0xF825 +0xC8DC 0xF826 +0xC8DD 0xF827 +0xC8DE 0xF828 +0xC8DF 0xF829 +0xC8E0 0xF82A +0xC8E1 0xF82B +0xC8E2 0xF82C +0xC8E3 0xF82D +0xC8E4 0xF82E +0xC8E5 0xF82F +0xC8E6 0xF830 +0xC8E7 0xF831 +0xC8E8 0xF832 +0xC8E9 0xF833 +0xC8EA 0xF834 +0xC8EB 0xF835 +0xC8EC 0xF836 +0xC8ED 0xF837 +0xC8EE 0xF838 +0xC8EF 0xF839 +0xC8F0 0xF83A +0xC8F1 0xF83B diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/HKSCS_XP.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/CharsetMapping/HKSCS_XP.map Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,4704 @@ +# Generated from HKSCS.Encoder +# +0x8840 0xF303 +0x8841 0xF304 +0x8842 0xF305 +0x8843 0xF306 +0x8844 0xF307 +0x8845 0xF308 +0x8846 0xF309 +0x8847 0xF30A +0x8848 0xF30B +0x8849 0xF30C +0x884A 0xF30D +0x884B 0xF30E +0x884C 0xF30F +0x884D 0xF310 +0x884E 0xF311 +0x884F 0xF312 +0x8850 0xF313 +0x8851 0xF314 +0x8852 0xF315 +0x8853 0xF316 +0x8854 0xF317 +0x8855 0xF318 +0x8856 0x0100 +0x8857 0x00C1 +0x8858 0x01CD +0x8859 0x00C0 +0x885A 0x0112 +0x885B 0x00C9 +0x885C 0x011A +0x885D 0x00C8 +0x885E 0x014C +0x885F 0x00D3 +0x8860 0x01D1 +0x8861 0x00D2 +0x8862 0xF325 +0x8863 0x1EBE +0x8864 0xF327 +0x8865 0x1EC0 +0x8866 0x00CA +0x8867 0x0101 +0x8868 0x00E1 +0x8869 0x01CE +0x886A 0x00E0 +0x886B 0x0251 +0x886C 0x0113 +0x886D 0x00E9 +0x886E 0x011B +0x886F 0x00E8 +0x8870 0x012B +0x8871 0x00ED +0x8872 0x01D0 +0x8873 0x00EC +0x8874 0x014D +0x8875 0x00F3 +0x8876 0x01D2 +0x8877 0x00F2 +0x8878 0x016B +0x8879 0x00FA +0x887A 0x01D4 +0x887B 0x00F9 +0x887C 0x01D6 +0x887D 0x01D8 +0x887E 0x01DA +0x88A1 0x01DC +0x88A2 0x00FC +0x88A3 0xF344 +0x88A4 0x1EBF +0x88A5 0xF346 +0x88A6 0x1EC1 +0x88A7 0x00EA +0x88A8 0x0261 +0x88A9 0xF34A +0x88AA 0xF34B +0x8940 0xF3A0 +0x8941 0xF3A1 +0x8943 0x650A +0x8946 0x4E3D +0x8947 0x6EDD +0x8948 0x9D4E +0x8949 0x91DF +0x894C 0xF3AC +0x894D 0x6491 +0x894E 0x4F1A +0x894F 0x4F28 +0x8950 0x4FA8 +0x8951 0x5156 +0x8952 0x5174 +0x8953 0x519C +0x8954 0x51E4 +0x8955 0x52A1 +0x8956 0x52A8 +0x8957 0x533B +0x8958 0x534E +0x8959 0x53D1 +0x895A 0x53D8 +0x895B 0x56E2 +0x895C 0x58F0 +0x895D 0x5904 +0x895E 0x5907 +0x895F 0x5932 +0x8960 0x5934 +0x8961 0x5B66 +0x8962 0x5B9E +0x8963 0x5B9F +0x8964 0x5C9A +0x8965 0x5E86 +0x8966 0x603B +0x8967 0x6589 +0x8968 0x67FE +0x8969 0x6804 +0x896A 0x6865 +0x896B 0x6D4E +0x896C 0x70BC +0x896D 0x7535 +0x896E 0x7EA4 +0x896F 0x7EAC +0x8970 0x7EBA +0x8971 0x7EC7 +0x8972 0x7ECF +0x8973 0x7EDF +0x8974 0x7F06 +0x8975 0x7F37 +0x8976 0x827A +0x8977 0x82CF +0x8978 0x836F +0x8979 0x89C6 +0x897A 0x8BBE +0x897B 0x8BE2 +0x897C 0x8F66 +0x897D 0x8F67 +0x897E 0x8F6E +0x89A1 0x7411 +0x89A2 0x7CFC +0x89A3 0x7DCD +0x89A4 0x6946 +0x89A5 0x7AC9 +0x89A6 0x5227 +0x89AB 0x918C +0x89AC 0x78B8 +0x89AD 0x915E +0x89AE 0x80BC +0x89B0 0x8D0B +0x89B1 0x80F6 +0x89B2 0xF3F0 +0x89B5 0x809F +0x89B6 0x9EC7 +0x89B7 0x4CCD +0x89B8 0x9DC9 +0x89B9 0x9E0C +0x89BA 0x4C3E +0x89BB 0xF3F9 +0x89BC 0xF3FA +0x89BD 0x9E0A +0x89BE 0xF3FC +0x89BF 0x35C1 +0x89C1 0x6E9A +0x89C2 0x823E +0x89C3 0x7519 +0x89C5 0x4911 +0x89C6 0x9A6C +0x89C7 0x9A8F +0x89C8 0x9F99 +0x89C9 0x7987 +0x89CA 0xF408 +0x89CB 0xF409 +0x89CC 0xF40A +0x89CD 0xF40B +0x89CE 0x4E24 +0x89CF 0x4E81 +0x89D0 0x4E80 +0x89D1 0x4E87 +0x89D2 0x4EBF +0x89D3 0x4EEB +0x89D4 0x4F37 +0x89D5 0x344C +0x89D6 0x4FBD +0x89D7 0x3E48 +0x89D8 0x5003 +0x89D9 0x5088 +0x89DA 0x347D +0x89DB 0x3493 +0x89DC 0x34A5 +0x89DD 0x5186 +0x89DE 0x5905 +0x89DF 0x51DB +0x89E0 0x51FC +0x89E1 0x5205 +0x89E2 0x4E89 +0x89E3 0x5279 +0x89E4 0x5290 +0x89E5 0x5327 +0x89E6 0x35C7 +0x89E7 0x53A9 +0x89E8 0x3551 +0x89E9 0x53B0 +0x89EA 0x3553 +0x89EB 0x53C2 +0x89EC 0x5423 +0x89ED 0x356D +0x89EE 0x3572 +0x89EF 0x3681 +0x89F0 0x5493 +0x89F1 0x54A3 +0x89F2 0x54B4 +0x89F3 0x54B9 +0x89F4 0x54D0 +0x89F5 0x54EF +0x89F6 0x5518 +0x89F7 0x5523 +0x89F8 0x5528 +0x89F9 0x3598 +0x89FA 0x553F +0x89FB 0x35A5 +0x89FC 0x35BF +0x89FD 0x55D7 +0x89FE 0x35C5 +0x8A40 0xF43D +0x8A41 0x5525 +0x8A43 0xF440 +0x8A44 0xF441 +0x8A45 0xF442 +0x8A46 0x5590 +0x8A47 0xF444 +0x8A48 0x39EC +0x8A49 0xF446 +0x8A4A 0x8E46 +0x8A4B 0xF448 +0x8A4C 0xF449 +0x8A4D 0x4053 +0x8A4E 0xF44B +0x8A4F 0x777A +0x8A50 0xF44D +0x8A51 0x3A34 +0x8A52 0x47D5 +0x8A53 0xF450 +0x8A54 0xF451 +0x8A55 0xF452 +0x8A56 0x64DD +0x8A57 0xF454 +0x8A58 0xF455 +0x8A59 0xF456 +0x8A5A 0xF457 +0x8A5B 0x648D +0x8A5C 0x8E7E +0x8A5D 0xF45A +0x8A5E 0xF45B +0x8A5F 0xF45C +0x8A60 0xF45D +0x8A61 0xF45E +0x8A62 0xF45F +0x8A64 0xF461 +0x8A65 0xF462 +0x8A66 0xF463 +0x8A67 0x47F4 +0x8A68 0xF465 +0x8A69 0xF466 +0x8A6A 0x9AB2 +0x8A6B 0x3A67 +0x8A6C 0xF469 +0x8A6D 0x3FED +0x8A6E 0x3506 +0x8A6F 0xF46C +0x8A70 0xF46D +0x8A71 0xF46E +0x8A72 0xF46F +0x8A73 0x9D6E +0x8A74 0x9815 +0x8A76 0x43D9 +0x8A77 0xF474 +0x8A78 0x64B4 +0x8A79 0x54E3 +0x8A7A 0xF477 +0x8A7B 0xF478 +0x8A7C 0xF479 +0x8A7D 0x39FB +0x8A7E 0xF47B +0x8AA1 0xF47C +0x8AA2 0xF47D +0x8AA3 0xF47E +0x8AA4 0x64EA +0x8AA5 0xF480 +0x8AA6 0xF481 +0x8AA7 0x8E68 +0x8AA8 0xF483 +0x8AA9 0xF484 +0x8AAA 0xF485 +0x8AAC 0x480B +0x8AAD 0xF488 +0x8AAE 0x3FFA +0x8AAF 0x5873 +0x8AB0 0xF48B +0x8AB2 0xF48D +0x8AB3 0xF48E +0x8AB4 0xF48F +0x8AB5 0xF490 +0x8AB6 0xF491 +0x8AB7 0x5579 +0x8AB8 0x40BB +0x8AB9 0x43BA +0x8ABB 0x4AB4 +0x8ABC 0xF497 +0x8ABD 0xF498 +0x8ABE 0x81AA +0x8ABF 0x98F5 +0x8AC0 0xF49B +0x8AC1 0x6379 +0x8AC2 0x39FE +0x8AC3 0xF49E +0x8AC4 0x8DC0 +0x8AC5 0x56A1 +0x8AC6 0x647C +0x8AC7 0x3E43 +0x8AC9 0xF4A4 +0x8ACA 0xF4A5 +0x8ACB 0xF4A6 +0x8ACC 0xF4A7 +0x8ACE 0xF4A9 +0x8ACF 0xF4AA +0x8AD0 0x3992 +0x8AD1 0x3A06 +0x8AD2 0xF4AD +0x8AD3 0x3578 +0x8AD4 0xF4AF +0x8AD5 0xF4B0 +0x8AD6 0x5652 +0x8AD7 0xF4B2 +0x8AD8 0xF4B3 +0x8AD9 0xF4B4 +0x8ADA 0x34BC +0x8ADB 0x6C3D +0x8ADC 0xF4B7 +0x8ADF 0xF4BA +0x8AE0 0xF4BB +0x8AE1 0xF4BC +0x8AE2 0xF4BD +0x8AE3 0xF4BE +0x8AE4 0xF4BF +0x8AE5 0xF4C0 +0x8AE6 0xF4C1 +0x8AE7 0x7F93 +0x8AE8 0xF4C3 +0x8AE9 0xF4C4 +0x8AEA 0xF4C5 +0x8AEB 0x35FB +0x8AEC 0xF4C7 +0x8AED 0xF4C8 +0x8AEE 0xF4C9 +0x8AEF 0xF4CA +0x8AF0 0x3F93 +0x8AF1 0xF4CC +0x8AF2 0xF4CD +0x8AF3 0xF4CE +0x8AF4 0xF4CF +0x8AF6 0xF4D1 +0x8AF7 0xF4D2 +0x8AF8 0xF4D3 +0x8AF9 0xF4D4 +0x8AFA 0xF4D5 +0x8AFB 0x3FF9 +0x8AFC 0xF4D7 +0x8AFD 0x6432 +0x8AFE 0xF4D9 +0x8B40 0xF4DA +0x8B41 0xF4DB +0x8B42 0xF4DC +0x8B43 0xF4DD +0x8B44 0xF4DE +0x8B45 0xF4DF +0x8B46 0xF4E0 +0x8B47 0x3A18 +0x8B48 0xF4E2 +0x8B49 0xF4E3 +0x8B4A 0xF4E4 +0x8B4B 0xF4E5 +0x8B4C 0xF4E6 +0x8B4D 0xF4E7 +0x8B4E 0xF4E8 +0x8B4F 0xF4E9 +0x8B50 0x95AA +0x8B51 0x54CC +0x8B52 0x82C4 +0x8B53 0x55B9 +0x8B55 0xF4EF +0x8B56 0x9C26 +0x8B57 0x9AB6 +0x8B58 0xF4F2 +0x8B59 0xF4F3 +0x8B5A 0x7140 +0x8B5B 0x816D +0x8B5C 0x80EC +0x8B5D 0x5C1C +0x8B5E 0xF4F8 +0x8B5F 0x8134 +0x8B60 0x3797 +0x8B61 0x535F +0x8B62 0xF4FC +0x8B63 0x91B6 +0x8B64 0xF4FE +0x8B65 0xF4FF +0x8B66 0xF500 +0x8B67 0xF501 +0x8B68 0x35DD +0x8B69 0xF503 +0x8B6A 0x3609 +0x8B6B 0xF505 +0x8B6C 0x56AF +0x8B6D 0xF507 +0x8B6E 0xF508 +0x8B6F 0xF509 +0x8B70 0xF50A +0x8B71 0xF50B +0x8B72 0xF50C +0x8B73 0xF50D +0x8B74 0xF50E +0x8B75 0xF50F +0x8B76 0xF510 +0x8B77 0xF511 +0x8B78 0x5A54 +0x8B79 0xF513 +0x8B7A 0xF514 +0x8B7B 0xF515 +0x8B7C 0xF516 +0x8B7D 0x579C +0x8B7E 0xF518 +0x8BA1 0xF519 +0x8BA2 0xF51A +0x8BA3 0xF51B +0x8BA4 0xF51C +0x8BA5 0xF51D +0x8BA6 0x3703 +0x8BA7 0xF51F +0x8BA8 0xF520 +0x8BA9 0xF521 +0x8BAA 0xF522 +0x8BAB 0xF523 +0x8BAC 0xF524 +0x8BAD 0xF525 +0x8BAE 0xF526 +0x8BAF 0x5899 +0x8BB0 0x5268 +0x8BB1 0x361A +0x8BB2 0xF52A +0x8BB3 0x7BB2 +0x8BB4 0x5B68 +0x8BB5 0x4800 +0x8BB6 0x4B2C +0x8BB7 0x9F27 +0x8BB8 0x49E7 +0x8BB9 0x9C1F +0x8BBA 0x9B8D +0x8BBB 0xF533 +0x8BBC 0xF534 +0x8BBD 0x55FB +0x8BBE 0x35F2 +0x8BBF 0x5689 +0x8BC0 0x4E28 +0x8BC1 0x5902 +0x8BC2 0xF53A +0x8BC3 0xF53B +0x8BC4 0x9751 +0x8BC5 0xF53D +0x8BC6 0x4E5B +0x8BC7 0x4EBB +0x8BC8 0x353E +0x8BC9 0x5C23 +0x8BCA 0x5F51 +0x8BCB 0x5FC4 +0x8BCC 0x38FA +0x8BCD 0x624C +0x8BCE 0x6535 +0x8BCF 0x6B7A +0x8BD0 0x6C35 +0x8BD1 0x6C3A +0x8BD2 0x706C +0x8BD3 0x722B +0x8BD4 0x4E2C +0x8BD5 0x72AD +0x8BD6 0xF54E +0x8BD7 0x7F52 +0x8BD8 0x793B +0x8BD9 0x7CF9 +0x8BDA 0x7F53 +0x8BDB 0xF553 +0x8BDC 0x34C1 +0x8BDE 0xF556 +0x8BDF 0x8002 +0x8BE0 0x8080 +0x8BE1 0xF559 +0x8BE2 0xF55A +0x8BE3 0x535D +0x8BE4 0x8864 +0x8BE5 0x89C1 +0x8BE6 0xF55E +0x8BE7 0x8BA0 +0x8BE8 0x8D1D +0x8BE9 0x9485 +0x8BEA 0x9578 +0x8BEB 0x957F +0x8BEC 0x95E8 +0x8BED 0xF565 +0x8BEE 0x97E6 +0x8BEF 0x9875 +0x8BF0 0x98CE +0x8BF1 0x98DE +0x8BF2 0x9963 +0x8BF3 0xF56B +0x8BF4 0x9C7C +0x8BF5 0x9E1F +0x8BF6 0x9EC4 +0x8BF7 0x6B6F +0x8BF8 0x9F9C +0x8BF9 0x4E37 +0x8BFA 0xF572 +0x8BFB 0x961D +0x8BFC 0x6237 +0x8BFD 0x94A2 +0x8D60 0x5D3E +0x8D61 0x5D48 +0x8D62 0x5D56 +0x8D63 0x3DFC +0x8D64 0x380F +0x8D65 0x5DA4 +0x8D66 0x5DB9 +0x8D67 0x3820 +0x8D68 0x3838 +0x8D69 0x5E42 +0x8D6A 0x5EBD +0x8D6B 0x5F25 +0x8D6C 0x5F83 +0x8D6D 0x3908 +0x8D6E 0x3914 +0x8D6F 0x393F +0x8D70 0x394D +0x8D71 0x60D7 +0x8D72 0x613D +0x8D73 0x5CE5 +0x8D74 0x3989 +0x8D75 0x61B7 +0x8D76 0x61B9 +0x8D77 0x61CF +0x8D78 0x39B8 +0x8D79 0x622C +0x8D7A 0x6290 +0x8D7B 0x62E5 +0x8D7C 0x6318 +0x8D7D 0x39F8 +0x8D7E 0x56B1 +0x8DA1 0x3A03 +0x8DA2 0x63E2 +0x8DA3 0x63FB +0x8DA4 0x6407 +0x8DA5 0x645A +0x8DA6 0x3A4B +0x8DA7 0x64C0 +0x8DA8 0x5D15 +0x8DA9 0x5621 +0x8DAA 0x9F9F +0x8DAB 0x3A97 +0x8DAC 0x6586 +0x8DAD 0x3ABD +0x8DAE 0x65FF +0x8DAF 0x6653 +0x8DB0 0x3AF2 +0x8DB1 0x6692 +0x8DB2 0x3B22 +0x8DB3 0x6716 +0x8DB4 0x3B42 +0x8DB5 0x67A4 +0x8DB6 0x6800 +0x8DB7 0x3B58 +0x8DB8 0x684A +0x8DB9 0x6884 +0x8DBA 0x3B72 +0x8DBB 0x3B71 +0x8DBC 0x3B7B +0x8DBD 0x6909 +0x8DBE 0x6943 +0x8DBF 0x725C +0x8DC0 0x6964 +0x8DC1 0x699F +0x8DC2 0x6985 +0x8DC3 0x3BBC +0x8DC4 0x69D6 +0x8DC5 0x3BDD +0x8DC6 0x6A65 +0x8DC7 0x6A74 +0x8DC8 0x6A71 +0x8DC9 0x6A82 +0x8DCA 0x3BEC +0x8DCB 0x6A99 +0x8DCC 0x3BF2 +0x8DCD 0x6AAB +0x8DCE 0x6AB5 +0x8DCF 0x6AD4 +0x8DD0 0x6AF6 +0x8DD1 0x6B81 +0x8DD2 0x6BC1 +0x8DD3 0x6BEA +0x8DD4 0x6C75 +0x8DD5 0x6CAA +0x8DD6 0x3CCB +0x8DD7 0x6D02 +0x8DD8 0x6D06 +0x8DD9 0x6D26 +0x8DDA 0x6D81 +0x8DDB 0x3CEF +0x8DDC 0x6DA4 +0x8DDD 0x6DB1 +0x8DDE 0x6E15 +0x8DDF 0x6E18 +0x8DE0 0x6E29 +0x8DE1 0x6E86 +0x8DE2 0xF694 +0x8DE3 0x6EBB +0x8DE4 0x6EE2 +0x8DE5 0x6EDA +0x8DE6 0x9F7F +0x8DE7 0x6EE8 +0x8DE8 0x6EE9 +0x8DE9 0x6F24 +0x8DEA 0x6F34 +0x8DEB 0x3D46 +0x8DEC 0xF69E +0x8DED 0x6F81 +0x8DEE 0x6FBE +0x8DEF 0x3D6A +0x8DF0 0x3D75 +0x8DF1 0x71B7 +0x8DF2 0x5C99 +0x8DF3 0x3D8A +0x8DF4 0x702C +0x8DF5 0x3D91 +0x8DF6 0x7050 +0x8DF7 0x7054 +0x8DF8 0x706F +0x8DF9 0x707F +0x8DFA 0x7089 +0x8DFB 0xF6AD +0x8DFC 0x43C1 +0x8DFD 0x35F1 +0x8DFE 0xF6B0 +0x8E40 0xE311 +0x8E41 0x57BE +0x8E42 0xE313 +0x8E43 0x713E +0x8E44 0xE315 +0x8E45 0x364E +0x8E46 0x69A2 +0x8E47 0xE318 +0x8E48 0x5B74 +0x8E49 0x7A49 +0x8E4A 0xE31B +0x8E4B 0xE31C +0x8E4C 0x7A65 +0x8E4D 0x7A7D +0x8E4E 0xE31F +0x8E4F 0x7ABB +0x8E50 0x7AB0 +0x8E51 0x7AC2 +0x8E52 0x7AC3 +0x8E53 0x71D1 +0x8E54 0xE325 +0x8E55 0x41CA +0x8E56 0x7ADA +0x8E57 0x7ADD +0x8E58 0x7AEA +0x8E59 0x41EF +0x8E5A 0x54B2 +0x8E5B 0xE32C +0x8E5C 0x7B0B +0x8E5D 0x7B55 +0x8E5E 0x7B29 +0x8E5F 0xE330 +0x8E60 0xE331 +0x8E61 0x7BA2 +0x8E62 0x7B6F +0x8E63 0x839C +0x8E64 0xE335 +0x8E65 0xE336 +0x8E66 0x7BD0 +0x8E67 0x8421 +0x8E68 0x7B92 +0x8E6A 0xE33B +0x8E6B 0x3DAD +0x8E6C 0xE33D +0x8E6D 0x8492 +0x8E6E 0x7BFA +0x8E70 0x7C35 +0x8E71 0xE342 +0x8E72 0x7C44 +0x8E73 0x7C83 +0x8E74 0xE345 +0x8E75 0x7CA6 +0x8E76 0x667D +0x8E77 0xE348 +0x8E78 0x7CC9 +0x8E79 0x7CC7 +0x8E7A 0x7CE6 +0x8E7B 0x7C74 +0x8E7C 0x7CF3 +0x8E7D 0x7CF5 +0x8EA1 0x7E67 +0x8EA2 0x451D +0x8EA3 0xE352 +0x8EA4 0x7D5D +0x8EA5 0xE354 +0x8EA6 0x748D +0x8EA7 0x7D89 +0x8EA8 0x7DAB +0x8EA9 0x7135 +0x8EAA 0x7DB3 +0x8EAC 0xE35B +0x8EAD 0xE35C +0x8EAE 0x7DE4 +0x8EAF 0x3D13 +0x8EB0 0x7DF5 +0x8EB1 0xE360 +0x8EB2 0x7DE5 +0x8EB3 0xE362 +0x8EB5 0xE364 +0x8EB6 0xE365 +0x8EB7 0x7E6E +0x8EB8 0x7E92 +0x8EB9 0x432B +0x8EBA 0x946C +0x8EBB 0x7E27 +0x8EBC 0x7F40 +0x8EBD 0x7F41 +0x8EBE 0x7F47 +0x8EBF 0x7936 +0x8EC0 0xE36F +0x8EC1 0x99E1 +0x8EC2 0x7F97 +0x8EC3 0xE372 +0x8EC4 0x7FA3 +0x8EC5 0xE374 +0x8EC6 0xE375 +0x8EC7 0x455C +0x8EC8 0xE377 +0x8EC9 0x4503 +0x8ECA 0xE379 +0x8ECB 0x7FFA +0x8ECC 0xE37B +0x8ECE 0x8008 +0x8ECF 0x801D +0x8ED1 0x802F +0x8ED2 0xE381 +0x8ED3 0xE382 +0x8ED4 0x803B +0x8ED5 0x803C +0x8ED6 0x8061 +0x8ED7 0xE386 +0x8ED8 0x4989 +0x8ED9 0xE388 +0x8EDA 0xE389 +0x8EDB 0xE38A +0x8EDC 0x6725 +0x8EDD 0x80A7 +0x8EDE 0xE38D +0x8EDF 0x8107 +0x8EE0 0x811A +0x8EE1 0x58B0 +0x8EE2 0xE391 +0x8EE3 0x6C7F +0x8EE4 0xE393 +0x8EE5 0xE394 +0x8EE6 0x64E7 +0x8EE7 0xE396 +0x8EE8 0x8218 +0x8EE9 0xE398 +0x8EEA 0x6A53 +0x8EEB 0xE39A +0x8EEC 0xE39B +0x8EED 0x447A +0x8EEE 0x8229 +0x8EEF 0xE39E +0x8EF0 0xE39F +0x8EF1 0xE3A0 +0x8EF2 0x4FF9 +0x8EF3 0xE3A2 +0x8EF4 0x84E2 +0x8EF5 0x8362 +0x8EF6 0xE3A5 +0x8EF7 0xE3A6 +0x8EF8 0xE3A7 +0x8EF9 0xE3A8 +0x8EFA 0xE3A9 +0x8EFB 0x82AA +0x8EFC 0x691B +0x8EFD 0xE3AC +0x8EFE 0x41DB +0x8F40 0x854B +0x8F41 0x82D0 +0x8F42 0x831A +0x8F43 0xE3B1 +0x8F44 0xE3B2 +0x8F45 0x36C1 +0x8F46 0xE3B4 +0x8F47 0xE3B5 +0x8F48 0x827B +0x8F49 0x82E2 +0x8F4A 0x8318 +0x8F4B 0xE3B9 +0x8F4C 0xE3BA +0x8F4D 0xE3BB +0x8F4E 0xE3BC +0x8F4F 0xE3BD +0x8F50 0x3DBF +0x8F51 0x831D +0x8F52 0x55EC +0x8F53 0x8385 +0x8F54 0x450B +0x8F55 0xE3C3 +0x8F56 0x83AC +0x8F58 0x83D3 +0x8F59 0x347E +0x8F5A 0xE3C8 +0x8F5B 0x6A57 +0x8F5C 0x855A +0x8F5D 0x3496 +0x8F5E 0xE3CC +0x8F5F 0xE3CD +0x8F60 0x8458 +0x8F61 0xE3CF +0x8F62 0x8471 +0x8F63 0x3DD3 +0x8F64 0x44E4 +0x8F65 0x6AA7 +0x8F66 0x844A +0x8F67 0xE3D5 +0x8F68 0x7958 +0x8F6A 0xE3D8 +0x8F6B 0xE3D9 +0x8F6C 0xE3DA +0x8F6D 0x84DE +0x8F6F 0x8391 +0x8F70 0x44A0 +0x8F71 0x8493 +0x8F72 0x84E4 +0x8F73 0xE3E1 +0x8F74 0x4240 +0x8F75 0xE3E3 +0x8F76 0x4543 +0x8F77 0x8534 +0x8F78 0x5AF2 +0x8F79 0xE3E7 +0x8F7A 0x4527 +0x8F7B 0x8573 +0x8F7C 0x4516 +0x8F7D 0x67BF +0x8F7E 0x8616 +0x8FA1 0xE3ED +0x8FA2 0xE3EE +0x8FA3 0x85C1 +0x8FA4 0xE3F0 +0x8FA5 0x8602 +0x8FA6 0xE3F2 +0x8FA7 0xE3F3 +0x8FA8 0xE3F4 +0x8FA9 0x456A +0x8FAA 0x8628 +0x8FAB 0x3648 +0x8FAC 0xE3F8 +0x8FAD 0x53F7 +0x8FAE 0xE3FA +0x8FAF 0x867E +0x8FB0 0x8771 +0x8FB1 0xE3FD +0x8FB2 0x87EE +0x8FB3 0xE3FF +0x8FB4 0x87B1 +0x8FB5 0x87DA +0x8FB6 0x880F +0x8FB7 0x5661 +0x8FB8 0x866C +0x8FB9 0x6856 +0x8FBA 0x460F +0x8FBB 0x8845 +0x8FBC 0x8846 +0x8FBD 0xE409 +0x8FBE 0xE40A +0x8FBF 0xE40B +0x8FC0 0x885E +0x8FC1 0x889C +0x8FC2 0x465B +0x8FC3 0x88B4 +0x8FC4 0x88B5 +0x8FC5 0x63C1 +0x8FC6 0x88C5 +0x8FC7 0x7777 +0x8FC8 0xE414 +0x8FC9 0x8987 +0x8FCA 0x898A +0x8FCD 0x89A7 +0x8FCE 0x89BC +0x8FCF 0xE41B +0x8FD0 0x89E7 +0x8FD1 0xE41D +0x8FD2 0xE41E +0x8FD3 0x8A9C +0x8FD4 0x7793 +0x8FD5 0x91FE +0x8FD6 0x8A90 +0x8FD7 0xE423 +0x8FD8 0x7AE9 +0x8FD9 0xE425 +0x8FDA 0xE426 +0x8FDB 0x4713 +0x8FDC 0xE428 +0x8FDD 0x717C +0x8FDE 0x8B0C +0x8FDF 0x8B1F +0x8FE0 0xE42C +0x8FE1 0xE42D +0x8FE2 0x8B3F +0x8FE3 0x8B4C +0x8FE4 0x8B4D +0x8FE5 0x8AA9 +0x8FE6 0xE432 +0x8FE7 0x8B90 +0x8FE8 0x8B9B +0x8FE9 0x8AAF +0x8FEA 0xE436 +0x8FEB 0x4615 +0x8FEC 0x884F +0x8FED 0x8C9B +0x8FEE 0xE43A +0x8FEF 0xE43B +0x8FF0 0xE43C +0x8FF1 0x3725 +0x8FF2 0xE43E +0x8FF3 0x8CD6 +0x8FF4 0xE440 +0x8FF5 0xE441 +0x8FF6 0x8D12 +0x8FF7 0x8D03 +0x8FF8 0xE444 +0x8FF9 0x8CDB +0x8FFA 0x705C +0x8FFB 0x8D11 +0x8FFC 0xE448 +0x8FFD 0x3ED0 +0x9040 0x8DA9 +0x9041 0xE44C +0x9042 0xE44D +0x9043 0xE44E +0x9044 0x3B7C +0x9045 0xE450 +0x9046 0xE451 +0x9047 0x7AE7 +0x9048 0x8EAD +0x9049 0x8EB6 +0x904A 0x8EC3 +0x904B 0x92D4 +0x904C 0x8F19 +0x904D 0x8F2D +0x904E 0xE459 +0x904F 0xE45A +0x9050 0x8FA5 +0x9051 0x9303 +0x9052 0xE45D +0x9053 0xE45E +0x9054 0x8FB3 +0x9055 0x492A +0x9056 0xE461 +0x9057 0xE462 +0x9058 0xE463 +0x9059 0x5EF8 +0x905A 0xE465 +0x905B 0x8FF9 +0x905C 0xE467 +0x905D 0xE468 +0x905E 0xE469 +0x905F 0xE46A +0x9060 0x3980 +0x9061 0xE46C +0x9062 0x9037 +0x9063 0xE46E +0x9064 0xE46F +0x9065 0x9061 +0x9066 0xE471 +0x9067 0xE472 +0x9068 0x90A8 +0x9069 0xE474 +0x906A 0x90C4 +0x906B 0xE476 +0x906C 0x90AE +0x906E 0x9167 +0x906F 0x3AF0 +0x9070 0x91A9 +0x9071 0x91C4 +0x9072 0x7CAC +0x9073 0xE47E +0x9074 0xE47F +0x9075 0x920E +0x9076 0x6C9F +0x9077 0x9241 +0x9078 0x9262 +0x9079 0xE484 +0x907B 0xE486 +0x907C 0xE487 +0x907D 0xE488 +0x907E 0xE489 +0x90A1 0xE48A +0x90A2 0x932C +0x90A3 0x936B +0x90A4 0xE48D +0x90A5 0xE48E +0x90A6 0x708F +0x90A7 0x5AC3 +0x90A8 0xE491 +0x90A9 0xE492 +0x90AA 0x4965 +0x90AB 0x9244 +0x90AC 0xE495 +0x90AD 0xE496 +0x90AE 0xE497 +0x90AF 0x9373 +0x90B0 0x945B +0x90B1 0x8EBC +0x90B2 0x9585 +0x90B3 0x95A6 +0x90B4 0x9426 +0x90B5 0x95A0 +0x90B6 0x6FF6 +0x90B7 0x42B9 +0x90B8 0xE4A1 +0x90B9 0xE4A2 +0x90BA 0xE4A3 +0x90BB 0xE4A4 +0x90BC 0x49DF +0x90BD 0x6C1C +0x90BE 0x967B +0x90BF 0x9696 +0x90C0 0x416C +0x90C1 0x96A3 +0x90C2 0xE4AB +0x90C3 0x61DA +0x90C4 0x96B6 +0x90C5 0x78F5 +0x90C6 0xE4AF +0x90C7 0x96BD +0x90C8 0x53CC +0x90C9 0x49A1 +0x90CA 0xE4B3 +0x90CB 0xE4B4 +0x90CC 0xE4B5 +0x90CD 0xE4B6 +0x90CE 0xE4B7 +0x90CF 0xE4B8 +0x90D0 0xE4B9 +0x90D1 0xE4BA +0x90D2 0x9731 +0x90D3 0x8642 +0x90D4 0x9736 +0x90D5 0x4A0F +0x90D6 0x453D +0x90D7 0x4585 +0x90D8 0xE4C1 +0x90D9 0x7075 +0x90DA 0x5B41 +0x90DB 0x971B +0x90DD 0xE4C6 +0x90DE 0x9757 +0x90DF 0x5B4A +0x90E0 0xE4C9 +0x90E1 0x975F +0x90E2 0x9425 +0x90E3 0x50D0 +0x90E4 0xE4CD +0x90E5 0xE4CE +0x90E6 0x9789 +0x90E7 0x979F +0x90E8 0x97B1 +0x90E9 0x97BE +0x90EA 0x97C0 +0x90EB 0x97D2 +0x90EC 0x97E0 +0x90ED 0xE4D6 +0x90EE 0x97EE +0x90EF 0x741C +0x90F0 0xE4D9 +0x90F2 0x97F5 +0x90F3 0xE4DC +0x90F4 0xE4DD +0x90F5 0x4AD1 +0x90F6 0x9834 +0x90F7 0x9833 +0x90F8 0x984B +0x90F9 0x9866 +0x90FA 0x3B0E +0x90FB 0xE4E4 +0x90FC 0x3D51 +0x90FD 0xE4E6 +0x90FE 0xE4E7 +0x9140 0xE4E8 +0x9141 0x98CA +0x9142 0x98B7 +0x9143 0x98C8 +0x9144 0x98C7 +0x9145 0x4AFF +0x9146 0xE4EE +0x9147 0xE4EF +0x9148 0x55B0 +0x9149 0x98E1 +0x914A 0x98E6 +0x914B 0x98EC +0x914C 0x9378 +0x914D 0x9939 +0x914E 0xE4F6 +0x914F 0x4B72 +0x9150 0xE4F8 +0x9151 0xE4F9 +0x9152 0x99F5 +0x9153 0x9A0C +0x9154 0x9A3B +0x9155 0x9A10 +0x9156 0x9A58 +0x9157 0xE4FF +0x9158 0x36C4 +0x9159 0xE501 +0x915A 0xE502 +0x915B 0x9AE0 +0x915C 0x9AE2 +0x915D 0xE505 +0x915E 0x9AF4 +0x915F 0x4C0E +0x9160 0x9B14 +0x9161 0x9B2D +0x9162 0xE50A +0x9163 0x5034 +0x9164 0x9B34 +0x9165 0xE50D +0x9166 0x38C3 +0x9167 0xE50F +0x9168 0x9B50 +0x9169 0x9B40 +0x916A 0xE512 +0x916B 0x5A45 +0x916C 0xE514 +0x916D 0x9B8E +0x916E 0xE516 +0x916F 0x9C02 +0x9170 0x9BFF +0x9171 0x9C0C +0x9172 0xE51A +0x9173 0x9DD4 +0x9174 0xE51C +0x9175 0xE51D +0x9176 0xE51E +0x9177 0xE51F +0x9178 0xE520 +0x9179 0xE521 +0x917A 0x9D7E +0x917B 0x9D83 +0x917C 0xE524 +0x917D 0x9E0E +0x917E 0x6888 +0x91A1 0x9DC4 +0x91A2 0xE528 +0x91A3 0xE529 +0x91A4 0xE52A +0x91A5 0xE52B +0x91A6 0xE52C +0x91A7 0x9D39 +0x91A8 0xE52E +0x91A9 0xE52F +0x91AA 0x9E90 +0x91AB 0x9E95 +0x91AC 0x9E9E +0x91AD 0x9EA2 +0x91AE 0x4D34 +0x91AF 0x9EAA +0x91B0 0x9EAF +0x91B1 0xE537 +0x91B2 0x9EC1 +0x91B3 0x3B60 +0x91B4 0x39E5 +0x91B5 0x3D1D +0x91B6 0x4F32 +0x91B7 0x37BE +0x91B8 0xE53E +0x91B9 0x9F02 +0x91BA 0x9F08 +0x91BB 0x4B96 +0x91BC 0x9424 +0x91BD 0xE543 +0x91BE 0x9F17 +0x91C0 0x9F39 +0x91C1 0x569F +0x91C2 0x568A +0x91C3 0x9F45 +0x91C4 0x99B8 +0x91C5 0xE54B +0x91C6 0x97F2 +0x91C7 0x847F +0x91C8 0x9F62 +0x91C9 0x9F69 +0x91CA 0x7ADC +0x91CB 0x9F8E +0x91CC 0x7216 +0x91CD 0x4BBE +0x91CE 0xE554 +0x91CF 0xE555 +0x91D0 0x7177 +0x91D1 0xE557 +0x91D2 0xE558 +0x91D3 0xE559 +0x91D4 0x739E +0x91D5 0xE55B +0x91D6 0xE55C +0x91D7 0x799F +0x91D8 0xE55E +0x91D9 0xE55F +0x91DA 0x9369 +0x91DB 0x93F3 +0x91DC 0xE562 +0x91DD 0x92EC +0x91DE 0x9381 +0x91DF 0x93CB +0x91E0 0xE566 +0x91E1 0xE567 +0x91E2 0x7217 +0x91E3 0x3EEB +0x91E4 0x7772 +0x91E5 0x7A43 +0x91E6 0x70D0 +0x91E7 0xE56D +0x91E8 0xE56E +0x91E9 0x717E +0x91EA 0xE570 +0x91EB 0x70A3 +0x91EC 0xE572 +0x91ED 0xE573 +0x91EE 0x3EC7 +0x91EF 0xE575 +0x91F0 0xE576 +0x91F1 0xE577 +0x91F2 0x3722 +0x91F3 0xE579 +0x91F4 0xE57A +0x91F5 0x36E1 +0x91F6 0xE57C +0x91F7 0xE57D +0x91F8 0xE57E +0x91F9 0x3723 +0x91FA 0xE580 +0x91FB 0x575B +0x91FC 0xE582 +0x91FD 0xE583 +0x91FE 0xE584 +0x9240 0xE585 +0x9241 0xE586 +0x9242 0x8503 +0x9243 0xE588 +0x9245 0x8455 +0x9246 0xE58B +0x9247 0xE58C +0x9248 0xE58D +0x9249 0xE58E +0x924A 0xE58F +0x924B 0xE590 +0x924C 0x44F4 +0x924D 0xE592 +0x924E 0xE593 +0x924F 0xE594 +0x9250 0x67F9 +0x9251 0x3733 +0x9252 0x3C15 +0x9253 0x3DE7 +0x9254 0x586C +0x9255 0xE59A +0x9256 0x6810 +0x9257 0x4057 +0x9258 0xE59D +0x9259 0xE59E +0x925A 0xE59F +0x925B 0xE5A0 +0x925C 0xE5A1 +0x925D 0x54CB +0x925E 0x569E +0x925F 0xE5A4 +0x9260 0x5692 +0x9261 0xE5A6 +0x9262 0xE5A7 +0x9263 0xE5A8 +0x9264 0x93C6 +0x9265 0xE5AA +0x9266 0x939C +0x9267 0x4EF8 +0x9268 0x512B +0x9269 0x3819 +0x926A 0xE5AF +0x926B 0x4EBC +0x926C 0xE5B1 +0x926D 0xE5B2 +0x926E 0x4F4B +0x926F 0x4F8A +0x9270 0xE5B5 +0x9271 0x5A68 +0x9272 0xE5B7 +0x9273 0xE5B8 +0x9274 0x3999 +0x9275 0xE5BA +0x9276 0xE5BB +0x9277 0x3435 +0x9278 0x4F29 +0x9279 0xE5BE +0x927A 0xE5BF +0x927B 0xE5C0 +0x927C 0x8ADA +0x927D 0xE5C2 +0x927E 0x4E98 +0x92A1 0x50CD +0x92A2 0x510D +0x92A3 0x4FA2 +0x92A4 0x4F03 +0x92A5 0xE5C8 +0x92A6 0xE5C9 +0x92A7 0x4F42 +0x92A8 0x502E +0x92A9 0x506C +0x92AA 0x5081 +0x92AB 0x4FCC +0x92AC 0x4FE5 +0x92AD 0x5058 +0x92AE 0x50FC +0x92B3 0x6E76 +0x92B4 0xE5D7 +0x92B5 0xE5D8 +0x92B6 0xE5D9 +0x92B7 0x6D72 +0x92B8 0xE5DB +0x92B9 0xE5DC +0x92BA 0x51A8 +0x92BB 0x51C3 +0x92BC 0xE5DF +0x92BD 0x44DD +0x92BE 0xE5E1 +0x92BF 0xE5E2 +0x92C0 0xE5E3 +0x92C1 0x8D7A +0x92C2 0xE5E5 +0x92C3 0xE5E6 +0x92C4 0x5259 +0x92C5 0x52A4 +0x92C6 0xE5E9 +0x92C7 0x52E1 +0x92C9 0x467A +0x92CA 0x718C +0x92CB 0xE5EE +0x92CC 0xE5EF +0x92CD 0xE5F0 +0x92CE 0xE5F1 +0x92CF 0x69D1 +0x92D0 0xE5F3 +0x92D2 0x3EDE +0x92D3 0x7499 +0x92D4 0x7414 +0x92D5 0x7456 +0x92D6 0x7398 +0x92D7 0x4B8E +0x92D8 0xE5FB +0x92D9 0xE5FC +0x92DA 0x53D0 +0x92DB 0x3584 +0x92DC 0x720F +0x92DD 0xE600 +0x92DE 0x55B4 +0x92DF 0xE602 +0x92E0 0x54CD +0x92E1 0xE604 +0x92E2 0x571D +0x92E3 0x925D +0x92E4 0x96F4 +0x92E5 0x9366 +0x92E6 0x57DD +0x92E7 0x578D +0x92E8 0x577F +0x92E9 0x363E +0x92EA 0x58CB +0x92EB 0x5A99 +0x92EC 0xE60F +0x92ED 0xE610 +0x92EE 0xE611 +0x92EF 0xE612 +0x92F0 0x5A2C +0x92F1 0x59B8 +0x92F2 0x928F +0x92F3 0x5A7E +0x92F4 0x5ACF +0x92F5 0x5A12 +0x92F6 0xE619 +0x92F7 0xE61A +0x92F8 0xE61B +0x92F9 0xE61C +0x92FA 0x36F5 +0x92FB 0x6D05 +0x92FC 0x7443 +0x92FD 0x5A21 +0x92FE 0xE621 +0x9340 0x5A81 +0x9341 0xE623 +0x9342 0xE624 +0x9343 0x93E0 +0x9344 0x748C +0x9345 0xE627 +0x9346 0x7105 +0x9347 0x4972 +0x9348 0x9408 +0x9349 0xE62B +0x934A 0x93BD +0x934B 0x37A0 +0x934C 0x5C1E +0x934D 0x5C9E +0x934E 0x5E5E +0x934F 0x5E48 +0x9350 0xE632 +0x9351 0xE633 +0x9352 0xE634 +0x9353 0x5ECD +0x9354 0x5B4F +0x9355 0xE637 +0x9356 0xE638 +0x9357 0x3701 +0x9358 0xE63A +0x9359 0x36DD +0x935A 0xE63C +0x935B 0x36D3 +0x935C 0x812A +0x935D 0xE63F +0x935E 0xE640 +0x935F 0xE641 +0x9360 0xE642 +0x9361 0x5F0C +0x9362 0x5F0E +0x9363 0xE645 +0x9364 0xE646 +0x9365 0x5A6B +0x9366 0xE648 +0x9367 0x5B44 +0x9368 0x8614 +0x9369 0xE64B +0x936A 0x8860 +0x936B 0x607E +0x936C 0xE64E +0x936D 0xE64F +0x936E 0x5FDB +0x936F 0x3EB8 +0x9370 0xE652 +0x9371 0xE653 +0x9372 0xE654 +0x9373 0xE655 +0x9374 0x61C0 +0x9375 0xE657 +0x9376 0xE658 +0x9377 0xE659 +0x9378 0x6199 +0x9379 0x6198 +0x937A 0x6075 +0x937B 0xE65D +0x937C 0xE65E +0x937D 0xE65F +0x937E 0xE660 +0x93A1 0x6471 +0x93A2 0xE662 +0x93A3 0xE663 +0x93A4 0x3A29 +0x93A5 0xE665 +0x93A6 0xE666 +0x93A7 0xE667 +0x93A8 0xE668 +0x93A9 0x6337 +0x93AA 0xE66A +0x93AB 0x64B6 +0x93AC 0x6331 +0x93AD 0x63D1 +0x93AE 0xE66E +0x93AF 0xE66F +0x93B0 0x62A4 +0x93B1 0xE671 +0x93B2 0x643B +0x93B3 0x656B +0x93B4 0x6972 +0x93B5 0x3BF4 +0x93B6 0xE676 +0x93B7 0xE677 +0x93B8 0xE678 +0x93B9 0xE679 +0x93BA 0x550D +0x93BB 0xE67B +0x93BC 0xE67C +0x93BD 0xE67D +0x93BE 0x66CE +0x93BF 0xE67F +0x93C0 0xE680 +0x93C1 0x3AE0 +0x93C2 0x4190 +0x93C3 0xE683 +0x93C4 0xE684 +0x93C5 0xE685 +0x93C6 0xE686 +0x93C7 0xE687 +0x93C8 0xE688 +0x93C9 0x78EE +0x93CA 0xE68A +0x93CB 0xE68B +0x93CC 0xE68C +0x93CD 0x3464 +0x93CE 0xE68E +0x93CF 0xE68F +0x93D0 0xE690 +0x93D1 0x668E +0x93D2 0xE692 +0x93D3 0x666B +0x93D4 0x4B93 +0x93D5 0x6630 +0x93D6 0xE696 +0x93D7 0xE697 +0x93D8 0x6663 +0x93D9 0xE699 +0x93DA 0xE69A +0x93DB 0x661E +0x93DC 0xE69C +0x93DD 0x38D1 +0x93DE 0xE69E +0x93DF 0xE69F +0x93E0 0x3B99 +0x93E1 0xE6A1 +0x93E2 0xE6A2 +0x93E3 0x74D0 +0x93E4 0x3B96 +0x93E5 0x678F +0x93E6 0xE6A6 +0x93E7 0x68B6 +0x93E8 0x681E +0x93E9 0x3BC4 +0x93EA 0x6ABE +0x93EB 0x3863 +0x93EC 0xE6AC +0x93ED 0xE6AD +0x93EE 0x6A33 +0x93EF 0x6A52 +0x93F0 0x6AC9 +0x93F1 0x6B05 +0x93F2 0xE6B2 +0x93F3 0x6511 +0x93F4 0x6898 +0x93F5 0x6A4C +0x93F6 0x3BD7 +0x93F7 0x6A7A +0x93F8 0x6B57 +0x93F9 0xE6B9 +0x93FA 0xE6BA +0x93FB 0x93A0 +0x93FC 0x92F2 +0x93FD 0xE6BD +0x93FE 0xE6BE +0x9440 0x9289 +0x9441 0xE6C0 +0x9442 0xE6C1 +0x9443 0x9467 +0x9444 0x6DA5 +0x9445 0x6F0B +0x9446 0xE6C5 +0x9448 0xE6C7 +0x9449 0x3D8F +0x944A 0x6E04 +0x944B 0xE6CA +0x944C 0x5A3D +0x944D 0x6E0A +0x944E 0x5847 +0x944F 0x6D24 +0x9450 0x7842 +0x9451 0x713B +0x9452 0xE6D1 +0x9453 0xE6D2 +0x9454 0x70F1 +0x9455 0x7250 +0x9456 0x7287 +0x9457 0x7294 +0x9458 0xE6D7 +0x9459 0xE6D8 +0x945A 0x5179 +0x945B 0xE6DA +0x945C 0xE6DB +0x945D 0x747A +0x945E 0xE6DD +0x945F 0xE6DE +0x9460 0xE6DF +0x9461 0xE6E0 +0x9462 0xE6E1 +0x9463 0x3F06 +0x9464 0x3EB1 +0x9465 0xE6E4 +0x9466 0xE6E5 +0x9467 0xE6E6 +0x9468 0x60A7 +0x9469 0x3EF3 +0x946A 0x74CC +0x946B 0x743C +0x946C 0x9387 +0x946D 0x7437 +0x946E 0x449F +0x946F 0xE6EE +0x9470 0x4551 +0x9471 0x7583 +0x9472 0x3F63 +0x9473 0xE6F2 +0x9474 0xE6F3 +0x9475 0x3F58 +0x9476 0x7555 +0x9477 0x7673 +0x9478 0xE6F7 +0x9479 0x3B19 +0x947A 0x7468 +0x947B 0xE6FA +0x947C 0xE6FB +0x947D 0xE6FC +0x947E 0x3AFB +0x94A1 0x3DCD +0x94A2 0xE6FF +0x94A3 0x3EFF +0x94A4 0xE701 +0x94A5 0xE702 +0x94A6 0x91FA +0x94A7 0x5732 +0x94A8 0x9342 +0x94A9 0xE706 +0x94AA 0xE707 +0x94AB 0x50DF +0x94AC 0xE709 +0x94AD 0xE70A +0x94AE 0x7778 +0x94AF 0xE70C +0x94B0 0x770E +0x94B1 0x770F +0x94B2 0x777B +0x94B3 0xE710 +0x94B4 0xE711 +0x94B5 0x3A5E +0x94B6 0xE713 +0x94B7 0x7438 +0x94B8 0x749B +0x94B9 0x3EBF +0x94BA 0xE717 +0x94BB 0xE718 +0x94BC 0x40C8 +0x94BD 0xE71A +0x94BE 0xE71B +0x94BF 0x9307 +0x94C0 0xE71D +0x94C1 0x781E +0x94C2 0x788D +0x94C3 0x7888 +0x94C4 0x78D2 +0x94C5 0x73D0 +0x94C6 0x7959 +0x94C7 0xE724 +0x94C8 0xE725 +0x94C9 0x410E +0x94CB 0x8496 +0x94CC 0x79A5 +0x94CD 0x6A2D +0x94CE 0xE72B +0x94CF 0x7A3A +0x94D0 0x79F4 +0x94D1 0x416E +0x94D2 0xE72F +0x94D3 0x4132 +0x94D4 0x9235 +0x94D5 0x79F1 +0x94D6 0xE733 +0x94D7 0xE734 +0x94D8 0xE735 +0x94D9 0xE736 +0x94DA 0xE737 +0x94DB 0x3597 +0x94DC 0x556B +0x94DD 0x3570 +0x94DE 0x36AA +0x94DF 0xE73C +0x94E0 0xE73D +0x94E1 0x7AE2 +0x94E2 0x5A59 +0x94E3 0xE740 +0x94E4 0xE741 +0x94E5 0xE742 +0x94E6 0x5A0D +0x94E7 0xE744 +0x94E8 0x78F0 +0x94E9 0x5A2A +0x94EA 0xE747 +0x94EB 0x7AFE +0x94EC 0x41F9 +0x94ED 0x7C5D +0x94EE 0x7C6D +0x94EF 0x4211 +0x94F0 0xE74D +0x94F1 0xE74E +0x94F2 0xE74F +0x94F3 0x7CCD +0x94F4 0xE751 +0x94F5 0xE752 +0x94F6 0x7C8E +0x94F7 0x7C7C +0x94F8 0x7CAE +0x94F9 0x6AB2 +0x94FA 0x7DDC +0x94FB 0x7E07 +0x94FC 0x7DD3 +0x94FD 0x7F4E +0x94FE 0xE75B +0x9540 0xE75C +0x9541 0xE75D +0x9542 0x7D97 +0x9543 0xE75F +0x9544 0x426A +0x9545 0xE761 +0x9546 0xE762 +0x9547 0x67D6 +0x9548 0xE764 +0x9549 0xE765 +0x954A 0x57C4 +0x954B 0xE767 +0x954C 0xE768 +0x954D 0xE769 +0x954E 0x7FDD +0x954F 0x7B27 +0x9550 0xE76C +0x9551 0xE76D +0x9552 0xE76E +0x9553 0x7B0C +0x9554 0xE770 +0x9555 0x99E6 +0x9556 0x8645 +0x9557 0x9A63 +0x9558 0x6A1C +0x9559 0xE775 +0x955A 0x39E2 +0x955B 0xE777 +0x955C 0xE778 +0x955D 0x9A1F +0x955E 0xE77A +0x955F 0x8480 +0x9560 0xE77C +0x9561 0xE77D +0x9562 0x44EA +0x9563 0x8137 +0x9564 0x4402 +0x9565 0x80C6 +0x9566 0x8109 +0x9567 0x8142 +0x9568 0xE784 +0x9569 0x98C3 +0x956A 0xE786 +0x956B 0x8262 +0x956C 0x8265 +0x956D 0xE789 +0x956E 0x8453 +0x956F 0xE78B +0x9570 0x8610 +0x9571 0xE78D +0x9572 0x5A86 +0x9573 0x417F +0x9574 0xE790 +0x9575 0x5B2B +0x9576 0xE792 +0x9577 0x5AE4 +0x9578 0xE794 +0x9579 0x86A0 +0x957A 0xE796 +0x957B 0xE797 +0x957C 0x882D +0x957D 0xE799 +0x957E 0x5A02 +0x95A1 0x886E +0x95A2 0x4F45 +0x95A3 0x8887 +0x95A4 0x88BF +0x95A5 0x88E6 +0x95A6 0x8965 +0x95A7 0x894D +0x95A8 0xE7A2 +0x95A9 0x8954 +0x95AA 0xE7A4 +0x95AB 0xE7A5 +0x95AC 0xE7A6 +0x95AD 0xE7A7 +0x95AE 0xE7A8 +0x95AF 0xE7A9 +0x95B0 0x3EAD +0x95B1 0x84A3 +0x95B2 0x46F5 +0x95B3 0x46CF +0x95B4 0x37F2 +0x95B5 0x8A3D +0x95B6 0x8A1C +0x95B7 0xE7B1 +0x95B8 0x5F4D +0x95B9 0x922B +0x95BA 0xE7B4 +0x95BB 0x65D4 +0x95BC 0x7129 +0x95BD 0x70C4 +0x95BE 0xE7B8 +0x95BF 0x9D6D +0x95C0 0x8C9F +0x95C1 0x8CE9 +0x95C2 0xE7BC +0x95C3 0x599A +0x95C4 0x77C3 +0x95C5 0x59F0 +0x95C6 0x436E +0x95C7 0x36D4 +0x95C8 0x8E2A +0x95C9 0x8EA7 +0x95CA 0xE7C4 +0x95CB 0x8F30 +0x95CC 0x8F4A +0x95CD 0x42F4 +0x95CE 0x6C58 +0x95CF 0x6FBB +0x95D0 0xE7CA +0x95D1 0x489B +0x95D2 0x6F79 +0x95D3 0x6E8B +0x95D4 0xE7CE +0x95D5 0x9BE9 +0x95D6 0x36B5 +0x95D7 0xE7D1 +0x95D8 0x90BB +0x95DA 0x5571 +0x95DB 0x4906 +0x95DC 0x91BB +0x95DD 0x9404 +0x95DE 0xE7D8 +0x95DF 0x4062 +0x95E0 0xE7DA +0x95E1 0x9427 +0x95E2 0xE7DC +0x95E3 0xE7DD +0x95E4 0x84E5 +0x95E5 0x8A2B +0x95E6 0x9599 +0x95E7 0x95A7 +0x95E8 0x9597 +0x95E9 0x9596 +0x95EA 0xE7E4 +0x95EB 0x7445 +0x95EC 0x3EC2 +0x95ED 0xE7E7 +0x95EE 0xE7E8 +0x95EF 0xE7E9 +0x95F0 0x3EE7 +0x95F1 0xE7EB +0x95F2 0x968F +0x95F3 0xE7ED +0x95F4 0xE7EE +0x95F5 0xE7EF +0x95F6 0x3ECC +0x95F7 0xE7F1 +0x95F8 0xE7F2 +0x95F9 0xE7F3 +0x95FA 0x7412 +0x95FB 0x746B +0x95FC 0x3EFC +0x95FD 0x9741 +0x95FE 0xE7F8 +0x9640 0x6847 +0x9641 0x4A1D +0x9642 0xE7FB +0x9643 0xE7FC +0x9645 0x9368 +0x9646 0xE7FF +0x9647 0xE800 +0x9648 0xE801 +0x9649 0xE802 +0x964A 0x92BA +0x964B 0x5B11 +0x964C 0x8B69 +0x964D 0x493C +0x964E 0x73F9 +0x964F 0xE808 +0x9650 0x979B +0x9651 0x9771 +0x9652 0x9938 +0x9653 0xE80C +0x9654 0x5DC1 +0x9655 0xE80E +0x9656 0xE80F +0x9657 0x981F +0x9658 0xE811 +0x9659 0x92F6 +0x965A 0xE813 +0x965B 0x91E5 +0x965C 0x44C0 +0x965D 0xE816 +0x965E 0xE817 +0x965F 0xE818 +0x9660 0x98DC +0x9661 0xE81A +0x9662 0x3F00 +0x9663 0x922A +0x9664 0x4925 +0x9665 0x8414 +0x9666 0x993B +0x9667 0x994D +0x9668 0xE821 +0x9669 0x3DFD +0x966A 0x999B +0x966B 0x4B6F +0x966C 0x99AA +0x966D 0x9A5C +0x966E 0xE827 +0x966F 0xE828 +0x9670 0x6A8F +0x9671 0x9A21 +0x9672 0x5AFE +0x9673 0x9A2F +0x9674 0xE82D +0x9675 0x4B90 +0x9676 0xE82F +0x9677 0x99BC +0x9678 0x4BBD +0x9679 0x4B97 +0x967A 0x937D +0x967B 0x5872 +0x967C 0xE835 +0x967D 0x5822 +0x967E 0xE837 +0x96A1 0xE838 +0x96A2 0x7844 +0x96A3 0xE83A +0x96A4 0xE83B +0x96A5 0x68C5 +0x96A6 0x3D7D +0x96A7 0x9458 +0x96A8 0x3927 +0x96A9 0x6150 +0x96AA 0xE841 +0x96AB 0xE842 +0x96AC 0x6107 +0x96AD 0x9C4F +0x96AE 0x9C53 +0x96AF 0x9C7B +0x96B0 0x9C35 +0x96B1 0x9C10 +0x96B2 0x9B7F +0x96B3 0x9BCF +0x96B4 0xE84B +0x96B5 0x9B9F +0x96B6 0xE84D +0x96B7 0xE84E +0x96B8 0x9D21 +0x96B9 0x4CAE +0x96BA 0xE851 +0x96BB 0x9E18 +0x96BC 0x4CB0 +0x96BD 0x9D0C +0x96BE 0xE855 +0x96BF 0xE856 +0x96C0 0xE857 +0x96C1 0xE858 +0x96C2 0x9DA5 +0x96C3 0x84BD +0x96C4 0xE85B +0x96C5 0xE85C +0x96C6 0xE85D +0x96C7 0x85FC +0x96C8 0x4533 +0x96C9 0xE860 +0x96CA 0xE861 +0x96CB 0xE862 +0x96CC 0x8420 +0x96CD 0x85EE +0x96CE 0xE865 +0x96CF 0xE866 +0x96D0 0xE867 +0x96D1 0x79E2 +0x96D2 0xE869 +0x96D3 0xE86A +0x96D4 0x492D +0x96D5 0xE86C +0x96D6 0x3D62 +0x96D7 0x93DB +0x96D8 0x92BE +0x96D9 0x9348 +0x96DA 0xE871 +0x96DB 0x78B9 +0x96DC 0x9277 +0x96DD 0x944D +0x96DE 0x4FE4 +0x96DF 0x3440 +0x96E0 0x9064 +0x96E1 0xE878 +0x96E2 0x783D +0x96E3 0x7854 +0x96E4 0x78B6 +0x96E5 0x784B +0x96E6 0xE87D +0x96E7 0xE87E +0x96E8 0xE87F +0x96E9 0x369A +0x96EA 0x4F72 +0x96EB 0x6FDA +0x96EC 0x6FD9 +0x96EE 0x701E +0x96EF 0x5414 +0x96F0 0xE887 +0x96F1 0x57BB +0x96F2 0x58F3 +0x96F3 0x578A +0x96F4 0x9D16 +0x96F5 0x57D7 +0x96F6 0x7134 +0x96F7 0x34AF +0x96F8 0xE88F +0x96F9 0x71EB +0x96FA 0xE891 +0x96FB 0xE892 +0x96FD 0xE894 +0x96FE 0xE895 +0x9740 0x610C +0x9741 0x5ACE +0x9742 0x5A0B +0x9743 0x42BC +0x9744 0xE89A +0x9745 0x372C +0x9746 0x4B7B +0x9747 0xE89D +0x9748 0x93BB +0x9749 0x93B8 +0x974A 0xE8A0 +0x974B 0xE8A1 +0x974C 0x8472 +0x974D 0xE8A3 +0x974E 0xE8A4 +0x974F 0xE8A5 +0x9750 0xE8A6 +0x9751 0xE8A7 +0x9752 0x5994 +0x9753 0xE8A9 +0x9754 0xE8AA +0x9755 0x7DA8 +0x9756 0xE8AC +0x9757 0xE8AD +0x9758 0xE8AE +0x9759 0xE8AF +0x975A 0xE8B0 +0x975B 0x92E5 +0x975C 0x73E2 +0x975D 0x3EE9 +0x975E 0x74B4 +0x975F 0xE8B5 +0x9760 0xE8B6 +0x9761 0x3EE1 +0x9762 0xE8B8 +0x9763 0x6AD8 +0x9764 0x73F3 +0x9765 0x73FB +0x9766 0x3ED6 +0x9767 0xE8BD +0x9768 0xE8BE +0x9769 0xE8BF +0x976A 0xE8C0 +0x976B 0xE8C1 +0x976C 0xE8C2 +0x976D 0xE8C3 +0x976E 0x7448 +0x976F 0xE8C5 +0x9770 0x70A5 +0x9771 0xE8C7 +0x9772 0x9284 +0x9773 0x73E6 +0x9774 0x935F +0x9775 0xE8CB +0x9776 0x9331 +0x9777 0xE8CD +0x9778 0xE8CE +0x9779 0x9386 +0x977A 0xE8D0 +0x977B 0xE8D1 +0x977C 0x4935 +0x977D 0xE8D3 +0x977E 0x716B +0x97A1 0xE8D5 +0x97A2 0xE8D6 +0x97A3 0x56A4 +0x97A4 0xE8D8 +0x97A5 0xE8D9 +0x97A6 0xE8DA +0x97A7 0x5502 +0x97A8 0x79C4 +0x97A9 0xE8DD +0x97AA 0x7DFE +0x97AB 0xE8DF +0x97AC 0xE8E0 +0x97AD 0xE8E1 +0x97AE 0x452E +0x97AF 0x9401 +0x97B0 0x370A +0x97B1 0xE8E5 +0x97B2 0xE8E6 +0x97B3 0x59B0 +0x97B4 0xE8E8 +0x97B5 0xE8E9 +0x97B6 0xE8EA +0x97B7 0x5AA1 +0x97B8 0x36E2 +0x97B9 0xE8ED +0x97BA 0x36B0 +0x97BB 0x925F +0x97BC 0x5A79 +0x97BD 0xE8F1 +0x97BE 0xE8F2 +0x97BF 0x9374 +0x97C0 0x3CCD +0x97C1 0xE8F5 +0x97C2 0x4A96 +0x97C3 0x398A +0x97C4 0x50F4 +0x97C5 0x3D69 +0x97C6 0x3D4C +0x97C7 0xE8FB +0x97C8 0x7175 +0x97C9 0x42FB +0x97CA 0xE8FE +0x97CB 0x6E0F +0x97CC 0xE900 +0x97CD 0x44EB +0x97CE 0x6D57 +0x97CF 0xE903 +0x97D0 0x7067 +0x97D1 0x6CAF +0x97D2 0x3CD6 +0x97D3 0xE907 +0x97D4 0xE908 +0x97D5 0x6E02 +0x97D6 0x6F0C +0x97D7 0x3D6F +0x97D8 0xE90C +0x97D9 0x7551 +0x97DA 0x36BC +0x97DB 0x34C8 +0x97DC 0x4680 +0x97DD 0x3EDA +0x97DE 0x4871 +0x97DF 0x59C4 +0x97E0 0x926E +0x97E1 0x493E +0x97E2 0x8F41 +0x97E3 0xE917 +0x97E4 0xE918 +0x97E5 0x5812 +0x97E6 0x57C8 +0x97E7 0x36D6 +0x97E8 0xE91C +0x97E9 0x70FE +0x97EA 0xE91E +0x97EB 0xE91F +0x97EC 0xE920 +0x97ED 0xE921 +0x97EE 0xE922 +0x97EF 0x68B9 +0x97F0 0x6967 +0x97F1 0xE925 +0x97F2 0xE926 +0x97F3 0xE927 +0x97F4 0xE928 +0x97F5 0xE929 +0x97F6 0xE92A +0x97F7 0xE92B +0x97F8 0xE92C +0x97F9 0x6A1A +0x97FA 0xE92E +0x97FB 0xE92F +0x97FC 0x843E +0x97FD 0x44DF +0x97FE 0x44CE +0x9840 0xE933 +0x9841 0xE934 +0x9842 0xE935 +0x9843 0xE936 +0x9844 0x6F17 +0x9845 0xE938 +0x9846 0x833D +0x9847 0xE93A +0x9848 0x83ED +0x9849 0xE93C +0x984A 0xE93D +0x984B 0xE93E +0x984C 0x5989 +0x984D 0x5A82 +0x984E 0xE941 +0x984F 0x5A61 +0x9850 0x5A71 +0x9851 0xE944 +0x9852 0xE945 +0x9853 0x372D +0x9854 0x59EF +0x9855 0xE948 +0x9856 0x36C7 +0x9857 0x718E +0x9858 0x9390 +0x9859 0x669A +0x985A 0xE94D +0x985B 0x5A6E +0x985C 0x5A2B +0x985D 0xE950 +0x985E 0x6A2B +0x985F 0xE952 +0x9860 0xE953 +0x9861 0xE954 +0x9862 0xE955 +0x9863 0x711D +0x9864 0xE957 +0x9865 0xE958 +0x9866 0x4FB0 +0x9867 0xE95A +0x9868 0x5CC2 +0x9869 0xE95C +0x986A 0xE95D +0x986B 0xE95E +0x986C 0x6A0C +0x986D 0xE960 +0x986E 0xE961 +0x986F 0x70A6 +0x9870 0x7133 +0x9871 0xE964 +0x9872 0x3DA5 +0x9873 0x6CDF +0x9874 0xE967 +0x9875 0xE968 +0x9876 0x7E65 +0x9877 0x59EB +0x9878 0x5D2F +0x9879 0x3DF3 +0x987A 0x5F5C +0x987B 0xE96E +0x987C 0xE96F +0x987D 0x7DA4 +0x987E 0x8426 +0x98A1 0x5485 +0x98A2 0xE973 +0x98A3 0xE974 +0x98A4 0xE975 +0x98A5 0x577E +0x98A6 0xE977 +0x98A7 0xE978 +0x98A8 0x3FE5 +0x98A9 0xE97A +0x98AA 0xE97B +0x98AB 0x7003 +0x98AC 0xE97D +0x98AD 0x5D70 +0x98AE 0x738F +0x98AF 0x7CD3 +0x98B0 0xE981 +0x98B1 0xE982 +0x98B2 0x4FC8 +0x98B3 0x7FE7 +0x98B4 0x72CD +0x98B5 0x7310 +0x98B6 0xE987 +0x98B7 0x7338 +0x98B8 0x7339 +0x98B9 0xE98A +0x98BA 0x7341 +0x98BB 0x7348 +0x98BC 0x3EA9 +0x98BD 0xE98E +0x98BE 0x906C +0x98BF 0x71F5 +0x98C0 0xE991 +0x98C1 0x73E1 +0x98C2 0x81F6 +0x98C3 0x3ECA +0x98C4 0x770C +0x98C5 0x3ED1 +0x98C6 0x6CA2 +0x98C7 0x56FD +0x98C8 0x7419 +0x98C9 0x741E +0x98CA 0x741F +0x98CB 0x3EE2 +0x98CC 0x3EF0 +0x98CD 0x3EF4 +0x98CE 0x3EFA +0x98CF 0x74D3 +0x98D0 0x3F0E +0x98D1 0x3F53 +0x98D2 0x7542 +0x98D3 0x756D +0x98D4 0x7572 +0x98D5 0x758D +0x98D6 0x3F7C +0x98D7 0x75C8 +0x98D8 0x75DC +0x98D9 0x3FC0 +0x98DA 0x764D +0x98DB 0x3FD7 +0x98DC 0x7674 +0x98DD 0x3FDC +0x98DE 0x767A +0x98DF 0xE9B0 +0x98E0 0x7188 +0x98E1 0x5623 +0x98E2 0x8980 +0x98E3 0x5869 +0x98E4 0x401D +0x98E5 0x7743 +0x98E6 0x4039 +0x98E7 0x6761 +0x98E8 0x4045 +0x98E9 0x35DB +0x98EA 0x7798 +0x98EB 0x406A +0x98EC 0x406F +0x98ED 0x5C5E +0x98EE 0x77BE +0x98EF 0x77CB +0x98F0 0x58F2 +0x98F1 0x7818 +0x98F2 0x70B9 +0x98F3 0x781C +0x98F4 0x40A8 +0x98F5 0x7839 +0x98F6 0x7847 +0x98F7 0x7851 +0x98F8 0x7866 +0x98F9 0x8448 +0x98FA 0xE9CB +0x98FB 0x7933 +0x98FC 0x6803 +0x98FD 0x7932 +0x98FE 0x4103 +0x9940 0x4109 +0x9941 0x7991 +0x9942 0x7999 +0x9943 0x8FBB +0x9944 0x7A06 +0x9945 0x8FBC +0x9946 0x4167 +0x9947 0x7A91 +0x9948 0x41B2 +0x9949 0x7ABC +0x994A 0x8279 +0x994B 0x41C4 +0x994C 0x7ACF +0x994D 0x7ADB +0x994E 0x41CF +0x994F 0x4E21 +0x9950 0x7B62 +0x9951 0x7B6C +0x9952 0x7B7B +0x9953 0x7C12 +0x9954 0x7C1B +0x9955 0x4260 +0x9956 0x427A +0x9957 0x7C7B +0x9958 0x7C9C +0x9959 0x428C +0x995A 0x7CB8 +0x995B 0x4294 +0x995C 0x7CED +0x995D 0x8F93 +0x995E 0x70C0 +0x995F 0xE9EF +0x9960 0x7DCF +0x9961 0x7DD4 +0x9962 0x7DD0 +0x9963 0x7DFD +0x9964 0x7FAE +0x9965 0x7FB4 +0x9966 0x729F +0x9967 0x4397 +0x9968 0x8020 +0x9969 0x8025 +0x996A 0x7B39 +0x996B 0x802E +0x996C 0x8031 +0x996D 0x8054 +0x996E 0x3DCC +0x996F 0x57B4 +0x9970 0x70A0 +0x9971 0x80B7 +0x9972 0x80E9 +0x9973 0x43ED +0x9974 0x810C +0x9975 0x732A +0x9976 0x810E +0x9977 0x8112 +0x9978 0x7560 +0x9979 0x8114 +0x997A 0x4401 +0x997B 0x3B39 +0x997C 0x8156 +0x997D 0x8159 +0x997E 0x815A +0x99A1 0x4413 +0x99A2 0x583A +0x99A3 0x817C +0x99A4 0x8184 +0x99A5 0x4425 +0x99A6 0x8193 +0x99A7 0x442D +0x99A8 0x81A5 +0x99A9 0x57EF +0x99AA 0x81C1 +0x99AB 0x81E4 +0x99AC 0x8254 +0x99AD 0x448F +0x99AE 0x82A6 +0x99AF 0x8276 +0x99B0 0x82CA +0x99B1 0x82D8 +0x99B2 0x82FF +0x99B3 0x44B0 +0x99B4 0x8357 +0x99B5 0x9669 +0x99B6 0x698A +0x99B7 0x8405 +0x99B8 0x70F5 +0x99B9 0x8464 +0x99BA 0x60E3 +0x99BB 0x8488 +0x99BC 0x4504 +0x99BD 0x84BE +0x99BE 0x84E1 +0x99BF 0x84F8 +0x99C0 0x8510 +0x99C1 0x8538 +0x99C2 0x8552 +0x99C3 0x453B +0x99C4 0x856F +0x99C5 0x8570 +0x99C6 0x85E0 +0x99C7 0x4577 +0x99C8 0x8672 +0x99C9 0x8692 +0x99CA 0x86B2 +0x99CB 0x86EF +0x99CC 0x9645 +0x99CD 0x878B +0x99CE 0x4606 +0x99CF 0x4617 +0x99D0 0x88AE +0x99D1 0x88FF +0x99D2 0x8924 +0x99D3 0x8947 +0x99D4 0x8991 +0x99D5 0xEA43 +0x99D6 0x8A29 +0x99D7 0x8A38 +0x99D8 0x8A94 +0x99D9 0x8AB4 +0x99DA 0x8C51 +0x99DB 0x8CD4 +0x99DC 0x8CF2 +0x99DD 0x8D1C +0x99DE 0x4798 +0x99DF 0x585F +0x99E0 0x8DC3 +0x99E1 0x47ED +0x99E2 0x4EEE +0x99E3 0x8E3A +0x99E4 0x55D8 +0x99E5 0x5754 +0x99E6 0x8E71 +0x99E7 0x55F5 +0x99E8 0x8EB0 +0x99E9 0x4837 +0x99EA 0x8ECE +0x99EB 0x8EE2 +0x99EC 0x8EE4 +0x99ED 0x8EED +0x99EE 0x8EF2 +0x99EF 0x8FB7 +0x99F0 0x8FC1 +0x99F1 0x8FCA +0x99F2 0x8FCC +0x99F3 0x9033 +0x99F4 0x99C4 +0x99F5 0x48AD +0x99F6 0x98E0 +0x99F7 0x9213 +0x99F8 0x491E +0x99F9 0x9228 +0x99FA 0x9258 +0x99FB 0x926B +0x99FC 0x92B1 +0x99FD 0x92AE +0x99FE 0x92BF +0x9A40 0x92E3 +0x9A41 0x92EB +0x9A42 0x92F3 +0x9A43 0x92F4 +0x9A44 0x92FD +0x9A45 0x9343 +0x9A46 0x9384 +0x9A47 0x93AD +0x9A48 0x4945 +0x9A49 0x4951 +0x9A4A 0x9EBF +0x9A4B 0x9417 +0x9A4C 0x5301 +0x9A4D 0x941D +0x9A4E 0x942D +0x9A4F 0x943E +0x9A50 0x496A +0x9A51 0x9454 +0x9A52 0x9479 +0x9A53 0x952D +0x9A54 0x95A2 +0x9A55 0x49A7 +0x9A56 0x95F4 +0x9A57 0x9633 +0x9A58 0x49E5 +0x9A59 0x67A0 +0x9A5A 0x4A24 +0x9A5B 0x9740 +0x9A5C 0x4A35 +0x9A5D 0x97B2 +0x9A5E 0x97C2 +0x9A5F 0x5654 +0x9A60 0x4AE4 +0x9A61 0x60E8 +0x9A62 0x98B9 +0x9A63 0x4B19 +0x9A64 0x98F1 +0x9A65 0x5844 +0x9A66 0x990E +0x9A67 0x9919 +0x9A68 0x51B4 +0x9A69 0x991C +0x9A6A 0x9937 +0x9A6B 0x9942 +0x9A6C 0x995D +0x9A6D 0x9962 +0x9A6E 0x4B70 +0x9A6F 0x99C5 +0x9A70 0x4B9D +0x9A71 0x9A3C +0x9A72 0x9B0F +0x9A73 0x7A83 +0x9A74 0x9B69 +0x9A75 0x9B81 +0x9A76 0x9BDD +0x9A77 0x9BF1 +0x9A78 0x9BF4 +0x9A79 0x4C6D +0x9A7A 0x9C20 +0x9A7B 0x376F +0x9A7C 0xEAA9 +0x9A7D 0x9D49 +0x9A7E 0x9C3A +0x9AA1 0x9EFE +0x9AA2 0x5650 +0x9AA3 0x9D93 +0x9AA4 0x9DBD +0x9AA5 0x9DC0 +0x9AA6 0x9DFC +0x9AA7 0x94F6 +0x9AA8 0x8FB6 +0x9AA9 0x9E7B +0x9AAA 0x9EAC +0x9AAB 0x9EB1 +0x9AAC 0x9EBD +0x9AAD 0x9EC6 +0x9AAE 0x94DC +0x9AAF 0x9EE2 +0x9AB0 0x9EF1 +0x9AB1 0x9EF8 +0x9AB2 0x7AC8 +0x9AB3 0x9F44 +0x9AB4 0xEABF +0x9AB5 0xEAC0 +0x9AB6 0xEAC1 +0x9AB7 0x691A +0x9AB8 0x94C3 +0x9AB9 0x59AC +0x9ABA 0xEAC5 +0x9ABB 0x5840 +0x9ABC 0x94C1 +0x9ABD 0x37B9 +0x9ABE 0xEAC9 +0x9ABF 0xEACA +0x9AC0 0xEACB +0x9AC1 0xEACC +0x9AC2 0x5757 +0x9AC3 0x7173 +0x9AC4 0xEACF +0x9AC5 0xEAD0 +0x9AC6 0xEAD1 +0x9AC7 0x546A +0x9AC8 0xEAD3 +0x9AC9 0xEAD4 +0x9ACA 0x549E +0x9ACB 0xEAD6 +0x9ACC 0xEAD7 +0x9ACD 0xEAD8 +0x9ACE 0xEAD9 +0x9ACF 0xEADA +0x9AD0 0x60E7 +0x9AD1 0xEADC +0x9AD2 0x567A +0x9AD3 0xEADE +0x9AD4 0xEADF +0x9AD5 0xEAE0 +0x9AD6 0xEAE1 +0x9AD7 0xEAE2 +0x9AD8 0xEAE3 +0x9AD9 0x6955 +0x9ADA 0x9C2F +0x9ADB 0x87A5 +0x9ADC 0xEAE7 +0x9ADD 0xEAE8 +0x9ADE 0xEAE9 +0x9ADF 0xEAEA +0x9AE0 0xEAEB +0x9AE1 0xEAEC +0x9AE2 0x5C20 +0x9AE3 0xEAEE +0x9AE4 0x5E0B +0x9AE5 0xEAF0 +0x9AE6 0xEAF1 +0x9AE7 0xEAF2 +0x9AE8 0x671E +0x9AE9 0xEAF4 +0x9AEA 0xEAF5 +0x9AEB 0xEAF6 +0x9AEC 0x3647 +0x9AED 0xEAF8 +0x9AEE 0xEAF9 +0x9AEF 0xEAFA +0x9AF0 0xEAFB +0x9AF1 0x5364 +0x9AF2 0x84AD +0x9AF3 0xEAFE +0x9AF4 0xEAFF +0x9AF5 0xEB00 +0x9AF6 0x8B81 +0x9AF7 0xEB02 +0x9AF8 0xEB03 +0x9AF9 0xEB04 +0x9AFA 0xEB05 +0x9AFB 0x4E78 +0x9AFC 0x70BB +0x9AFD 0xEB08 +0x9AFE 0xEB09 +0x9B40 0xEB0A +0x9B41 0xEB0B +0x9B42 0xEB0C +0x9B43 0xEB0D +0x9B44 0xEB0E +0x9B45 0xEB0F +0x9B46 0x62C3 +0x9B47 0xEB11 +0x9B48 0xEB12 +0x9B49 0x7198 +0x9B4A 0x6855 +0x9B4B 0xEB15 +0x9B4C 0x69E9 +0x9B4D 0x36C8 +0x9B4E 0xEB18 +0x9B4F 0xEB19 +0x9B50 0xEB1A +0x9B51 0xEB1B +0x9B52 0xEB1C +0x9B53 0xEB1D +0x9B54 0x82FD +0x9B55 0xEB1F +0x9B56 0xEB20 +0x9B57 0xEB21 +0x9B58 0x89A5 +0x9B59 0xEB23 +0x9B5A 0x8FA0 +0x9B5B 0xEB25 +0x9B5C 0x97B8 +0x9B5D 0xEB27 +0x9B5E 0x9847 +0x9B5F 0x9ABD +0x9B60 0xEB2A +0x9B62 0xEB2C +0x9B63 0xEB2D +0x9B64 0xEB2E +0x9B65 0xEB2F +0x9B66 0xEB30 +0x9B67 0xEB31 +0x9B68 0xEB32 +0x9B69 0xEB33 +0x9B6A 0xEB34 +0x9B6B 0xEB35 +0x9B6C 0xEB36 +0x9B6D 0xEB37 +0x9B6E 0xEB38 +0x9B6F 0xEB39 +0x9B70 0x5FB1 +0x9B71 0x6648 +0x9B72 0x66BF +0x9B73 0xEB3D +0x9B74 0xEB3E +0x9B75 0xEB3F +0x9B77 0xEB41 +0x9B79 0xEB43 +0x9B7A 0xEB44 +0x9B7C 0xEB46 +0x9B7D 0x58B5 +0x9B7E 0x670E +0x9BA1 0x6918 +0x9BA2 0xEB4A +0x9BA3 0xEB4B +0x9BA4 0xEB4C +0x9BA5 0xEB4D +0x9BA6 0xEB4E +0x9BA7 0xEB4F +0x9BA8 0xEB50 +0x9BA9 0x48D0 +0x9BAA 0x4AB8 +0x9BAB 0xEB53 +0x9BAC 0xEB54 +0x9BAD 0xEB55 +0x9BAE 0xEB56 +0x9BAF 0xEB57 +0x9BB0 0xEB58 +0x9BB1 0xEB59 +0x9BB2 0xEB5A +0x9BB3 0xEB5B +0x9BB4 0x51D2 +0x9BB5 0xEB5D +0x9BB6 0x599F +0x9BB7 0xEB5F +0x9BB8 0x3BBE +0x9BB9 0xEB61 +0x9BBA 0xEB62 +0x9BBB 0xEB63 +0x9BBC 0x5788 +0x9BBD 0xEB65 +0x9BBE 0x399B +0x9BBF 0xEB67 +0x9BC0 0xEB68 +0x9BC1 0xEB69 +0x9BC2 0x3762 +0x9BC3 0xEB6B +0x9BC4 0x8B5E +0x9BC5 0xEB6D +0x9BC7 0xEB6F +0x9BC8 0xEB70 +0x9BC9 0xEB71 +0x9BCA 0x7209 +0x9BCB 0xEB73 +0x9BCC 0xEB74 +0x9BCD 0x5965 +0x9BCE 0xEB76 +0x9BCF 0xEB77 +0x9BD0 0xEB78 +0x9BD1 0x8EDA +0x9BD2 0xEB7A +0x9BD3 0x528F +0x9BD4 0x573F +0x9BD5 0x7171 +0x9BD6 0xEB7E +0x9BD7 0xEB7F +0x9BD8 0xEB80 +0x9BD9 0xEB81 +0x9BDA 0x55BC +0x9BDB 0xEB83 +0x9BDC 0xEB84 +0x9BDD 0xEB85 +0x9BDF 0x3473 +0x9BE0 0xEB88 +0x9BE1 0xEB89 +0x9BE2 0xEB8A +0x9BE3 0x4718 +0x9BE4 0xEB8C +0x9BE5 0xEB8D +0x9BE6 0xEB8E +0x9BE7 0xEB8F +0x9BE8 0xEB90 +0x9BE9 0x5066 +0x9BEA 0x34FB +0x9BEB 0xEB93 +0x9BED 0xEB95 +0x9BEE 0x477C +0x9BEF 0xEB97 +0x9BF0 0xEB98 +0x9BF1 0xEB99 +0x9BF2 0xEB9A +0x9BF3 0xEB9B +0x9BF4 0x57A1 +0x9BF5 0x7151 +0x9BF7 0xEB9F +0x9BF8 0xEBA0 +0x9BF9 0x9056 +0x9BFA 0xEBA2 +0x9BFB 0xEBA3 +0x9BFC 0x8B62 +0x9BFD 0xEBA5 +0x9BFE 0xEBA6 +0x9C40 0x5D5B +0x9C41 0xEBA8 +0x9C43 0xEBAA +0x9C44 0xEBAB +0x9C45 0x8AEA +0x9C46 0xEBAD +0x9C47 0xEBAE +0x9C48 0xEBAF +0x9C49 0xEBB0 +0x9C4A 0x4BC0 +0x9C4B 0xEBB2 +0x9C4C 0xEBB3 +0x9C4D 0xEBB4 +0x9C4E 0x9465 +0x9C4F 0xEBB6 +0x9C50 0x6195 +0x9C51 0x5A27 +0x9C52 0xEBB9 +0x9C54 0x56B9 +0x9C55 0xEBBC +0x9C56 0xEBBD +0x9C57 0x4E6A +0x9C58 0xEBBF +0x9C59 0x9656 +0x9C5A 0x6D8F +0x9C5B 0xEBC2 +0x9C5C 0x3618 +0x9C5D 0x8977 +0x9C5E 0xEBC5 +0x9C5F 0xEBC6 +0x9C60 0xEBC7 +0x9C61 0xEBC8 +0x9C63 0xEBCA +0x9C64 0x7B42 +0x9C65 0xEBCC +0x9C66 0xEBCD +0x9C67 0xEBCE +0x9C69 0xEBD0 +0x9C6A 0x7A45 +0x9C6C 0xEBD3 +0x9C6D 0x9A26 +0x9C6E 0xEBD5 +0x9C6F 0x365F +0x9C70 0xEBD7 +0x9C71 0xEBD8 +0x9C72 0x7983 +0x9C73 0xEBDA +0x9C74 0xEBDB +0x9C75 0x5D2C +0x9C76 0xEBDD +0x9C78 0xEBDF +0x9C79 0x46D0 +0x9C7A 0xEBE1 +0x9C7B 0x753B +0x9C7C 0x8865 +0x9C7D 0xEBE4 +0x9C7E 0x58B6 +0x9CA1 0x371C +0x9CA2 0xEBE7 +0x9CA3 0xEBE8 +0x9CA4 0xEBE9 +0x9CA5 0x3C54 +0x9CA6 0xEBEB +0x9CA7 0xEBEC +0x9CA8 0x9281 +0x9CA9 0xEBEE +0x9CAA 0xEBEF +0x9CAB 0x9330 +0x9CAC 0xEBF1 +0x9CAD 0xEBF2 +0x9CAE 0x6C39 +0x9CAF 0x949F +0x9CB0 0xEBF5 +0x9CB1 0xEBF6 +0x9CB2 0x8827 +0x9CB3 0x88F5 +0x9CB4 0xEBF9 +0x9CB5 0xEBFA +0x9CB6 0xEBFB +0x9CB7 0x6EB8 +0x9CB8 0xEBFD +0x9CB9 0xEBFE +0x9CBA 0x39A4 +0x9CBB 0x36B9 +0x9CBE 0x453F +0x9CBF 0x66B6 +0x9CC0 0xEC05 +0x9CC1 0xEC06 +0x9CC2 0x8943 +0x9CC3 0xEC08 +0x9CC4 0xEC09 +0x9CC5 0x56D6 +0x9CC6 0x40DF +0x9CC7 0xEC0C +0x9CC8 0x39A1 +0x9CC9 0xEC0E +0x9CCA 0xEC0F +0x9CCB 0xEC10 +0x9CCC 0x71AD +0x9CCD 0x8366 +0x9CCE 0xEC13 +0x9CCF 0xEC14 +0x9CD1 0x4CB7 +0x9CD2 0xEC17 +0x9CD3 0xEC18 +0x9CD4 0xEC19 +0x9CD5 0xEC1A +0x9CD6 0xEC1B +0x9CD7 0xEC1C +0x9CD8 0xEC1D +0x9CD9 0x7B43 +0x9CDA 0x797E +0x9CDB 0xEC20 +0x9CDC 0x6FB5 +0x9CDD 0xEC22 +0x9CDE 0x6A03 +0x9CDF 0xEC24 +0x9CE0 0x53A2 +0x9CE1 0xEC26 +0x9CE2 0x93BF +0x9CE3 0x6836 +0x9CE4 0x975D +0x9CE5 0xEC2A +0x9CE6 0xEC2B +0x9CE7 0xEC2C +0x9CE8 0xEC2D +0x9CE9 0xEC2E +0x9CEA 0xEC2F +0x9CEB 0x5D85 +0x9CEC 0xEC31 +0x9CED 0xEC32 +0x9CEE 0x5715 +0x9CEF 0x9823 +0x9CF0 0xEC35 +0x9CF1 0x5DAB +0x9CF2 0xEC37 +0x9CF3 0x65BE +0x9CF4 0x69D5 +0x9CF5 0x53D2 +0x9CF6 0xEC3B +0x9CF7 0xEC3C +0x9CF8 0x3C11 +0x9CF9 0x6736 +0x9CFA 0xEC3F +0x9CFB 0xEC40 +0x9CFC 0xEC41 +0x9CFD 0xEC42 +0x9CFE 0xEC43 +0x9D40 0xEC44 +0x9D41 0xEC45 +0x9D42 0xEC46 +0x9D43 0xEC47 +0x9D44 0xEC48 +0x9D45 0xEC49 +0x9D46 0x35CA +0x9D47 0xEC4B +0x9D48 0xEC4C +0x9D49 0x48FA +0x9D4A 0x63E6 +0x9D4B 0xEC4F +0x9D4C 0x7808 +0x9D4D 0x9255 +0x9D4E 0xEC52 +0x9D4F 0x43F2 +0x9D50 0xEC54 +0x9D51 0x43DF +0x9D52 0xEC56 +0x9D53 0xEC57 +0x9D54 0xEC58 +0x9D55 0x59F8 +0x9D56 0xEC5A +0x9D58 0xEC5C +0x9D59 0xEC5D +0x9D5B 0xEC5F +0x9D5C 0xEC60 +0x9D5D 0x3DF7 +0x9D5E 0xEC62 +0x9D5F 0xEC63 +0x9D60 0x8FD0 +0x9D61 0x728F +0x9D62 0x568B +0x9D63 0xEC67 +0x9D64 0xEC68 +0x9D65 0xEC69 +0x9D66 0xEC6A +0x9D67 0xEC6B +0x9D68 0xEC6C +0x9D69 0xEC6D +0x9D6A 0xEC6E +0x9D6B 0xEC6F +0x9D6C 0xEC70 +0x9D6D 0xEC71 +0x9D6E 0xEC72 +0x9D6F 0xEC73 +0x9D70 0x7E9F +0x9D71 0xEC75 +0x9D72 0xEC76 +0x9D73 0x4CA4 +0x9D74 0x9547 +0x9D75 0xEC79 +0x9D76 0x71A2 +0x9D77 0xEC7B +0x9D78 0x4D91 +0x9D79 0x9012 +0x9D7A 0xEC7E +0x9D7B 0x4D9C +0x9D7C 0xEC80 +0x9D7D 0x8FBE +0x9D7E 0x55C1 +0x9DA1 0x8FBA +0x9DA2 0xEC84 +0x9DA3 0x8FB9 +0x9DA4 0xEC86 +0x9DA5 0x4509 +0x9DA6 0x7E7F +0x9DA7 0x6F56 +0x9DA8 0x6AB1 +0x9DA9 0x4EEA +0x9DAA 0x34E4 +0x9DAB 0xEC8D +0x9DAC 0xEC8E +0x9DAD 0x373A +0x9DAE 0x8E80 +0x9DAF 0xEC91 +0x9DB0 0xEC92 +0x9DB1 0xEC93 +0x9DB2 0xEC94 +0x9DB3 0xEC95 +0x9DB4 0xEC96 +0x9DB5 0x3DEB +0x9DB6 0xEC98 +0x9DB7 0xEC99 +0x9DB8 0xEC9A +0x9DB9 0xEC9B +0x9DBA 0x4E9A +0x9DBB 0xEC9D +0x9DBC 0xEC9E +0x9DBD 0x56BF +0x9DBE 0xECA0 +0x9DBF 0x8E0E +0x9DC0 0x5B6D +0x9DC1 0xECA3 +0x9DC2 0xECA4 +0x9DC3 0x63DE +0x9DC5 0xECA7 +0x9DC6 0xECA8 +0x9DC7 0x6530 +0x9DC8 0x562D +0x9DC9 0xECAB +0x9DCA 0x541A +0x9DCB 0xECAD +0x9DCC 0x3DC6 +0x9DCD 0xECAF +0x9DCE 0x4C7D +0x9DCF 0x5622 +0x9DD0 0x561E +0x9DD1 0x7F49 +0x9DD2 0xECB4 +0x9DD3 0x5975 +0x9DD4 0xECB6 +0x9DD5 0x8770 +0x9DD6 0x4E1C +0x9DD7 0xECB9 +0x9DD8 0xECBA +0x9DD9 0xECBB +0x9DDA 0x8117 +0x9DDB 0x9D5E +0x9DDC 0x8D18 +0x9DDD 0x763B +0x9DDE 0x9C45 +0x9DDF 0x764E +0x9DE0 0x77B9 +0x9DE1 0x9345 +0x9DE2 0x5432 +0x9DE3 0x8148 +0x9DE4 0x82F7 +0x9DE5 0x5625 +0x9DE6 0x8132 +0x9DE7 0x8418 +0x9DE8 0x80BD +0x9DE9 0x55EA +0x9DEA 0x7962 +0x9DEB 0x5643 +0x9DEC 0x5416 +0x9DED 0xECCF +0x9DEE 0x35CE +0x9DEF 0x5605 +0x9DF0 0x55F1 +0x9DF1 0x66F1 +0x9DF2 0xECD4 +0x9DF3 0x362D +0x9DF4 0x7534 +0x9DF5 0x55F0 +0x9DF6 0x55BA +0x9DF7 0x5497 +0x9DF8 0x5572 +0x9DF9 0xECDB +0x9DFA 0xECDC +0x9DFB 0x5ED0 +0x9DFC 0xECDE +0x9DFD 0xECDF +0x9DFE 0xECE0 +0x9E40 0xECE1 +0x9E41 0x9EAB +0x9E42 0x7D5A +0x9E43 0x55DE +0x9E44 0xECE5 +0x9E45 0x629D +0x9E46 0x976D +0x9E47 0x5494 +0x9E48 0x8CCD +0x9E49 0x71F6 +0x9E4A 0x9176 +0x9E4B 0x63FC +0x9E4C 0x63B9 +0x9E4D 0x63FE +0x9E4E 0x5569 +0x9E4F 0xECF0 +0x9E50 0x9C72 +0x9E51 0xECF2 +0x9E52 0x519A +0x9E53 0x34DF +0x9E54 0xECF5 +0x9E55 0x51A7 +0x9E56 0x544D +0x9E57 0x551E +0x9E58 0x5513 +0x9E59 0x7666 +0x9E5A 0x8E2D +0x9E5B 0xECFC +0x9E5C 0x75B1 +0x9E5D 0x80B6 +0x9E5E 0x8804 +0x9E5F 0x8786 +0x9E60 0x88C7 +0x9E61 0x81B6 +0x9E62 0x841C +0x9E63 0xED04 +0x9E64 0x44EC +0x9E65 0x7304 +0x9E66 0xED07 +0x9E67 0x5B90 +0x9E68 0x830B +0x9E69 0xED0A +0x9E6A 0x567B +0x9E6B 0xED0C +0x9E6C 0xED0D +0x9E6D 0xED0E +0x9E6E 0xED0F +0x9E6F 0xED10 +0x9E70 0xED11 +0x9E71 0x9170 +0x9E72 0xED13 +0x9E73 0x9208 +0x9E74 0xED15 +0x9E75 0xED16 +0x9E76 0xED17 +0x9E77 0xED18 +0x9E78 0x7266 +0x9E79 0xED1A +0x9E7A 0x474E +0x9E7B 0xED1C +0x9E7C 0xED1D +0x9E7D 0xED1E +0x9E7E 0x40FA +0x9EA1 0x9C5D +0x9EA2 0x651F +0x9EA3 0xED22 +0x9EA4 0x48F3 +0x9EA5 0xED24 +0x9EA6 0xED25 +0x9EA7 0xED26 +0x9EA8 0xED27 +0x9EAA 0xED29 +0x9EAB 0xED2A +0x9EAD 0xED2C +0x9EAE 0xED2D +0x9EAF 0x71A3 +0x9EB0 0x7E8E +0x9EB1 0x9D50 +0x9EB2 0x4E1A +0x9EB3 0x4E04 +0x9EB4 0x3577 +0x9EB5 0x5B0D +0x9EB6 0x6CB2 +0x9EB7 0x5367 +0x9EB8 0x36AC +0x9EB9 0x39DC +0x9EBA 0x537D +0x9EBB 0x36A5 +0x9EBC 0xED3B +0x9EBD 0x589A +0x9EBE 0xED3D +0x9EBF 0x822D +0x9EC0 0x544B +0x9EC1 0x57AA +0x9EC2 0xED41 +0x9EC3 0xED42 +0x9EC5 0x3A52 +0x9EC6 0xED45 +0x9EC7 0x7374 +0x9EC8 0xED47 +0x9EC9 0x4D09 +0x9ECA 0x9BED +0x9ECB 0xED4A +0x9ECC 0xED4B +0x9ECD 0x4C5B +0x9ECE 0xED4D +0x9ECF 0xED4E +0x9ED0 0xED4F +0x9ED1 0x845C +0x9ED2 0xED51 +0x9ED3 0xED52 +0x9ED4 0xED53 +0x9ED5 0xED54 +0x9ED6 0x632E +0x9ED7 0x7D25 +0x9ED8 0xED57 +0x9ED9 0xED58 +0x9EDA 0x3A2A +0x9EDB 0x9008 +0x9EDC 0x52CC +0x9EDD 0x3E74 +0x9EDE 0x367A +0x9EDF 0x45E9 +0x9EE0 0xED5F +0x9EE1 0x7640 +0x9EE2 0x5AF0 +0x9EE3 0xED62 +0x9EE4 0x787A +0x9EE5 0x47B6 +0x9EE6 0x58A7 +0x9EE7 0x40BF +0x9EE8 0x567C +0x9EE9 0x9B8B +0x9EEA 0x5D74 +0x9EEB 0x7654 +0x9EEC 0xED6B +0x9EED 0x9E85 +0x9EEE 0x4CE1 +0x9EF0 0x37FB +0x9EF1 0x6119 +0x9EF2 0xED71 +0x9EF3 0xED72 +0x9EF5 0x565D +0x9EF6 0xED75 +0x9EF7 0x57A7 +0x9EF8 0xED77 +0x9EF9 0xED78 +0x9EFA 0x5234 +0x9EFB 0xED7A +0x9EFC 0x35AD +0x9EFE 0x9D7C +0x9F40 0x7C56 +0x9F41 0x9B39 +0x9F42 0x57DE +0x9F43 0xED81 +0x9F44 0x5C53 +0x9F45 0x64D3 +0x9F46 0xED84 +0x9F47 0xED85 +0x9F48 0xED86 +0x9F49 0x86AD +0x9F4A 0xED88 +0x9F4B 0xED89 +0x9F4C 0xED8A +0x9F4D 0xED8B +0x9F4F 0x51FE +0x9F50 0xED8E +0x9F51 0x5D8E +0x9F52 0x9703 +0x9F53 0xED91 +0x9F54 0x9E81 +0x9F55 0x904C +0x9F56 0x7B1F +0x9F57 0x9B02 +0x9F58 0x5CD1 +0x9F59 0x7BA3 +0x9F5A 0x6268 +0x9F5B 0x6335 +0x9F5C 0x9AFF +0x9F5D 0x7BCF +0x9F5E 0x9B2A +0x9F5F 0x7C7E +0x9F61 0x7C42 +0x9F62 0x7C86 +0x9F63 0x9C15 +0x9F64 0x7BFC +0x9F65 0x9B09 +0x9F67 0x9C1B +0x9F68 0xEDA6 +0x9F69 0x9F5A +0x9F6A 0x5573 +0x9F6B 0x5BC3 +0x9F6C 0x4FFD +0x9F6D 0x9E98 +0x9F6E 0x4FF2 +0x9F6F 0x5260 +0x9F70 0x3E06 +0x9F71 0x52D1 +0x9F72 0x5767 +0x9F73 0x5056 +0x9F74 0x59B7 +0x9F75 0x5E12 +0x9F76 0x97C8 +0x9F77 0x9DAB +0x9F78 0x8F5C +0x9F79 0x5469 +0x9F7A 0x97B4 +0x9F7B 0x9940 +0x9F7C 0x97BA +0x9F7D 0x532C +0x9F7E 0x6130 +0x9FA1 0x692C +0x9FA2 0x53DA +0x9FA3 0x9C0A +0x9FA4 0x9D02 +0x9FA5 0x4C3B +0x9FA6 0x9641 +0x9FA7 0x6980 +0x9FA8 0x50A6 +0x9FA9 0x7546 +0x9FAA 0xEDC6 +0x9FAB 0x99DA +0x9FAC 0x5273 +0x9FAE 0x9159 +0x9FAF 0x9681 +0x9FB0 0x915C +0x9FB2 0x9151 +0x9FB3 0xEDCF +0x9FB4 0x637F +0x9FB5 0xEDD1 +0x9FB6 0x6ACA +0x9FB7 0x5611 +0x9FB8 0x918E +0x9FB9 0x757A +0x9FBA 0x6285 +0x9FBB 0xEDD7 +0x9FBC 0x734F +0x9FBD 0x7C70 +0x9FBE 0xEDDA +0x9FBF 0xEDDB +0x9FC1 0xEDDD +0x9FC2 0x76D6 +0x9FC3 0x9B9D +0x9FC4 0x4E2A +0x9FC5 0xEDE1 +0x9FC6 0x83BE +0x9FC7 0x8842 +0x9FC9 0x5C4A +0x9FCA 0x69C0 +0x9FCC 0x577A +0x9FCD 0x521F +0x9FCE 0x5DF5 +0x9FCF 0x4ECE +0x9FD0 0x6C31 +0x9FD1 0xEDED +0x9FD2 0x4F39 +0x9FD3 0x549C +0x9FD4 0x54DA +0x9FD5 0x529A +0x9FD6 0x8D82 +0x9FD7 0x35FE +0x9FD9 0x35F3 +0x9FDB 0x6B52 +0x9FDC 0x917C +0x9FDD 0x9FA5 +0x9FDE 0x9B97 +0x9FDF 0x982E +0x9FE0 0x98B4 +0x9FE1 0x9ABA +0x9FE2 0x9EA8 +0x9FE3 0x9E84 +0x9FE4 0x717A +0x9FE5 0x7B14 +0x9FE7 0x6BFA +0x9FE8 0x8818 +0x9FE9 0x7F78 +0x9FEB 0x5620 +0x9FEC 0xEE08 +0x9FED 0x8E77 +0x9FEE 0x9F53 +0x9FF0 0x8DD4 +0x9FF1 0x8E4F +0x9FF2 0x9E1C +0x9FF3 0x8E01 +0x9FF4 0x6282 +0x9FF5 0xEE11 +0x9FF6 0x8E28 +0x9FF7 0x8E75 +0x9FF8 0x7AD3 +0x9FF9 0xEE15 +0x9FFA 0x7A3E +0x9FFB 0x78D8 +0x9FFC 0x6CEA +0x9FFD 0x8A67 +0x9FFE 0x7607 +0xA040 0xEE1B +0xA041 0x9F26 +0xA042 0x6CCE +0xA043 0x87D6 +0xA044 0x75C3 +0xA045 0xEE20 +0xA046 0x7853 +0xA047 0xEE22 +0xA048 0x8D0C +0xA049 0x72E2 +0xA04A 0x7371 +0xA04B 0x8B2D +0xA04C 0x7302 +0xA04D 0x74F1 +0xA04E 0x8CEB +0xA04F 0xEE2A +0xA050 0x862F +0xA051 0x5FBA +0xA052 0x88A0 +0xA053 0x44B7 +0xA055 0xEE30 +0xA056 0xEE31 +0xA058 0x8A7E +0xA059 0xEE34 +0xA05B 0x60FD +0xA05C 0x7667 +0xA05D 0x9AD7 +0xA05E 0x9D44 +0xA05F 0x936E +0xA060 0x9B8F +0xA061 0x87F5 +0xA064 0x8CF7 +0xA065 0x732C +0xA066 0x9721 +0xA067 0x9BB0 +0xA068 0x35D6 +0xA069 0x72B2 +0xA06A 0x4C07 +0xA06B 0x7C51 +0xA06C 0x994A +0xA06D 0xEE48 +0xA06E 0x6159 +0xA06F 0x4C04 +0xA070 0x9E96 +0xA071 0x617D +0xA073 0x575F +0xA074 0x616F +0xA075 0x62A6 +0xA076 0x6239 +0xA078 0x3A5C +0xA079 0x61E2 +0xA07A 0x53AA +0xA07B 0xEE56 +0xA07C 0x6364 +0xA07D 0x6802 +0xA07E 0x35D2 +0xA0A1 0x5D57 +0xA0A2 0xEE5B +0xA0A3 0x8FDA +0xA0A4 0xEE5D +0xA0A6 0x50D9 +0xA0A7 0xEE60 +0xA0A8 0x7906 +0xA0A9 0x5332 +0xA0AA 0x9638 +0xA0AB 0xEE64 +0xA0AC 0x4065 +0xA0AE 0x77FE +0xA0B0 0x7CC2 +0xA0B1 0xEE6A +0xA0B2 0x7CDA +0xA0B3 0x7A2D +0xA0B4 0x8066 +0xA0B5 0x8063 +0xA0B6 0x7D4D +0xA0B7 0x7505 +0xA0B8 0x74F2 +0xA0B9 0x8994 +0xA0BA 0x821A +0xA0BB 0x670C +0xA0BC 0x8062 +0xA0BD 0xEE76 +0xA0BE 0x805B +0xA0BF 0x74F0 +0xA0C0 0x8103 +0xA0C1 0x7724 +0xA0C2 0x8989 +0xA0C3 0xEE7C +0xA0C4 0x7553 +0xA0C5 0xEE7E +0xA0C6 0x87A9 +0xA0C7 0x87CE +0xA0C8 0x81C8 +0xA0C9 0x878C +0xA0CA 0x8A49 +0xA0CB 0x8CAD +0xA0CC 0x8B43 +0xA0CD 0x772B +0xA0CE 0x74F8 +0xA0CF 0x84DA +0xA0D0 0x3635 +0xA0D1 0x69B2 +0xA0D2 0x8DA6 +0xA0D4 0x89A9 +0xA0D6 0x6DB9 +0xA0D7 0x87C1 +0xA0D8 0xEE91 +0xA0D9 0x74E7 +0xA0DA 0x3DDB +0xA0DB 0x7176 +0xA0DC 0x60A4 +0xA0DD 0x619C +0xA0DE 0x3CD1 +0xA0E0 0x6077 +0xA0E2 0x7F71 +0xA0E3 0xEE9C +0xA0E5 0x60E9 +0xA0E6 0x4B7E +0xA0E7 0x5220 +0xA0E8 0xEEA1 +0xA0E9 0xEEA2 +0xA0EA 0xEEA3 +0xA0EB 0xEEA4 +0xA0EC 0xEEA5 +0xA0ED 0xEEA6 +0xA0EE 0xEEA7 +0xA0EF 0xEEA8 +0xA0F0 0xEEA9 +0xA0F1 0xEEAA +0xA0F2 0x5CC1 +0xA0F3 0xEEAC +0xA0F4 0xEEAD +0xA0F5 0xEEAE +0xA0F6 0xEEAF +0xA0F7 0xEEB0 +0xA0F8 0xEEB1 +0xA0F9 0x4562 +0xA0FA 0x5B1F +0xA0FB 0xEEB4 +0xA0FC 0x9F50 +0xA0FD 0x9EA6 +0xA0FE 0xEEB7 +0xC6A1 0x2460 +0xC6A2 0x2461 +0xC6A3 0x2462 +0xC6A4 0x2463 +0xC6A5 0x2464 +0xC6A6 0x2465 +0xC6A7 0x2466 +0xC6A8 0x2467 +0xC6A9 0x2468 +0xC6AA 0x2469 +0xC6AB 0x2474 +0xC6AC 0x2475 +0xC6AD 0x2476 +0xC6AE 0x2477 +0xC6AF 0x2478 +0xC6B0 0x2479 +0xC6B1 0x247A +0xC6B2 0x247B +0xC6B3 0x247C +0xC6B4 0x247D +0xC6B5 0x2170 +0xC6B6 0x2171 +0xC6B7 0x2172 +0xC6B8 0x2173 +0xC6B9 0x2174 +0xC6BA 0x2175 +0xC6BB 0x2176 +0xC6BC 0x2177 +0xC6BD 0x2178 +0xC6BE 0x2179 +0xC6BF 0x4E36 +0xC6C0 0x4E3F +0xC6C1 0x4E85 +0xC6C2 0x4EA0 +0xC6C3 0x5182 +0xC6C4 0x5196 +0xC6C5 0x51AB +0xC6C6 0x52F9 +0xC6C7 0x5338 +0xC6C8 0x5369 +0xC6C9 0x53B6 +0xC6CA 0x590A +0xC6CB 0x5B80 +0xC6CC 0x5DDB +0xC6CD 0x2F33 +0xC6CE 0x5E7F +0xC6D0 0x5F50 +0xC6D1 0x5F61 +0xC6D2 0x6534 +0xC6D4 0x7592 +0xC6D6 0x8FB5 +0xC6D8 0x00A8 +0xC6D9 0x02C6 +0xC6DA 0x30FD +0xC6DB 0x30FE +0xC6DC 0x309D +0xC6DD 0x309E +0xC6E0 0x3005 +0xC6E1 0x3006 +0xC6E2 0x3007 +0xC6E3 0x30FC +0xC6E4 0xFF3B +0xC6E5 0xFF3D +0xC6E6 0x273D +0xC6E7 0x3041 +0xC6E8 0x3042 +0xC6E9 0x3043 +0xC6EA 0x3044 +0xC6EB 0x3045 +0xC6EC 0x3046 +0xC6ED 0x3047 +0xC6EE 0x3048 +0xC6EF 0x3049 +0xC6F0 0x304A +0xC6F1 0x304B +0xC6F2 0x304C +0xC6F3 0x304D +0xC6F4 0x304E +0xC6F5 0x304F +0xC6F6 0x3050 +0xC6F7 0x3051 +0xC6F8 0x3052 +0xC6F9 0x3053 +0xC6FA 0x3054 +0xC6FB 0x3055 +0xC6FC 0x3056 +0xC6FD 0x3057 +0xC6FE 0x3058 +0xC740 0x3059 +0xC741 0x305A +0xC742 0x305B +0xC743 0x305C +0xC744 0x305D +0xC745 0x305E +0xC746 0x305F +0xC747 0x3060 +0xC748 0x3061 +0xC749 0x3062 +0xC74A 0x3063 +0xC74B 0x3064 +0xC74C 0x3065 +0xC74D 0x3066 +0xC74E 0x3067 +0xC74F 0x3068 +0xC750 0x3069 +0xC751 0x306A +0xC752 0x306B +0xC753 0x306C +0xC754 0x306D +0xC755 0x306E +0xC756 0x306F +0xC757 0x3070 +0xC758 0x3071 +0xC759 0x3072 +0xC75A 0x3073 +0xC75B 0x3074 +0xC75C 0x3075 +0xC75D 0x3076 +0xC75E 0x3077 +0xC75F 0x3078 +0xC760 0x3079 +0xC761 0x307A +0xC762 0x307B +0xC763 0x307C +0xC764 0x307D +0xC765 0x307E +0xC766 0x307F +0xC767 0x3080 +0xC768 0x3081 +0xC769 0x3082 +0xC76A 0x3083 +0xC76B 0x3084 +0xC76C 0x3085 +0xC76D 0x3086 +0xC76E 0x3087 +0xC76F 0x3088 +0xC770 0x3089 +0xC771 0x308A +0xC772 0x308B +0xC773 0x308C +0xC774 0x308D +0xC775 0x308E +0xC776 0x308F +0xC777 0x3090 +0xC778 0x3091 +0xC779 0x3092 +0xC77A 0x3093 +0xC77B 0x30A1 +0xC77C 0x30A2 +0xC77D 0x30A3 +0xC77E 0x30A4 +0xC7A1 0x30A5 +0xC7A2 0x30A6 +0xC7A3 0x30A7 +0xC7A4 0x30A8 +0xC7A5 0x30A9 +0xC7A6 0x30AA +0xC7A7 0x30AB +0xC7A8 0x30AC +0xC7A9 0x30AD +0xC7AA 0x30AE +0xC7AB 0x30AF +0xC7AC 0x30B0 +0xC7AD 0x30B1 +0xC7AE 0x30B2 +0xC7AF 0x30B3 +0xC7B0 0x30B4 +0xC7B1 0x30B5 +0xC7B2 0x30B6 +0xC7B3 0x30B7 +0xC7B4 0x30B8 +0xC7B5 0x30B9 +0xC7B6 0x30BA +0xC7B7 0x30BB +0xC7B8 0x30BC +0xC7B9 0x30BD +0xC7BA 0x30BE +0xC7BB 0x30BF +0xC7BC 0x30C0 +0xC7BD 0x30C1 +0xC7BE 0x30C2 +0xC7BF 0x30C3 +0xC7C0 0x30C4 +0xC7C1 0x30C5 +0xC7C2 0x30C6 +0xC7C3 0x30C7 +0xC7C4 0x30C8 +0xC7C5 0x30C9 +0xC7C6 0x30CA +0xC7C7 0x30CB +0xC7C8 0x30CC +0xC7C9 0x30CD +0xC7CA 0x30CE +0xC7CB 0x30CF +0xC7CC 0x30D0 +0xC7CD 0x30D1 +0xC7CE 0x30D2 +0xC7CF 0x30D3 +0xC7D0 0x30D4 +0xC7D1 0x30D5 +0xC7D2 0x30D6 +0xC7D3 0x30D7 +0xC7D4 0x30D8 +0xC7D5 0x30D9 +0xC7D6 0x30DA +0xC7D7 0x30DB +0xC7D8 0x30DC +0xC7D9 0x30DD +0xC7DA 0x30DE +0xC7DB 0x30DF +0xC7DC 0x30E0 +0xC7DD 0x30E1 +0xC7DE 0x30E2 +0xC7DF 0x30E3 +0xC7E0 0x30E4 +0xC7E1 0x30E5 +0xC7E2 0x30E6 +0xC7E3 0x30E7 +0xC7E4 0x30E8 +0xC7E5 0x30E9 +0xC7E6 0x30EA +0xC7E7 0x30EB +0xC7E8 0x30EC +0xC7E9 0x30ED +0xC7EA 0x30EE +0xC7EB 0x30EF +0xC7EC 0x30F0 +0xC7ED 0x30F1 +0xC7EE 0x30F2 +0xC7EF 0x30F3 +0xC7F0 0x30F4 +0xC7F1 0x30F5 +0xC7F2 0x30F6 +0xC7F3 0x0410 +0xC7F4 0x0411 +0xC7F5 0x0412 +0xC7F6 0x0413 +0xC7F7 0x0414 +0xC7F8 0x0415 +0xC7F9 0x0401 +0xC7FA 0x0416 +0xC7FB 0x0417 +0xC7FC 0x0418 +0xC7FD 0x0419 +0xC7FE 0x041A +0xC840 0x041B +0xC841 0x041C +0xC842 0x041D +0xC843 0x041E +0xC844 0x041F +0xC845 0x0420 +0xC846 0x0421 +0xC847 0x0422 +0xC848 0x0423 +0xC849 0x0424 +0xC84A 0x0425 +0xC84B 0x0426 +0xC84C 0x0427 +0xC84D 0x0428 +0xC84E 0x0429 +0xC84F 0x042A +0xC850 0x042B +0xC851 0x042C +0xC852 0x042D +0xC853 0x042E +0xC854 0x042F +0xC855 0x0430 +0xC856 0x0431 +0xC857 0x0432 +0xC858 0x0433 +0xC859 0x0434 +0xC85A 0x0435 +0xC85B 0x0451 +0xC85C 0x0436 +0xC85D 0x0437 +0xC85E 0x0438 +0xC85F 0x0439 +0xC860 0x043A +0xC861 0x043B +0xC862 0x043C +0xC863 0x043D +0xC864 0x043E +0xC865 0x043F +0xC866 0x0440 +0xC867 0x0441 +0xC868 0x0442 +0xC869 0x0443 +0xC86A 0x0444 +0xC86B 0x0445 +0xC86C 0x0446 +0xC86D 0x0447 +0xC86E 0x0448 +0xC86F 0x0449 +0xC870 0x044A +0xC871 0x044B +0xC872 0x044C +0xC873 0x044D +0xC874 0x044E +0xC875 0x044F +0xC876 0x21E7 +0xC877 0x21B8 +0xC878 0x21B9 +0xC879 0xF7E5 +0xC87A 0xF7E6 +0xC87B 0x4E5A +0xC87C 0xF7E8 +0xC87D 0x5202 +0xC87E 0xF7EA +0xC8A1 0xF7EB +0xC8A2 0x5188 +0xC8A3 0xF7ED +0xC8A4 0xF7EE +0xC8CD 0xFFE2 +0xC8CE 0xFFE4 +0xC8CF 0xFF07 +0xC8D0 0xFF02 +0xC8D1 0x3231 +0xC8D2 0x2116 +0xC8D3 0x2121 +0xC8D4 0x309B +0xC8D5 0x309C +0xC8D6 0x2E80 +0xC8D7 0x2E84 +0xC8D8 0x2E86 +0xC8D9 0x2E87 +0xC8DA 0x2E88 +0xC8DB 0x2E8A +0xC8DC 0x2E8C +0xC8DD 0x2E8D +0xC8DE 0x2E95 +0xC8DF 0x2E9C +0xC8E0 0x2E9D +0xC8E1 0x2EA5 +0xC8E2 0x2EA7 +0xC8E3 0x2EAA +0xC8E4 0x2EAC +0xC8E5 0x2EAE +0xC8E6 0x2EB6 +0xC8E7 0x2EBC +0xC8E8 0x2EBE +0xC8E9 0x2EC6 +0xC8EA 0x2ECA +0xC8EB 0x2ECC +0xC8EC 0x2ECD +0xC8ED 0x2ECF +0xC8EE 0x2ED6 +0xC8EF 0x2ED7 +0xC8F0 0x2EDE +0xC8F1 0x2EE3 +0xC8F5 0x0283 +0xC8F6 0x0250 +0xC8F7 0x025B +0xC8F8 0x0254 +0xC8F9 0x0275 +0xC8FA 0x0153 +0xC8FB 0x00F8 +0xC8FC 0x014B +0xC8FD 0x028A +0xC8FE 0x026A +0xF9D6 0x7881 +0xF9D7 0x92B9 +0xF9D8 0x88CF +0xF9D9 0x58BB +0xF9DA 0x6052 +0xF9DB 0x7CA7 +0xF9DC 0x5AFA +0xF9DD 0x2554 +0xF9DE 0x2566 +0xF9DF 0x2557 +0xF9E0 0x2560 +0xF9E1 0x256C +0xF9E2 0x2563 +0xF9E3 0x255A +0xF9E4 0x2569 +0xF9E5 0x255D +0xF9E6 0x2552 +0xF9E7 0x2564 +0xF9E8 0x2555 +0xF9E9 0x255E +0xF9EA 0x256A +0xF9EB 0x2561 +0xF9EC 0x2558 +0xF9ED 0x2567 +0xF9EE 0x255B +0xF9EF 0x2553 +0xF9F0 0x2565 +0xF9F1 0x2556 +0xF9F2 0x255F +0xF9F3 0x256B +0xF9F4 0x2562 +0xF9F5 0x2559 +0xF9F6 0x2568 +0xF9F7 0x255C +0xF9F8 0x2551 +0xF9F9 0x2550 +0xF9FA 0x256D +0xF9FB 0x256E +0xF9FC 0x2570 +0xF9FD 0x256F +0xF9FE 0xFFED +0xFA40 0xE000 +0xFA41 0x92DB +0xFA42 0xE002 +0xFA43 0xE003 +0xFA44 0x854C +0xFA45 0x42B5 +0xFA46 0x73EF +0xFA47 0x51B5 +0xFA48 0x3649 +0xFA49 0xE009 +0xFA4A 0xE00A +0xFA4B 0x9344 +0xFA4C 0xE00C +0xFA4D 0x82EE +0xFA4E 0xE00E +0xFA4F 0x783C +0xFA50 0x6744 +0xFA51 0x62DF +0xFA52 0xE012 +0xFA53 0xE013 +0xFA54 0xE014 +0xFA55 0xE015 +0xFA56 0xE016 +0xFA57 0x4FAB +0xFA58 0xE018 +0xFA59 0x5008 +0xFA5A 0xE01A +0xFA5B 0xE01B +0xFA5C 0xE01C +0xFA5D 0xE01D +0xFA5E 0xE01E +0xFA60 0xE020 +0xFA61 0x5FA4 +0xFA62 0xE022 +0xFA63 0xE023 +0xFA64 0x6EDB +0xFA65 0xE025 +0xFA67 0x5101 +0xFA68 0x347A +0xFA69 0x510E +0xFA6A 0x986C +0xFA6B 0x3743 +0xFA6C 0x8416 +0xFA6D 0xE02D +0xFA6E 0xE02E +0xFA6F 0x5160 +0xFA70 0xE030 +0xFA71 0x516A +0xFA72 0xE032 +0xFA73 0xE033 +0xFA74 0xE034 +0xFA75 0xE035 +0xFA76 0xE036 +0xFA77 0xE037 +0xFA78 0xE038 +0xFA79 0x5B82 +0xFA7A 0x877D +0xFA7B 0xE03B +0xFA7C 0xE03C +0xFA7D 0x51B2 +0xFA7E 0x51B8 +0xFAA1 0x9D34 +0xFAA2 0x51C9 +0xFAA3 0x51CF +0xFAA4 0x51D1 +0xFAA5 0x3CDC +0xFAA6 0x51D3 +0xFAA7 0xE045 +0xFAA8 0x51B3 +0xFAA9 0x51E2 +0xFAAA 0x5342 +0xFAAB 0x51ED +0xFAAC 0x83CD +0xFAAD 0x693E +0xFAAE 0xE04C +0xFAAF 0x5F7B +0xFAB0 0x520B +0xFAB1 0x5226 +0xFAB2 0x523C +0xFAB3 0x52B5 +0xFAB4 0x5257 +0xFAB5 0x5294 +0xFAB6 0x52B9 +0xFAB7 0x52C5 +0xFAB8 0x7C15 +0xFAB9 0x8542 +0xFABA 0x52E0 +0xFABB 0x860D +0xFABC 0xE05A +0xFABE 0xE05C +0xFABF 0x5549 +0xFAC0 0x6ED9 +0xFAC1 0xE05F +0xFAC2 0xE060 +0xFAC3 0xE061 +0xFAC4 0x5333 +0xFAC6 0xE064 +0xFAC7 0x6CCB +0xFAC8 0xE066 +0xFAC9 0x681B +0xFACA 0x73D5 +0xFACB 0x604A +0xFACC 0x3EAA +0xFACD 0x38CC +0xFACE 0xE06C +0xFACF 0x71DD +0xFAD0 0x44A2 +0xFAD1 0x536D +0xFAD2 0x5374 +0xFAD3 0xE071 +0xFAD4 0x537E +0xFAD6 0xE074 +0xFAD7 0xE075 +0xFAD8 0x77E6 +0xFAD9 0x5393 +0xFADA 0xE078 +0xFADB 0x53A0 +0xFADC 0x53AB +0xFADD 0x53AE +0xFADE 0x73A7 +0xFADF 0xE07D +0xFAE0 0x3F59 +0xFAE1 0x739C +0xFAE2 0x53C1 +0xFAE3 0x53C5 +0xFAE4 0x6C49 +0xFAE5 0x4E49 +0xFAE6 0x57FE +0xFAE7 0x53D9 +0xFAE8 0x3AAB +0xFAE9 0xE087 +0xFAEA 0x53E0 +0xFAEB 0xE089 +0xFAEC 0xE08A +0xFAED 0x53F6 +0xFAEE 0xE08C +0xFAEF 0x5413 +0xFAF0 0x7079 +0xFAF1 0x552B +0xFAF2 0x6657 +0xFAF3 0x6D5B +0xFAF4 0x546D +0xFAF5 0xE093 +0xFAF6 0xE094 +0xFAF7 0x555D +0xFAF8 0x548F +0xFAF9 0x54A4 +0xFAFA 0x47A6 +0xFAFB 0xE099 +0xFAFC 0xE09A +0xFAFD 0x3DB4 +0xFAFE 0xE09C +0xFB40 0xE09D +0xFB41 0xE09E +0xFB42 0x5547 +0xFB43 0x4CED +0xFB44 0x542F +0xFB45 0x7417 +0xFB46 0x5586 +0xFB47 0x55A9 +0xFB49 0xE0A6 +0xFB4A 0xE0A7 +0xFB4B 0x4552 +0xFB4C 0xE0A9 +0xFB4D 0x66B3 +0xFB4E 0xE0AB +0xFB4F 0x5637 +0xFB50 0x66CD +0xFB51 0xE0AE +0xFB52 0x66A4 +0xFB53 0x66AD +0xFB54 0x564D +0xFB55 0x564F +0xFB56 0x78F1 +0xFB57 0x56F1 +0xFB58 0x9787 +0xFB59 0x53FE +0xFB5A 0x5700 +0xFB5B 0x56EF +0xFB5C 0x56ED +0xFB5D 0xE0BA +0xFB5E 0x3623 +0xFB5F 0xE0BC +0xFB60 0x5746 +0xFB61 0xE0BE +0xFB62 0x6C6E +0xFB63 0x708B +0xFB64 0x5742 +0xFB65 0x36B1 +0xFB66 0xE0C3 +0xFB67 0x57E6 +0xFB68 0xE0C5 +0xFB69 0x5803 +0xFB6A 0xE0C7 +0xFB6B 0xE0C8 +0xFB6C 0x5826 +0xFB6D 0xE0CA +0xFB6E 0x585C +0xFB6F 0x58AA +0xFB70 0x3561 +0xFB71 0x58E0 +0xFB72 0x58DC +0xFB73 0xE0D0 +0xFB74 0x58FB +0xFB75 0x5BFF +0xFB76 0x5743 +0xFB77 0xE0D4 +0xFB78 0xE0D5 +0xFB79 0x93D3 +0xFB7A 0x35A1 +0xFB7B 0x591F +0xFB7C 0x68A6 +0xFB7D 0x36C3 +0xFB7E 0x6E59 +0xFBA1 0xE0DC +0xFBA2 0x5A24 +0xFBA3 0x5553 +0xFBA4 0xE0DF +0xFBA5 0x8505 +0xFBA6 0x59C9 +0xFBA7 0xE0E2 +0xFBA8 0xE0E3 +0xFBA9 0xE0E4 +0xFBAA 0xE0E5 +0xFBAB 0x59D9 +0xFBAC 0xE0E7 +0xFBAD 0xE0E8 +0xFBAE 0xE0E9 +0xFBAF 0x6D71 +0xFBB0 0xE0EB +0xFBB1 0xE0EC +0xFBB2 0x59F9 +0xFBB3 0xE0EE +0xFBB4 0x5AAB +0xFBB5 0x5A63 +0xFBB6 0x36E6 +0xFBB7 0xE0F2 +0xFBB9 0x3708 +0xFBBA 0x5A96 +0xFBBB 0x7465 +0xFBBC 0x5AD3 +0xFBBD 0xE0F8 +0xFBBE 0xE0F9 +0xFBBF 0x3D85 +0xFBC0 0xE0FB +0xFBC1 0x3732 +0xFBC2 0xE0FD +0xFBC3 0x5E83 +0xFBC4 0x52D0 +0xFBC5 0x5B76 +0xFBC6 0x6588 +0xFBC7 0x5B7C +0xFBC8 0xE103 +0xFBC9 0x4004 +0xFBCA 0x485D +0xFBCB 0xE106 +0xFBCC 0x5BD5 +0xFBCD 0x6160 +0xFBCE 0xE109 +0xFBCF 0xE10A +0xFBD0 0xE10B +0xFBD1 0x5BF3 +0xFBD2 0x5B9D +0xFBD3 0x4D10 +0xFBD4 0x5C05 +0xFBD5 0xE110 +0xFBD6 0x5C13 +0xFBD7 0x73CE +0xFBD8 0x5C14 +0xFBD9 0xE114 +0xFBDA 0xE115 +0xFBDB 0x5C49 +0xFBDC 0x48DD +0xFBDD 0x5C85 +0xFBDE 0x5CE9 +0xFBDF 0x5CEF +0xFBE0 0x5D8B +0xFBE1 0xE11C +0xFBE2 0xE11D +0xFBE3 0x5D10 +0xFBE4 0x5D18 +0xFBE5 0x5D46 +0xFBE6 0xE121 +0xFBE7 0x5CBA +0xFBE8 0x5DD7 +0xFBE9 0x82FC +0xFBEA 0x382D +0xFBEB 0xE126 +0xFBEC 0xE127 +0xFBED 0xE128 +0xFBEE 0x8287 +0xFBEF 0x3836 +0xFBF0 0x3BC2 +0xFBF1 0x5E2E +0xFBF2 0x6A8A +0xFBF4 0x5E7A +0xFBF5 0xE130 +0xFBF6 0xE131 +0xFBF7 0x53A6 +0xFBF8 0x4EB7 +0xFBFA 0x53A8 +0xFBFB 0xE136 +0xFBFC 0x5E09 +0xFBFD 0x5EF4 +0xFBFE 0xE139 +0xFC40 0x5EF9 +0xFC41 0x5EFB +0xFC42 0x38A0 +0xFC43 0x5EFC +0xFC44 0x683E +0xFC45 0x941B +0xFC46 0x5F0D +0xFC47 0xE141 +0xFC48 0xE142 +0xFC49 0x3ADE +0xFC4A 0x48AE +0xFC4B 0xE145 +0xFC4C 0x5F3A +0xFC4D 0xE147 +0xFC4E 0xE148 +0xFC50 0xE14A +0xFC51 0x5F63 +0xFC52 0x97BD +0xFC53 0xE14D +0xFC54 0x5F72 +0xFC55 0x9340 +0xFC56 0xE150 +0xFC57 0x5FA7 +0xFC58 0x5DB6 +0xFC59 0x3D5F +0xFC5A 0xE154 +0xFC5B 0xE155 +0xFC5C 0xE156 +0xFC5D 0xE157 +0xFC5E 0x91D6 +0xFC5F 0xE159 +0xFC60 0xE15A +0xFC61 0x6031 +0xFC62 0x6685 +0xFC63 0xE15D +0xFC64 0x3963 +0xFC65 0x3DC7 +0xFC66 0x3639 +0xFC67 0x5790 +0xFC68 0xE162 +0xFC69 0x7971 +0xFC6A 0x3E40 +0xFC6B 0x609E +0xFC6D 0x60B3 +0xFC6E 0xE168 +0xFC6F 0xE169 +0xFC70 0xE16A +0xFC71 0x74A4 +0xFC72 0x50E1 +0xFC73 0x5AA0 +0xFC74 0x6164 +0xFC75 0x8424 +0xFC76 0x6142 +0xFC77 0xE171 +0xFC78 0xE172 +0xFC79 0x6181 +0xFC7A 0x51F4 +0xFC7B 0xE175 +0xFC7C 0x6187 +0xFC7D 0x5BAA +0xFC7E 0xE178 +0xFCA1 0xE179 +0xFCA2 0x61D3 +0xFCA3 0xE17B +0xFCA4 0xE17C +0xFCA5 0x61D0 +0xFCA6 0x3932 +0xFCA7 0xE17F +0xFCA8 0xE180 +0xFCA9 0x6023 +0xFCAA 0x615C +0xFCAB 0x651E +0xFCAC 0x638B +0xFCAD 0xE185 +0xFCAE 0x62C5 +0xFCAF 0xE187 +0xFCB0 0x62D5 +0xFCB1 0xE189 +0xFCB2 0x636C +0xFCB3 0xE18B +0xFCB4 0x3A17 +0xFCB5 0x6438 +0xFCB6 0x63F8 +0xFCB7 0xE18F +0xFCB8 0xE190 +0xFCBA 0x6F8A +0xFCBB 0xE193 +0xFCBC 0x9814 +0xFCBD 0xE195 +0xFCBE 0xE196 +0xFCBF 0x64E1 +0xFCC0 0x64E5 +0xFCC1 0x947B +0xFCC2 0x3A66 +0xFCC3 0x643A +0xFCC4 0x3A57 +0xFCC5 0x654D +0xFCC6 0x6F16 +0xFCC7 0xE19F +0xFCC8 0xE1A0 +0xFCC9 0x6585 +0xFCCA 0x656D +0xFCCB 0x655F +0xFCCC 0xE1A4 +0xFCCD 0x65B5 +0xFCCE 0xE1A6 +0xFCCF 0x4B37 +0xFCD0 0x65D1 +0xFCD1 0x40D8 +0xFCD2 0xE1AA +0xFCD3 0x65E0 +0xFCD4 0x65E3 +0xFCD5 0x5FDF +0xFCD6 0xE1AE +0xFCD7 0x6618 +0xFCD8 0xE1B0 +0xFCD9 0xE1B1 +0xFCDA 0x6644 +0xFCDB 0xE1B3 +0xFCDC 0xE1B4 +0xFCDD 0x664B +0xFCDE 0xE1B6 +0xFCDF 0x6667 +0xFCE0 0xE1B8 +0xFCE1 0x6673 +0xFCE3 0xE1BB +0xFCE4 0xE1BC +0xFCE5 0xE1BD +0xFCE6 0xE1BE +0xFCE7 0xE1BF +0xFCE8 0x77C5 +0xFCE9 0xE1C1 +0xFCEA 0x99A4 +0xFCEB 0x6702 +0xFCEC 0xE1C4 +0xFCED 0xE1C5 +0xFCEE 0x3B2B +0xFCEF 0x69FA +0xFCF0 0xE1C8 +0xFCF2 0x6767 +0xFCF3 0x6762 +0xFCF4 0xE1CC +0xFCF5 0xE1CD +0xFCF6 0x67D7 +0xFCF7 0x44E9 +0xFCF8 0x6822 +0xFCF9 0x6E50 +0xFCFA 0x923C +0xFCFB 0x6801 +0xFCFC 0xE1D4 +0xFCFD 0xE1D5 +0xFCFE 0x685D +0xFD40 0xE1D7 +0xFD41 0x69E1 +0xFD42 0x6A0B +0xFD43 0xE1DA +0xFD44 0x6973 +0xFD45 0x68C3 +0xFD46 0xE1DD +0xFD47 0x6901 +0xFD48 0x6900 +0xFD49 0x3D32 +0xFD4A 0x3A01 +0xFD4B 0xE1E2 +0xFD4C 0x3B80 +0xFD4D 0x67AC +0xFD4E 0x6961 +0xFD4F 0xE1E6 +0xFD50 0x42FC +0xFD51 0x6936 +0xFD52 0x6998 +0xFD53 0x3BA1 +0xFD54 0xE1EB +0xFD55 0x8363 +0xFD56 0x5090 +0xFD57 0x69F9 +0xFD58 0xE1EF +0xFD59 0xE1F0 +0xFD5A 0x6A45 +0xFD5B 0xE1F2 +0xFD5C 0x6A9D +0xFD5D 0x3BF3 +0xFD5E 0x67B1 +0xFD5F 0x6AC8 +0xFD60 0xE1F7 +0xFD61 0x3C0D +0xFD62 0x6B1D +0xFD63 0xE1FA +0xFD64 0x60DE +0xFD65 0x6B35 +0xFD66 0x6B74 +0xFD67 0xE1FE +0xFD68 0x6EB5 +0xFD69 0xE200 +0xFD6A 0xE201 +0xFD6B 0xE202 +0xFD6C 0x3740 +0xFD6D 0x5421 +0xFD6E 0xE205 +0xFD6F 0x6BE1 +0xFD70 0xE207 +0xFD71 0x6BDC +0xFD72 0x6C37 +0xFD73 0xE20A +0xFD74 0xE20B +0xFD75 0xE20C +0xFD76 0x6C5A +0xFD77 0x8226 +0xFD78 0x6C79 +0xFD79 0xE210 +0xFD7A 0x44C5 +0xFD7B 0xE212 +0xFD7C 0xE213 +0xFD7D 0xE214 +0xFD7E 0xE215 +0xFDA1 0xE216 +0xFDA2 0x36E5 +0xFDA3 0x3CEB +0xFDA4 0xE219 +0xFDA5 0x9B83 +0xFDA6 0xE21B +0xFDA7 0xE21C +0xFDA8 0x7F8F +0xFDA9 0x6837 +0xFDAA 0xE21F +0xFDAB 0xE220 +0xFDAC 0xE221 +0xFDAD 0x6D96 +0xFDAE 0x6D5C +0xFDAF 0x6E7C +0xFDB0 0x6F04 +0xFDB1 0xE226 +0xFDB2 0xE227 +0xFDB3 0xE228 +0xFDB4 0x8533 +0xFDB5 0xE22A +0xFDB6 0x51C7 +0xFDB9 0x842E +0xFDBA 0xE22F +0xFDBC 0xE231 +0xFDBD 0x7453 +0xFDBE 0xE233 +0xFDBF 0x79CC +0xFDC0 0x6E4F +0xFDC1 0x5A91 +0xFDC2 0xE237 +0xFDC3 0x6FF8 +0xFDC4 0x370D +0xFDC5 0x6F9D +0xFDC6 0xE23B +0xFDC7 0x6EFA +0xFDC8 0xE23D +0xFDC9 0xE23E +0xFDCA 0x4555 +0xFDCB 0x93F0 +0xFDCC 0x6F44 +0xFDCD 0x6F5C +0xFDCE 0x3D4E +0xFDCF 0x6F74 +0xFDD0 0xE245 +0xFDD1 0x3D3B +0xFDD2 0x6F9F +0xFDD3 0xE248 +0xFDD4 0x6FD3 +0xFDD5 0xE24A +0xFDD6 0xE24B +0xFDD7 0xE24C +0xFDD8 0xE24D +0xFDD9 0xE24E +0xFDDA 0xE24F +0xFDDB 0x51DF +0xFDDC 0xE251 +0xFDDD 0xE252 +0xFDDE 0xE253 +0xFDDF 0xE254 +0xFDE0 0x704B +0xFDE1 0x707E +0xFDE2 0x70A7 +0xFDE3 0x7081 +0xFDE4 0x70CC +0xFDE5 0x70D5 +0xFDE6 0x70D6 +0xFDE7 0x70DF +0xFDE8 0x4104 +0xFDE9 0x3DE8 +0xFDEA 0x71B4 +0xFDEB 0x7196 +0xFDEC 0xE261 +0xFDED 0x712B +0xFDEE 0x7145 +0xFDEF 0x5A88 +0xFDF0 0x714A +0xFDF2 0x5C9C +0xFDF3 0xE268 +0xFDF4 0x714F +0xFDF5 0x9362 +0xFDF6 0xE26B +0xFDF7 0x712C +0xFDF8 0xE26D +0xFDF9 0xE26E +0xFDFA 0xE26F +0xFDFB 0x71BA +0xFDFC 0xE271 +0xFDFD 0x70BD +0xFDFE 0x720E +0xFE40 0x9442 +0xFE41 0x7215 +0xFE42 0x5911 +0xFE43 0x9443 +0xFE44 0x7224 +0xFE45 0x9341 +0xFE46 0xE27A +0xFE47 0x722E +0xFE48 0x7240 +0xFE49 0xE27D +0xFE4A 0x68BD +0xFE4B 0x7255 +0xFE4C 0x7257 +0xFE4D 0x3E55 +0xFE4E 0xE282 +0xFE4F 0x680D +0xFE50 0x6F3D +0xFE51 0x7282 +0xFE53 0x732B +0xFE54 0xE288 +0xFE55 0xE289 +0xFE56 0x48ED +0xFE57 0xE28B +0xFE58 0x7328 +0xFE59 0x732E +0xFE5A 0x73CF +0xFE5B 0x73AA +0xFE5C 0xE290 +0xFE5D 0xE291 +0xFE5E 0x73C9 +0xFE5F 0x7449 +0xFE60 0xE294 +0xFE61 0xE295 +0xFE62 0xE296 +0xFE63 0x6623 +0xFE64 0x36C5 +0xFE65 0xE299 +0xFE66 0xE29A +0xFE67 0xE29B +0xFE68 0x73F7 +0xFE69 0x7415 +0xFE6A 0x6903 +0xFE6B 0xE29F +0xFE6C 0x7439 +0xFE6D 0xE2A1 +0xFE6E 0x3ED7 +0xFE70 0xE2A4 +0xFE71 0x7460 +0xFE72 0xE2A6 +0xFE73 0x7447 +0xFE74 0x73E4 +0xFE75 0x7476 +0xFE76 0x83B9 +0xFE77 0x746C +0xFE78 0x3730 +0xFE79 0x7474 +0xFE7A 0x93F1 +0xFE7B 0x6A2C +0xFE7C 0x7482 +0xFE7D 0x4953 +0xFE7E 0xE2B2 +0xFEA1 0xE2B3 +0xFEA2 0xE2B4 +0xFEA3 0xE2B5 +0xFEA4 0x5B46 +0xFEA5 0xE2B7 +0xFEA6 0xE2B8 +0xFEA7 0x74C8 +0xFEA8 0xE2BA +0xFEA9 0x750E +0xFEAB 0x751E +0xFEAC 0xE2BE +0xFEAD 0xE2BF +0xFEAE 0x5BD7 +0xFEAF 0xE2C1 +0xFEB0 0x9385 +0xFEB1 0x754D +0xFEB2 0x754A +0xFEB3 0x7567 +0xFEB4 0x756E +0xFEB5 0xE2C7 +0xFEB6 0x3F04 +0xFEB7 0xE2C9 +0xFEB8 0x758E +0xFEB9 0x745D +0xFEBA 0x759E +0xFEBB 0x75B4 +0xFEBC 0x7602 +0xFEBD 0x762C +0xFEBE 0x7651 +0xFEBF 0x764F +0xFEC0 0x766F +0xFEC1 0x7676 +0xFEC2 0xE2D4 +0xFEC3 0x7690 +0xFEC4 0x81EF +0xFEC5 0x37F8 +0xFEC6 0xE2D8 +0xFEC7 0xE2D9 +0xFEC8 0x76A1 +0xFEC9 0x76A5 +0xFECA 0x76B7 +0xFECB 0x76CC +0xFECC 0xE2DE +0xFECD 0x8462 +0xFECE 0xE2E0 +0xFECF 0xE2E1 +0xFED0 0xE2E2 +0xFED1 0x771E +0xFED2 0x7726 +0xFED3 0x7740 +0xFED4 0x64AF +0xFED5 0xE2E7 +0xFED6 0x7758 +0xFED7 0xE2E9 +0xFED8 0x77AF +0xFED9 0xE2EB +0xFEDA 0xE2EC +0xFEDB 0xE2ED +0xFEDC 0x77F4 +0xFEDE 0xE2F0 +0xFEDF 0xE2F1 +0xFEE0 0x68CA +0xFEE1 0x78AF +0xFEE2 0x78C7 +0xFEE3 0x78D3 +0xFEE4 0x96A5 +0xFEE5 0x792E +0xFEE6 0xE2F8 +0xFEE7 0x78D7 +0xFEE8 0x7934 +0xFEE9 0x78B1 +0xFEEA 0xE2FC +0xFEEB 0x8FB8 +0xFEEC 0x8884 +0xFEED 0xE2FF +0xFEEE 0xE300 +0xFEEF 0xE301 +0xFEF0 0x7986 +0xFEF1 0x8900 +0xFEF2 0x6902 +0xFEF3 0x7980 +0xFEF4 0xE306 +0xFEF5 0x799D +0xFEF6 0xE308 +0xFEF7 0x793C +0xFEF8 0x79A9 +0xFEF9 0x6E2A +0xFEFA 0xE30C +0xFEFB 0x3EA8 +0xFEFC 0x79C6 +0xFEFD 0xE30F +0xFEFE 0x79D4 diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/CharsetMapping/dbcs --- a/jdk/make/tools/CharsetMapping/dbcs Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/tools/CharsetMapping/dbcs Wed Jul 05 17:09:51 2017 +0200 @@ -1,6 +1,7 @@ # #clzName csName hisName dbtype pkg ascii b1min b1max b2min b2max # +Big5 Big5 Big5 basic sun.nio.cs.ext true 0xa1 0xf9 0x40 0xfe Johab x-Johab x-Johab basic sun.nio.cs.ext true 0x84 0xf9 0x31 0xfe EUC_CN GB2312 EUC_CN basic sun.nio.cs.ext true 0xa1 0xf7 0xa1 0xfe EUC_KR EUC-KR EUC_KR basic sun.nio.cs.ext true 0xa1 0xfd 0xa1 0xfe diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/CharsetMapping.java --- a/jdk/make/tools/src/build/tools/charsetmapping/CharsetMapping.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -/* - * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package build.tools.charsetmapping; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.BufferedReader; -import java.io.IOException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.*; - -public class CharsetMapping { - public final static char UNMAPPABLE_DECODING = '\uFFFD'; - public final static int UNMAPPABLE_ENCODING = 0xFFFD; - - public static class Entry { - public int bs; //byte sequence reps - public int cp; //Unicode codepoint - public int cp2; //CC of composite - - public Entry () {} - public Entry (int bytes, int cp, int cp2) { - this.bs = bytes; - this.cp = cp; - this.cp2 = cp2; - } - } - - static Comparator comparatorCP = - new Comparator() { - public int compare(Entry m1, Entry m2) { - return m1.cp - m2.cp; - } - public boolean equals(Object obj) { - return this == obj; - } - }; - - public static class Parser { - static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*"); - static final int gBS = 1; - static final int gCP = 2; - static final int gCP2 = 3; - - BufferedReader reader; - boolean closed; - Matcher matcher; - int gbs, gcp, gcp2; - - public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2) - throws IOException - { - this.reader = new BufferedReader(new InputStreamReader(in)); - this.closed = false; - this.matcher = p.matcher(""); - this.gbs = gbs; - this.gcp = gcp; - this.gcp2 = gcp2; - } - - public Parser (InputStream in, Pattern p) throws IOException { - this(in, p, gBS, gCP, gCP2); - } - - public Parser (InputStream in) throws IOException { - this(in, basic, gBS, gCP, gCP2); - } - - protected boolean isDirective(String line) { - return line.startsWith("#"); - } - - protected Entry parse(Matcher matcher, Entry mapping) { - mapping.bs = Integer.parseInt(matcher.group(gbs), 16); - mapping.cp = Integer.parseInt(matcher.group(gcp), 16); - if (gcp2 <= matcher.groupCount() && - matcher.group(gcp2) != null) - mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16); - else - mapping.cp2 = 0; - return mapping; - } - - public Entry next() throws Exception { - return next(new Entry()); - } - - // returns null and closes the input stream if the eof has beenreached. - public Entry next(Entry mapping) throws Exception { - if (closed) - return null; - String line; - while ((line = reader.readLine()) != null) { - if (isDirective(line)) - continue; - matcher.reset(line); - if (!matcher.lookingAt()) { - //System.out.println("Missed: " + line); - continue; - } - return parse(matcher, mapping); - } - reader.close(); - closed = true; - return null; - } - } - - // tags of different charset mapping tables - private final static int MAP_SINGLEBYTE = 0x1; // 0..256 : c - private final static int MAP_DOUBLEBYTE1 = 0x2; // min..max: c - private final static int MAP_DOUBLEBYTE2 = 0x3; // min..max: c [DB2] - private final static int MAP_SUPPLEMENT = 0x5; // db,c - private final static int MAP_SUPPLEMENT_C2B = 0x6; // c,db - private final static int MAP_COMPOSITE = 0x7; // db,base,cc - private final static int MAP_INDEXC2B = 0x8; // index table of c->bb - - private static final void writeShort(OutputStream out, int data) - throws IOException - { - out.write((data >>> 8) & 0xFF); - out.write((data ) & 0xFF); - } - - private static final void writeShortArray(OutputStream out, - int type, - int[] array, - int off, - int size) // exclusive - throws IOException - { - writeShort(out, type); - writeShort(out, size); - for (int i = off; i < size; i++) { - writeShort(out, array[off+i]); - } - } - - public static final void writeSIZE(OutputStream out, int data) - throws IOException - { - out.write((data >>> 24) & 0xFF); - out.write((data >>> 16) & 0xFF); - out.write((data >>> 8) & 0xFF); - out.write((data ) & 0xFF); - } - - public static void writeINDEXC2B(OutputStream out, int[] indexC2B) - throws IOException - { - writeShort(out, MAP_INDEXC2B); - writeShort(out, indexC2B.length); - int off = 0; - for (int i = 0; i < indexC2B.length; i++) { - if (indexC2B[i] != 0) { - writeShort(out, off); - off += 256; - } else { - writeShort(out, -1); - } - } - } - - public static void writeSINGLEBYTE(OutputStream out, int[] sb) - throws IOException - { - writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256); - } - - private static void writeDOUBLEBYTE(OutputStream out, - int type, - int[] db, - int b1Min, int b1Max, - int b2Min, int b2Max) - throws IOException - { - writeShort(out, type); - writeShort(out, b1Min); - writeShort(out, b1Max); - writeShort(out, b2Min); - writeShort(out, b2Max); - writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1)); - - for (int b1 = b1Min; b1 <= b1Max; b1++) { - for (int b2 = b2Min; b2 <= b2Max; b2++) { - writeShort(out, db[b1 * 256 + b2]); - } - } - } - public static void writeDOUBLEBYTE1(OutputStream out, - int[] db, - int b1Min, int b1Max, - int b2Min, int b2Max) - throws IOException - { - writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max); - } - - public static void writeDOUBLEBYTE2(OutputStream out, - int[] db, - int b1Min, int b1Max, - int b2Min, int b2Max) - throws IOException - { - writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max); - } - - // the c2b table is output as well - public static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size) - throws IOException - { - writeShort(out, MAP_SUPPLEMENT); - writeShort(out, size * 2); - // db at first half, cc at the low half - for (int i = 0; i < size; i++) { - writeShort(out, supp[i].bs); - } - for (int i = 0; i < size; i++) { - writeShort(out, supp[i].cp); - } - - //c2b - writeShort(out, MAP_SUPPLEMENT_C2B); - writeShort(out, size*2); - Arrays.sort(supp, 0, size, comparatorCP); - for (int i = 0; i < size; i++) { - writeShort(out, supp[i].cp); - } - for (int i = 0; i < size; i++) { - writeShort(out, supp[i].bs); - } - } - - public static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size) - throws IOException - { - writeShort(out, MAP_COMPOSITE); - writeShort(out, size*3); - // comp is sorted already - for (int i = 0; i < size; i++) { - writeShort(out, (char)comp[i].bs); - writeShort(out, (char)comp[i].cp); - writeShort(out, (char)comp[i].cp2); - } - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/DBCS.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,236 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; +import java.io.*; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Formatter; +import java.util.regex.*; +import java.nio.charset.*; +import static build.tools.charsetmapping.Utils.*; + +public class DBCS { + // pattern used by this class to read in mapping table + static Pattern mPattern = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)(?:\\s++#.*)?"); + + public static void genClass(String args[]) throws Exception { + + Scanner s = new Scanner(new File(args[0], args[2])); + while (s.hasNextLine()) { + String line = s.nextLine(); + if (line.startsWith("#") || line.length() == 0) + continue; + String[] fields = line.split("\\s+"); + if (fields.length < 10) { + System.err.println("Misconfiged sbcs line <" + line + ">?"); + continue; + } + String clzName = fields[0]; + String csName = fields[1]; + String hisName = ("null".equals(fields[2]))?null:fields[2]; + String type = fields[3].toUpperCase(); + if ("BASIC".equals(type)) + type = ""; + else + type = "_" + type; + String pkgName = fields[4]; + boolean isASCII = Boolean.valueOf(fields[5]); + int b1Min = toInteger(fields[6]); + int b1Max = toInteger(fields[7]); + int b2Min = toInteger(fields[8]); + int b2Max = toInteger(fields[9]); + System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName); + genClass0(args[0], args[1], "DoubleByte-X.java.template", + clzName, csName, hisName, pkgName, + isASCII, type, + b1Min, b1Max, b2Min, b2Max); + } + } + + static int toInteger(String s) { + if (s.startsWith("0x") || s.startsWith("0X")) + return Integer.valueOf(s.substring(2), 16); + else + return Integer.valueOf(s); + } + + private static void genClass0(String srcDir, String dstDir, String template, + String clzName, + String csName, + String hisName, + String pkgName, + boolean isASCII, + String type, + int b1Min, int b1Max, + int b2Min, int b2Max) + throws Exception + { + + StringBuilder b2cSB = new StringBuilder(); + StringBuilder b2cNRSB = new StringBuilder(); + StringBuilder c2bNRSB = new StringBuilder(); + + char[] db = new char[0x10000]; + char[] c2bIndex = new char[0x100]; + int c2bOff = 0x100; // first 0x100 for unmappable segs + + Arrays.fill(db, UNMAPPABLE_DECODING); + Arrays.fill(c2bIndex, UNMAPPABLE_DECODING); + + char[] b2cIndex = new char[0x100]; + Arrays.fill(b2cIndex, UNMAPPABLE_DECODING); + + // (1)read in .map to parse all b->c entries + FileInputStream in = new FileInputStream(new File(srcDir, clzName + ".map")); + Parser p = new Parser(in, mPattern); + Entry e = null; + while ((e = p.next()) != null) { + db[e.bs] = (char)e.cp; + + if (e.bs > 0x100 && // db + b2cIndex[e.bs>>8] == UNMAPPABLE_DECODING) { + b2cIndex[e.bs>>8] = 1; + } + + if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { + c2bOff += 0x100; + c2bIndex[e.cp>>8] = 1; + } + } + Output out = new Output(new Formatter(b2cSB)); + out.format("%n static final String b2cSBStr =%n"); + out.format(db, 0x00, 0x100, ";"); + + out.format("%n static final String[] b2cStr = {%n"); + for (int i = 0; i < 0x100; i++) { + if (b2cIndex[i] == UNMAPPABLE_DECODING) { + out.format(" null,%n"); //unmappable segments + } else { + out.format(db, i, b2Min, b2Max, ","); + } + } + + out.format(" };%n"); + out.close(); + + // (2)now parse the .nr file which includes "b->c" non-roundtrip entries + File f = new File(srcDir, clzName + ".nr"); + if (f.exists()) { + StringBuilder sb = new StringBuilder(); + in = new FileInputStream(f); + p = new Parser(in, mPattern); + e = null; + while ((e = p.next()) != null) { + // A pair + sb.append((char)e.bs); + sb.append((char)e.cp); + } + char[] nr = sb.toString().toCharArray(); + out = new Output(new Formatter(b2cNRSB)); + out.format("String b2cNR =%n"); + out.format(nr, 0, nr.length, ";"); + out.close(); + } else { + b2cNRSB.append("String b2cNR = null;"); + } + + // (3)finally the .c2b file which includes c->b non-roundtrip entries + f = new File(srcDir, clzName + ".c2b"); + if (f.exists()) { + StringBuilder sb = new StringBuilder(); + in = new FileInputStream(f); + p = new Parser(in, mPattern); + e = null; + while ((e = p.next()) != null) { + // A pair + if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { + c2bOff += 0x100; + c2bIndex[e.cp>>8] = 1; + } + sb.append((char)e.bs); + sb.append((char)e.cp); + } + char[] nr = sb.toString().toCharArray(); + out = new Output(new Formatter(c2bNRSB)); + out.format("String c2bNR =%n"); + out.format(nr, 0, nr.length, ";"); + out.close(); + } else { + c2bNRSB.append("String c2bNR = null;"); + } + + // (4)it's time to generate the source file + String b2c = b2cSB.toString(); + String b2cNR = b2cNRSB.toString(); + String c2bNR = c2bNRSB.toString(); + + Scanner s = new Scanner(new File(srcDir, template)); + PrintStream ops = new PrintStream(new FileOutputStream( + new File(dstDir, clzName + ".java"))); + if (hisName == null) + hisName = ""; + + while (s.hasNextLine()) { + String line = s.nextLine(); + if (line.indexOf("$") == -1) { + ops.println(line); + continue; + } + line = line.replace("$PACKAGE$" , pkgName) + .replace("$IMPLEMENTS$", (hisName == null)? + "" : "implements HistoricallyNamedCharset") + .replace("$NAME_CLZ$", clzName) + .replace("$NAME_ALIASES$", + "sun.nio.cs".equals(pkgName) ? + "StandardCharsets.aliases_" + clzName : + "ExtendedCharsets.aliasesFor(\"" + csName + "\")") + .replace("$NAME_CS$" , csName) + .replace("$CONTAINS$", + "MS932".equals(clzName)? + "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));": + (isASCII ? + "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));": + "return (cs instanceof " + clzName + ");")) + .replace("$HISTORICALNAME$", + (hisName == null)? "" : + " public String historicalName() { return \"" + hisName + "\"; }") + .replace("$DECTYPE$", type) + .replace("$ENCTYPE$", type) + .replace("$B1MIN$" , "0x" + Integer.toString(b1Min, 16)) + .replace("$B1MAX$" , "0x" + Integer.toString(b1Max, 16)) + .replace("$B2MIN$" , "0x" + Integer.toString(b2Min, 16)) + .replace("$B2MAX$" , "0x" + Integer.toString(b2Max, 16)) + .replace("$B2C$", b2c) + .replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16)) + .replace("$NONROUNDTRIP_B2C$", b2cNR) + .replace("$NONROUNDTRIP_C2B$", c2bNR); + + ops.println(line); + } + ops.close(); + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,177 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.*; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Formatter; +import java.util.regex.*; +import java.nio.charset.*; +import static build.tools.charsetmapping.Utils.*; + +public class EUC_TW { + + static char[] toCharArray(int[] db, + int b1Min, int b1Max, + int b2Min, int b2Max) + { + char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)]; + int off = 0; + for (int b1 = b1Min; b1 <= b1Max; b1++) { + for (int b2 = b2Min; b2 <= b2Max; b2++) { + ca[off++] = (char)(db[b1 * 256 + b2] & 0xffff); + } + } + return ca; + } + + static char[] toCharArray(byte[] ba, + int b1Min, int b1Max, + int b2Min, int b2Max) + { + char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)]; + int off = 0; + for (int b1 = b1Min; b1 <= b1Max; b1++) { + int b2 = b2Min; + while (b2 <= b2Max) { + ca[off++] = (char)(((ba[b1 * 256 + b2++] & 0xff) << 8) | + (ba[b1 * 256 + b2++] & 0xff)); + } + } + return ca; + } + + private static int initC2BIndex(char[] index) { + int off = 0; + for (int i = 0; i < index.length; i++) { + if (index[i] != 0) { + index[i] = (char)off; + off += 0x100; + } else { + index[i] = UNMAPPABLE_ENCODING; + } + } + return off; + } + + private static Pattern euctw = Pattern.compile("(?:8ea)?(\\p{XDigit}++)\\s++(\\p{XDigit}++)?\\s*+.*"); + + static void genClass(String args[]) throws Exception + { + InputStream is = new FileInputStream(new File(args[0], "euc_tw.map")); + PrintStream ps = new PrintStream(new File(args[1], "EUC_TWMapping.java"), + "ISO-8859-1"); + String copyright = getCopyright(new File(args[3])); + + + // ranges of byte1 and byte2, something should come from a "config" file + int b1Min = 0xa1; + int b1Max = 0xfe; + int b2Min = 0xa1; + int b2Max = 0xfe; + + try { + int[][] db = new int[8][0x10000]; // doublebyte + byte[] suppFlag = new byte[0x10000]; // doublebyte + char[] indexC2B = new char[256]; + char[] indexC2BSupp = new char[256]; + + for (int i = 0; i < 8; i++) + for (int j = 0; j < 0x10000; j++) + db[i][j] = UNMAPPABLE_DECODING; + + Parser p = new Parser(is, euctw); + Entry e = null; + while ((e = p.next()) != null) { + int plane = 0; + if (e.bs >= 0x10000) { + plane = ((e.bs >> 16) & 0xff) - 1; + if (plane >= 14) + plane = 7; + e.bs = e.bs & 0xffff; + } + db[plane][e.bs] = e.cp; + if (e.cp < 0x10000) { + indexC2B[e.cp>>8] = 1; + } else { + indexC2BSupp[(e.cp&0xffff)>>8] = 1; + suppFlag[e.bs] |= (1 << plane); + } + } + + StringBuilder sb = new StringBuilder(); + Output out = new Output(new Formatter(sb)); + + out.format(copyright); + out.format("%n// -- This file was mechanically generated: Do not edit! -- //%n"); + out.format("package sun.nio.cs.ext;%n%n"); + out.format("class EUC_TWMapping {%n%n"); + + // boundaries + out.format(" final static int b1Min = 0x%x;%n", b1Min); + out.format(" final static int b1Max = 0x%x;%n", b1Max); + out.format(" final static int b2Min = 0x%x;%n", b2Min); + out.format(" final static int b2Max = 0x%x;%n", b2Max); + + // b2c tables + out.format("%n final static String[] b2c = {%n"); + for (int plane = 0; plane < 8; plane++) { + out.format(" // Plane %d%n", plane); + out.format(toCharArray(db[plane], b1Min, b1Max, b2Min, b2Max), + ","); + out.format("%n"); + } + out.format(" };%n"); + + // c2bIndex + out.format("%n static final int C2BSIZE = 0x%x;%n", + initC2BIndex(indexC2B)); + out.format("%n static char[] c2bIndex = new char[] {%n"); + out.format(indexC2B); + out.format(" };%n"); + + // c2bIndexSupp + out.format("%n static final int C2BSUPPSIZE = 0x%x;%n", + initC2BIndex(indexC2BSupp)); + out.format("%n static char[] c2bSuppIndex = new char[] {%n"); + out.format(indexC2BSupp); + out.format(" };%n"); + + // suppFlags + out.format("%n static String b2cIsSuppStr =%n"); + out.format(toCharArray(suppFlag, b1Min, b1Max, b2Min, b2Max), + ";"); + out.format("}"); + out.close(); + + ps.println(sb.toString()); + ps.close(); + } catch (Exception x) { + x.printStackTrace(); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/GenerateDBCS.java --- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateDBCS.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -/* - * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package build.tools.charsetmapping; -import java.io.*; -import java.util.Arrays; -import java.util.ArrayList; -import java.util.Scanner; -import java.util.Formatter; -import java.util.regex.*; -import java.nio.charset.*; -import static build.tools.charsetmapping.CharsetMapping.*; - -public class GenerateDBCS { - // pattern used by this class to read in mapping table - static Pattern mPattern = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)(?:\\s++#.*)?"); - public static void genDBCS(String args[]) throws Exception { - - Scanner s = new Scanner(new File(args[0], args[2])); - while (s.hasNextLine()) { - String line = s.nextLine(); - if (line.startsWith("#") || line.length() == 0) - continue; - String[] fields = line.split("\\s+"); - if (fields.length < 10) { - System.err.println("Misconfiged sbcs line <" + line + ">?"); - continue; - } - String clzName = fields[0]; - String csName = fields[1]; - String hisName = ("null".equals(fields[2]))?null:fields[2]; - String type = fields[3].toUpperCase(); - if ("BASIC".equals(type)) - type = ""; - else - type = "_" + type; - String pkgName = fields[4]; - boolean isASCII = Boolean.valueOf(fields[5]); - int b1Min = toInteger(fields[6]); - int b1Max = toInteger(fields[7]); - int b2Min = toInteger(fields[8]); - int b2Max = toInteger(fields[9]); - System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName); - genClass(args[0], args[1], "DoubleByte-X.java.template", - clzName, csName, hisName, pkgName, - isASCII, type, - b1Min, b1Max, b2Min, b2Max); - } - } - - private static int toInteger(String s) { - if (s.startsWith("0x") || s.startsWith("0X")) - return Integer.valueOf(s.substring(2), 16); - else - return Integer.valueOf(s); - } - - private static void outString(Formatter out, - char[] cc, int off, int end, - String closure) - { - while (off < end) { - out.format(" \""); - for (int j = 0; j < 8; j++) { - if (off == end) - break; - char c = cc[off++]; - switch (c) { - case '\b': - out.format("\\b"); break; - case '\t': - out.format("\\t"); break; - case '\n': - out.format("\\n"); break; - case '\f': - out.format("\\f"); break; - case '\r': - out.format("\\r"); break; - case '\"': - out.format("\\\""); break; - case '\'': - out.format("\\'"); break; - case '\\': - out.format("\\\\"); break; - default: - out.format("\\u%04X", c & 0xffff); - } - } - if (off == end) - out.format("\" %s%n", closure); - else - out.format("\" + %n"); - } - } - - private static void outString(Formatter out, - char[] db, - int b1, - int b2Min, int b2Max, - String closure) - { - char[] cc = new char[b2Max - b2Min + 1]; - int off = 0; - for (int b2 = b2Min; b2 <= b2Max; b2++) { - cc[off++] = db[(b1 << 8) | b2]; - } - outString(out, cc, 0, cc.length, closure); - } - - private static void genClass(String srcDir, String dstDir, String template, - String clzName, - String csName, - String hisName, - String pkgName, - boolean isASCII, - String type, - int b1Min, int b1Max, - int b2Min, int b2Max) - throws Exception - { - - StringBuilder b2cSB = new StringBuilder(); - StringBuilder b2cNRSB = new StringBuilder(); - StringBuilder c2bNRSB = new StringBuilder(); - - char[] db = new char[0x10000]; - char[] c2bIndex = new char[0x100]; - int c2bOff = 0x100; // first 0x100 for unmappable segs - - Arrays.fill(db, UNMAPPABLE_DECODING); - Arrays.fill(c2bIndex, UNMAPPABLE_DECODING); - - char[] b2cIndex = new char[0x100]; - Arrays.fill(b2cIndex, UNMAPPABLE_DECODING); - - // (1)read in .map to parse all b->c entries - FileInputStream in = new FileInputStream(new File(srcDir, clzName + ".map")); - Parser p = new Parser(in, mPattern); - Entry e = null; - while ((e = p.next()) != null) { - db[e.bs] = (char)e.cp; - - if (e.bs > 0x100 && // db - b2cIndex[e.bs>>8] == UNMAPPABLE_DECODING) { - b2cIndex[e.bs>>8] = 1; - } - - if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { - c2bOff += 0x100; - c2bIndex[e.cp>>8] = 1; - } - } - Formatter fm = new Formatter(b2cSB); - fm.format("%n static final String b2cSBStr =%n"); - outString(fm, db, 0x00, 0x100, ";"); - - fm.format("%n static final String[] b2cStr = {%n"); - for (int i = 0; i < 0x100; i++) { - if (b2cIndex[i] == UNMAPPABLE_DECODING) { - fm.format(" null,%n"); //unmappable segments - } else { - outString(fm, db, i, b2Min, b2Max, ","); - } - } - - fm.format(" };%n"); - fm.close(); - - // (2)now parse the .nr file which includes "b->c" non-roundtrip entries - File f = new File(srcDir, clzName + ".nr"); - if (f.exists()) { - StringBuilder sb = new StringBuilder(); - in = new FileInputStream(f); - p = new Parser(in, mPattern); - e = null; - while ((e = p.next()) != null) { - // A pair - sb.append((char)e.bs); - sb.append((char)e.cp); - } - char[] nr = sb.toString().toCharArray(); - fm = new Formatter(b2cNRSB); - fm.format("String b2cNR =%n"); - outString(fm, nr, 0, nr.length, ";"); - fm.close(); - } else { - b2cNRSB.append("String b2cNR = null;"); - } - - // (3)finally the .c2b file which includes c->b non-roundtrip entries - f = new File(srcDir, clzName + ".c2b"); - if (f.exists()) { - StringBuilder sb = new StringBuilder(); - in = new FileInputStream(f); - p = new Parser(in, mPattern); - e = null; - while ((e = p.next()) != null) { - // A pair - if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { - c2bOff += 0x100; - c2bIndex[e.cp>>8] = 1; - } - sb.append((char)e.bs); - sb.append((char)e.cp); - } - char[] nr = sb.toString().toCharArray(); - fm = new Formatter(c2bNRSB); - fm.format("String c2bNR =%n"); - outString(fm, nr, 0, nr.length, ";"); - fm.close(); - } else { - c2bNRSB.append("String c2bNR = null;"); - } - - // (4)it's time to generate the source file - String b2c = b2cSB.toString(); - String b2cNR = b2cNRSB.toString(); - String c2bNR = c2bNRSB.toString(); - - Scanner s = new Scanner(new File(srcDir, template)); - PrintStream out = new PrintStream(new FileOutputStream( - new File(dstDir, clzName + ".java"))); - if (hisName == null) - hisName = ""; - - while (s.hasNextLine()) { - String line = s.nextLine(); - if (line.indexOf("$") == -1) { - out.println(line); - continue; - } - line = line.replace("$PACKAGE$" , pkgName) - .replace("$IMPLEMENTS$", (hisName == null)? - "" : "implements HistoricallyNamedCharset") - .replace("$NAME_CLZ$", clzName) - .replace("$NAME_ALIASES$", - "sun.nio.cs".equals(pkgName) ? - "StandardCharsets.aliases_" + clzName : - "ExtendedCharsets.aliasesFor(\"" + csName + "\")") - .replace("$NAME_CS$" , csName) - .replace("$CONTAINS$", - "MS932".equals(clzName)? - "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));": - (isASCII ? - "return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));": - "return (cs instanceof " + clzName + ");")) - .replace("$HISTORICALNAME$", - (hisName == null)? "" : - " public String historicalName() { return \"" + hisName + "\"; }") - .replace("$DECTYPE$", type) - .replace("$ENCTYPE$", type) - .replace("$B1MIN$" , "0x" + Integer.toString(b1Min, 16)) - .replace("$B1MAX$" , "0x" + Integer.toString(b1Max, 16)) - .replace("$B2MIN$" , "0x" + Integer.toString(b2Min, 16)) - .replace("$B2MAX$" , "0x" + Integer.toString(b2Max, 16)) - .replace("$B2C$", b2c) - .replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16)) - .replace("$NONROUNDTRIP_B2C$", b2cNR) - .replace("$NONROUNDTRIP_C2B$", c2bNR); - - out.println(line); - } - out.close(); - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/GenerateEUC_TW.java --- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateEUC_TW.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -/* - * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package build.tools.charsetmapping; - -import java.io.*; -import java.util.ArrayList; -import java.util.Scanner; -import java.util.Formatter; -import java.util.regex.*; -import java.nio.charset.*; -import static build.tools.charsetmapping.CharsetMapping.*; - -public class GenerateEUC_TW { - - public static void genEUC_TW(String args[]) throws Exception { - genClass(new FileInputStream(new File(args[0], "euc_tw.map")), - new PrintStream(new File(args[1], "EUC_TWMapping.java"), "ISO-8859-1"), - getCopyright(new File(args[3]))); - } - - private static String getCopyright(File f) throws IOException { - Scanner s = new Scanner(f, "ISO-8859-1"); - StringBuilder sb = new StringBuilder(); - while (s.hasNextLine()) { - String ln = s.nextLine(); - sb.append(ln + "\n"); - // assume we have the copyright as the first comment - if (ln.matches("^\\s\\*\\/$")) - break; - } - s.close(); - return sb.toString(); - } - - private static char[] toCharArray(int[] db, - int b1Min, int b1Max, - int b2Min, int b2Max) - { - char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)]; - int off = 0; - for (int b1 = b1Min; b1 <= b1Max; b1++) { - for (int b2 = b2Min; b2 <= b2Max; b2++) { - ca[off++] = (char)(db[b1 * 256 + b2] & 0xffff); - } - } - return ca; - } - - private static void toChar(Formatter out, String fmt, char c) { - switch (c) { - case '\b': - out.format("\\b"); break; - case '\t': - out.format("\\t"); break; - case '\n': - out.format("\\n"); break; - case '\f': - out.format("\\f"); break; - case '\r': - out.format("\\r"); break; - case '\"': - out.format("\\\""); break; - case '\'': - out.format("\\'"); break; - case '\\': - out.format("\\\\"); break; - default: - out.format(fmt, c & 0xffff); - } - } - - private static void toString(Formatter out, char[] date, String endStr) - { - int off = 0; - int end = date.length; - while (off < end) { - out.format(" \""); - for (int j = 0; j < 8 && off < end; j++) { - toChar(out, "\\u%04X", date[off++]); - } - if (off == end) - out.format("\"%s%n", endStr); - else - out.format("\" +%n"); - } - } - - private static char[] toCharArray(byte[] ba, - int b1Min, int b1Max, - int b2Min, int b2Max) - { - char[] ca = new char[(b1Max - b1Min + 1) * (b2Max - b2Min + 1)]; - int off = 0; - for (int b1 = b1Min; b1 <= b1Max; b1++) { - int b2 = b2Min; - while (b2 <= b2Max) { - ca[off++] = (char)(((ba[b1 * 256 + b2++] & 0xff) << 8) | - (ba[b1 * 256 + b2++] & 0xff)); - } - } - return ca; - } - - private static void toCharArray(Formatter out, char[] date) { - int off = 0; - int end = date.length; - while (off < end) { - out.format(" "); - for (int j = 0; j < 8 && off < end; j++) { - toChar(out, "'\\u%04X',", date[off++]); - } - out.format("%n"); - } - } - - private static int initC2BIndex(char[] index) { - int off = 0; - for (int i = 0; i < index.length; i++) { - if (index[i] != 0) { - index[i] = (char)off; - off += 0x100; - } else { - index[i] = CharsetMapping.UNMAPPABLE_ENCODING; - } - } - return off; - } - - private static Pattern euctw = Pattern.compile("(?:8ea)?(\\p{XDigit}++)\\s++(\\p{XDigit}++)?\\s*+.*"); - - private static void genClass(InputStream is, PrintStream ps, String copyright) - throws Exception - { - // ranges of byte1 and byte2, something should come from a "config" file - int b1Min = 0xa1; - int b1Max = 0xfe; - int b2Min = 0xa1; - int b2Max = 0xfe; - - try { - int[][] db = new int[8][0x10000]; // doublebyte - byte[] suppFlag = new byte[0x10000]; // doublebyte - char[] indexC2B = new char[256]; - char[] indexC2BSupp = new char[256]; - - for (int i = 0; i < 8; i++) - for (int j = 0; j < 0x10000; j++) - db[i][j] = CharsetMapping.UNMAPPABLE_DECODING; - - CharsetMapping.Parser p = new CharsetMapping.Parser(is, euctw); - CharsetMapping.Entry e = null; - while ((e = p.next()) != null) { - int plane = 0; - if (e.bs >= 0x10000) { - plane = ((e.bs >> 16) & 0xff) - 1; - if (plane >= 14) - plane = 7; - e.bs = e.bs & 0xffff; - } - db[plane][e.bs] = e.cp; - if (e.cp < 0x10000) { - indexC2B[e.cp>>8] = 1; - } else { - indexC2BSupp[(e.cp&0xffff)>>8] = 1; - suppFlag[e.bs] |= (1 << plane); - } - } - - StringBuilder out = new StringBuilder(); - Formatter fm = new Formatter(out); - - fm.format(copyright); - fm.format("%n// -- This file was mechanically generated: Do not edit! -- //%n"); - fm.format("package sun.nio.cs.ext;%n%n"); - fm.format("class EUC_TWMapping {%n%n"); - - // boundaries - fm.format(" final static int b1Min = 0x%x;%n", b1Min); - fm.format(" final static int b1Max = 0x%x;%n", b1Max); - fm.format(" final static int b2Min = 0x%x;%n", b2Min); - fm.format(" final static int b2Max = 0x%x;%n", b2Max); - - // b2c tables - fm.format("%n final static String[] b2c = {%n"); - for (int plane = 0; plane < 8; plane++) { - fm.format(" // Plane %d%n", plane); - toString(fm, toCharArray(db[plane], - b1Min, b1Max, b2Min, b2Max), - ","); - fm.format("%n"); - } - fm.format(" };%n"); - - // c2bIndex - fm.format("%n static final int C2BSIZE = 0x%x;%n", - initC2BIndex(indexC2B)); - fm.format("%n static char[] c2bIndex = new char[] {%n"); - toCharArray(fm, indexC2B); - fm.format(" };%n"); - - // c2bIndexSupp - fm.format("%n static final int C2BSUPPSIZE = 0x%x;%n", - initC2BIndex(indexC2BSupp)); - fm.format("%n static char[] c2bSuppIndex = new char[] {%n"); - toCharArray(fm, indexC2BSupp); - fm.format(" };%n"); - - // suppFlags - fm.format("%n static String b2cIsSuppStr =%n"); - toString(fm, toCharArray(suppFlag, - b1Min, b1Max, b2Min, b2Max), - ";"); - - fm.format("}"); - fm.close(); - - ps.println(out.toString()); - ps.close(); - } catch (Exception x) { - x.printStackTrace(); - } - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/GenerateMapping.java --- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateMapping.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* - * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package build.tools.charsetmapping; - -import java.io.*; -import java.util.regex.*; -import static build.tools.charsetmapping.CharsetMapping.*; - -public class GenerateMapping { - - public static void genMapping(String argv[]) throws IOException { - genDataJIS0213(new FileInputStream(argv[0]), - new FileOutputStream(argv[1])); - } - - // regex pattern to parse the "jis0213.map" file - static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*"); - private static void genDataJIS0213(InputStream in, OutputStream out) - { - int[] sb = new int[0x100]; // singlebyte - int[] db = new int[0x10000]; // doublebyte - int[] indexC2B = new int[256]; - Entry[] supp = new Entry[0x10000]; - Entry[] comp = new Entry[0x100]; - int suppTotal = 0; - int compTotal = 0; - - int b1Min1 = 0x81; - int b1Max1 = 0x9f; - int b1Min2 = 0xe0; - int b1Max2 = 0xfc; - int b2Min = 0x40; - int b2Max = 0xfe; - - //init - for (int i = 0; i < 0x80; i++) sb[i] = i; - for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING; - for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING; - try { - Parser p = new Parser(in, sjis0213); - Entry e = null; - while ((e = p.next()) != null) { - if (e.cp2 != 0) { - comp[compTotal++] = e; - } else { - if (e.cp <= 0xffff) { - if (e.bs <= 0xff) - sb[e.bs] = e.cp; - else - db[e.bs] = e.cp; - indexC2B[e.cp>>8] = 1; - } else { - supp[suppTotal++] = e; - } - } - } - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - // c2b Index Table, always the first one - writeINDEXC2B(baos, indexC2B); - writeSINGLEBYTE(baos, sb); - writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max); - writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max); - writeSUPPLEMENT(baos, supp, suppTotal); - writeCOMPOSITE(baos, comp, compTotal); - writeSIZE(out, baos.size()); - baos.writeTo(out); - out.close(); - } catch (Exception x) { - x.printStackTrace(); - } - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java --- a/jdk/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* - * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package build.tools.charsetmapping; - -import java.io.*; -import java.util.Arrays; -import java.util.ArrayList; -import java.util.Scanner; -import java.util.Formatter; -import java.util.regex.*; -import java.nio.charset.*; -import static build.tools.charsetmapping.CharsetMapping.*; - -public class GenerateSBCS { - - public static void genSBCS(String args[]) throws Exception { - - Scanner s = new Scanner(new File(args[0], args[2])); - while (s.hasNextLine()) { - String line = s.nextLine(); - if (line.startsWith("#") || line.length() == 0) - continue; - String[] fields = line.split("\\s+"); - if (fields.length < 5) { - System.err.println("Misconfiged sbcs line <" + line + ">?"); - continue; - } - String clzName = fields[0]; - String csName = fields[1]; - String hisName = fields[2]; - boolean isASCII = Boolean.valueOf(fields[3]); - String pkgName = fields[4]; - System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName); - - genClass(args[0], args[1], "SingleByte-X.java.template", - clzName, csName, hisName, pkgName, isASCII); - } - } - - private static void toString(char[] sb, int off, int end, - Formatter out, String closure, - boolean comment) { - while (off < end) { - out.format(" \""); - for (int j = 0; j < 8; j++) { - if (off == end) - break; - char c = sb[off++]; - switch (c) { - case '\b': - out.format("\\b"); break; - case '\t': - out.format("\\t"); break; - case '\n': - out.format("\\n"); break; - case '\f': - out.format("\\f"); break; - case '\r': - out.format("\\r"); break; - case '\"': - out.format("\\\""); break; - case '\'': - out.format("\\'"); break; - case '\\': - out.format("\\\\"); break; - default: - out.format("\\u%04X", c & 0xffff); - } - } - if (comment) { - if (off == end) - out.format("\" %s // 0x%02x - 0x%02x%n", - closure, off-8, off-1); - else - out.format("\" + // 0x%02x - 0x%02x%n", - off-8, off-1); - } else { - if (off == end) - out.format("\"%s%n", closure); - else - out.format("\" +%n"); - } - } - } - - static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?"); - - private static void genClass(String srcDir, String dstDir, - String template, - String clzName, - String csName, - String hisName, - String pkgName, - boolean isASCII) - throws Exception - { - StringBuilder b2cSB = new StringBuilder(); - StringBuilder b2cNRSB = new StringBuilder(); - StringBuilder c2bNRSB = new StringBuilder(); - - char[] sb = new char[0x100]; - char[] c2bIndex = new char[0x100]; - int c2bOff = 0; - Arrays.fill(sb, UNMAPPABLE_DECODING); - Arrays.fill(c2bIndex, UNMAPPABLE_DECODING); - - // (1)read in .map to parse all b->c entries - FileInputStream in = new FileInputStream( - new File(srcDir, clzName + ".map")); - Parser p = new Parser(in, sbmap); - Entry e = null; - - while ((e = p.next()) != null) { - sb[e.bs] = (char)e.cp; - if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { - c2bOff += 0x100; - c2bIndex[e.cp>>8] = 1; - } - } - - Formatter fm = new Formatter(b2cSB); - fm.format("%n"); - - // vm -server shows cc[byte + 128] access is much faster than - // cc[byte&0xff] so we output the upper segment first - toString(sb, 0x80, 0x100, fm, "+", true); - toString(sb, 0x00, 0x80, fm, ";", true); - fm.close(); - - // (2)now the .nr file which includes "b->c" non-roundtrip entries - File f = new File(srcDir, clzName + ".nr"); - if (f.exists()) { - in = new FileInputStream(f); - fm = new Formatter(b2cNRSB); - p = new Parser(in, sbmap); - e = null; - - fm.format("// remove non-roundtrip entries%n"); - fm.format(" b2cMap = b2cTable.toCharArray();%n"); - while ((e = p.next()) != null) { - fm.format(" b2cMap[%d] = UNMAPPABLE_DECODING;%n", - (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80)); - } - fm.close(); - } - - // (3)finally the .c2b file which includes c->b non-roundtrip entries - f = new File(srcDir, clzName + ".c2b"); - if (f.exists()) { - in = new FileInputStream(f); - fm = new Formatter(c2bNRSB); - p = new Parser(in, sbmap); - e = null; - ArrayList es = new ArrayList(); - while ((e = p.next()) != null) { - if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { - c2bOff += 0x100; - c2bIndex[e.cp>>8] = 1; - } - es.add(e); - } - fm.format("// non-roundtrip c2b only entries%n"); - if (es.size() < 100) { - fm.format(" c2bNR = new char[%d];%n", es.size() * 2); - int i = 0; - for (Entry entry: es) { - fm.format(" c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n", - i++, entry.bs, i++, entry.cp); - } - } else { - char[] cc = new char[es.size() * 2]; - int i = 0; - for (Entry entry: es) { - cc[i++] = (char)entry.bs; - cc[i++] = (char)entry.cp; - } - fm.format(" c2bNR = (%n"); - toString(cc, 0, i, fm, ").toCharArray();", false); - } - fm.close(); - } - - // (4)it's time to generate the source file - String b2c = b2cSB.toString(); - String b2cNR = b2cNRSB.toString(); - String c2bNR = c2bNRSB.toString(); - - Scanner s = new Scanner(new File(srcDir, template)); - PrintStream out = new PrintStream(new FileOutputStream( - new File(dstDir, clzName + ".java"))); - - while (s.hasNextLine()) { - String line = s.nextLine(); - int i = line.indexOf("$"); - if (i == -1) { - out.println(line); - continue; - } - if (line.indexOf("$PACKAGE$", i) != -1) { - line = line.replace("$PACKAGE$", pkgName); - } - if (line.indexOf("$NAME_CLZ$", i) != -1) { - line = line.replace("$NAME_CLZ$", clzName); - } - if (line.indexOf("$NAME_CS$", i) != -1) { - line = line.replace("$NAME_CS$", csName); - } - if (line.indexOf("$NAME_ALIASES$", i) != -1) { - if ("sun.nio.cs".equals(pkgName)) - line = line.replace("$NAME_ALIASES$", - "StandardCharsets.aliases_" + clzName); - else - line = line.replace("$NAME_ALIASES$", - "ExtendedCharsets.aliasesFor(\"" + csName + "\")"); - } - if (line.indexOf("$NAME_HIS$", i) != -1) { - line = line.replace("$NAME_HIS$", hisName); - } - if (line.indexOf("$CONTAINS$", i) != -1) { - if (isASCII) - line = " return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));"; - else - line = " return (cs instanceof " + clzName + ");"; - } - if (line.indexOf("$B2CTABLE$") != -1) { - line = line.replace("$B2CTABLE$", b2c); - } - if (line.indexOf("$C2BLENGTH$") != -1) { - line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16)); - } - if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) { - if (b2cNR.length() == 0) - continue; - line = line.replace("$NONROUNDTRIP_B2C$", b2cNR); - } - - if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) { - if (c2bNR.length() == 0) - continue; - line = line.replace("$NONROUNDTRIP_C2B$", c2bNR); - } - out.println(line); - } - out.close(); - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,190 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.*; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Formatter; +import java.util.regex.*; +import java.nio.charset.*; +import static build.tools.charsetmapping.Utils.*; + +public class HKSCS { + + // HKSCS2001.map has the third column for "UnicodeAlternate", which + // is for c->b non-roundtrip mapping. + // For HKSCS2008, those non-roundtrip mappings are in .nr file + private static Pattern hkscs = + Pattern.compile("(?:0x)?+(\\p{XDigit}++)\\s++(?:0x|U\\+)?+(\\p{XDigit}++)?\\s*+(?:0x|U\\+)?(\\p{XDigit}++)?\\s*+.*"); + + static void genClass(String args[]) throws Exception { + + // hkscs2008 + genClass0(new FileInputStream(new File(args[0], "HKSCS2008.map")), + new FileInputStream(new File(args[0], "HKSCS2008.c2b")), + new PrintStream(new File(args[1], "HKSCSMapping.java"), + "ISO-8859-1"), + "HKSCSMapping", + getCopyright(new File(args[3]))); + + + // xp2001 + genClass0(new FileInputStream(new File(args[0], "HKSCS_XP.map")), + null, + new PrintStream(new File(args[1], "HKSCS_XPMapping.java"), + "ISO-8859-1"), + "HKSCS_XPMapping", + getCopyright(new File(args[3]))); + + // hkscs2001 + genClass0(new FileInputStream(new File(args[0], "HKSCS2001.map")), + new FileInputStream(new File(args[0], "HKSCS2001.c2b")), + new PrintStream(new File(args[1], "HKSCS2001Mapping.java"), + "ISO-8859-1"), + "HKSCS2001Mapping", + getCopyright(new File(args[3]))); + } + + static void genClass0(InputStream isB2C, + InputStream isC2B, + PrintStream ps, + String clzName, + String copyright) + throws Exception + { + // ranges of byte1 and byte2, something should come from a "config" file + int b1Min = 0x87; + int b1Max = 0xfe; + int b2Min = 0x40; + int b2Max = 0xfe; + + try { + char[] bmp = new char[0x10000]; + char[] supp = new char[0x10000]; + + boolean[] b2cBmp = new boolean[0x100]; + boolean[] b2cSupp = new boolean[0x100]; + // pua should be in range of e000-f8ff. Expand + // it to 0xf93b becase the hkscs2001.c2b has + // the f920-f93b filled + //char[] pua = new char[0xF8FF - 0xE000 + 1]; + char[] pua = new char[0xF93b - 0xE000 + 1]; + boolean hasSupp = false; + boolean hasPua = false; + + Arrays.fill(bmp, UNMAPPABLE_DECODING); + Arrays.fill(supp, UNMAPPABLE_DECODING); + Arrays.fill(pua, UNMAPPABLE_DECODING); + + Parser p = new Parser(isB2C, hkscs); + Entry e = null; + while ((e = p.next()) != null) { + if (e.cp >= 0x10000) { + supp[e.bs] = (char)e.cp; + b2cSupp[e.bs>>8] = true; + hasSupp = true; + } else { + bmp[e.bs] = (char)e.cp; + b2cBmp[e.bs>>8] = true; + } + if (e.cp2 != 0 && e.cp2 >= 0xe000 && e.cp2 <= 0xf8ff) { + hasPua = true; + pua[e.cp2 - 0xE000] = (char)e.bs; + } + } + + if (isC2B != null) { + p = new Parser(isC2B, hkscs); + e = null; + while ((e = p.next()) != null) { + pua[e.cp - 0xE000] = (char)e.bs; + } + hasPua = true; + } + + StringBuilder sb = new StringBuilder(); + Output out = new Output(new Formatter(sb)); + + out.format(copyright); + out.format("%n// -- This file was mechanically generated: Do not edit! -- //%n"); + out.format("package sun.nio.cs.ext;%n%n"); + out.format("class %s {%n%n", clzName); + + /* hardcoded in sun.nio.cs.ext.HKSCS.java + out.format(" final static int b1Min = 0x%x;%n", b1Min); + out.format(" final static int b1Max = 0x%x;%n", b1Max); + out.format(" final static int b2Min = 0x%x;%n", b2Min); + out.format(" final static int b2Max = 0x%x;%n", b2Max); + */ + + // bmp tables + out.format("%n static final String[] b2cBmpStr = new String[] {%n"); + for (int i = 0; i < 0x100; i++) { + if (b2cBmp[i]) + out.format(bmp, i, b2Min, b2Max, ","); + else + out.format(" null,%n"); //unmappable segments + } + out.format(" };%n"); + + // supp tables + out.format("%n static final String[] b2cSuppStr ="); + if (hasSupp) { + out.format(" new String[] {%n"); + for (int i = 0; i < 0x100; i++) { + if (b2cSupp[i]) + out.format(supp, i, b2Min, b2Max, ","); + else + out.format(" null,%n"); //unmappable segments + } + out.format(" };%n"); + } else { + out.format(" null;%n"); + } + + // private area tables + out.format("%n final static String pua ="); + if (hasPua) { + out.format("%n"); + out.format(pua, 0, pua.length, ";"); + } else { + out.format(" null;%n"); + } + out.format("%n"); + out.format("}"); + + out.close(); + + ps.println(sb.toString()); + ps.close(); + + } catch (Exception x) { + x.printStackTrace(); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/JIS0213.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/JIS0213.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,244 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.*; +import java.util.regex.*; +import java.util.*; +import static build.tools.charsetmapping.Utils.*; + +public class JIS0213 { + + // regex pattern to parse the "jis0213.map" file + static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*"); + + static void genClass(String argv[]) throws IOException + { + InputStream in = new FileInputStream(argv[0]) ; + OutputStream out = new FileOutputStream(argv[1]); + + int[] sb = new int[0x100]; // singlebyte + int[] db = new int[0x10000]; // doublebyte + int[] indexC2B = new int[256]; + Entry[] supp = new Entry[0x10000]; + Entry[] comp = new Entry[0x100]; + int suppTotal = 0; + int compTotal = 0; + + int b1Min1 = 0x81; + int b1Max1 = 0x9f; + int b1Min2 = 0xe0; + int b1Max2 = 0xfc; + int b2Min = 0x40; + int b2Max = 0xfe; + + //init + for (int i = 0; i < 0x80; i++) sb[i] = i; + for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING; + for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING; + try { + Parser p = new Parser(in, sjis0213); + Entry e = null; + while ((e = p.next()) != null) { + if (e.cp2 != 0) { + comp[compTotal++] = e; + } else { + if (e.cp <= 0xffff) { + if (e.bs <= 0xff) + sb[e.bs] = e.cp; + else + db[e.bs] = e.cp; + indexC2B[e.cp>>8] = 1; + } else { + supp[suppTotal++] = e; + } + } + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + // c2b Index Table, always the first one + writeINDEXC2B(baos, indexC2B); + writeSINGLEBYTE(baos, sb); + writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max); + writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max); + writeSUPPLEMENT(baos, supp, suppTotal); + writeCOMPOSITE(baos, comp, compTotal); + writeSIZE(out, baos.size()); + baos.writeTo(out); + out.close(); + } catch (Exception x) { + x.printStackTrace(); + } + } + + static Comparator comparatorCP = + new Comparator() { + public int compare(Entry m1, Entry m2) { + return m1.cp - m2.cp; + } + public boolean equals(Object obj) { + return this == obj; + } + }; + + // tags of different charset mapping tables + private final static int MAP_SINGLEBYTE = 0x1; // 0..256 : c + private final static int MAP_DOUBLEBYTE1 = 0x2; // min..max: c + private final static int MAP_DOUBLEBYTE2 = 0x3; // min..max: c [DB2] + private final static int MAP_SUPPLEMENT = 0x5; // db,c + private final static int MAP_SUPPLEMENT_C2B = 0x6; // c,db + private final static int MAP_COMPOSITE = 0x7; // db,base,cc + private final static int MAP_INDEXC2B = 0x8; // index table of c->bb + + private static final void writeShort(OutputStream out, int data) + throws IOException + { + out.write((data >>> 8) & 0xFF); + out.write((data ) & 0xFF); + } + + private static final void writeShortArray(OutputStream out, + int type, + int[] array, + int off, + int size) // exclusive + throws IOException + { + writeShort(out, type); + writeShort(out, size); + for (int i = off; i < size; i++) { + writeShort(out, array[off+i]); + } + } + + private static final void writeSIZE(OutputStream out, int data) + throws IOException + { + out.write((data >>> 24) & 0xFF); + out.write((data >>> 16) & 0xFF); + out.write((data >>> 8) & 0xFF); + out.write((data ) & 0xFF); + } + + private static void writeINDEXC2B(OutputStream out, int[] indexC2B) + throws IOException + { + writeShort(out, MAP_INDEXC2B); + writeShort(out, indexC2B.length); + int off = 0; + for (int i = 0; i < indexC2B.length; i++) { + if (indexC2B[i] != 0) { + writeShort(out, off); + off += 256; + } else { + writeShort(out, -1); + } + } + } + + private static void writeSINGLEBYTE(OutputStream out, int[] sb) + throws IOException + { + writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256); + } + + private static void writeDOUBLEBYTE(OutputStream out, + int type, + int[] db, + int b1Min, int b1Max, + int b2Min, int b2Max) + throws IOException + { + writeShort(out, type); + writeShort(out, b1Min); + writeShort(out, b1Max); + writeShort(out, b2Min); + writeShort(out, b2Max); + writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1)); + + for (int b1 = b1Min; b1 <= b1Max; b1++) { + for (int b2 = b2Min; b2 <= b2Max; b2++) { + writeShort(out, db[b1 * 256 + b2]); + } + } + } + + private static void writeDOUBLEBYTE1(OutputStream out, + int[] db, + int b1Min, int b1Max, + int b2Min, int b2Max) + throws IOException + { + writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max); + } + + private static void writeDOUBLEBYTE2(OutputStream out, + int[] db, + int b1Min, int b1Max, + int b2Min, int b2Max) + throws IOException + { + writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max); + } + + // the c2b table is output as well + private static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size) + throws IOException + { + writeShort(out, MAP_SUPPLEMENT); + writeShort(out, size * 2); + // db at first half, cc at the low half + for (int i = 0; i < size; i++) { + writeShort(out, supp[i].bs); + } + for (int i = 0; i < size; i++) { + writeShort(out, supp[i].cp); + } + + //c2b + writeShort(out, MAP_SUPPLEMENT_C2B); + writeShort(out, size*2); + Arrays.sort(supp, 0, size, comparatorCP); + for (int i = 0; i < size; i++) { + writeShort(out, supp[i].cp); + } + for (int i = 0; i < size; i++) { + writeShort(out, supp[i].bs); + } + } + + private static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size) + throws IOException + { + writeShort(out, MAP_COMPOSITE); + writeShort(out, size*3); + // comp is sorted already + for (int i = 0; i < size; i++) { + writeShort(out, (char)comp[i].bs); + writeShort(out, (char)comp[i].cp); + writeShort(out, (char)comp[i].cp2); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/Main.java --- a/jdk/make/tools/src/build/tools/charsetmapping/Main.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/tools/src/build/tools/charsetmapping/Main.java Wed Jul 05 17:09:51 2017 +0200 @@ -32,23 +32,19 @@ public static void main(String args[]) throws Exception { if (args.length < 3 ) { - System.out.println("Usage: java -jar charsetmapping.jar src dst mType..."); + System.out.println("Usage: java -jar charsetmapping.jar src dst mType [copyrightSrc]"); System.exit(1); } if ("sbcs".equals(args[2]) || "extsbcs".equals(args[2])) { - GenerateSBCS.genSBCS(args); + SBCS.genClass(args); } else if ("dbcs".equals(args[2])) { - GenerateDBCS.genDBCS(args); - + DBCS.genClass(args); } else if ("euctw".equals(args[2])) { - if (args.length != 4) { - System.out.println("Usage: java -jar charsetmapping.jar srcDir dstDir euctw copyrightSrc"); - System.exit(1); - } - GenerateEUC_TW.genEUC_TW(args); + EUC_TW.genClass(args); } else if ("sjis0213".equals(args[2])) { - GenerateMapping.genMapping(args); + JIS0213.genClass(args); + } else if ("hkscs".equals(args[2])) { + HKSCS.genClass(args); } } - } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/SBCS.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,269 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.*; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Formatter; +import java.util.regex.*; +import java.nio.charset.*; +import static build.tools.charsetmapping.Utils.*; + +public class SBCS { + + public static void genClass(String args[]) throws Exception { + + Scanner s = new Scanner(new File(args[0], args[2])); + while (s.hasNextLine()) { + String line = s.nextLine(); + if (line.startsWith("#") || line.length() == 0) + continue; + String[] fields = line.split("\\s+"); + if (fields.length < 5) { + System.err.println("Misconfiged sbcs line <" + line + ">?"); + continue; + } + String clzName = fields[0]; + String csName = fields[1]; + String hisName = fields[2]; + boolean isASCII = Boolean.valueOf(fields[3]); + String pkgName = fields[4]; + System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName); + + genClass0(args[0], args[1], "SingleByte-X.java.template", + clzName, csName, hisName, pkgName, isASCII); + } + } + + private static void toString(char[] sb, int off, int end, + Formatter out, String closure, + boolean comment) { + while (off < end) { + out.format(" \""); + for (int j = 0; j < 8; j++) { + if (off == end) + break; + char c = sb[off++]; + switch (c) { + case '\b': + out.format("\\b"); break; + case '\t': + out.format("\\t"); break; + case '\n': + out.format("\\n"); break; + case '\f': + out.format("\\f"); break; + case '\r': + out.format("\\r"); break; + case '\"': + out.format("\\\""); break; + case '\'': + out.format("\\'"); break; + case '\\': + out.format("\\\\"); break; + default: + out.format("\\u%04X", c & 0xffff); + } + } + if (comment) { + if (off == end) + out.format("\" %s // 0x%02x - 0x%02x%n", + closure, off-8, off-1); + else + out.format("\" + // 0x%02x - 0x%02x%n", + off-8, off-1); + } else { + if (off == end) + out.format("\"%s%n", closure); + else + out.format("\" +%n"); + } + } + } + + static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?"); + + private static void genClass0(String srcDir, String dstDir, + String template, + String clzName, + String csName, + String hisName, + String pkgName, + boolean isASCII) + throws Exception + { + StringBuilder b2cSB = new StringBuilder(); + StringBuilder b2cNRSB = new StringBuilder(); + StringBuilder c2bNRSB = new StringBuilder(); + + char[] sb = new char[0x100]; + char[] c2bIndex = new char[0x100]; + int c2bOff = 0; + Arrays.fill(sb, UNMAPPABLE_DECODING); + Arrays.fill(c2bIndex, UNMAPPABLE_DECODING); + + // (1)read in .map to parse all b->c entries + FileInputStream in = new FileInputStream( + new File(srcDir, clzName + ".map")); + Parser p = new Parser(in, sbmap); + Entry e = null; + + while ((e = p.next()) != null) { + sb[e.bs] = (char)e.cp; + if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { + c2bOff += 0x100; + c2bIndex[e.cp>>8] = 1; + } + } + + Formatter fm = new Formatter(b2cSB); + fm.format("%n"); + + // vm -server shows cc[byte + 128] access is much faster than + // cc[byte&0xff] so we output the upper segment first + toString(sb, 0x80, 0x100, fm, "+", true); + toString(sb, 0x00, 0x80, fm, ";", true); + fm.close(); + + // (2)now the .nr file which includes "b->c" non-roundtrip entries + File f = new File(srcDir, clzName + ".nr"); + if (f.exists()) { + in = new FileInputStream(f); + fm = new Formatter(b2cNRSB); + p = new Parser(in, sbmap); + e = null; + + fm.format("// remove non-roundtrip entries%n"); + fm.format(" b2cMap = b2cTable.toCharArray();%n"); + while ((e = p.next()) != null) { + fm.format(" b2cMap[%d] = UNMAPPABLE_DECODING;%n", + (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80)); + } + fm.close(); + } + + // (3)finally the .c2b file which includes c->b non-roundtrip entries + f = new File(srcDir, clzName + ".c2b"); + if (f.exists()) { + in = new FileInputStream(f); + fm = new Formatter(c2bNRSB); + p = new Parser(in, sbmap); + e = null; + ArrayList es = new ArrayList(); + while ((e = p.next()) != null) { + if (c2bIndex[e.cp>>8] == UNMAPPABLE_DECODING) { + c2bOff += 0x100; + c2bIndex[e.cp>>8] = 1; + } + es.add(e); + } + fm.format("// non-roundtrip c2b only entries%n"); + if (es.size() < 100) { + fm.format(" c2bNR = new char[%d];%n", es.size() * 2); + int i = 0; + for (Entry entry: es) { + fm.format(" c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n", + i++, entry.bs, i++, entry.cp); + } + } else { + char[] cc = new char[es.size() * 2]; + int i = 0; + for (Entry entry: es) { + cc[i++] = (char)entry.bs; + cc[i++] = (char)entry.cp; + } + fm.format(" c2bNR = (%n"); + toString(cc, 0, i, fm, ").toCharArray();", false); + } + fm.close(); + } + + // (4)it's time to generate the source file + String b2c = b2cSB.toString(); + String b2cNR = b2cNRSB.toString(); + String c2bNR = c2bNRSB.toString(); + + Scanner s = new Scanner(new File(srcDir, template)); + PrintStream out = new PrintStream(new FileOutputStream( + new File(dstDir, clzName + ".java"))); + + while (s.hasNextLine()) { + String line = s.nextLine(); + int i = line.indexOf("$"); + if (i == -1) { + out.println(line); + continue; + } + if (line.indexOf("$PACKAGE$", i) != -1) { + line = line.replace("$PACKAGE$", pkgName); + } + if (line.indexOf("$NAME_CLZ$", i) != -1) { + line = line.replace("$NAME_CLZ$", clzName); + } + if (line.indexOf("$NAME_CS$", i) != -1) { + line = line.replace("$NAME_CS$", csName); + } + if (line.indexOf("$NAME_ALIASES$", i) != -1) { + if ("sun.nio.cs".equals(pkgName)) + line = line.replace("$NAME_ALIASES$", + "StandardCharsets.aliases_" + clzName); + else + line = line.replace("$NAME_ALIASES$", + "ExtendedCharsets.aliasesFor(\"" + csName + "\")"); + } + if (line.indexOf("$NAME_HIS$", i) != -1) { + line = line.replace("$NAME_HIS$", hisName); + } + if (line.indexOf("$CONTAINS$", i) != -1) { + if (isASCII) + line = " return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));"; + else + line = " return (cs instanceof " + clzName + ");"; + } + if (line.indexOf("$B2CTABLE$") != -1) { + line = line.replace("$B2CTABLE$", b2c); + } + if (line.indexOf("$C2BLENGTH$") != -1) { + line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16)); + } + if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) { + if (b2cNR.length() == 0) + continue; + line = line.replace("$NONROUNDTRIP_B2C$", b2cNR); + } + + if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) { + if (c2bNR.length() == 0) + continue; + line = line.replace("$NONROUNDTRIP_C2B$", c2bNR); + } + out.println(line); + } + out.close(); + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/charsetmapping/Utils.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/tools/src/build/tools/charsetmapping/Utils.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,221 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.BufferedReader; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.Scanner; +import java.util.Formatter; + +public class Utils { + + public final static char UNMAPPABLE_DECODING = '\uFFFD'; + public final static int UNMAPPABLE_ENCODING = 0xFFFD; + + public static class Entry { + public int bs; //byte sequence reps + public int cp; //Unicode codepoint + public int cp2; //CC of composite + + public Entry () {} + public Entry (int bytes, int cp, int cp2) { + this.bs = bytes; + this.cp = cp; + this.cp2 = cp2; + } + } + + public static class Parser { + static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*"); + static final int gBS = 1; + static final int gCP = 2; + static final int gCP2 = 3; + + BufferedReader reader; + boolean closed; + Matcher matcher; + int gbs, gcp, gcp2; + + public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2) + throws IOException + { + this.reader = new BufferedReader(new InputStreamReader(in)); + this.closed = false; + this.matcher = p.matcher(""); + this.gbs = gbs; + this.gcp = gcp; + this.gcp2 = gcp2; + } + + public Parser (InputStream in, Pattern p) throws IOException { + this(in, p, gBS, gCP, gCP2); + } + + public Parser (InputStream in) throws IOException { + this(in, basic, gBS, gCP, gCP2); + } + + protected boolean isDirective(String line) { + return line.startsWith("#"); + } + + protected Entry parse(Matcher matcher, Entry mapping) { + mapping.bs = Integer.parseInt(matcher.group(gbs), 16); + mapping.cp = Integer.parseInt(matcher.group(gcp), 16); + if (gcp2 <= matcher.groupCount() && + matcher.group(gcp2) != null) + mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16); + else + mapping.cp2 = 0; + return mapping; + } + + public Entry next() throws Exception { + return next(new Entry()); + } + + // returns null and closes the input stream if the eof has beenreached. + public Entry next(Entry mapping) throws Exception { + if (closed) + return null; + String line; + while ((line = reader.readLine()) != null) { + if (isDirective(line)) + continue; + matcher.reset(line); + if (!matcher.lookingAt()) { + //System.out.println("Missed: " + line); + continue; + } + return parse(matcher, mapping); + } + reader.close(); + closed = true; + return null; + } + } + + public static class Output { + private Formatter out; + + public Output(Formatter out) { + this.out = out; + } + + public void close() { + out.close(); + } + + private void toChar(String fmt, char c) { + switch (c) { + case '\b': + out.format("\\b"); break; + case '\t': + out.format("\\t"); break; + case '\n': + out.format("\\n"); break; + case '\f': + out.format("\\f"); break; + case '\r': + out.format("\\r"); break; + case '\"': + out.format("\\\""); break; + case '\'': + out.format("\\'"); break; + case '\\': + out.format("\\\\"); break; + default: + out.format(fmt, c & 0xffff); + } + } + + public void format(String fmt, Object ... args) { + out.format(fmt, args); + } + + public void format(char[] cc, int off, int end, String closure) { + while (off < end) { + out.format(" \""); + for (int j = 0; j < 8; j++) { + if (off == end) + break; + toChar("\\u%04X", cc[off++]); + } + if (off == end) + out.format("\" %s%n", closure); + else + out.format("\" + %n"); + } + } + + public void format(char[] cc, String closure) { + format(cc, 0, cc.length, closure); + } + + public void format(char[] db, int b1, int b2Min, int b2Max, + String closure) + { + char[] cc = new char[b2Max - b2Min + 1]; + int off = 0; + for (int b2 = b2Min; b2 <= b2Max; b2++) { + cc[off++] = db[(b1 << 8) | b2]; + } + format(cc, 0, cc.length, closure); + } + + public void format(char[] date) { + int off = 0; + int end = date.length; + while (off < end) { + out.format(" "); + for (int j = 0; j < 8 && off < end; j++) { + toChar("'\\u%04X',", date[off++]); + } + out.format("%n"); + } + } + } + + public static String getCopyright(File f) throws IOException { + Scanner s = new Scanner(f, "ISO-8859-1"); + StringBuilder sb = new StringBuilder(); + while (s.hasNextLine()) { + String ln = s.nextLine(); + sb.append(ln + "\n"); + // assume we have the copyright as the first comment + if (ln.matches("^\\s\\*\\/$")) + break; + } + s.close(); + return sb.toString(); + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/make/tools/src/build/tools/javazic/RuleDay.java --- a/jdk/make/tools/src/build/tools/javazic/RuleDay.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/make/tools/src/build/tools/javazic/RuleDay.java Wed Jul 05 17:09:51 2017 +0200 @@ -139,7 +139,7 @@ if (isLast()) { return -1; } - return getDay(); + return isEarlier() ? -getDay() : getDay(); } /** @@ -147,13 +147,10 @@ * @return the SimpleTimeZone day-of-week rule value */ int getDayOfWeekForSimpleTimeZoneInt() { - if (!isLater() && !isEarlier() && !isLast()) { - return 0; - } - if (isLater()) { + if (isEarlier() || isLater()) { return -getDayOfWeekNum(); } - return getDayOfWeekNum(); + return isLast() ? getDayOfWeekNum() : 0; } /** diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/beans/EventHandler.java --- a/jdk/src/share/classes/java/beans/EventHandler.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/beans/EventHandler.java Wed Jul 05 17:09:51 2017 +0200 @@ -32,7 +32,6 @@ import java.security.AccessController; import java.security.PrivilegedAction; -import java.util.EventObject; import sun.reflect.misc.MethodUtil; /** @@ -279,9 +278,9 @@ public class EventHandler implements InvocationHandler { private Object target; private String action; - private String eventPropertyName; - private String listenerMethodName; - private AccessControlContext acc; + private final String eventPropertyName; + private final String listenerMethodName; + private final AccessControlContext acc = AccessController.getContext(); /** * Creates a new EventHandler object; @@ -310,7 +309,6 @@ */ @ConstructorProperties({"target", "action", "eventPropertyName", "listenerMethodName"}) public EventHandler(Object target, String action, String eventPropertyName, String listenerMethodName) { - this.acc = AccessController.getContext(); this.target = target; this.action = action; if (target == null) { @@ -422,7 +420,11 @@ * @see EventHandler */ public Object invoke(final Object proxy, final Method method, final Object[] arguments) { - return AccessController.doPrivileged(new PrivilegedAction() { + AccessControlContext acc = this.acc; + if ((acc == null) && (System.getSecurityManager() != null)) { + throw new SecurityException("AccessControlContext is not set"); + } + return AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return invokeInternal(proxy, method, arguments); } @@ -482,7 +484,10 @@ throw new RuntimeException(ex); } catch (InvocationTargetException ex) { - throw new RuntimeException(ex.getTargetException()); + Throwable th = ex.getTargetException(); + throw (th instanceof RuntimeException) + ? (RuntimeException) th + : new RuntimeException(th); } } return null; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/beans/Expression.java --- a/jdk/src/share/classes/java/beans/Expression.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/beans/Expression.java Wed Jul 05 17:09:51 2017 +0200 @@ -99,6 +99,29 @@ } /** + * {@inheritDoc} + *

+ * If the invoked method completes normally, + * the value it returns is copied in the {@code value} property. + * Note that the {@code value} property is set to {@code null}, + * if the return type of the underlying method is {@code void}. + * + * @throws NullPointerException if the value of the {@code target} or + * {@code methodName} property is {@code null} + * @throws NoSuchMethodException if a matching method is not found + * @throws SecurityException if a security manager exists and + * it denies the method invocation + * @throws Exception that is thrown by the invoked method + * + * @see java.lang.reflect.Method + * @since 1.7 + */ + @Override + public void execute() throws Exception { + setValue(invoke()); + } + + /** * If the value property of this instance is not already set, * this method dynamically finds the method with the specified * methodName on this target with these arguments and calls it. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/beans/Statement.java --- a/jdk/src/share/classes/java/beans/Statement.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/beans/Statement.java Wed Jul 05 17:09:51 2017 +0200 @@ -29,6 +29,10 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.security.AccessControlContext; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import com.sun.beans.finder.ClassFinder; import com.sun.beans.finder.ConstructorFinder; @@ -63,9 +67,10 @@ } }; - Object target; - String methodName; - Object[] arguments; + private final AccessControlContext acc = AccessController.getContext(); + private final Object target; + private final String methodName; + private final Object[] arguments; ClassLoader loader; /** @@ -127,8 +132,8 @@ } /** - * The execute method finds a method whose name is the same - * as the methodName property, and invokes the method on + * The {@code execute} method finds a method whose name is the same + * as the {@code methodName} property, and invokes the method on * the target. * * When the target's class defines many methods with the given name @@ -136,7 +141,7 @@ * the algorithm specified in the Java Language Specification * (15.11). The dynamic class of the target and arguments are used * in place of the compile-time type information and, like the - * java.lang.reflect.Method class itself, conversion between + * {@link java.lang.reflect.Method} class itself, conversion between * primitive values and their associated wrapper classes is handled * internally. *

@@ -147,19 +152,48 @@ *

  • * The reserved method name "new" may be used to call a class's constructor * as if all classes defined static "new" methods. Constructor invocations - * are typically considered Expressions rather than Statements + * are typically considered {@code Expression}s rather than {@code Statement}s * as they return a value. *
  • - * The method names "get" and "set" defined in the java.util.List + * The method names "get" and "set" defined in the {@link java.util.List} * interface may also be applied to array instances, mapping to - * the static methods of the same name in the Array class. + * the static methods of the same name in the {@code Array} class. * + * + * @throws NullPointerException if the value of the {@code target} or + * {@code methodName} property is {@code null} + * @throws NoSuchMethodException if a matching method is not found + * @throws SecurityException if a security manager exists and + * it denies the method invocation + * @throws Exception that is thrown by the invoked method + * + * @see java.lang.reflect.Method */ public void execute() throws Exception { invoke(); } Object invoke() throws Exception { + AccessControlContext acc = this.acc; + if ((acc == null) && (System.getSecurityManager() != null)) { + throw new SecurityException("AccessControlContext is not set"); + } + try { + return AccessController.doPrivileged( + new PrivilegedExceptionAction() { + public Object run() throws Exception { + return invokeInternal(); + } + }, + acc + ); + } + catch (PrivilegedActionException exception) { + throw exception.getException(); + } + } + + private Object invokeInternal() throws Exception { Object target = getTarget(); String methodName = getMethodName(); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/io/File.java --- a/jdk/src/share/classes/java/io/File.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/io/File.java Wed Jul 05 17:09:51 2017 +0200 @@ -2064,11 +2064,12 @@ private synchronized void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { - s.defaultReadObject(); + ObjectInputStream.GetField fields = s.readFields(); + String pathField = (String)fields.get("path", null); char sep = s.readChar(); // read the previous separator char if (sep != separatorChar) - this.path = this.path.replace(sep, separatorChar); - this.path = fs.normalize(this.path); + pathField = pathField.replace(sep, separatorChar); + this.path = fs.normalize(pathField); this.prefixLength = fs.prefixLength(this.path); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/io/FilterInputStream.java --- a/jdk/src/share/classes/java/io/FilterInputStream.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/io/FilterInputStream.java Wed Jul 05 17:09:51 2017 +0200 @@ -134,9 +134,18 @@ } /** - * {@inheritDoc} + * Skips over and discards n bytes of data from the + * input stream. The skip method may, for a variety of + * reasons, end up skipping over some smaller number of bytes, + * possibly 0. The actual number of bytes skipped is + * returned. *

    * This method simply performs in.skip(n). + * + * @param n the number of bytes to be skipped. + * @return the actual number of bytes skipped. + * @exception IOException if the stream does not support seek, + * or if some other I/O error occurs. */ public long skip(long n) throws IOException { return in.skip(n); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/lang/ProcessBuilder.java --- a/jdk/src/share/classes/java/lang/ProcessBuilder.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/lang/ProcessBuilder.java Wed Jul 05 17:09:51 2017 +0200 @@ -994,6 +994,8 @@ // Must convert to array first -- a malicious user-supplied // list might try to circumvent the security check. String[] cmdarray = command.toArray(new String[command.size()]); + cmdarray = cmdarray.clone(); + for (String arg : cmdarray) if (arg == null) throw new NullPointerException(); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/lang/ThreadGroup.java --- a/jdk/src/share/classes/java/lang/ThreadGroup.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/lang/ThreadGroup.java Wed Jul 05 17:09:51 2017 +0200 @@ -55,7 +55,7 @@ */ public class ThreadGroup implements Thread.UncaughtExceptionHandler { - ThreadGroup parent; + private final ThreadGroup parent; String name; int maxPriority; boolean destroyed; @@ -76,6 +76,7 @@ private ThreadGroup() { // called from C code this.name = "system"; this.maxPriority = Thread.MAX_PRIORITY; + this.parent = null; } /** @@ -113,10 +114,10 @@ * @since JDK1.0 */ public ThreadGroup(ThreadGroup parent, String name) { - if (parent == null) { - throw new NullPointerException(); - } - parent.checkAccess(); + this(checkParentAccess(parent), parent, name); + } + + private ThreadGroup(Void unused, ThreadGroup parent, String name) { this.name = name; this.maxPriority = parent.maxPriority; this.daemon = parent.daemon; @@ -125,6 +126,16 @@ parent.add(this); } + /* + * @throws NullPointerException if the parent argument is {@code null} + * @throws SecurityException if the current thread cannot create a + * thread in the specified thread group. + */ + private static Void checkParentAccess(ThreadGroup parent) { + parent.checkAccess(); + return null; + } + /** * Returns the name of this thread group. * diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/DatagramSocket.java --- a/jdk/src/share/classes/java/net/DatagramSocket.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/DatagramSocket.java Wed Jul 05 17:09:51 2017 +0200 @@ -118,6 +118,7 @@ if (address == null) { throw new IllegalArgumentException("connect: null address"); } + checkAddress (address, "connect"); if (isClosed()) return; SecurityManager security = System.getSecurityManager(); @@ -363,13 +364,15 @@ InetSocketAddress epoint = (InetSocketAddress) addr; if (epoint.isUnresolved()) throw new SocketException("Unresolved address"); + InetAddress iaddr = epoint.getAddress(); + int port = epoint.getPort(); + checkAddress(iaddr, "bind"); SecurityManager sec = System.getSecurityManager(); if (sec != null) { - sec.checkListen(epoint.getPort()); + sec.checkListen(port); } try { - getImpl().bind(epoint.getPort(), - epoint.getAddress()); + getImpl().bind(port, iaddr); } catch (SocketException e) { getImpl().close(); throw e; @@ -377,6 +380,15 @@ bound = true; } + void checkAddress (InetAddress addr, String op) { + if (addr == null) { + return; + } + if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) { + throw new IllegalArgumentException(op + ": invalid address type"); + } + } + /** * Connects the socket to a remote address for this socket. When a * socket is connected to a remote address, packets may only be @@ -603,6 +615,7 @@ synchronized (p) { if (isClosed()) throw new SocketException("Socket is closed"); + checkAddress (p.getAddress(), "send"); if (connectState == ST_NOT_CONNECTED) { // check the address is ok wiht the security manager on every send. SecurityManager security = System.getSecurityManager(); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/InetAddress.java --- a/jdk/src/share/classes/java/net/InetAddress.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/InetAddress.java Wed Jul 05 17:09:51 2017 +0200 @@ -35,6 +35,7 @@ import java.security.AccessController; import java.io.ObjectStreamException; import java.io.IOException; +import java.io.ObjectInputStream; import sun.security.action.*; import sun.net.InetAddressCachePolicy; import sun.net.util.IPAddressUtil; @@ -1472,6 +1473,23 @@ return impl; } + + private void readObjectNoData (ObjectInputStream s) throws + IOException, ClassNotFoundException { + if (getClass().getClassLoader() != null) { + throw new SecurityException ("invalid address type"); + } + } + + private void readObject (ObjectInputStream s) throws + IOException, ClassNotFoundException { + s.defaultReadObject (); + if (getClass().getClassLoader() != null) { + hostName = null; + address = 0; + throw new SecurityException ("invalid address type"); + } + } } /* diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/MulticastSocket.java --- a/jdk/src/share/classes/java/net/MulticastSocket.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/MulticastSocket.java Wed Jul 05 17:09:51 2017 +0200 @@ -289,6 +289,7 @@ throw new SocketException("Socket is closed"); } + checkAddress(mcastaddr, "joinGroup"); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkMulticast(mcastaddr); @@ -323,6 +324,7 @@ throw new SocketException("Socket is closed"); } + checkAddress(mcastaddr, "leaveGroup"); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkMulticast(mcastaddr); @@ -370,6 +372,7 @@ if (oldImpl) throw new UnsupportedOperationException(); + checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "joinGroup"); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress()); @@ -416,6 +419,7 @@ if (oldImpl) throw new UnsupportedOperationException(); + checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "leaveGroup"); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress()); @@ -441,6 +445,7 @@ if (isClosed()) { throw new SocketException("Socket is closed"); } + checkAddress(inf, "setInterface"); synchronized (infLock) { getImpl().setOption(SocketOptions.IP_MULTICAST_IF, inf); infAddress = inf; @@ -632,6 +637,7 @@ throws IOException { if (isClosed()) throw new SocketException("Socket is closed"); + checkAddress(p.getAddress(), "send"); synchronized(ttlLock) { synchronized(p) { if (connectState == ST_NOT_CONNECTED) { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/NetworkInterface.java --- a/jdk/src/share/classes/java/net/NetworkInterface.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/NetworkInterface.java Wed Jul 05 17:09:51 2017 +0200 @@ -290,8 +290,12 @@ * If the specified address is null. */ public static NetworkInterface getByInetAddress(InetAddress addr) throws SocketException { - if (addr == null) + if (addr == null) { throw new NullPointerException(); + } + if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) { + throw new IllegalArgumentException ("invalid address type"); + } return getByInetAddress0(addr); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/Socket.java --- a/jdk/src/share/classes/java/net/Socket.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/Socket.java Wed Jul 05 17:09:51 2017 +0200 @@ -122,6 +122,9 @@ if (p.type() == Proxy.Type.SOCKS) { SecurityManager security = System.getSecurityManager(); InetSocketAddress epoint = (InetSocketAddress) p.address(); + if (epoint.getAddress() != null) { + checkAddress (epoint.getAddress(), "Socket"); + } if (security != null) { if (epoint.isUnresolved()) security.checkConnect(epoint.getHostName(), @@ -558,15 +561,16 @@ throw new IllegalArgumentException("Unsupported address type"); InetSocketAddress epoint = (InetSocketAddress) endpoint; + InetAddress addr = epoint.getAddress (); + int port = epoint.getPort(); + checkAddress(addr, "connect"); SecurityManager security = System.getSecurityManager(); if (security != null) { if (epoint.isUnresolved()) - security.checkConnect(epoint.getHostName(), - epoint.getPort()); + security.checkConnect(epoint.getHostName(), port); else - security.checkConnect(epoint.getAddress().getHostAddress(), - epoint.getPort()); + security.checkConnect(addr.getHostAddress(), port); } if (!created) createImpl(true); @@ -574,10 +578,9 @@ impl.connect(epoint, timeout); else if (timeout == 0) { if (epoint.isUnresolved()) - impl.connect(epoint.getAddress().getHostName(), - epoint.getPort()); + impl.connect(addr.getHostName(), port); else - impl.connect(epoint.getAddress(), epoint.getPort()); + impl.connect(addr, port); } else throw new UnsupportedOperationException("SocketImpl.connect(addr, timeout)"); connected = true; @@ -614,14 +617,25 @@ InetSocketAddress epoint = (InetSocketAddress) bindpoint; if (epoint != null && epoint.isUnresolved()) throw new SocketException("Unresolved address"); - if (bindpoint == null) - getImpl().bind(InetAddress.anyLocalAddress(), 0); - else - getImpl().bind(epoint.getAddress(), - epoint.getPort()); + if (epoint == null) { + epoint = new InetSocketAddress(0); + } + InetAddress addr = epoint.getAddress(); + int port = epoint.getPort(); + checkAddress (addr, "bind"); + getImpl().bind (addr, port); bound = true; } + private void checkAddress (InetAddress addr, String op) { + if (addr == null) { + return; + } + if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) { + throw new IllegalArgumentException(op + ": invalid address type"); + } + } + /** * set the flags after an accept() call. */ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/SocketInputStream.java --- a/jdk/src/share/classes/java/net/SocketInputStream.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/SocketInputStream.java Wed Jul 05 17:09:51 2017 +0200 @@ -118,6 +118,10 @@ * @exception IOException If an I/O error has occurred. */ public int read(byte b[], int off, int length) throws IOException { + return read(b, off, length, impl.getTimeout()); + } + + int read(byte b[], int off, int length, int timeout) throws IOException { int n; // EOF already encountered @@ -143,7 +147,7 @@ // acquire file descriptor and do the read FileDescriptor fd = impl.acquireFD(); try { - n = socketRead0(fd, b, off, length, impl.getTimeout()); + n = socketRead0(fd, b, off, length, timeout); if (n > 0) { return n; } @@ -161,7 +165,7 @@ impl.setConnectionResetPending(); impl.acquireFD(); try { - n = socketRead0(fd, b, off, length, impl.getTimeout()); + n = socketRead0(fd, b, off, length, timeout); if (n > 0) { return n; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/net/SocksSocketImpl.java --- a/jdk/src/share/classes/java/net/SocksSocketImpl.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/net/SocksSocketImpl.java Wed Jul 05 17:09:51 2017 +0200 @@ -98,11 +98,31 @@ super.connect(new InetSocketAddress(host, port), timeout); } + private static int remainingMillis(long deadlineMillis) throws IOException { + if (deadlineMillis == 0L) + return 0; + + final long remaining = deadlineMillis - System.currentTimeMillis(); + if (remaining > 0) + return (int) remaining; + + throw new SocketTimeoutException(); + } + private int readSocksReply(InputStream in, byte[] data) throws IOException { + return readSocksReply(in, data, 0L); + } + + private int readSocksReply(InputStream in, byte[] data, long deadlineMillis) throws IOException { int len = data.length; int received = 0; for (int attempts = 0; received < len && attempts < 3; attempts++) { - int count = in.read(data, received, len - received); + int count; + try { + count = ((SocketInputStream)in).read(data, received, len - received, remainingMillis(deadlineMillis)); + } catch (SocketTimeoutException e) { + throw new SocketTimeoutException("Connect timed out"); + } if (count < 0) throw new SocketException("Malformed reply from SOCKS server"); received += count; @@ -115,6 +135,12 @@ */ private boolean authenticate(byte method, InputStream in, BufferedOutputStream out) throws IOException { + return authenticate(method, in, out, 0L); + } + + private boolean authenticate(byte method, InputStream in, + BufferedOutputStream out, + long deadlineMillis) throws IOException { // No Authentication required. We're done then! if (method == NO_AUTH) return true; @@ -162,7 +188,7 @@ out.write(0); out.flush(); byte[] data = new byte[2]; - int i = readSocksReply(in, data); + int i = readSocksReply(in, data, deadlineMillis); if (i != 2 || data[1] != 0) { /* RFC 1929 specifies that the connection MUST be closed if authentication fails */ @@ -201,18 +227,18 @@ // out.write(outToken); // out.flush(); // data = new byte[2]; -// i = readSocksReply(in, data); +// i = readSocksReply(in, data, deadlineMillis); // if (i != 2 || data[1] == 0xff) { // in.close(); // out.close(); // return false; // } -// i = readSocksReply(in, data); +// i = readSocksReply(in, data, deadlineMillis); // int len = 0; // len = ((int)data[0] & 0xff) << 8; // len += data[1]; // data = new byte[len]; -// i = readSocksReply(in, data); +// i = readSocksReply(in, data, deadlineMillis); // if (i == len) // return true; // in.close(); @@ -231,7 +257,8 @@ } private void connectV4(InputStream in, OutputStream out, - InetSocketAddress endpoint) throws IOException { + InetSocketAddress endpoint, + long deadlineMillis) throws IOException { if (!(endpoint.getAddress() instanceof Inet4Address)) { throw new SocketException("SOCKS V4 requires IPv4 only addresses"); } @@ -249,7 +276,7 @@ out.write(0); out.flush(); byte[] data = new byte[8]; - int n = readSocksReply(in, data); + int n = readSocksReply(in, data, deadlineMillis); if (n != 8) throw new SocketException("Reply from SOCKS server has bad length: " + n); if (data[0] != 0 && data[0] != 4) @@ -296,6 +323,15 @@ */ @Override protected void connect(SocketAddress endpoint, int timeout) throws IOException { + final long deadlineMillis; + + if (timeout == 0) { + deadlineMillis = 0L; + } else { + long finish = System.currentTimeMillis() + timeout; + deadlineMillis = finish < 0 ? Long.MAX_VALUE : finish; + } + SecurityManager security = System.getSecurityManager(); if (endpoint == null || !(endpoint instanceof InetSocketAddress)) throw new IllegalArgumentException("Unsupported address type"); @@ -322,7 +358,7 @@ /* * No default proxySelector --> direct connection */ - super.connect(epoint, timeout); + super.connect(epoint, remainingMillis(deadlineMillis)); return; } URI uri; @@ -345,13 +381,13 @@ java.util.Iterator iProxy = null; iProxy = sel.select(uri).iterator(); if (iProxy == null || !(iProxy.hasNext())) { - super.connect(epoint, timeout); + super.connect(epoint, remainingMillis(deadlineMillis)); return; } while (iProxy.hasNext()) { p = iProxy.next(); if (p == null || p == Proxy.NO_PROXY) { - super.connect(epoint, timeout); + super.connect(epoint, remainingMillis(deadlineMillis)); return; } if (p.type() != Proxy.Type.SOCKS) @@ -364,7 +400,7 @@ // Connects to the SOCKS server try { - privilegedConnect(server, serverPort, timeout); + privilegedConnect(server, serverPort, remainingMillis(deadlineMillis)); // Worked, let's get outta here break; } catch (IOException e) { @@ -388,7 +424,7 @@ } else { // Connects to the SOCKS server try { - privilegedConnect(server, serverPort, timeout); + privilegedConnect(server, serverPort, remainingMillis(deadlineMillis)); } catch (IOException e) { throw new SocketException(e.getMessage()); } @@ -403,7 +439,7 @@ // DOMAIN type of addresses (unresolved addresses here) if (epoint.isUnresolved()) throw new UnknownHostException(epoint.toString()); - connectV4(in, out, epoint); + connectV4(in, out, epoint, deadlineMillis); return; } @@ -414,7 +450,7 @@ out.write(USER_PASSW); out.flush(); byte[] data = new byte[2]; - int i = readSocksReply(in, data); + int i = readSocksReply(in, data, deadlineMillis); if (i != 2 || ((int)data[0]) != PROTO_VERS) { // Maybe it's not a V5 sever after all // Let's try V4 before we give up @@ -422,12 +458,12 @@ // DOMAIN type of addresses (unresolved addresses here) if (epoint.isUnresolved()) throw new UnknownHostException(epoint.toString()); - connectV4(in, out, epoint); + connectV4(in, out, epoint, deadlineMillis); return; } if (((int)data[1]) == NO_METHODS) throw new SocketException("SOCKS : No acceptable methods"); - if (!authenticate(data[1], in, out)) { + if (!authenticate(data[1], in, out, deadlineMillis)) { throw new SocketException("SOCKS : authentication failed"); } out.write(PROTO_VERS); @@ -457,7 +493,7 @@ } out.flush(); data = new byte[4]; - i = readSocksReply(in, data); + i = readSocksReply(in, data, deadlineMillis); if (i != 4) throw new SocketException("Reply from SOCKS server has bad length"); SocketException ex = null; @@ -469,33 +505,33 @@ switch(data[3]) { case IPV4: addr = new byte[4]; - i = readSocksReply(in, addr); + i = readSocksReply(in, addr, deadlineMillis); if (i != 4) throw new SocketException("Reply from SOCKS server badly formatted"); data = new byte[2]; - i = readSocksReply(in, data); + i = readSocksReply(in, data, deadlineMillis); if (i != 2) throw new SocketException("Reply from SOCKS server badly formatted"); break; case DOMAIN_NAME: len = data[1]; byte[] host = new byte[len]; - i = readSocksReply(in, host); + i = readSocksReply(in, host, deadlineMillis); if (i != len) throw new SocketException("Reply from SOCKS server badly formatted"); data = new byte[2]; - i = readSocksReply(in, data); + i = readSocksReply(in, data, deadlineMillis); if (i != 2) throw new SocketException("Reply from SOCKS server badly formatted"); break; case IPV6: len = data[1]; addr = new byte[len]; - i = readSocksReply(in, addr); + i = readSocksReply(in, addr, deadlineMillis); if (i != len) throw new SocketException("Reply from SOCKS server badly formatted"); data = new byte[2]; - i = readSocksReply(in, data); + i = readSocksReply(in, data, deadlineMillis); if (i != 2) throw new SocketException("Reply from SOCKS server badly formatted"); break; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/security/Policy.java --- a/jdk/src/share/classes/java/security/Policy.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/security/Policy.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,19 +28,17 @@ import java.io.*; import java.lang.RuntimePermission; +import java.lang.reflect.*; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.Hashtable; -import java.util.Vector; +import java.util.PropertyPermission; import java.util.StringTokenizer; -import java.util.PropertyPermission; - -import java.lang.reflect.*; - +import java.util.Vector; import java.util.WeakHashMap; +import sun.security.jca.GetInstance; import sun.security.util.Debug; -import sun.security.jca.GetInstance; import sun.security.util.SecurityConstants; @@ -113,8 +111,8 @@ private static final Debug debug = Debug.getInstance("policy"); - // Cache mapping ProtectionDomain to PermissionCollection - private WeakHashMap pdMapping; + // Cache mapping ProtectionDomain.Key to PermissionCollection + private WeakHashMap pdMapping; /** package private for AccessControlContext */ static boolean isSet() @@ -307,7 +305,7 @@ synchronized (p) { if (p.pdMapping == null) { p.pdMapping = - new WeakHashMap(); + new WeakHashMap(); } } @@ -323,7 +321,7 @@ synchronized (p.pdMapping) { // cache of pd to permissions - p.pdMapping.put(policyDomain, policyPerms); + p.pdMapping.put(policyDomain.key, policyPerms); } } return; @@ -638,7 +636,7 @@ } synchronized (pdMapping) { - pc = pdMapping.get(domain); + pc = pdMapping.get(domain.key); } if (pc != null) { @@ -697,7 +695,7 @@ } synchronized (pdMapping) { - pc = pdMapping.get(domain); + pc = pdMapping.get(domain.key); } if (pc != null) { @@ -711,7 +709,7 @@ synchronized (pdMapping) { // cache it - pdMapping.put(domain, pc); + pdMapping.put(domain.key, pc); } return pc.implies(permission); @@ -747,21 +745,25 @@ this.params = params; } - public String getType() { return type; } + @Override public String getType() { return type; } + + @Override public Policy.Parameters getParameters() { return params; } - public Policy.Parameters getParameters() { return params; } + @Override public Provider getProvider() { return p; } - public Provider getProvider() { return p; } - + @Override public PermissionCollection getPermissions(CodeSource codesource) { return spi.engineGetPermissions(codesource); } + @Override public PermissionCollection getPermissions(ProtectionDomain domain) { return spi.engineGetPermissions(domain); } + @Override public boolean implies(ProtectionDomain domain, Permission perm) { return spi.engineImplies(domain, perm); } + @Override public void refresh() { spi.engineRefresh(); } @@ -803,7 +805,7 @@ * @exception SecurityException - if this PermissionCollection object * has been marked readonly */ - public void add(Permission permission) { + @Override public void add(Permission permission) { perms.add(permission); } @@ -816,7 +818,7 @@ * @return true if "permission" is implied by the permissions in * the collection, false if not. */ - public boolean implies(Permission permission) { + @Override public boolean implies(Permission permission) { return perms.implies(permission); } @@ -826,7 +828,7 @@ * * @return an enumeration of all the Permissions. */ - public Enumeration elements() { + @Override public Enumeration elements() { return perms.elements(); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/security/ProtectionDomain.java --- a/jdk/src/share/classes/java/security/ProtectionDomain.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/security/ProtectionDomain.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,9 +25,15 @@ package java.security; +import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.List; -import java.util.ArrayList; +import java.util.Map; +import java.util.WeakHashMap; +import sun.misc.JavaSecurityProtectionDomainAccess; +import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache; +import sun.misc.SharedSecrets; import sun.security.util.Debug; import sun.security.util.SecurityConstants; @@ -72,6 +78,11 @@ or dynamic (via a policy refresh) */ private boolean staticPermissions; + /* + * An object used as a key when the ProtectionDomain is stored in a Map. + */ + final Key key = new Key(); + private static final Debug debug = Debug.getInstance("domain"); /** @@ -238,7 +249,7 @@ /** * Convert a ProtectionDomain to a String. */ - public String toString() { + @Override public String toString() { String pals = ""; if (principals != null && principals.length > 0) { StringBuilder palBuf = new StringBuilder("(principals "); @@ -396,4 +407,29 @@ return mergedPerms; } + + /** + * Used for storing ProtectionDomains as keys in a Map. + */ + final class Key {} + + static { + SharedSecrets.setJavaSecurityProtectionDomainAccess( + new JavaSecurityProtectionDomainAccess() { + public ProtectionDomainCache getProtectionDomainCache() { + return new ProtectionDomainCache() { + private final Map map = + Collections.synchronizedMap + (new WeakHashMap()); + public void put(ProtectionDomain pd, + PermissionCollection pc) { + map.put((pd == null ? null : pd.key), pc); + } + public PermissionCollection get(ProtectionDomain pd) { + return pd == null ? map.get(null) : map.get(pd.key); + } + }; + } + }); + } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/concurrent/Semaphore.java --- a/jdk/src/share/classes/java/util/concurrent/Semaphore.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/concurrent/Semaphore.java Wed Jul 05 17:09:51 2017 +0200 @@ -191,8 +191,11 @@ protected final boolean tryReleaseShared(int releases) { for (;;) { - int p = getState(); - if (compareAndSetState(p, p + releases)) + int current = getState(); + int next = current + releases; + if (next < current) // overflow + throw new Error("Maximum permit count exceeded"); + if (compareAndSetState(current, next)) return true; } } @@ -201,6 +204,8 @@ for (;;) { int current = getState(); int next = current - reductions; + if (next > current) // underflow + throw new Error("Permit count underflow"); if (compareAndSetState(current, next)) return; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Wed Jul 05 17:09:51 2017 +0200 @@ -57,7 +57,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /** diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Wed Jul 05 17:09:51 2017 +0200 @@ -56,7 +56,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /** diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Wed Jul 05 17:09:51 2017 +0200 @@ -57,7 +57,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /** diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/zip/Deflater.java --- a/jdk/src/share/classes/java/util/zip/Deflater.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/zip/Deflater.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,7 +72,8 @@ */ public class Deflater { - private long strm; + + private final ZStreamRef zsRef; private byte[] buf = new byte[0]; private int off, len; private int level, strategy; @@ -165,7 +166,7 @@ public Deflater(int level, boolean nowrap) { this.level = level; this.strategy = DEFAULT_STRATEGY; - strm = init(level, DEFAULT_STRATEGY, nowrap); + this.zsRef = new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap)); } /** @@ -193,16 +194,18 @@ * @param len the length of the data * @see Deflater#needsInput */ - public synchronized void setInput(byte[] b, int off, int len) { + public void setInput(byte[] b, int off, int len) { if (b== null) { throw new NullPointerException(); } if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - this.buf = b; - this.off = off; - this.len = len; + synchronized (zsRef) { + this.buf = b; + this.off = off; + this.len = len; + } } /** @@ -227,14 +230,17 @@ * @see Inflater#inflate * @see Inflater#getAdler */ - public synchronized void setDictionary(byte[] b, int off, int len) { - if (strm == 0 || b == null) { + public void setDictionary(byte[] b, int off, int len) { + if (b == null) { throw new NullPointerException(); } if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - setDictionary(strm, b, off, len); + synchronized (zsRef) { + ensureOpen(); + setDictionary(zsRef.address(), b, off, len); + } } /** @@ -257,7 +263,7 @@ * @exception IllegalArgumentException if the compression strategy is * invalid */ - public synchronized void setStrategy(int strategy) { + public void setStrategy(int strategy) { switch (strategy) { case DEFAULT_STRATEGY: case FILTERED: @@ -266,9 +272,11 @@ default: throw new IllegalArgumentException(); } - if (this.strategy != strategy) { - this.strategy = strategy; - setParams = true; + synchronized (zsRef) { + if (this.strategy != strategy) { + this.strategy = strategy; + setParams = true; + } } } @@ -277,13 +285,15 @@ * @param level the new compression level (0-9) * @exception IllegalArgumentException if the compression level is invalid */ - public synchronized void setLevel(int level) { + public void setLevel(int level) { if ((level < 0 || level > 9) && level != DEFAULT_COMPRESSION) { throw new IllegalArgumentException("invalid compression level"); } - if (this.level != level) { - this.level = level; - setParams = true; + synchronized (zsRef) { + if (this.level != level) { + this.level = level; + setParams = true; + } } } @@ -301,8 +311,10 @@ * When called, indicates that compression should end with the current * contents of the input buffer. */ - public synchronized void finish() { - finish = true; + public void finish() { + synchronized (zsRef) { + finish = true; + } } /** @@ -311,8 +323,10 @@ * @return true if the end of the compressed data output stream has * been reached */ - public synchronized boolean finished() { - return finished; + public boolean finished() { + synchronized (zsRef) { + return finished; + } } /** @@ -399,26 +413,31 @@ * @throws IllegalArgumentException if the flush mode is invalid * @since 1.7 */ - public synchronized int deflate(byte[] b, int off, int len, int flush) { + public int deflate(byte[] b, int off, int len, int flush) { if (b == null) { throw new NullPointerException(); } if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - if (flush == NO_FLUSH || flush == SYNC_FLUSH || - flush == FULL_FLUSH) - return deflateBytes(b, off, len, flush); - throw new IllegalArgumentException(); + synchronized (zsRef) { + ensureOpen(); + if (flush == NO_FLUSH || flush == SYNC_FLUSH || + flush == FULL_FLUSH) + return deflateBytes(zsRef.address(), b, off, len, flush); + throw new IllegalArgumentException(); + } } /** * Returns the ADLER-32 value of the uncompressed data. * @return the ADLER-32 value of the uncompressed data */ - public synchronized int getAdler() { - ensureOpen(); - return getAdler(strm); + public int getAdler() { + synchronized (zsRef) { + ensureOpen(); + return getAdler(zsRef.address()); + } } /** @@ -440,9 +459,11 @@ * @return the total (non-negative) number of uncompressed bytes input so far * @since 1.5 */ - public synchronized long getBytesRead() { - ensureOpen(); - return getBytesRead(strm); + public long getBytesRead() { + synchronized (zsRef) { + ensureOpen(); + return getBytesRead(zsRef.address()); + } } /** @@ -464,21 +485,25 @@ * @return the total (non-negative) number of compressed bytes output so far * @since 1.5 */ - public synchronized long getBytesWritten() { - ensureOpen(); - return getBytesWritten(strm); + public long getBytesWritten() { + synchronized (zsRef) { + ensureOpen(); + return getBytesWritten(zsRef.address()); + } } /** * Resets deflater so that a new set of input data can be processed. * Keeps current compression level and strategy settings. */ - public synchronized void reset() { - ensureOpen(); - reset(strm); - finish = false; - finished = false; - off = len = 0; + public void reset() { + synchronized (zsRef) { + ensureOpen(); + reset(zsRef.address()); + finish = false; + finished = false; + off = len = 0; + } } /** @@ -488,11 +513,14 @@ * finalize() method. Once this method is called, the behavior * of the Deflater object is undefined. */ - public synchronized void end() { - if (strm != 0) { - end(strm); - strm = 0; - buf = null; + public void end() { + synchronized (zsRef) { + long addr = zsRef.address(); + zsRef.clear(); + if (addr != 0) { + end(addr); + buf = null; + } } } @@ -504,18 +532,19 @@ } private void ensureOpen() { - if (strm == 0) - throw new NullPointerException(); + assert Thread.holdsLock(zsRef); + if (zsRef.address() == 0) + throw new NullPointerException("Deflater has been closed"); } private static native void initIDs(); private native static long init(int level, int strategy, boolean nowrap); - private native static void setDictionary(long strm, byte[] b, int off, - int len); - private native int deflateBytes(byte[] b, int off, int len, int flush); - private native static int getAdler(long strm); - private native static long getBytesRead(long strm); - private native static long getBytesWritten(long strm); - private native static void reset(long strm); - private native static void end(long strm); + private native static void setDictionary(long addr, byte[] b, int off, int len); + private native int deflateBytes(long addr, byte[] b, int off, int len, + int flush); + private native static int getAdler(long addr); + private native static long getBytesRead(long addr); + private native static long getBytesWritten(long addr); + private native static void reset(long addr); + private native static void end(long addr); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/zip/Inflater.java --- a/jdk/src/share/classes/java/util/zip/Inflater.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/zip/Inflater.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,7 +72,8 @@ */ public class Inflater { - private long strm; + + private final ZStreamRef zsRef; private byte[] buf = defaultBuf; private int off, len; private boolean finished; @@ -97,7 +98,7 @@ * @param nowrap if true then support GZIP compatible compression */ public Inflater(boolean nowrap) { - strm = init(nowrap); + zsRef = new ZStreamRef(init(nowrap)); } /** @@ -116,16 +117,18 @@ * @param len the length of the input data * @see Inflater#needsInput */ - public synchronized void setInput(byte[] b, int off, int len) { + public void setInput(byte[] b, int off, int len) { if (b == null) { throw new NullPointerException(); } if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - this.buf = b; - this.off = off; - this.len = len; + synchronized (zsRef) { + this.buf = b; + this.off = off; + this.len = len; + } } /** @@ -150,15 +153,18 @@ * @see Inflater#needsDictionary * @see Inflater#getAdler */ - public synchronized void setDictionary(byte[] b, int off, int len) { - if (strm == 0 || b == null) { + public void setDictionary(byte[] b, int off, int len) { + if (b == null) { throw new NullPointerException(); } if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - setDictionary(strm, b, off, len); - needDict = false; + synchronized (zsRef) { + ensureOpen(); + setDictionary(zsRef.address(), b, off, len); + needDict = false; + } } /** @@ -180,8 +186,10 @@ * buffer after decompression has finished. * @return the total number of bytes remaining in the input buffer */ - public synchronized int getRemaining() { - return len; + public int getRemaining() { + synchronized (zsRef) { + return len; + } } /** @@ -190,8 +198,10 @@ * to provide more input. * @return true if no data remains in the input buffer */ - public synchronized boolean needsInput() { - return len <= 0; + public boolean needsInput() { + synchronized (zsRef) { + return len <= 0; + } } /** @@ -199,8 +209,10 @@ * @return true if a preset dictionary is needed for decompression * @see Inflater#setDictionary */ - public synchronized boolean needsDictionary() { - return needDict; + public boolean needsDictionary() { + synchronized (zsRef) { + return needDict; + } } /** @@ -209,8 +221,10 @@ * @return true if the end of the compressed data stream has been * reached */ - public synchronized boolean finished() { - return finished; + public boolean finished() { + synchronized (zsRef) { + return finished; + } } /** @@ -228,7 +242,7 @@ * @see Inflater#needsInput * @see Inflater#needsDictionary */ - public synchronized int inflate(byte[] b, int off, int len) + public int inflate(byte[] b, int off, int len) throws DataFormatException { if (b == null) { @@ -237,7 +251,10 @@ if (off < 0 || len < 0 || off > b.length - len) { throw new ArrayIndexOutOfBoundsException(); } - return inflateBytes(b, off, len); + synchronized (zsRef) { + ensureOpen(); + return inflateBytes(zsRef.address(), b, off, len); + } } /** @@ -261,9 +278,11 @@ * Returns the ADLER-32 value of the uncompressed data. * @return the ADLER-32 value of the uncompressed data */ - public synchronized int getAdler() { - ensureOpen(); - return getAdler(strm); + public int getAdler() { + synchronized (zsRef) { + ensureOpen(); + return getAdler(zsRef.address()); + } } /** @@ -285,9 +304,11 @@ * @return the total (non-negative) number of compressed bytes input so far * @since 1.5 */ - public synchronized long getBytesRead() { - ensureOpen(); - return getBytesRead(strm); + public long getBytesRead() { + synchronized (zsRef) { + ensureOpen(); + return getBytesRead(zsRef.address()); + } } /** @@ -309,21 +330,25 @@ * @return the total (non-negative) number of uncompressed bytes output so far * @since 1.5 */ - public synchronized long getBytesWritten() { - ensureOpen(); - return getBytesWritten(strm); + public long getBytesWritten() { + synchronized (zsRef) { + ensureOpen(); + return getBytesWritten(zsRef.address()); + } } /** * Resets inflater so that a new set of input data can be processed. */ - public synchronized void reset() { - ensureOpen(); - reset(strm); - buf = defaultBuf; - finished = false; - needDict = false; - off = len = 0; + public void reset() { + synchronized (zsRef) { + ensureOpen(); + reset(zsRef.address()); + buf = defaultBuf; + finished = false; + needDict = false; + off = len = 0; + } } /** @@ -333,11 +358,14 @@ * method. Once this method is called, the behavior of the Inflater * object is undefined. */ - public synchronized void end() { - if (strm != 0) { - end(strm); - strm = 0; - buf = null; + public void end() { + synchronized (zsRef) { + long addr = zsRef.address(); + zsRef.clear(); + if (addr != 0) { + end(addr); + buf = null; + } } } @@ -349,19 +377,20 @@ } private void ensureOpen () { - if (strm == 0) - throw new NullPointerException(); + assert Thread.holdsLock(zsRef); + if (zsRef.address() == 0) + throw new NullPointerException("Inflater has been closed"); } private native static void initIDs(); private native static long init(boolean nowrap); - private native static void setDictionary(long strm, byte[] b, int off, + private native static void setDictionary(long addr, byte[] b, int off, int len); - private native int inflateBytes(byte[] b, int off, int len) + private native int inflateBytes(long addr, byte[] b, int off, int len) throws DataFormatException; - private native static int getAdler(long strm); - private native static long getBytesRead(long strm); - private native static long getBytesWritten(long strm); - private native static void reset(long strm); - private native static void end(long strm); + private native static int getAdler(long addr); + private native static long getBytesRead(long addr); + private native static long getBytesWritten(long addr); + private native static void reset(long addr); + private native static void end(long addr); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/zip/ZStreamRef.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/java/util/zip/ZStreamRef.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,46 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package java.util.zip; + +/** + * A reference to the native zlib's z_stream structure. + */ + +class ZStreamRef { + + private long address; + ZStreamRef (long address) { + this.address = address; + } + + long address() { + return address; + } + + void clear() { + address = 0; + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/java/util/zip/ZipFile.java --- a/jdk/src/share/classes/java/util/zip/ZipFile.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/java/util/zip/ZipFile.java Wed Jul 05 17:09:51 2017 +0200 @@ -36,6 +36,8 @@ import java.util.Set; import java.util.HashSet; import java.util.NoSuchElementException; +import java.security.AccessController; +import sun.security.action.GetPropertyAction; import static java.util.zip.ZipConstants64.*; /** @@ -78,6 +80,17 @@ private static native void initIDs(); + private static final boolean usemmap; + + static { + // A system prpperty to disable mmap use to avoid vm crash when + // in-use zip file is accidently overwritten by others. + String prop = AccessController.doPrivileged( + new GetPropertyAction("sun.zip.disableMemoryMapping")); + usemmap = (prop == null || + !(prop.length() == 0 || prop.equalsIgnoreCase("true"))); + } + /** * Opens a zip file for reading. * @@ -196,7 +209,7 @@ throw new NullPointerException("charset is null"); this.zc = ZipCoder.get(charset); long t0 = System.nanoTime(); - jzfile = open(name, mode, file.lastModified()); + jzfile = open(name, mode, file.lastModified(), usemmap); sun.misc.PerfCounter.getZipFileOpenTime().addElapsedTimeFrom(t0); sun.misc.PerfCounter.getZipFileCount().increment(); this.name = name; @@ -673,8 +686,8 @@ } - private static native long open(String name, int mode, long lastModified) - throws IOException; + private static native long open(String name, int mode, long lastModified, + boolean usemmap) throws IOException; private static native int getTotal(long jzfile); private static native int read(long jzfile, long jzentry, long pos, byte[] b, int off, int len); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java --- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Wed Jul 05 17:09:51 2017 +0200 @@ -1271,6 +1271,7 @@ * * @return a String representation of this object. **/ + @Override public String toString() { return super.toString() + ": connectionId=" + connectionId; } @@ -1514,6 +1515,21 @@ } } + private static class SetCcl implements PrivilegedExceptionAction { + private final ClassLoader classLoader; + + SetCcl(ClassLoader classLoader) { + this.classLoader = classLoader; + } + + public ClassLoader run() { + Thread currentThread = Thread.currentThread(); + ClassLoader old = currentThread.getContextClassLoader(); + currentThread.setContextClassLoader(classLoader); + return old; + } + } + private static T unwrap(final MarshalledObject mo, final ClassLoader cl, final Class wrappedClass) @@ -1522,22 +1538,14 @@ return null; } try { - return AccessController.doPrivileged( - new PrivilegedExceptionAction() { - public T run() - throws IOException { - final ClassLoader old = - Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(cl); - try { - return wrappedClass.cast(mo.get()); - } catch (ClassNotFoundException cnfe) { - throw new UnmarshalException(cnfe.toString(), cnfe); - } finally { - Thread.currentThread().setContextClassLoader(old); - } - } - }); + final ClassLoader old = AccessController.doPrivileged(new SetCcl(cl)); + try { + return wrappedClass.cast(mo.get()); + } catch (ClassNotFoundException cnfe) { + throw new UnmarshalException(cnfe.toString(), cnfe); + } finally { + AccessController.doPrivileged(new SetCcl(old)); + } } catch (PrivilegedActionException pe) { Exception e = extractException(pe); if (e instanceof IOException) { @@ -1561,14 +1569,14 @@ return null; } try { - return AccessController.doPrivileged( - new PrivilegedExceptionAction() { - public T run() - throws IOException { - return unwrap(mo, new OrderClassLoaders(cl1, cl2), - wrappedClass); - } - }); + ClassLoader orderCL = AccessController.doPrivileged( + new PrivilegedExceptionAction() { + public ClassLoader run() throws Exception { + return new OrderClassLoaders(cl1, cl2); + } + } + ); + return unwrap(mo, orderCL, wrappedClass); } catch (PrivilegedActionException pe) { Exception e = extractException(pe); if (e instanceof IOException) { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/net/SocketFactory.java --- a/jdk/src/share/classes/javax/net/SocketFactory.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/net/SocketFactory.java Wed Jul 05 17:09:51 2017 +0200 @@ -27,8 +27,10 @@ package javax.net; import java.io.IOException; -import java.net.*; - +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketException; +import java.net.UnknownHostException; /** * This class creates sockets. It may be subclassed by other factories, @@ -113,7 +115,17 @@ * @see java.net.Socket#Socket() */ public Socket createSocket() throws IOException { - throw new SocketException("Unconnected sockets not implemented"); + // + // bug 6771432: + // The Exception is used by HttpsClient to signal that + // unconnected sockets have not been implemented. + // + UnsupportedOperationException uop = new + UnsupportedOperationException(); + SocketException se = new SocketException( + "Unconnected sockets not implemented"); + se.initCause(uop); + throw se; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/swing/JSplitPane.java --- a/jdk/src/share/classes/javax/swing/JSplitPane.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/swing/JSplitPane.java Wed Jul 05 17:09:51 2017 +0200 @@ -246,8 +246,7 @@ * layout, using two buttons for the components. */ public JSplitPane() { - this(JSplitPane.HORIZONTAL_SPLIT, - UIManager.getBoolean("SplitPane.continuousLayout"), + this(JSplitPane.HORIZONTAL_SPLIT, false, new JButton(UIManager.getString("SplitPane.leftButtonText")), new JButton(UIManager.getString("SplitPane.rightButtonText"))); } @@ -264,8 +263,7 @@ */ @ConstructorProperties({"orientation"}) public JSplitPane(int newOrientation) { - this(newOrientation, - UIManager.getBoolean("SplitPane.continuousLayout")); + this(newOrientation, false); } @@ -309,9 +307,7 @@ public JSplitPane(int newOrientation, Component newLeftComponent, Component newRightComponent){ - this(newOrientation, - UIManager.getBoolean("SplitPane.continuousLayout"), - newLeftComponent, newRightComponent); + this(newOrientation, false, newLeftComponent, newRightComponent); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Jul 05 17:09:51 2017 +0200 @@ -762,7 +762,9 @@ * component's background color to be painted. *

  • * Installs the default caret and highlighter into the - * associated component. + * associated component. These properties are only set if their + * current value is either {@code null} or an instance of + * {@link UIResource}. *
  • * Attaches to the editor and model. If there is no * model, a default one is created. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf Wed Jul 05 17:09:51 2017 +0200 @@ -21276,7 +21276,6 @@ - diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Wed Jul 05 17:09:51 2017 +0200 @@ -648,6 +648,14 @@ table.put("ColorChooser.swatchesDefaultRecentColor", Color.RED); table.put("ColorChooser.swatchesSwatchSize", new Dimension(10, 10)); + // These need to be defined for ImageView. + table.put("html.pendingImage", SwingUtilities2.makeIcon(getClass(), + BasicLookAndFeel.class, + "icons/image-delayed.png")); + table.put("html.missingImage", SwingUtilities2.makeIcon(getClass(), + BasicLookAndFeel.class, + "icons/image-failed.png")); + // These are needed for PopupMenu. table.put("PopupMenu.selectedWindowInputMapBindings", new Object[] { "ESCAPE", "cancel", diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java Wed Jul 05 17:09:51 2017 +0200 @@ -489,23 +489,6 @@ } - /** - * @inheritDoc - */ - @Override - protected void paintTabArea(Graphics g, int tabPlacement, - int selectedIndex) { - // This can be invoked from ScrollabeTabPanel - Insets insets = tabPane.getInsets(); - int x = insets.left; - int y = insets.top; - int width = tabPane.getWidth() - insets.left - insets.right; - int height = tabPane.getHeight() - insets.top - insets.bottom; - - paintTabArea(tabAreaContext, g, tabPlacement, selectedIndex, - new Rectangle(x, y, width, height)); - } - private void paintTabArea(SynthContext ss, Graphics g, int tabPlacement, int selectedIndex, Rectangle tabAreaBounds) { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/awt/HKSCS.java --- a/jdk/src/share/classes/sun/awt/HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/awt/HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -34,7 +34,7 @@ ExtendedCharsets class, because if we want to have a public HKSCS, it probably should be HKSCS_2001 not HKSCS. */ -public class HKSCS extends sun.nio.cs.ext.HKSCS { +public class HKSCS extends sun.nio.cs.ext.MS950_HKSCS_XP { public HKSCS () { super(); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java --- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Jul 05 17:09:51 2017 +0200 @@ -57,6 +57,7 @@ import sun.awt.SunToolkit; import sun.awt.datatransfer.DataTransferer; import sun.awt.datatransfer.ToolkitThreadBlockedHandler; +import sun.security.util.SecurityConstants; /** *

    @@ -216,6 +217,18 @@ throws UnsupportedFlavorException, IOException, InvalidDnDOperationException { + + SecurityManager sm = System.getSecurityManager(); + try { + if (!dropComplete && sm != null) { + sm.checkSystemClipboardAccess(); + } + } catch (Exception e) { + Thread currentThread = Thread.currentThread(); + currentThread.getUncaughtExceptionHandler().uncaughtException(currentThread, e); + return null; + } + Long lFormat = null; Transferable localTransferable = local; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/awt/image/ImageRepresentation.java --- a/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java Wed Jul 05 17:09:51 2017 +0200 @@ -333,10 +333,10 @@ hints = h; } - public native void setICMpixels(int x, int y, int w, int h, int[] lut, + private native void setICMpixels(int x, int y, int w, int h, int[] lut, byte[] pix, int off, int scansize, IntegerComponentRaster ict); - public native int setDiffICM(int x, int y, int w, int h, int[] lut, + private native int setDiffICM(int x, int y, int w, int h, int[] lut, int transPix, int numLut, IndexColorModel icm, byte[] pix, int off, int scansize, ByteComponentRaster bct, int chanOff); @@ -361,6 +361,64 @@ } createBufferedImage(); } + + if (w <= 0 || h <= 0) { + return; + } + + int biWidth = biRaster.getWidth(); + int biHeight = biRaster.getHeight(); + + int x1 = x+w; // Overflow protection below + int y1 = y+h; // Overflow protection below + if (x < 0) { + off -= x; + x = 0; + } else if (x1 < 0) { + x1 = biWidth; // Must be overflow + } + if (y < 0) { + off -= y*scansize; + y = 0; + } else if (y1 < 0) { + y1 = biHeight; // Must be overflow + } + if (x1 > biWidth) { + x1 = biWidth; + } + if (y1 > biHeight) { + y1 = biHeight; + } + if (x >= x1 || y >= y1) { + return; + } + // x,y,x1,y1 are all >= 0, so w,h must be >= 0 + w = x1-x; + h = y1-y; + // off is first pixel read so it must be in bounds + if (off < 0 || off >= pix.length) { + // They overflowed their own array + throw new ArrayIndexOutOfBoundsException("Data offset out of bounds."); + } + // pix.length and off are >= 0 so remainder >= 0 + int remainder = pix.length - off; + if (remainder < w) { + // They overflowed their own array + throw new ArrayIndexOutOfBoundsException("Data array is too short."); + } + int num; + if (scansize < 0) { + num = (off / -scansize) + 1; + } else if (scansize > 0) { + num = ((remainder-w) / scansize) + 1; + } else { + num = h; + } + if (h > num) { + // They overflowed their own array. + throw new ArrayIndexOutOfBoundsException("Data array is too short."); + } + if (isSameCM && (cmodel != model) && (srcLUT != null) && (model instanceof IndexColorModel) && (biRaster instanceof ByteComponentRaster)) diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharBig5.java --- a/jdk/src/share/classes/sun/io/ByteToCharBig5.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/ByteToCharBig5.java Wed Jul 05 17:09:51 2017 +0200 @@ -26,26 +26,24 @@ package sun.io; +import sun.nio.cs.ext.DoubleByte; import sun.nio.cs.ext.Big5; /** * Tables and data to convert Big5 to Unicode * - * @author ConverterGenerator tool */ -public class ByteToCharBig5 extends ByteToCharDoubleByte { +public class ByteToCharBig5 extends ByteToCharDBCS_ASCII { - private final static Big5 nioCoder = new Big5(); + private static DoubleByte.Decoder dec = + (DoubleByte.Decoder)new Big5().newDecoder(); public String getCharacterEncoding() { return "Big5"; } public ByteToCharBig5() { - super.index1 = nioCoder.getDecoderIndex1(); - super.index2 = nioCoder.getDecoderIndex2(); - start = 0x40; - end = 0xFE; + super(dec); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharBig5_HKSCS.java --- a/jdk/src/share/classes/sun/io/ByteToCharBig5_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/ByteToCharBig5_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,15 +25,28 @@ package sun.io; -public class ByteToCharBig5_HKSCS extends ByteToCharHKSCS_2001 { - ByteToCharBig5 bcBig5 = new ByteToCharBig5(); +import sun.nio.cs.ext.Big5_HKSCS; +import sun.nio.cs.ext.HKSCS; +import static sun.nio.cs.CharsetMapping.*; + +public class ByteToCharBig5_HKSCS extends ByteToCharDBCS_ASCII { + + protected static HKSCS.Decoder dec = + (HKSCS.Decoder)new Big5_HKSCS().newDecoder(); + public String getCharacterEncoding() { return "Big5_HKSCS"; } - protected char getUnicode(int byte1, int byte2) { - char c = super.getUnicode(byte1, byte2); - return (c != REPLACE_CHAR) ? c : bcBig5.getUnicode(byte1, byte2); + public ByteToCharBig5_HKSCS() { + super(dec); + } + + protected char decodeDouble(int byte1, int byte2) { + char c = dec.decodeDouble(byte1, byte2); + if (c == UNMAPPABLE_DECODING) + c = dec.decodeBig5(byte1, byte2); + return c; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharBig5_Solaris.java --- a/jdk/src/share/classes/sun/io/ByteToCharBig5_Solaris.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/ByteToCharBig5_Solaris.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,49 +25,19 @@ package sun.io; -/* - * - * - * - * - */ -public class ByteToCharBig5_Solaris extends ByteToCharBig5 { - public ByteToCharBig5_Solaris() {} +import sun.nio.cs.ext.DoubleByte; +import sun.nio.cs.ext.Big5_Solaris; + +public class ByteToCharBig5_Solaris extends ByteToCharDBCS_ASCII { + + private static DoubleByte.Decoder dec = + (DoubleByte.Decoder)new Big5_Solaris().newDecoder(); public String getCharacterEncoding() { return "Big5_Solaris"; } - protected char getUnicode(int byte1, int byte2) { - // - char c = super.getUnicode(byte1, byte2); - if (c == REPLACE_CHAR) { - if (byte1 == 0xf9) { - switch (byte2) { - case 0xD6: - c = (char)0x7881; - break; - case 0xD7: - c = (char)0x92B9; - break; - case 0xD8: - c = (char)0x88CF; - break; - case 0xD9: - c = (char)0x58BB; - break; - case 0xDA: - c = (char)0x6052; - break; - case 0xDB: - c = (char)0x7CA7; - break; - case 0xDC: - c = (char)0x5AFA; - break; - } - } - } - return c; + public ByteToCharBig5_Solaris() { + super(dec); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharHKSCS.java --- a/jdk/src/share/classes/sun/io/ByteToCharHKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.io; - -import sun.nio.cs.ext.HKSCS; - -/** - * Tables and data to convert HKSCS to Unicode - * - * @author ConverterGenerator tool - */ - -public class ByteToCharHKSCS extends ByteToCharDoubleByte { - - public String getCharacterEncoding() { - return "HKSCS"; - } - - public ByteToCharHKSCS() { - super.index1 = HKSCS.getDecoderIndex1(); - super.index2= HKSCS.getDecoderIndex2(); - start = 0x40; - end = 0xFE; - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharHKSCS_2001.java --- a/jdk/src/share/classes/sun/io/ByteToCharHKSCS_2001.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.io; - -import sun.nio.cs.ext.HKSCS_2001; - -/** - * Tables and data to convert HKSCS (2001 revision) to Unicode - * - * @author ConverterGenerator tool - */ - -public class ByteToCharHKSCS_2001 extends ByteToCharDoubleByte { - - public String getCharacterEncoding() { - return "HKSCS_2001"; - } - - public ByteToCharHKSCS_2001() { - super.index1 = HKSCS_2001.getDecoderIndex1(); - super.index2= HKSCS_2001.getDecoderIndex2(); - start = 0x40; - end = 0xFE; - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/ByteToCharMS950_HKSCS.java --- a/jdk/src/share/classes/sun/io/ByteToCharMS950_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/ByteToCharMS950_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,15 +25,27 @@ package sun.io; -public class ByteToCharMS950_HKSCS extends ByteToCharHKSCS { - ByteToCharMS950 bcMS950 = new ByteToCharMS950(); +import sun.nio.cs.ext.HKSCS; +import sun.nio.cs.ext.MS950_HKSCS; +import static sun.nio.cs.CharsetMapping.*; + +public class ByteToCharMS950_HKSCS extends ByteToCharDBCS_ASCII { + + private static HKSCS.Decoder dec = + (HKSCS.Decoder)new MS950_HKSCS().newDecoder(); public String getCharacterEncoding() { return "MS950_HKSCS"; } - protected char getUnicode(int byte1, int byte2) { - char c = super.getUnicode(byte1, byte2); - return (c != REPLACE_CHAR) ? c : bcMS950.decodeDouble(byte1, byte2); + public ByteToCharMS950_HKSCS() { + super(dec); + } + + protected char decodeDouble(int byte1, int byte2) { + char c = dec.decodeDouble(byte1, byte2); + if (c == UNMAPPABLE_DECODING) + c = dec.decodeBig5(byte1, byte2); + return c; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteBig5.java --- a/jdk/src/share/classes/sun/io/CharToByteBig5.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/CharToByteBig5.java Wed Jul 05 17:09:51 2017 +0200 @@ -26,24 +26,24 @@ package sun.io; +import sun.nio.cs.ext.DoubleByte; import sun.nio.cs.ext.Big5; /** * Tables and data to convert Unicode to Big5 * - * @author ConverterGenerator tool */ -public class CharToByteBig5 extends CharToByteDoubleByte { +public class CharToByteBig5 extends CharToByteDBCS_ASCII { - private static final Big5 nioCoder = new Big5(); + private static DoubleByte.Encoder enc = + (DoubleByte.Encoder)new Big5().newEncoder(); public String getCharacterEncoding() { return "Big5"; } public CharToByteBig5() { - super.index1 = nioCoder.getEncoderIndex1(); - super.index2 = nioCoder.getEncoderIndex2(); + super(enc); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteBig5_HKSCS.java --- a/jdk/src/share/classes/sun/io/CharToByteBig5_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/CharToByteBig5_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,15 +25,18 @@ package sun.io; -public class CharToByteBig5_HKSCS extends CharToByteHKSCS_2001 { - CharToByteBig5 cbBig5 = new CharToByteBig5(); +import sun.nio.cs.ext.DoubleByte; +import sun.nio.cs.ext.Big5_HKSCS; + +public class CharToByteBig5_HKSCS extends CharToByteDBCS_ASCII { + private static DoubleByte.Encoder enc = + (DoubleByte.Encoder)new Big5_HKSCS().newEncoder(); public String getCharacterEncoding() { return "Big5_HKSCS"; } - protected int getNative(char ch) { - int r = super.getNative(ch); - return (r != 0) ? r : cbBig5.getNative(ch); + public CharToByteBig5_HKSCS() { + super(enc); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteBig5_Solaris.java --- a/jdk/src/share/classes/sun/io/CharToByteBig5_Solaris.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/CharToByteBig5_Solaris.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,48 +23,21 @@ * have any questions. */ - package sun.io; -/** - */ +import sun.nio.cs.ext.DoubleByte; +import sun.nio.cs.ext.Big5_Solaris; -public class CharToByteBig5_Solaris extends CharToByteBig5 { +public class CharToByteBig5_Solaris extends CharToByteDBCS_ASCII { + + private static DoubleByte.Encoder enc = + (DoubleByte.Encoder)new Big5_Solaris().newEncoder(); public String getCharacterEncoding() { return "Big5_Solaris"; } - protected int getNative(char ch) { - int nativeVal; - - if ((nativeVal = super.getNative(ch)) != 0) { - return nativeVal; - } - - switch (ch) { - case 0x7881: - nativeVal = 0xF9D6; - break; - case 0x92B9: - nativeVal = 0xF9D7; - break; - case 0x88CF: - nativeVal = 0xF9D8; - break; - case 0x58BB: - nativeVal = 0xF9D9; - break; - case 0x6052: - nativeVal = 0xF9DA; - break; - case 0x7CA7: - nativeVal = 0xF9DB; - break; - case 0x5AFA: - nativeVal = 0xF9DC; - break; - } - return nativeVal; + public CharToByteBig5_Solaris() { + super(enc); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteHKSCS.java --- a/jdk/src/share/classes/sun/io/CharToByteHKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - - - -package sun.io; - -import sun.nio.cs.ext.HKSCS; - -/** - * Tables and data to convert Unicode to HKSCS - * - * @author ConverterGenerator tool - */ - -public class CharToByteHKSCS extends CharToByteDoubleByte { - - public String getCharacterEncoding() { - return "HKSCS"; - } - - public CharToByteHKSCS() { - super.index1 = HKSCS.getEncoderIndex1(); - super.index2 = HKSCS.getEncoderIndex2(); - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteHKSCS_2001.java --- a/jdk/src/share/classes/sun/io/CharToByteHKSCS_2001.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - - - -package sun.io; - -import sun.nio.cs.ext.HKSCS_2001; - -/** - * Tables and data to convert Unicode to HKSCS (2001 revision) - * - * @author ConverterGenerator tool - */ - -public class CharToByteHKSCS_2001 extends CharToByteDoubleByte { - - public String getCharacterEncoding() { - return "HKSCS_2001"; - } - - public CharToByteHKSCS_2001() { - super.index1 = HKSCS_2001.getEncoderIndex1(); - super.index2 = HKSCS_2001.getEncoderIndex2(); - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/io/CharToByteMS950_HKSCS.java --- a/jdk/src/share/classes/sun/io/CharToByteMS950_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/io/CharToByteMS950_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,15 +25,19 @@ package sun.io; -public class CharToByteMS950_HKSCS extends CharToByteHKSCS { - CharToByteMS950 cbMS950 = new CharToByteMS950(); +import sun.nio.cs.ext.DoubleByte; +import sun.nio.cs.ext.MS950_HKSCS; + +public class CharToByteMS950_HKSCS extends CharToByteDBCS_ASCII { + + private static DoubleByte.Encoder enc = + (DoubleByte.Encoder)new MS950_HKSCS().newEncoder(); public String getCharacterEncoding() { return "MS950_HKSCS"; } - protected int getNative(char ch) { - int r = super.getNative(ch); - return (r != 0) ? r : cbMS950.encodeChar(ch); + public CharToByteMS950_HKSCS() { + super(enc); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/misc/JavaSecurityProtectionDomainAccess.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/sun/misc/JavaSecurityProtectionDomainAccess.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,39 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ +package sun.misc; + +import java.security.PermissionCollection; +import java.security.ProtectionDomain; + +public interface JavaSecurityProtectionDomainAccess { + interface ProtectionDomainCache { + void put(ProtectionDomain pd, PermissionCollection pc); + PermissionCollection get(ProtectionDomain pd); + } + /** + * Returns the ProtectionDomainCache. + */ + ProtectionDomainCache getProtectionDomainCache(); +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/misc/SharedSecrets.java --- a/jdk/src/share/classes/sun/misc/SharedSecrets.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,6 +47,7 @@ private static JavaNetAccess javaNetAccess; private static JavaNioAccess javaNioAccess; private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess; + private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess; public static JavaUtilJarAccess javaUtilJarAccess() { if (javaUtilJarAccess == null) { @@ -113,4 +114,13 @@ return javaIOFileDescriptorAccess; } + public static void setJavaSecurityProtectionDomainAccess + (JavaSecurityProtectionDomainAccess jspda) { + javaSecurityProtectionDomainAccess = jspda; + } + + public static JavaSecurityProtectionDomainAccess + getJavaSecurityProtectionDomainAccess() { + return javaSecurityProtectionDomainAccess; + } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/net/NetworkClient.java --- a/jdk/src/share/classes/sun/net/NetworkClient.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/net/NetworkClient.java Wed Jul 05 17:09:51 2017 +0200 @@ -29,7 +29,6 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; -import java.net.URL; import java.net.Proxy; import java.util.Arrays; import java.security.AccessController; @@ -157,10 +156,15 @@ public Socket run() { return new Socket(proxy); }}); - } else + } else if (proxy.type() == Proxy.Type.DIRECT) { + s = createSocket(); + } else { + // Still connecting through a proxy + // server & port will be the proxy address and port s = new Socket(Proxy.NO_PROXY); + } } else - s = new Socket(); + s = createSocket(); // Instance specific timeouts do have priority, that means // connectTimeout & readTimeout (-1 means not set) // Then global default timeouts @@ -182,6 +186,15 @@ return s; } + /** + * The following method, createSocket, is provided to allow the + * https client to override it so that it may use its socket factory + * to create the socket. + */ + protected Socket createSocket() throws IOException { + return new java.net.Socket(); + } + protected InetAddress getLocalAddress() throws IOException { if (serverSocket == null) throw new IOException("not connected"); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java Wed Jul 05 17:09:51 2017 +0200 @@ -270,13 +270,17 @@ * In this case we do not use the path because the protection space * is identified by the host:port:realm only */ - static AuthenticationInfo getServerAuth(URL url, String realm, AuthScheme scheme) { + static String getServerAuthKey(URL url, String realm, AuthScheme scheme) { int port = url.getPort(); if (port == -1) { port = url.getDefaultPort(); } String key = SERVER_AUTHENTICATION + ":" + scheme + ":" + url.getProtocol().toLowerCase() + ":" + url.getHost().toLowerCase() + ":" + port + ":" + realm; + return key; + } + + static AuthenticationInfo getServerAuth(String key) { AuthenticationInfo cached = getAuth(key, null); if ((cached == null) && requestIsInProgress (key)) { /* check the cache again, it might contain an entry */ @@ -314,9 +318,13 @@ * Used in response to a challenge. Note, the protocol field is always * blank for proxies. */ - static AuthenticationInfo getProxyAuth(String host, int port, String realm, AuthScheme scheme) { + static String getProxyAuthKey(String host, int port, String realm, AuthScheme scheme) { String key = PROXY_AUTHENTICATION + ":" + scheme + "::" + host.toLowerCase() + ":" + port + ":" + realm; + return key; + } + + static AuthenticationInfo getProxyAuth(String key) { AuthenticationInfo cached = (AuthenticationInfo) cache.get(key, null); if ((cached == null) && requestIsInProgress (key)) { /* check the cache again, it might contain an entry */ @@ -330,19 +338,20 @@ * Add this authentication to the cache */ void addToCache() { - cache.put (cacheKey(true), this); + String key = cacheKey(true); + cache.put(key, this); if (supportsPreemptiveAuthorization()) { - cache.put (cacheKey(false), this); + cache.put(cacheKey(false), this); } - endAuthRequest(); + endAuthRequest(key); } - void endAuthRequest () { + static void endAuthRequest (String key) { if (!serializeAuth) { return; } synchronized (requests) { - requestCompleted (cacheKey(true)); + requestCompleted(key); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1995-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1995-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -249,6 +249,8 @@ boolean isUserServerAuth; boolean isUserProxyAuth; + String serverAuthKey, proxyAuthKey; + /* Progress source */ protected ProgressSource pi; @@ -1258,6 +1260,11 @@ doingNTLMp2ndStage = false; continue; } + } else { + inNegotiateProxy = false; + doingNTLMp2ndStage = false; + if (!isUserProxyAuth) + requests.remove("Proxy-Authorization"); } // cache proxy authentication info @@ -1303,7 +1310,7 @@ serverAuthentication.getAuthScheme() != NTLM) { if (serverAuthentication.isAuthorizationStale (raw)) { /* we can retry with the current credentials */ - disconnectInternal(); + disconnectWeb(); redirects++; requests.set(serverAuthentication.getHeaderName(), serverAuthentication.getHeaderValue(url, method)); @@ -1318,7 +1325,7 @@ currentServerCredentials = serverAuthentication; if (serverAuthentication != null) { - disconnectInternal(); + disconnectWeb(); redirects++; // don't let things loop ad nauseum setCookieHeader(); continue; @@ -1327,7 +1334,7 @@ reset (); /* header not used for ntlm */ if (!serverAuthentication.setHeaders(this, null, raw)) { - disconnectInternal(); + disconnectWeb(); throw new IOException ("Authentication failure"); } doingNTLM2ndStage = false; @@ -1498,11 +1505,11 @@ } throw e; } finally { - if (respCode == HTTP_PROXY_AUTH && proxyAuthentication != null) { - proxyAuthentication.endAuthRequest(); + if (proxyAuthKey != null) { + AuthenticationInfo.endAuthRequest(proxyAuthKey); } - else if (respCode == HTTP_UNAUTHORIZED && serverAuthentication != null) { - serverAuthentication.endAuthRequest(); + if (serverAuthKey != null) { + AuthenticationInfo.endAuthRequest(serverAuthKey); } } } @@ -1715,8 +1722,8 @@ statusLine + "\""); } } finally { - if (respCode == HTTP_PROXY_AUTH && proxyAuthentication != null) { - proxyAuthentication.endAuthRequest(); + if (proxyAuthKey != null) { + AuthenticationInfo.endAuthRequest(proxyAuthKey); } } @@ -1832,10 +1839,8 @@ if (realm == null) realm = ""; - ret = AuthenticationInfo.getProxyAuth(host, - port, - realm, - authScheme); + proxyAuthKey = AuthenticationInfo.getProxyAuthKey(host, port, realm, authScheme); + ret = AuthenticationInfo.getProxyAuth(proxyAuthKey); if (ret == null) { switch (authScheme) { case BASIC: @@ -1976,7 +1981,8 @@ domain = p.findValue ("domain"); if (realm == null) realm = ""; - ret = AuthenticationInfo.getServerAuth(url, realm, authScheme); + serverAuthKey = AuthenticationInfo.getServerAuthKey(url, realm, authScheme); + ret = AuthenticationInfo.getServerAuth(serverAuthKey); InetAddress addr = null; if (ret == null) { try { @@ -2320,6 +2326,22 @@ } /** + * Disconnect from the web server at the first 401 error. Do not + * disconnect when using a proxy, a good proxy should have already + * closed the connection to the web server. + */ + private void disconnectWeb() throws IOException { + if (usingProxy()) { + responseCode = -1; + // clean up, particularly, skip the content part + // of a 401 error response + reset(); + } else { + disconnectInternal(); + } + } + + /** * Disconnect from the server (for internal use) */ private void disconnectInternal() { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/net/www/protocol/http/spnego/NegotiateCallbackHandler.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/spnego/NegotiateCallbackHandler.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/spnego/NegotiateCallbackHandler.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,43 +45,50 @@ private String username; private char[] password; + /** + * Authenticator asks for username and password in a single prompt, + * but CallbackHandler checks one by one. So, no matter which callback + * gets handled first, make sure Authenticator is only called once. + */ + private boolean answered; + private final HttpCallerInfo hci; public NegotiateCallbackHandler(HttpCallerInfo hci) { this.hci = hci; } + private void getAnswer() { + if (!answered) { + answered = true; + PasswordAuthentication passAuth = + Authenticator.requestPasswordAuthentication( + hci.host, hci.addr, hci.port, hci.protocol, + hci.prompt, hci.scheme, hci.url, hci.authType); + /** + * To be compatible with existing callback handler implementations, + * when the underlying Authenticator is canceled, username and + * password are assigned null. No exception is thrown. + */ + if (passAuth != null) { + username = passAuth.getUserName(); + password = passAuth.getPassword(); + } + } + } + public void handle(Callback[] callbacks) throws UnsupportedCallbackException, IOException { for (int i=0; i"); } + @Override protected void putInKeepAliveCache() { kac.put(url, sslSocketFactory, this); } @@ -521,6 +538,7 @@ /* * Close an idle connection to this URL (if it exists in the cache). */ + @Override public void closeIdleConnection() { HttpClient http = (HttpClient) kac.get(url, sslSocketFactory); if (http != null) { @@ -626,11 +644,12 @@ * @return the proxy host being used for this client, or null * if we're not going through a proxy */ + @Override public String getProxyHostUsed() { if (!needsTunneling()) { return null; } else { - return ((InetSocketAddress)proxy.address()).getHostName(); + return super.getProxyHostUsed(); } } @@ -638,6 +657,7 @@ * @return the proxy port being used for this client. Meaningless * if getProxyHostUsed() gives null. */ + @Override public int getProxyPortUsed() { return (proxy == null || proxy.type() == Proxy.Type.DIRECT || proxy.type() == Proxy.Type.SOCKS)? -1: diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/ch/Net.java --- a/jdk/src/share/classes/sun/nio/ch/Net.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/ch/Net.java Wed Jul 05 17:09:51 2017 +0200 @@ -68,6 +68,9 @@ InetSocketAddress isa = (InetSocketAddress)sa; if (isa.isUnresolved()) throw new UnresolvedAddressException(); // ## needs arg + InetAddress addr = isa.getAddress(); + if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) + throw new IllegalArgumentException("Invalid address type"); return isa; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/Surrogate.java --- a/jdk/src/share/classes/sun/nio/cs/Surrogate.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/Surrogate.java Wed Jul 05 17:09:51 2017 +0200 @@ -78,8 +78,8 @@ * Tells whether or not the given UCS-4 character is in the Basic * Multilingual Plane, and can be represented using a single char. */ - public static boolean isBMP(int uc) { - return (int) (char) uc == uc; + public static boolean isBMPCodePoint(int uc) { + return uc >> 16 == 0; } /** @@ -290,7 +290,7 @@ * error() will return a descriptive result object */ public int generate(int uc, int len, CharBuffer dst) { - if (Surrogate.isBMP(uc)) { + if (Surrogate.isBMPCodePoint(uc)) { if (Surrogate.is(uc)) { error = CoderResult.malformedForLength(len); return -1; @@ -334,7 +334,7 @@ * error() will return a descriptive result object */ public int generate(int uc, int len, char[] da, int dp, int dl) { - if (Surrogate.isBMP(uc)) { + if (Surrogate.isBMPCodePoint(uc)) { if (Surrogate.is(uc)) { error = CoderResult.malformedForLength(len); return -1; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/Big5.java --- a/jdk/src/share/classes/sun/nio/cs/ext/Big5.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5508 +0,0 @@ - -/* - * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/* - */ - -package sun.nio.cs.ext; - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; - -public class Big5 - extends Charset -{ - public Big5() { - super("Big5", ExtendedCharsets.aliasesFor("Big5")); - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof Big5)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getDecoderIndex1() { - return Decoder.index1; - } - - public String[] getDecoderIndex2() { - return Decoder.index2; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String[] getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends DoubleByteDecoder { - - private final static String innerIndex0= - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000"+ - "\uFF0C\u3001\u3002\uFF0E\u2022\uFF1B\uFF1A\uFF1F"+ - "\uFF01\uFE30\u2026\u2025\uFE50\uFF64\uFE52\u00B7"+ - "\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014"+ - "\uFE33\uFF3F\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFF3F\uFFFD\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\u2641\u2609\u2191\u2193\u2190\u2192\u2196"+ - "\u2197\u2199\u2198\u2225\u2223\u2571\u2572\uFF0F"+ - "\uFF3C\uFF04\u00A5\u3012\u00A2\u00A3\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u256E"+ - "\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3"+ - "\u25E5\u25E4\u2571\u2572\u2573\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u8004\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\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"; - - private final static String innerIndex1= - "\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\u92AC\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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"; - - private final static String innerIndex2= - "\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587"+ - "\u85A8\u858A\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\u5F5D\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u85A6\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\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u737A\u74BD"+ - "\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919"+ - "\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37"+ - "\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73"+ - "\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\u56A8\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\u30FE\u309D\u309E\u3005\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC"+ - "\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4"+ - "\u30F5\u30F6\u0414\u0415\u0401\u0416\u0417\u0418"+ - "\u0419\u041A\u041B\u041C\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\u2460\u2461\u2462\u2463\u2464\u2465"+ - "\u2466\u2467\u2468\u2469\u2474\u2475\u2476\u2477"+ - "\u2478\u2479\u247A\u247B\u247C\u247D\uFFFD\uFFFD"+ - "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47"+ - "\u4E8D\u56D7\uFA0C\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\u531C\u534C\u5722\u5723"+ - "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73"+ - "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\u5209\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\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\u6537\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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"; - - private final static String innerIndex3= - "\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\u7B47"+ - "\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\u839A\u8659\u8656\u86BF"+ - "\u86B7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\u7B3B\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u83D5"+ - "\u83FA\u83C7\u83D1\u83EA\u8413\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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"+ - "\uFA0D\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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"; - - private final static String innerIndex4= - "\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\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u92B5\u92E1\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\u619D\u61A8"+ - "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u9325"+ - "\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u5FBB\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u77B4\u77B1\u77A8"+ - "\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\u9380\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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\u78FF"+ - "\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\u87A4\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"; - - private final static String innerIndex5= - "\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\u938D\u93B1\u9391\u93B2\u93A4"+ - "\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3"+ - "\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722"+ - "\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\u702A"+ - "\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4"+ - "\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660"+ - "\u77C9\u77CA\u77C4\u77F1\u791D\u791B\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\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\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\u93E7\u957D\u95DA\u95DB\u96E1"+ - "\u9729\u972B\u972C\u9728\u9726\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u79B2\u7A6E"+ - "\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45"+ - "\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079"+ - "\u81DB\u81D9\u820B\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\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u943C\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\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\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\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"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\u9C74"+ - "\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\u9B2E\u9E19\u7229\u864B"+ - "\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D"+ - "\u7069\u706A\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"; - - private final static short index1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0 - }; - - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2, - innerIndex3, - innerIndex4, - innerIndex5 - }; - - public Decoder(Charset cs) { - super(cs, - index1, - index2, - 0x40, - 0xFE); - } - } - - protected static class Encoder extends DoubleByteEncoder { - private final static String innerIndex0= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA246\uA247\u0000\uA244\u0000\uA1B1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA258\uA1D3\u0000\u0000\u0000\u0000\u0000\uA150"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1D1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1D2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3BE"+ - "\u0000\uA3BC\uA3BD\uA3BF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA344\uA345\uA346\uA347\uA348\uA349\uA34A"+ - "\uA34B\uA34C\uA34D\uA34E\uA34F\uA350\uA351\uA352"+ - "\uA353\uA354\u0000\uA355\uA356\uA357\uA358\uA359"+ - "\uA35A\uA35B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA35C\uA35D\uA35E\uA35F\uA360\uA361\uA362"+ - "\uA363\uA364\uA365\uA366\uA367\uA368\uA369\uA36A"+ - "\uA36B\uA36C\u0000\uA36D\uA36E\uA36F\uA370\uA371"+ - "\uA372\uA373\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC7B3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC7B1\uC7B2\uC7B4\uC7B5"+ - "\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC7BB\uC7BC\uC7BD\uC7BE\uC7BF"+ - "\uC7C0\uC7C1\uC7C2\uC7C3\uC7C4\uC7C5\uC7C6\uC7C7"+ - "\uC7C8\uC7C9\uC7CA\uC7CB\uC7CC\uC7CD\uC7CF\uC7D0"+ - "\uC7D1\uC7D2\uC7D3\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8"+ - "\uC7D9\uC7DA\uC7DB\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0"+ - "\uC7E1\uC7E2\uC7E3\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8"+ - "\u0000\uC7CE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA156\uA158\u0000\u0000\u0000"+ - "\uA1A5\uA1A6\u0000\u0000\uA1A7\uA1A8\u0000\u0000"+ - "\u0000\u0000\uA145\u0000\u0000\uA14C\uA14B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA1AC\u0000\u0000\uA1AB\u0000\u0000"+ - "\u0000\u0000\u0000\uA1B0\u0000\u0000\uA1C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA24A\u0000\uA1C1\u0000\u0000"+ - "\u0000\uA24B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA2B9\uA2BA\uA2BB\uA2BC\uA2BD\uA2BE\uA2BF\uA2C0"+ - "\uA2C1\uA2C2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA1F6\uA1F4\uA1F7\uA1F5\u0000\u0000\uA1F8\uA1F9"+ - "\uA1FB\uA1FA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA1D4\u0000\u0000\u0000\uA1DB\uA1E8"+ - "\uA1E7\u0000\u0000\uA1FD\u0000\uA1FC\u0000\u0000"+ - "\u0000\uA1E4\uA1E5\uA1EC\u0000\u0000\uA1ED\u0000"+ - "\u0000\u0000\u0000\u0000\uA1EF\uA1EE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA1E3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA1DC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA1DA\uA1DD\u0000\u0000\u0000\u0000\uA1D8\uA1D9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA1E6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC7E9\uC7EA\uC7EB\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0"+ - "\uC7F1\uC7F2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC7F3\uC7F4\uC7F5\uC7F6"+ - "\uC7F7\uC7F8\uC7F9\uC7FA\uC7FB\uC7FC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA277\u0000\uA278\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA27A\u0000\u0000\u0000"+ - "\uA27B\u0000\u0000\u0000\uA27C\u0000\u0000\u0000"+ - "\uA27D\u0000\u0000\u0000\uA275\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA274\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA273\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA272\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA271\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA2A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA2A5\u0000"+ - "\u0000\uA2A7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA2A6\u0000\u0000\uA27E\uA2A1\uA2A3"+ - "\uA2A2\uA2AC\uA2AD\uA2AE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA262\uA263\uA264\uA265\uA266\uA267\uA268"+ - "\uA269\uA270\uA26F\uA26E\uA26D\uA26C\uA26B\uA26A"+ - "\u0000\u0000\u0000\u0000\uA276\uA279\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA1BD\uA1BC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA1B6\uA1B5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA1BF\uA1BE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA1BB\uA1BA"+ - "\u0000\u0000\u0000\uA1B3\u0000\u0000\uA1B7\uA1B4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA2A8\uA2A9\uA2AB\uA2AA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA1B9\uA1B8\u0000"+ - "\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA1F0\uA1F2\uA1F1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA140\uA142\uA143\uA1B2\u0000\uC6A4\u0000\u0000"+ - "\uA171\uA172\uA16D\uA16E\uA175\uA176\uA179\uA17A"+ - "\uA169\uA16A\uA245\u0000\uA165\uA166\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA1A9\uA1AA\u0000"+ - "\u0000\uA2C3\uA2C4\uA2C5\uA2C6\uA2C7\uA2C8\uA2C9"+ - "\uA2CA\uA2CB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC6A5\uC6A6\uC6A7\uC6A8\uC6A9\uC6AA\uC6AB"+ - "\uC6AC\uC6AD\uC6AE\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3"+ - "\uC6B4\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB"+ - "\uC6BC\uC6BD\uC6BE\uC6BF\uC6C0\uC6C1\uC6C2\uC6C3"+ - "\uC6C4\uC6C5\uC6C6\uC6C7\uC6C8\uC6C9\uC6CA\uC6CB"+ - "\uC6CC\uC6CD\uC6CE\uC6CF\uC6D0\uC6D1\uC6D2\uC6D3"+ - "\uC6D4\uC6D5\uC6D6\uC6D7\uC6D8\uC6D9\uC6DA\uC6DB"+ - "\uC6DC\uC6DD\uC6DE\uC6DF\uC6E0\uC6E1\uC6E2\uC6E3"+ - "\uC6E4\uC6E5\uC6E6\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB"+ - "\uC6EC\uC6ED\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3"+ - "\uC6F4\uC6F5\uC6F6\uC6F7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6A2\uC6A3\u0000"+ - "\u0000\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD\uC6FE"+ - "\uC740\uC741\uC742\uC743\uC744\uC745\uC746\uC747"+ - "\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E\uC74F"+ - "\uC750\uC751\uC752\uC753\uC754\uC755\uC756\uC757"+ - "\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E\uC75F"+ - "\uC760\uC761\uC762\uC763\uC764\uC765\uC766\uC767"+ - "\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E\uC76F"+ - "\uC770\uC771\uC772\uC773\uC774\uC775\uC776\uC777"+ - "\uC778\uC779\uC77A\uC77B\uC77C\uC77D\uC77E\uC7A1"+ - "\uC7A2\uC7A3\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9"+ - "\uC7AA\uC7AB\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6A1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA374\uA375\uA376"+ - "\uA377\uA378\uA379\uA37A\uA37B\uA37C\uA37D\uA37E"+ - "\uA3A1\uA3A2\uA3A3\uA3A4\uA3A5\uA3A6\uA3A7\uA3A8"+ - "\uA3A9\uA3AA\uA3AB\uA3AC\uA3AD\uA3AE\uA3AF\uA3B0"+ - "\uA3B1\uA3B2\uA3B3\uA3B4\uA3B5\uA3B6\uA3B7\uA3B8"+ - "\uA3B9\uA3BA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA1C0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA255\uA256"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA250\uA251\uA252\u0000"+ - "\u0000\uA254\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA257\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA253\u0000"+ - "\u0000\uA1EB\uA1EA\u0000\u0000\uA24F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA440\uA442\u0000\uA443\u0000\u0000\u0000\uC945"+ - "\uA456\uA454\uA457\uA455\uC946\uA4A3\uC94F\uC94D"+ - "\uA4A2\uA4A1\u0000\u0000\uA542\uA541\uA540\u0000"+ - "\uA543\uA4FE\u0000\u0000\u0000\u0000\uA5E0\uA5E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA8C3\u0000"+ - "\u0000\u0000\u0000\uA458\u0000\uA4A4\uC950\u0000"+ - "\uA4A5\uC963\uA6EA\uCBB1\u0000\u0000\u0000\u0000"+ - "\uA459\uA4A6\u0000\uA544\uC964\u0000\u0000\u0000"+ - "\u0000\u0000\uC940\uA444\u0000\uA45B\u0000\uC947"+ - "\uA45C\u0000\u0000\uA4A7\u0000\uA545\uA547\uA546"+ - "\u0000\u0000\uA5E2\uA5E3\u0000\u0000\uA8C4\u0000"+ - "\uADBC\uA441\u0000\u0000\uC941\uA445\uA45E\uA45D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA5E4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA8C5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uB0AE\uD44B"+ - "\u0000\u0000\uB6C3\uDCB1\uDCB2\u0000\uA446\u0000"+ - "\uA4A9\u0000\u0000\uA8C6\uA447\uC948\uA45F\u0000"+ - "\u0000\uA4AA\uA4AC\uC951\uA4AD\uA4AB\u0000\u0000"+ - "\u0000\uA5E5\u0000\uA8C7\u0000\u0000\uA8C8\uAB45"+ - "\u0000\uA460\uA4AE\u0000\uA5E6\uA5E8\uA5E7\u0000"+ - "\uA6EB\u0000\u0000\uA8C9\uA8CA\uAB46\uAB47\u0000"+ - "\u0000\u0000\u0000\uADBD\u0000\u0000\uDCB3\u0000"+ - "\u0000\uF6D6\uA448\u0000\u0000\u0000\u0000\u0000"+ - "\uA4B0\uA4AF\uC952\uA4B1\uA4B7\u0000\uA4B2\uA4B3"+ - "\uC954\uC953\uA4B5\uA4B6\u0000\uA4B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA54A\uA54B\uA54C\uA54D"+ - "\uA549\uA550\uC96A\u0000\uC966\uC969\uA551\uA561"+ - "\u0000\uC968\u0000\uA54E\uA54F\uA548\u0000\u0000"+ - "\uC965\uC967\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA5F5\uC9B0\uA5F2\uA5F6\uC9BA\uC9AE\uA5F3\uC9B2"+ - "\u0000\u0000\u0000\uA5F4\u0000\uA5F7\u0000\uA5E9"; - - private final static String innerIndex1= - "\uC9B1\uA5F8\uC9B5\u0000\uC9B9\uC9B6\u0000\u0000"+ - "\uC9B3\uA5EA\uA5EC\uA5F9\u0000\uA5EE\uC9AB\uA5F1"+ - "\uA5EF\uA5F0\uC9BB\uC9B8\uC9AF\uA5ED\u0000\u0000"+ - "\uC9AC\uA5EB\u0000\u0000\u0000\uC9B4\u0000\u0000"+ - "\u0000\u0000\uC9B7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC9AD\uCA66\u0000\uA742"+ - "\uA6F4\u0000\u0000\uCA67\uA6F1\u0000\uA744\u0000"+ - "\uA6F9\u0000\uA6F8\uCA5B\uA6FC\uA6F7\uCA60\uCA68"+ - "\u0000\uCA64\u0000\uA6FA\u0000\u0000\uA6FD\uA6EE"+ - "\uA747\uCA5D\u0000\u0000\uCBBD\uA6EC\uA743\uA6ED"+ - "\uA6F5\uA6F6\uCA62\uCA5E\uA6FB\uA6F3\uCA5A\uA6EF"+ - "\uCA65\uA745\uA748\uA6F2\uA740\uA746\uA6F0\uCA63"+ - "\uA741\uCA69\uCA5C\uA6FE\uCA5F\u0000\u0000\uCA61"+ - "\u0000\uA8D8\uCBBF\uCBCB\uA8D0\u0000\uCBCC\uA8CB"+ - "\uA8D5\u0000\u0000\uA8CE\uCBB9\uA8D6\uCBB8\uCBBC"+ - "\uCBC3\uCBC1\uA8DE\uA8D9\uCBB3\uCBB5\uA8DB\uA8CF"+ - "\uCBB6\uCBC2\uCBC9\uA8D4\uCBBB\uCBB4\uA8D3\uCBB7"+ - "\uA8D7\uCBBA\u0000\uA8D2\u0000\uA8CD\u0000\uA8DC"+ - "\uCBC4\uA8DD\uCBC8\u0000\uCBC6\uCBCA\uA8DA\uCBBE"+ - "\uCBB2\u0000\uCBC0\uA8D1\uCBC5\uA8CC\uCBC7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uAB56\uAB4A"+ - "\u0000\u0000\uCDE0\uCDE8\u0000\uAB49\uAB51\uAB5D"+ - "\u0000\uCDEE\uCDEC\uCDE7\u0000\u0000\u0000\uAB4B"+ - "\uCDED\uCDE3\uAB59\uAB50\uAB58\uCDDE\u0000\uCDEA"+ - "\u0000\uCDE1\uAB54\uCDE2\u0000\uCDDD\uAB5B\uAB4E"+ - "\uAB57\uAB4D\u0000\uCDDF\uCDE4\u0000\uCDEB\uAB55"+ - "\uAB52\uCDE6\uAB5A\uCDE9\uCDE5\uAB4F\uAB5C\uAB53"+ - "\uAB4C\uAB48\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uCDEF\u0000\uADD7\uADC1"+ - "\u0000\uADD1\u0000\uADD6\uD0D0\uD0CF\uD0D4\uD0D5"+ - "\uADC4\u0000\uADCD\u0000\u0000\u0000\uADDA\u0000"+ - "\uADCE\u0000\u0000\u0000\u0000\uD0C9\uADC7\uD0CA"+ - "\u0000\uADDC\u0000\uADD3\uADBE\uADBF\uD0DD\uB0BF"+ - "\u0000\uADCC\uADCB\uD0CB\uADCF\uD45B\uADC6\uD0D6"+ - "\uADD5\uADD4\uADCA\uD0CE\uD0D7\u0000\uD0C8\uADC9"+ - "\uD0D8\uADD2\uD0CC\uADC0\u0000\uADC3\uADC2\uD0D9"+ - "\uADD0\uADC5\uADD9\uADDB\uD0D3\uADD8\u0000\uD0DB"+ - "\uD0CD\uD0DC\u0000\uD0D1\u0000\uD0DA\u0000\uD0D2"+ - "\u0000\u0000\u0000\u0000\uADC8\u0000\u0000\u0000"+ - "\uD463\uD457\u0000\uB0B3\u0000\uD45C\uD462\uB0B2"+ - "\uD455\uB0B6\uD459\uD452\uB0B4\uD456\uB0B9\uB0BE"+ - "\u0000\uD467\u0000\uD451\u0000\uB0BA\u0000\uD466"+ - "\u0000\u0000\uB0B5\uD458\uB0B1\uD453\uD44F\uD45D"+ - "\uD450\uD44E\uD45A\uD460\uD461\uB0B7\u0000\u0000"+ - "\uD85B\uD45E\uD44D\uD45F\u0000\uB0C1\uD464\uB0C0"+ - "\uD44C\u0000\uD454\uD465\uB0BC\uB0BB\uB0B8\uB0BD"+ - "\u0000\u0000\uB0AF\u0000\u0000\uB0B0\u0000\u0000"+ - "\uB3C8\u0000\uD85E\uD857\u0000\uB3C5\u0000\uD85F"+ - "\u0000\u0000\u0000\uD855\uD858\uB3C4\uD859\u0000"+ - "\u0000\uB3C7\uD85D\u0000\uD853\uD852\uB3C9\u0000"+ - "\uB3CA\uB3C6\uB3CB\uD851\uD85C\uD85A\uD854\u0000"+ - "\u0000\u0000\uB3C3\uD856\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uB6CA\uB6C4\uDCB7\uB6CD"+ - "\uDCBD\uDCC0\uB6C6\uB6C7\uDCBA\uB6C5\uDCC3\uB6CB"+ - "\uDCC4\u0000\uDCBF\uB6CC\u0000\uDCB4\uB6C9\uDCB5"+ - "\u0000\uDCBE\uDCBC\u0000\uDCB8\uB6C8\uDCB6\uB6CE"+ - "\uDCBB\uDCC2\uDCB9\uDCC1\u0000\u0000\uB9B6\uB9B3"+ - "\u0000\uB9B4\u0000\uE0F9\uE0F1\uB9B2\uB9AF\uE0F2"+ - "\u0000\u0000\uB9B1\uE0F5\u0000\uE0F7\u0000\u0000"+ - "\uE0FE\u0000\u0000\uE0FD\uE0F8\uB9AE\uE0F0\uB9AC"+ - "\uE0F3\uB9B7\uE0F6\u0000\uE0FA\uB9B0\uB9AD\uE0FC"+ - "\uE0FB\uB9B5\u0000\uE0F4\u0000\uBBF8\uE4EC\u0000"+ - "\uE4E9\uBBF9\u0000\uBBF7\u0000\uE4F0\uE4ED\uE4E6"+ - "\uBBF6\u0000\uBBFA\uE4E7\uBBF5\uBBFD\uE4EA\uE4EB"+ - "\uBBFB\uBBFC\uE4F1\uE4EE\uE4EF\u0000\u0000\u0000"+ - "\uBEAA\uE8F8\uBEA7\uE8F5\uBEA9\uBEAB\u0000\uE8F6"+ - "\uBEA8\u0000\uE8F7\u0000\uE8F4\u0000\u0000\uC076"+ - "\uECBD\uC077\uECBB\u0000\uECBC\uECBA\uECB9\u0000"+ - "\u0000\uECBE\uC075\u0000\u0000\uEFB8\uEFB9\u0000"+ - "\uE4E8\uEFB7\uC078\uC35F\uF1EB\uF1EC\u0000\uC4D7"+ - "\uC4D8\uF5C1\uF5C0\uC56C\uC56B\uF7D0\u0000\uA449"+ - "\uA461\uA4B9\u0000\uA4B8\uA553\uA552\uA5FC\uA5FB"+ - "\uA5FD\uA5FA\u0000\uA74A\uA749\uA74B\u0000\u0000"+ - "\u0000\u0000\uA8E0\u0000\uA8DF\uA8E1\u0000\uAB5E"+ - "\u0000\uA259\uD0DE\uA25A\uB0C2\uA25C\uA25B\uD860"+ - "\u0000\uA25D\uB9B8\uA25E\u0000\uA44A\u0000\uA4BA"+ - "\uA5FE\uA8E2\u0000\uA44B\uA4BD\uA4BB\uA4BC\u0000"+ - "\u0000\uA640\u0000\u0000\u0000\uA74C\uA8E4\uA8E3"+ - "\uA8E5\u0000\u0000\u0000\uADDD\u0000\u0000\u0000"+ - "\uBEAC\u0000\u0000\u0000\u0000\u0000\u0000\uC94E"+ - "\u0000\uA554\uA555\u0000\u0000\uA641\u0000\uCA6A"+ - "\u0000\uAB60\uAB5F\uD0E0\uD0DF\uB0C3\u0000\uA4BE"+ - "\uC955\u0000\u0000\u0000\u0000\u0000\uCBCD\u0000"+ - "\uAB61\u0000\uADE0\u0000\uADDE\uADDF\u0000\u0000"+ - "\u0000\u0000\uBEAD\u0000\uA556\u0000\u0000\u0000"+ - "\uA642\uC9BC\u0000\u0000\u0000\u0000\uA74D\uA74E"+ - "\u0000\uCA6B\u0000\u0000\uCBCE\uA8E6\uCBCF\u0000"+ - "\u0000\u0000\u0000\u0000\uD0E2\uD0E3\uADE3\u0000"+ - "\uD0E4\u0000\uD0E1\uADE4\uADE2\uADE1\uD0E5\u0000"+ - "\uD468\u0000\u0000\u0000\uD861\u0000\u0000\uDCC5"+ - "\uE140\u0000\u0000\u0000\uBBFE\uBEAE\uE8F9\u0000"+ - "\uA44C\uA45A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uB0C4\uB3CD\u0000\uB9B9\u0000\uC942\uA4BF\u0000"+ - "\uA559\uA557\uA558\u0000\u0000\uA8E7\u0000\u0000"+ - "\uA44D\uA44E\u0000\uA462\u0000\u0000\uA4C0\uA4C1"+ - "\uA4C2\uC9BE\uA55A\u0000\uC96B\u0000\uA646\u0000"+ - "\uC9BF\uA644\uA645\uC9BD\u0000\u0000\uA647\uA643"+ - "\u0000\u0000\u0000\u0000\uCA6C\uAAEC\uCA6D\u0000"+ - "\u0000\uCA6E\u0000\u0000\uA750\uA74F\u0000\u0000"+ - "\uA753\uA751\uA752\u0000\u0000\u0000\uA8ED\u0000"+ - "\uA8EC\uCBD4\uCBD1\uCBD2\u0000\uCBD0\uA8EE\uA8EA"+ - "\uA8E9\u0000\uA8EB\uA8E8\u0000\u0000\u0000\u0000"+ - "\u0000\uA8EF\u0000\uAB63\uCDF0\u0000\uCBD3\uAB68"+ - "\u0000\uCDF1\uAB64\uAB67\uAB66\uAB65\uAB62\u0000"+ - "\u0000\u0000\uD0E8\u0000\uADE7\uD0EB\uADE5\u0000"+ - "\u0000\u0000\uD0E7\uADE8\uADE6\uADE9\uD0E9\uD0EA"+ - "\u0000\uD0E6\uD0EC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uB3D1\uB0C5\uD469\uD46B\uD46A\uD46C\uB0C6"+ - "\u0000\u0000\uB3CE\u0000\uB3CF\uB3D0\u0000\uB6D0"+ - "\uDCC7\u0000\uDCC6\uDCC8\uDCC9\uB6D1\u0000\uB6CF"+ - "\uE141\uE142\uB9BB\uB9BA\uE35A\u0000\u0000\uBC40"+ - "\uBC41\uBC42\uBC44\uE4F2\uE4F3\uBC43\u0000\u0000"+ - "\u0000\uBEAF\u0000\uBEB0\u0000\u0000\uF1ED\uF5C3"+ - "\uF5C2\uF7D1\u0000\uA44F\u0000\u0000\u0000\uA55C"+ - "\uA55B\u0000\u0000\uA648\u0000\u0000\uC9C0\u0000"+ - "\u0000\uA755\uA756\uA754\uA757\uCA6F\uCA70\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA8F1\uCBD5\u0000\uA8F0\u0000"+ - "\uCDF2\uAB6C\uCDF3\uAB6B\u0000\u0000\u0000\uAB69"+ - "\u0000\uAB6A\u0000\u0000\u0000\uD0ED\u0000\u0000"+ - "\u0000\u0000\uB0C7\uD46E\u0000\uB0CA\uD46D\uB1E5"+ - "\uB0C9\uB0C8\u0000\uB3D4\u0000\uB3D3\uB3D2\uB6D2"+ - "\u0000\u0000\uB6D5\uB6D6\uB6D4\u0000\uB6D3\u0000"+ - "\u0000\uE143\u0000\uE144\u0000\u0000\u0000\uE4F5"+ - "\uBC45\uE4F4\u0000\uBEB1\uECBF\uC079\u0000\uF1EE"+ - "\uC455\u0000\uA463\uA4C3\uC956\u0000\uA4C4\uA4C5"+ - "\u0000\u0000\u0000\u0000\u0000\uA55D\uA55E\u0000"+ - "\uA649\uCA71\uCBD6\uCBD7\u0000\uAB6D\uD0EE\uB0CC"+ - "\uB0CB\uD863\uD862\u0000\u0000\uA450\uA4C6\uA55F"+ - "\u0000\uB0CD\uC943\u0000\uC96C\uA560\u0000\uC9C2"+ - "\uA64B\uA64A\uC9C1\uA758\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uADEA\u0000\u0000\uD46F\u0000\uB6D7"+ - "\uE145\uB9BC\u0000\u0000\uE8FA\u0000\u0000\uF3FD"+ - "\u0000\uA4C7\u0000\u0000\uCBD8\uCDF4\uB0D0\uB0CE"+ - "\uB0CF\uA451\u0000\uA464\uA2CD\uA4CA\u0000\uA4C9"+ - "\uA4C8\uA563\uA562\u0000\uC96D\uC9C3\u0000\u0000"+ - "\u0000\uA8F5\uA8F2\uA8F4\uA8F3\u0000\u0000\uAB6E"+ - "\u0000\u0000\uB3D5\u0000\uA452\u0000\uA4CB\u0000"+ - "\uA565\uA564\u0000\uCA72\u0000\u0000\uA8F6\u0000"+ - "\u0000\u0000\u0000\u0000\uC957\u0000\uA567\uA566"+ - "\uA64C\uA64D\uCA73\uA759\u0000\uA75A\u0000\uA8F7"+ - "\uA8F8\uA8F9\u0000\uAB6F\uCDF5\u0000\u0000\uADEB"+ - "\u0000\u0000\uC944\u0000\uA4CC\u0000\u0000\u0000"+ - "\u0000\u0000\uC9C4\u0000\u0000\u0000\uCA74\uCA75"+ - "\u0000\u0000\uCBD9\u0000\uCBDA\u0000\uCDF7\uCDF6"+ - "\uCDF9\uCDF8\uAB70\u0000\uD470\uADED\uD0EF\uADEC"+ - "\u0000\u0000\u0000\u0000\uD864\uB3D6\u0000\uD865"+ - "\u0000\u0000\u0000\u0000\uE146\uB9BD\u0000\u0000"+ - "\u0000\u0000\uBC46\u0000\uF1EF\u0000\u0000\u0000"+ - "\u0000\uC958\u0000\uA568\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uB0D1\u0000\u0000\u0000\u0000"+ - "\uA453\uA465\uA4CE\uA4CD\u0000\uA4CF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA8FB\u0000\uA8FA\uA8FC"+ - "\u0000\u0000\u0000\uAB71\u0000\u0000\u0000\uADEE"+ - "\u0000\uE8FB\uC24F\uA466\uA56A\uA579\uA574\u0000"+ - "\uA56F\uA56E\uA575\uA573\uA56C\uA57A\uA56D\uA569"+ - "\uA578\uA577\uA576\uA56B\u0000\uA572\u0000\u0000"+ - "\uA571\u0000\u0000\uA57B\uA570\u0000\u0000\u0000"+ - "\u0000\uA653\u0000\uA659\uA655\u0000\uA65B\uC9C5"+ - "\uA658\uA64E\uA651\uA654\uA650\uA657\uA65A\uA64F"+ - "\uA652\uA656\uA65C\u0000\u0000\u0000\u0000\u0000"+ - "\uCA7E\uCA7B\u0000\uA767\uCA7C\uA75B\uA75D\uA775"+ - "\uA770\u0000\u0000\u0000\uCAA5\uCA7D\uA75F\uA761"+ - "\uCAA4\uA768\uCA78\uA774\uA776\uA75C\uA76D\u0000"+ - "\uCA76\uA773\u0000\uA764\u0000\uA76E\uA76F\uCA77"+ - "\uA76C\uA76A\u0000\uA76B\uA771\uCAA1\uA75E\u0000"+ - "\uA772\uCAA3\uA766\uA763\u0000\uCA7A\uA762\uCAA6"+ - "\uA765\u0000\uA769\u0000\u0000\u0000\uA760\uCAA2"+ - "\u0000\u0000\u0000\u0000\uCA79\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uCBEB\uCBEA\uA94F\uCBED\uCBEF\uCBE4\uCBE7\uCBEE"+ - "\uA950\u0000\u0000\uCBE1\uCBE5\u0000\u0000\uCBE9"+ - "\uCE49\uA94B\uCE4D\uA8FD\uCBE6\uA8FE\uA94C\uA945"+ - "\uA941\u0000\uCBE2\uA944\uA949\uA952\uCBE3\uCBDC"+ - "\uA943\uCBDD\uCBDF\u0000\uA946\u0000\uA948\uCBDB"+ - "\uCBE0\u0000\u0000\uA951\uA94D\uCBE8\uA953\u0000"+ - "\uA94A\uCBDE\uA947\u0000\u0000\uA942\uA940\u0000"+ - "\uCBEC\u0000\uA94E\u0000\u0000\u0000\u0000\u0000"+ - "\uCE48\uCDFB\uCE4B\u0000\u0000\uCDFD\uAB78\uABA8"+ - "\uAB74\uABA7\uAB7D\uABA4\uAB72\uCDFC\uCE43\uABA3"+ - "\uCE4F\uABA5\u0000\uAB79\u0000\u0000\uCE45\uCE42"+ - "\uAB77\u0000\uCDFA\uABA6\uCE4A\uAB7C\uCE4C\uABA9"+ - "\uAB73\uAB7E\uAB7B\uCE40\uABA1\uCE46\uCE47\uAB7A"+ - "\uABA2\uAB76\u0000\u0000\u0000\u0000\uAB75\uCDFE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uCE44\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uCE4E\u0000"+ - "\uD144\uADFB\uD0F1\u0000\uD0F6\uADF4\uAE40\uD0F4"+ - "\uADEF\uADF9\uADFE\uD0FB\u0000\uADFA\uADFD\u0000"+ - "\u0000\uD0FE\uADF5\uD0F5\u0000\u0000\u0000\uD142"+ - "\uD143\u0000\uADF7\uD141\uADF3\uAE43\u0000\uD0F8"+ - "\u0000\uADF1\u0000\uD146\uD0F9\uD0FD\uADF6\uAE42"+ - "\uD0FA\uADFC\uD140\uD147\uD4A1\u0000\uD145\uAE44"+ - "\uADF0\uD0FC\uD0F3\u0000\uADF8\u0000\u0000\uD0F2"+ - "\u0000\u0000\uD0F7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uD0F0\uAE41"+ - "\u0000\u0000\uD477\u0000\uB0E4\uD4A7\uB0E2\uB0DF"+ - "\uD47C\uB0DB\uD4A2\uB0E6\uD476\uD47B\uD47A\uADF2"+ - "\uB0E1\uD4A5\u0000\uD4A8\uD473\u0000\uB3E8\u0000"+ - "\uD4A9\uB0E7\u0000\uB0D9\uB0D6\uD47E\uB0D3\u0000"+ - "\uD4A6\u0000\uB0DA\uD4AA\u0000\uD474\uD4A4\uB0DD"+ - "\uD475\uD478\uD47D\u0000\u0000\uB0DE\uB0DC\uB0E8"+ - "\u0000\u0000\u0000\u0000\uB0E3\u0000\uB0D7\uB1D2"+ - "\u0000\uB0D8\uD479\uB0E5\uB0E0\uD4A3\uB0D5\u0000"+ - "\u0000\u0000\uB0D4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD471\uD472\uD86A"+ - "\u0000\u0000\u0000\uB3D7\uB3DA\uD875\uB3EE\uD878"+ - "\uB3D8\uD871\uB3DE\uB3E4\uB5BD\u0000\u0000\uB3E2"+ - "\uD86E\uB3EF\uB3DB\uB3E3\uD876\uDCD7\uD87B\uD86F"+ - "\u0000\uD866\uD873\uD86D\uB3E1\uD879\u0000\u0000"+ - "\uB3DD\uB3F1\uB3EA\u0000\uB3DF\uB3DC\u0000\uB3E7"+ - "\u0000\uD87A\uD86C\uD872\uD874\uD868\uD877\uB3D9"+ - "\uD867\u0000\uB3E0\uB3F0\uB3EC\uD869\uB3E6\u0000"+ - "\u0000\uB3ED\uB3E9\uB3E5\u0000\uD870\u0000\u0000"+ - "\u0000\u0000\u0000\uB3EB\u0000\u0000\u0000\uDCD5"+ - "\uDCD1\u0000\uDCE0\uDCCA\uDCD3\uB6E5\uB6E6\uB6DE"+ - "\uDCDC\uB6E8\uDCCF\uDCCE\uDCCC\uDCDE\uB6DC\uDCD8"+ - "\uDCCD\uB6DF\uDCD6\uB6DA\uDCD2\uDCD9\uDCDB\u0000"+ - "\u0000\uDCDF\uB6E3\uDCCB\uB6DD\uDCD0\u0000\uB6D8"+ - "\u0000\uB6E4\uDCDA\uB6E0\uB6E1\uB6E7\uB6DB\uA25F"+ - "\uB6D9\uDCD4\u0000\u0000\u0000\u0000\u0000\uB6E2"+ - "\u0000\u0000\uDCDD\u0000\u0000\u0000\uB9CD\uB9C8"+ - "\u0000\uE155\uE151\u0000\uE14B\uB9C2\uB9BE\uE154"+ - "\uB9BF\uE14E\uE150\u0000\uE153\u0000\uB9C4\u0000"+ - "\uB9CB\uB9C5\u0000\u0000\uE149\uB9C6\uB9C7\uE14C"+ - "\uB9CC\u0000\uE14A\uE14F\uB9C3\uE148\uB9C9\uB9C1"+ - "\u0000\u0000\u0000\uB9C0\uE14D\uE152\u0000\uB9CA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE147"+ - "\u0000\uBC4D\uE547\u0000\uE544\u0000\uBC47\uBC53"+ - "\uBC54\u0000\uBC4A\uE542\uBC4C\uE4F9\uBC52\u0000"+ - "\uE546\uBC49\uE548\uBC48\u0000\uE543\uE545\uBC4B"+ - "\uE541\uE4FA\uE4F7\u0000\u0000\uD86B\uE4FD\u0000"+ - "\uE4F6\uE4FC\uE4FB\u0000\uE4F8\u0000\uBC4F\u0000"+ - "\u0000\u0000\u0000\uBC4E\u0000\u0000\u0000\uBC50"+ - "\uE4FE\uBEB2\uE540\u0000\u0000\u0000\uE945\u0000"+ - "\uE8FD\u0000\uBEBE\uE942\uBEB6\uBEBA\uE941\u0000"+ - "\uBEB9\uBEB5\uBEB8\uBEB3\uBEBD\uE943\uE8FE\uBEBC"+ - "\uE8FC\uBEBB\uE944\uE940\uBC51\u0000\uBEBF\uE946"+ - "\uBEB7\uBEB4\u0000\u0000\u0000\u0000\uECC6\uECC8"+ - "\uC07B\uECC9\uECC7\uECC5\uECC4\uC07D\uECC3\uC07E"+ - "\u0000\u0000\u0000\u0000\uECC1\uECC2\uC07A\uC0A1"+ - "\uC07C\u0000\u0000\uECC0\u0000\uC250\u0000\uEFBC"+ - "\uEFBA\uEFBF\uEFBD\u0000\uEFBB\uEFBE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC360\uF1F2\uF1F3"+ - "\uC456\u0000\uF1F4\uF1F0\uF1F5\uF1F1\uC251\u0000"+ - "\u0000\u0000\uF3FE\uF441\uC459\uF440\uC458\uC457"+ - "\u0000\u0000\u0000\u0000\uC45A\uF5C5\uF5C6\u0000"+ - "\uC4DA\uC4D9\uC4DB\uF5C4\u0000\uF6D8\uF6D7\u0000"+ - "\uC56D\uC56F\uC56E\uF6D9\uC5C8\uF8A6\u0000\u0000"+ - "\u0000\uC5F1\u0000\uF8A5\uF8EE\u0000\u0000\uC949"+ - "\u0000\u0000\uA57D\uA57C\u0000\uA65F\uA65E\uC9C7"+ - "\uA65D\uC9C6\u0000\u0000\uA779\uCAA9\u0000\uCAA8"+ - "\u0000\u0000\uA777\uA77A\u0000\u0000\uCAA7\u0000"+ - "\uA778\u0000\u0000\u0000\u0000\u0000\u0000\uCBF0"+ - "\u0000\uCBF1\uA954\u0000\u0000\u0000\u0000\uABAA"+ - "\u0000\uD148\uD149\uAE45\uAE46\u0000\u0000\uD4AC"+ - "\uB0E9\uB0EB\uD4AB\uB0EA\uD87C\uB3F2\u0000\u0000"+ - "\u0000\u0000\uB6E9\uB6EA\uDCE1\u0000\uB9CF\u0000"+ - "\uB9CE\u0000\uE549\uE948\uE947\u0000\uF96B\uA467"+ - "\uC959\u0000\uC96E\uC96F\u0000\u0000\u0000\u0000"+ - "\uA662\uA666\uC9C9\u0000\uA664\uA663\uC9C8\uA665"+ - "\uA661\u0000\u0000\uA660\uC9CA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA7A6\u0000\u0000\uA7A3\u0000"+ - "\uA77D\uCAAA\u0000\u0000\u0000\uCAAB\u0000\uA7A1"+ - "\u0000\uCAAD\uA77B\uCAAE\uCAAC\uA77E\uA7A2\uA7A5"+ - "\uA7A4\uA77C\uCAAF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA959\uCBFE\u0000\uA95B\u0000\uA95A\u0000"+ - "\uCC40\uA958\uA957\uCBF5\u0000\uCBF4\u0000\uCBF2"+ - "\uCBF7\uCBF6\uCBF3\uCBFC\uCBFD\uCBFA\uCBF8\uA956"+ - "\u0000\u0000\u0000\uCBFB\uA95C\uCC41\u0000\u0000"+ - "\uCBF9\u0000\uABAB\uA955\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uABAC\uCE54\u0000\u0000\uCE5A"+ - "\u0000\u0000\u0000\uABB2\uCE58\uCE5E\u0000\uCE55"+ - "\uCE59\uCE5B\uCE5D\uCE57\u0000\uCE56\uCE51\uCE52"+ - "\uABAD\u0000\uABAF\uABAE\uCE53\uCE5C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uABB1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uCE50\uD153\u0000"+ - "\uD152\uD157\uD14E\u0000\uD151\uD150\u0000\uD154"+ - "\u0000\uD158\uAE47\uAE4A\u0000\u0000\uD14F\uD155"+ - "\u0000\u0000\u0000\uAE49\uD14A\u0000\uABB0\uD4BA"+ - "\uD156\u0000\uD14D\u0000\uAE48\uD14C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uD4B1\u0000\u0000\uB0EC"+ - "\uB0F0\uD4C1\uD4AF\uD4BD\uB0F1\uD4BF\u0000\uD4C5"+ - "\u0000\uD4C9\u0000\u0000\uD4C0\uD4B4\uD4BC\u0000"+ - "\uD4CA\uD4C8\uD4BE\uD4B9\uD4B2\uD8A6\uD4B0\uB0F5"+ - "\uD4B7\uB0F6\uB0F2\uD4AD\uD4C3\uD4B5\u0000\u0000"+ - "\uD4B3\uD4C6\uB0F3\u0000\uD4CC\uB0ED\uB0EF\uD4BB"+ - "\uD4B6\uAE4B\uB0EE\uD4B8\uD4C7\uD4CB\uD4C2\u0000"+ - "\uD4C4\u0000\u0000\u0000\uD4AE\u0000\u0000\u0000"+ - "\u0000\uD8A1\u0000\uD8AA\uD8A9\uB3FA\uD8A2\u0000"+ - "\uB3FB\uB3F9\u0000\uD8A4\uB3F6\uD8A8\u0000\uD8A3"+ - "\uD8A5\uD87D\uB3F4\u0000\uD8B2\uD8B1\uD8AE\uB3F3"+ - "\uB3F7\uB3F8\uD14B\uD8AB\uB3F5\uB0F4\uD8AD\uD87E"+ - "\uD8B0\uD8AF\u0000\uD8B3\u0000\uDCEF\u0000\uD8AC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD8A7\uDCE7\uB6F4\uB6F7\uB6F2\uDCE6\uDCEA\uDCE5"+ - "\u0000\uB6EC\uB6F6\uDCE2\uB6F0\uDCE9\u0000\uB6EE"+ - "\uB6ED\uDCEC\uB6EF\uDCEE\u0000\uDCEB\uB6EB\u0000"+ - "\u0000\u0000\uB6F5\uDCF0\uDCE4\uDCED\u0000\u0000"+ - "\uDCE3\u0000\u0000\uB6F1\u0000\uB6F3\u0000\uDCE8"+ - "\u0000\uDCF1\u0000\u0000\uE15D\uB9D0\uE163\u0000"+ - "\u0000\uB9D5\uE15F\uE166\uE157\uB9D7\uB9D1\uE15C"+ - "\uBC55\uE15B\uE164\uB9D2\u0000\uB9D6\uE15A\uE160"+ - "\uE165\uE156\uB9D4\uE15E\u0000\u0000\uE162\uE168"+ - "\uE158\uE161\u0000\uB9D3\uE167\u0000\u0000\u0000"+ - "\uE159\u0000\u0000\u0000\uBC59\uE54B\uBC57\uBC56"+ - "\uE54D\uE552\u0000\uE54E\u0000\uE551\uBC5C\u0000"+ - "\uBEA5\uBC5B\u0000\uE54A\uE550\u0000\uBC5A\uE54F"+ - "\u0000\uE54C\u0000\uBC58\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uE94D\u0000\uE94F\uE94A\uBEC1\uE94C"+ - "\u0000\uBEC0\uE94E\u0000\u0000\uBEC3\uE950\uBEC2"+ - "\uE949\uE94B\u0000\u0000\u0000\u0000\uC0A5\uECCC"+ - "\u0000\uC0A4\uECCD\uC0A3\uECCB\uC0A2\uECCA\u0000"+ - "\uC253\uC252\uF1F6\uF1F8\u0000\uF1F7\uC361\uC362"+ - "\u0000\u0000\uC363\uF442\uC45B\u0000\u0000\uF7D3"+ - "\uF7D2\uC5F2\u0000\uA468\uA4D0\u0000\u0000\uA7A7"+ - "\u0000\u0000\u0000\u0000\uCE5F\u0000\u0000\u0000"+ - "\u0000\uB3FC\uB3FD\u0000\uDCF2\uB9D8\uE169\uE553"+ - "\u0000\u0000\u0000\uC95A\u0000\u0000\uCAB0\u0000"+ - "\u0000\u0000\u0000\u0000\uCC42\uCE60\uD159\uAE4C"+ - "\u0000\u0000\uF1F9\u0000\uC4DC\uA469\uA57E\uC970"+ - "\u0000\uA667\uA668\u0000\uA95D\u0000\u0000\u0000"+ - "\uB0F7\u0000\uB9DA\u0000\uB9DB\uB9D9\u0000\uA46A"+ - "\u0000\uA4D1\uA4D3\uA4D2\uC95B\uA4D4\uA5A1\uC971"+ - "\u0000\uA5A2\u0000\u0000\u0000\u0000\u0000\uA669"+ - "\uA66A\u0000\u0000\u0000\uC9CB\u0000\uA7A8\u0000"+ - "\uCAB1\u0000\u0000\u0000\uA961\uCC43\u0000\uA95F"+ - "\uA960\uA95E\uD15A\u0000\u0000\u0000\uABB6\uABB5"+ - "\uABB7\uABB4\u0000\uCE61\uA962\uABB3\u0000\uAE4D"+ - "\uAE4E\u0000\uAE4F\u0000\uD4CD\u0000\u0000\u0000"+ - "\uB3FE\uD8B4\uB0F8\u0000\u0000\u0000\u0000\uB6F8"+ - "\u0000\uB9DD\uB9DC\uE16A\u0000\uBC5D\uBEC4\u0000"+ - "\uEFC0\uF6DA\uF7D4\uA46B\uA5A3\u0000\uA5A4\uC9D1"+ - "\uA66C\uA66F\u0000\uC9CF\uC9CD\uA66E\uC9D0\uC9D2"+ - "\uC9CC\uA671\uA670\uA66D\uA66B\uC9CE\u0000\u0000"+ - "\u0000\u0000\uA7B3\u0000\u0000\uA7B0\uCAB6\uCAB9"+ - "\uCAB8\u0000\uA7AA\uA7B2\u0000\u0000\uA7AF\uCAB5"+ - "\uCAB3\uA7AE\u0000\u0000\u0000\uA7A9\uA7AC\u0000"+ - "\uCAB4\uCABB\uCAB7\uA7AD\uA7B1\uA7B4\uCAB2\uCABA"+ - "\uA7AB\u0000\u0000\u0000\u0000\u0000\uA967\uA96F"+ - "\u0000\uCC4F\uCC48\uA970\uCC53\uCC44\uCC4B\u0000"+ - "\u0000\uA966\uCC45\uA964\uCC4C\uCC50\uA963\u0000"+ - "\uCC51\uCC4A\u0000\uCC4D\u0000\uA972\uA969\uCC54"+ - "\uCC52\u0000\uA96E\uA96C\uCC49\uA96B\uCC47\uCC46"+ - "\uA96A\uA968\uA971\uA96D\uA965\u0000\uCC4E\u0000"+ - "\uABB9\u0000\uABC0\uCE6F\uABB8\uCE67\uCE63\u0000"+ - "\uCE73\uCE62\u0000\uABBB\uCE6C\uABBE\uABC1\u0000"+ - "\uABBC\uCE70\uABBF\u0000\uAE56\uCE76\uCE64\u0000"+ - "\u0000\uCE66\uCE6D\uCE71\uCE75\uCE72\uCE6B\uCE6E"+ - "\u0000\u0000\uCE68\uABC3\uCE6A\uCE69\uCE74\uABBA"+ - "\uCE65\uABC2\u0000\uABBD\u0000\u0000\u0000\u0000"+ - "\u0000\uAE5C\uD162\u0000\uAE5B\u0000\u0000\uD160"+ - "\u0000\uAE50\u0000\uAE55\u0000\uD15F\uD15C\uD161"+ - "\uAE51\uD15B\u0000\uAE54\uAE52\u0000\uD163\uAE53"+ - "\uAE57\u0000\u0000\uAE58\u0000\uAE5A\u0000\u0000"+ - "\u0000\uAE59\u0000\u0000\u0000\uD15D\uD15E\u0000"+ - "\u0000\u0000\u0000\uD164\u0000\uD4D4\uB0F9\uD8C2"+ - "\uD4D3\uD4E6\u0000\u0000\uB140\u0000\uD4E4\u0000"+ - "\uB0FE\uB0FA\uD4ED\uD4DD\uD4E0\u0000\uB143\uD4EA"+ - "\uD4E2\uB0FB\uB144\u0000\uD4E7\uD4E5\u0000\u0000"+ - "\uD4D6\uD4EB\uD4DF\uD4DA\u0000\uD4D0\uD4EC\uD4DC"+ - "\uD4CF\u0000\uB142\uD4E1\uD4EE\uD4DE\uD4D2\uD4D7"+ - "\uD4CE\u0000\uB141\u0000\uD4DB\uD4D8\uB0FC\uD4D1"+ - "\u0000\uD4E9\uB0FD\u0000\uD4D9\uD4D5\u0000\u0000"+ - "\uD4E8\u0000\u0000\u0000\u0000\u0000\u0000\uB440"+ - "\uD8BB\u0000\uD8B8\uD8C9\uD8BD\uD8CA\u0000\uB442"+ - "\u0000\u0000\u0000\uD8C6\uD8C3\u0000\u0000\u0000"+ - "\u0000\u0000\uD8C4\uD8C7\uD8CB\u0000\uD4E3\uD8CD"+ - "\uDD47\u0000\uB443\uD8CE\uD8B6\uD8C0\u0000\uD8C5"+ - "\u0000\u0000\uB441\uB444\uD8CC\uD8CF\uD8BA\uD8B7"+ - "\u0000\u0000\uD8B9\u0000\u0000\uD8BE\uD8BC\uB445"+ - "\u0000\uD8C8\u0000\u0000\uD8BF\u0000\uD8C1\uD8B5"+ - "\uDCFA\uDCF8\uB742\uB740\uDD43\uDCF9\uDD44\uDD40"+ - "\uDCF7\uDD46\uDCF6\uDCFD\uB6FE\uB6FD\uB6FC\uDCFB"+ - "\uDD41\uB6F9\uB741\u0000\uDCF4\u0000\uDCFE\uDCF3"+ - "\uDCFC\uB6FA\uDD42\uDCF5\uB6FB\uDD45\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uE16E\uB9E2\uB9E1"+ - "\uB9E3\uE17A\uE170\uE176\uE16B\uE179\uE178\uE17C"+ - "\uE175\uB9DE\uE174\uB9E4\u0000\uE16D\uB9DF\u0000"+ - "\uE17B\uB9E0\uE16F\uE172\uE177\uE171\uE16C\u0000"+ - "\u0000\u0000\u0000\uE173\uE555\uBC61\uE558\uE557"+ - "\uE55A\uE55C\u0000\uBC5F\u0000\uE556\u0000\uE554"+ - "\u0000\uE55D\uE55B\uE559\u0000\uE55F\u0000\uE55E"+ - "\uBC63\uBC5E\u0000\uBC60\uBC62\u0000\u0000\uE560"+ - "\uE957\u0000\u0000\uE956\uE955\u0000\uE958\uE951"+ - "\u0000\uE952\uE95A\uE953\u0000\uBEC5\uE95C\u0000"+ - "\uE95B\uE954\u0000\uECD1\uC0A8\uECCF\uECD4\uECD3"+ - "\uE959\u0000\uC0A7\u0000\uECD2\uECCE\uECD6\uECD5"+ - "\uC0A6\u0000\uECD0\u0000\uBEC6\u0000\u0000\u0000"+ - "\uC254\u0000\u0000\u0000\uEFC1\uF1FA\uF1FB\uF1FC"+ - "\uC45C\u0000\u0000\uC45D\u0000\uF443\u0000\uF5C8"+ - "\uF5C7\u0000\u0000\uF6DB\uF6DC\uF7D5\uF8A7\u0000"+ - "\uA46C\uA46D\u0000\uA46E\uA4D5\uA5A5\uC9D3\uA672"+ - "\uA673\u0000\uA7B7\uA7B8\uA7B6\uA7B5\u0000\uA973"+ - "\u0000\u0000\uCC55\uA975\uA974\uCC56\u0000\u0000"+ - "\u0000\uABC4\u0000\uAE5D\uD165\u0000\uD4F0\u0000"+ - "\uB145\uB447\uD4EF\uB446\u0000\uB9E5\u0000\uE17D"+ - "\uBEC7\u0000\uC0A9\uECD7\u0000\uC45E\u0000\uC570"+ - "\u0000\uC972\u0000\uA5A6\uC973\uA676\u0000\uA674"+ - "\uA675\uA677\u0000\uA7BA\uA7B9\u0000\uCABC\uA7BB"+ - "\u0000\u0000\uCABD\uCC57\u0000\uCC58\u0000\uA976"+ - "\uA978\uA97A\uA977\uA97B\uA979\u0000\u0000\u0000"+ - "\u0000\u0000\uABC8\uABC5\uABC7\uABC9\uABC6\uD166"+ - "\uCE77\u0000\u0000\u0000\uD168\uD167\uAE63\u0000"+ - "\uAE5F\u0000\u0000\uAE60\uAE62\uAE64\uAE61\u0000"+ - "\uAE66\uAE65\u0000\u0000\u0000\u0000\u0000\uB14A"+ - "\uD4F2\uD4F1\uB149\u0000\uB148\uB147\uB14B\uB146"+ - "\u0000\u0000\uD8D5\uD8D2\uB449\uD8D1\uD8D6\u0000"+ - "\uB44B\uD8D4\uB448\uB44A\uD8D3\u0000\uDD48\u0000"+ - "\uDD49\uDD4A\u0000\u0000\u0000\u0000\uB9E6\uB9EE"+ - "\uE17E\uB9E8\uB9EC\uE1A1\uB9ED\uB9E9\uB9EA\uB9E7"+ - "\uB9EB\uBC66\uD8D0\uBC67\uBC65\u0000\uBC64\uE95D"+ - "\uBEC8\uECD8\uECD9\u0000\u0000\uC364\uC45F\u0000"+ - "\uA46F\u0000\uA678\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uABCA\u0000\uD169\uAE67\u0000\u0000\uB14E"+ - "\uB14D\uB14C\uB44C\uB44D\uD8D7\uB9EF\uBEC9\uA470"+ - "\uC95C\uA4D6\uC974\u0000\u0000\uC9D4\uA679\u0000"+ - "\u0000\u0000\uA97C\u0000\u0000\u0000\u0000\uDD4B"+ - "\u0000\u0000\uA471\u0000\uA4D7\uC9D5\u0000\u0000"+ - "\uCABE\u0000\uCABF\u0000\uA7BC\u0000\u0000\u0000"+ - "\uD8D8\uB44E\u0000\uDD4C\u0000\u0000\u0000\uC0AA"+ - "\uA472\uA4A8\uA4D8\uC975\uA5A7\u0000\uA7C0\uA7BF"+ - "\uA7BD\uA7BE\u0000\u0000\uCC59\uA97E\uA9A1\uCC5A"+ - "\uA97D\u0000\u0000\uABCE\uCE78\uABCD\uABCB\uABCC"+ - "\uAE6A\uAE68\u0000\u0000\uD16B\uAE69\uD16A\u0000"+ - "\uAE5E\uD4F3\u0000\u0000\uB150\uB151\u0000\u0000"+ - "\uB14F\u0000\uB9F0\uE1A2\uBC68\uBC69\u0000\uE561"+ - "\uC0AB\uEFC2\uEFC3\u0000\uC4DD\uF8A8\uC94B\uA4D9"+ - "\u0000\uA473\u0000\uC977\uC976\u0000\u0000\u0000"+ - "\u0000\uA67A\uC9D7\uC9D8\uC9D6\u0000\uC9D9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uCAC7\u0000"+ - "\uCAC2\uCAC4\uCAC6\uCAC3\uA7C4\uCAC0\u0000\uCAC1"+ - "\uA7C1\uA7C2\uCAC5\uCAC8\uA7C3\uCAC9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uCC68\u0000\uCC62"+ - "\uCC5D\uA9A3\uCC65\uCC63\uCC5C\uCC69\uCC6C\uCC67"+ - "\uCC60\uA9A5\uCC66\uA9A6\uCC61\uCC64\uCC5B\uCC5F"+ - "\uCC6B\uA9A7\u0000\uA9A8\u0000\uCC5E\uCC6A\uA9A2"+ - "\uA9A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uCEAB\uCEA4"+ - "\uCEAA\uCEA3\uCEA5\uCE7D\uCE7B\u0000\uCEAC\uCEA9"+ - "\uCE79\u0000\uABD0\uCEA7\uCEA8\u0000\uCEA6\uCE7C"+ - "\uCE7A\uABCF\uCEA2\uCE7E\u0000\u0000\uCEA1\uCEAD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uAE6F\u0000\uAE6E\u0000\uD16C\uAE6B\uD16E\u0000"+ - "\uAE70\uD16F\u0000\u0000\uAE73\u0000\uAE71\uD170"+ - "\uCEAE\uD172\u0000\uAE6D\u0000\uAE6C\u0000\uD16D"+ - "\uD171\uAE72\u0000\u0000\u0000\u0000\uB153\uB152"+ - "\u0000\u0000\u0000\uD4F5\uD4F9\uD4FB\uB154\uD4FE"+ - "\u0000\uB158\uD541\u0000\uB15A\u0000\uB156\uB15E"+ - "\u0000\uB15B\uD4F7\uB155\u0000\uD4F6\uD4F4\uD543"+ - "\uD4F8\u0000\uB157\uD542\uB15C\uD4FD\uD4FC\uB15D"+ - "\uD4FA\uB159\u0000\u0000\u0000\u0000\uD544\u0000"+ - "\uD540\uD8E7\uD8EE\uD8E3\uB451\uD8DF\uD8EF\uD8D9"+ - "\uD8EC\uD8EA\uD8E4\u0000\uD8ED\uD8E6\u0000\uD8DE"+ - "\uD8F0\uD8DC\uD8E9\uD8DA\u0000\uD8F1\u0000\uB452"+ - "\u0000\uD8EB\uDD4F\uD8DD\uB44F\u0000\uD8E1\u0000"+ - "\uB450\uD8E0\uD8E5\u0000\u0000\uD8E2\u0000\u0000"+ - "\u0000\uD8E8\u0000\u0000\u0000\u0000\uDD53\u0000"+ - "\u0000\u0000\uDD56\uDD4E\u0000\uDD50\u0000\uDD55"+ - "\uDD54\uB743\u0000\uD8DB\uDD52\u0000\u0000\uB744"+ - "\u0000\uDD4D\uDD51\u0000\u0000\u0000\u0000\uE1A9"+ - "\u0000\uE1B0\uE1A7\u0000\uE1AE\uE1A5\uE1AD\uE1B1"+ - "\uE1A4\uE1A8\uE1A3\u0000\uB9F1\u0000\uE1A6\uB9F2"+ - "\uE1AC\uE1AB\uE1AA\u0000\u0000\uE1AF\u0000\u0000"+ - "\u0000\u0000\uE565\uE567\uBC6B\uE568\u0000\uE563"+ - "\u0000\uE562\uE56C\u0000\uE56A\uBC6A\uE56D\uE564"+ - "\uE569\uE56B\uE566\u0000\u0000\u0000\u0000\uE961"+ - "\uE966\uE960\uE965\u0000\uE95E\uE968\uE964\uE969"+ - "\uE963\uE95F\uE967\u0000\uE96A\uE962\u0000\uECDA"+ - "\uC0AF\u0000\uC0AD\u0000\uC0AC\uC0AE\u0000\u0000"+ - "\uEFC4\u0000\uF172\uF1FD\u0000\u0000\uF444\uF445"+ - "\u0000\uC460\u0000\uF5C9\u0000\uC4DE\u0000\uF5CA"+ - "\u0000\uF6DE\uC572\u0000\uC571\uF6DD\uC5C9\u0000"+ - "\uF7D6\u0000\u0000\u0000\u0000\uA474\uA67B\uC9DA"+ - "\uCACA\uA8B5\uB15F\u0000\u0000\uA475\uA5AA\uA5A9"+ - "\uA5A8\u0000\u0000\uA7C5\u0000\u0000\uAE74\u0000"+ - "\uDD57\uA476\uA477\uA478\uA4DA\u0000\u0000\uABD1"+ - "\u0000\uCEAF\u0000\u0000\u0000\uB453\uA479\uC95D"+ - "\u0000\u0000\uA5AB\uA5AC\uC978\u0000\uA67C\u0000"+ - "\u0000\u0000\uCACB\u0000\uA7C6\u0000\uCACC\u0000"+ - "\u0000\uA9AE\u0000\u0000\uCC6E\uA9AC\uA9AB\uCC6D"+ - "\uA9A9\uCC6F\uA9AA\uA9AD\u0000\uABD2\u0000\uABD4"+ - "\uCEB3\uCEB0\uCEB1\uCEB2\uCEB4\uABD3\u0000\u0000"+ - "\uD174\uD173\u0000\uAE76\u0000\uAE75\u0000\u0000"+ - "\u0000\u0000\u0000\uB162\uD546\u0000\uB161\uB163"+ - "\uB160\u0000\u0000\u0000\u0000\uB455\uD545\u0000"+ - "\uB456\uD8F3\u0000\uB457\uD8F2\uB454\u0000\u0000"+ - "\u0000\u0000\uDD5A\uDD5C\uB745\uDD5B\uDD59\uDD58"+ - "\u0000\u0000\u0000\uE1B4\uB9F7\uB9F5\u0000\uB9F6"+ - "\uE1B2\uE1B3\u0000\uB9F3\uE571\uE56F\u0000\uBC6D"+ - "\uE570\uBC6E\uBC6C\uB9F4\u0000\u0000\uE96D\uE96B"+ - "\uE96C\uE56E\uECDC\uC0B0\uECDB\uEFC5\uEFC6\uE96E"+ - "\uF1FE\u0000\uA47A\uA5AD\uA67E\uC9DB\uA67D\u0000"+ - "\uA9AF\uB746\u0000\uA4DB\uA5AE\uABD5\uB458\u0000"+ - "\uC979\u0000\uC97A\u0000\uC9DC\u0000\u0000\uA7C8"+ - "\uCAD0\uCACE\uA7C9\uCACD\uCACF\uCAD1\u0000\uA7C7"+ - "\u0000\u0000\u0000\u0000\u0000\uA9B3\uA9B4\uA9B1"+ - "\u0000\u0000\uA9B0\uCEB8\uA9B2\u0000\u0000\u0000"+ - "\uABD6\u0000\uCEB7\uCEB9\uCEB6\uCEBA\uABD7\uAE79"+ - "\uD175\u0000\uD177\uAE77\uD178\uAE78\uD176\u0000"+ - "\uCEB5\uD547\uD54A\uD54B\uD548\uB167\uB166\uB164"+ - "\uB165\uD549\u0000\u0000\u0000\u0000\uB168\u0000"+ - "\u0000\uB45A\uB45B\u0000\uB45C\uDD5D\uDD5F\uDD61"+ - "\uB748\uB747\uB459\uDD60\uDD5E\u0000\uE1B8\u0000"+ - "\u0000\uE1B6\uE1BC\uB9F8\uE1BD\uE1BA\uB9F9\uE1B7"+ - "\uE1B5\uE1BB\uBC70\uE573\uE1B9\uBC72\uE574\uBC71"+ - "\uBC74\uE575\uBC6F\uBC73\u0000\uE973\uE971\uE970"+ - "\uE972\uE96F\u0000\u0000\uC366\u0000\uF446\uF447"+ - "\u0000\uF5CB\uF6DF\uC655\u0000\u0000\uA9B5\uA7CA"+ - "\u0000\u0000\uABD8\u0000\u0000\u0000\uA47B\uA4DC"; - - private final static String innerIndex2= - "\u0000\uA5AF\uC9DD\u0000\uA7CB\uCAD2\u0000\uCEBB"+ - "\uABD9\u0000\uB9FA\uA47C\u0000\u0000\u0000\uA6A1"+ - "\u0000\u0000\uB749\uA47D\uA4DD\uA4DE\u0000\uA5B1"+ - "\uA5B0\u0000\uC9DE\uA6A2\u0000\uCAD3\u0000\uA7CC"+ - "\u0000\u0000\uCC71\uCC72\uCC73\u0000\uA9B6\uA9B7"+ - "\uCC70\uA9B8\u0000\u0000\u0000\uABDA\uCEBC\u0000"+ - "\uD17A\uAE7A\u0000\uD179\u0000\uB169\uD54C\uB16A"+ - "\uD54D\u0000\u0000\u0000\uB45D\u0000\u0000\u0000"+ - "\uDD62\u0000\u0000\uE1BF\uE1BE\u0000\uB9FB\u0000"+ - "\uBC75\uE576\uBECA\uE974\uC0B1\u0000\uC573\uF7D8"+ - "\u0000\u0000\u0000\u0000\uCC74\u0000\uCEBD\uB16B"+ - "\uD8F4\uB74A\u0000\u0000\u0000\uC255\u0000\u0000"+ - "\u0000\u0000\uA7CE\u0000\uA7CD\uABDB\u0000\uD17B"+ - "\u0000\uB16D\uB343\uB16E\uB16C\uB45E\u0000\uE1C0"+ - "\uB9FC\uBC76\u0000\uC94C\uC9DF\u0000\uCAD5\uA7CF"+ - "\uCAD4\uA7D0\u0000\u0000\uA9BC\uCC77\uCC76\uA9BB"+ - "\uA9B9\uA9BA\uCC75\u0000\u0000\uABDD\uCEBE\uABE0"+ - "\uABDC\uABE2\uABDE\uABDF\uABE1\u0000\u0000\u0000"+ - "\uAE7D\uAE7C\uAE7B\u0000\u0000\u0000\uD54F\uB16F"+ - "\uB172\uB170\u0000\uD54E\uB175\u0000\uB171\uD550"+ - "\uB174\uB173\u0000\u0000\u0000\uD8F6\uD8F5\u0000"+ - "\uB461\uB45F\uB460\uD8F7\uB74B\uDD64\uB74C\uDD63"+ - "\u0000\u0000\uE577\u0000\u0000\uBC78\uE1C1\uBC77"+ - "\u0000\uB9FD\u0000\uECDE\uE975\uC0B2\uECDD\uF240"+ - "\uF448\uF449\u0000\uA4DF\u0000\uA5B2\u0000\u0000"+ - "\u0000\uC97B\u0000\u0000\uA7D2\uA7D4\u0000\uC9E2"+ - "\uCAD8\uCAD7\uCAD6\u0000\uC9E1\uC9E0\uA6A4\uA7D3"+ - "\uA7D1\uA6A3\u0000\u0000\u0000\uA9BD\uCC78\u0000"+ - "\uA9BE\uCADD\u0000\uCADF\uCADE\uCC79\u0000\u0000"+ - "\uCADA\u0000\uA7D8\uA7D6\u0000\uCAD9\uCADB\uCAE1"+ - "\u0000\uA7D5\u0000\uCADC\uCAE5\uA9C0\u0000\uCAE2"+ - "\uA7D7\u0000\uCAE0\uCAE3\u0000\uA9BF\u0000\uA9C1"+ - "\uCAE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uCCAF\uCCA2\uCC7E\uCCAE\uCCA9\uABE7\uA9C2"+ - "\uCCAA\uCCAD\uABE3\uCCAC\uA9C3\uA9C8\uA9C6\uCCA3"+ - "\u0000\uCC7C\uCCA5\uA9CD\uCCB0\uABE4\uCCA6\u0000"+ - "\uABE5\uA9C9\uCCA8\u0000\uCECD\uABE6\uCC7B\uA9CA"+ - "\uABE8\uA9CB\uA9C7\uA9CC\uCCA7\uCC7A\uCCAB\uA9C4"+ - "\u0000\u0000\uCC7D\uCCA4\uCCA1\uA9C5\u0000\uCEBF"+ - "\u0000\uCEC0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uCECA\uD1A1\uCECB\uABEE\uCECE\uCEC4\uABED\uCEC6"+ - "\u0000\uCEC7\u0000\u0000\uCEC9\uABE9\u0000\u0000"+ - "\uAEA3\u0000\u0000\uCEC5\uCEC1\uAEA4\u0000\u0000"+ - "\uCECF\uAE7E\uD17D\uCEC8\u0000\uD17C\uCEC3\uCECC"+ - "\u0000\u0000\uABEC\uAEA1\uABF2\uAEA2\uCED0\uD17E"+ - "\uABEB\uAEA6\uABF1\uABF0\uABEF\uAEA5\uCED1\uAEA7"+ - "\uABEA\u0000\uCEC2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uB176"+ - "\uD1A4\uD1A6\u0000\uD1A8\uAEA8\uAEAE\uD553\uD1AC"+ - "\uD1A3\uB178\uD551\u0000\uAEAD\uAEAB\uD1AE\u0000"+ - "\uD552\u0000\uD1A5\u0000\uAEAC\uD1A9\uAEAF\uD1AB"+ - "\u0000\u0000\uAEAA\uD1AA\uD1AD\uD1A7\u0000\uAEA9"+ - "\uB179\u0000\uD1A2\uB177\u0000\u0000\u0000\u0000"+ - "\uB17A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD555\uD55E\uB464\u0000\uB17C\uB1A3\uB465\uD560"+ - "\uB1AA\uD8F9\uD556\uB1A2\uB1A5\uB17E\uD554\uD562"+ - "\uD565\uD949\u0000\uD563\uD8FD\uB1A1\uB1A8\uB1AC"+ - "\uD55D\uD8F8\uD561\uB17B\uD8FA\uD564\uD8FC\uD559"+ - "\u0000\uB462\u0000\uD557\uD558\uB1A7\u0000\u0000"+ - "\uB1A6\uD55B\uB1AB\uD55F\uB1A4\uD55C\u0000\uB1A9"+ - "\uB466\uB463\uD8FB\u0000\uD55A\u0000\uB17D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uB46B\uB46F\uD940\uB751\uB46D\uD944\uB471\uDD65"+ - "\uD946\uB753\uB469\uB46C\uD947\u0000\uD948\uD94E"+ - "\uB473\uB754\u0000\uD94A\uD94F\uD943\uB75E\u0000"+ - "\uB755\uB472\uD941\uD950\u0000\uB75D\uB470\uB74E"+ - "\uD94D\u0000\uB474\uD945\uD8FE\uB46A\uD942\u0000"+ - "\uD94B\u0000\uB74D\uB752\uB467\uD94C\u0000\uB750"+ - "\u0000\u0000\u0000\uB468\u0000\u0000\u0000\uB75C"+ - "\uE1C3\uDD70\u0000\uDD68\uE1C2\u0000\uDD6C\uDD6E"+ - "\u0000\u0000\uDD6B\u0000\uB75B\u0000\uDD6A\uB75F"+ - "\u0000\u0000\u0000\uE1D2\u0000\u0000\uB75A\uBA40"+ - "\uDD71\uE1C4\u0000\u0000\uB758\uDD69\uDD6D\uB9FE"+ - "\uB74F\uDD66\uDD67\uBA41\uB757\uB759\uB756\uDD6F"+ - "\u0000\u0000\uE1C8\uE1C9\uE1CE\uBC7D\uE1D5\u0000"+ - "\uBA47\u0000\uBA46\uE1D0\u0000\uBC7C\uE1C5\uBA45"+ - "\u0000\uE1D4\uBA43\uBA44\u0000\uE1D1\uE5AA\uBC7A"+ - "\uB46E\u0000\uE1D3\uBCA3\uE1CB\u0000\uBC7B\u0000"+ - "\uBCA2\uE1C6\uE1CA\uE1C7\uE1CD\uBA48\uBC79\uBA42"+ - "\u0000\uE57A\uE1CF\u0000\uBCA1\u0000\uBCA4\u0000"+ - "\uE1CC\u0000\uBC7E\uE579\u0000\u0000\u0000\u0000"+ - "\u0000\uE57E\uBECE\uE578\uE9A3\uE5A9\uBCA8\u0000"+ - "\uBCA6\uBECC\uE5A6\uE5A2\uBCAC\u0000\uE978\u0000"+ - "\u0000\u0000\uBCAA\uE5A1\u0000\uE976\u0000\uE5A5"+ - "\u0000\uE5A8\uE57D\u0000\uBCAB\u0000\u0000\uBCA5"+ - "\uE977\uBECD\uE5A7\uBCA7\uBCA9\uE5A4\uBCAD\uE5A3"+ - "\uE57C\uE57B\uBECB\uE5AB\uE97A\uECE0\uBED0\u0000"+ - "\uE9A2\u0000\uE97E\u0000\uECE1\u0000\uBED1\uE9A1"+ - "\u0000\uE97C\uC0B4\uECDF\u0000\uE979\uE97B\uC0B5"+ - "\uBED3\uC0B3\uBED2\uC0B7\uE97D\uBECF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uEFCF\u0000"+ - "\uEFC7\u0000\u0000\u0000\u0000\u0000\uECE7\uEFC8"+ - "\uECE3\u0000\u0000\uC256\uECE5\uECE4\uC0B6\uECE2"+ - "\uECE6\uEFD0\uEFCC\uEFCE\u0000\uEFC9\uEFCA\u0000"+ - "\uEFCD\uEFCB\uC367\u0000\u0000\uC36A\uC369\uC368"+ - "\uC461\uF44A\uC462\uF241\uC4DF\uF5CC\uC4E0\uC574"+ - "\uC5CA\uF7D9\u0000\uF7DA\uF7DB\u0000\u0000\uF9BA"+ - "\uA4E0\uC97C\uA5B3\u0000\uA6A6\uA6A7\uA6A5\u0000"+ - "\uA6A8\uA7DA\uA7D9\u0000\uCCB1\uA9CF\uA9CE\u0000"+ - "\u0000\uD1AF\uB1AD\uB1AE\u0000\u0000\u0000\uB475"+ - "\uDD72\uB760\uB761\uDD74\uDD76\uDD75\u0000\uE1D7"+ - "\u0000\uE1D6\uBA49\uE1D8\u0000\uE5AC\uBCAE\u0000"+ - "\uBED4\u0000\uC0B8\uC257\uC0B9\u0000\uA4E1\u0000"+ - "\u0000\u0000\uCAE6\u0000\u0000\uCCB2\uA9D1\uA9D0"+ - "\uA9D2\uABF3\uCED2\uCED3\u0000\u0000\uD1B0\uAEB0"+ - "\uB1AF\uB476\uD951\uA4E2\u0000\uA47E\uA4E3\u0000"+ - "\uC97D\uA5B7\uA5B6\uA5B4\uA5B5\u0000\u0000\u0000"+ - "\uA6AB\uC9E9\uC9EB\uA6AA\uC9E3\u0000\uC9E4\u0000"+ - "\uC9EA\uC9E6\uC9E8\uA6A9\uC9E5\uC9EC\uC9E7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA7E1\uA7EA\uA7E8"+ - "\uCAF0\uCAED\uCAF5\uA7E6\uCAF6\u0000\uA7DF\uCAF3"+ - "\u0000\uA7E5\uCAEF\uCAEE\uA7E3\uCAF4\uA7E4\uA9D3"+ - "\uA7DE\uCAF1\u0000\uCAE7\uA7DB\u0000\uA7EE\uCAEC"+ - "\uCAF2\uA7E0\uA7E2\u0000\uCAE8\u0000\uCAE9\uCAEA"+ - "\u0000\uA7ED\uA7E7\uA7EC\uCAEB\uA7EB\uA7DD\uA7DC"+ - "\uA7E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA9E1\uCCBE\uCCB7\uA9DC\uA9EF\uCCB3\uCCBA\uCCBC"+ - "\uCCBF\uA9EA\u0000\uCCBB\uCCB4\uA9E8\uCCB8\u0000"+ - "\uCCC0\uA9D9\u0000\uCCBD\uA9E3\uA9E2\uCCB6\uA9D7"+ - "\u0000\u0000\uA9D8\u0000\uA9D6\u0000\uA9EE\uA9E6"+ - "\uA9E0\uA9D4\uCCB9\uA9DF\uA9D5\uA9E7\uA9F0\uCED4"+ - "\uA9E4\uCCB5\uA9DA\uA9DD\uA9DE\u0000\uA9EC\uA9ED"+ - "\uA9EB\uA9E5\uA9E9\uA9DB\uABF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uCEDA\uAC41\uABF8\uABFA\uAC40"+ - "\uCEE6\uABFD\uD1B1\uAEB1\uAC43\uCED7\uCEDF\uABFE"+ - "\uCEDE\uCEDB\uCEE3\uCEE5\uABF7\uABFB\uAC42\uAEB3"+ - "\uCEE0\uABF9\uAC45\uCED9\u0000\u0000\u0000\uABFC"+ - "\uAEB2\uABF6\u0000\uCED6\uCEDD\uCED5\uCED8\uCEDC"+ - "\uD1B2\uAC44\u0000\uCEE1\uCEE2\uCEE4\uABF5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uAEC1\uD1BE\uAEBF\uAEC0\uD1B4\uD1C4\u0000\uAEB6"+ - "\u0000\u0000\uD566\uD1C6\uD1C0\u0000\uD1B7\u0000"+ - "\uD1C9\uD1BA\uAEBC\uD57D\uD1BD\uAEBE\uAEB5\u0000"+ - "\uD1CB\uD1BF\uAEB8\uD1B8\uD1B5\uD1B6\uAEB9\uD1C5"+ - "\uD1CC\uAEBB\uD1BC\uD1BB\uAEC3\uAEC2\uAEB4\uAEBA"+ - "\uAEBD\uD1C8\u0000\u0000\uD1C2\uAEB7\uD1B3\uD1CA"+ - "\uD1C1\uD1C3\uD1C7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD567\u0000\uB1B7"+ - "\uB1CB\uB1CA\u0000\uB1BF\u0000\uD579\uD575\uD572"+ - "\uD5A6\uB1BA\uB1B2\u0000\u0000\uD577\uB4A8\uB1B6"+ - "\uD5A1\u0000\uB1CC\uB1C9\uD57B\uD56A\u0000\u0000"+ - "\uB1C8\uD5A3\uD569\uB1BD\uB1C1\uD5A2\u0000\uD573"+ - "\uB1C2\uB1BC\uD568\u0000\uB478\uD5A5\uD571\uB1C7"+ - "\uD574\uD5A4\uB1C6\u0000\uD952\u0000\uB1B3\uD56F"+ - "\uB1B8\uB1C3\u0000\uB1BE\uD578\uD56E\uD56C\uD57E"+ - "\uB1B0\uB1C4\uB1B4\uB477\uD57C\uB1B5\u0000\uB1B1"+ - "\uB1C0\uB1BB\uB1B9\uD570\uB1C5\uD56D\uD57A\uD576"+ - "\uD954\uD953\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD56B\uD964\u0000"+ - "\uB47A\u0000\uD96A\uD959\uD967\uDD77\uB47D\uD96B"+ - "\uD96E\uB47C\uD95C\uD96D\uD96C\uB47E\uD955\uB479"+ - "\uB4A3\u0000\uB4A1\uD969\u0000\uD95F\uB4A5\uD970"+ - "\uD968\uD971\uB4AD\uB4AB\uD966\uD965\u0000\uD963"+ - "\uD95D\uB4A4\u0000\uB4A2\uD1B9\uD956\u0000\uDDB7"+ - "\uD957\uB47B\uB4AA\uDD79\u0000\uB4A6\uB4A7\uD958"+ - "\uD96F\uDD78\uD960\uD95B\uB4A9\uD961\uD95E\u0000"+ - "\u0000\uB4AE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uB770\u0000"+ - "\u0000\uDD7C\uDDB1\uDDB6\uDDAA\uB76C\uDDBB\uB769"+ - "\uDD7A\u0000\uDD7B\uB762\uB76B\uDDA4\uB76E\uB76F"+ - "\uDDA5\u0000\uDDB2\uDDB8\uB76A\u0000\uB764\uDDA3"+ - "\uDD7D\uDDBA\uDDA8\uDDA9\uDD7E\uDDB4\uDDAB\uDDB5"+ - "\uDDAD\u0000\uB765\uE1D9\uB768\uB766\uDDB9\uDDB0"+ - "\uDDAC\u0000\u0000\uDDA1\uBA53\uDDAF\uB76D\uDDA7"+ - "\u0000\uDDA6\u0000\u0000\u0000\uB767\uB763\uE1EE"+ - "\uDDB3\uDDAE\u0000\uDDA2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uE1E9\u0000\uE1DA\uE1E5\u0000"+ - "\uE1EC\uBA51\uB4AC\uE1EA\uBA4C\u0000\u0000\u0000"+ - "\uBA4B\uE1F1\u0000\uE1DB\uE1E8\uE1DC\uE1E7\uBA4F"+ - "\uE1EB\uD962\u0000\u0000\u0000\uE1F2\uE1E3\uBA52"+ - "\uE5BA\uBCAF\u0000\uE1F0\uE1EF\uBA54\uE5AD\uBCB0"+ - "\uE5AE\u0000\uE1DF\uE1E0\uE1DD\uE1E2\uE1DE\uE1F3"+ - "\uBA4E\uBCB1\uBA50\uBA55\u0000\uE1E1\u0000\uE1ED"+ - "\u0000\u0000\uE1E6\u0000\u0000\uE5B1\u0000\uBA4A"+ - "\uBCB4\uE9AA\uE5B6\uE5B5\uE5B7\u0000\u0000\uE5B4"+ - "\uBCB5\u0000\uBCBB\uBCB8\u0000\uBCB9\uE5AF\uE5B2"+ - "\uE5BC\uBCC1\uBCBF\u0000\uE5B3\uD95A\uBCB2\uE5B9"+ - "\uE5B0\u0000\uBCC2\uE5B8\uBA4D\uBCB7\uE1E4\u0000"+ - "\u0000\uBCBA\u0000\uBCBE\uBCC0\uBCBD\uBCBC\u0000"+ - "\uBCB6\uE5BB\uBCB3\uBCC3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uBED8\uBED9\uE9A9\uBEE2\uBEDF"+ - "\u0000\uBED6\uBEDD\uE9AB\uBEDB\uBED5\u0000\uBEDC"+ - "\u0000\uE9A8\uC0BB\uBED7\u0000\uBEDE\uC0BA\uE9A7"+ - "\uE9A6\u0000\uBEE0\u0000\uBEE1\u0000\uE9A5\uE9A4"+ - "\uC0BC\uE9AE\uBEDA\uE9AC\u0000\u0000\u0000\u0000"+ - "\uC0BD\u0000\uC0C2\uECEA\uECEC\u0000\uC0BF\u0000"+ - "\uECED\uECE9\u0000\uECEB\uC0C0\uC0C3\u0000\uECE8"+ - "\uC0BE\uC0C1\uC259\uE9AD\uC258\u0000\u0000\uC25E"+ - "\uEFD4\u0000\uC25C\uC25D\uEFD7\uEFD3\uC25A\uEFD1"+ - "\uC36B\uEFD5\u0000\uEFD6\uEFD2\u0000\uC25B\uF242"+ - "\u0000\uF245\u0000\u0000\uF246\uF244\uF247\uC36C"+ - "\uF243\u0000\u0000\uF44E\uC464\uF44D\uF44C\uF44B"+ - "\uC463\uC465\u0000\uF5CD\uC4E2\uC4E1\u0000\u0000"+ - "\uF6E1\uF6E0\uF6E3\uC5CB\uC575\uF7DD\uF6E2\u0000"+ - "\u0000\uF7DC\uC5CD\uC5CC\uC5F3\uF8A9\uF8EF\uA4E4"+ - "\u0000\u0000\uD972\uE9AF\u0000\u0000\uA6AC\uCAF7"+ - "\uA7F1\uA7EF\u0000\uA7F0\u0000\uCCC1\uA9F1\uAC46"+ - "\u0000\uCEE7\u0000\uCEE8\u0000\uAC47\uD1CE\u0000"+ - "\uAEC4\uAEC5\uD1CD\u0000\u0000\u0000\u0000\uB1D3"+ - "\u0000\uB1CF\u0000\uD5A7\uB1D6\uB1D5\uB1CE\uB1D1"+ - "\uB1D4\uB1D0\u0000\u0000\uD976\uB1CD\uB4AF\u0000"+ - "\u0000\u0000\uB4B1\uB4B2\uD975\uD978\uB4B0\uD973"+ - "\uD977\u0000\uD974\u0000\uB771\u0000\u0000\uDDBC"+ - "\u0000\u0000\uBA56\uE1F4\uBEE3\uBCC4\uE5BD\uBCC5"+ - "\uBCC6\uE5BF\uE5BE\uE5C0\uE9B1\u0000\u0000\uE9B0"+ - "\uECEF\uECEE\uC0C4\uC0C5\uF248\u0000\u0000\uA4E5"+ - "\u0000\u0000\u0000\u0000\uD979\u0000\u0000\u0000"+ - "\uB4B4\uB4B3\uDDBD\u0000\uEFD8\uC4E3\uF7DE\uA4E6"+ - "\u0000\uAEC6\u0000\uB1D8\uB1D7\uD97A\uD97B\uB772"+ - "\uE1F5\uBA57\uE9B2\u0000\uA4E7\uA5B8\u0000\uA9F2"+ - "\uCCC2\u0000\uCEE9\uAC48\uB1D9\u0000\uD97C\uB4B5"+ - "\uB773\u0000\uE5C1\uE5C2\u0000\u0000\uECF0\uC25F"+ - "\uF8F0\uA4E8\u0000\uCCC3\uA9F3\uAC49\u0000\uCEEA"+ - "\u0000\uAEC7\uD1D2\uD1D0\uD1D1\uAEC8\uD1CF\u0000"+ - "\u0000\u0000\u0000\uB1DB\uB1DC\uD5A8\uB1DD\uB1DA"+ - "\uD97D\u0000\uD97E\uDDBE\u0000\u0000\uBA59\uBA58"+ - "\u0000\u0000\uECF1\uEFD9\u0000\uF24A\uF249\uF44F"+ - "\u0000\uC95E\uAC4A\u0000\u0000\uA4E9\uA5B9\u0000"+ - "\uA6AE\uA6AD\u0000\u0000\uA6AF\uA6B0\uC9EE\uC9ED"+ - "\uCAF8\uA7F2\uCAFB\uCAFA\uCAF9\uCAFC\u0000\u0000"+ - "\u0000\u0000\uA9F4\uCCC9\uCCC5\uCCCE\u0000\u0000"+ - "\uA9FB\u0000\uA9F9\uCCCA\uCCC6\uCCCD\uA9F8\uAA40"+ - "\uCCC8\uCCC4\uA9FE\uCCCB\uA9F7\uCCCC\uA9FA\uA9FC"+ - "\uCCD0\uCCCF\uCCC7\uA9F6\uA9F5\uA9FD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uCEEF\uCEF5\u0000\uAC50"+ - "\uAC4D\uCEEC\uCEF1\u0000\uAC53\uAC4B\uCEF0\uAC4E"+ - "\uAC51\u0000\u0000\uCEF3\u0000\uAC4C\uCEF8\uAC4F"+ - "\u0000\uAC52\uCEED\uCEF2\uCEF6\uCEEE\uCEEB\u0000"+ - "\u0000\uCEF7\uCEF4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uAED0\uAEC9\uAECC\u0000\uAECF\u0000\uD1D5"+ - "\u0000\uAECA\uD1D3\u0000\uAECE\u0000\u0000\uAECB"+ - "\u0000\uD1D6\uAECD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uD5AC\uB1DF\uD5AB\uD5AD\uB1DE\uB1E3\uD1D4"+ - "\u0000\uD5AA\uD5AE\u0000\uB1E0\uD5A9\uB1E2\u0000"+ - "\uB1E1\u0000\uD9A7\u0000\uD9A2\u0000\uB4B6\uB4BA"+ - "\uB4B7\uD9A5\uD9A8\u0000\uB4B8\u0000\uB4B9\uB4BE"+ - "\uDDC7\uD9A6\uB4BC\uD9A3\uD9A1\u0000\uB4BD\u0000"+ - "\uD9A4\u0000\u0000\u0000\uB779\u0000\uDDBF\uB776"+ - "\uB777\uB775\uDDC4\uDDC3\uDDC0\uB77B\u0000\u0000"+ - "\uDDC2\uB4BB\u0000\u0000\uDDC6\uDDC1\uB778\uB774"+ - "\uB77A\uDDC5\u0000\u0000\u0000\uBA5C\u0000\uE1F8"+ - "\uE1F7\uE1F6\uBA5A\u0000\u0000\u0000\u0000\u0000"+ - "\uBA5B\uE5C5\uE5C8\uBCC8\u0000\u0000\uBCC7\uE5C9"+ - "\uE5C4\uBCCA\uE5C6\u0000\uBCC9\uE5C3\u0000\uE5C7"+ - "\uBEE9\uBEE6\uE9BB\uE9BA\u0000\uE9B9\uE9B4\u0000"+ - "\uE9B5\u0000\u0000\u0000\uBEE7\u0000\uBEE4\uBEE8"+ - "\uE9B3\uBEE5\uE9B6\uE9B7\uE9BC\u0000\u0000\uE9B8"+ - "\u0000\u0000\uECF2\u0000\u0000\u0000\uC0C7\u0000"+ - "\uEFDC\uC0C6\uEFDA\uEFDB\uC260\uC36E\uF24B\u0000"+ - "\uC36D\u0000\u0000\uF451\uF452\u0000\uC466\u0000"+ - "\uF450\uC4E4\u0000\uF7DF\uC5CE\uF8AA\uF8AB\u0000"+ - "\uA4EA\u0000\uA6B1\uA6B2\uA7F3\u0000\uCCD1\uAC54"+ - "\uAED1\uB1E4\u0000\u0000\uB0D2\u0000\uB4BF\uB4C0"+ - "\uB3CC\uD9A9\u0000\uB77C\uE1FA\uE1F9\u0000\u0000"+ - "\uA4EB\uA6B3\uCCD2\uAA42\u0000\uAA41\u0000\uCEF9"+ - "\uCEFA\u0000\uD1D7\uD1D8\uAED2\uAED3\u0000\uAED4"+ - "\uD5AF\u0000\u0000\uB1E6\u0000\uB4C2\u0000\uB4C1"+ - "\uDDC8\uDF7A\uE1FB\uE9BD\u0000\u0000\uC261\uC467"+ - "\uA4EC\u0000\uA5BC\uA5BD\uA5BB\uA5BE\uA5BA\u0000"+ - "\u0000\uA6B6\u0000\uC9F6\uA6B5\uA6B7\u0000\u0000"+ - "\uC9F1\uC9F0\uC9F3\uC9F2\uC9F5\uA6B4\uC9EF\uC9F4"+ - "\u0000\u0000\u0000\u0000\u0000\uCAFD\uA7FD\uCAFE"+ - "\uCB43\uA7FC\u0000\uCB47\uCB42\uCB45\uA7F5\uA7F6"+ - "\uA7F7\uA7F8\u0000\uA840\u0000\uCB41\uA7FA\uA841"+ - "\u0000\uCB40\uCB46\u0000\uA7F9\uCB44\uA7FB\uA7F4"+ - "\uA7FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uAA57\u0000\uCCD4\uAA43\u0000\uAA4D"+ - "\uAA4E\uAA46\uAA58\uAA48\uCCDC\uAA53\uCCD7\uAA49"+ - "\uCCE6\uCCE7\uCCDF\uCCD8\uAA56\uCCE4\uAA51\uAA4F"+ - "\u0000\uCCE5\u0000\uCCE3\uCCDB\uCCD3\uCCDA\uAA4A"+ - "\u0000\uAA50\u0000\uAA44\uCCDE\uCCDD\uCCD5\u0000"+ - "\uAA52\uCCE1\uCCD6\uAA55\uCCE8\uAA45\u0000\uAA4C"+ - "\uCCD9\uCCE2\uAA54\u0000\uAA47\uAA4B\u0000\uCCE0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uCF5B\uAC5C"+ - "\uAC69\u0000\uCF56\uCF4C\uAC62\uCF4A\uAC5B\uCF45"+ - "\uAC65\uCF52\uCEFE\uCF41\u0000\u0000\u0000\u0000"+ - "\uCF44\uCEFB\uCF51\uCF61\uAC60\uCF46\uCF58\u0000"+ - "\uCEFD\uCF5F\uCF60\uCF63\uCF5A\uCF4B\uCF53\uAC66"+ - "\uAC59\uAC61\uAC6D\uAC56\uAC58\u0000\u0000\u0000"+ - "\uCF43\uAC6A\uAC63\uCF5D\uCF40\uAC6C\uAC67\uCF49"+ - "\u0000\u0000\uAC6B\uCF50\uCF48\uAC64\uCF5C\uCF54"+ - "\u0000\uAC5E\uCF62\uCF47\uAC5A\uCF59\uCF4F\uAC5F"+ - "\uCF55\uAC57\uCEFC\uAC68\uAEE3\uAC5D\uCF4E\uCF4D"+ - "\uCF42\u0000\uCF5E\u0000\uCF57\u0000\u0000\uAC55"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uD1EC\uAEEA\uD1ED\u0000\uD1E1\uAEDF"+ - "\uAEEB\u0000\uD1DA\u0000\uD1E3\uD1EB\u0000\uD1D9"+ - "\uD1F4\uAED5\u0000\u0000\u0000\uD1F3\uD1EE\u0000"+ - "\uD1EF\uAEDD\uAEE8\uD1E5\u0000\uD1E6\uD1F0\uD1E7"+ - "\u0000\uD1E2\uD1DC\uD1DD\uD1EA\uD1E4\u0000\u0000"+ - "\uAED6\uAEDA\uD1F2\uD1DE\uAEE6\uAEE2\u0000\u0000"+ - "\uAEE5\uAEEC\uAEDB\uAEE7\uD1E9\uAEE9\uAED8\u0000"+ - "\uAED7\uD1DB\u0000\uD1DF\uAEE0\uD1F1\uD1E8\uD1E0"+ - "\uAEE4\uAEE1\u0000\uAED9\uAEDC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uD5C4\u0000\uD5B4\uD5B5\uD5B9"+ - "\u0000\uD5C8\uD5C5\u0000\uD5BE\uD5BD\uB1ED\uD5C1"+ - "\uD5D0\uD5B0\u0000\uD5D1\uD5C3\uD5D5\uD5C9\uB1EC"+ - "\uD5C7\uB1E7\uB1FC\uB1F2\u0000\uB1F6\uB1F5\uD5B1"+ - "\u0000\uD5CE\uD5D4\uD5CC\uD5D3\u0000\u0000\uD5C0"+ - "\uD5B2\uD5D2\uD5C2\uB1EA\uB1F7\u0000\uD5CB\uB1F0"+ - "\u0000\u0000\u0000\uD5CA\uD5B3\uB1F8\u0000\uB1FA"+ - "\uD5CD\uB1FB\uB1E9\uD5BA\uD5CF\u0000\u0000\uB1EF"+ - "\uB1F9\uD5BC\uD5C6\uD5B7\uD5BB\uB1F4\uD5B6\uB1E8"+ - "\uB1F1\uB1EE\uD5BF\uAEDE\uD9C0\uB1EB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uB1F3\u0000\uD9C3\uD9D9"+ - "\uD9CE\uB4D6\u0000\uB4D1\uD9BD\uB4D2\uD9CD\u0000"+ - "\uD9C6\uD9D3\uB4CE\uD9AB\uD9D5\uB4C4\uD9B3\uB4C7"+ - "\uB4C6\u0000\uB4D7\u0000\uD9AD\uD9CF\uD9D0\uB4C9"+ - "\uB4C5\uD9BB\u0000\uB4D0\uD9B6\u0000\uD9D1\uB4CC"+ - "\uD9C9\uD9D6\uD9B0\uD9B5\uD9AF\u0000\uB4CB\uD9C2"+ - "\uDDDE\uD9B1\uB4CF\uD9BA\uD9D2\uB4CA\uD9B7\uD9B4"+ - "\uD9C5\uB4CD\uB4C3\uB4D9\uD9C8\uD9C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uD9AC\uB4C8\uD9D4\uD9BC"+ - "\uD9BE\u0000\uD9CB\uD9CA\uD9AA\uB4D3\uB4D5\uD9B2"+ - "\uD9B9\uD9C1\uB4D4\uD9B8\uD9C4\uD9D7\u0000\uD9CC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD9D8\u0000\u0000"+ - "\u0000\u0000\uD9AE\u0000\u0000\u0000\u0000\uDDF2"+ - "\uB7A6\u0000\uDDF0\uDDDB\uDDE0\uDDD9\u0000\uDDEC"+ - "\uDDCB\uDDD2\u0000\uDDEA\uDDF4\uDDDC\u0000\uDDCF"+ - "\uDDE2\uDDE7\uDDD3\u0000\uDDE4\uDDD0\u0000\u0000"+ - "\uDDD7\uDDD8\uB7A8\uDDEB\uDDE9\u0000\uDDCC\uDDEE"+ - "\u0000\uDDEF\uDDF1\uB7AC\uB7A4\u0000\uD5B8\uDDD4"+ - "\uDDE6\uDDD5\uB7A1\uB7B1\uDDED\uB7AF\uB7AB\uDDCA"+ - "\uB7A3\u0000\uDDCD\uB7B0\u0000\uDDDD\uDDC9\u0000"+ - "\uB7A9\uDDE1\uDDD1\uB7AA\uDDDA\uB77E\uB4D8\uDDE3"+ - "\uD9BF\uDDCE\u0000\u0000\uDDE8\uB7A5\uDDE5\uB7A2"+ - "\uDDDF\uB7AD\uDDD6\uDDF3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uB7A7\uDEC6\u0000\u0000\uB7AE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uE24A\uE248\u0000"+ - "\uE25E\uE246\u0000\uE258\uB77D\uBA5F\uE242\uE25D"+ - "\u0000\uE247\uE255\uBA64\uBA5D\u0000\uE25B\u0000"+ - "\uE240\uE25A\u0000\uBA6F\uE251\uE261\uBA6D\uE249"+ - "\uBA5E\uE24B\uE259\uBA67\uE244\uBA6B\uBA61\uE24D"+ - "\uE243\uE1FC\u0000\uE257\uBA68\uE260\uE1FD\uBA65"+ - "\u0000\uE253\u0000\uBA66\uE245\uE250\uE24C\uE24E"+ - "\u0000\uBA60\uE25F\uBA6E\uE24F\u0000\uE262\u0000"+ - "\u0000\uE1FE\uE254\uBA63\uBA6C\uBA6A\uE241\uE256"+ - "\uBA69\u0000\u0000\uBA62\uE252\u0000\u0000\u0000"+ - "\u0000\uE25C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uE5D5\u0000\uE5D1\uE5CD\uE5E1\uE5DE"+ - "\uBCCD\u0000\u0000\uE5E5\uE5D4\uBCD8\uE5DB\u0000"+ - "\u0000\uE5D0\uE5DA\uBCD5\uE5EE\u0000\uE5EB\uE5DD"+ - "\uE5CE\u0000\u0000\uE5E2\uE5E4\uBCD1\uE5D8\uE5D3"+ - "\uE5CA\uBCCE\uBCD6\u0000\uE5E7\uBCD7\uE5CB\uE5ED"+ - "\uE5E0\uE5E6\uBCD4\u0000\u0000\uE5E3\u0000\uE5EA"+ - "\u0000\uBCD9\u0000\uBCD3\uE5DC\uE5CF\uE5EF\uE5CC"+ - "\uE5E8\uBCD0\u0000\uE5D6\u0000\uE5D7\uBCCF\uBCCC"+ - "\uE5D2\uBCD2\u0000\uBCCB\u0000\uE5E9\uE5EC\uE5D9"+ - "\uE9CA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uE9C2\u0000\uE9BE\uBEF6\u0000\u0000"+ - "\uBEEB\uBEF0\uBEEC\uE9CC\uE9D7\uBEEA\uE9C4\uE9CD"+ - "\uE5DF\uE9CE\u0000\u0000\uBEF1\u0000\uE9DD\uBEF5"+ - "\uBEF8\uE9C0\u0000\uBEF4\u0000\uE9DB\uE9DC\uE9D2"+ - "\uE9D1\uE9C9\u0000\u0000\uE9D3\uE9DA\uE9D9\u0000"+ - "\uBEEF\uBEED\uE9CB\uE9C8\u0000\uE9C5\uE9D8\uBEF7"+ - "\uE9D6\uBEF3\uBEF2\u0000\uE9D0\u0000\uE9BF\uE9C1"+ - "\uE9C3\uE9D5\uE9CF\uBEEE\u0000\uE9C6\u0000\uE9D4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uE9C7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC0CF\uED45"+ - "\uC0C8\uECF5\u0000\uED41\uC0CA\uED48\u0000\uECFC"+ - "\u0000\uECF7\u0000\u0000\uED49\uECF3\uECFE\u0000"+ - "\uC0D1\uED44\uED4A\uECFD\uC0C9\uED40\uECF4\uC0D0"+ - "\u0000\u0000\uED47\uECF9\uC0CC\u0000\uECFB\uECF8"+ - "\uC0D2\uECFA\uC0CB\uC0CE\uED43\uECF6\uED46\u0000"+ - "\uED42\u0000\u0000\u0000\uC263\uEFE7\uC268\uC269"+ - "\u0000\u0000\u0000\uC262\uEFE6\u0000\uEFE3\uEFE4"+ - "\uC266\uEFDE\uEFE2\uC265\u0000\uEFDF\u0000\u0000"+ - "\u0000\u0000\uC267\uC264\u0000\uEFDD\uEFE1\uEFE5"+ - "\u0000\u0000\u0000\uF251\uF24E\uF257\u0000\uF256"+ - "\uF254\uF24F\u0000\uC372\u0000\u0000\u0000\u0000"+ - "\u0000\uF250\uC371\uC0CD\uF253\uC370\uF258\uF252"+ - "\uF24D\uEFE0\u0000\u0000\u0000\uC36F\u0000\uF24C"+ - "\uF456\u0000\uF455\uF255\uC468\u0000\uF459\uF45A"+ - "\uF454\uF458\u0000\uF453\u0000\u0000\u0000\u0000"+ - "\uF5D1\uF457\uC4E7\uC4E5\uF5CF\u0000\u0000\u0000"+ - "\uF5D2\u0000\uF5CE\uF5D0\uC4E6\u0000\u0000\u0000"+ - "\uF6E5\uF6E6\uC576\uF6E4\u0000\u0000\u0000\uF7E2"+ - "\uC5CF\uF7E0\uF7E1\uF8AC\u0000\u0000\uC656\uF8F3"+ - "\uF8F1\uF8F2\uF8F4\u0000\u0000\u0000\uF9BB\u0000"+ - "\uA4ED\uA6B8\u0000\uAA59\u0000\uCCE9\u0000\u0000"+ - "\uCF64\u0000\u0000\u0000\uD1F5\uD1F7\u0000\uD1F6"+ - "\u0000\uD1F8\uB1FD\uD5D7\uD1F9\u0000\uD5D6\uD5D8"+ - "\uD5D9\uD9DA\uB4DB\uD9DB\uD9DD\uB4DC\uB4DA\uD9DC"+ - "\u0000\uDDFA\uDDF8\uDDF7\u0000\uDDF6\uDDF5\uB7B2"+ - "\uDDF9\uBA70\uE263\uE265\uBA71\uE264\uBCDB\u0000"+ - "\uBCDA\uE5F0\u0000\u0000\uE9DF\uE9DE\uE9E0\u0000"+ - "\u0000\uBEF9\u0000\uED4B\uC0D3\u0000\uEFE8\uC26A"+ - "\uF259\uC577\uA4EE\uA5BF\uA6B9\uA842\uAA5A\uAA5B"+ - "\u0000\u0000\uAC6E\u0000\u0000\uD1FA\u0000\u0000"+ - "\u0000\u0000\uB7B3\u0000\u0000\u0000\uE6D1\uBEFA"+ - "\uC26B\uA4EF\u0000\uA6BA\u0000\u0000\uCCEB\uAA5C"+ - "\uCCEA\u0000\uCF65\uAC6F\uCF66\u0000\uAC70\u0000"+ - "\uD1FC\uAEEE\uAEED\u0000\uD5DE\uD5DC\uD5DD\uD5DB"+ - "\u0000\uD5DA\u0000\u0000\uD9DE\uD9E1\uB4DE\uD9DF"+ - "\uB4DD\uD9E0\u0000\uDDFB\u0000\u0000\uE266\uE267"+ - "\uE268\u0000\uE5F3\uE5F2\uBCDC\uE5F1\uE5F4\uE9E1"+ - "\u0000\u0000\uE9E2\uE9E3\u0000\uED4C\uC0D4\uC26C"+ - "\uF25A\u0000\uC4E8\uC95F\u0000\uAC71\uCF67\uAEEF"+ - "\u0000\u0000\uB1FE\u0000\uB4DF\uD9E2\u0000\uB7B5"+ - "\uB7B4\u0000\u0000\uE269\uE26A\uBCDD\uBCDE\uE9E5"+ - "\uE9E4\uEFE9\uF7E3\uA4F0\uC960\uA5C0\u0000\uA843"+ - "\uCB48\u0000\uAC72\uB7B6\uA4F1\u0000\uCF68\uAC73"+ - "\uCF69\u0000\uC0D5\uA4F2\u0000\u0000\uCCEC\u0000"+ - "\uCF6A\u0000\uD242\uD241\uD1FE\u0000\uD1FD\uD243"+ - "\uD240\u0000\u0000\uB240\uB241\u0000\u0000\uB4E0"+ - "\uD9E3\u0000\uD9E4\uD9E5\u0000\u0000\u0000\uDE41"+ - "\uDE42\uDE40\u0000\uDDFD\uDDFE\uB7B7\uE26B\uE5F7"+ - "\uE5F6\uE5F5\uE5F8\uE9E7\uE9E6\uBEFB\uE9E8\u0000"+ - "\uC0D6\uED4D\u0000\uEFEA\uF25B\uF6E7\u0000\uA4F3"+ - "\uA5C2\uA5C1\u0000\uAA5D\uC961\uC97E\uA6BB\u0000"+ - "\uC9F7\uCB49\uCB4A\uAA5E\u0000\uCCED\u0000\uAC74"+ - "\uCF6B\uCF6C\u0000\uAEF0\uAEF4\uD244\uAEF3\uAEF1"+ - "\uAEF2\u0000\uD5DF\uB242\uB4E3\u0000\uB4E1\uB4E2"+ - "\uD9E6\u0000\u0000\uBA72\uA4F4\u0000\uC9A1\u0000"+ - "\uA5C3\u0000\u0000\uC9A4\u0000\u0000\uA5C6\uC9A3"+ - "\uA5C5\uA5C4\uA844\uC9A2\u0000\u0000\uC9F8\u0000"+ - "\u0000\u0000\uC9FC\uC9FE\uCA40\uA6C5\uA6C6\uC9FB"+ - "\uA6C1\u0000\uC9F9\u0000\uC9FD\uA6C2\u0000\uA6BD"+ - "\u0000\uA6BE\u0000\uA6C4\uC9FA\uA6BC\uA845\uA6BF"+ - "\uA6C0\uA6C3\u0000\u0000\u0000\uCB5B\uCB59\uCB4C"+ - "\uA851\uCB53\uA84C\uCB4D\u0000\uCB55\u0000\uCB52"+ - "\uA84F\uCB51\uA856\uCB5A\uA858\u0000\uA85A\u0000"+ - "\uCB4B\u0000\uA84D\uCB5C\u0000\uA854\uA857\u0000"+ - "\uCD45\uA847\uA85E\uA855\uCB4E\uA84A\uA859\uCB56"+ - "\uA848\uA849\uCD43\uCB4F\uA850\uA85B\uCB5D\uCB50"+ - "\uA84E\u0000\uA853\uCCEE\uA85C\uCB57\uA852\u0000"+ - "\uA85D\uA846\uCB54\uA84B\uCB58\uCD44\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uAA6A\uAA7A\uCCF5\uAA71\u0000"+ - "\uCD4B\uAA62\u0000\uAA65\uCD42\u0000\uCCF3\uCCF7"+ - "\uAA6D\uAA6F\uCCFA\uAA76\uAA68\uAA66\uAA67\uAA75"+ - "\uCD47\uAA70\uCCF9\uCCFB\uAA6E\uAA73\uCCFC\uCD4A"+ - "\u0000\uAC75\uAA79\u0000\uAA63\uCD49\u0000\uCD4D"+ - "\uCCF8\uCD4F\uCD40\uAA6C\uCCF4\uAA6B\uAA7D\uAA72"+ - "\u0000\uCCF2\uCF75\uAA78\uAA7C\uCD41\uCD46\u0000"+ - "\uAA7E\uAA77\uAA69\uAA5F\u0000\uAA64\u0000\uCCF6"+ - "\uAA60\uCD4E\u0000\uCCF0\uCCEF\uCCFD\uCCF1\uAA7B"+ - "\uAEF5\uAA74\uCCFE\uAA61\u0000\uACA6\u0000\u0000"+ - "\u0000\uCD4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uCF7C\uCFA1\u0000\uCFA4\uCF77\u0000\u0000\uCFA7"+ - "\uCFAA\uCFAC\uCF74\uAC76\uAC7B\uD249\uACAD\uCFA5"+ - "\uCFAD\uCF7B\uCF73\u0000\u0000\u0000\uD264\uAC7E"+ - "\uCFA2\uCF78\uCF7A\uACA5\u0000\uCF7D\uAC7D\uCF70"+ - "\uCFA8\u0000\uCFAB\u0000\u0000\uAC7A\u0000\uACA8"+ - "\uCF6D\uACAA\uAC78\uACAE\uCFA9\uCF6F\uACAB\uD25E"+ - "\uCD48\uAC7C\uAC77\uCF76\uCF6E\uACAC\uACA4\uCFA3"+ - "\uACA9\uACA7\uCF79\uACA1\uCF71\uACA2\uACA3\uCF72"+ - "\uCFA6\uAC79\uCF7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD24C\uAEFD\uAF43\u0000\u0000\u0000\uD255\uD25B"+ - "\uD257\uD24A\uD24D\uD246\uD247\uAF4A\uAEFA\uD256"+ - "\uD25F\uAF45\uAEF6\u0000\uAF40\uD24E\uAF42\uD24F"+ - "\uD259\u0000\u0000\u0000\uAF44\uD268\uD248\uAEFC"+ - "\uAEFB\uAF48\uD245\uD266\uD25A\uD267\uD261\uD253"+ - "\uD262\u0000\uD25C\uD265\uD263\uAF49\uD254\uAEF9"+ - "\uAEF8\uAF41\uAF47\uD260\uAF46\uD251\uB243\u0000"+ - "\uD269\uD250\uD24B\uAEFE\uAF4B\uAEF7\u0000\uD258"+ - "\uD25D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uB265\uD5E1\uD5E5\u0000\uB252\uB250"+ - "\u0000\u0000\uB247\uD5E3\uD5E2\uB25B\u0000\uD5E8"+ - "\uB255\u0000\uD5FA\uD647\uB244\uD5F7\uD5F0\uB267"+ - "\uD5E0\u0000\uD5FC\u0000\uB264\uB258\uB263\uB24E"+ - "\uD5EC\uD5FE\uD5F6\uB24F\uB249\uD645\u0000\uD5FD"+ - "\uD640\uB251\uB259\uD642\uD5EA\uD5FB\uD5EF\uD644"+ - "\uB25E\uB246\uB25C\uD5F4\uD5F2\uD5F3\uB253\uD5EE"+ - "\uD5ED\uB248\uD5E7\uD646\uB24A\uD5F1\uB268\u0000"+ - "\uB262\uD5E6\uB25F\uB25D\uB266\uD5F8\uB261\uD252"+ - "\uD5F9\uB260\uD641\uB245\uD5F5\uB257\uD5E9\uB256"+ - "\u0000\uB254\uB24C\uB24B\uD9E7\uD643\u0000\u0000"+ - "\uD5EB\u0000\u0000\uD9FC\u0000\uB24D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uB541\uB25A\uB4EE\uD9F6\uB4FC\u0000\uD9EA"+ - "\uB4EB\uB4E7\uDA49\uB4ED\uB4F1\uB4EC\uB4F5\uDA4D"+ - "\uDA44\u0000\u0000\uD9F1\uB4FA\uB4F4\uD9FD\uB4E4"+ - "\uDA4A\uDA43\uB4E8\uD9F7\uB4F7\uDA55\uDA56\u0000"+ - "\uB4E5\uDA48\uB4F9\uD9FB\uD9ED\uD9EE\uB4FD\uD9F2"+ - "\uD9F9\uD9F3\u0000\uB4FB\uB544\uD9EF\uD9E8\uD9E9"+ - "\u0000\uD9EB\uB4EA\uD9F8\u0000\uB4F8\uB542\u0000"+ - "\u0000\uD9FA\uDA53\uDA4B\uB4E6\uDA51\uB4F2\u0000"+ - "\uB4F0\u0000\uDA57\uB4EF\uDA41\uD9F4\uD9FE\uB547"+ - "\uDA45\uDA42\uD9F0\uB543\uDA4F\uDA4C\uDA54\uB4E9"+ - "\uDA40\uB546\u0000\uDA47\u0000\u0000\uB4F3\uB4F6"+ - "\u0000\uDA46\uB545\uD9F5\uD5E4\u0000\u0000\uDA50"+ - "\uDA4E\uDA52\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD9EC\uB540\u0000\u0000\u0000\uDE61\uDE60\uDE46"+ - "\uB7BD\u0000\uDE5F\uDE49\uDE4A\u0000\uB7C7\uDE68"+ - "\uB7C2\uDE5E\u0000\uDE43\uB7C8\uB7BE\uDE52\uDE48"+ - "\uDE4B\uDE63\uB7B8\uDE6A\uDE62\uB7C1\uDE57\uB7CC"+ - "\u0000\u0000\uB7CB\uB7C5\u0000\u0000\uDE69\uB7B9"+ - "\uDE55\uDE4C\uDE59\uDE65\uB7CD\u0000\uB7BB\uDE54"+ - "\u0000\uDE4D\uB7C4\u0000\uB7C3\uDE50\uDE5A\uDE64"+ - "\uDE47\uDE51\uB7BC\uDE5B\uB7C9\uB7C0\uDE4E\uB7BF"+ - "\uDE45\uDE53\uDE67\uB4FE\uBAB0\uDE56\uE26C\uDE58"+ - "\uDE66\uB7C6\uDE4F\uB7BA\uB7CA\uBCF0\uDE44\u0000"+ - "\uDE5D\u0000\u0000\u0000\uDE5C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uE2AA\uBAAD\uE27D\uE2A4\uBAA2"+ - "\u0000\uE26E\uBAAF\u0000\uBA77\uE26D\uE2B0\uBAB1"+ - "\uE271\uE2A3\u0000\uE273\uE2B3\uE2AF\uBA75\uBAA1"; - - private final static String innerIndex3= - "\uE653\uBAAE\uBA7D\uE26F\u0000\uE2AE\uBAA3\uE2AB"+ - "\uE2B8\uE275\uE27E\u0000\u0000\uE2B6\uE2AC\uBA7C"+ - "\u0000\u0000\uE27C\uBA76\uBA74\uBAA8\u0000\u0000"+ - "\uE27A\uE277\uE278\u0000\uE2B2\u0000\uE2B7\uE2B5"+ - "\uBA7A\uE2B9\uBA7E\uBAA7\u0000\uE270\uE5FA\uE279"+ - "\u0000\uBA78\uBAAC\uBAA9\uBA7B\uE2A5\uE274\uBAAA"+ - "\uE2A7\uBAA4\uBAA6\uBA73\u0000\uE2A9\uE2A1\uE272"+ - "\uBAA5\uE2B1\uE2B4\uE27B\uE2A8\u0000\uBA79\uBCDF"+ - "\uE2A6\uE5F9\u0000\uE2AD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uE276\uE644"+ - "\uE64E\uBCE2\uE64D\uE659\uBCE4\uE64B\u0000\uE64F"+ - "\uBCEF\u0000\uE646\uBCE7\u0000\uE652\uE9F0\uBCF3"+ - "\uBCF2\uE654\uE643\uE65E\uBCED\u0000\uBCE3\uE657"+ - "\u0000\uE65B\uE660\uE655\uE649\uBCE6\uBCE9\uBCF1"+ - "\uBCEC\u0000\uE64C\uE2A2\u0000\u0000\uE648\uE65F"+ - "\uBCE8\u0000\uBCEB\uE661\uBCE0\uE656\uE5FB\uE65C"+ - "\uC0DF\u0000\uE64A\u0000\uBCE1\uE645\uBCE5\uE5FC"+ - "\uBAAB\uE641\u0000\uE65A\uE642\uE640\uBCEA\u0000"+ - "\uE658\u0000\uE5FE\uE651\uE650\uE65D\uE647\uBCEE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uE9F3\u0000"+ - "\uBF49\uBEFE\uEA40\uE9EB\uBF41\uE9F7\uBF48\uBF43"+ - "\uE9F5\uED4F\uE9FB\uEA42\uE9FA\uE9E9\uE9F8\uEA44"+ - "\uEA46\uBEFD\uEA45\uBF44\uBF4A\u0000\uBF47\u0000"+ - "\uE9FE\uBF46\uE9F9\u0000\uE9ED\uE9F2\u0000\uE9FD"+ - "\uBF45\uBF42\uBEFC\uBF40\uE9F1\u0000\uE5FD\uE9EC"+ - "\uE9EF\uEA41\uE9F4\uE9EA\uED4E\uEA43\uE9EE\uE9FC"+ - "\u0000\u0000\u0000\u0000\uED51\uC0E3\u0000\u0000"+ - "\uC0D7\u0000\u0000\uC0DB\uED53\uED59\uED57\uC0D9"+ - "\uC0DA\uC0E1\uED5A\uED52\uC0DC\u0000\uED56\uED55"+ - "\uED5B\uC0E2\u0000\uC0DD\uC0E0\uED54\uC0E4\uC0DE"+ - "\uC0E5\uC0D8\uED58\u0000\uED50\u0000\u0000\uEFF7"+ - "\u0000\u0000\uC271\uEFF4\uEFF6\u0000\uC26F\uEFF2"+ - "\uEFF3\uEFEE\u0000\u0000\uE9F6\uEFEF\uC270\uEFEB"+ - "\u0000\uC26D\uEFF8\uC26E\uEFEC\uEFED\uEFF1\uC273"+ - "\u0000\uC272\u0000\u0000\uEFF0\uC378\uF25F\uF265"+ - "\uC379\uF25C\uC376\uC373\uF267\uC377\u0000\uC374"+ - "\uF25E\uF261\uF262\uF263\uF266\u0000\uEFF5\uF25D"+ - "\uC375\uF264\uF268\uF260\u0000\u0000\u0000\uF45D"+ - "\uC46A\uF460\uC46B\uF468\uF45F\uF45C\u0000\uF45E"+ - "\uF462\uF465\uF464\uF467\uF45B\u0000\uC469\uF463"+ - "\uF466\uF469\uF461\uF5D3\uF5D4\uF5D8\uF5D9\u0000"+ - "\uF5D6\uF5D7\uF5D5\u0000\uC4E9\u0000\u0000\u0000"+ - "\u0000\uC578\uF6EB\u0000\u0000\uF6E8\uF6E9\uF6EA"+ - "\uC579\u0000\uF7E5\uF7E4\u0000\uF8AF\uC5F4\uF8AD"+ - "\uF8B0\uF8AE\uF8F5\uC657\uC665\uF9A3\uF96C\u0000"+ - "\uF9A2\uF9D0\uF9D1\uA4F5\u0000\u0000\u0000\u0000"+ - "\uA6C7\uCA41\u0000\u0000\uCB5E\u0000\uA85F\u0000"+ - "\uA862\u0000\uCB5F\u0000\uA860\uA861\u0000\u0000"+ - "\u0000\u0000\uCD58\uCD5A\uCD55\uCD52\uCD54\u0000"+ - "\u0000\u0000\uAAA4\u0000\u0000\u0000\uAAA2\u0000"+ - "\u0000\uCD56\uAAA3\uCD53\uCD50\uAAA1\uCD57\u0000"+ - "\uCD51\uAAA5\uCD59\u0000\u0000\u0000\u0000\uCFAF"+ - "\u0000\uCFB3\u0000\u0000\uACB7\u0000\u0000\u0000"+ - "\u0000\uCFB6\u0000\uACAF\uACB2\uACB4\uACB6\uACB3"+ - "\uCFB2\uCFB1\u0000\uACB1\uCFB4\uCFB5\u0000\uCFAE"+ - "\uACB5\u0000\uACB0\u0000\u0000\u0000\uCFB0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD277\uD278\uD279"+ - "\uAF50\u0000\uAF4C\uD26E\u0000\uD276\uD27B\uAF51"+ - "\u0000\uD26C\uD272\uD26B\uD275\u0000\u0000\uD271"+ - "\uAF4D\uAF4F\uD27A\u0000\uD26A\uD26D\uD273\u0000"+ - "\uD274\uD27C\uD270\u0000\uAF4E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uB26D"+ - "\uD64E\u0000\u0000\uD650\uD64C\u0000\uD658\uD64A"+ - "\uD657\uB269\uD648\uDA5B\uD652\uB26C\u0000\uD653"+ - "\uD656\u0000\uD65A\u0000\uD64F\u0000\uD654\u0000"+ - "\u0000\uB26A\uB26B\uD659\uD64D\uD649\uD65B\u0000"+ - "\uD651\u0000\u0000\uD655\u0000\u0000\u0000\uD64B"+ - "\u0000\uB548\uB549\uDA65\uB54F\u0000\uDA59\uDA62"+ - "\uDA58\uB54C\uDA60\uDA5E\u0000\uDA5F\uB54A\u0000"+ - "\uDA63\u0000\u0000\u0000\u0000\u0000\uDA5C\uDA5A"+ - "\uB54B\uDA5D\uDA61\u0000\u0000\u0000\uB54D\u0000"+ - "\u0000\u0000\uDA64\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uDE70\uDE77\uDE79\uDEA1\u0000\uB7DA\uDE6B"+ - "\u0000\uB7D2\u0000\uDE7A\uB7D7\uDEA2\uB7CE\u0000"+ - "\uDE7D\u0000\uDE6D\uDE7E\uDE6C\u0000\uB7DC\u0000"+ - "\uDE78\uB7CF\uDEA3\u0000\uB7D4\uDE71\uB7D9\uDE7C"+ - "\uDE6F\uDE76\uDE72\uDE6E\uB7D1\uB7D8\uB7D6\uB7D3"+ - "\uB7DB\uB7D0\uDE75\u0000\uB7D5\u0000\uB54E\u0000"+ - "\uDE7B\u0000\uDE73\u0000\u0000\u0000\u0000\u0000"+ - "\uDE74\u0000\u0000\uE2C1\u0000\uBAB4\u0000\u0000"+ - "\uE2BD\uE2C3\uE2BF\u0000\uBAB6\uE2BE\uE2C2\uE2BA"+ - "\u0000\uE2BC\uBAB5\u0000\u0000\u0000\u0000\uE2C0"+ - "\uE2BB\u0000\uBAB7\u0000\uBAB2\u0000\u0000\uE2C4"+ - "\u0000\uBAB3\uE667\uE664\uE670\uE66A\uE66C\uBCF4"+ - "\uE666\uE66E\u0000\u0000\uE66D\uE66B\u0000\uE671"+ - "\uBCF7\uE668\uE66F\u0000\uBCF5\u0000\u0000\uE663"+ - "\uE665\uBCF6\uE662\uE672\u0000\uE669\u0000\u0000"+ - "\uEA4A\uBF51\u0000\u0000\uEA55\uEA53\uBF4B\uEA49"+ - "\uEA4C\uEA4D\uEA48\uBF55\uBF56\uEA47\uEA56\uEA51"+ - "\uBF4F\uBF4C\uEA50\uEA4E\u0000\u0000\uBF52\uEA52"+ - "\uBF4D\u0000\uBF4E\u0000\uEA4F\uBF50\uEA4B\u0000"+ - "\uEA54\uBF53\uEA57\uEA58\uBF54\u0000\u0000\uC0E7"+ - "\uC0EE\uED5C\uED62\u0000\uED60\uC0EA\uC0E9\uC0E6"+ - "\uED5E\u0000\u0000\u0000\uC0EC\uC0EB\uC0E8\u0000"+ - "\uED61\uED5D\uED5F\u0000\uC0ED\u0000\u0000\u0000"+ - "\uC277\uEFFB\u0000\uC274\uC275\uEFFD\uC276\uEFFA"+ - "\u0000\uEFF9\uF26C\uEFFC\u0000\uF26D\uC37A\uF26B"+ - "\u0000\u0000\uF26A\u0000\uF269\uC37B\u0000\u0000"+ - "\uC46C\u0000\u0000\uF46A\uF46B\u0000\u0000\u0000"+ - "\u0000\uF5DC\uF5DB\uC4EA\u0000\uF5DA\uF6EC\uF6ED"+ - "\u0000\u0000\uF7E6\uF8B1\u0000\u0000\uF8F6\uF9BC"+ - "\uC679\uF9C6\uA4F6\u0000\uAAA6\uAAA7\u0000\u0000"+ - "\uACB8\u0000\u0000\u0000\u0000\uC0EF\uA4F7\u0000"+ - "\uAAA8\uAF52\uB7DD\uA4F8\u0000\uB26E\uBAB8\uC962"+ - "\u0000\uCFB7\uD27D\u0000\uE2C5\u0000\uC0F0\uA4F9"+ - "\uAAA9\uCFB8\uCFB9\uDA66\uB550\u0000\u0000\uDEA4"+ - "\u0000\u0000\uB7DE\uE2C6\u0000\u0000\uBCF8\u0000"+ - "\uC37C\uA4FA\uDA67\uA4FB\u0000\uA6C9\uCA42\uA6C8"+ - "\uA865\uA864\uA863\uCB60\u0000\u0000\u0000\uAAAA"+ - "\u0000\uAAAB\uCD5B\u0000\uCFBA\u0000\uCFBD\uACBA"+ - "\uCFBB\u0000\uACB9\uCFBC\uACBB\u0000\uD2A2\uD2A1"+ - "\uD27E\uAF53\u0000\uD65D\uD65E\uB26F\uD65C\uD65F"+ - "\uB552\uB270\u0000\u0000\uB551\uDA6B\uDA6A\u0000"+ - "\uDA68\uDA69\u0000\uDA6C\uDEA6\uDEA5\uDEA9\u0000"+ - "\uDEA8\uDEA7\uBAB9\uE2C9\u0000\uE2C8\uBABA\uE2C7"+ - "\uE673\u0000\uE674\uBCF9\u0000\uEA59\uEA5A\u0000"+ - "\u0000\uF272\uC37D\uF271\uF270\uF26E\uF26F\uC4EB"+ - "\uF46C\uF6EE\uF8F7\u0000\uA4FC\u0000\uC9A5\uA5C7"+ - "\uC9A6\u0000\u0000\u0000\uCA43\uCA44\u0000\u0000"+ - "\u0000\u0000\uCB66\u0000\u0000\uCB62\u0000\uCB61"+ - "\uAAAC\uCB65\uA867\uCB63\uA866\uCB67\uCB64\u0000"+ - "\u0000\uCD5F\uCFBE\uCD5D\uCD64\u0000\uAAAD\u0000"+ - "\uAAB0\uCD65\uCD61\u0000\uCD62\u0000\uCD5C\uAAAF"+ - "\uCD5E\uAAAE\uCD63\u0000\uCD60\u0000\u0000\uCFC2"+ - "\uACBD\uACBE\u0000\uCFC5\uCFBF\u0000\uCFC4\u0000"+ - "\uCFC0\uACBC\uCFC3\uCFC1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uD2A8\uD2A5\u0000\uD2A7\uAF58"+ - "\uAF57\uAF55\uD2A4\uD2A9\uAF54\uAF56\uD2A6\uD667"+ - "\uD2A3\uD2AA\u0000\u0000\u0000\u0000\u0000\uD662"+ - "\uD666\u0000\uD665\uDA6E\uDA79\u0000\u0000\uD668"+ - "\u0000\uD663\uDA6D\uB274\u0000\u0000\uB273\uD661"+ - "\uD664\uB275\u0000\uB272\uB271\uD660\uD669\u0000"+ - "\u0000\u0000\uDA70\uDA77\u0000\uB554\uDA76\uDA73"+ - "\u0000\uB556\u0000\u0000\u0000\uDA75\u0000\u0000"+ - "\uDA6F\uDA71\uDA74\uDA72\uB555\uDA78\uB553\uB7DF"+ - "\u0000\u0000\uDEAD\uDEAC\uDEAA\u0000\uB7E2\uB7E1"+ - "\uDEAE\u0000\uDEAB\uE2CA\uBABB\uB7E0\u0000\u0000"+ - "\u0000\uDEB0\uDEAF\u0000\uE2CD\uE2CB\uBCFA\u0000"+ - "\uBABC\uE2CC\uE676\u0000\u0000\u0000\u0000\uBCFB"+ - "\uE675\uE67E\uE67D\uE67B\u0000\uE67A\uE677\uE678"+ - "\uE679\uE67C\uE6A1\u0000\u0000\uEA5F\uEA5C\uEA5D"+ - "\uBF57\uEA5B\uEA61\uEA60\uEA5E\u0000\uED64\uED65"+ - "\uC0F1\u0000\uC0F2\uED63\u0000\uC279\uEFFE\uC278"+ - "\uC37E\u0000\uC3A1\uC46D\uF46E\uF46D\uF5DD\uF6EF"+ - "\uC57A\uF7E8\uF7E7\uF7E9\uA5C8\uCFC6\uAF59\uB276"+ - "\uD66A\uA5C9\uC9A7\uA4FD\u0000\u0000\uCA45\u0000"+ - "\u0000\u0000\uCB6C\uCB6A\uCB6B\uCB68\uA868\uCB69"+ - "\u0000\u0000\u0000\u0000\u0000\uCD6D\u0000\uAAB3"+ - "\uCD6B\uCD67\uCD6A\u0000\uCD66\uAAB5\uCD69\u0000"+ - "\uAAB2\uAAB1\u0000\uAAB4\uCD6C\uCD68\u0000\u0000"+ - "\u0000\u0000\uACC2\uACC5\uCFCE\uCFCD\uCFCC\uACBF"+ - "\uCFD5\uCFCB\u0000\uACC1\uD2AF\u0000\uCFD2\uCFD0"+ - "\uACC4\u0000\uCFC8\uCFD3\u0000\uCFCA\uCFD4\uCFD1"+ - "\uCFC9\u0000\uACC0\uCFD6\uCFC7\uACC3\u0000\u0000"+ - "\u0000\u0000\uD2B4\uD2AB\uD2B6\u0000\uD2AE\uD2B9"+ - "\uD2BA\uD2AC\uD2B8\uD2B5\uD2B3\uD2B7\uAF5F\u0000"+ - "\uAF5D\u0000\u0000\uD2B1\u0000\uD2AD\u0000\uD2B0"+ - "\uD2BB\uD2B2\uAF5E\uCFCF\u0000\uAF5A\uAF5C\u0000"+ - "\u0000\u0000\u0000\u0000\uD678\uD66D\uD66B\u0000"+ - "\uD66C\u0000\uD673\u0000\uD674\uD670\uB27B\uD675"+ - "\uD672\uD66F\u0000\uB279\uD66E\uB277\uB27A\uD671"+ - "\uD679\uAF5B\uB278\uD677\uD676\uB27C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uDA7E\u0000"+ - "\u0000\u0000\uDAA1\uB560\u0000\uDAA7\u0000\u0000"+ - "\uDAA9\uDAA2\uB55A\uDAA6\uDAA5\uB55B\uB561\u0000"+ - "\uB562\uDAA8\uB558\uDA7D\uDA7B\uDAA3\uDA7A\uB55F"+ - "\uDA7C\uDAA4\uDAAA\uB559\uB55E\uB55C\uB55D\u0000"+ - "\u0000\u0000\uB557\u0000\u0000\u0000\u0000\uB7E9"+ - "\uDEB7\uB7E8\uDEBB\u0000\uDEB1\u0000\uDEBC\u0000"+ - "\u0000\u0000\uDEB2\uDEB3\u0000\uDEBD\uDEBA\uDEB8"+ - "\uDEB9\uDEB5\uDEB4\u0000\uDEBE\uB7E5\u0000\uDEB6"+ - "\u0000\uB7EA\uB7E4\uB7EB\uB7EC\u0000\uB7E7\uB7E6"+ - "\u0000\u0000\uE2CE\uBABE\uBABD\u0000\u0000\uE2D3"+ - "\u0000\uBCFC\uBABF\u0000\u0000\uBAC1\uE2D4\uB7E3"+ - "\uBAC0\uE2D0\uE2D2\uE2CF\u0000\uE2D1\u0000\u0000"+ - "\u0000\uE6AB\u0000\u0000\uE6AA\uE6A7\uBD40\uEA62"+ - "\uBD41\uE6A6\u0000\uBCFE\u0000\uE6A8\uE6A5\uE6A2"+ - "\uE6A9\uE6A3\uE6A4\uBCFD\u0000\u0000\u0000\u0000"+ - "\uED69\u0000\uEA66\u0000\uEA65\uEA67\u0000\uED66"+ - "\uBF5A\u0000\uEA63\u0000\uBF58\u0000\uBF5C\uBF5B"+ - "\uEA64\uEA68\u0000\uBF59\u0000\uED6D\uC0F5\uC27A"+ - "\uC0F6\uC0F3\uED6A\uED68\u0000\uED6B\u0000\uED6E"+ - "\uC0F4\uED6C\uED67\u0000\u0000\uF042\uF045\uF275"+ - "\uF040\u0000\uF46F\uF046\u0000\uC3A2\uF044\uC27B"+ - "\uF041\uF043\uF047\uF276\u0000\uF274\u0000\u0000"+ - "\u0000\u0000\uC3A3\uF273\u0000\u0000\u0000\uC46E"+ - "\u0000\u0000\u0000\u0000\uC4ED\uF6F1\uC4EC\uF6F3"+ - "\uF6F0\uF6F2\uC5D0\uF8B2\uA5CA\uCD6E\uD2BC\uD2BD"+ - "\uB27D\uDEBF\uBF5D\uC3A4\uC57B\uF8B3\uA5CB\u0000"+ - "\uCD6F\uA260\u0000\u0000\uCFD7\u0000\uCFD8\u0000"+ - "\u0000\u0000\u0000\u0000\uD2BE\uD2BF\uB27E\uB2A1"+ - "\u0000\u0000\u0000\uDAAB\u0000\uDEC2\uDEC1\uDEC0"+ - "\uE2D5\u0000\uE2D6\uE2D7\uBAC2\u0000\u0000\uE6AD"+ - "\uE6AC\u0000\u0000\uEA69\uBF5E\uBF5F\u0000\uED72"+ - "\uED6F\uED70\uED71\uF049\uF048\uC27C\uF277\uF5DE"+ - "\uA5CC\u0000\uACC6\u0000\uB2A2\uDEC3\u0000\uA5CD"+ - "\u0000\uD2C0\uB2A3\u0000\u0000\uB563\uB564\u0000"+ - "\uA5CE\uA5CF\uCA46\uA86A\uA869\uACC7\uCFD9\uDAAC"+ - "\uA5D0\uA5D1\uA5D2\uA5D3\u0000\u0000\u0000\uA86B"+ - "\uA86C\uCB6E\uCB6D\u0000\u0000\uAAB6\uCD72\uCD70"+ - "\uCD71\u0000\u0000\u0000\u0000\u0000\u0000\uCFDA"+ - "\uCFDB\u0000\u0000\uACCB\uACC9\u0000\uACCA\uACC8"+ - "\u0000\u0000\u0000\u0000\uAF60\u0000\u0000\u0000"+ - "\u0000\uAF64\uAF63\uD2C1\uAF62\uAF61\u0000\uD2C2"+ - "\u0000\u0000\uB2A6\uD67B\uD67A\uB2A4\uB2A5\u0000"+ - "\u0000\u0000\uB566\uB565\uDAAE\u0000\u0000\uDAAD"+ - "\uB2A7\u0000\u0000\u0000\u0000\u0000\uB7ED\uDEC5"+ - "\uB7EE\uDEC4\u0000\u0000\u0000\uE2D8\uE6AE\uBD42"+ - "\uEA6A\u0000\u0000\u0000\uED73\u0000\uC3A6\uC3A5"+ - "\u0000\u0000\uC57C\uA5D4\uCD73\u0000\u0000\uB2A8"+ - "\uE2D9\uBAC3\u0000\u0000\uCB6F\uCB70\u0000\u0000"+ - "\uCD74\uAAB8\uAAB9\u0000\u0000\uAAB7\u0000\u0000"+ - "\u0000\u0000\uACCF\uACD0\uACCD\uACCE\u0000\uCFDC"+ - "\u0000\u0000\uCFDD\uACCC\u0000\u0000\u0000\u0000"+ - "\uD2C3\u0000\uAF68\uAF69\u0000\uB2AB\uD2C9\u0000"+ - "\uAF6E\uAF6C\uD2CA\uD2C5\uAF6B\uAF6A\uAF65\uD2C8"+ - "\uD2C7\uD2C4\uAF6D\u0000\uD2C6\uAF66\u0000\uAF67"+ - "\u0000\u0000\uB2AC\uD6A1\uD6A2\uB2AD\uD67C\uD67E"+ - "\uD6A4\uD6A3\uD67D\u0000\uB2A9\uB2AA\u0000\uDAB6"+ - "\uB56B\uB56A\uDAB0\uB568\u0000\uDAB3\uB56C\uDAB4"+ - "\uB56D\uDAB1\uB567\uB569\uDAB5\u0000\uDAB2\uDAAF"+ - "\u0000\u0000\u0000\u0000\u0000\uDED2\u0000\uDEC7"+ - "\uB7F0\uB7F3\uB7F2\uB7F7\uB7F6\uDED3\uDED1\uDECA"+ - "\uDECE\uDECD\uB7F4\uDED0\uDECC\uDED4\uDECB\uB7F5"+ - "\uB7EF\uB7F1\u0000\uDEC9\u0000\u0000\u0000\u0000"+ - "\uE2DB\uBAC7\uE2DF\uBAC6\uE2DC\uBAC5\u0000\uDEC8"+ - "\uDECF\uE2DE\u0000\uBAC8\uE2E0\uE2DD\uE2DA\u0000"+ - "\u0000\uE6B1\uE6B5\uE6B7\uE6B3\uE6B2\uE6B0\uBD45"+ - "\uBD43\uBD48\uBD49\uE6B4\uBD46\uE6AF\uBD47\uBAC4"+ - "\uE6B6\uBD44\u0000\u0000\u0000\uEA6C\u0000\uEA6B"+ - "\uEA73\uEA6D\uEA72\uEA6F\uBF60\uEA71\u0000\u0000"+ - "\uBF61\u0000\uBF62\u0000\uEA70\uEA6E\u0000\u0000"+ - "\u0000\u0000\uC0F8\uED74\u0000\u0000\uC0F7\uED77"+ - "\uED75\uED76\u0000\u0000\uC0F9\u0000\u0000\u0000"+ - "\uF04D\u0000\uC2A1\uF04E\u0000\u0000\uC27D\uF04F"+ - "\uC27E\uF04C\uF050\u0000\uF04A\u0000\u0000\uC3A7"+ - "\uF278\uC3A8\uC46F\u0000\uF04B\uC470\u0000\u0000"+ - "\u0000\uC4EE\uF5DF\u0000\uC57E\uF6F4\uC57D\u0000"+ - "\uF7EA\uC5F5\uC5F6\u0000\u0000\uF9CC\u0000\u0000"+ - "\uACD1\uCFDE\u0000\uB56E\uB56F\uA5D5\uA6CA\uCA47"+ - "\u0000\uCB71\uA86D\u0000\uAABA\u0000\uACD2\uACD3"+ - "\uACD4\uD6A6\uD2CB\uAF6F\u0000\u0000\uB2AE\uD6A5"+ - "\u0000\u0000\uDAB8\uB571\u0000\uDAB7\uB570\u0000"+ - "\u0000\uDED5\uBD4A\uE6BB\uE6B8\uE6B9\uE6BA\u0000"+ - "\u0000\u0000\u0000\u0000\uED78\u0000\uF051\u0000"+ - "\u0000\u0000\uF471\uF470\u0000\uF6F5\uA5D6\uCD75"+ - "\uAF70\u0000\u0000\u0000\uB572\uDED6\u0000\u0000"+ - "\uE2E1\u0000\uBD4B\uEA74\u0000\uF052\uF472\uA5D7"+ - "\u0000\u0000\uAABB\uACD7\uCFDF\uACD8\uACD6\u0000"+ - "\uACD5\uD2CC\uAF71\u0000\u0000\uAF72\uAF73\u0000"+ - "\u0000\u0000\uB2B0\uD6A7\uB2AF\u0000\u0000\u0000"+ - "\u0000\u0000\uDAB9\uB2B1\uB573\uDED7\uB7F8\uB7F9"+ - "\u0000\uBAC9\u0000\uBACA\uBD4C\uBF64\uEA75\uBF63"+ - "\u0000\uED79\uC0FA\u0000\uF053\uF473\uA5D8\uA86E"+ - "\uCD78\uCD77\uAABC\uCD76\uAABD\uCD79\u0000\uCFE5"+ - "\uACDB\uACDA\uCFE7\uCFE6\uACDF\u0000\uACDE\u0000"+ - "\u0000\uACD9\u0000\uCFE1\uCFE2\uCFE3\u0000\uACE0"+ - "\uCFE0\uACDC\uCFE4\uACDD\u0000\u0000\u0000\u0000"+ - "\uD2CF\uD2D3\uD2D1\uD2D0\u0000\uD2D4\u0000\u0000"+ - "\u0000\uD2D5\uD2D6\uD2CE\u0000\uD2CD\u0000\uAF75"+ - "\uAF76\u0000\uD2D7\uD2D2\u0000\uD6B0\u0000\uD2D8"+ - "\uAF77\uAF74\u0000\u0000\u0000\uD6AA\u0000\uD6A9"+ - "\u0000\uD6AB\uD6AC\uD6AE\uD6AD\uD6B2\uB2B5\uB2B2"+ - "\uB2B6\uD6A8\uB2B7\uD6B1\uB2B4\uD6AF\uB2B3\u0000"+ - "\u0000\u0000\u0000\u0000\uDABC\uDABE\uDABA\uDABB"+ - "\u0000\u0000\uDABF\uDAC1\uDAC2\uDABD\uDAC0\uB574"+ - "\u0000\u0000\uDEDB\u0000\uDEE0\uDED8\uDEDC\u0000"+ - "\u0000\uDEE1\uDEDD\uB7FA\uB843\u0000\uB7FD\uDED9"+ - "\uDEDA\uBACE\uB846\uB7FE\u0000\uB844\uB7FC\uDEDF"+ - "\uB845\uDEDE\uB841\uB7FB\uB842\uDEE2\uE2E6\uE2E8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uB840\u0000\u0000\uE2E3\uBACC\uE2E9\uBACD"+ - "\uE2E7\uE2E2\uE2E5\uE2EA\uBACB\uE2E4\u0000\uBD4E"+ - "\uE6BF\uE6BE\u0000\uBD51\uBD4F\uE6BC\uBD4D\uE6BD"+ - "\u0000\uBD50\u0000\u0000\u0000\uEA7D\u0000\uEAA1"+ - "\u0000\uEA7E\uEA76\uEA7A\uEA79\uEA77\uBF66\uBF67"+ - "\uBF65\uEA78\uEA7B\uEA7C\u0000\uBF68\u0000\uC140"+ - "\uEDA3\u0000\uC0FC\uED7B\uC0FE\uC141\u0000\u0000"+ - "\uC0FD\uEDA2\uED7C\uC0FB\uEDA1\uED7A\uED7E\uED7D"+ - "\u0000\u0000\uF055\uC2A4\uC2A5\uC2A2\u0000\uC2A3"+ - "\u0000\u0000\uF054\u0000\uF27B\u0000\u0000\uC3A9"+ - "\u0000\uF279\uF27A\u0000\uF474\uF477\uF475\uF476"+ - "\uF5E0\u0000\u0000\uC4EF\uF7EB\uF8B4\u0000\uC5F7"+ - "\uF8F8\uF8F9\uC666\uA5D9\uACE1\u0000\uDAC3\u0000"+ - "\uDEE3\u0000\uA5DA\uA86F\u0000\uAABE\u0000\uCFE8"+ - "\uCFE9\uAF78\u0000\u0000\uDAC4\uB575\uB847\uC142"+ - "\uEDA4\uF27C\uF478\uA5DB\u0000\u0000\u0000\uCDA1"+ - "\uCD7A\uCD7C\uCD7E\uCD7D\uCD7B\uAABF\u0000\u0000"+ - "\u0000\u0000\uACE2\uCFF2\u0000\uCFED\uCFEA\u0000"+ - "\u0000\uCFF1\u0000\u0000\uACE4\uACE5\uCFF0\uCFEF"+ - "\uCFEE\uCFEB\uCFEC\uCFF3\uACE3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uAF7C\u0000\uAFA4"+ - "\uAFA3\uD2E1\uD2DB\uD2D9\u0000\uAFA1\uD6B9\uAF7A"+ - "\uD2DE\uD2E2\uD2E4\uD2E0\uD2DA\uAFA2\uD2DF\uD2DD"+ - "\uAF79\uD2E5\uAFA5\uD2E3\uAF7D\uD2DC\u0000\uAF7E"+ - "\uAF7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uB2B9\u0000\uD6BA\u0000\u0000"+ - "\uD6B3\uD6B5\uD6B7\u0000\uD6B8\uD6B6\uB2BA\u0000"+ - "\uD6BB\u0000\uD6B4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uDAC8\uB576\uDAD0\u0000"+ - "\uDAC5\u0000\uDAD1\u0000\uDAC6\uDAC7\u0000\u0000"+ - "\uDACF\uDACE\uDACB\uB2B8\uB577\uDAC9\uDACC\uB578"+ - "\uDACD\uDACA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uDEEE\u0000\uDEF2\uB84E\u0000\uE2F0\uB851"+ - "\uDEF0\u0000\u0000\uDEED\uDEE8\uDEEA\uDEEB\uDEE4"+ - "\u0000\uB84D\u0000\u0000\uB84C\u0000\uB848\uDEE7"+ - "\u0000\uB84F\u0000\uB850\uDEE6\uDEE9\uDEF1\uB84A"+ - "\uB84B\uDEEF\uDEE5\u0000\u0000\u0000\uE2F2\uBAD0"+ - "\uE2F4\uDEEC\uE2F6\uBAD4\uE2F7\uE2F3\u0000\uBAD1"+ - "\uE2EF\uBAD3\uE2EC\uE2F1\uE2F5\uE2EE\u0000\u0000"+ - "\uB849\u0000\uE2EB\uBAD2\uE2ED\u0000\u0000\u0000"+ - "\u0000\u0000\uBD54\uE6C1\uBD58\u0000\uBD56\u0000"+ - "\u0000\uBACF\u0000\uE6C8\uE6C9\uBD53\u0000\u0000"+ - "\uE6C7\uE6CA\uBD55\uBD52\uE6C3\uE6C0\uE6C5\uE6C2"+ - "\uBD59\uE6C4\u0000\u0000\uE6C6\uBD57\u0000\u0000"+ - "\u0000\u0000\uBF6A\uEAA8\u0000\uEAA2\uEAA6\uEAAC"+ - "\uEAAD\uEAA9\uEAAA\uEAA7\u0000\uEAA4\u0000\uBF6C"+ - "\uBF69\uEAA3\uEAA5\u0000\uBF6B\uEAAB\u0000\uC146"+ - "\u0000\u0000\uEDAA\uEDA5\uC145\u0000\u0000\uC143"+ - "\u0000\uEDAC\uC144\uEDA8\uEDA9\uEDA6\uEDAD\uF056"+ - "\u0000\uC147\uEDA7\u0000\uEDAE\uEDAB\u0000\u0000"+ - "\u0000\uF05A\u0000\u0000\uF057\u0000\uC2A6\u0000"+ - "\uF05B\uF05D\uF05C\uF058\uF059\u0000\u0000\uF2A3"+ - "\u0000\uC3AA\u0000\uF27E\uF2A2\uF27D\uF2A4\u0000"+ - "\u0000\uF2A1\u0000\uF47A\uF47D\uF479\uC471\uF47B"+ - "\uF47C\uF47E\uC472\uC474\uC473\uF5E1\u0000\uF5E3"+ - "\u0000\uF5E2\u0000\u0000\u0000\uF6F6\u0000\u0000"+ - "\uF8B5\uF8FA\uA5DC\u0000\u0000\uCB72\uAAC0\uCDA3"+ - "\uAAC1\uAAC2\uCDA2\u0000\uCFF8\uCFF7\uACE6\uACE9"+ - "\uACE8\uACE7\uCFF4\uCFF6\uCFF5\u0000\u0000\uD2E8"+ - "\uAFA7\uD2EC\uD2EB\uD2EA\uD2E6\uAFA6\uAFAA\uAFAD"+ - "\u0000\u0000\uAFAE\uD2E7\uD2E9\uAFAC\uAFAB\uAFA9"+ - "\uAFA8\uD6C2\u0000\uD6C0\uD6BC\uB2BB\u0000\uD6BD"+ - "\uB2BC\uD6BE\uD6BF\uD6C1\u0000\uB2BD\u0000\u0000"+ - "\uDAD5\u0000\uDAD4\uDAD3\uDAD2\u0000\u0000\u0000"+ - "\u0000\uDEF6\uB852\u0000\uDEF3\uDEF5\u0000\uB853"+ - "\u0000\uB854\uDEF4\u0000\u0000\u0000\u0000\u0000"+ - "\uE341\u0000\uE2F9\uE2FA\u0000\uBAD7\uBAD5\uBAD6"+ - "\uE343\u0000\uE342\uE2FE\uE2FD\uE2FC\uE2FB\uE340"+ - "\uE2F8\u0000\uE6CB\uE6D0\uE6CE\u0000\u0000\u0000"+ - "\uE6CD\uE6CC\uE6CF\u0000\uEAAE\u0000\uBF6D\uC148"+ - "\uEDB0\u0000\uC149\uEDAF\uF05F\uF05E\uC2A7\u0000"+ - "\uF2A5\uC3AB\uF4A1\uC5A1\uF6F7\u0000\uF8B7\uF8B6"+ - "\uC9A8\uACEA\uACEB\uD6C3\u0000\uB856\uA5DD\uA872"+ - "\uA871\uA870\u0000\u0000\u0000\uCDA4\u0000\u0000"+ - "\uAAC4\uAAC3\u0000\uACEE\u0000\uCFFA\uCFFD\uCFFB"+ - "\u0000\uACEC\uACED\u0000\u0000\uCFF9\uCFFC\u0000"+ - "\uAFB5\u0000\u0000\u0000\uD2F3\uD2F5\uD2F4\uAFB2"+ - "\uD2EF\u0000\u0000\uAFB0\uAFAF\u0000\uAFB3\uAFB1"+ - "\u0000\uAFB4\uD2F2\uD2ED\uD2EE\uD2F1\uD2F0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uD6C6\uD6C7"+ - "\uD6C5\u0000\uD6C4\uB2BE\u0000\u0000\u0000\u0000"+ - "\uB57D\u0000\uDAD6\uDAD8\uDADA\uB57C\u0000\u0000"+ - "\uB57A\u0000\uDAD7\uB57B\uDAD9\uB579\u0000\u0000"+ - "\uDF41\uDEF7\uDEFA\uDEFE\uB85A\uDEFC\u0000\uDEFB"+ - "\uDEF8\uDEF9\uB858\uDF40\uB857\u0000\uB85C\uB85B"+ - "\uB859\u0000\uDEFD\u0000\u0000\u0000\uE349\u0000"+ - "\uE348\u0000\u0000\uE344\u0000\u0000\uBAD8\uE347"+ - "\uE346\uBAD9\u0000\u0000\u0000\u0000\u0000\uBD5E"+ - "\u0000\uE6D2\u0000\uBD5F\uBD5B\uBD5D\u0000\uBD5A"+ - "\uBD5C\u0000\u0000\u0000\uEAAF\u0000\uBF70\uEAB1"+ - "\uEAB0\u0000\uE345\uBF72\uBF71\uBF6E\uBF6F\u0000"+ - "\u0000\u0000\u0000\u0000\uEDB5\u0000\uEDB3\uC14A"+ - "\uEDB4\u0000\uEDB6\uEDB2\uEDB1\u0000\u0000\uF060"+ - "\uC2AA\uC2A8\uC2A9\u0000\u0000\u0000\u0000\uF2A6"+ - "\uF2A7\uC3AD\u0000\uC3AC\uF4A3\uF4A4\uF4A2\u0000"+ - "\uF6F8\uF6F9\u0000\u0000\uA5DE\uCA48\uA873\u0000"+ - "\uCDA5\uAAC6\uAAC5\uCDA6\u0000\u0000\uD040\uACEF"+ - "\uCFFE\uACF0\u0000\u0000\uAFB6\uD2F8\uD2F6\uD2FC"+ - "\uAFB7\uD2F7\uD2FB\uD2F9\uD2FA\u0000\u0000\uD6C8"+ - "\uD6CA\u0000\uB2BF\u0000\uD6C9\uB2C0\uB5A2\uB5A1"+ - "\uB57E\uDADB\u0000\u0000\u0000\u0000\uDF44\uB85D"+ - "\uB85E\u0000\uDF43\uDF42\u0000\u0000\u0000\u0000"+ - "\uE34A\uBADB\uBADA\uE34B\uE34C\u0000\uBD61\uBD60"+ - "\u0000\uEAB5\uE6D3\uE6D5\uE6D4\uEAB4\uEAB2\uEAB6"+ - "\uEAB3\u0000\uBF73\u0000\u0000\u0000\uEDB7\uC14B"+ - "\uEDB8\uEDB9\u0000\u0000\uC2AB\uC2AC\u0000\uC475"+ - "\u0000\u0000\uC5D1\uA5DF\u0000\u0000\u0000\u0000"+ - "\u0000\uD041\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD2FD\uAFB8\u0000\u0000\u0000\u0000\u0000\uB3BA"+ - "\uB3B9\u0000\u0000\uB5A4\uDADD\uB5A3\uDADC\u0000"+ - "\u0000\u0000\u0000\uDF45\u0000\uBADC\uE34D\uBADD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC476\uF4A5"+ - "\u0000\uA6CB\uAAC7\uCDA7\u0000\uACF2\u0000\uACF1"+ - "\uD042\uD043\u0000\u0000\uD340\uD342\uAFB9\u0000"+ - "\uD344\uD347\uD345\u0000\u0000\u0000\uD346\uD343"+ - "\uD2FE\uAFBA\uD348\uD341\u0000\u0000\u0000\u0000"+ - "\uD6D3\uB2C6\uD6DC\uB2C3\u0000\uD6D5\uB2C7\u0000"+ - "\uB2C1\u0000\uD6D0\uD6DD\uD6D1\uD6CE\uB2C5\u0000"+ - "\uB2C2\u0000\uD6D4\uD6D7\uB2C4\uD6D8\uB2C8\uD6D9"+ - "\uD6CF\uD6D6\uD6DA\uD6D2\uD6CD\uD6CB\u0000\u0000"+ - "\uD6DB\u0000\u0000\uDADF\u0000\u0000\u0000\u0000"+ - "\uDAE4\u0000\u0000\u0000\uDAE0\uDAE6\uB5A7\uD6CC"+ - "\uDAE1\uB5A5\uDADE\uB5AC\uDAE2\uB5AB\uDAE3\uB5AD"+ - "\uB5A8\uB5AE\uB5A9\u0000\uB5AA\u0000\uB5A6\u0000"+ - "\uDAE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uB861\uDF50\u0000\uDF53\uDF47\uDF4C\uDF46\uB863"+ - "\u0000\uDF4A\u0000\u0000\u0000\uDF48\uB862\u0000"+ - "\uDF4F\uDF4E\uDF4B\uDF4D\uDF49\uBAE1\uDF52\uB85F"+ - "\uDF51\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uE35D\u0000\uBAE8\uE358\u0000\uBAE7"+ - "\uE34E\u0000\uE350\uBAE0\uE355\uE354\uE357\uBAE5"+ - "\uE352\uE351\u0000\u0000\uBAE4\uBADF\uE353\uBAE2"+ - "\uE359\uE35B\u0000\uE356\uE34F\uBAE3\u0000\u0000"+ - "\uBD69\uBADE\u0000\u0000\uE35C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uE6D9\uBD62\u0000\uE6DB"+ - "\u0000\uBD63\u0000\u0000\uBD65\uE6DE\u0000\uE6D6"+ - "\uBAE6\uE6DC\u0000\u0000\u0000\u0000\uE6D8\u0000"+ - "\uB860\uBD68\u0000\u0000\uBD64\u0000\uBD66\uBD67"+ - "\u0000\uBF76\uE6DD\uE6D7\uBD6A\u0000\uE6DA\u0000"+ - "\u0000\u0000\u0000\u0000\uEAC0\uEABB\u0000\u0000"+ - "\uEAC5\uBF74\uEABD\uBF78\uEAC3\uEABA\uEAB7\uEAC6"+ - "\uC151\uBF79\uEAC2\uEAB8\uBF77\uEABC\uBF7B\uEAB9"+ - "\uEABE\uBF7A\uEAC1\uEAC4\u0000\u0000\u0000\u0000"+ - "\uEDCB\uEDCC\uEDBC\uEDC3\uEDC1\u0000\u0000\uC14F"+ - "\uEDC8\uEABF\u0000\uEDBF\u0000\uEDC9\uC14E\uEDBE"+ - "\uEDBD\uEDC7\uEDC4\uEDC6\u0000\uEDBA\uEDCA\uC14C"+ - "\u0000\uEDC5\uEDCE\uEDC2\uC150\uC14D\uEDC0\uEDBB"+ - "\uEDCD\uBF75\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF063\u0000\u0000\uF061\uF067\uC2B0\uF065"+ - "\uF064\uC2B2\uF06A\uC2B1\u0000\uF06B\uF068\uC2AE"+ - "\uF069\uF062\uC2AF\uC2AD\uF2AB\uF066\u0000\u0000"+ - "\uF06C\u0000\u0000\uF2A8\u0000\u0000\u0000\uC3B2"+ - "\uC3B0\uF2AA\u0000\uF2AC\uF2A9\uC3B1\uC3AE\uC3AF"+ - "\uC3B3\u0000\u0000\uC478\u0000\uF4AA\u0000\uF4A9"+ - "\uF4A7\uF4A6\uF4A8\u0000\uC477\uC479\u0000\u0000"+ - "\uC4F0\u0000\u0000\uF5E5\uF5E4\u0000\u0000\uF6FA"+ - "\u0000\uF6FC\uF6FE\uF6FD\uF6FB\u0000\u0000\uC5A3"+ - "\uC5A2\u0000\u0000\uC5D3\uC5D2\uC5D4\uF7ED\uF7EC"+ - "\u0000\uF8FB\uF8B8\uF8FC\uC658\u0000\uC659\uF96D"+ - "\u0000\u0000\uC67E\uA6CC\u0000\uCDA8\u0000\u0000"+ - "\uD045\uD046\uD044\u0000\u0000\uACF3\u0000\uD047"+ - "\uD048\uD049\u0000\u0000\uD349\uD34F\u0000\u0000"+ - "\uD34D\uAFBB\uD34B\u0000\uD34C\uD34E\u0000\u0000"+ - "\u0000\uD34A\uB2C9\u0000\uD6DE\uB2CB\uD6E0\uB2CA"+ - "\uD6DF\u0000\u0000\u0000\u0000\u0000\uDAE8\uB5AF"+ - "\u0000\uDAEA\uDAE7\uD6E1\u0000\uB5B0\u0000\u0000"+ - "\uDAE9\u0000\u0000\u0000\u0000\u0000\u0000\uDF56"+ - "\u0000\uB864\uDF54\uB865\uDF55\uB866\u0000\u0000"+ - "\u0000\uBAE9\uE361\uE35E\uE360\uBAEA\uBAEB\uE35F"+ - "\u0000\u0000\u0000\u0000\u0000\uE6DF\u0000\u0000"+ - "\uE6E0\u0000\uBD6B\uE6E2\uE6E1\u0000\uA261\u0000"+ - "\uEACA\uEACB\uEAC7\u0000\uEAC8\uBF7C\uBF7D\uEAC9"+ - "\u0000\uC157\u0000\u0000\uC153\uC158\uC154\uC156"+ - "\uC152\u0000\uC155\u0000\u0000\u0000\u0000\uC2B3"+ - "\uEDCF\u0000\uF2AE\u0000\uF2AD\u0000\uF4AB\uC47A"+ - "\uC47B\uF741\uF5E6\u0000\uF740\u0000\uF8FD\uF9A4"+ - "\uA6CD\u0000\u0000\uA874\u0000\uCDA9\uAAC8\u0000"+ - "\uACF6\uD04C\uACF4\uD04A\uACF9\uACF5\uACFA\uACF8"+ - "\uD04B\uACF7\uAFBF\uAFBE\uD35A\uAFC7\uD353\uD359"+ - "\uAFC3\uD352\uD358\uD356\uAFC2\uAFC4\uD355\uAFBD"+ - "\uD354\uAFC8\uAFC5\uAFC9\uAFC6\uD351\uD350\uD357"+ - "\uAFC0\uAFBC\uAFC1\u0000\u0000\u0000\u0000\u0000"+ - "\uD6F0\uD6E9\u0000\uB5B5\uD6E8\u0000\uB2CF\uB2D6"+ - "\uB2D3\uB2D9\uB2D8\uB2D4\u0000\uD6E2\uD6E5\u0000"+ - "\uD6E4\uB2D0\uD6E6\uD6EF\uB2D1\uD6E3\uD6EC\uD6ED"+ - "\uB2D2\uD6EA\uB2D7\uB2CD\uB2D5\uD6E7\uB2CC\uD6EB"+ - "\u0000\u0000\uD6EE\u0000\u0000\u0000\uDAFB\uDAF2"+ - "\uB5B2\uDAF9\uDAF6\uDAEE\uDAF7\uB5B4\uDAEF\u0000"+ - "\uDAEB\u0000\u0000\uB86C\uDAF4\u0000\uB5B1\uDAFA"+ - "\u0000\uB5B8\uB5BA\uDAED\u0000\u0000\uB5B9\uDAF0"+ - "\uB5B3\uDAF8\uDAF1\uDAF5\u0000\uDAF3\uB5B6\uDAEC"+ - "\uB5BB\uB2CE\uB5B7\uB5BC\u0000\u0000\u0000\u0000"+ - "\u0000\uB868\uDF5D\uDF5F\uDF61\uDF65\u0000\uDF5B"+ - "\uDF59\uB86A\u0000\uDF60\uDF64\uDF5C\uDF58\u0000"+ - "\uDF57\u0000\u0000\u0000\uDF62\uDF5A\uDF5E\uB86B"+ - "\u0000\uB869\uDF66\uB867\uDF63\u0000\uE372\u0000"+ - "\u0000\u0000\u0000\u0000\uBAEE\uE36A\uBD78\uE374"+ - "\uBAF1\uE378\uBAF7\uE365\u0000\u0000\uE375\uE362"+ - "\u0000\uE377\uE366\u0000\uBAFE\uBAFB\uE376\uE370"+ - "\uBAED\uBAF5\uBAF4\u0000\uBAF3\uBAF9\u0000\uE363"+ - "\uBAFA\uE371\uBAF6\uBAEC\uE373\uBAEF\uBAF0\uBAF8"+ - "\uE368\uE367\uE364\u0000\uE36C\uE369\uE36D\uBAFD"+ - "\u0000\uE379\uBAF2\uE36E\uE36F\u0000\uE36B\u0000"+ - "\u0000\u0000\uBAFC\u0000\u0000\u0000\u0000\uE6E7"+ - "\uBD70\uBD79\uBD75\uE6E4\u0000\uBD72\uBD76\uE6F0"+ - "\uBD6C\uE6E8\u0000\uBD74\u0000\u0000\uE6EB\uE6E6"+ - "\uBD73\uBD77\uE6E5\u0000\uBD71\u0000\uE6EF\uBD6E"+ - "\uE6EE\uE6ED\uBD7A\uE572\uBD6D\u0000\uE6EC\uE6E3"+ - "\u0000\uBD7B\uE6EA\uBD6F\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uE6E9\u0000\u0000\u0000\u0000"+ - "\uBFA2\uBFA7\uBF7E\uEAD8\uEACF\uEADB\uEAD3\uEAD9"+ - "\uBFA8\uBFA1\uEACC\uEAD2\uEADC\uEAD5\uEADA\uEACE"+ - "\u0000\u0000\uEAD6\uBFA3\uEAD4\uBFA6\uBFA5\uEAD0"+ - "\uEAD1\uEACD\uEAD7\uBFA4\uEADE\uEADD\u0000\u0000"+ - "\u0000\uEDDA\uEDD6\uC15F\u0000\uEDD0\uC159\uC169"+ - "\uEDDC\uC161\uC15D\uEDD3\uC164\uC167\uEDDE\uC15C"+ - "\uEDD5\uC165\uEDE0\uEDDD\uEDD1\uC160\uC15A\uC168"+ - "\uEDD8\uC163\uEDD2\uC15E\uEDDF\uC162\uC15B\uEDD9"+ - "\uC166\uEDD7\u0000\u0000\uEDDB\u0000\u0000\u0000"+ - "\uF06E\uF074\uC2B9\uF077\uC2B4\uC2B5\uF06F\uF076"+ - "\uF071\uC2BA\uC2B7\u0000\uF06D\u0000\uC2B6\uF073"+ - "\uF075\uC2B8\uF072\uF070\u0000\u0000\u0000\u0000"+ - "\uF2B8\uC3B7\uC3B8\uC3B4\u0000\uC3B5\u0000\uF2B4"+ - "\uF2B2\u0000\uF2B6\uC3BA\uF2B7\uF2B0\uF2AF\uF2B3"+ - "\uF2B1\uC3B6\uF2B5\uF4AC\uC47E\uC47D\uF4AD\u0000"+ - "\uF4AF\uF4AE\uC4A1\u0000\u0000\u0000\uF5EB\uF5E8"+ - "\uF5E9\u0000\uF5E7\uF5EA\uC4F2\uF5EC\u0000\uC4F1"+ - "\u0000\uF742\u0000\uC5D5\uC5D7\uF7EE\uC5D6\uF8B9"+ - "\uF940\uF942\uF8FE\uF941\uC66C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static String innerIndex4= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA6CE\u0000"+ - "\uACFB\uD26F\uAFCA\u0000\u0000\uB2DA\uDAFC\uDAFD"+ - "\u0000\u0000\u0000\uEADF\uC16A\uEDE1\u0000\u0000"+ - "\uC2BB\u0000\uF2BA\uF2B9\uC4A2\uF5ED\u0000\uF743"+ - "\uC5F8\uCA49\u0000\u0000\uAAC9\uA875\u0000\u0000"+ - "\uD04D\u0000\u0000\uD360\uD35B\uD35F\uD35D\uAFCB"+ - "\uD35E\uD35C\u0000\uD6F1\u0000\uDAFE\uDB40\uDF69"+ - "\uDF6A\uB86E\uB86F\uDF68\uDF6B\uDF67\uB86D\u0000"+ - "\uBB40\u0000\uB870\uE37A\u0000\uBD7C\uE6F1\uBD7D"+ - "\u0000\uBFA9\uEAE2\uEAE0\uEAE1\uEDE4\uEDE3\uEDE2"+ - "\u0000\u0000\u0000\uF2BB\u0000\uC3B9\uF2BC\uF744"+ - "\uC5F9\uF8BA\uA6CF\uAACB\uAACA\uD04F\uACFC\u0000"+ - "\u0000\uD04E\uD362\u0000\uAFCC\uD6F2\uD361\u0000"+ - "\u0000\u0000\uB2DC\uD6F5\uD6F3\uD6F4\uB2DB\u0000"+ - "\uDB42\uDB43\uDB41\u0000\uB873\uDF6D\uDF6C\uDF6E"+ - "\uB872\uB871\u0000\u0000\uE6F2\uE6F4\u0000\uBD7E"+ - "\uE6F3\uEAE3\uBFAA\uF079\u0000\uF078\uC3BB\uF2BD"+ - "\uC3BD\uC3BC\uF4B0\uF5EE\uC4F3\uA6D0\uD050\uACFD"+ - "\uD365\uAFCE\uD364\uD363\u0000\uAFCD\u0000\uD6FB"+ - "\u0000\uD6FD\uD6F6\uD6F7\uB2DD\uD6F8\uB2DE\uD6FC"+ - "\uD6F9\uD6FA\uB2DF\u0000\uB5BE\uB5BF\u0000\uDB44"+ - "\u0000\u0000\u0000\uDF6F\uDF70\u0000\uE37E\uBB43"+ - "\uBB41\uBB42\uE37B\uE37C\u0000\uE37D\uE6F9\u0000"+ - "\uE6FA\uBDA1\uE6F7\uE6F6\uE6F8\uE6F5\uBFAD\uEAE4"+ - "\uBFAB\uBFAC\uEDE6\uC16B\uEDE5\uEFA8\u0000\uF07A"+ - "\uF07B\uC2BC\u0000\uC2BD\uC16C\uF2BE\uF2BF\uF4B1"+ - "\uC4A3\uA6D1\u0000\uA6D2\uACFE\uAACC\uAFCF\uD051"+ - "\u0000\u0000\u0000\uB5C0\uA6D3\uAD41\uD052\uD053"+ - "\uAD40\uAD42\uA6D4\u0000\uD054\uAFD1\uD366\uAFD3"+ - "\uAFD0\uAFD2\u0000\uD741\uB2E0\u0000\uD740\uD6FE"+ - "\u0000\uDF71\u0000\u0000\uE3A1\u0000\uBDA2\u0000"+ - "\uBFAE\uEAE6\uEAE5\u0000\uEDE7\u0000\u0000\u0000"+ - "\uF5EF\u0000\u0000\uA6D5\uCB73\uCDAA\uAD43\uD055"+ - "\u0000\uD368\u0000\u0000\u0000\uAFD4\uD367\uAFD5"+ - "\u0000\u0000\u0000\uD743\u0000\u0000\uB2E2\uD742"+ - "\uD744\u0000\uB2E1\u0000\u0000\u0000\u0000\uDB46"+ - "\uDB47\uDB45\uB5C1\u0000\u0000\u0000\uB874\u0000"+ - "\uB875\u0000\uBB45\u0000\uE3A3\uE3A2\uBB44\u0000"+ - "\u0000\u0000\u0000\u0000\uE6FB\u0000\u0000\uE6FC"+ - "\u0000\u0000\u0000\u0000\uEAE7\u0000\u0000\uC170"+ - "\uC16F\uC16D\uC16E\uC171\u0000\uF07C\uC2BF\uC2BE"+ - "\uF2C0\uF4B2\u0000\u0000\u0000\uC5A5\uC5A4\uA6D6"+ - "\u0000\u0000\uD1FB\u0000\uB877\uB5C2\uB876\uBB46"+ - "\u0000\uA6D7\uC9A9\uA6D8\uA6D9\u0000\u0000\uCDAB"+ - "\uCB76\u0000\uCB77\uA877\u0000\uCB74\uA876\u0000"+ - "\uA879\uCB75\uA87B\uA87A\uCB78\uA878\u0000\u0000"+ - "\u0000\uAAD1\uAACF\uCDAD\u0000\uAACE\u0000\u0000"+ - "\u0000\uAAD3\uAAD5\uAAD2\u0000\uCDB0\uCDAC\uAAD6"+ - "\u0000\uAAD0\uA87C\u0000\uAAD4\uCDAF\u0000\u0000"+ - "\uCDAE\u0000\uAACD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uD05B\uAD47\uAD48\uD05D\u0000\uD057"+ - "\uD05A\uD063\uD061\u0000\uAD49\uD067\uAD4C\uD064"+ - "\uD05C\uD059\u0000\u0000\uDB49\uD062\uAD44\uD065"+ - "\uD056\uD05F\uAD46\uAD4B\uD060\uAD4F\uAD4D\u0000"+ - "\uD058\uAD4A\u0000\uD05E\uAD4E\uAD45\uD066\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uAFDA\u0000\uAFE3"+ - "\uAFD8\uAFD6\uD36A\uAFDE\uAFDB\uD36C\u0000\u0000"+ - "\uAFDD\uD36B\uD369\uD36E\uAFE2\uAFE0\uDB48\u0000"+ - "\uD36F\uD36D\uAFD7\u0000\u0000\uAFD9\uAFDC\u0000"+ - "\uAFDF\u0000\uAFE1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD74E\uB2E4\u0000"+ - "\uD745\uD747\u0000\uD748\u0000\uD750\uD74C\uD74A"+ - "\u0000\uD74D\uD751\uB2E5\uB2E9\uD746\u0000\uD74F"+ - "\u0000\uB2E7\u0000\uB2E6\uD74B\uD749\u0000\uB2E3"+ - "\uB2E8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uB5C8\uDB51\u0000\u0000\uDB4F\uB5CA\u0000"+ - "\u0000\u0000\u0000\uDB4A\uDFA1\u0000\uB5C9\uDB4E"+ - "\u0000\u0000\uDB4B\uB5C5\uB5CB\uDB50\uB5C7\uDB4D"+ - "\uBB47\uB5C6\uDB4C\uB5CC\uB5C4\uB5C3\u0000\u0000"+ - "\u0000\u0000\u0000\uDF77\uDF75\u0000\uDF7B\u0000"+ - "\uDF73\uDFA2\uDF78\u0000\uDF72\uB87B\uB8A3\uDF7D"+ - "\u0000\uDF76\u0000\uB87E\u0000\u0000\uB87C\uDF7E"+ - "\uB879\uB878\uDF79\uB87D\uB5CD\u0000\uDF7C\uDF74"+ - "\uB87A\uB8A1\uB8A2\u0000\u0000\u0000\u0000\uBB4C"+ - "\uBB48\u0000\uBB4D\uE3A6\u0000\u0000\uE3A5\uE3A7"+ - "\uBB4A\uE3A4\uBB4B\uE3AA\uE3A9\uE3A8\u0000\uBB49"+ - "\u0000\u0000\u0000\u0000\u0000\uE741\u0000\uE744"+ - "\uBDA8\uE743\uBDA7\uBDA3\uBDA4\uBDA5\uE740\uE6FE"+ - "\uBDA6\u0000\uE742\uE6FD\u0000\u0000\uEAE9\uEAF3"+ - "\uBFB1\uBFB0\u0000\uEAED\uEAEF\u0000\uEAEA\u0000"+ - "\uEAEE\uEAE8\uEAF1\uBFAF\uEAF0\uEAEC\u0000\uEAF2"+ - "\u0000\uEAEB\uC174\uEDE8\uEDEE\uC178\uC17A\uC177"+ - "\uC176\u0000\uC175\uC173\uEDE9\uEDEC\uC172\uEDED"+ - "\u0000\uC179\uEDEB\u0000\uEDEA\uC2C0\u0000\uC2C1"+ - "\uF0A1\uF07D\uF07E\u0000\u0000\uF2C2\u0000\uF2C1"+ - "\uC3BE\uF4B4\uC4A4\uF4B3\u0000\uF5F0\uF745\uC5A6"+ - "\uF943\uF944\uC5D8\uA6DA\u0000\uAAD7\uDB52\uBB4E"+ - "\uC17B\uEDEF\uA6DB\u0000\uAFE5\uAFE4\uDB53\u0000"+ - "\u0000\u0000\uEAF4\uA6DC\uAD50\u0000\u0000\uDB54"+ - "\uDB55\uDB56\uBB4F\uBFB2\uA6DD\u0000\uAAD8\uD068"+ - "\uAFE6\uD370\uB2EA\u0000\uDB57\uB8A4\u0000\uBB50"+ - "\uBFB3\uC17C\uC2C2\uF4B5\uA6DE\uAAD9\u0000\u0000"+ - "\uAFE7\uD752\uB5CE\u0000\uBB51\uE3AB\uE745\u0000"+ - "\u0000\u0000\u0000\uA6DF\uB5CF\uDFA3\uBB52\uA6E0"+ - "\uCDB1\uD069\uAD51\u0000\u0000\uD372\u0000\u0000"+ - "\uAFEA\u0000\uAFE8\uAFE9\uAFEB\u0000\u0000\uD371"+ - "\u0000\u0000\uD757\uD754\uD756\uB2EB\uB2ED\uB2EC"+ - "\uD753\uB2EE\uD755\u0000\uDB58\uDB59\u0000\uDB5A"+ - "\uDFA6\u0000\uDFA7\u0000\uDFA5\uDFA8\u0000\uB8A5"+ - "\u0000\uDFA4\u0000\uBB53\u0000\u0000\uE74A\uE746"+ - "\uE749\uE74B\uE748\uE747\u0000\uEAF5\uEAF6\uEAF7"+ - "\uBFB4\uBFB5\uEDF1\uEDF0\uEDF2\u0000\uF0A3\uF0A2"+ - "\u0000\uF2C4\u0000\uF2C5\uF2C3\u0000\uC4A5\u0000"+ - "\uF4B6\uF4B7\u0000\uF746\uF7EF\uF8BB\uA6E1\uA87D"+ - "\u0000\uC17D\uA6E2\u0000\uD758\uDB5B\u0000\uC641"+ - "\uCA4A\u0000\u0000\u0000\uCA4B\uCA4D\uA6E3\uCA4E"+ - "\uCA4C\u0000\u0000\uCBA2\uCBA3\uCB7B\u0000\u0000"+ - "\u0000\u0000\uCBA1\uA8A1\u0000\uA8A2\uCB7C\uCB7A"+ - "\uCB79\uCB7D\uA87E\uCB7E\uD06A\u0000\u0000\u0000"+ - "\uCDB6\uAADC\uCDB5\uCDB7\u0000\uAADB\uCDBC\uAADF"+ - "\uCDB2\uCDC0\uCDC6\uAAE6\uCDC3\uAAE3\u0000\uCDB9"+ - "\uCDBF\uCDC1\u0000\uCDB4\uAAE2\uAADD\uCDBA\uAAE4"+ - "\uAAE7\uAAE1\u0000\uAADA\uCDBE\uCDB8\uCDC5\uAAE9"+ - "\uAAE5\uAAE0\uCDBD\uAFEC\uCDBB\uAADE\uAAE8\u0000"+ - "\uCDB3\u0000\uCDC2\uCDC4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uAD62\uAD5C\uAD64\uAD61\uD071\uD074\uAD5D"+ - "\u0000\uD06B\u0000\uAD56\uAD60\u0000\uAD63\uAD65"+ - "\uD0A2\uD077\u0000\uAD55\uD0A1\uAD59\uAD57\uAD52"+ - "\uD06F\u0000\uD07E\uD073\uD076\uD0A5\u0000\uAD66"+ - "\uD07D\uAD5E\uD078\uD0A4\uD075\uD079\uD07C\u0000"+ - "\u0000\uD06D\uD0A3\uD07B\u0000\u0000\uD06C\u0000"+ - "\uD070\uAD5F\uAD5A\uAD53\uAD58\uAD54\uAD67\uD06E"+ - "\uD3A5\uAD5B\u0000\u0000\uD07A\uCE41\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uD3A8\uAFFA"+ - "\u0000\uD376\u0000\uD3A3\uD37D\u0000\uD3B2\u0000"+ - "\uD3AA\u0000\uD37E\u0000\uD3A9\uD378\uD37C\uD3B5"+ - "\uAFFD\uD3AD\uD3A4\uAFED\uD3B3\uD374\u0000\uD3AC"+ - "\u0000\uAFFC\uAFF7\uD373\uAFF5\uAFF4\uAFF9\uD3AB"+ - "\uAFF1\uAFF8\uD072\uDB5C\uD3A6\u0000\u0000\uD37A"+ - "\uAFFB\uD37B\uD3A1\uAFFE\uD375\uD3AF\u0000\uD3AE"+ - "\uD3B6\uAFF3\uAFF0\uD3B4\uD3B0\uD3A7\uD3A2\uAFF6"+ - "\uAFF2\uD377\uAFEE\uD3B1\uAFEF\u0000\uD379\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uD75E\uD760\uD765\uD779\uB2FC"+ - "\uB2F2\u0000\uD75D\uB2FD\uB2FE\uD768\uD76F\uD775"+ - "\u0000\uD762\u0000\uD769\u0000\u0000\uB340\uD777"+ - "\uD772\uB2FA\uB2F8\uD76E\uD76A\uD75C\uB2EF\uD761"+ - "\uD759\u0000\uB2F7\uB2F9\uD766\uD763\uB2F4\uD773"+ - "\uB2F1\uD764\uD77A\uD76C\u0000\uD76B\uB2F0\u0000"+ - "\uB2FB\u0000\uB2F3\uD75A\uD75F\uD770\uD776\uB341"+ - "\uD75B\uD767\uD76D\uB2F6\u0000\u0000\uD778\uD771"+ - "\uD774\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uB2F5\u0000\uDB6C"+ - "\uDB60\uB5D7\uDB7D\uDBA7\uDBAA\uB5D5\uDB68\uDBA3"+ - "\uDB69\uDB77\uB5E2\uDB73\uB5DF\u0000\uDB74\uDB5D"+ - "\u0000\uDBA4\u0000\u0000\uB5E8\uDBA1\uDB75\uDBAC"+ - "\uDB70\uDFC8\u0000\uDBAF\uB5E6\uDB6E\uDB7A\uB5E9"+ - "\uB5D4\uDB72\uDBAD\uDB6B\uDB64\uDB6F\u0000\uDB63"+ - "\uDB61\uB5D0\uDBA5\uDB6A\uDBA8\u0000\uDBA9\uB5D8"+ - "\uB5DD\uB5D9\uB5E1\uDB7E\uB5DA\uDB76\uDB66\u0000"+ - "\uB5D2\uDB5E\uDBA2\uDBAB\uDB65\uB5E0\uDBB0\uDB71"+ - "\u0000\uDB6D\u0000\uB5D1\uB5E5\u0000\uDB7C\uB5E7"+ - "\u0000\uDB78\uB5DC\uB5D6\uB5DE\uB5D3\uB5E4\uDB79"+ - "\uDB67\uDB7B\uDB62\uDBA6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uDBAE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uDB5F\u0000\u0000\u0000\u0000"+ - "\u0000\uDFC7\u0000\uDFDD\uB855\uDFCC\u0000\uDFCA"+ - "\uDFB5\uB8A9\uDFC5\uDFD9\uDFC1\uB8B1\uDFD8\uDFBF"+ - "\uB5E3\uDFCF\uDFC0\uDFD6\uB8B0\uB8A8\u0000\uDFAA"+ - "\uDFB2\u0000\uDFCB\uDFC3\uDFDC\uDFC6\uB8B6\uDFD7"+ - "\u0000\uB8AD\u0000\uDFC9\uDFD1\uDFB6\uDFD0\u0000"+ - "\uDFE1\uDFB1\uDFD2\u0000\uDFDF\u0000\uDFAB\uB5DB"+ - "\u0000\uDFB9\uDFB8\uB8AF\u0000\uDFBC\uDFBE\uDFCD"+ - "\uDFDE\uB8B2\u0000\uB8B3\u0000\uDFB0\uB8AB\uDFB4"+ - "\uDFDA\uB8B4\u0000\uB8AC\uB8AE\uB8B5\uDFE0\uDFD3"+ - "\uDFCE\u0000\u0000\uDFBB\uDFBA\uB8AA\uDFAC\uB8A7"+ - "\uDFC4\uDFAD\uDFC2\u0000\u0000\uDFB7\uDFDB\u0000"+ - "\u0000\u0000\uB8A6\u0000\u0000\u0000\uDFB3\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uDFAF\uDFD5\uDFAE"+ - "\uBB60\uE3D3\u0000\u0000\uE3C2\u0000\u0000\uE3AC"+ - "\uE3CA\uBB58\uE3BB\uE3C5\uBB5B\uE3BE\uBB59\uE3AF"+ - "\uE3CD\uE3AE\uE3C1\u0000\uE3AD\u0000\u0000\uE3BF"+ - "\uE3C8\uE3C6\uE3BA\uE3B5\uE3B3\u0000\uE3B4\uE3C7"+ - "\uE3D2\uE3BC\uBB5A\u0000\uE3B7\u0000\uE3CB\u0000"+ - "\uBB5D\uE3B6\uE3B0\uE3C0\uBB61\u0000\u0000\uBB55"+ - "\uBB5E\uE3B8\uE3B2\u0000\uBB57\uDFD4\uBB56\uE3C3"+ - "\u0000\uBB54\uBB63\uBB5C\uE3C4\uE3B9\uE3B1\uE3CC"+ - "\uE3BD\uBB62\uE3D0\uBB5F\uE3CF\u0000\uE3C9\uE3CE"+ - "\u0000\u0000\u0000\uE3D1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE773"+ - "\uE774\uE767\uE766\uE762\uBDB4\u0000\uBDAC\uE776"+ - "\uE775\uDFA9\uE75F\uE763\uE75D\u0000\uE770\uE761"+ - "\u0000\uE777\uE75A\uE758\uE764\uE76E\uE769\uBDB6"+ - "\uE74F\u0000\uE76D\u0000\u0000\u0000\uBDB7\uDFBD"+ - "\uE75B\uE752\uE755\uE77B\uE75C\uE753\uE751\uE74E"+ - "\u0000\uBDB0\uE765\uBDAF\uBDB3\uE760\uE768\uBDA9"+ - "\uE778\uE77C\uBDAB\u0000\uE757\uE76B\uE76F\uE754"+ - "\uE779\uBDB2\u0000\uBDB1\uE74C\uBDB5\uE772\uE756"+ - "\uE76A\uE750\uE75E\uE759\uBDAD\uBDAE\uE76C\uE77D"+ - "\uE77A\uE771\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uE74D\u0000\uBDAA\uEB49\u0000"+ - "\uEB40\uEB43\u0000\uBFBB\uEB45\uEAF9\uEB41\uEB47"+ - "\uBFB8\uBFBC\uBFB6\u0000\u0000\uEAFB\uEB4C\u0000"+ - "\u0000\uEB46\u0000\uEAFC\uEB55\uEB4F\uEAF8\uEE46"+ - "\uEAFE\uBFB7\u0000\uEB4A\u0000\uEB54\uBFBF\u0000"+ - "\uEB51\uEAFD\uEB44\uEB48\uEB42\uEB56\uEB53\uEB50"+ - "\uBFB9\uBFBA\uBFBE\uEAFA\uEB57\uBFBD\uEB4D\u0000"+ - "\u0000\uEB4B\u0000\u0000\u0000\uEB4E\uEE53\uEE40"+ - "\uEE45\uEE52\uEE44\uEDFB\uEE41\u0000\uC1A2\u0000"+ - "\uEDF4\uEE4D\uEE4F\uEDF3\uC1A1\uEE51\uEE49\uC1A8"+ - "\uEE50\uEE42\uC1AA\uEDF9\uEB52\uEE4A\uEE47\uEDF5"+ - "\uEE55\uC1A4\u0000\u0000\uC1A5\uEDF7\uEE48\u0000"+ - "\uEE54\uEE4B\uEDFD\uC1A7\uC1A3\uEE4C\uEDFE\uEE56"+ - "\uEDF8\uEE43\uEE4E\uEDFA\uEDFC\u0000\uC2CB\uEDF6"+ - "\uC1A9\uC2C4\uC17E\u0000\u0000\u0000\u0000\uC1A6"+ - "\uC2C8\uF0B3\u0000\uF0A9\uF0A4\uF0AA\uF0B4\uF0B8"+ - "\uF0B7\uC2CA\uC2C9\u0000\u0000\uF0AB\uF0B9\uF0AE"+ - "\uF0A6\u0000\uF0A8\uF0A7\uF0AD\uF0B2\uF0A5\uF0AC"+ - "\uF0B1\uC2C7\u0000\uF0AF\u0000\uC2C5\uF0B0\uC2C3"+ - "\uC2C6\uF2D5\uF0B5\u0000\u0000\uC3C2\u0000\uF2CD"+ - "\uF2D1\uF2C9\uF2CC\u0000\uF2D4\uC3C0\uF2D9\uF2D2"+ - "\u0000\uF2CA\uF2DA\uF2D3\uC3C3\uC3C4\uF2D7\u0000"+ - "\uF2CB\uC3BF\uC3C1\uF2C6\uF2CE\uF2C8\u0000\uF2D8"+ - "\uF2D6\uF2C7\uF2CF\u0000\u0000\u0000\uF4BE\uC3C5"+ - "\uF2D0\uC4A7\uC4A9\uC4A6\u0000\uF4C3\uF4BB\uF4B9"+ - "\uF4BD\uF4BA\u0000\u0000\uF4BF\uF4C1\uC4AA\uC4AC"+ - "\u0000\uF4C0\uC4AD\uC4AB\uF4C2\u0000\u0000\u0000"+ - "\u0000\uC4A8\u0000\u0000\u0000\u0000\u0000\uC4F4"+ - "\uF5F1\uF5F7\uC4F6\uF4BC\uF5F6\u0000\uF5FD\uF5F4"+ - "\uF5FB\uF5FA\uF4B8\uF5F5\uF0B6\uF5FE\uF5F3\uF5F8"+ - "\u0000\uF5FC\uF5F2\u0000\uF74A\uC4F5\uF5F9\u0000"+ - "\u0000\uF7F4\uF74B\uF749\uF747\uF748\uF74C\u0000"+ - "\uC5D9\uF7F2\uF7F0\uF7F5\uF7F3\u0000\uF7F6\uC5DA"+ - "\uF7F1\u0000\u0000\uF8BC\u0000\u0000\uF945\uF946"+ - "\uF947\u0000\u0000\uF9C7\uF9BD\uCA4F\uAAEA\u0000"+ - "\uAD68\u0000\uD3B8\uD3B7\uB040\uB342\uD77C\u0000"+ - "\u0000\uD77B\u0000\uB5EA\uB8B8\u0000\uB8B7\uB8B9"+ - "\u0000\uE3D4\uE77E\uEB58\uEB5A\uEB59\u0000\uC1AB"+ - "\uEE57\uF0BA\uF9A5\uA6E4\u0000\uCDC9\uCDCA\uCDC8"+ - "\uCDC7\uAAEB\u0000\uD0A9\uD0A7\u0000\u0000\uD0A6"+ - "\u0000\uAD69\uAD6B\uAD6A\uD0A8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uD3C4\uD3C1\uD3BF"+ - "\u0000\u0000\uB041\uD3C2\uB046\uD3BC\uD3CB\u0000"+ - "\uD3CD\uD3BD\u0000\uB043\uD3CE\uD3C9\uD3BB\uD3C0"+ - "\uD3CA\uD3C6\uD3C3\u0000\uB048\uD3CC\uD3BE\u0000"+ - "\u0000\uD3C7\uD3B9\uB047\uB044\uD3C5\u0000\uD3C8"+ - "\uD3BA\uB045\uB042\u0000\u0000\u0000\u0000\uB34C"+ - "\uD7A5\uB34B\u0000\uD7A8\uD7AB\uB348\uB346\uD77E"+ - "\uD7A9\uD7A7\uD7A4\uD7AC\uD7AD\uD7AF\uD7B0\uD77D"+ - "\uB345\uD7A2\uD7A1\uD7AE\uB347\uD7A3\uB349\uB344"+ - "\uD7A6\uB34D\u0000\uB34A\uD7AA\u0000\u0000\u0000"+ - "\uB5F1\uDBBF\u0000\uDBB4\uB5EE\u0000\uDFE7\uDBBD"+ - "\uDBB1\uB5EC\uDBB6\uB5EF\uDBBA\uDBB8\uB5F2\uB5EB"+ - "\u0000\u0000\uDBB2\uDBB5\uB5F0\u0000\uDBB3\u0000"+ - "\uDBBE\uDBBC\uDBB7\uDBB9\uDBBB\uB5ED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uDFE8\uDFEE\uDFE4"+ - "\uDFEA\uB8BA\uDFE6\uB8C0\u0000\u0000\uB8BF\u0000"+ - "\uB8BE\uDFED\uB8C1\uB8C2\uDFE3\uDFF0\uB8C3\uB8BD"+ - "\uB8BC\uDFEC\uB8C4\uDFE2\uDFE5\uDFEF\uDFEB\u0000"+ - "\u0000\uE3F4\uE3E9\uB8BB\u0000\u0000\u0000\u0000"+ - "\uBB6A\uE3DD\uE3F2\uE3DE\uBB65\u0000\uE3DB\u0000"+ - "\uE3E4\uE3DC\uBB67\uE3D6\uE3F1\uBB68\uE3EE\uE3EF"+ - "\uE3D7\uBB6D\uE3E6\u0000\uE3E0\uE3E7\uE3DA\u0000"+ - "\uE3F3\uE3EB\uE3E5\uE3D5\uBB69\uE3EC\u0000\uBB6C"+ - "\uE3F0\u0000\uE3EA\uBB66\uE3E8\u0000\uE3E2\uBB64"+ - "\uE3D9\uE3E1\uE3ED\uE3DF\u0000\u0000\uE3E3\u0000"+ - "\u0000\u0000\u0000\u0000\uBDC1\uDFE9\uE7B2\uE7BB"+ - "\uE7B1\uE7AD\uE7AA\uBDC2\uE7A8\uBB6B\uE7A1\uBDC0"+ - "\uE7A7\uBDBF\uE7AC\uE7A9\uE7B9\uE7B4\uE7AE\uE7B3"+ - "\uBDBB\uE7AB\uE7BE\uE7A2\uE7A3\uE7BA\uBDBC\uE7BF"+ - "\uBDBE\uE7C0\uE7B0\uE3D8\uE7B6\uE7AF\uE7B8\uE7B5"+ - "\u0000\u0000\u0000\uE7A6\uBDB9\uE7BD\uBDBA\uE7A4"+ - "\uBDBD\uEB64\uE7B7\uE7BC\u0000\u0000\u0000\u0000"+ - "\u0000\uEB61\uBDB8\uBFC0\uEB6B\uEB67\u0000\uEB65"+ - "\uEB60\uEB6F\u0000\u0000\u0000\uBFC4\u0000\uEB5C"+ - "\uEB68\uEB69\uEB5F\uEB5E\uEB6C\u0000\uEB62\uEB5D"+ - "\uEB63\u0000\uEB6E\uEB5B\uEB6D\uEB6A\uBFC2\uBFC1"+ - "\u0000\u0000\uBFC3\uEB66\uF0CB\u0000\u0000\u0000"+ - "\u0000\u0000\uEE59\uC1B1\uEE5D\uEE5A\uEE61\uEE67"+ - "\uEE5C\u0000\uEE70\uC1AE\uEE6A\uEE5F\uEE6B\uEE66"+ - "\uEE6D\uEE5E\uC1B3\uC1B2\uEE60\uEE6E\uEE58\uEE6C"+ - "\uC1AC\u0000\uEE64\uEE63\uEE68\uEE5B\uC1B0\u0000"+ - "\uC1B4\uEE62\uEE69\uC1B5\uEE65\u0000\u0000\u0000"+ - "\u0000\uC1AD\uC1AF\uF0C7\uF0C5\u0000\u0000\uF0CC"+ - "\uF0C9\uF0CD\u0000\uF0BE\uF0C6\uF0D1\uEE6F\uF0C2"+ - "\uC2CF\uE7A5\uF0BD\uF0CA\uF0C4\uF0C1\uF0BC\uF0BB"+ - "\uF0D0\u0000\uF0C0\uF0BF\uC2CD\uF0C8\u0000\uC2CC"+ - "\u0000\u0000\uC2CE\uF0C3\uF0CF\u0000\uF2DE\uF2DF"+ - "\u0000\uC3C9\uF2DC\uC3C6\uF2E4\u0000\uC3CA\uF2E6"+ - "\uF2DB\uF0CE\uF2E8\uF2DD\u0000\uC3C7\uF2E3\u0000"+ - "\uF2E5\uF2E0\uF2E7\uF2E2\uF2E1\uC3C8\u0000\u0000"+ - "\uF4C5\uF4C6\u0000\uF4C8\uC4AE\uC4AF\uF4C9\uF4C7"+ - "\u0000\uF4C4\u0000\uF642\uF645\uF641\u0000\uC4FA"+ - "\uF643\uC4F9\uC4F8\uC4F7\uF644\uF751\uF74F\u0000"+ - "\uF74E\uF640\uF750\uF646\uF74D\u0000\uF7F9\uF7D7"+ - "\uF7F7\uC5DB\uF7F8\uF7FA\u0000\uF8BF\uC5FA\uF8BE"+ - "\uF8BD\uC5FB\u0000\uC65A\uF96E\uF9A7\uF9A6\uF9A8"+ - "\uA6E5\uD0AA\u0000\uD3CF\uD3D0\u0000\u0000\u0000"+ - "\uDBC0\u0000\uF647\uF8C0\uA6E6\uAD6C\uD0AB\u0000"+ - "\u0000\u0000\uD7B1\uB34E\u0000\uDBC2\uDBC1\uB5F3"+ - "\u0000\uB8C5\uE7C1\uBDC3\u0000\uBDC4\u0000\u0000"+ - "\u0000\uBFC5\uC5FC\uA6E7\u0000\u0000\u0000\uD0AC"+ - "\uAAED\uD0AE\uD0AD\uAD6D\u0000\uD3D1\u0000\uD3D8"+ - "\uB049\uD3D6\uD3D4\u0000\uD3DB\uD3D2\uD3D3\uB04A"+ - "\u0000\uB04E\u0000\u0000\uD3DC\uB04D\uD3DA\uD3D7"+ - "\uD3D5\uB04B\uB04C\uD3D9\u0000\u0000\u0000\u0000"+ - "\uB350\uD7B2\u0000\uB355\uD7C2\uB354\uD7C4\u0000"+ - "\u0000\uD7B8\uB352\uD7C3\u0000\uD7B3\uB353\uD7BF"+ - "\uD7BB\uD7BD\uD7B7\uD7BE\u0000\u0000\uB34F\uD7BA"+ - "\u0000\uD7B9\uD7B5\u0000\uD7C0\u0000\u0000\uD7BC"+ - "\uD7B4\u0000\uD7B6\uB351\uD7C1\u0000\u0000\u0000"+ - "\u0000\uB5F6\uDBCD\u0000\u0000\u0000\uDBC9\uDBCB"+ - "\uDBC6\uDBC5\uDBC3\u0000\uDBCA\uDBCC\uDBC8\u0000"+ - "\uDBC7\uB5F4\uB5F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uDBCF\uB8CD\uDFF2\uDFF8\uDFF3\uDFF4\u0000"+ - "\uDFF9\u0000\uB8CF\u0000\uB8C7\uB8CE\uDFF1\uDBC4"+ - "\uB8CA\uB8C8\uDFF7\uDFF6\uB8C9\uB8CB\uDFF5\uB8C6"+ - "\u0000\uB8CC\u0000\u0000\u0000\u0000\u0000\uE3F6"+ - "\uBB74\u0000\u0000\uE442\uE441\u0000\uE3FB\uBB76"+ - "\uE440\uE3F7\uE3F8\uBB6E\uBB70\u0000\uE3FD\uE3F5"+ - "\uBB72\uBB71\uE3F9\uE3FE\uE3FC\uBB73\uE3FA\u0000"+ - "\u0000\uDBCE\uBB6F\u0000\u0000\uE7C2\uE7C9\uBDC6"+ - "\u0000\uE7CD\uBDCA\uE7C5\uE7C3\u0000\uE7CC\u0000"+ - "\uBDC5\uE7CB\uBDC7\uBDC8\uE7C4\uBDC9\uE7CA\uE7C6"+ - "\uE7C7\uE7C8\uBB75\u0000\u0000\u0000\uEB70\uEB7C"+ - "\u0000\uBFCA\uEB77\uEB79\u0000\uBFC8\uEB71\uEB75"+ - "\u0000\uEB78\uBFC6\uBFC9\uEB7B\uEB73\uEB74\uEB7A"+ - "\uEB72\uEB76\uBFC7\uEE72\u0000\uEE71\uC1B7\uEE77"+ - "\uC1B9\u0000\u0000\uC1B6\uEE73\uC1BA\uEE74\u0000"+ - "\u0000\uEE75\uEE78\u0000\uC1B8\u0000\uF0D6\u0000"+ - "\u0000\uF0D9\u0000\uF0D3\uF0D5\u0000\u0000\uF0D4"+ - "\uF0D7\uF0D8\uEE76\uF0D2\u0000\u0000\uC3CD\uF2EC"+ - "\uF2EF\uF2F1\uF2EA\uF2EB\uF2EE\uF2F0\uC3CE\uC3CC"+ - "\uC3CB\uF2ED\uF2E9\uF4CA\uC4B0\u0000\uF4CB\u0000"+ - "\u0000\uF649\uC4FB\uF64B\uC4FC\uF648\uF64A\uC5A8"+ - "\u0000\uF752\uC5A7\uF7FD\uF7FC\u0000\uF7FB\u0000"+ - "\u0000\uF948\uF949\uF94B\uF94A\u0000\uCA50\uA6E8"+ - "\u0000\uAD6E\uD7C5\uB5F7\u0000\uDFFA\uC2D0\u0000"+ - "\uF2F2\u0000\u0000\uA8A3\u0000\u0000\u0000\uB357"+ - "\u0000\u0000\u0000\uB356\u0000\uDBD0\uB5F8\uDBD2"+ - "\uDBD1\u0000\u0000\uDFFB\uB8D0\uE443\uE446\uE445"+ - "\u0000\uE444\uE7CE\uE7D0\uE7CF\u0000\uBFCC\u0000"+ - "\u0000\u0000\uBFCB\u0000\uC1BB\uEE79\uEE7B\uEE7A"+ - "\u0000\u0000\uC2D1\u0000\u0000\u0000\uF2F4\uF2F3"+ - "\u0000\uF4CC\uC4B1\u0000\u0000\uC4FD\uF754\uF753"+ - "\uC65B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA8A4\uD0AF\uAD6F\uD7C8\uD7C6\u0000"+ - "\u0000\uD7C7\uDBD4\uDBD5\uE043\uDBD3\u0000\uDFFC"+ - "\uE041\uE040\uE042\uB8D1\uDFFE\uDFFD\uE044\u0000"+ - "\uE449\uE447\u0000\uE448\uE7D3\uE7D1\u0000\u0000"+ - "\uE7D2\uEB7D\uEE7C\uEE7D\uC2D2\u0000\uF2F5\uF4CD"+ - "\uC4B2\u0000\uF64C\uF755\uC5A9\u0000\uF7FE\uF94C"+ - "\uA8A5\u0000\uAD71\uAD72\uD0B0\u0000\u0000\uD0B1"+ - "\uAD70\u0000\uB054\u0000\uB052\u0000\uB051\uB058"+ - "\uB050\uB059\uD3DD\uB056\u0000\uB053\uB057\uB055"+ - "\uB04F\u0000\u0000\uB35F\u0000\uB359\uD7CC\uB35E"+ - "\u0000\u0000\uB360\uB35A\u0000\uB35B\u0000\uD7CA"+ - "\u0000\u0000\uB358\u0000\uD7CB\uB35D\u0000\u0000"+ - "\uD7C9\uB35C\u0000\u0000\uB644\u0000\uB646\u0000"+ - "\u0000\uDBD8\uB645\uB5F9\uB5FD\u0000\uB8E4\uE049"+ - "\uDBDA\uB5FE\u0000\u0000\uDBDD\uDBDE\uB643\u0000"+ - "\uDBE0\u0000\uDBE2\u0000\uDBE3\uDBD7\uDBD6\uDBE4"+ - "\uB642\uDBE1\uDBDF\u0000\uB640\uB5FB\uB647\uDBDB"+ - "\uDBDC\uDBD9\u0000\uB641\u0000\u0000\uB5FC\u0000"+ - "\uB5FA\uE048\uB8DF\uB8DA\u0000\u0000\uB8D5\u0000"+ - "\uB8E5\uB8D6\u0000\uB8D2\uB8E1\uB8DE\uB8E0\u0000"+ - "\uB8D7\uB8DC\uB8D3\uB8D4\uE050\uE04D\uE045\uE04A"+ - "\u0000\uB8E2\uE051\uB8E3\uB8D9\u0000\u0000\uE047"+ - "\u0000\uE04F\uE04B\uE04E\uE04C\uB8DD\uE046\uB8D8"+ - "\u0000\u0000\u0000\uE44C\uBB78\uBB7B\u0000\uE44E"+ - "\u0000\uBBA5\uE44D\uBB7D\u0000\uBDCF\uE44F\u0000"+ - "\uBBA4\uE44B\uBBA6\u0000\u0000\u0000\uBB79\u0000"+ - "\uB8DB\uBB7C\u0000\uBB7A\uBB7E\uBBA2\uBB77\uBBA7"+ - "\uBBA3\u0000\uBBA1\uE44A\u0000\u0000\u0000\u0000"+ - "\uBDD6\u0000\uBDD2\u0000\u0000\u0000\uBDD9\u0000"+ - "\uE7D6\uBDDA\uE7E2\uE7DB\uBDCB\uE7E3\uE7DD\uBDD5"+ - "\uE7DE\u0000\uBDD4\uE7E1\uBDCE\uE7DF\uE7D5\uBDCD"+ - "\uEBAA\uBDD3\u0000\uBDD0\u0000\uBDD8\u0000\uE7D4"+ - "\u0000\uE7D8\uBDCC\uE7D7\uE7D9\uE7DA\uBDD7\uE7DC"+ - "\uE7E0\uE7E4\u0000\uBDDB\uBFD2\uEBA5\uEBAB\uEBA8"+ - "\uEB7E\uEBAC\uEBA1\u0000\uEBA7\u0000\uBFCD\uBFD3"+ - "\uEBAD\u0000\u0000\uBFCF\u0000\uBFD9\uBFD4\uEBAF"+ - "\uEBA9\uBFD0\uEBA2\uBFDA\uEBA3\uEBA4\uBFDB\uBFD8"+ - "\uBDD1\u0000\uBFCE\uEBB0\uBFDC\u0000\uBFD5\uEBAE"+ - "\uBFD1\uBFD6\uBFD7\u0000\uC1C3\uEEA4\uEEAD\uEEAA"+ - "\uEEAC\u0000\uC1C0\uEEA5\u0000\uEEAB\uC1BC\uEEA7"+ - "\uC1C4\uEEA3\uEEA8\uEEAF\uEBA6\uEEA9\uEEA2\uC1BD"+ - "\uEEA1\uC1BE\uEEB0\uC1BF\uEEAE\uC1C2\uEE7E\u0000"+ - "\uC1C1\u0000\uEEA6\uF0DC\uF0EA\uF0E5\uF0E7\uF0DB"+ - "\uC2D3\u0000\uF0DA\uC2D6\uC2D5\u0000\uF0E9\uF0E1"+ - "\uF0DE\uF0E4\u0000\uF0DD\u0000\uF0DF\uF0E8\uF0E6"+ - "\u0000\uC2D4\uF0ED\uF0EB\uF0E2\uF0EC\uF0E3\u0000"+ - "\uF2F9\uC3CF\uF341\u0000\u0000\uF64F\uC3D6\uF0E0"+ - "\uF2F7\uC3D2\uF2F8\uF2FD\u0000\u0000\uC3D4\uC3D5"+ - "\uF2F6\uF340\uF342\uF2FA\uF2FC\uF2FE\uF2FB\uF343"+ - "\uC3D1\uC3D7\uC3D3\u0000\uC3D0\uF4D0\u0000\uC4B7"+ - "\uF4CE\u0000\u0000\uF4D2\u0000\uF4D3\uC4B5\uF4D4"+ - "\uF4D1\u0000\uF4CF\uC4B8\uC4B4\uF4D5\u0000\uC4B6"+ - "\uC4B3\u0000\u0000\u0000\uC4FE\u0000\u0000\uC540"+ - "\uF64E\uF64D\uF650\uF651\u0000\uC541\uF756\uF75B"+ - "\uC5AA\u0000\uF758\u0000\uF757\uF75A\uF759\u0000"+ - "\uF843\u0000\uC5DC\uF842\uF840\u0000\uF841\u0000"+ - "\u0000\u0000\uC5FE\uC5FD\uF8C1\uF8C2\uC640\u0000"+ - "\uF94D\uF94E\uC667\u0000\uC66D\u0000\uF9A9\uF9C8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA8A6"+ - "\u0000\uD7CD\u0000\uD7CE\uE052\uE450\uE7E5\uC1C6"+ - "\u0000\uC1C5\uF0EE\uF344\u0000\uF844\uA8A7\uD3DE"+ - "\uB05A\uB361\uE054\uE053\uBDDC\uE7E6\uBDDD\uEEB1"+ - "\uC2D7\u0000\u0000\u0000\uC676\uA8A8\uCDCB\uD3DF"+ - "\u0000\u0000\uB362\u0000\uD7CF\uD7D0\u0000\uDBE5"+ - "\u0000\uB648\uB8E6\u0000\uE056\uE055\uE057\u0000"+ - "\uE451\uE452\uBBA8\uBFDD\uBDDE\uBFDE\u0000\uEEB5"+ - "\uEEB2\uEEB4\uEEB3\uC1C7\u0000\uF0EF\uF346\uF345"+ - "\uCBA4\uB05C\uB05B\uD3E0\u0000\uD7D1\u0000\u0000"+ - "\uDBE7\uDBE6\uB649\u0000\uE059\uE05A\uE058\u0000"+ - "\u0000\uB8E8\uB8E7\u0000\uBBAA\uBBA9\u0000\uE7E7"+ - "\uEBB3\uEBB1\uEBB2\uBFDF\uEEB7\uEEB6\u0000\uF0F2"+ - "\uF0F1\uF0F0\uF347\u0000\uF9AA\uA8A9\uAD73\u0000"+ - "\uAD74\uB05D\uB05E\uD3E2\uD3E1\uD7D2\u0000\uB368"+ - "\uB366\uB363\uB367\uB365\uB364\u0000\u0000\uB64A"+ - "\uDBEA\u0000\uB8ED\uB64C\uB651\uDBEC\uB653\uB652"+ - "\uB655\uDBEB\uDBE8\uB64F\uB64B\uB64D\uDBE9\uB654"+ - "\uB650\uB64E\uB8EF\uB8EE\uB8EC\uB8F0\u0000\uB8EA"+ - "\uB8EB\u0000\uB8E9\u0000\uE05B\u0000\u0000\uE454"+ - "\u0000\uBBAC\uBBAD\uBBAB\u0000\uE453\u0000\uE455"+ - "\u0000\uE7EA\uE7EC\u0000\uBDE7\uE7ED\uBDE0\uE7E9"+ - "\uBDDF\uBDE9\uBDE5\uBDE6\uBDE2\uE7E8\uBDE1\uE7EE"+ - "\uE7EB\u0000\uBDE8\u0000\uBDE3\uBDE4\uEBB5\u0000"+ - "\uEBB7\uEBB6\u0000\uEBB8\uBFE0\uEBB4\u0000\u0000"+ - "\uC1CB\uEEB8\uC1C8\uC1CC\uC1CA\uC1C9\uF0F3\u0000"+ - "\uF0F6\u0000\uF0F5\u0000\uF0F4\uC2D8\uF348\uF349"+ - "\uC3D8\uF34A\uC3D9\u0000\u0000\uC4BA\u0000\uC4B9"+ - "\uF652\u0000\u0000\uC542\uF653\uF75C\uC5AB\uC5AC"+ - "\u0000\uF845\u0000\uC642\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA8AA\u0000\uB36A\uB369"+ - "\uE05C\uE05D\u0000\uBBAE\uEBB9\uBDEA\uEBBA\uEEB9"+ - "\uA8AB\u0000\uD0B2\uAD76\uAD75\u0000\uD3E3\uB05F"+ - "\uD3E4\uD7D5\u0000\uD7D4\u0000\uD7D3\u0000\u0000"+ - "\uDBEE\uB658\u0000\u0000\uDBED\uB657\u0000\u0000"+ - "\u0000\uDBEF\uB656\u0000\uE05F\uE062\uE060\uE061"+ - "\uE065\uE05E\uE066\uE063\uE064\uBBB0\uE456\u0000"+ - "\u0000\uBBAF\u0000\uE7F2\uE7F0\u0000\u0000\uBDEB"+ - "\uE7EF\uE7F1\u0000\uBDEC\u0000\uEBBB\u0000\uEBBC"+ - "\uC1CD\u0000\uF34C\uF34E\uF34B\uF34D\uF4D6\uF654"+ - "\u0000\u0000\uF96F\uA8AC\uAD77\uD3E5\uD3E7\uD3E6"+ - "\u0000\uD7D8\uB36C\u0000\uD7D6\u0000\uB36B\uD7D9"+ - "\u0000\uD7DA\uD7D7\u0000\u0000\uDBFB\uB660\uDBF3"+ - "\uDBF9\u0000\u0000\uB65B\uB65E\uDBF2\uB659\uDBF6"+ - "\uE06C\uB65D\u0000\uDBF1\u0000\uDBF7\uDBF4\uDBFA"+ - "\uDBF0\uDBF8\uB65C\uB65F\uDBF5\uB65A\u0000\uB8F2"+ - "\uE068\uB8F1\uE06F\uE06E\uB8F8\u0000\uB8F9\uE070"+ - "\uB8F3\uE06D\uB8F7\uE072\uE069\u0000\uE06B\uB8F4"+ - "\uE067\uE06A\uE071\uB8F5\uE073\u0000\u0000\u0000"+ - "\u0000\u0000\uB8F6\u0000\uBBB1\uE45B\uE461\uE459"+ - "\uE462\u0000\uE458\uE45D\uE463\uE460\uE45F\uE45E"+ - "\u0000\uE457\uE45C\u0000\u0000\uE45A\u0000\uBDF1"+ - "\uBDEE\uE7FB\uE841\uE843\uE840\uE7F8\uE7FA\uE845"+ - "\uE842\uE7FC\uE846\uE7F9\uE844\uBDEF\uBDF5\uBDF3"+ - "\uE7F3\uBDF4\uBDF0\uE7F4\uE7F6\uE7F5\uE7FD\uE7FE"+ - "\u0000\uBDF2\u0000\uBDED\u0000\u0000\uE7F7\u0000"+ - "\uEBC6\uBFE2\u0000\uEBBD\uBFE3\uBFE6\uEBC2\u0000"+ - "\uEBBF\uBFE5\u0000\u0000\uEBC3\uEBC4\uEBBE\uEBC7"+ - "\uEBC0\uEBC5\uBFE4\u0000\uBFE1\uEBC1\u0000\uEEBF"+ - "\uC1D0\uC1CE\uC1D1\uC1CF\uEEBE\uEEBB\uEEBA\u0000"+ - "\uEEBD\u0000\u0000\uEEBC\uF145\uC2DE\uF0FB\uF0FA"+ - "\u0000\uC2D9\uF141\uF140\uF0F7\uF143\uF0FC\uC2DD"+ - "\uF0F9\uF142\uF0F8\uC2DA\uC2DC\uF0FD\uC2DB\uF0FE"+ - "\u0000\uF144\uF352\u0000\uC3DE\uF34F\u0000\uF353"+ - "\u0000\u0000\uC3DB\uF351\uC3E0\u0000\uC3DD\u0000"+ - "\uF350\u0000\uC3DF\uF354\uC3DA\u0000\u0000\u0000"+ - "\u0000\uC4BC\uC4BE\u0000\uF4D9\uC4BD\uF4D7\uC3DC"+ - "\uF4D8\uC4BB\uC543\uC545\uF656\uC544\uF655\u0000"+ - "\uF761\uC5AD\uF760\uC5AE\uF75E\uF75D\uF762\uF763"+ - "\uF846\u0000\uF75F\u0000\u0000\uF8C6\uF8C3\uF8C4"+ - "\uF8C5\uC65C\u0000\uF951\uF950\uF94F\uF970\u0000"+ - "\uF9BE\uF9AB\uC66E\uA8AD\uB060\u0000\u0000\u0000"+ - "\u0000\u0000\uB8FA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uBDF6\u0000\u0000\uEBC8\u0000\u0000"+ - "\uC2DF\u0000\uF355\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF9AC\uA8AE\uAAEE\uAD79\uAD78\u0000\uB063"+ - "\u0000\uD3E8\uB061\uD3E9\uB062\u0000\u0000\uD7DF"+ - "\uD7DB\u0000\u0000\uB36D\uD7DE\uD7DD\uD7DC\uB36E"+ - "\uD7E0\uD7E1\u0000\u0000\u0000\uDC43\uDC41\uDC45"+ - "\uDC46\uDC4C\u0000\uDC48\uDC4A\u0000\uDC42\uDBFC"+ - "\u0000\uDC49\u0000\u0000\uDC4B\uDC44\uDC47\uDBFD"+ - "\uB662\uDC40\uDBFE\uB661\uB663\u0000\uB8FD\uE075"; - - private final static String innerIndex5= - "\uE077\uE076\uE07B\uB8FB\u0000\uE078\uE074\uE079"+ - "\uE07A\uB8FC\uB8FE\uE07C\u0000\uE467\uE466\u0000"+ - "\uE464\uE465\uBBB3\uBBB5\uBBB2\uBBB4\uE84D\uE84E"+ - "\uE849\u0000\uE84A\uBDF8\uBDFD\uBDF7\uBDFE\uBDF9"+ - "\uE84B\u0000\u0000\uE84C\uE848\uBE40\uBDFB\u0000"+ - "\u0000\uBDFA\uBDFC\u0000\uE847\u0000\uEBCA\uBFE8"+ - "\u0000\u0000\uEBCC\uBFEA\uEBCF\uEBCB\uEBC9\uEBCE"+ - "\uBFE9\uEBCD\u0000\uBFE7\u0000\u0000\uC1D3\uC1D6"+ - "\uEEC1\u0000\uC1D4\uEEC0\uC1D2\uC1D5\uF146\uF147"+ - "\uF148\uC2E0\u0000\uF149\u0000\uC2E1\uC3E2\uF358"+ - "\uF359\uF357\uF356\uF35A\uC3E1\uF4DD\uF4DB\uF4DC"+ - "\uF4DE\uF4DA\uF4DF\uF658\u0000\uF659\uF657\uC546"+ - "\uF764\uC5AF\uF765\uF848\uF847\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA8AF\uB664\u0000\u0000\uB940"+ - "\u0000\u0000\u0000\uBBB6\u0000\u0000\uBFEC\u0000"+ - "\uBFEB\u0000\u0000\u0000\u0000\uC3E3\uC47C\uC547"+ - "\uA8B0\uB064\uB941\u0000\uF35B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBA6"+ - "\u0000\u0000\uA8B1\u0000\uA8B4\uA8B3\uA8B2\u0000"+ - "\u0000\uCBA5\u0000\uCDCD\u0000\uCDCF\uAAEF\u0000"+ - "\u0000\uAAF1\uCDCC\uCDCE\uAAF0\uCDD1\uCDD0\uCDD2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uD0B6\uD0B4\uAD7C\uD0B3\uADA3\uAD7E\uAD7B\u0000"+ - "\uADA4\u0000\uAD7D\uADA2\u0000\uADA1\uD0B5\u0000"+ - "\uAD7A\u0000\u0000\u0000\uB06A\uD3EB\uD3F1\uB067"+ - "\uB06E\u0000\uB069\uD3EE\uD3F0\uB06C\uD3EA\uD3ED"+ - "\uB068\uB065\uD3EC\uB06B\uD3EF\uB06D\uB066\u0000"+ - "\u0000\u0000\u0000\uD7E3\uD7E6\uB370\u0000\uB37A"+ - "\uB376\uD7E4\u0000\u0000\uB37E\uB377\uB37C\uB372"+ - "\u0000\uB36F\uB371\uB37D\uD7E5\uB375\uB378\uB374"+ - "\uB379\uD7E7\uB37B\uB373\uD7E2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uDC4D\uB665\uDC4F"+ - "\u0000\uB667\uB669\u0000\uDC4E\uB666\uB66A\u0000"+ - "\uB668\u0000\u0000\u0000\uB947\uE0A3\uB94F\uE07E"+ - "\u0000\uB950\uB945\u0000\uE0A1\u0000\u0000\uB94A"+ - "\u0000\uE0A2\uB943\uB942\u0000\uB94D\uB94C\uB94B"+ - "\uB949\uB94E\uE07D\uB944\uB946\uB948\u0000\u0000"+ - "\uBBB8\uBBBB\u0000\uBBBF\uBBB9\uBBBE\uBBBC\u0000"+ - "\uBBB7\u0000\uBBBD\uBBBA\u0000\u0000\u0000\uE852"+ - "\uBE43\uBE41\u0000\uE853\u0000\uBE44\uBE42\uE851"+ - "\uE850\u0000\uBFF0\uE84F\uBFEE\uBFED\uEBD0\uBE45"+ - "\uBFEF\uEBD1\uBFF2\uEBD2\uBFF1\uC1D8\uEEC3\uC1D7"+ - "\uC1DC\uC1DA\uC1DB\uC2E3\uC1D9\uEEC2\uEBD3\uC2E2"+ - "\uC2E4\u0000\uC3E4\uC3E5\u0000\uF4E0\u0000\uC5DE"+ - "\uC5DD\uA8B6\u0000\u0000\uCA55\uB06F\u0000\uCA52"+ - "\uCA53\uCA51\u0000\uCA54\u0000\u0000\uCBAA\uCBA7"+ - "\uCBAC\uCBA8\uA8B7\uA8BA\u0000\uCBA9\uA8B9\uCBAB"+ - "\u0000\u0000\uA8B8\u0000\u0000\u0000\u0000\uCDD5"+ - "\uCDD7\uAAF4\uCDD3\uCDD6\uCDD4\uAAF2\uAAF5\u0000"+ - "\uAAF3\u0000\u0000\u0000\u0000\uD0B8\uD0BC\uD0B9"+ - "\u0000\uADA7\u0000\uADA8\u0000\uD0BB\u0000\uD0BD"+ - "\uD0BF\u0000\uADA5\uD0BE\u0000\u0000\uADA6\u0000"+ - "\u0000\u0000\u0000\u0000\uD7EE\uD0BA\uD3F2\uD3FB"+ - "\uD3F9\uD3F4\uD3F5\uD3FA\uD3FC\uB071\u0000\uD3F7"+ - "\uD3F3\uB070\uB072\uD3F6\uD3FD\uD3F8\u0000\u0000"+ - "\uB3A1\uD7F1\uD7E9\uD7EF\uD7F0\uB3A2\u0000\uD7E8"+ - "\uD7EA\uD0B7\uD7EC\uD7ED\uD7EB\uB66C\u0000\u0000"+ - "\u0000\uDC56\uEBD4\uDC57\uDC54\uB3A3\uB66E\uDC53"+ - "\uDC59\uDC58\uB66B\uDC5C\uDC52\uDC5B\uDC50\uDC5A"+ - "\uDC55\uB66D\u0000\uE0AA\u0000\uE0A5\uE0AB\uE0A6"+ - "\uE0A4\uE0A7\uB951\u0000\uE0A9\u0000\uE0A8\uB952"+ - "\uBBC1\uBBC0\uE46E\uE471\uE469\uE46D\uBBC2\uE46C"+ - "\uE46A\uE470\uE46B\uE468\uE46F\u0000\uE859\uBE48"+ - "\uF14A\uE856\uE857\uE855\uDC51\uBE47\uE85A\uE854"+ - "\uBE46\uBE49\uE858\uEBD5\uBFF3\uEBD6\uEBD7\u0000"+ - "\uEEC4\uC1DD\uF14B\uF14C\u0000\u0000\uF14D\uF35D"+ - "\uF35C\uF4E2\u0000\uF4E1\uF65B\uF65C\uF65A\uF766"+ - "\uC5B0\uA8BB\uADAA\uADA9\uB075\uB074\uD440\uD441"+ - "\uD3FE\u0000\uB073\uD7F5\u0000\uD7F6\uD7F2\uB3A4"+ - "\uD7F3\u0000\uD7F4\u0000\u0000\u0000\u0000\uDC5F"+ - "\uDC61\uDC5D\uDC60\uB66F\uDC5E\uB670\u0000\u0000"+ - "\uDD73\uB955\uB954\u0000\uB953\u0000\uE0AC\uE0AD"+ - "\u0000\u0000\uE473\uE475\uBBC6\uBBC3\u0000\uBBC5"+ - "\uBBC4\uE474\uE472\u0000\u0000\u0000\u0000\u0000"+ - "\uE861\uE85E\uE85F\uBE4D\uE860\uE85B\uE85C\uBE4A"+ - "\u0000\uBE4B\uE85D\uBE4C\u0000\uEBDB\u0000\uEBDC"+ - "\uEBD9\uEBDA\uBFF4\uEBD8\u0000\u0000\u0000\u0000"+ - "\u0000\uEEC8\uEEC5\uEEC7\uC1E0\uEECB\uC1DF\uEEC9"+ - "\uEECC\uEECA\uEEC6\uC1DE\u0000\uF14F\u0000\uF150"+ - "\uF14E\u0000\uF152\uC2E5\uC2E6\uF35F\uC3E7\uF151"+ - "\uF35E\uC3E6\uF4E5\uF4E6\uC4BF\uF4E4\u0000\uF4E3"+ - "\u0000\uF65D\uC548\u0000\uF849\uF8C8\uF8C7\u0000"+ - "\uC643\uC65D\uF8C9\uF971\u0000\uC66F\uA8BC\uAAF6"+ - "\u0000\uB956\u0000\uC4C0\uA8BD\uADAB\uB3A5\uB671"+ - "\uC2E7\uAAF7\u0000\uD0C1\uD0C0\uD442\u0000\uB078"+ - "\uB076\uB07A\uD444\u0000\uB079\uB077\u0000\u0000"+ - "\u0000\u0000\uD443\uB3A8\uD7FC\u0000\uB3A7\uB3A9"+ - "\uD842\uB3AB\uD7FE\uD840\uD7F7\uB3AA\uD843\u0000"+ - "\u0000\uD7F9\u0000\uD7FA\uD7F8\uB3A6\u0000\uD841"+ - "\uD7FB\uD7FD\u0000\u0000\u0000\uDC6D\u0000\uDC6C"+ - "\uDC6A\uDC62\uDC71\uDC65\uDC6F\uDC76\uDC6E\uB679"+ - "\u0000\uB675\uDC63\u0000\uDC69\uB677\u0000\uDC68"+ - "\uB678\uB67A\uDC6B\u0000\uB672\uB673\uDC77\uDC75"+ - "\u0000\uDC74\uDC66\u0000\uDC72\u0000\uB676\u0000"+ - "\u0000\u0000\u0000\uB674\uDC73\uDC64\uDC67\uDC70"+ - "\u0000\u0000\u0000\u0000\u0000\uE4BA\uE0B7\u0000"+ - "\uE0B0\uE0C3\uE0CC\uE0B3\uB961\u0000\uE0C0\uB957"+ - "\uB959\uB965\uE0B1\u0000\u0000\uB95A\uB95C\uB966"+ - "\uB95B\u0000\u0000\u0000\u0000\uB964\uE0B9\u0000"+ - "\uE0AE\uB962\uE0B8\uB95E\uE0CA\uB963\uE0C8\uE0BC"+ - "\uE0C6\uB960\uE0AF\uE0C9\uE0C4\u0000\uE0CB\uB958"+ - "\u0000\u0000\uB967\uB95D\u0000\u0000\uE0B5\u0000"+ - "\uE0BD\uE0C1\u0000\uE0C5\uB95F\uE0B4\uE0B2\uE0BE"+ - "\u0000\u0000\u0000\u0000\uE0BB\uE0BA\u0000\uE0BF"+ - "\uE0C2\u0000\uE0C7\u0000\u0000\u0000\uE478\u0000"+ - "\uBBC7\uE4A4\uE47A\uBBCC\uBBD0\uE4AD\uE4B5\uE4A6"+ - "\uBBC8\u0000\uE4AA\uE0B6\u0000\uBBC9\uE4B1\uE4B6"+ - "\uE4AE\u0000\uE4B0\uE4B9\uE4B2\uE47E\uE4A9\u0000"+ - "\u0000\uBBD1\u0000\uBBCD\uE47C\uE4AB\uBBCB\uE4A5"+ - "\uBBCA\uE4B3\uE4A2\uE479\uBBCE\uE4B8\u0000\u0000"+ - "\uE47B\uE4AF\uE4AC\uE4A7\uE477\uE476\uE4A1\uE4B4"+ - "\uBBCF\uE4B7\uE47D\uE4A3\uBE52\u0000\u0000\u0000"+ - "\u0000\u0000\uBE5A\uBE55\uE8A4\uE8A1\uE867\uBE50"+ - "\u0000\u0000\u0000\uBE4F\uBE56\u0000\u0000\u0000"+ - "\uE865\uBE54\uE871\uE863\uE864\uBE4E\uE8A3\uBE58"+ - "\uE874\uE879\uE873\uEBEE\uE86F\uE877\uE875\uE868"+ - "\uE862\uE87D\uBE57\uE87E\u0000\uE878\u0000\uE86D"+ - "\uE86B\uE866\u0000\u0000\u0000\uE86E\uE87B\uE86A"+ - "\uE87A\uE8A2\u0000\u0000\uBE53\u0000\uE876\uE87C"+ - "\uE872\uE86C\uBE51\u0000\u0000\u0000\uE4A8\uE870"+ - "\uBE59\uE869\u0000\u0000\u0000\u0000\u0000\uEBF4"+ - "\uBFF7\uEBF3\uEBF0\uEC44\uBFFB\u0000\uEC41\uEBF8"+ - "\uEC43\uEBE9\uEBF6\u0000\uBFFD\u0000\uEBE1\u0000"+ - "\uEBDF\uEC42\u0000\uEC40\uEBFE\uEBED\uEBEC\uEBE2"+ - "\uC040\u0000\uEBE8\uEBF2\uEBFD\uC043\uEC45\u0000"+ - "\uC1E8\uC045\uBFFE\uEBE6\u0000\uEBEF\uEBDE\uEBE0"+ - "\uBFF5\uC042\uBFFA\uEBE7\uEBF7\uEBF1\uC041\uEBDD"+ - "\uC1E3\uEBF9\uEBFC\uBFFC\u0000\uEBEB\uC044\uBFF9"+ - "\u0000\u0000\u0000\uBFF8\uEBF5\uEBFB\uBFF6\u0000"+ - "\uEBE4\uEBFA\u0000\u0000\uEBE5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uEBEA\uEED2"+ - "\u0000\uEED7\uC1E5\uC1E7\uEEDD\uC1E1\uEEEC\uEEE3"+ - "\uEED8\uEED9\uEEE2\u0000\uC1EE\uEEE1\uEED1\uEEE0"+ - "\uEED4\uEEED\uC1ED\uC1EB\uEED5\u0000\uEEE8\u0000"+ - "\uEEDA\uEEE7\u0000\uEEE9\uEED0\uC1E6\u0000\uEEEA"+ - "\u0000\u0000\uEEDE\u0000\uC1EA\uEEDB\u0000\u0000"+ - "\uC1EC\uEEE4\u0000\u0000\u0000\uC1E4\uEED6\uEEE5"+ - "\u0000\uEEDF\uEBE3\uEEE6\uEED3\u0000\uC1E9\u0000"+ - "\uEEEB\u0000\uC1E2\uEECE\u0000\u0000\u0000\u0000"+ - "\uF160\uF159\uC2E9\u0000\uF154\uF163\uF15B\uEEDC"+ - "\u0000\uF165\uF155\u0000\uC2E8\uF15F\uC2EA\uC2F2"+ - "\uC2F0\uF161\uC2F1\uF157\u0000\uF158\uF15D\uF162"+ - "\u0000\uEECD\uC2EB\uF16A\uF167\uF16B\uF15E\uF15A"+ - "\uF168\uF36A\uF15C\u0000\uC2EE\u0000\uC2ED\uEECF"+ - "\uC2EF\uF164\uF166\uC2EC\uF169\uF153\u0000\uF156"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uF373\u0000\uF363\uC3EB\uF371\u0000\u0000\uF361"+ - "\uC3EC\u0000\uF36C\u0000\uF368\uC3F1\uF372\uF362"+ - "\uF365\uC3E9\uF374\u0000\uF36D\uF370\uC3EF\uC3F4"+ - "\uC3F2\uF369\uF364\u0000\uC3ED\uC3EE\uF360\uC3EA"+ - "\u0000\uC3E8\uC3F0\uF36F\uC3F3\u0000\uF36B\uF375"+ - "\uC3F5\u0000\u0000\u0000\uF367\u0000\uF36E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uF4F3\uF542\uF4F5"+ - "\uF4FC\uF366\uF4FA\uF4E9\uF540\uC4C3\uF4ED\uF4FE"+ - "\uF4F4\u0000\u0000\uC4C2\u0000\u0000\uF544\uF4F6"+ - "\u0000\uF4FB\uF4FD\uF4E7\uF541\uF4F2\uF4F7\uF4EB"+ - "\uF4EF\uF543\uF4F9\uF4E8\uF4EC\uF4EE\uF4F8\u0000"+ - "\uC4C1\uF4F1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uF4EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uF4F0\uF661\uF666\uC54F\uF668\u0000\uC549\u0000"+ - "\uF664\uF66A\uC54E\uC54A\u0000\uC54B\uF660\uF667"+ - "\uC54D\uF665\uC54C\uF65F\uF663\uF662\u0000\uF65E"+ - "\uF669\u0000\u0000\u0000\uC5B1\uF76D\uF770\uF76C"+ - "\uF76E\uF76F\uF769\uF76A\uF767\u0000\u0000\uF76B"+ - "\uF768\uC5B2\uC5B3\u0000\u0000\uF84B\u0000\uF84D"+ - "\u0000\u0000\u0000\u0000\u0000\uF84C\uF84E\u0000"+ - "\uC5E0\u0000\uF84A\uC5DF\uC5E1\u0000\u0000\u0000"+ - "\uF8CB\uF8CC\uC644\uF8CA\u0000\uF953\uF952\uF954"+ - "\uC65F\uF955\uC65E\uF956\uF972\uF975\uF974\uC668"+ - "\uF973\u0000\u0000\u0000\uC672\uC670\uC671\uC677"+ - "\uF9C0\uF9C1\uF9BF\uF9C9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uAAF8"+ - "\u0000\u0000\uD844\uDC78\uE8A5\uF376\u0000\u0000"+ - "\uAAF9\u0000\uADAC\uB07B\u0000\u0000\uD845\u0000"+ - "\uD846\uB3AC\u0000\uB67D\uDC7A\uDC79\uB6A3\uB67C"+ - "\uDC7B\uB67E\uB6A2\uB6A1\uB67B\u0000\u0000\u0000"+ - "\uB968\u0000\u0000\uE0D0\uE0CE\u0000\uE0CF\uE0CD"+ - "\u0000\uBBD2\u0000\uBBD5\uBBD7\uBBD6\u0000\u0000"+ - "\uBBD3\uBBD4\u0000\uE8A7\uE8A6\uBE5B\uE8A8\u0000"+ - "\uE8A9\uBE5C\u0000\u0000\u0000\uEC4D\uEC4B\uEEF3"+ - "\u0000\uEC49\uEC4A\uC046\uEC46\uEC4E\uEC48\uEC4C"+ - "\uEEEF\u0000\u0000\uEEF1\u0000\uEEF2\uC1F3\uEEEE"+ - "\uC1F2\uEEF0\uC1EF\uC1F0\uC1F1\uEC47\u0000\u0000"+ - "\uC2F5\uF16E\uF16C\uF16D\uC2F3\uC2F6\uC2F4\u0000"+ - "\u0000\u0000\uF377\uF378\uC3F6\u0000\uF545\uF547"+ - "\uF546\uC4C4\uC550\uF66D\uF66C\uF66B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uAAFA\u0000\uC9AA\u0000"+ - "\uCA58\uA6E9\uCA56\uCA59\uCA57\u0000\u0000\u0000"+ - "\uCBAE\u0000\uA8C1\u0000\uA8C2\uCBB0\uA8BF\uCBAF"+ - "\uCBAD\uA8C0\uA8BE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uCDD8\uCDDB\uAAFD\uCDDA\uCDD9\u0000\uAAFC"+ - "\uAAFB\u0000\uAB40\uCDDC\uAAFE\u0000\u0000\u0000"+ - "\u0000\u0000\uD0C6\uADAE\uADAF\uADB0\uD0C7\uD0C3"+ - "\uADAD\uD0C4\u0000\uD0C5\uD0C2\u0000\u0000\u0000"+ - "\uB0A4\u0000\u0000\uB0A1\uD445\uB0A2\uB0A5\uD446"+ - "\u0000\uB07E\uB07C\uB07D\uB0A3\u0000\u0000\u0000"+ - "\u0000\u0000\uB3AD\uD849\uB3B5\uD848\u0000\uD84B"+ - "\uB3B1\uD84A\uB6AB\uB3AF\uB3B2\uB3AE\uB3B3\uB3B4"+ - "\uB3B0\u0000\u0000\u0000\uD847\uB6A7\uDC7D\u0000"+ - "\uDCA3\u0000\u0000\uDCA2\uB6AC\uB6A8\uB6A9\uDC7C"+ - "\uDC7E\uDCA1\uB6A4\uB6A6\u0000\uB6AA\uB6A5\u0000"+ - "\u0000\uE0D3\uE0D1\uE0D2\uB96A\uB96B\u0000\uE0D4"+ - "\uB969\uBBD8\u0000\uBBDA\uBBD9\u0000\uE4BB\u0000"+ - "\u0000\uE4BC\uE8AB\u0000\uE8AA\u0000\u0000\uC047"+ - "\uC048\uEC4F\uC049\u0000\uEEF6\u0000\uEEF4\u0000"+ - "\uEEF5\uC1F4\u0000\uF16F\uC3F7\u0000\u0000\u0000"+ - "\uC1F5\uAB41\u0000\uB0A6\uD447\u0000\u0000\uD84C"+ - "\uB3B6\uB6AD\uDCA4\uDCA6\uB6AF\uB6AE\uB6B0\uB6B1"+ - "\uDCA5\uB96E\uB96F\uB96D\uBBDB\uB96C\uE0D5\u0000"+ - "\u0000\u0000\uBBDC\uE8AC\uEC50\uC04A\uC1F6\uF170"+ - "\uF174\uC2F9\uF171\uC2FA\uC2F8\uF175\uC2FB\uF173"+ - "\u0000\uF379\uC2F7\uC3F8\u0000\uF8CD\u0000\u0000"+ - "\uAB42\uB3B8\uB3B7\u0000\u0000\u0000\u0000\uB6B2"+ - "\uDCA8\uDCA7\uB6B3\u0000\u0000\uE0D9\uB973\uB970"+ - "\uE0D8\uB972\uE0D6\uB971\u0000\uE0D7\u0000\uE4BD"+ - "\uBBDD\u0000\uE8AF\u0000\uBE5D\uE8AD\uBE5E\uBE5F"+ - "\uE8AE\uBE60\u0000\uEC51\u0000\uC04E\uC04B\uC050"+ - "\uEC53\uC04C\uEC52\uC04F\u0000\u0000\uC04D\u0000"+ - "\uEEF9\uEEFB\u0000\u0000\uC1F7\uEEFA\uC1F8\uEEF8"+ - "\uEEF7\u0000\uF177\uF176\uC2FC\uF178\uF37E\uC3FA"+ - "\uF37D\uF37A\uC3F9\uF37B\uF37C\u0000\uF548\uF549"+ - "\uC4C5\u0000\uC553\u0000\u0000\uF66E\u0000\u0000"+ - "\uC551\uC552\uF66F\u0000\u0000\uC5B4\uC5B5\uF771"+ - "\u0000\u0000\uC645\uF8CF\uC647\u0000\uF8CE\uF8D0"+ - "\uC646\uF957\u0000\uF9AD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uAB43\u0000\u0000\u0000\uB974\u0000"+ - "\uE4BE\u0000\uE8B0\uC051\uC052\u0000\uAB44\u0000"+ - "\uBE61\uC3FB\uADB1\u0000\u0000\u0000\uC053\u0000"+ - "\uC5E2\uADB2\uD84D\u0000\uDCA9\u0000\uDCAB\u0000"+ - "\uDCAA\u0000\uE0DD\uE0DA\uB975\u0000\uB976\uE0DB"+ - "\uE0DC\u0000\uE4C0\uE4C5\uBBDE\uE4BF\uE4C1\uE4C8"+ - "\uE4C3\uE4C7\uE4C4\uE4C2\uE4C6\uBBDF\u0000\u0000"+ - "\uE8B3\u0000\uE8B1\uBE63\u0000\uBE62\uE8B2\uBE64"+ - "\u0000\u0000\u0000\u0000\uEC56\u0000\u0000\uEC55"+ - "\uC054\uEC54\uEEFC\u0000\uEEFE\uEF41\uEF40\u0000"+ - "\uC1F9\uEEFD\uF1A1\uC2FD\uF17D\uF1A2\uC2FE\u0000"+ - "\uF17B\u0000\uF17E\uF17C\uF179\uC340\uF17A\u0000"+ - "\u0000\u0000\u0000\uF3A1\u0000\u0000\uF3A3\uF3A2"+ - "\u0000\uF54A\u0000\uF54B\u0000\u0000\u0000\uF670"+ - "\u0000\uC5B7\u0000\uC5B6\uF84F\uF850\uC648\uF8D1"+ - "\u0000\uC669\u0000\uADB3\uB6B4\uE4CA\uE4C9\uE8B5"+ - "\uE8B4\u0000\u0000\uC1FA\uEF43\uEF42\uF1A5\uF1A3"+ - "\uF1A6\uF1A4\u0000\u0000\uC3FC\uF3A4\uF3A5\uF3A6"+ - "\u0000\uF671\u0000\uF772\u0000\uF8D2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uADB4\u0000\u0000"+ - "\uEC57\uEF44\u0000\uADB5\u0000\u0000\uBBE0\u0000"+ - "\uEC58\uC341\uF1A7\uC3FD\u0000\uF54C\uF54D\uC554"+ - "\uF851\uADB6\uB3BB\uB3BC\uD84E\uB6B5\uB6B6\uDCAC"+ - "\uB6B7\u0000\uB97A\u0000\uB97C\uE0DF\uE0E0\uE0DE"+ - "\uB977\uB978\uB97B\uB979\u0000\u0000\uE4CB\uBBE1"+ - "\uBBE2\u0000\u0000\uE8BC\uBE67\uE8B7\uE8B6\u0000"+ - "\uE8BB\uBE65\u0000\u0000\uC05B\u0000\uE8B8\uE8BD"+ - "\uE8BA\uE8B9\u0000\uBE66\u0000\uC059\u0000\uEC5A"+ - "\uC055\u0000\uEC5B\u0000\u0000\uEC59\u0000\uC058"+ - "\uC056\uC05A\u0000\uC057\u0000\u0000\u0000\u0000"+ - "\u0000\uEF45\u0000\uEF4A\uEF46\uEF49\uC1FB\u0000"+ - "\uEDD4\uEF48\uEF47\u0000\uC344\uC342\uC345\uC343"+ - "\uF1A8\uF1A9\uF1AA\uC346\u0000\u0000\u0000\uF3AA"+ - "\uC440\uF3A8\u0000\uC441\uF3A7\uF3A9\uC3FE\uF551"+ - "\uF54E\u0000\uF54F\uF550\uF672\uC556\u0000\uC555"+ - "\u0000\uF774\uF773\uC5B8\u0000\u0000\u0000\uC5E3"+ - "\uC649\uC660\uF958\uF9AE\uF9AF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uADB7\uDCAD\u0000\u0000\uE0E1\uE4CC\uE4CD\uBBE3"+ - "\u0000\uBBE4\uE8BE\uBE68\u0000\u0000\uC1FC\u0000"+ - "\uF1AB\u0000\uC347\uF3AD\uC442\uF3AC\uF3AE\uF3AB"+ - "\uF675\uF552\uF553\u0000\uC4C6\u0000\uF674\u0000"+ - "\u0000\uF673\u0000\uF775\uF9B0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uADB8\u0000\u0000\u0000\uADB9"+ - "\u0000\u0000\uB0A7\uD448\u0000\uD84F\u0000\uB6B8"+ - "\u0000\uB6BB\uB6B9\uDCAE\u0000\uB6BD\u0000\uB6BA"+ - "\u0000\u0000\uB6BC\u0000\uB97E\u0000\uE0E2\u0000"+ - "\u0000\uE0E3\uE8C0\u0000\uB97D\uB9A1\uB9A2\u0000"+ - "\uE4CF\u0000\uE4CE\uBBE5\u0000\uBBE6\u0000\uE4D0"+ - "\uE8BF\uBBE8\uBE69\u0000\uBBE7\u0000\u0000\u0000"+ - "\uC05C\uE8C1\uBE6B\uBE6A\uE8C2\uE8C5\uE8C3\uE8C4"+ - "\uBE6C\u0000\uC061\uC05F\u0000\u0000\uC05E\uEC5D"+ - "\u0000\uC060\u0000\u0000\uEC5C\uEF4B\u0000\uEC5E"+ - "\uC05D\uEC5F\uEF4E\uEF4C\uEF4D\uEF52\uC34B\uEF51"+ - "\uEF54\uEF53\uEF50\uEF4F\u0000\uC1FD\u0000\u0000"+ - "\u0000\u0000\uF1AE\u0000\uF1AD\uC34A\uC348\uC349"+ - "\u0000\uF1AC\u0000\uF3B1\u0000\uC443\u0000\uF3B0"+ - "\uF3AF\uC444\u0000\uF558\uF557\u0000\uF555\u0000"+ - "\uF554\uC4C8\uC4C7\uF559\uF776\uC5B9\uF677\uC557"+ - "\uF676\uF556\u0000\uF777\uC5E4\u0000\uC661\uF959"+ - "\u0000\uF9B1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uADBA\uD850"+ - "\uEF55\uADBB\u0000\u0000\uE4D2\uE4D1\uEC60\u0000"+ - "\u0000\uEF57\u0000\uEF56\u0000\uC34C\uF3B2\uF3B3"+ - "\uC4C9\u0000\u0000\uF9B2\uB0A8\uB6BF\uB6BE\uE0E4"+ - "\uE0E6\uB9A4\uE0E5\uB9A3\uB9A5\uE0E7\u0000\u0000"+ - "\u0000\uE4D4\uE4D6\uE4D5\u0000\uE4D8\u0000\u0000"+ - "\u0000\uBBE9\uE4D7\uE4D3\u0000\u0000\u0000\uE4D9"+ - "\u0000\uE8CC\u0000\uE8CF\uE8D1\uE8C7\uE8CB\uE8C8"+ - "\uBE6E\uBE71\uBE73\uE8C9\uE8CA\uBE72\uE8CD\uE8D0"+ - "\uE8CE\uBE74\u0000\uBE70\uE8C6\uBE6D\u0000\uBE6F"+ - "\u0000\u0000\uC063\uEC66\uEC64\uEC63\u0000\uEC69"+ - "\u0000\uEC68\uEC67\u0000\uEC62\uC062\uEC61\u0000"+ - "\uEC65\uC064\u0000\u0000\uEF5A\u0000\uEF5E\uEF5B"+ - "\uEF5D\uEF5C\uEF59\uEF5F\uEF62\uEF60\uEF61\uC240"+ - "\u0000\uC1FE\uEF58\uEF63\uF1B3\uF1B6\uF1B8\uF1B7"+ - "\u0000\uF1B1\uF1B5\uF1B0\u0000\uF1B2\uC34D\uF1AF"+ - "\u0000\uF1B4\u0000\u0000\uF3C0\uF3B5\uC445\u0000"+ - "\u0000\uC446\uF3B4\uF3B9\uF3BF\uF3B7\uF3BE\u0000"+ - "\uF3BB\u0000\uF3BA\uF3BD\uF3B8\uF3B6\u0000\uF3BC"+ - "\u0000\uF560\uF55E\uC4CA\uF55D\uF563\uF561\u0000"+ - "\uC4CB\uF55C\uF55A\u0000\uF55B\uC4CD\uF55F\uC4CC"+ - "\uF562\uF678\uF67E\u0000\u0000\uF679\uC55B\uF6A1"+ - "\uC55A\uF67D\uF67C\uC559\uF67B\uC558\uF67A\u0000"+ - "\uF77D\uF7A1\uF77E\u0000\uF77B\uC5BB\uF778\uF77C"+ - "\uF7A3\u0000\uF7A2\uF779\uF77A\uC5BA\uF852\uC5E7"+ - "\u0000\uF853\uC5E5\uC5E6\u0000\u0000\uF8D3\uC64A"+ - "\uF976\u0000\uC66A\u0000\uF9B3\uC66B\uF9B4\uF9B5"+ - "\uF9C3\uF9C2\uC67A\uF9CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uB0A9\u0000\u0000\uE0E9\u0000\uE0E8\u0000\uBBEA"+ - "\uBBEB\uE4DA\u0000\uE8D2\uEC6C\u0000\u0000\uBE75"+ - "\uC065\uEC6A\u0000\uEC6D\uC066\u0000\uEF64\uEC6B"+ - "\uF1B9\uC34E\uF3C1\u0000\u0000\u0000\uF566\uF564"+ - "\u0000\u0000\uF565\u0000\u0000\uF6A2\u0000\uC55C"+ - "\uF7A4\uC5EA\uC5BC\uC5E8\uC5E9\uF8D4\uC662\u0000"+ - "\uB0AA\u0000\u0000\u0000\uF1BA\u0000\u0000\uD449"+ - "\u0000\uB9A6\u0000\uE4DB\u0000\u0000\uBBEC\uE4DC"+ - "\u0000\u0000\u0000\uE8D4\uE8D3\uC068\uBE76\uBE77"+ - "\u0000\uE8D7\uE8D6\uE8D5\u0000\u0000\uEC6E\uEC71"+ - "\u0000\uEC70\uEC6F\uC067\uEF68\uEF66\uEF65\u0000"+ - "\u0000\uEF67\u0000\uC34F\uF1BC\uF1BD\uC350\u0000"+ - "\uF1BB\u0000\uF3C3\uF3C2\uF3C5\uC447\uF3C4\u0000"+ - "\uF567\uF569\uF568\u0000\u0000\uF6A3\uF6A6\uF6A4"+ - "\uF6A5\uF7A5\uC5BD\u0000\u0000\u0000\uF854\uF855"+ - "\uF856\u0000\uC64B\uC663\uF9B6\uB0AB\u0000\uBE78"+ - "\uC069\uF1BE\u0000\uF7A6\u0000\u0000\uF9C4\uD44A"+ - "\u0000\uC67B\uB0AC\uEC72\u0000\uF1BF\u0000\uF3C6"+ - "\u0000\u0000\uF6A7\uF7A7\uB0AD\u0000\uE4DD\uE4DE"+ - "\u0000\uBBED\uBBEE\uE8D9\uBE7A\uBE79\uE8D8\u0000"+ - "\uEF69\u0000\uF1C0\uF1C2\uF1C1\uC353\uC352\uC351"+ - "\u0000\uC55E\uF6A8\u0000\uC55D\uF7A9\uF7A8\u0000"+ - "\uC64C\uF8D5\uB3BD\uE0EA\u0000\u0000\u0000\uE4E1"+ - "\uE4DF\uE4E0\u0000\u0000\uE8E2\u0000\uE8DD\uE8DA"+ - "\uE8E1\u0000\u0000\u0000\uE8E3\u0000\u0000\uBE7C"+ - "\uE8E0\uE8DC\u0000\u0000\uE8DB\uE8DF\uE8DE\uBE7B"+ - "\u0000\u0000\uEC7D\uEC78\uEC76\uECA1\uEC77\u0000"+ - "\uEC73\u0000\uEC79\u0000\u0000\uEC74\uEF72\uEC75"+ - "\uECA2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uEC7C\uC06A\uEC7B\uEC7A\u0000\uEC7E\u0000\u0000"+ - "\u0000\u0000\uEF6A\uEF6D\u0000\u0000\uEF6C\u0000"+ - "\uEF74\uEF6F\uEF73\u0000\uEF71\uEF70\uEF6E\u0000"+ - "\uEF6B\u0000\uC243\uC242\u0000\uC244\uC241\uEF75"+ - "\u0000\u0000\u0000\u0000\u0000\uF1C8\uF1CB\u0000"+ - "\uF1C9\uF1CD\u0000\u0000\u0000\uF1CE\u0000\uF1C6"+ - "\uC358\uF1C7\u0000\uF1C5\uF1CC\u0000\uF1C4\uF1C3"+ - "\uC357\uC355\uC354\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uF1CA\uF3CF\uF3D5\uC44A\uF3D0"+ - "\u0000\uF3D3\uF3D7\uC44B\uF3D2\u0000\uF3CA\u0000"+ - "\uF3C9\uF3D6\uF3CD\u0000\uF3CB\uF3D4\uF3CC\uC449"+ - "\uC448\u0000\uF3C7\uF3C8\uF3D1\u0000\u0000\u0000"+ - "\uF3CE\u0000\u0000\u0000\u0000\u0000\u0000\uF56C"+ - "\uF56F\u0000\u0000\u0000\u0000\uC356\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uF56D\uF573\uF571"+ - "\uF56B\uF576\u0000\uF56A\u0000\uC4CF\uF572\u0000"+ - "\u0000\u0000\uF56E\uC4CE\uF575\u0000\u0000\uF574"+ - "\u0000\u0000\u0000\u0000\uF6AB\uF6AA\u0000\u0000"+ - "\u0000\uF6B1\u0000\uF6AD\uF6B0\uC560\u0000\u0000"+ - "\uF6AE\uF6AF\u0000\uF6A9\uF6AC\uC55F\u0000\u0000"+ - "\u0000\uC5BF\uF7B4\uF7AF\uF7B3\u0000\uF7B6\uF7B2"+ - "\u0000\uF7AE\u0000\uC5C1\uF7B1\uF7B5\uC5C0\uF7AC"+ - "\uF570\uF7B0\u0000\u0000\uF7AD\u0000\uF7AA\u0000"+ - "\uF7AB\uC5BE\uF85A\uF85C\uF85F\uF85B\uF860\u0000"+ - "\uF859\u0000\uF857\u0000\uC5EB\uF85D\uC5ED\uC5EC"+ - "\uF858\uF85E\u0000\u0000\u0000\u0000\uF8DA\uC64D"+ - "\uF8DB\u0000\uF8D9\uF8D6\u0000\u0000\uF8D8\uF8D7"+ - "\uF95A\u0000\u0000\u0000\u0000\uF95C\uF95B\u0000"+ - "\u0000\uF979\u0000\uF978\uF977\uF97A\u0000\uC673"+ - "\uC674\uF9CA\uF9CE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uB3BE\uDCAF\uE0ED"+ - "\u0000\uB9A7\uE0EB\u0000\u0000\uE0EC\u0000\u0000"+ - "\u0000\uE4E2\uE4E3\uBBF1\uBBEF\uE4E4\uBBF0\uE8E8"+ - "\u0000\uE8EB\uE8E5\uE8EC\uE8E4\uE8E6\u0000\uE8E7"+ - "\uE8EA\u0000\u0000\uBEA1\uE8EF\uE8EE\uBE7D\uE8E9"+ - "\uE8ED\uBE7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uECAC\u0000\uC06F\u0000\uECA7\uC06B\u0000\uECA4"+ - "\uECAA\uECAD\u0000\uC070\u0000\uECA9\uECA6\uECAE"+ - "\uECA5\u0000\uECAB\uC06C\u0000\uECA3\uC06D\u0000"+ - "\uC06E\uECA8\u0000\u0000\u0000\uEFA9\uEF7A\uEF7B"+ - "\uEF7E\uEF7C\u0000\uEF76\u0000\u0000\uEF79\uEFA5"+ - "\uEF7D\u0000\u0000\uC245\u0000\uEFA7\uEFA4\uC246"+ - "\uEFA6\uEF77\uEFA2\uEFA3\u0000\uEFA1\u0000\u0000"+ - "\u0000\u0000\uF1D2\uF1D4\uF1D7\u0000\u0000\uF1D1"+ - "\u0000\uC359\uF1D9\uF1D0\uF1DA\u0000\uF1D6\uF1D8"+ - "\uF1DC\uF1D5\uF1DD\uF1D3\uF1CF\uC35A\u0000\uF1DB"+ - "\uC35B\uC44D\u0000\u0000\u0000\u0000\u0000\uEF78"+ - "\uF3F1\uF3E8\uC44F\uF3E4\uC450\u0000\u0000\uF3ED"+ - "\uF3E7\uF3DD\uC44E\uF3EA\uF3E5\uF3E6\u0000\uF3D8"+ - "\uF3DF\uF3EE\u0000\uF3EB\u0000\uF3E3\u0000\uF3EF"+ - "\uF3DE\uF3D9\uF3EC\u0000\uF3DB\uF3E9\uF3E0\uF3F0"+ - "\uF3DC\uC44C\uF3DA\uF3E1\uF3E2\u0000\u0000\u0000"+ - "\uF57D\u0000\uF57B\u0000\uF5A2\u0000\uF5AE\uF5A5"+ - "\uF57C\uF578\uF5A7\uF57E\uF5A3\uF57A\uF5AA\uF577"+ - "\uF5A1\uF5A6\uF5A8\uF5AB\uF579\u0000\uF5AF\uF5B0"+ - "\uF5A9\uF5AD\uF5A4\u0000\uF6C1\uF6C4\u0000\uC561"+ - "\u0000\uF6C3\uF6C8\uF6C6\uC562\uF6BD\uF6B3\uF6B2"+ - "\uC564\uF6BF\uF6C0\uF6BC\uF6B4\u0000\uF6B9\uF5AC"+ - "\u0000\uF6B5\uC563\uF6BB\u0000\uF6BA\u0000\uF6B6"+ - "\uF6C2\u0000\uF6B7\uF7BB\uF6C5\uF6C7\uF6BE\uF6B8"+ - "\uF7BC\uF7BE\uF7B8\uC5C2\u0000\uF7C5\uF7C3\uC5C3"+ - "\uF7C2\uF7C1\uF7BA\uF7B7\uF7BD\uF7C6\uF7B9\uF7BF"+ - "\u0000\uF869\uF86E\uF864\uF867\uC5EE\uF86B\u0000"+ - "\uF872\uF7C0\u0000\uF865\uF86F\uF873\uF86A\uF863"+ - "\uF86D\u0000\uF86C\uF871\uF870\uF7C4\uF868\uF862"+ - "\uF866\uC64E\uC64F\uF861\u0000\uF8E6\uF8DD\uF8E5"+ - "\uF8E2\uF8E3\uF8DC\uF8DF\uF8E7\uF8E1\uF8E0\uF8DE"+ - "\u0000\uF8E4\u0000\uF95D\u0000\uF95E\u0000\uF960"+ - "\uF95F\uF962\uF961\uF97C\uF97B\uF9B7\u0000\uF9B8"+ - "\u0000\uF9C5\uC678\uC67C\u0000\uF9CF\uC67D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uB3BF\u0000\u0000"+ - "\u0000\uC4D0\uF6C9\u0000\uC650\uC651\u0000\uB3C0"+ - "\uE0EE\u0000\uB9A8\uE8F0\u0000\u0000\uECB0\uECB1"+ - "\uECAF\uEFAB\uEFAA\uC247\uF1DF\uEFAC\uF1DE\u0000"+ - "\u0000\uF3F3\uC451\uC453\uF3F2\u0000\u0000\uC452"+ - "\u0000\uF5B1\uF5B3\uF5B2\uF6CA\uC565\u0000\uC5EF"+ - "\uF8E8\uF963\u0000\u0000\uF9D2\uB3C1\u0000\uE4E5"+ - "\u0000\uBEA2\u0000\u0000\u0000\uECB3\uECB2\u0000"+ - "\uEFAD\u0000\u0000\u0000\uC454\uC4D1\uF7C7\uF9CB"+ - "\u0000\u0000\u0000\uB3C2\uBBF2\u0000\uBEA3\u0000"+ - "\uF3F4\u0000\uF874\uB6C0\u0000\u0000\u0000\u0000"+ - "\uEFAE\u0000\u0000\u0000\uC664\uB6C1\uBEA4\uC248"+ - "\uF875\uB6C2\u0000\uE8F1\uC072\uECB4\uECB5\u0000"+ - "\uC071\u0000\uEFAF\uC24C\uC24A\uC24B\uC249\uF1E0"+ - "\uC35C\u0000\u0000\u0000\uF5B5\uF5B4\uF5B7\uF5B6"+ - "\uC4D2\u0000\u0000\uF6CB\u0000\uF6CD\uF6CC\uC566"+ - "\uF7C8\u0000\uF876\uF877\uC5F0\uF964\uF97D\uC675"+ - "\u0000\uDCB0\uECB6\uEFB0\uF3F5\uE0EF\u0000\uEFB1"; - - private final static String innerIndex6= - "\uF1E2\uF1E1\u0000\u0000\u0000\u0000\uF878\uC652"+ - "\u0000\uF965\uF97E\u0000\u0000\u0000\uB9A9\uE8F2"+ - "\uE8F3\u0000\uECB7\uB9AA\u0000\uC35D\uF1E3\u0000"+ - "\uF6CF\uC567\uF6D0\uF6CE\uF879\u0000\uF8E9\u0000"+ - "\uB9AB\u0000\uEFB4\uEFB3\uEFB2\uF1E4\u0000\u0000"+ - "\uF1E8\uF1E7\uF1E6\uF1E5\uC35E\uF3F6\uF5B9\uC4D3"+ - "\uF5B8\uF6D1\uF7CB\uF7CA\uC5C4\uF7C9\uF87C\uF87B"+ - "\uF87A\u0000\u0000\uBBF3\u0000\uECB8\uC24D\u0000"+ - "\uF3F7\uF3F8\uF7CC\uF87D\u0000\u0000\uF8EA\uF966"+ - "\uF9B9\uF9D4\uBBF4\uC24E\uF1E9\uF3F9\uF6D2\uF87E"+ - "\u0000\u0000\uBEA6\u0000\uEFB5\uF1EA\uF3FA\uF3FB"+ - "\uF3FC\uF5BE\u0000\uF5BA\uC568\uF5BD\uF5BC\uC4D4"+ - "\uF5BB\uC4D6\u0000\uC4D5\uF6D4\uF6D3\uC569\uC56A"+ - "\u0000\u0000\uC5C6\uF7CD\uC5C5\u0000\uF8A3\uF8A4"+ - "\uF8A2\uF8A1\uC654\u0000\uF8EB\uF8EC\uF8ED\uC653"+ - "\uF967\uF96A\uF969\uF968\u0000\u0000\uF9D3\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC073\u0000\u0000"+ - "\uC365\uF5BF\uF6D5\u0000\uC5C7\uF7CE\u0000\u0000"+ - "\uF9D5\u0000\u0000\u0000\uC074\u0000\u0000\u0000"+ - "\uEFB6\u0000\uF7CF\u0000\uF9A1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC94A\uDDFC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA14A\uA157\u0000\uA159\uA15B\uA15F\uA160\uA163"+ - "\uA164\uA167\uA168\uA16B\uA16C\uA16F\uA170\uA173"+ - "\uA174\uA177\uA178\uA17B\uA17C\u0000\u0000\u0000"+ - "\u0000\uA1C6\uA1C7\uA1CA\uA1CB\uA1C8\uA1C9\uA15C"+ - "\uA14D\u0000\uA14F\u0000\uA151\uA152\uA153\uA154"+ - "\u0000\uA17D\uA17E\uA1A1\uA1A2\uA1A3\uA1A4\uA1CC"+ - "\uA1CD\uA1CE\uA1DE\uA1DF\uA1E0\uA1E1\uA1E2\u0000"+ - "\u0000\uA24C\uA24D\uA24E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA149\u0000\uA1AD\uA243\uA248\uA1AE\u0000"+ - "\uA15D\uA15E\uA1AF\uA1CF\uA141\uA1D0\uA144\uA241"+ - "\uA2AF\uA2B0\uA2B1\uA2B2\uA2B3\uA2B4\uA2B5\uA2B6"+ - "\uA2B7\uA2B8\uA147\uA146\uA1D5\uA1D7\uA1D6\uA148"+ - "\uA249\uA2CF\uA2D0\uA2D1\uA2D2\uA2D3\uA2D4\uA2D5"+ - "\uA2D6\uA2D7\uA2D8\uA2D9\uA2DA\uA2DB\uA2DC\uA2DD"+ - "\uA2DE\uA2DF\uA2E0\uA2E1\uA2E2\uA2E3\uA2E4\uA2E5"+ - "\uA2E6\uA2E7\uA2E8\u0000\uA242\u0000\u0000\uA1C4"+ - "\u0000\uA2E9\uA2EA\uA2EB\uA2EC\uA2ED\uA2EE\uA2EF"+ - "\uA2F0\uA2F1\uA2F2\uA2F3\uA2F4\uA2F5\uA2F6\uA2F7"+ - "\uA2F8\uA2F9\uA2FA\uA2FB\uA2FC\uA2FD\uA2FE\uA340"+ - "\uA341\uA342\uA343\uA161\uA155\uA162\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA14E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 1, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 0, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 98, 99 - }; - - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2, - innerIndex3, - innerIndex4, - innerIndex5, - innerIndex6 - }; - public Encoder(Charset cs) { - super(cs, - index1, - index2); - } - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS.java --- a/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,15 +23,13 @@ * have any questions. */ -/* - */ - package sun.nio.cs.ext; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; import sun.nio.cs.HistoricallyNamedCharset; +import static sun.nio.cs.CharsetMapping.*; public class Big5_HKSCS extends Charset implements HistoricallyNamedCharset { @@ -57,33 +55,35 @@ return new Encoder(this); } - private static class Decoder extends HKSCS_2001.Decoder { - - Big5.Decoder big5Dec; + static class Decoder extends HKSCS.Decoder { + private static DoubleByte.Decoder big5 = + (DoubleByte.Decoder)new Big5().newDecoder(); - protected char decodeDouble(int byte1, int byte2) { - char c = super.decodeDouble(byte1, byte2); - return (c != REPLACE_CHAR) ? c : big5Dec.decodeDouble(byte1, byte2); + private static char[][] b2cBmp = new char[0x100][]; + private static char[][] b2cSupp = new char[0x100][]; + static { + initb2c(b2cBmp, HKSCSMapping.b2cBmpStr); + initb2c(b2cSupp, HKSCSMapping.b2cSuppStr); } private Decoder(Charset cs) { - super(cs); - big5Dec = new Big5.Decoder(cs); + super(cs, big5, b2cBmp, b2cSupp); } } - private static class Encoder extends HKSCS_2001.Encoder { - - private Big5.Encoder big5Enc; + static class Encoder extends HKSCS.Encoder { + private static DoubleByte.Encoder big5 = + (DoubleByte.Encoder)new Big5().newEncoder(); - protected int encodeDouble(char ch) { - int r = super.encodeDouble(ch); - return (r != 0) ? r : big5Enc.encodeDouble(ch); + static char[][] c2bBmp = new char[0x100][]; + static char[][] c2bSupp = new char[0x100][]; + static { + initc2b(c2bBmp, HKSCSMapping.b2cBmpStr, HKSCSMapping.pua); + initc2b(c2bSupp, HKSCSMapping.b2cSuppStr, null); } private Encoder(Charset cs) { - super(cs); - big5Enc = new Big5.Encoder(cs); + super(cs, big5, c2bBmp, c2bSupp); } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS_2001.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_HKSCS_2001.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,85 @@ +/* + * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package sun.nio.cs.ext; + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import sun.nio.cs.HistoricallyNamedCharset; + +public class Big5_HKSCS_2001 extends Charset +{ + public Big5_HKSCS_2001() { + super("x-Big5-HKSCS-2001", ExtendedCharsets.aliasesFor("x-Big5-HKSCS-2001")); + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof Big5) + || (cs instanceof Big5_HKSCS_2001)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new Encoder(this); + } + + private static class Decoder extends HKSCS.Decoder { + private static DoubleByte.Decoder big5 = + (DoubleByte.Decoder)new Big5().newDecoder(); + + private static char[][] b2cBmp = new char[0x100][]; + private static char[][] b2cSupp = new char[0x100][]; + static { + initb2c(b2cBmp, HKSCS2001Mapping.b2cBmpStr); + initb2c(b2cSupp, HKSCS2001Mapping.b2cSuppStr); + } + + private Decoder(Charset cs) { + super(cs, big5, b2cBmp, b2cSupp); + } + } + + private static class Encoder extends HKSCS.Encoder { + private static DoubleByte.Encoder big5 = + (DoubleByte.Encoder)new Big5().newEncoder(); + + static char[][] c2bBmp = new char[0x100][]; + static char[][] c2bSupp = new char[0x100][]; + static { + initc2b(c2bBmp, HKSCS2001Mapping.b2cBmpStr, + HKSCS2001Mapping.pua); + initc2b(c2bSupp, HKSCS2001Mapping.b2cSuppStr, null); + } + + private Encoder(Charset cs) { + super(cs, big5, c2bBmp, c2bSupp); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/Big5_Solaris.java --- a/jdk/src/share/classes/sun/nio/cs/ext/Big5_Solaris.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/ext/Big5_Solaris.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,15 +23,14 @@ * have any questions. */ -/* - */ - package sun.nio.cs.ext; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; import sun.nio.cs.HistoricallyNamedCharset; +import java.util.Arrays; +import static sun.nio.cs.CharsetMapping.*; public class Big5_Solaris extends Charset implements HistoricallyNamedCharset { @@ -50,90 +49,78 @@ } public CharsetDecoder newDecoder() { - return new Decoder(this); + initb2c(); + return new DoubleByte.Decoder(this, b2c, b2cSB, 0x40, 0xfe); } public CharsetEncoder newEncoder() { - return new Encoder(this); + initc2b(); + return new DoubleByte.Encoder(this, c2b, c2bIndex); } - private static class Decoder extends Big5.Decoder { - - protected char decodeDouble(int byte1, int byte2) { - char c = super.decodeDouble(byte1, byte2); - - // Big5 Solaris implementation has 7 additional mappings + static char[][] b2c; + static char[] b2cSB; + private static volatile boolean b2cInitialized = false; - if (c == REPLACE_CHAR) { - if (byte1 == 0xf9) { - switch (byte2) { - case 0xD6: - c = (char)0x7881; - break; - case 0xD7: - c = (char)0x92B9; - break; - case 0xD8: - c = (char)0x88CF; - break; - case 0xD9: - c = (char)0x58BB; - break; - case 0xDA: - c = (char)0x6052; - break; - case 0xDB: - c = (char)0x7CA7; - break; - case 0xDC: - c = (char)0x5AFA; - break; - } - } + static void initb2c() { + if (b2cInitialized) + return; + synchronized (Big5_Solaris.class) { + if (b2cInitialized) + return; + Big5.initb2c(); + b2c = Big5.b2c.clone(); + // Big5 Solaris implementation has 7 additional mappings + int[] sol = new int[] { + 0xF9D6, 0x7881, + 0xF9D7, 0x92B9, + 0xF9D8, 0x88CF, + 0xF9D9, 0x58BB, + 0xF9DA, 0x6052, + 0xF9DB, 0x7CA7, + 0xF9DC, 0x5AFA }; + if (b2c[0xf9] == DoubleByte.B2C_UNMAPPABLE) { + b2c[0xf9] = new char[0xfe - 0x40 + 1]; + Arrays.fill(b2c[0xf9], UNMAPPABLE_DECODING); } - return c; - } - private Decoder(Charset cs) { - super(cs); + for (int i = 0; i < sol.length;) { + b2c[0xf9][sol[i++] & 0xff - 0x40] = (char)sol[i++]; + } + b2cSB = Big5.b2cSB; + b2cInitialized = true; } } - private static class Encoder extends Big5.Encoder { - - protected int encodeDouble(char ch) { - int r = super.encodeDouble(ch); + static char[] c2b; + static char[] c2bIndex; + private static volatile boolean c2bInitialized = false; - if (r == 0) { - switch (ch) { - case 0x7881: - r = 0xF9D6; - break; - case 0x92B9: - r = 0xF9D7; - break; - case 0x88CF: - r = 0xF9D8; - break; - case 0x58BB: - r = 0xF9D9; - break; - case 0x6052: - r = 0xF9DA; - break; - case 0x7CA7: - r = 0xF9DB; - break; - case 0x5AFA: - r = 0xF9DC; - break; - } - } - return r; - } + static void initc2b() { + if (c2bInitialized) + return; + synchronized (Big5_Solaris.class) { + if (c2bInitialized) + return; + Big5.initc2b(); + c2b = Big5.c2b.clone(); + c2bIndex = Big5.c2bIndex.clone(); + int[] sol = new int[] { + 0x7881, 0xF9D6, + 0x92B9, 0xF9D7, + 0x88CF, 0xF9D8, + 0x58BB, 0xF9D9, + 0x6052, 0xF9DA, + 0x7CA7, 0xF9DB, + 0x5AFA, 0xF9DC }; - private Encoder(Charset cs) { - super(cs); + for (int i = 0; i < sol.length;) { + int c = sol[i++]; + // no need to check c2bIndex[c >>8], we know it points + // to the appropriate place. + c2b[c2bIndex[c >> 8] + (c & 0xff)] = (char)sol[i++]; + } + c2bInitialized = true; } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java --- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Wed Jul 05 17:09:51 2017 +0200 @@ -55,10 +55,15 @@ "csBig5" }); + charset("x-MS950-HKSCS-XP", "MS950_HKSCS_XP", + new String[] { + "MS950_HKSCS_XP" // JDK historical; + }); + charset("x-MS950-HKSCS", "MS950_HKSCS", new String[] { // IANA aliases - "MS950_HKSCS" // JDK historical; + "MS950_HKSCS" // JDK historical; }); charset("x-windows-950", "MS950", @@ -86,8 +91,16 @@ "Big5_HKSCS", // JDK historical "big5hk", "big5-hkscs", + "big5hkscs" // Linux alias + }); + + charset("x-Big5-HKSCS-2001", "Big5_HKSCS_2001", + new String[] { + "Big5_HKSCS_2001", + "big5hk-2001", + "big5-hkscs-2001", "big5-hkscs:unicode3.0", - "big5hkscs" // Linux alias + "big5hkscs-2001", }); charset("x-Big5-Solaris", "Big5_Solaris", diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/HKSCS.java --- a/jdk/src/share/classes/sun/nio/cs/ext/HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/ext/HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,6 +1,5 @@ - /* - * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,5573 +23,343 @@ * 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.CharsetDecoder; import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import java.util.Arrays; +import sun.nio.cs.Surrogate; +import static sun.nio.cs.CharsetMapping.*; -public abstract class HKSCS - extends Charset -{ +public class HKSCS { + + public static class Decoder extends DoubleByte.Decoder { + static int b2Min = 0x40; + static int b2Max = 0xfe; + + private char[][] b2cBmp; + private char[][] b2cSupp; + private static DoubleByte.Decoder big5Dec; - public HKSCS() { - super("HKSCS", ExtendedCharsets.aliasesFor("HKSCS")); - } + protected Decoder(Charset cs, + DoubleByte.Decoder big5Dec, + char[][] b2cBmp, char[][] b2cSupp) + { + // super(cs, 0.5f, 1.0f); + // need to extends DoubleByte.Decoder so the + // sun.io can use it. this implementation + super(cs, 0.5f, 1.0f, null, null, 0, 0); + this.big5Dec = big5Dec; + this.b2cBmp = b2cBmp; + this.b2cSupp = b2cSupp; + } - public CharsetDecoder newDecoder() { - return new Decoder(this); - } + public char decodeSingle(int b) { + return big5Dec.decodeSingle(b); + } + + public char decodeBig5(int b1, int b2) { + return big5Dec.decodeDouble(b1, b2); + } + + public char decodeDouble(int b1, int b2) { + return b2cBmp[b1][b2 - b2Min]; + } - public CharsetEncoder newEncoder() { - return new Encoder(this); - } + public char decodeDoubleEx(int b1, int b2) { + /* if the b2cSupp is null, the subclass need + to override the methold + if (b2cSupp == null) + return UNMAPPABLE_DECODING; + */ + return b2cSupp[b1][b2 - b2Min]; + } + protected CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) { + byte[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + + char[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public static short[] getDecoderIndex1() { - return Decoder.index1; - } + try { + while (sp < sl) { + int b1 = sa[sp] & 0xff; + char c = decodeSingle(b1); + int inSize = 1, outSize = 1; + char[] cc = null; + if (c == UNMAPPABLE_DECODING) { + if (sl - sp < 2) + return CoderResult.UNDERFLOW; + int b2 = sa[sp + 1] & 0xff; + inSize++; + if (b2 < b2Min || b2 > b2Max) + return CoderResult.unmappableForLength(2); + c = decodeDouble(b1, b2); //bmp + if (c == UNMAPPABLE_DECODING) { + c = decodeDoubleEx(b1, b2); //supp + if (c == UNMAPPABLE_DECODING) { + c = decodeBig5(b1, b2); //big5 + if (c == UNMAPPABLE_DECODING) + return CoderResult.unmappableForLength(2); + } else { + // supplementary character in u+2xxxx area + outSize = 2; + } + } + } + if (dl - dp < outSize) + return CoderResult.OVERFLOW; + if (outSize == 2) { + // supplementary characters + da[dp++] = Surrogate.high(0x20000 + c); + da[dp++] = Surrogate.low(0x20000 + c); + } else { + da[dp++] = c; + } + sp += inSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } - public static String[] getDecoderIndex2() { - return Decoder.index2; - - } + protected CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) { + int mark = src.position(); + try { + while (src.hasRemaining()) { + char[] cc = null; + int b1 = src.get() & 0xff; + int inSize = 1, outSize = 1; + char c = decodeSingle(b1); + if (c == UNMAPPABLE_DECODING) { + if (src.remaining() < 1) + return CoderResult.UNDERFLOW; + int b2 = src.get() & 0xff; + inSize++; + if (b2 < b2Min || b2 > b2Max) + return CoderResult.unmappableForLength(2); + c = decodeDouble(b1, b2); //bmp + if (c == UNMAPPABLE_DECODING) { + c = decodeDoubleEx(b1, b2); //supp + if (c == UNMAPPABLE_DECODING) { + c = decodeBig5(b1, b2); //big5 + if (c == UNMAPPABLE_DECODING) + return CoderResult.unmappableForLength(2); + } else { + outSize = 2; + } + } + } + if (dst.remaining() < outSize) + return CoderResult.OVERFLOW; + if (outSize == 2) { + dst.put(Surrogate.high(0x20000 + c)); + dst.put(Surrogate.low(0x20000 + c)); + } else { + dst.put(c); + } + mark += inSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } - public static short[] getEncoderIndex1() { - return Encoder.index1; + public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) { + if (src.hasArray() && dst.hasArray()) + return decodeArrayLoop(src, dst); + else + return decodeBufferLoop(src, dst); + } - } - public static String[] getEncoderIndex2() { - return Encoder.index2; + static void initb2c(char[][]b2c, String[] b2cStr) + { + for (int i = 0; i < b2cStr.length; i++) { + if (b2cStr[i] == null) + b2c[i] = DoubleByte.B2C_UNMAPPABLE; + else + b2c[i] = b2cStr[i].toCharArray(); + } + } } - protected static class Decoder extends DoubleByteDecoder { + public static class Encoder extends DoubleByte.Encoder { + private DoubleByte.Encoder big5Enc; + private char[][] c2bBmp; + private char[][] c2bSupp; - private final static String innerIndex0= - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF303"+ - "\uF304\uF305\uF306\uF307\uF308\uF309\uF30A\uF30B"+ - "\uF30C\uF30D\uF30E\uF30F\uF310\uF311\uF312\uF313"+ - "\uF314\uF315\uF316\uF317\uF318\u0100\u00C1\u01CD"+ - "\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1"+ - "\u00D2\uF325\u1EBE\uF327\u1EC0\u00CA\u0101\u00E1"+ - "\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B"+ - "\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B"+ - "\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u01DC\u00FC\uF344\u1EBF\uF346\u1EC1\u00EA\u0261"+ - "\uF34A\uF34B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF3A0\uF3A1"+ - "\uFFFD\u650A\uFFFD\uFFFD\u4E3D\u6EDD\u9D4E\u91DF"+ - "\uFFFD\uFFFD\uF3AC\u6491\u4F1A\u4F28\u4FA8\u5156"+ - "\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1"+ - "\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66"+ - "\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804"+ - "\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7"+ - "\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6"+ - "\u8BBE\u8BE2\u8F66\u8F67\u8F6E\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7411"+ - "\u7CFC\u7DCD\u6946\u7AC9\u5227\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u918C\u78B8\u915E\u80BC\uFFFD\u8D0B\u80F6"+ - "\uF3F0\uFFFD\uFFFD\u809F\u9EC7\u4CCD\u9DC9\u9E0C"+ - "\u4C3E\uF3F9\uF3FA\u9E0A\uF3FC\u35C1\uFFFD\u6E9A"+ - "\u823E\u7519\uFFFD\u4911\u9A6C\u9A8F\u9F99\u7987"+ - "\uF408\uF409\uF40A\uF40B\u4E24\u4E81\u4E80\u4E87"+ - "\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088"+ - "\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205"+ - "\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0"+ - "\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3"+ - "\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598"+ - "\u553F\u35A5\u35BF\u55D7\u35C5\uF43D\u5525\uFFFD"+ - "\uF440\uF441\uF442\u5590\uF444\u39EC\uF446\u8E46"+ - "\uF448\uF449\u4053\uF44B\u777A\uF44D\u3A34\u47D5"+ - "\uF450\uF451\uF452\u64DD\uF454\uF455\uF456\uF457"+ - "\u648D\u8E7E\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F"+ - "\uFFFD\uF461\uF462\uF463\u47F4\uF465\uF466\u9AB2"+ - "\u3A67\uF469\u3FED\u3506\uF46C\uF46D\uF46E\uF46F"+ - "\u9D6E\u9815\uFFFD\u43D9\uF474\u64B4\u54E3\uF477"+ - "\uF478\uF479\u39FB\uF47B\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF47C\uF47D"+ - "\uF47E\u64EA\uF480\uF481\u8E68\uF483\uF484\uF485"+ - "\uFFFD\u480B\uF488\u3FFA\u5873\uF48B\uFFFD\uF48D"+ - "\uF48E\uF48F\uF490\uF491\u5579\u40BB\u43BA\uFFFD"+ - "\u4AB4\uF497\uF498\u81AA\u98F5\uF49B\u6379\u39FE"+ - "\uF49E\u8DC0\u56A1\u647C\u3E43\uFFFD\uF4A4\uF4A5"+ - "\uF4A6\uF4A7\uFFFD\uF4A9\uF4AA\u3992\u3A06\uF4AD"+ - "\u3578\uF4AF\uF4B0\u5652\uF4B2\uF4B3\uF4B4\u34BC"+ - "\u6C3D\uF4B7\uFFFD\uFFFD\uF4BA\uF4BB\uF4BC\uF4BD"+ - "\uF4BE\uF4BF\uF4C0\uF4C1\u7F93\uF4C3\uF4C4\uF4C5"+ - "\u35FB\uF4C7\uF4C8\uF4C9\uF4CA\u3F93\uF4CC\uF4CD"+ - "\uF4CE\uF4CF\uFFFD\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5"+ - "\u3FF9\uF4D7\u6432\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD"+ - "\uF4DE\uF4DF\uF4E0\u3A18\uF4E2\uF4E3\uF4E4\uF4E5"+ - "\uF4E6\uF4E7\uF4E8\uF4E9\u95AA\u54CC\u82C4\u55B9"+ - "\uFFFD\uF4EF\u9C26\u9AB6\uF4F2\uF4F3\u7140\u816D"+ - "\u80EC\u5C1C\uF4F8\u8134\u3797\u535F\uF4FC\u91B6"+ - "\uF4FE\uF4FF\uF500\uF501\u35DD\uF503\u3609\uF505"+ - "\u56AF\uF507\uF508\uF509\uF50A\uF50B\uF50C\uF50D"+ - "\uF50E\uF50F\uF510\uF511\u5A54\uF513\uF514\uF515"+ - "\uF516\u579C\uF518\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF519\uF51A\uF51B"+ - "\uF51C\uF51D\u3703\uF51F\uF520\uF521\uF522\uF523"+ - "\uF524\uF525\uF526\u5899\u5268\u361A\uF52A\u7BB2"+ - "\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uF533"+ - "\uF534\u55FB\u35F2\u5689\u4E28\u5902\uF53A\uF53B"+ - "\u9751\uF53D\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4"+ - "\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B"+ - "\u4E2C\u72AD\uF54E\u7F52\u793B\u7CF9\u7F53\uF553"+ - "\u34C1\uFFFD\uF556\u8002\u8080\uF559\uF55A\u535D"+ - "\u8864\u89C1\uF55E\u8BA0\u8D1D\u9485\u9578\u957F"+ - "\u95E8\uF565\u97E6\u9875\u98CE\u98DE\u9963\uF56B"+ - "\u9C7C\u9E1F\u9EC4\u6B6F\u9F9C\u4E37\uF572\u961D"+ - "\u6237\u94A2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u5D3E\u5D48\u5D56\u3DFC\u380F"+ - "\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83"+ - "\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989"+ - "\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318"+ - "\u39F8\u56B1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u3A03\u63E2\u63FB\u6407"+ - "\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586"+ - "\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42"+ - "\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B"+ - "\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6"+ - "\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2"+ - "\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75"+ - "\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4"+ - "\u6DB1\u6E15\u6E18\u6E29\u6E86\uF694\u6EBB\u6EE2"+ - "\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uF69E"+ - "\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C"+ - "\u3D91\u7050\u7054\u706F\u707F\u7089\uF6AD\u43C1"+ - "\u35F1\uF6B0\uE311\u57BE\uE313\u713E\uE315\u364E"+ - "\u69A2\uE318\u5B74\u7A49\uE31B\uE31C\u7A65\u7A7D"+ - "\uE31F\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uE325\u41CA"+ - "\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uE32C\u7B0B\u7B55"+ - "\u7B29\uE330\uE331\u7BA2\u7B6F\u839C\uE335\uE336"+ - "\u7BD0\u8421\u7B92\uFFFD\uE33B\u3DAD\uE33D\u8492"+ - "\u7BFA\uFFFD\u7C35\uE342\u7C44\u7C83\uE345\u7CA6"+ - "\u667D\uE348\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u7E67\u451D\uE352\u7D5D\uE354"+ - "\u748D\u7D89\u7DAB\u7135\u7DB3\uFFFD\uE35B\uE35C"+ - "\u7DE4\u3D13\u7DF5\uE360\u7DE5\uE362\uFFFD\uE364"+ - "\uE365\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41"+ - "\u7F47\u7936\uE36F\u99E1\u7F97\uE372\u7FA3\uE374"+ - "\uE375\u455C\uE377\u4503\uE379\u7FFA\uE37B\uFFFD"+ - "\u8008\u801D\uFFFD\u802F\uE381\uE382\u803B\u803C"+ - "\u8061\uE386\u4989\uE388\uE389\uE38A\u6725\u80A7"+ - "\uE38D\u8107\u811A\u58B0\uE391\u6C7F\uE393\uE394"+ - "\u64E7\uE396\u8218\uE398\u6A53\uE39A\uE39B\u447A"+ - "\u8229\uE39E\uE39F\uE3A0\u4FF9\uE3A2\u84E2\u8362"+ - "\uE3A5\uE3A6\uE3A7\uE3A8\uE3A9\u82AA\u691B\uE3AC"+ - "\u41DB\u854B\u82D0\u831A\uE3B1\uE3B2\u36C1\uE3B4"+ - "\uE3B5\u827B\u82E2\u8318\uE3B9\uE3BA\uE3BB\uE3BC"+ - "\uE3BD\u3DBF\u831D\u55EC\u8385\u450B\uE3C3\u83AC"+ - "\uFFFD\u83D3\u347E\uE3C8\u6A57\u855A\u3496\uE3CC"+ - "\uE3CD\u8458\uE3CF\u8471\u3DD3\u44E4\u6AA7\u844A"+ - "\uE3D5\u7958\uFFFD\uE3D8\uE3D9\uE3DA\u84DE\uFFFD"+ - "\u8391\u44A0\u8493\u84E4\uE3E1\u4240\uE3E3\u4543"+ - "\u8534\u5AF2\uE3E7\u4527\u8573\u4516\u67BF\u8616"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uE3ED\uE3EE\u85C1\uE3F0\u8602\uE3F2"+ - "\uE3F3\uE3F4\u456A\u8628\u3648\uE3F8\u53F7\uE3FA"+ - "\u867E\u8771\uE3FD\u87EE\uE3FF\u87B1\u87DA\u880F"+ - "\u5661\u866C\u6856\u460F\u8845\u8846\uE409\uE40A"+ - "\uE40B\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5"+ - "\u7777\uE414\u8987\u898A\uFFFD\uFFFD\u89A7\u89BC"+ - "\uE41B\u89E7\uE41D\uE41E\u8A9C\u7793\u91FE\u8A90"+ - "\uE423\u7AE9\uE425\uE426\u4713\uE428\u717C\u8B0C"+ - "\u8B1F\uE42C\uE42D\u8B3F\u8B4C\u8B4D\u8AA9\uE432"+ - "\u8B90\u8B9B\u8AAF\uE436\u4615\u884F\u8C9B\uE43A"+ - "\uE43B\uE43C\u3725\uE43E\u8CD6\uE440\uE441\u8D12"+ - "\u8D03\uE444\u8CDB\u705C\u8D11\uE448\u3ED0\uFFFD"+ - "\u8DA9\uE44C\uE44D\uE44E\u3B7C\uE450\uE451\u7AE7"+ - "\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uE459\uE45A"+ - "\u8FA5\u9303\uE45D\uE45E\u8FB3\u492A\uE461\uE462"+ - "\uE463\u5EF8\uE465\u8FF9\uE467\uE468\uE469\uE46A"+ - "\u3980\uE46C\u9037\uE46E\uE46F\u9061\uE471\uE472"+ - "\u90A8\uE474\u90C4\uE476\u90AE\uFFFD\u9167\u3AF0"+ - "\u91A9\u91C4\u7CAC\uE47E\uE47F\u920E\u6C9F\u9241"+ - "\u9262\uE484\uFFFD\uE486\uE487\uE488\uE489\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uE48A\u932C\u936B\uE48D\uE48E\u708F\u5AC3"+ - "\uE491\uE492\u4965\u9244\uE495\uE496\uE497\u9373"+ - "\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9"+ - "\uE4A1\uE4A2\uE4A3\uE4A4\u49DF\u6C1C\u967B\u9696"+ - "\u416C\u96A3\uE4AB\u61DA\u96B6\u78F5\uE4AF\u96BD"+ - "\u53CC\u49A1\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7\uE4B8"+ - "\uE4B9\uE4BA\u9731\u8642\u9736\u4A0F\u453D\u4585"+ - "\uE4C1\u7075\u5B41\u971B\uFFFD\uE4C6\u9757\u5B4A"+ - "\uE4C9\u975F\u9425\u50D0\uE4CD\uE4CE\u9789\u979F"+ - "\u97B1\u97BE\u97C0\u97D2\u97E0\uE4D6\u97EE\u741C"+ - "\uE4D9\uFFFD\u97F5\uE4DC\uE4DD\u4AD1\u9834\u9833"+ - "\u984B\u9866\u3B0E\uE4E4\u3D51\uE4E6\uE4E7\uE4E8"+ - "\u98CA\u98B7\u98C8\u98C7\u4AFF\uE4EE\uE4EF\u55B0"+ - "\u98E1\u98E6\u98EC\u9378\u9939\uE4F6\u4B72\uE4F8"+ - "\uE4F9\u99F5\u9A0C\u9A3B\u9A10\u9A58\uE4FF\u36C4"+ - "\uE501\uE502\u9AE0\u9AE2\uE505\u9AF4\u4C0E\u9B14"+ - "\u9B2D\uE50A\u5034\u9B34\uE50D\u38C3\uE50F\u9B50"+ - "\u9B40\uE512\u5A45\uE514\u9B8E\uE516\u9C02\u9BFF"+ - "\u9C0C\uE51A\u9DD4\uE51C\uE51D\uE51E\uE51F\uE520"+ - "\uE521\u9D7E\u9D83\uE524\u9E0E\u6888\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u9DC4\uE528\uE529\uE52A\uE52B\uE52C\u9D39\uE52E"+ - "\uE52F\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF"+ - "\uE537\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uE53E"+ - "\u9F02\u9F08\u4B96\u9424\uE543\u9F17\uFFFD\u9F39"+ - "\u569F\u568A\u9F45\u99B8\uE54B\u97F2\u847F\u9F62"+ - "\u9F69\u7ADC\u9F8E\u7216\u4BBE\uE554\uE555\u7177"+ - "\uE557\uE558\uE559\u739E\uE55B\uE55C\u799F\uE55E"+ - "\uE55F\u9369\u93F3\uE562\u92EC\u9381\u93CB\uE566"+ - "\uE567\u7217\u3EEB\u7772\u7A43\u70D0\uE56D\uE56E"+ - "\u717E\uE570\u70A3\uE572\uE573\u3EC7\uE575\uE576"+ - "\uE577\u3722\uE579\uE57A\u36E1\uE57C\uE57D\uE57E"+ - "\u3723\uE580\u575B\uE582\uE583\uE584\uE585\uE586"+ - "\u8503\uE588\uFFFD\u8455\uE58B\uE58C\uE58D\uE58E"+ - "\uE58F\uE590\u44F4\uE592\uE593\uE594\u67F9\u3733"+ - "\u3C15\u3DE7\u586C\uE59A\u6810\u4057\uE59D\uE59E"+ - "\uE59F\uE5A0\uE5A1\u54CB\u569E\uE5A4\u5692\uE5A6"+ - "\uE5A7\uE5A8\u93C6\uE5AA\u939C\u4EF8\u512B\u3819"+ - "\uE5AF\u4EBC\uE5B1\uE5B2\u4F4B\u4F8A\uE5B5\u5A68"+ - "\uE5B7\uE5B8\u3999\uE5BA\uE5BB\u3435\u4F29\uE5BE"+ - "\uE5BF\uE5C0\u8ADA\uE5C2\u4E98\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u50CD"+ - "\u510D\u4FA2\u4F03\uE5C8\uE5C9\u4F42\u502E\u506C"+ - "\u5081\u4FCC\u4FE5\u5058\u50FC\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u6E76\uE5D7\uE5D8\uE5D9\u6D72\uE5DB\uE5DC"+ - "\u51A8\u51C3\uE5DF\u44DD\uE5E1\uE5E2\uE5E3\u8D7A"+ - "\uE5E5\uE5E6\u5259\u52A4\uE5E9\u52E1\uFFFD\u467A"+ - "\u718C\uE5EE\uE5EF\uE5F0\uE5F1\u69D1\uE5F3\uFFFD"+ - "\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uE5FB\uE5FC"+ - "\u53D0\u3584\u720F\uE600\u55B4\uE602\u54CD\uE604"+ - "\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E"+ - "\u58CB\u5A99\uE60F\uE610\uE611\uE612\u5A2C\u59B8"+ - "\u928F\u5A7E\u5ACF\u5A12\uE619\uE61A\uE61B\uE61C"+ - "\u36F5\u6D05\u7443\u5A21\uE621\u5A81\uE623\uE624"+ - "\u93E0\u748C\uE627\u7105\u4972\u9408\uE62B\u93BD"+ - "\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uE632\uE633\uE634"+ - "\u5ECD\u5B4F\uE637\uE638\u3701\uE63A\u36DD\uE63C"+ - "\u36D3\u812A\uE63F\uE640\uE641\uE642\u5F0C\u5F0E"+ - "\uE645\uE646\u5A6B\uE648\u5B44\u8614\uE64B\u8860"+ - "\u607E\uE64E\uE64F\u5FDB\u3EB8\uE652\uE653\uE654"+ - "\uE655\u61C0\uE657\uE658\uE659\u6199\u6198\u6075"+ - "\uE65D\uE65E\uE65F\uE660\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6471\uE662"+ - "\uE663\u3A29\uE665\uE666\uE667\uE668\u6337\uE66A"+ - "\u64B6\u6331\u63D1\uE66E\uE66F\u62A4\uE671\u643B"+ - "\u656B\u6972\u3BF4\uE676\uE677\uE678\uE679\u550D"+ - "\uE67B\uE67C\uE67D\u66CE\uE67F\uE680\u3AE0\u4190"+ - "\uE683\uE684\uE685\uE686\uE687\uE688\u78EE\uE68A"+ - "\uE68B\uE68C\u3464\uE68E\uE68F\uE690\u668E\uE692"+ - "\u666B\u4B93\u6630\uE696\uE697\u6663\uE699\uE69A"+ - "\u661E\uE69C\u38D1\uE69E\uE69F\u3B99\uE6A1\uE6A2"+ - "\u74D0\u3B96\u678F\uE6A6\u68B6\u681E\u3BC4\u6ABE"+ - "\u3863\uE6AC\uE6AD\u6A33\u6A52\u6AC9\u6B05\uE6B2"+ - "\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uE6B9\uE6BA"+ - "\u93A0\u92F2\uE6BD\uE6BE\u9289\uE6C0\uE6C1\u9467"+ - "\u6DA5\u6F0B\uE6C5\uFFFD\uE6C7\u3D8F\u6E04\uE6CA"+ - "\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uE6D1\uE6D2"+ - "\u70F1\u7250\u7287\u7294\uE6D7\uE6D8\u5179\uE6DA"+ - "\uE6DB\u747A\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1\u3F06"+ - "\u3EB1\uE6E4\uE6E5\uE6E6\u60A7\u3EF3\u74CC\u743C"+ - "\u9387\u7437\u449F\uE6EE\u4551\u7583\u3F63\uE6F2"+ - "\uE6F3\u3F58\u7555\u7673\uE6F7\u3B19\u7468\uE6FA"+ - "\uE6FB\uE6FC\u3AFB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3DCD\uE6FF\u3EFF"+ - "\uE701\uE702\u91FA\u5732\u9342\uE706\uE707\u50DF"+ - "\uE709\uE70A\u7778\uE70C\u770E\u770F\u777B\uE710"+ - "\uE711\u3A5E\uE713\u7438\u749B\u3EBF\uE717\uE718"+ - "\u40C8\uE71A\uE71B\u9307\uE71D\u781E\u788D\u7888"+ - "\u78D2\u73D0\u7959\uE724\uE725\u410E\uFFFD\u8496"+ - "\u79A5\u6A2D\uE72B\u7A3A\u79F4\u416E\uE72F\u4132"+ - "\u9235\u79F1\uE733\uE734\uE735\uE736\uE737\u3597"+ - "\u556B\u3570\u36AA\uE73C\uE73D\u7AE2\u5A59\uE740"+ - "\uE741\uE742\u5A0D\uE744\u78F0\u5A2A\uE747\u7AFE"+ - "\u41F9\u7C5D\u7C6D\u4211\uE74D\uE74E\uE74F\u7CCD"+ - "\uE751\uE752\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07"+ - "\u7DD3\u7F4E\uE75B\uE75C\uE75D\u7D97\uE75F\u426A"+ - "\uE761\uE762\u67D6\uE764\uE765\u57C4\uE767\uE768"+ - "\uE769\u7FDD\u7B27\uE76C\uE76D\uE76E\u7B0C\uE770"+ - "\u99E6\u8645\u9A63\u6A1C\uE775\u39E2\uE777\uE778"+ - "\u9A1F\uE77A\u8480\uE77C\uE77D\u44EA\u8137\u4402"+ - "\u80C6\u8109\u8142\uE784\u98C3\uE786\u8262\u8265"+ - "\uE789\u8453\uE78B\u8610\uE78D\u5A86\u417F\uE790"+ - "\u5B2B\uE792\u5AE4\uE794\u86A0\uE796\uE797\u882D"+ - "\uE799\u5A02\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u886E\u4F45\u8887\u88BF"+ - "\u88E6\u8965\u894D\uE7A2\u8954\uE7A4\uE7A5\uE7A6"+ - "\uE7A7\uE7A8\uE7A9\u3EAD\u84A3\u46F5\u46CF\u37F2"+ - "\u8A3D\u8A1C\uE7B1\u5F4D\u922B\uE7B4\u65D4\u7129"+ - "\u70C4\uE7B8\u9D6D\u8C9F\u8CE9\uE7BC\u599A\u77C3"+ - "\u59F0\u436E\u36D4\u8E2A\u8EA7\uE7C4\u8F30\u8F4A"+ - "\u42F4\u6C58\u6FBB\uE7CA\u489B\u6F79\u6E8B\uE7CE"+ - "\u9BE9\u36B5\uE7D1\u90BB\uFFFD\u5571\u4906\u91BB"+ - "\u9404\uE7D8\u4062\uE7DA\u9427\uE7DC\uE7DD\u84E5"+ - "\u8A2B\u9599\u95A7\u9597\u9596\uE7E4\u7445\u3EC2"+ - "\uE7E7\uE7E8\uE7E9\u3EE7\uE7EB\u968F\uE7ED\uE7EE"+ - "\uE7EF\u3ECC\uE7F1\uE7F2\uE7F3\u7412\u746B\u3EFC"+ - "\u9741\uE7F8\u6847\u4A1D\uE7FB\uE7FC\uFFFD\u9368"+ - "\uE7FF\uE800\uE801\uE802\u92BA\u5B11\u8B69\u493C"+ - "\u73F9\uE808\u979B\u9771\u9938\uE80C\u5DC1\uE80E"+ - "\uE80F\u981F\uE811\u92F6\uE813\u91E5\u44C0\uE816"+ - "\uE817\uE818\u98DC\uE81A\u3F00\u922A\u4925\u8414"+ - "\u993B\u994D\uE821\u3DFD\u999B\u4B6F\u99AA\u9A5C"+ - "\uE827\uE828\u6A8F\u9A21\u5AFE\u9A2F\uE82D\u4B90"+ - "\uE82F\u99BC\u4BBD\u4B97\u937D\u5872\uE835\u5822"+ - "\uE837\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uE838\u7844\uE83A\uE83B\u68C5"+ - "\u3D7D\u9458\u3927\u6150\uE841\uE842\u6107\u9C4F"+ - "\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uE84B\u9B9F"+ - "\uE84D\uE84E\u9D21\u4CAE\uE851\u9E18\u4CB0\u9D0C"+ - "\uE855\uE856\uE857\uE858\u9DA5\u84BD\uE85B\uE85C"+ - "\uE85D\u85FC\u4533\uE860\uE861\uE862\u8420\u85EE"+ - "\uE865\uE866\uE867\u79E2\uE869\uE86A\u492D\uE86C"+ - "\u3D62\u93DB\u92BE\u9348\uE871\u78B9\u9277\u944D"+ - "\u4FE4\u3440\u9064\uE878\u783D\u7854\u78B6\u784B"+ - "\uE87D\uE87E\uE87F\u369A\u4F72\u6FDA\u6FD9\uFFFD"+ - "\u701E\u5414\uE887\u57BB\u58F3\u578A\u9D16\u57D7"+ - "\u7134\u34AF\uE88F\u71EB\uE891\uE892\uFFFD\uE894"+ - "\uE895\u610C\u5ACE\u5A0B\u42BC\uE89A\u372C\u4B7B"+ - "\uE89D\u93BB\u93B8\uE8A0\uE8A1\u8472\uE8A3\uE8A4"+ - "\uE8A5\uE8A6\uE8A7\u5994\uE8A9\uE8AA\u7DA8\uE8AC"+ - "\uE8AD\uE8AE\uE8AF\uE8B0\u92E5\u73E2\u3EE9\u74B4"+ - "\uE8B5\uE8B6\u3EE1\uE8B8\u6AD8\u73F3\u73FB\u3ED6"+ - "\uE8BD\uE8BE\uE8BF\uE8C0\uE8C1\uE8C2\uE8C3\u7448"+ - "\uE8C5\u70A5\uE8C7\u9284\u73E6\u935F\uE8CB\u9331"+ - "\uE8CD\uE8CE\u9386\uE8D0\uE8D1\u4935\uE8D3\u716B"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uE8D5\uE8D6\u56A4\uE8D8\uE8D9\uE8DA"+ - "\u5502\u79C4\uE8DD\u7DFE\uE8DF\uE8E0\uE8E1\u452E"+ - "\u9401\u370A\uE8E5\uE8E6\u59B0\uE8E8\uE8E9\uE8EA"+ - "\u5AA1\u36E2\uE8ED\u36B0\u925F\u5A79\uE8F1\uE8F2"+ - "\u9374\u3CCD\uE8F5\u4A96\u398A\u50F4\u3D69\u3D4C"+ - "\uE8FB\u7175\u42FB\uE8FE\u6E0F\uE900\u44EB\u6D57"+ - "\uE903\u7067\u6CAF\u3CD6\uE907\uE908\u6E02\u6F0C"+ - "\u3D6F\uE90C\u7551\u36BC\u34C8\u4680\u3EDA\u4871"+ - "\u59C4\u926E\u493E\u8F41\uE917\uE918\u5812\u57C8"+ - "\u36D6\uE91C\u70FE\uE91E\uE91F\uE920\uE921\uE922"+ - "\u68B9\u6967\uE925\uE926\uE927\uE928\uE929\uE92A"+ - "\uE92B\uE92C\u6A1A\uE92E\uE92F\u843E\u44DF\u44CE"; + protected Encoder(Charset cs, + DoubleByte.Encoder big5Enc, + char[][] c2bBmp, + char[][] c2bSupp) + { + super(cs, null, null); + this.big5Enc = big5Enc; + this.c2bBmp = c2bBmp; + this.c2bSupp = c2bSupp; + } - private final static String innerIndex1= - "\uE933\uE934\uE935\uE936\u6F17\uE938\u833D\uE93A"+ - "\u83ED\uE93C\uE93D\uE93E\u5989\u5A82\uE941\u5A61"+ - "\u5A71\uE944\uE945\u372D\u59EF\uE948\u36C7\u718E"+ - "\u9390\u669A\uE94D\u5A6E\u5A2B\uE950\u6A2B\uE952"+ - "\uE953\uE954\uE955\u711D\uE957\uE958\u4FB0\uE95A"+ - "\u5CC2\uE95C\uE95D\uE95E\u6A0C\uE960\uE961\u70A6"+ - "\u7133\uE964\u3DA5\u6CDF\uE967\uE968\u7E65\u59EB"+ - "\u5D2F\u3DF3\u5F5C\uE96E\uE96F\u7DA4\u8426\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u5485\uE973\uE974\uE975\u577E\uE977\uE978"+ - "\u3FE5\uE97A\uE97B\u7003\uE97D\u5D70\u738F\u7CD3"+ - "\uE981\uE982\u4FC8\u7FE7\u72CD\u7310\uE987\u7338"+ - "\u7339\uE98A\u7341\u7348\u3EA9\uE98E\u906C\u71F5"+ - "\uE991\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD"+ - "\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3"+ - "\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8"+ - "\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uE9B0"+ - "\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761"+ - "\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB"+ - "\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851"+ - "\u7866\u8448\uE9CB\u7933\u6803\u7932\u4103\u4109"+ - "\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2"+ - "\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62"+ - "\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C"+ - "\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uE9EF\u7DCF"+ - "\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020"+ - "\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0"+ - "\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560"+ - "\u8114\u4401\u3B39\u8156\u8159\u815A\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5"+ - "\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA"+ - "\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5"+ - "\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510"+ - "\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672"+ - "\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE"+ - "\u88FF\u8924\u8947\u8991\uEA43\u8A29\u8A38\u8A94"+ - "\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3"+ - "\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0"+ - "\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1"+ - "\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E"+ - "\u9228\u9258\u926B\u92B1\u92AE\u92BF\u92E3\u92EB"+ - "\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951"+ - "\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454"+ - "\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0"+ - "\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8"+ - "\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C"+ - "\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C"+ - "\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D"+ - "\u9C20\u376F\uEAA9\u9D49\u9C3A\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9EFE"+ - "\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B"+ - "\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8"+ - "\u7AC8\u9F44\uEABF\uEAC0\uEAC1\u691A\u94C3\u59AC"+ - "\uEAC5\u5840\u94C1\u37B9\uEAC9\uEACA\uEACB\uEACC"+ - "\u5757\u7173\uEACF\uEAD0\uEAD1\u546A\uEAD3\uEAD4"+ - "\u549E\uEAD6\uEAD7\uEAD8\uEAD9\uEADA\u60E7\uEADC"+ - "\u567A\uEADE\uEADF\uEAE0\uEAE1\uEAE2\uEAE3\u6955"+ - "\u9C2F\u87A5\uEAE7\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC"+ - "\u5C20\uEAEE\u5E0B\uEAF0\uEAF1\uEAF2\u671E\uEAF4"+ - "\uEAF5\uEAF6\u3647\uEAF8\uEAF9\uEAFA\uEAFB\u5364"+ - "\u84AD\uEAFE\uEAFF\uEB00\u8B81\uEB02\uEB03\uEB04"+ - "\uEB05\u4E78\u70BB\uEB08\uEB09\uEB0A\uEB0B\uEB0C"+ - "\uEB0D\uEB0E\uEB0F\u62C3\uEB11\uEB12\u7198\u6855"+ - "\uEB15\u69E9\u36C8\uEB18\uEB19\uEB1A\uEB1B\uEB1C"+ - "\uEB1D\u82FD\uEB1F\uEB20\uEB21\u89A5\uEB23\u8FA0"+ - "\uEB25\u97B8\uEB27\u9847\u9ABD\uEB2A\uFFFD\uEB2C"+ - "\uEB2D\uEB2E\uEB2F\uEB30\uEB31\uEB32\uEB33\uEB34"+ - "\uEB35\uEB36\uEB37\uEB38\uEB39\u5FB1\u6648\u66BF"+ - "\uEB3D\uEB3E\uEB3F\uFFFD\uEB41\uFFFD\uEB43\uEB44"+ - "\uFFFD\uEB46\u58B5\u670E\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6918\uEB4A"+ - "\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F\uEB50\u48D0\u4AB8"+ - "\uEB53\uEB54\uEB55\uEB56\uEB57\uEB58\uEB59\uEB5A"+ - "\uEB5B\u51D2\uEB5D\u599F\uEB5F\u3BBE\uEB61\uEB62"+ - "\uEB63\u5788\uEB65\u399B\uEB67\uEB68\uEB69\u3762"+ - "\uEB6B\u8B5E\uEB6D\uFFFD\uEB6F\uEB70\uEB71\u7209"+ - "\uEB73\uEB74\u5965\uEB76\uEB77\uEB78\u8EDA\uEB7A"+ - "\u528F\u573F\u7171\uEB7E\uEB7F\uEB80\uEB81\u55BC"+ - "\uEB83\uEB84\uEB85\uFFFD\u3473\uEB88\uEB89\uEB8A"+ - "\u4718\uEB8C\uEB8D\uEB8E\uEB8F\uEB90\u5066\u34FB"+ - "\uEB93\uFFFD\uEB95\u477C\uEB97\uEB98\uEB99\uEB9A"+ - "\uEB9B\u57A1\u7151\uFFFD\uEB9F\uEBA0\u9056\uEBA2"+ - "\uEBA3\u8B62\uEBA5\uEBA6\u5D5B\uEBA8\uFFFD\uEBAA"+ - "\uEBAB\u8AEA\uEBAD\uEBAE\uEBAF\uEBB0\u4BC0\uEBB2"+ - "\uEBB3\uEBB4\u9465\uEBB6\u6195\u5A27\uEBB9\uFFFD"+ - "\u56B9\uEBBC\uEBBD\u4E6A\uEBBF\u9656\u6D8F\uEBC2"+ - "\u3618\u8977\uEBC5\uEBC6\uEBC7\uEBC8\uFFFD\uEBCA"+ - "\u7B42\uEBCC\uEBCD\uEBCE\uFFFD\uEBD0\u7A45\uFFFD"+ - "\uEBD3\u9A26\uEBD5\u365F\uEBD7\uEBD8\u7983\uEBDA"+ - "\uEBDB\u5D2C\uEBDD\uFFFD\uEBDF\u46D0\uEBE1\u753B"+ - "\u8865\uEBE4\u58B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u371C\uEBE7\uEBE8"+ - "\uEBE9\u3C54\uEBEB\uEBEC\u9281\uEBEE\uEBEF\u9330"+ - "\uEBF1\uEBF2\u6C39\u949F\uEBF5\uEBF6\u8827\u88F5"+ - "\uEBF9\uEBFA\uEBFB\u6EB8\uEBFD\uEBFE\u39A4\u36B9"+ - "\uFFFD\uFFFD\u453F\u66B6\uEC05\uEC06\u8943\uEC08"+ - "\uEC09\u56D6\u40DF\uEC0C\u39A1\uEC0E\uEC0F\uEC10"+ - "\u71AD\u8366\uEC13\uEC14\uFFFD\u4CB7\uEC17\uEC18"+ - "\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\u7B43\u797E\uEC20"+ - "\u6FB5\uEC22\u6A03\uEC24\u53A2\uEC26\u93BF\u6836"+ - "\u975D\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F\u5D85"+ - "\uEC31\uEC32\u5715\u9823\uEC35\u5DAB\uEC37\u65BE"+ - "\u69D5\u53D2\uEC3B\uEC3C\u3C11\u6736\uEC3F\uEC40"+ - "\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47\uEC48"+ - "\uEC49\u35CA\uEC4B\uEC4C\u48FA\u63E6\uEC4F\u7808"+ - "\u9255\uEC52\u43F2\uEC54\u43DF\uEC56\uEC57\uEC58"+ - "\u59F8\uEC5A\uFFFD\uEC5C\uEC5D\uFFFD\uEC5F\uEC60"+ - "\u3DF7\uEC62\uEC63\u8FD0\u728F\u568B\uEC67\uEC68"+ - "\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F\uEC70"+ - "\uEC71\uEC72\uEC73\u7E9F\uEC75\uEC76\u4CA4\u9547"+ - "\uEC79\u71A2\uEC7B\u4D91\u9012\uEC7E\u4D9C\uEC80"+ - "\u8FBE\u55C1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u8FBA\uEC84\u8FB9\uEC86"+ - "\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uEC8D\uEC8E"+ - "\u373A\u8E80\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96"+ - "\u3DEB\uEC98\uEC99\uEC9A\uEC9B\u4E9A\uEC9D\uEC9E"+ - "\u56BF\uECA0\u8E0E\u5B6D\uECA3\uECA4\u63DE\uFFFD"+ - "\uECA7\uECA8\u6530\u562D\uECAB\u541A\uECAD\u3DC6"+ - "\uECAF\u4C7D\u5622\u561E\u7F49\uECB4\u5975\uECB6"+ - "\u8770\u4E1C\uECB9\uECBA\uECBB\u8117\u9D5E\u8D18"+ - "\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7"+ - "\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416"+ - "\uECCF\u35CE\u5605\u55F1\u66F1\uECD4\u362D\u7534"+ - "\u55F0\u55BA\u5497\u5572\uECDB\uECDC\u5ED0\uECDE"+ - "\uECDF\uECE0\uECE1\u9EAB\u7D5A\u55DE\uECE5\u629D"+ - "\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE"+ - "\u5569\uECF0\u9C72\uECF2\u519A\u34DF\uECF5\u51A7"+ - "\u544D\u551E\u5513\u7666\u8E2D\uECFC\u75B1\u80B6"+ - "\u8804\u8786\u88C7\u81B6\u841C\uED04\u44EC\u7304"+ - "\uED07\u5B90\u830B\uED0A\u567B\uED0C\uED0D\uED0E"+ - "\uED0F\uED10\uED11\u9170\uED13\u9208\uED15\uED16"+ - "\uED17\uED18\u7266\uED1A\u474E\uED1C\uED1D\uED1E"+ - "\u40FA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u9C5D\u651F\uED22\u48F3\uED24"+ - "\uED25\uED26\uED27\uFFFD\uED29\uED2A\uFFFD\uED2C"+ - "\uED2D\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D"+ - "\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uED3B\u589A"+ - "\uED3D\u822D\u544B\u57AA\uED41\uED42\uFFFD\u3A52"+ - "\uED45\u7374\uED47\u4D09\u9BED\uED4A\uED4B\u4C5B"+ - "\uED4D\uED4E\uED4F\u845C\uED51\uED52\uED53\uED54"+ - "\u632E\u7D25\uED57\uED58\u3A2A\u9008\u52CC\u3E74"+ - "\u367A\u45E9\uED5F\u7640\u5AF0\uED62\u787A\u47B6"+ - "\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uED6B\u9E85"+ - "\u4CE1\uFFFD\u37FB\u6119\uED71\uED72\uFFFD\u565D"+ - "\uED75\u57A7\uED77\uED78\u5234\uED7A\u35AD\uFFFD"+ - "\u9D7C\u7C56\u9B39\u57DE\uED81\u5C53\u64D3\uED84"+ - "\uED85\uED86\u86AD\uED88\uED89\uED8A\uED8B\uFFFD"+ - "\u51FE\uED8E\u5D8E\u9703\uED91\u9E81\u904C\u7B1F"+ - "\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A"+ - "\u7C7E\uFFFD\u7C42\u7C86\u9C15\u7BFC\u9B09\uFFFD"+ - "\u9C1B\uEDA6\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2"+ - "\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8"+ - "\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641"+ - "\u6980\u50A6\u7546\uEDC6\u99DA\u5273\uFFFD\u9159"+ - "\u9681\u915C\uFFFD\u9151\uEDCF\u637F\uEDD1\u6ACA"+ - "\u5611\u918E\u757A\u6285\uEDD7\u734F\u7C70\uEDDA"+ - "\uEDDB\uFFFD\uEDDD\u76D6\u9B9D\u4E2A\uEDE1\u83BE"+ - "\u8842\uFFFD\u5C4A\u69C0\uFFFD\u577A\u521F\u5DF5"+ - "\u4ECE\u6C31\uEDED\u4F39\u549C\u54DA\u529A\u8D82"+ - "\u35FE\uFFFD\u35F3\uFFFD\u6B52\u917C\u9FA5\u9B97"+ - "\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\uFFFD"+ - "\u6BFA\u8818\u7F78\uFFFD\u5620\uEE08\u8E77\u9F53"+ - "\uFFFD\u8DD4\u8E4F\u9E1C\u8E01\u6282\uEE11\u8E28"+ - "\u8E75\u7AD3\uEE15\u7A3E\u78D8\u6CEA\u8A67\u7607"+ - "\uEE1B\u9F26\u6CCE\u87D6\u75C3\uEE20\u7853\uEE22"+ - "\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uEE2A"+ - "\u862F\u5FBA\u88A0\u44B7\uFFFD\uEE30\uEE31\uFFFD"+ - "\u8A7E\uEE34\uFFFD\u60FD\u7667\u9AD7\u9D44\u936E"+ - "\u9B8F\u87F5\uFFFD\uFFFD\u8CF7\u732C\u9721\u9BB0"+ - "\u35D6\u72B2\u4C07\u7C51\u994A\uEE48\u6159\u4C04"+ - "\u9E96\u617D\uFFFD\u575F\u616F\u62A6\u6239\uFFFD"+ - "\u3A5C\u61E2\u53AA\uEE56\u6364\u6802\u35D2\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u5D57\uEE5B\u8FDA\uEE5D\uFFFD\u50D9\uEE60"+ - "\u7906\u5332\u9638\uEE64\u4065\uFFFD\u77FE\uFFFD"+ - "\u7CC2\uEE6A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505"+ - "\u74F2\u8994\u821A\u670C\u8062\uEE76\u805B\u74F0"+ - "\u8103\u7724\u8989\uEE7C\u7553\uEE7E\u87A9\u87CE"+ - "\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA"+ - "\u3635\u69B2\u8DA6\uFFFD\u89A9\uFFFD\u6DB9\u87C1"+ - "\uEE91\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\uFFFD"+ - "\u6077\uFFFD\u7F71\uEE9C\uFFFD\u60E9\u4B7E\u5220"+ - "\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7\uEEA8"+ - "\uEEA9\uEEAA\u5CC1\uEEAC\uEEAD\uEEAE\uEEAF\uEEB0"+ - "\uEEB1\u4562\u5B1F\uEEB4\u9F50\u9EA6\uEEB7\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\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\u4E36\u4E3F"+ - "\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369"+ - "\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\uFFFD\u5F50"+ - "\u5F61\u6534\uFFFD\u7592\uFFFD\u8FB5\uFFFD\u00A8"+ - "\u02C6\u30FD\u30FE\u309D\u309E\uFFFD\uFFFD\u3005"+ - "\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\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\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u21E7\u21B8\u21B9\uF7E5\uF7E6"+ - "\u4E5A\uF7E8\u5202\uF7EA\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF7EB\u5188"+ - "\uF7ED\uF7EE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116"+ - "\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88"+ - "\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7"+ - "\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA"+ - "\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\uFFFD"+ - "\uFFFD\uFFFD\u0283\u0250\u025B\u0254\u0275\u0153"+ - "\u00F8\u014B\u028A\u026A\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u7881\u92B9\u88CF\u58BB\u6052\u7CA7"+ - "\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A"+ - "\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561"+ - "\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B"+ - "\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E"+ - "\u2570\u256F\uFFED\uE000\u92DB\uE002\uE003\u854C"+ - "\u42B5\u73EF\u51B5\u3649\uE009\uE00A\u9344\uE00C"+ - "\u82EE\uE00E\u783C\u6744\u62DF\uE012\uE013\uE014"+ - "\uE015\uE016\u4FAB\uE018\u5008\uE01A\uE01B\uE01C"+ - "\uE01D\uE01E\uFFFD\uE020\u5FA4\uE022\uE023\u6EDB"+ - "\uE025\uFFFD\u5101\u347A\u510E\u986C\u3743\u8416"+ - "\uE02D\uE02E\u5160\uE030\u516A\uE032\uE033\uE034"+ - "\uE035\uE036\uE037\uE038\u5B82\u877D\uE03B\uE03C"+ - "\u51B2\u51B8\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u9D34\u51C9\u51CF\u51D1"+ - "\u3CDC\u51D3\uE045\u51B3\u51E2\u5342\u51ED\u83CD"+ - "\u693E\uE04C\u5F7B\u520B\u5226\u523C\u52B5\u5257"+ - "\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uE05A"+ - "\uFFFD\uE05C\u5549\u6ED9\uE05F\uE060\uE061\u5333"+ - "\uFFFD\uE064\u6CCB\uE066\u681B\u73D5\u604A\u3EAA"+ - "\u38CC\uE06C\u71DD\u44A2\u536D\u5374\uE071\u537E"+ - "\uFFFD\uE074\uE075\u77E6\u5393\uE078\u53A0\u53AB"+ - "\u53AE\u73A7\uE07D\u3F59\u739C\u53C1\u53C5\u6C49"+ - "\u4E49\u57FE\u53D9\u3AAB\uE087\u53E0\uE089\uE08A"+ - "\u53F6\uE08C\u5413\u7079\u552B\u6657\u6D5B\u546D"+ - "\uE093\uE094\u555D\u548F\u54A4\u47A6\uE099\uE09A"+ - "\u3DB4\uE09C\uE09D\uE09E\u5547\u4CED\u542F\u7417"+ - "\u5586\u55A9\uFFFD\uE0A6\uE0A7\u4552\uE0A9\u66B3"+ - "\uE0AB\u5637\u66CD\uE0AE\u66A4\u66AD\u564D\u564F"+ - "\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uE0BA"+ - "\u3623\uE0BC\u5746\uE0BE\u6C6E\u708B\u5742\u36B1"+ - "\uE0C3\u57E6\uE0C5\u5803\uE0C7\uE0C8\u5826\uE0CA"+ - "\u585C\u58AA\u3561\u58E0\u58DC\uE0D0\u58FB\u5BFF"+ - "\u5743\uE0D4\uE0D5\u93D3\u35A1\u591F\u68A6\u36C3"+ - "\u6E59\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uE0DC\u5A24\u5553\uE0DF\u8505"+ - "\u59C9\uE0E2\uE0E3\uE0E4\uE0E5\u59D9\uE0E7\uE0E8"+ - "\uE0E9\u6D71\uE0EB\uE0EC\u59F9\uE0EE\u5AAB\u5A63"+ - "\u36E6\uE0F2\uFFFD\u3708\u5A96\u7465\u5AD3\uE0F8"+ - "\uE0F9\u3D85\uE0FB\u3732\uE0FD\u5E83\u52D0\u5B76"+ - "\u6588\u5B7C\uE103\u4004\u485D\uE106\u5BD5\u6160"+ - "\uE109\uE10A\uE10B\u5BF3\u5B9D\u4D10\u5C05\uE110"+ - "\u5C13\u73CE\u5C14\uE114\uE115\u5C49\u48DD\u5C85"+ - "\u5CE9\u5CEF\u5D8B\uE11C\uE11D\u5D10\u5D18\u5D46"+ - "\uE121\u5CBA\u5DD7\u82FC\u382D\uE126\uE127\uE128"+ - "\u8287\u3836\u3BC2\u5E2E\u6A8A\uFFFD\u5E7A\uE130"+ - "\uE131\u53A6\u4EB7\uFFFD\u53A8\uE136\u5E09\u5EF4"+ - "\uE139\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D"+ - "\uE141\uE142\u3ADE\u48AE\uE145\u5F3A\uE147\uE148"+ - "\uFFFD\uE14A\u5F63\u97BD\uE14D\u5F72\u9340\uE150"+ - "\u5FA7\u5DB6\u3D5F\uE154\uE155\uE156\uE157\u91D6"+ - "\uE159\uE15A\u6031\u6685\uE15D\u3963\u3DC7\u3639"+ - "\u5790\uE162\u7971\u3E40\u609E\uFFFD\u60B3\uE168"+ - "\uE169\uE16A\u74A4\u50E1\u5AA0\u6164\u8424\u6142"+ - "\uE171\uE172\u6181\u51F4\uE175\u6187\u5BAA\uE178"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uE179\u61D3\uE17B\uE17C\u61D0\u3932"+ - "\uE17F\uE180\u6023\u615C\u651E\u638B\uE185\u62C5"+ - "\uE187\u62D5\uE189\u636C\uE18B\u3A17\u6438\u63F8"+ - "\uE18F\uE190\uFFFD\u6F8A\uE193\u9814\uE195\uE196"+ - "\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16"+ - "\uE19F\uE1A0\u6585\u656D\u655F\uE1A4\u65B5\uE1A6"+ - "\u4B37\u65D1\u40D8\uE1AA\u65E0\u65E3\u5FDF\uE1AE"+ - "\u6618\uE1B0\uE1B1\u6644\uE1B3\uE1B4\u664B\uE1B6"+ - "\u6667\uE1B8\u6673\uFFFD\uE1BB\uE1BC\uE1BD\uE1BE"+ - "\uE1BF\u77C5\uE1C1\u99A4\u6702\uE1C4\uE1C5\u3B2B"+ - "\u69FA\uE1C8\uFFFD\u6767\u6762\uE1CC\uE1CD\u67D7"+ - "\u44E9\u6822\u6E50\u923C\u6801\uE1D4\uE1D5\u685D"; + public int encodeBig5(char ch) { + return big5Enc.encodeChar(ch); + } - private final static String innerIndex2= - "\uE1D7\u69E1\u6A0B\uE1DA\u6973\u68C3\uE1DD\u6901"+ - "\u6900\u3D32\u3A01\uE1E2\u3B80\u67AC\u6961\uE1E6"+ - "\u42FC\u6936\u6998\u3BA1\uE1EB\u8363\u5090\u69F9"+ - "\uE1EF\uE1F0\u6A45\uE1F2\u6A9D\u3BF3\u67B1\u6AC8"+ - "\uE1F7\u3C0D\u6B1D\uE1FA\u60DE\u6B35\u6B74\uE1FE"+ - "\u6EB5\uE200\uE201\uE202\u3740\u5421\uE205\u6BE1"+ - "\uE207\u6BDC\u6C37\uE20A\uE20B\uE20C\u6C5A\u8226"+ - "\u6C79\uE210\u44C5\uE212\uE213\uE214\uE215\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uE216\u36E5\u3CEB\uE219\u9B83\uE21B\uE21C"+ - "\u7F8F\u6837\uE21F\uE220\uE221\u6D96\u6D5C\u6E7C"+ - "\u6F04\uE226\uE227\uE228\u8533\uE22A\u51C7\uFFFD"+ - "\uFFFD\u842E\uE22F\uFFFD\uE231\u7453\uE233\u79CC"+ - "\u6E4F\u5A91\uE237\u6FF8\u370D\u6F9D\uE23B\u6EFA"+ - "\uE23D\uE23E\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74"+ - "\uE245\u3D3B\u6F9F\uE248\u6FD3\uE24A\uE24B\uE24C"+ - "\uE24D\uE24E\uE24F\u51DF\uE251\uE252\uE253\uE254"+ - "\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF"+ - "\u4104\u3DE8\u71B4\u7196\uE261\u712B\u7145\u5A88"+ - "\u714A\uFFFD\u5C9C\uE268\u714F\u9362\uE26B\u712C"+ - "\uE26D\uE26E\uE26F\u71BA\uE271\u70BD\u720E\u9442"+ - "\u7215\u5911\u9443\u7224\u9341\uE27A\u722E\u7240"+ - "\uE27D\u68BD\u7255\u7257\u3E55\uE282\u680D\u6F3D"+ - "\u7282\uFFFD\u732B\uE288\uE289\u48ED\uE28B\u7328"+ - "\u732E\u73CF\u73AA\uE290\uE291\u73C9\u7449\uE294"+ - "\uE295\uE296\u6623\u36C5\uE299\uE29A\uE29B\u73F7"+ - "\u7415\u6903\uE29F\u7439\uE2A1\u3ED7\uFFFD\uE2A4"+ - "\u7460\uE2A6\u7447\u73E4\u7476\u83B9\u746C\u3730"+ - "\u7474\u93F1\u6A2C\u7482\u4953\uE2B2\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uE2B3\uE2B4\uE2B5\u5B46\uE2B7\uE2B8\u74C8\uE2BA"+ - "\u750E\uFFFD\u751E\uE2BE\uE2BF\u5BD7\uE2C1\u9385"+ - "\u754D\u754A\u7567\u756E\uE2C7\u3F04\uE2C9\u758E"+ - "\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F"+ - "\u7676\uE2D4\u7690\u81EF\u37F8\uE2D8\uE2D9\u76A1"+ - "\u76A5\u76B7\u76CC\uE2DE\u8462\uE2E0\uE2E1\uE2E2"+ - "\u771E\u7726\u7740\u64AF\uE2E7\u7758\uE2E9\u77AF"+ - "\uE2EB\uE2EC\uE2ED\u77F4\uFFFD\uE2F0\uE2F1\u68CA"+ - "\u78AF\u78C7\u78D3\u96A5\u792E\uE2F8\u78D7\u7934"+ - "\u78B1\uE2FC\u8FB8\u8884\uE2FF\uE300\uE301\u7986"+ - "\u8900\u6902\u7980\uE306\u799D\uE308\u793C\u79A9"+ - "\u6E2A\uE30C\u3EA8\u79C6\uE30F\u79D4"; + public int encodeChar(char ch) { + int bb = c2bBmp[ch >> 8][ch & 0xff]; + if (bb == UNMAPPABLE_ENCODING) + return encodeBig5(ch); + return bb; + } - private final static short index1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 0 - }; + public int encodeSupp(int cp) { + if ((cp & 0xf0000) != 0x20000) + return UNMAPPABLE_ENCODING; + return c2bSupp[(cp >> 8) & 0xff][cp & 0xff]; + } - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2 - }; - public Decoder(Charset cs) { - super(cs, - index1, - index2, - 0x40, - 0xFE); + public boolean canEncode(char c) { + return encodeChar(c) != UNMAPPABLE_ENCODING; } - } - protected static class Encoder extends DoubleByteEncoder { - private final static String innerIndex0= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8859\u8857\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u885D\u885B\u8866\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8861\u885F\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u886A\u8868\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u886F\u886D\u88A7\u0000\u8873\u8871\u0000\u0000"+ - "\u0000\u0000\u8877\u8875\u0000\u0000\u0000\u0000"+ - "\uC8FB\u887B\u8879\u0000\u88A2\u0000\u0000\u0000"+ - "\u8856\u8867\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u885A\u886C\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u885C\u886E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8870\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8FC\u885E\u8874\u0000\u0000"+ - "\u0000\u0000\u0000\uC8FA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8878\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8858\u8869\u0000"+ - "\u8872\u8860\u8876\u0000\u887A\u0000\u887C\u0000"+ - "\u887D\u0000\u887E\u0000\u88A1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8F6\u886B\u0000\u0000\uC8F8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8F7\u0000\u0000\u0000\u0000"+ - "\u0000\u88A8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8FE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8F9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8F5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8FD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6D9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC7F9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC7F3\uC7F4\uC7F5\uC7F6\uC7F7\uC7F8\uC7FA\uC7FB"+ - "\uC7FC\uC7FD\uC7FE\uC840\uC841\uC842\uC843\uC844"+ - "\uC845\uC846\uC847\uC848\uC849\uC84A\uC84B\uC84C"+ - "\uC84D\uC84E\uC84F\uC850\uC851\uC852\uC853\uC854"+ - "\uC855\uC856\uC857\uC858\uC859\uC85A\uC85C\uC85D"+ - "\uC85E\uC85F\uC860\uC861\uC862\uC863\uC864\uC865"+ - "\uC866\uC867\uC868\uC869\uC86A\uC86B\uC86C\uC86D"+ - "\uC86E\uC86F\uC870\uC871\uC872\uC873\uC874\uC875"+ - "\u0000\uC85B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8863\u88A4"+ - "\u8865\u88A6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8D2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC8D3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB\uC6BC"+ - "\uC6BD\uC6BE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC877\uC878\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC876"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6A1\uC6A2\uC6A3\uC6A4\uC6A5\uC6A6\uC6A7\uC6A8"+ - "\uC6A9\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC6AB\uC6AC\uC6AD\uC6AE"+ - "\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3\uC6B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uF9F9\uF9F8\uF9E6\uF9EF\uF9DD\uF9E8\uF9F1\uF9DF"+ - "\uF9EC\uF9F5\uF9E3\uF9EE\uF9F7\uF9E5\uF9E9\uF9F2"+ - "\uF9E0\uF9EB\uF9F4\uF9E2\uF9E7\uF9F0\uF9DE\uF9ED"+ - "\uF9F6\uF9E4\uF9EA\uF9F3\uF9E1\uF9FA\uF9FB\uF9FD"+ - "\uF9FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6E6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8D6\u0000\u0000\u0000\uC8D7\u0000\uC8D8\uC8D9"+ - "\uC8DA\u0000\uC8DB\u0000\uC8DC\uC8DD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8DE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC8DF\uC8E0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8E1\u0000\uC8E2"+ - "\u0000\u0000\uC8E3\u0000\uC8E4\u0000\uC8E5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E6\u0000"+ - "\u0000\u0000\u0000\u0000\uC8E7\u0000\uC8E8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E9\u0000"+ - "\u0000\u0000\uC8EA\u0000\uC8EB\uC8EC\u0000\uC8ED"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8EE\uC8EF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8F0\u0000"+ - "\u0000\u0000\u0000\uC8F1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC6CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6E0\uC6E1\uC6E2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB\uC6EC\uC6ED"+ - "\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3\uC6F4\uC6F5"+ - "\uC6F6\uC6F7\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD"+ - "\uC6FE\uC740\uC741\uC742\uC743\uC744\uC745\uC746"+ - "\uC747\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E"+ - "\uC74F\uC750\uC751\uC752\uC753\uC754\uC755\uC756"+ - "\uC757\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E"+ - "\uC75F\uC760\uC761\uC762\uC763\uC764\uC765\uC766"+ - "\uC767\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E"+ - "\uC76F\uC770\uC771\uC772\uC773\uC774\uC775\uC776"+ - "\uC777\uC778\uC779\uC77A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8D4\uC8D5\uC6DC\uC6DD\u0000"+ - "\u0000\uC77B\uC77C\uC77D\uC77E\uC7A1\uC7A2\uC7A3"+ - "\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9\uC7AA\uC7AB"+ - "\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\uC7B1\uC7B2\uC7B3"+ - "\uC7B4\uC7B5\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\uC7BB"+ - "\uC7BC\uC7BD\uC7BE\uC7BF\uC7C0\uC7C1\uC7C2\uC7C3"+ - "\uC7C4\uC7C5\uC7C6\uC7C7\uC7C8\uC7C9\uC7CA\uC7CB"+ - "\uC7CC\uC7CD\uC7CE\uC7CF\uC7D0\uC7D1\uC7D2\uC7D3"+ - "\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8\uC7D9\uC7DA\uC7DB"+ - "\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0\uC7E1\uC7E2\uC7E3"+ - "\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8\uC7E9\uC7EA\uC7EB"+ - "\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0\uC7F1\uC7F2\u0000"+ - "\u0000\u0000\u0000\u0000\uC6E3\uC6DA\uC6DB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC8D1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9277\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89D5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93CD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9BDF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFA68\u0000\u0000\u89DA\u8F59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89DB\u0000\u0000\u8F5D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89DC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8ADA\u0000\u0000\u0000"+ - "\u0000\u8BDC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u97DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E53"+ - "\u0000\u0000\u0000\u0000\u9DAA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9BEA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A6E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8BC8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89E8\u0000\u89EA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB70\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89ED\u0000\u0000"+ - "\u94DD\u0000\u89EE\u0000\u0000\u0000\u0000\u9EB4"+ - "\u8AD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92DB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94DB"+ - "\u89F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB7A\u0000\u0000\u0000\u89FB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EFC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FC"+ - "\u0000\u89BF\u0000\u0000\u0000\u89FE\u0000\u89E6"+ - "\u0000\u0000\u9D46\u0000\u0000\u0000\u9DEE\u0000"+ - "\u0000\u0000\uA07E\u0000\u0000\u0000\uA068\u0000"+ - "\u0000\u0000\u0000\u98E9\u0000\u8B68\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFD\u8BBE\u9FD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AEB\u0000\u0000\u9FD7\u0000"; + protected CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) { + char[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + + byte[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); - private final static String innerIndex1= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8B6A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9C5C\u0000\u8BB1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB5E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DF3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0D0\u0000\u0000"+ - "\u0000\uFC66\u0000\u0000\u0000\u0000\u92E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AEC"+ - "\u8FAB\uFA48\u0000\u0000\u0000\u0000\u8E45\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C6F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EDE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89EF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96E9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EBB\u0000\u0000"+ - "\u0000\u0000\u94DE\u0000\u9EB8\u0000\u0000\u0000"+ - "\u97BA\uFB65\u0000\u0000\u0000\u95D6\u0000\u0000"+ - "\u0000\u9CBB\u0000\u0000\u97DA\u0000\u0000\u0000"+ - "\u0000\u8F45\u0000\uFB7D\u9158\uFE64\u0000\u9856"+ - "\u9B4D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u935B\u95C7\u0000\u97E7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9359\u0000\u0000"+ - "\u0000\u91F5\u97B8\u0000\u0000\uFDA2\uFBB6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92FA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9357\u0000\u8BA6\u0000\u0000\u0000\u0000"+ - "\uFBB9\u0000\u97B0\u0000\u0000\uFDC4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9CA1\u0000\u0000\u0000"+ - "\u0000\u0000\u91F2\u91F9\u0000\u8FF1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9745\u9853\u0000\u0000"+ - "\uFE78\u0000\uFBC1\u9251\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DAD\u0000\u0000\u0000\u0000\u0000"+ - "\uFD6C\u0000\u0000\uFA6B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9BC2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A7B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B60"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u934B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9ABD\u0000\u0000\u0000\u0000\u91B7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95B4\u0000\u0000\u0000\u0000\u0000"+ - "\uFEC5\u0000\u0000\u9EF0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D64"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9269\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBEA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF\u0000"+ - "\u8D68\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93EB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9166\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000"+ - "\u0000\u93DD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BCC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D6E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96A8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCA6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D6F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFC64\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8D74\u97C3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AD0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9274\u0000\u9BBE\u0000\u0000\u0000\u0000"+ - "\u0000\u9CC8\u0000\u0000\u9CBA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EB9\u0000\u0000\u0000"+ - "\u0000\u0000\u955A\u0000\u0000\u91B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A48\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7D\u0000\u0000\u8A7D\u0000\u0000\u8AC2\u0000"+ - "\u0000\uFD4A\u0000\u8DA1\u0000\u0000\u8AD1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCB4"+ - "\u8B47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93A4\u9EDA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A51\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DA6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EC5\u0000\u0000\u0000\u0000\uFCC4"+ - "\u0000\u0000\u0000\u0000\uA078\u0000\u94B5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC2\u8A6B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAE8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DAD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC49\u0000"+ - "\u93C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u906F\u0000\u8DB0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u947E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90FA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9479\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DB2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCEE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u997B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DB4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DB7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DBB\u8DBA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DBC\u9044\u0000\u0000\u0000"+ - "\uFD4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93E4\u0000"+ - "\u0000\u93E0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DC3\u0000\u9BB8\u0000"+ - "\u0000\u0000\uFBF0\u0000\u93E9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93F6"+ - "\u0000\u0000\u0000\u0000\u0000\u8DC5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DCA\u0000\u0000\u0000"+ - "\u0000\u0000\u8DCC\uFD5D\u93B5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD61\u0000\u0000"+ - "\u0000\u9CF8\u0000\u0000\u0000\u9252\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9CA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DD6\u0000\u97C0\u0000\u0000"+ - "\u0000\uA0DE\u0000\u0000\u0000\u0000\u97D2\u0000"+ - "\u0000\u0000\u0000\u0000\uFAA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDA3\u0000\u0000\u0000\u8DDB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u91B5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFD49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDD1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEB\u0000"+ - "\u0000\u0000\u0000\u0000\u97C6\u0000\uFDCE\u0000"+ - "\u0000\u90FC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFC59"+ - "\u0000\u0000\u96D6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97C5\u8DEF\u0000\u0000\u0000\u0000\u97D7"+ - "\u0000\u0000\u0000\u0000\u0000\u8DF0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96A6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBBF\u0000\u0000"+ - "\u0000\u0000\u8DF3\u0000\u0000\u0000\u0000\u9449"+ - "\u0000\u8DF5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9872\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E6B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAFD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F50"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DCC\uFC65"+ - "\u0000\u0000\u0000\u0000\u996E\u94A1\u0000\u0000"+ - "\u0000\u0000\u0000\u8F63\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0DA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9253"+ - "\uFDE9\u0000\u0000\u9DB5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9879\u0000\u0000\u0000\u9D5D"+ - "\u0000\u0000\u0000\u0000\u8D63\u9669\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC6A\u0000\u0000\u8AC7\u0000\u0000\u0000\u0000"+ - "\u89D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE4D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EDD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEFB\u98BC\uFACC\u0000\u0000\u95B0\u0000\u0000"+ - "\u0000\u9464\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u936F\u0000\u0000\u0000\u0000\u0000\u0000\u94B9"+ - "\u0000\u0000\u95EC\u0000\u0000\u0000\u0000\u91EE"+ - "\u0000\u0000\u98C3\u0000\u95F6\u0000\u0000\u0000"+ - "\u8FFD\u98C5\u0000\u0000\u0000\u0000\u9766\uFE6E"+ - "\u0000\u0000\u97DD\u0000\u0000\u0000\u92D2\u0000"+ - "\u0000\u9761\u98CB\u0000\u0000\u0000\u0000\u95F0"+ - "\u0000\u975D\u0000\u91E3\u0000\u0000\u0000\u0000"+ - "\u98CC\u0000\u0000\u9469\u98CD\u0000\u0000\u0000"+ - "\u0000\u0000\u98CE\u0000\u95FC\u0000\u0000\u94A3"+ - "\u9662\u0000\u0000\u0000\uFEB6\u0000\u9463\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98D0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98D1\u0000\u0000\u0000\u0000"+ - "\u9475\uFAE0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98D6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AF0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98DB"+ - "\u0000\u0000\u0000\u0000\u98DD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98A8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A6D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8AFB\u8AAE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBC9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98E4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98E8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8A4D\u0000\u0000\u0000\u9257"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95DF\u0000\u0000\uA0AC\u0000\u0000"+ - "\u0000\u0000\u98EB\u0000\u0000\u0000\u0000\u98EC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AB8\u0000\u0000\u0000\u9EE7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u94BC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD1\u0000\u0000\u0000\u0000\u0000\u0000\u9CC6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98FE\uFDE8\u0000\u0000\u0000"+ - "\u0000\u9940\u0000\u0000\u0000\u0000\u94C9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94D3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9946"+ - "\u0000\u0000\u0000\u0000\u90C0\u0000\u94D1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9573"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9948\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u994B\u0000\u0000\u0000"+ - "\u0000\u0000\u8E55\u0000\u0000\u0000\u0000\u994E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EFE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8E59"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94EC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94EF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F74\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9955\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9544\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9956\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9959\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u995B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFA45\u0000\u0000"+ - "\u0000\u90B7\u0000\u0000\u9743\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95CD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u97C9\uFD50\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EB9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95C6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8A76\u0000\u0000\u0000\u0000\u0000\u9D51"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9973\u0000\u0000"+ - "\u0000\u0000\u9D4F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u997A\u9564\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99A1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8EED\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99AD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946E"+ - "\u8F70\u0000\uFAD0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99B3\u0000\u0000\u0000\u0000\u0000\u0000\uA053"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u965C\u0000\u0000\u0000\u0000\uFD7A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97FE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92BD\u0000\u97FD"+ - "\u0000\u0000\u0000\u0000\u8F64\u0000\u0000\u0000"+ - "\u0000\uFCF7\u9562\u97CD\u9E64\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u924C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EC9\u99BC\u0000\u0000\u0000"+ - "\u0000\u9DA5\u0000\u8F54\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8F7C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EA2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97AE\u0000"+ - "\u0000\u0000\u0000\u96C8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99C3\u0000\u90D6\u0000\u9CBE"+ - "\u0000\u0000\u0000\u8F76\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9470\uFB4B\u0000\u0000\uFDCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8EC7\u0000\u0000\u0000"+ - "\u0000\u0000\uA0F9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8FA9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90D7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EDF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static String innerIndex2= - "\u0000\u0000\u0000\u0000\u0000\u0000\u99CE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA"+ - "\u0000\u0000\u0000\u0000\u0000\u8FEB\u0000\u99CF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FC2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92C9\u0000\u0000\u0000\u0000\u0000"+ - "\u97DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95B3"+ - "\u9C79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95B2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FDB\u0000\u0000\u0000\u0000"+ - "\u9BE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E7A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9BEE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAFA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9EE5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A52\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99E1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A67\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BB5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AAC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97DE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95D1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99F5\uFC4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBDC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE56\u0000\u0000"+ - "\u0000\u0000\u0000\u9EA4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95DB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9664\u0000\u0000"+ - "\u0000\u0000\u9055\u0000\u0000\u96D4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u977C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u964D\u0000\u97E1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A48\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A49\u0000\uFE7D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90AA\u0000\u0000"+ - "\u0000\u0000\u9A50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9347\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90C9\u0000\u0000\u0000\u0000\u0000\u9A55"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90BC"+ - "\u0000\u0000\u0000\u0000\u0000\u9A58\u0000\u8BB8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90D5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9641\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A5A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A5C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8ABB\u0000\u0000\u0000"+ - "\u9BAA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90F5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A60\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9145"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A63\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8BB6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966B"+ - "\u9A6E\u0000\u914F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9746\u0000\u0000\uA0E6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92D7\u0000"+ - "\u9675\u0000\u0000\u93D4\u0000\u0000\u91BB\u9679"+ - "\u0000\u0000\u0000\u0000\u0000\u9A70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9678\u91CD\u0000"+ - "\u9C4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA06F\u0000\u0000\uA06A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u915F\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9FA5\u0000\u0000\u89BA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9ECD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A79\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9D73\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96B9\u0000"+ - "\u96BC\u0000\u0000\u0000\u0000\u0000\u0000\u9CD1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EEE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB43\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EC9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFBD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9D78\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9D7B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EB3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EB2\u0000\u9DD6\u0000\u0000\u0000"+ - "\u0000\u994F\u0000\u0000\u89CE\u0000\u0000\u0000"+ - "\u8BC0\u0000\u9FC4\u0000\u8BD4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6BF\u8BF9"+ - "\u0000\u0000\u0000\u0000\u0000\u8946\u0000\uC6C0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC87B\u8BC6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C57\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9AFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89D0\u89CF\u0000\u0000\u0000\uC6C1\u0000\u89D1"+ - "\u0000\u89E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u927E\u0000\u9DBA\u0000\u0000\u0000\u0000\u0000"+ - "\uC6C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBF8"+ - "\u0000\u0000\u0000\u8BC7\u926B\u0000\u0000\u89D2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FCF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DA9\u89D3\u0000\u0000\u99E2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9267\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92A4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u894E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u894F\u9278\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91B6\u0000\u0000\u0000\u0000\u89D4"+ - "\u0000\u9FD2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92A7\u0000\u0000\u95A2\u0000\u0000"+ - "\u0000\u0000\u0000\u926E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96EA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u926F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92A3\u0000\u0000\u0000\u0000\u0000"+ - "\u8950\u0000\u0000\uFA57\u0000\u0000\u0000\u0000"+ - "\u9866\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89D6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B2\u0000\u0000\u0000\u92AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96DE\u92AC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F6E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EF2\u0000\u0000\u0000\u9F6C\u0000\u0000"+ - "\u0000\u0000\u0000\u89D8\u0000\u0000\u0000\u0000"+ - "\uFA59\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92A8\u0000"+ - "\u0000\u0000\u0000\u0000\u9163\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F73\u0000"+ - "\u92AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BE9\u0000"+ - "\u0000\u0000\u0000\u0000\u92A9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD56\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FA8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92A1\u0000\u0000"+ - "\u90E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0A6\u0000\u0000\u0000\u0000\u0000\u94AB"+ - "\u0000\uFC72\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97C4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92AE\u0000\u0000\u0000"+ - "\u0000\uFA67\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92A2\uFA69\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9268\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8951\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFA6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFA71\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8952\u0000\u0000\u0000"+ - "\u0000\u945A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC6C3\u0000\u0000\u0000\u89DD\u0000"+ - "\uC8A2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6C4\u0000"+ - "\u0000\u0000\u9E52\u0000\u8953\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E55"+ - "\u92BA\u0000\u0000\uC6C5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFA7D\uFAA8\u9A68\uFA47\u0000\u0000"+ - "\uFA7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92BB\u0000\u0000\u0000\uFDB6"+ - "\u0000\uFAA2\u0000\u0000\u0000\u0000\u0000\uFAA3"+ - "\u0000\uFAA4\u9BB4\uFAA6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89DF\u0000\u0000\u0000\uFDDB"+ - "\u0000\u0000\uFAA9\u0000\u8954\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAAB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFC7A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89E0\u0000\u9F4F\u0000"+ - "\u0000\u0000\uC87D\u0000\u0000\u89E1\u0000\u0000"+ - "\u0000\u0000\u0000\uFAB0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FCD"+ - "\uA0E7\u0000\u0000\u0000\u0000\u0000\uFAB1\u89A6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EFA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAB2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAB4"+ - "\u0000\u92C4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9FAC\u0000\u0000\u0000\u0000"+ - "\u0000\u89E3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD3"+ - "\u89E4\u0000\u0000\u0000\uFAB5\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8955\u0000\u0000\u92C5\u0000\u0000\u0000"+ - "\u8956\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000"+ - "\u0000\uFAB6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAB7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EDC\u0000\u0000\u0000"+ - "\uFBC4\u9F71\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFABA\u92C7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC6C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89E5"+ - "\u0000\u0000\u0000\u0000\u9F7D\u0000\u0000\u0000"+ - "\u0000\u0000\uA0A9\uFAC4\u0000\u0000\u0000\u0000"+ - "\uC6C7\u0000\u0000\u8957\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFAAA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8958\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BE3\u0000\u8B61"+ - "\u0000\u0000\u0000\u0000\u9AF1\u0000\u0000\u9EB7"+ - "\u0000\uC6C8\u0000\u0000\u0000\uFAD1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAD2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EBA\uFAD4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFADB\u0000\u9CE0\u0000\u0000\u0000\uFBF7\u0000"+ - "\uFBFA\u89E7\uA07A\uFADC\u0000\u0000\uFADD\u0000"+ - "\u89E9\u0000\u0000\u0000\u0000\u0000\uC6C9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE2\u89EB\u0000\u0000\uFAE3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90C8\u0000\u0000\u0000"+ - "\u92DA\u8959\u9CF5\u0000\u0000\u0000\u0000\u0000"+ - "\u895A\uFAE7\u9FA2\u0000\u0000\u0000\u0000\u0000"+ - "\uFAEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAED\u8FAD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAEF\u96EF\u0000\u9DEC\u0000"+ - "\u0000\u0000\u9DCA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD6D\u0000\u89EC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB44"+ - "\u0000\u0000\u9DE2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EC0\u0000\u9E56\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F79\u9AC7\u0000\u0000\uFAF4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98A1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAF8"+ - "\u0000\u0000\u0000\u89F0\u9E47\u0000\u0000\u9DF7"+ - "\u0000\u0000\u0000\u0000\u9FD3\u0000\u9ACA\u0000"+ - "\u0000\u0000\u0000\u89F1\uFAF9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E5A\u0000\u89F2\u0000\u0000\u0000"+ - "\u0000\u89F3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u925D\u8B51\u92E0\u0000\u0000"+ - "\u89F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8A79\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97A7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u93BA\u0000\u0000"+ - "\u0000\u0000\u0000\u9E58\u0000\u0000\u0000\u0000"+ - "\u89F6\u0000\u0000\u0000\u0000\u0000\u9E57\u0000"+ - "\u0000\u0000\u0000\u89F7\u0000\u8A41\u0000\u0000"+ - "\u89F8\u0000\u0000\uFAF1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB42"+ - "\u0000\uFABF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBA3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAF7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E4E\u0000\u94DC\u0000\u0000\u0000\u0000"+ - "\u0000\u95DA\u9DF8\u9F6A\u0000\u0000\u0000\u0000"+ - "\u0000\u8AB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB46\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8A46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB47\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9148\u0000\u0000\u0000\u92DE\u0000\u0000\u0000"+ - "\u0000\u8B53\u9DF6\u0000\u9BDA\u0000\u0000\u0000"+ - "\u0000\u9D7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FD"+ - "\u99E4\u0000\u0000\u0000\u0000\u0000\u9E43\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DE9\u0000\u8F52\u0000\u0000\u0000"+ - "\u9DF5\u9DF0\u0000\u0000\u0000\u99E7\u0000\u0000"+ - "\u0000\u0000\u0000\u8BBD\u0000\u0000\u0000\u0000"; + try { + while (sp < sl) { + char c = sa[sp]; + int inSize = 1; + int bb = encodeChar(c); + if (bb == UNMAPPABLE_ENCODING) { + if (Character.isSurrogate(c)) { + int cp; + if ((cp = sgp().parse(c, sa, sp, sl)) < 0) + return sgp.error(); + bb = encodeSupp(cp); + if (bb == UNMAPPABLE_ENCODING) + return CoderResult.unmappableForLength(2); + inSize = 2; + } else { + return CoderResult.unmappableForLength(1); + } + } + if (bb > MAX_SINGLEBYTE) { // DoubleByte + if (dl - dp < 2) + return CoderResult.OVERFLOW; + da[dp++] = (byte)(bb >> 8); + da[dp++] = (byte)bb; + } else { // SingleByte + if (dl - dp < 1) + return CoderResult.OVERFLOW; + da[dp++] = (byte)bb; + } + sp += inSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } - private final static String innerIndex3= - "\u0000\u0000\u0000\u0000\u0000\u9DEF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DD0\u0000"+ - "\u9FEB\u8DA9\u9DCF\u98E1\u0000\u9DE5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DC8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB4F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9DEB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB54\u0000\uFB55"+ - "\u9AA2\u0000\u8AD6\u0000\u9A5F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EF5\u0000\u0000"+ - "\u0000\u8FB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9AD2\u9E6A\u9EE8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BBF\u91C2\u9D62\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9260\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u925E\u91C1"+ - "\u0000\u8AC5\u0000\u0000\u97A3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B6C"+ - "\u0000\u8D7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9C54\u0000\u0000\u0000\u0000\u0000\u9DBD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CC5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u895B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB5C\u0000\uFB5B"+ - "\u0000\uFB57\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98C7\u0000\u0000"+ - "\uFB5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CEE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92E2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94A7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD4"+ - "\u0000\u0000\uFB64\uFB76\u0000\u0000\uFB60\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99E5\u0000\u0000\u9AC2"+ - "\u0000\u0000\u0000\u91FB\u0000\u0000\u0000\uA073"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F72"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FCC\u0000\u0000\u0000\u98A5\u92E8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BBC\u0000\u96F3\u0000\u0000\u92E7\u0000\u0000"+ - "\uFC67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B7D\u0000\u0000\u0000"+ - "\u0000\u9BF4\u0000\u0000\u0000\u0000\u0000\u9EF7"+ - "\u0000\u0000\u9EC1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u996F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96F1\u0000\u0000\u8E41\u0000"+ - "\u0000\u0000\u0000\u0000\u954A\u0000\u0000\u0000"+ - "\u97E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F5"+ - "\u0000\u0000\u0000\u0000\u0000\u92E6\u9F42\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB67\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99A9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE6\u0000"+ - "\u0000\u0000\u0000\uFB69\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97E5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u967D\u0000\u0000\u0000\uFB6C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99A2\u0000\u0000\u0000\u0000\u0000"+ - "\u9ABB\u0000\u0000\u0000\u9A65\u0000\u0000\u944E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB6E\u0000\u0000\u99DF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E3\u0000\u0000\u9254\u0000\u0000\u0000"+ - "\u0000\u0000\u967B\u8AAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BAF\u9EBD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9EE6"+ - "\u0000\u0000\uFB6F\u0000\u0000\u0000\u0000\u0000"+ - "\u8EE1\u0000\u0000\u0000\u0000\u9B7D\u9C7E\u0000"+ - "\u0000\u0000\u0000\uF9D9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92EA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB72\u0000\u0000\u0000"+ - "\uFB71\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u895C\u0000\u98F0\u96F2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB74\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BC1\u0000\u895D\u89DE\u0000\u895E"+ - "\u0000\u0000\uC6CA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE42\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB7B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u895F\u0000\u8960\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9BCD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DD3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u984C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9752\u0000\u0000\u0000"+ - "\u0000\u0000\u95C3\u0000\u0000\u0000\u0000\u9BB6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AB9\u0000\u0000\u0000"+ - "\u97B3\u0000\u0000\u0000\u0000\u0000\u0000\u9F74"+ - "\u92F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97DF\u0000\u0000\u0000"+ - "\u0000\uFBA6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9877\u0000\u0000\u0000\u9854"+ - "\u95C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9D55\uFBB2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u957E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9742\u0000\u94E6\u0000\u0000"+ - "\u0000\u0000\u92F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92FD\u0000\u0000\uFBA2\u0000\u0000\u9C51"+ - "\u0000\u0000\u94E9\u985C\u92F0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u944C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u916B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B78\u0000\u0000\u0000"+ - "\u0000\u94E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u984F\u0000\uFBB5\u0000\u0000\u0000\u0000"+ - "\u9271\u0000\u0000\u9365\u0000\u0000\u985B\u0000"+ - "\u0000\u9850\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97BC\u0000\u0000\u0000\u0000\u92F3\u0000"+ - "\u0000\u9340\u984D\u0000\u0000\u0000\u9572\u0000"+ - "\uFDEF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFDC1\u0000\u0000\u0000\u0000\uFBBA\u0000"+ - "\u0000\u92EB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC73\u97B7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBB4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90A7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9741\u92F4"+ - "\u0000\u0000\u0000\uFBBC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9577\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9EE2\u0000\u8F78\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uF9DC\u0000\u0000\u0000\u9672\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EB5\u0000\u0000"+ - "\u0000\u964B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0FA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9575\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90DA\u0000\u0000\u9367\u0000\uFEA4\u0000"+ - "\u0000\u0000\u90DF\u0000\u0000\u0000\u0000\u9354"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8961\u0000"+ - "\u8BB4\u0000\u0000\u0000\u0000\u9DC0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8E48\u0000\uFBC5\u0000"+ - "\u0000\u0000\u0000\u0000\uFBC7\u0000\u0000\u0000"+ - "\uC6CB\u0000\uFA79\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBD2\u8962\u8963"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC7D\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F6B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBCC\u0000\uFEAE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBD1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB75"+ - "\u0000\u0000\u0000\u0000\u0000\uFBD4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBD6\uFBD8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B5D\u0000\u934C\u0000"+ - "\u9AE2\u0000\u0000\u8BC9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBDB\u9FC9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F44\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98ED\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBDD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DF2\u8964\u0000\uFDF2\u0000\u934D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBE7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0F2\u9868\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F58\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D73\u0000\u0000"+ - "\u0000\uFBDE\u0000\u0000\u0000\u0000\u0000\uFBDF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFBE3\u0000\u0000\u0000\u0000\u8DA8\u0000\u0000"+ - "\uFBE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9C75\u0000\u0000\u9878"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8D60\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBE5\u0000"+ - "\u8D61\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8D62\uA0A1"+ - "\u0000\u0000\u0000\u9C40\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98AD\u0000\u0000\u0000\u9EEA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CEB\u0000\u0000"+ - "\u0000\u0000\u0000\uFBE0\u0000\u0000\u9F51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D65\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CF1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC58\u0000"+ - "\u0000\u8D66\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9654\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBE8"+ - "\u0000\u0000\u0000\uC6CC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9FCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBFC\u0000\u9AE4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F75\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBF1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8D69\u0000\u0000\u0000\u0000\u0000"+ - "\u934F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u934E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBF4\u0000\u0000\u0000\u0000\uC6CE"+ - "\u0000\u0000\u0000\uFBC3\u0000\u0000\u8965\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D6A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9353\u0000\u0000"+ - "\u9DFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBFD\u0000\u0000\u0000"+ - "\u9059\uFC40\u0000\uFC41\uFC43\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9361\uFC46\u9362\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D6B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC4C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95B8\u0000\u0000"+ - "\uC6D0\u8BCA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u987A\u0000\u0000\u0000"+ - "\u0000\uC6D1\u0000\uFC51\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC54\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8D6C\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFA61\u0000\u0000\uFC57"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9B70\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA051\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8BCB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u936E\u0000\u0000\u0000\uFCD5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCA9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC61\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8966\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFACB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uF9DA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u937A\u0000\uA0E0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u936B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC6B\u0000"+ - "\u0000\u0000\u0000\u0000\uA0DC\u0000\u0000\u9468"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFC6D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D71"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD64\u0000"+ - "\u0000\u0000\u0000\u99BA\u0000\u0000\u0000\u9AD0"+ - "\u9A61\uA0E5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA05B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AC"+ - "\u0000\u0000\u0000\u0000\u9740\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EF1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D72\u0000\u0000"+ - "\u0000\u0000\uFC76\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA06E\u0000\u0000\uFCAA\u0000\u0000\u0000"+ - "\uFBCD\u0000\u0000\u0000\uFC74\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA074"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA071\u0000\u0000"+ - "\u0000\uFC79\u0000\u0000\u0000\u0000\u0000\uFC7C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9C50\u0000\u0000"+ - "\u9379\u9378\u0000\u0000\uA0DD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D75"+ - "\u0000\u8D76\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9374\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D77"+ - "\uFCA5\u0000\u0000\uFCA2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90C3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA079\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D79\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BFC"+ - "\u0000\uA076\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8BCD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FF4\u0000\u0000\u9FBA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E45\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93B0\u0000\uA075\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9B46\u0000\uFCAE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA51"+ - "\u0000\u0000\u0000\u0000\u0000\u8D7B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9ED6\u0000"+ - "\u0000\u93AC\u0000\u0000\u0000\u9F5B\u0000\u93A9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA07C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCB2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8AC1\u0000\u0000\u0000\u0000\u0000\u9FB4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCAC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FC5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93AD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DC3\u0000"+ - "\u0000\u0000\u8DA2\u0000\u0000\u0000\u9D4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCB6\u0000\u0000\u8DA3\u9E4B\u0000\u9E4D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DA4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AFD\u0000\u0000\u0000\u0000\u0000"+ - "\uFCB5\u0000\uFCC3\u93B2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DA5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93A1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8AC6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A5B\u0000\u0000"+ - "\u0000\u894D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED4"+ - "\u0000\u0000\u0000\u0000\u8A78\u0000\u93AB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F45\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A56\u0000\u0000"+ - "\u0000\uFCBF\u0000\u0000\u0000\uFCC0\u0000\u8EE6"+ - "\u0000\u0000\u8AA4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8943\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93F3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB\u9EA2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9DC7\u0000\u0000\u0000\uC6D2\u8BCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCC5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93B3\u0000\uFCCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCC9\u8DAC\u0000"+ - "\uFBC6\u8967\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCCD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF3\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFCD0\u0000\u0000\u95BB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD3\u0000\u0000\uFCD4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAE"; - - private final static String innerIndex4= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD7\u0000\u0000\u0000\u0000\u0000\u93DB\u0000"+ - "\u0000\u0000\u0000\uFE63\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93D5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCDA\u0000\u0000\u0000"+ - "\u9B71\u0000\u0000\uFCDD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DAF\u0000\u0000\u0000\uFAF2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93D8\u0000\u0000\u0000\uFCDF"+ - "\u0000\u0000\u0000\u93D3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCE1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E76\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFC62\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93D1\u0000"+ - "\u0000\u0000\u8DB1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9859\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB52\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB53\u0000\u0000"+ - "\u0000\u0000\u0000\uFB4D\u0000\u0000\u9CBF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B72"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB50\u93BE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9DF1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCEB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA0BB\u0000\u9B7E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DB3\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9AE8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EDC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFA50\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E7\uFCF3\u0000\u0000\u0000\u0000\uFCF2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93E5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9A59\u0000\u0000\u0000\u8DB5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFD4D\u0000\u0000\u0000"+ - "\u0000\uFD5E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9547\uFCF6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9250\u0000\u0000\u0000\u0000\u8968\u0000"+ - "\u8DB6\uFCFB\uA07D\u98FC\u8969\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE4F\u0000\u0000"+ - "\u9256\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAC9\u0000\u0000\u93E8\u0000"+ - "\u0000\u0000\uFCF8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CE3\uFDA9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC44\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9640"+ - "\u0000\u0000\u8DB8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9B4A\u8FB9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCFE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u896A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DB9\u0000\u0000\u0000"+ - "\u917E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB7C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93E7\u0000"+ - "\u0000\u97EF\u0000\u0000\u0000\uFE4A\u0000\u0000"+ - "\u0000\u0000\u0000\uFD45\u0000\u96A5\u0000\u0000"+ - "\u0000\u0000\uFEE0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD48\uFD47\uFEF2\uFE6A\u0000\u0000\u0000\u0000"+ - "\u0000\u8DBD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BA1\u0000\u9AB7\u8EFC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FA1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAAD\u0000"+ - "\u0000\u0000\u0000\u8DBE\u0000\u0000\u89A4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AD9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD4E\u0000\u0000\u8DC0\u0000\u0000\u97F0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u93B4\uFD44\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FA7\u0000\u0000\u0000\u0000\u8DC2\u0000\u0000"+ - "\u0000\u0000\u99B6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD52\u0000\u0000\u0000\u0000\u0000\u0000\u8DC1"+ - "\u0000\u0000\u8E46\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0D1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92CF\u0000\u0000\u0000\u9CF4\u8DC4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD41\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9B4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD57\uFCEF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CDE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFD42\u986C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97F9\u0000\u9558\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u985E\uFE7B\u94CD\u0000\u0000"+ - "\u0000\u0000\u0000\u93EE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD5A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93F5\u0000\u0000\u0000"+ - "\u0000\u0000\u93EF\u8EEA\u0000\u0000\u0000\u8F5B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DC6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DC8\u0000\u0000\u8DC7\u0000\u0000\u0000"+ - "\u0000\u0000\u93F7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DC9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBF2\u0000\u0000\u0000\u0000\u9670"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DCB\u0000\u0000\u0000\uFD5C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F65"+ - "\u0000\u0000\u0000\u8DCD\u0000\u0000\u0000\u0000"+ - "\u0000\u9DA8\u94F9\u0000\u0000\u8DCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93EA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD5F\u93F0\u9FB6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DCF\u0000\u0000\u0000"+ - "\u9763\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DD0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u93F1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD62\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD65\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FDB\u0000\u0000\u0000\u0000\u93F8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF7"+ - "\u0000\u0000\u0000\u0000\uFD66\u0000\u0000\u0000"+ - "\u0000\u0000\u8BCF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DD1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DD2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFD71\u0000\u0000\u0000"+ - "\u0000\uFD6F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DD3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FE7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FD0\u0000\u0000\u0000\u8BD0\u0000\uFD72"+ - "\u0000\u9CAE\u8BD1\u0000\u0000\u8ADB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u95CE\u0000\uFD76\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB62\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DD4\u0000\u0000"+ - "\u0000\uFD78\u0000\u0000\u0000\u0000\u0000\u8EE3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9076"+ - "\u0000\u0000\u98C6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DD5\u0000\u0000\u0000\u0000\u97D1"+ - "\u0000\u0000\u9EB6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAC7\u0000\u0000\uA042\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9873"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FFC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DD7\u0000\u0000\u92FB\u8DD8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u944F\u0000\u8DD9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u896B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97CE"+ - "\u0000\u0000\u0000\uFAF3\uFDAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBAF\u92B7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DDA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFDAD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DDC\u9444\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DDD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97D5\u0000\u944A\u0000\u0000\u0000"+ - "\u0000\u0000\u944D\u0000\u0000\u0000\u0000\u97CB"+ - "\u0000\u0000\u0000\u0000\u0000\u8DDE\u0000\u0000"+ - "\u8DDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DE0\uFEF9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC0"+ - "\uFCF9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92B3\u0000"+ - "\u0000\u0000\u0000\u0000\uFDAF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DE1\u0000"+ - "\u0000\u0000\u0000\u95D3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u89C1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD68\u0000\u0000"+ - "\u9CB7\u0000\u0000\u8DE3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAC0\u8DE5\uFA64\u0000\u8947\u0000\u0000"+ - "\u0000\u0000\u8DE4\u0000\u0000\u0000\u0000\u0000"+ - "\u8DE7\u8DE8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFDC7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDB0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9445\u97D6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC6\u9844"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DE9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DEA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE50\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DA7\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCF\u0000\u0000\u0000"+ - "\u0000\u95D2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DED\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCBA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFDC5\u0000\uFDD2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CDC\u0000\u0000"+ - "\u0000\u0000\u0000\u95CF\u0000\u0000\u8DEE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDD4\u0000\u0000\u0000\u0000"+ - "\u0000\u96EC\u96EB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90B6\u0000"+ - "\uFDC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98AB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96EE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDE0\u0000\u0000\u0000\u0000"+ - "\u8DF6\u0000\u0000\u0000\u8DF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FFA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97D0"+ - "\u0000\u0000\u0000\u0000\u8BD2\u0000\u0000\u8DF8"+ - "\u0000\u0000\u0000\u0000\u0000\u90D9\u0000\u0000"+ - "\u0000\uFAF0\u0000\u0000\u0000\u0000\uFDE1\u8DF9"+ - "\u0000\uFDE3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFA\u0000\uFB63\u0000\u0000\u0000\u90A6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9970\u0000\u0000\u91EB\u0000\u9770\u986F\uFDE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98F2\u0000\u9AFC\u896C\uFDFD\u0000\u0000"+ - "\u995E\u0000\u0000\u0000\u95BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDE4\u0000\u0000\u0000"+ - "\u91E6\u0000\u0000\u0000\u0000\uFDE5\uFDE6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDE7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9454\u0000\u0000\u0000\u99B8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9346\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9863\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95BC\u0000\uFDED\uFDF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9870\u96F6\u8EA9\u0000\u0000"+ - "\u0000\u0000\u0000\u9451\u0000\u0000\u8E43\u0000"+ - "\u8B5A\u0000\u0000\u0000\u0000\uFDEE\u0000\u0000"+ - "\u0000\u0000\uFDF0\u0000\u0000\u0000\u0000\uFDF4"+ - "\u0000\u9BF5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u977E\u0000\u0000\u0000\u0000"+ - "\u0000\u9BD5\u0000\u9AC3\u0000\u97C8\uA0DB\u91D0"+ - "\u0000\u0000\u9FE4\u0000\u8FDD\u0000\u91E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98E0\u0000\u0000\u0000\u92CA\u0000\u9857\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFDEB\u0000"+ - "\u9B49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D76\u9EAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CCC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDEA\u0000\u0000\u8DF1"+ - "\u0000\u0000\uFDFB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8E53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFACF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96F9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98BF\u9E49\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9BCA\u0000\u0000\u0000\u0000\uFDFE\u92DC"+ - "\u0000\u0000\u0000\u0000\u0000\uFE41\u91CC\u91E2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFE44\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8BD3\u0000\u0000\uFE47\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFE48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9455\u0000\u0000\u0000\u0000\uFE4B\u0000\uFE4C"+ - "\u0000\u0000\u0000\u0000\u8DBF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E78\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE51\u0000\u0000\u0000\u0000\u9456"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D61"+ - "\u0000\u0000\u0000\u0000\u9457\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9966"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BD5\u0000\u0000"+ - "\u0000\u0000\uA069\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA049\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA04C\u0000\u9E65\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFE58\u0000\u9975\uFE53\uA065\u0000\uFE59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B7\u98B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98BA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98BB\u0000\u0000\u0000\u0000\u0000\u0000\u9FBC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA04A\u0000\u0000\u9EC7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98AE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u92D6\u0000\u0000\u0000\uFAE1\u0000\u91D4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADE"+ - "\u0000\u0000\uFE5B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE5E\u0000\u0000\u0000\u0000\uFBD7\uFE5A"+ - "\u94C5\u0000\u0000\u0000\u0000\uFACA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98C1\u975C\u0000\uFE74\u0000\u9773\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA46"+ - "\u0000\u0000\u0000\u9764\u0000\u0000\u0000\uFE68"+ - "\u0000\u964E\u0000\u9765\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89A1\u95FA\u0000\u92D4\uFE69\u0000\uFB45"+ - "\u0000\u98C8\u0000\u0000\u90EF\u0000\u98C9\u98CA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946D"+ - "\u94B7\uFE6C\u0000\u0000\u946B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92FC\u0000\u95EB\u0000\uFE73"+ - "\u976E\uFE5F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDBD\u0000\u0000\u92D5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFEB9\u0000\u0000"+ - "\uFE71\u0000\u0000\u0000\u0000\uFBBB\u0000\u0000"+ - "\u947A\u0000\u0000\u95FB\uFE77\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFE79\u0000\uFE75\u0000"+ - "\u0000\u0000\u945D\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE7C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9344\u8EA6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92D3\u0000\u94B8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFC71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u975E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEA7\u0000\u0000\u0000\u946A\u0000\u0000\u0000"+ - "\u93E3\u0000\u0000\u98CF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0D9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0BF\uA04D\uA0B8\u0000\u0000\u0000\u0000\u0000"+ - "\uA0CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEA9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C3\u0000\u0000\u0000\u0000\uFEAB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9DF4\u896D\u0000\u0000"+ - "\u0000\u0000\u0000\u9C7B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u98D2\u0000\u0000\u0000\u9FA9\u0000"+ - "\u0000\u0000\uFEB2\u0000\u0000\uFEB1\u0000\u0000"+ - "\u0000\u97D9\u0000\uA0C4\u0000\u9476\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9978\u0000\u0000\u0000\u0000\u0000\u0000\uFEB3"+ - "\u0000\u0000\u0000\u0000\u0000\u98D3\uFEB4\u0000"+ - "\u0000\u0000\u98D4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9471\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98D5\uFEB8\u0000"+ - "\u0000\u0000\uC6D4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEBA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E5C\u0000\u0000\uFEBB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA044\u0000\u0000\u0000\u0000"+ - "\u98D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98D8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static String innerIndex5= - "\u0000\u0000\uFEBC\u0000\u0000\u0000\u0000\u9FFE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEBD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9DDD\u0000\u0000\u0000\u0000"+ - "\u9EE1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98DA\u9DDF\uFEBF"+ - "\u0000\uFEBE\u0000\u0000\u9EEB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E59\uA05C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC0"+ - "\u0000\u0000\u0000\u9477\u98DC\u0000\uFEC1\u0000"+ - "\u0000\u0000\u98DE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFEC8\u0000\u0000\u0000\uFEC9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFECA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFECB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FC2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98C4\u0000\u94B0\u94B1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFED1\u0000"+ - "\u0000\u0000\u0000\u0000\uA0C1\u0000\uFED2\u0000"+ - "\u0000\u0000\u0000\uA0CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFED3\u0000\u0000\u98E5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFED6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91E4\u0000\u0000\u0000\u0000\u8FC7"+ - "\u94AE\u0000\u8A4F\u94B2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FD4\u0000\u0000\u0000\u0000"+ - "\u98EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9DE0\u0000\u0000\u0000\u0000\u98EE\u0000"+ - "\u0000\u0000\u0000\u95C4\u0000\uFCE8\u0000\u0000"+ - "\u0000\u0000\u0000\u98EF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAD8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEDC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0AE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9D4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F1\u0000\u0000\u0000\u98F3\u0000\u94C1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98F5\u0000\u0000\uFA4F\u96E2\u0000\u0000"+ - "\u0000\u0000\u9450\u0000\u96A2\u0000\u0000\u98F6"+ - "\u0000\u0000\u0000\u96E5\u0000\u0000\u0000\u0000"+ - "\u0000\u98F7\u0000\uA046\u96E3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EE4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF9D6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u94C3\u0000\u0000\u0000\u0000\u94C2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE1"+ - "\u0000\uFEE9\u0000\u0000\u0000\u0000\u96E4\u0000"+ - "\u89AC\u96DB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94C4\uFEE3\u0000\u0000\u0000\uFEE7"+ - "\u9FFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93C9\u0000"+ - "\u94E8\uFB56\u0000\u0000\u0000\u90C5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0A8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEE5\u0000"+ - "\u0000\u0000\u98FD\u98FB\uFEE8\u0000\u8EBF\u0000"+ - "\u0000\u0000\u0000\u8BD8\uFEF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F68\u94C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DEA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC69\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CDA\u0000"+ - "\uFEF3\u0000\u0000\u9C72\u0000\u0000\uFEF0\u89C9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9941\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9942\u0000\u0000\u0000\uFEF5\u0000\u91D7"+ - "\u0000\u0000\u0000\u0000\u0000\u94CC\u0000\u0000"+ - "\u0000\uFEF8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97A8\u0000\uFEFC\u0000"+ - "\u0000\u0000\u0000\u0000\uFDBF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEFE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96D1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94D5\u0000\u0000\u94D0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9944\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0B3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94CF\u0000\u0000\u0000\u9FFA\u0000"+ - "\u0000\u0000\u0000\u91E5\u0000\u9C6A\u0000\u0000"+ - "\u0000\u8E49\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E4C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E4D\u0000\u0000"+ - "\u0000\u0000\u0000\u9A73\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9947\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8E50\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8E4F\u9949\u0000\u0000\u0000"+ - "\u0000\u0000\u8E51\u8E52\u0000\u0000\u0000\u0000"+ - "\u9AB2\u89A5\u0000\u0000\u0000\u0000\u0000\u994C"+ - "\u0000\u0000\u0000\u9FF8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E56\u994D\u91CA\u8E57\u0000\u0000"+ - "\u0000\u0000\u94E1\u0000\u0000\u0000\u0000\u9047"+ - "\u0000\u8FD8\u8E58\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u94EB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8E5C\u9553\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FE5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F56"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954F"+ - "\u0000\u8E5E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u996A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C64\u9CD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E5D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9950\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9951\u0000\u0000\u8E62"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9952\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E68\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E61\u9F59\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BB3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5D"+ - "\u8E66\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E6E\u0000\u9F64\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9953\u0000\u0000\uFAB8\u0000\u0000"+ - "\u0000\u0000\u0000\u9954\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F61\u0000\u8E72\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA06B\u0000\u0000\u0000\u0000\u9F40\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94ED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94EE\u0000\u0000"+ - "\u9FBD\u0000\u0000\u0000\u8E7B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9957\u94F7\u0000\u9F5F\u0000"+ - "\u0000\u0000\u0000\u8E73\u0000\u0000\u9F62\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u94F6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9958\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8E75\uF9DB"+ - "\u0000\u0000\u0000\u0000\u9072\u0000\u94F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u995A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0B0\u0000\u0000\u0000\u0000\u8E79"+ - "\u0000\u8E78\u0000\u0000\u0000\u94F3\u0000\u0000"+ - "\u0000\u0000\u0000\u98AF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0B2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8E7A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u995C\u0000\u0000"+ - "\u0000\u0000\u0000\u8E7C\u0000\u8E7D\u0000\u0000"+ - "\u0000\u8BD9\u0000\u0000\u89A2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9ED7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0B6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E42\u0000\u0000\u8EA4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EA7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9542"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u987D\u0000\u0000\u0000"+ - "\u9755\u0000\u0000\u8EA8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89A3\u0000\u9960"+ - "\u9962\u0000\u0000\u94FC\u9961\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u94FA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8EAE\u8EB2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9963\u97AA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94FB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EBB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9876\u0000\u8EA1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8EB7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DA6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9EB0\u0000"+ - "\u0000\u0000\u8EB8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D70"+ - "\u0000\u0000\u0000\u0000\u896E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u896F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8970\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8971"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8972"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8973"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8974\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8975"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8EBC\u8EBD\u0000\u0000\u0000\u0000\u0000\u8EBE"+ - "\u0000\u9DD1\u0000\u0000\u0000\u0000\u94FD\u0000"+ - "\u0000\u0000\u8BD7\u8BDA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FE9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDA8"+ - "\u0000\u0000\u0000\u8AE7\u0000\u0000\u0000\u8EC2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EC4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9964\u0000"+ - "\u0000\u0000\u0000\u0000\u9965\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u954E\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98B3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8ECB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BDF\u0000\u0000\u0000\u0000\u0000"+ - "\u8ECE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8ECF\u0000\u0000"+ - "\u9968\u0000\u0000\u0000\u0000\u9969\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u996B\u8ED1"+ - "\u0000\u996C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8ED4\u8ED5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u996D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0BE\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED6\uA0BC\uA0B5\u0000\u0000\uA0B4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89B5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EDD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5D\u9971"+ - "\u0000\u0000\u0000\u0000\u89AE\u9DE8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9565\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9972\u0000\u0000\u8B5C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u89B1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0C0\u0000\u0000\u0000\u8EDF"+ - "\u0000\u9566\u0000\u0000\u9974\u0000\u9976\u0000"+ - "\u0000\u0000\u9977\u0000\u9979\u0000\u0000\u9DDA"+ - "\u0000\u0000\u8EE0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u935C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DE6\u0000\u8B5F\u0000\u0000\u9563"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9567\u0000\u0000\u0000\u0000\u0000"+ - "\u9DE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u997C\u0000"+ - "\u0000\u997D\u997E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8B5B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99A3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99A4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99A6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A8\u0000\u0000"+ - "\u0000\u0000\u8ABE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E61\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8EE8\u0000\uA0BA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD77\u0000"+ - "\u0000\u8EEE\u0000\u0000\u0000\u9EBF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u89C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99AC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u956B\u0000\u0000\u956C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99AF\u0000"+ - "\u0000\u994A\u8976\u8F48\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99AE\u0000"+ - "\u0000\u0000\u8EFB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B52\u0000\u0000\u0000"+ - "\u0000\u0000\u99B0\u0000\u0000\u0000\u0000\u8977"+ - "\u8F41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8F49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFA4D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DE4"+ - "\u0000\u0000\u0000\u0000\uFBE9\u9B54\u0000\u99B2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9E68\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F4A\u0000\u8F42\u0000\u0000\u8F51\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9846\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99B4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8EF5\uFD55\u0000\u0000\u9CCD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8978"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8F53\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8F6F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8E63\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8F56\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE76\u0000\u0000\u0000\u0000\u9FC6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAAC\u0000\u0000"+ - "\u0000\u0000\u0000\u8F58\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9848\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9665\u0000\uFA6C\u0000"+ - "\u9DE7\u0000\u0000\u0000\u9E62\u0000\u0000\u0000"+ - "\u96CC\u8E67\u0000\u0000\uFC75\u0000\u987E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFDB9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97FC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F9\u0000\u8F66\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u956E\u0000\u9245\u0000\u0000"+ - "\u8F60\u0000\u0000\u0000\u9ED1\u0000\u0000\u0000"+ - "\u0000\u0000\uFECD\u0000\u99B9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8F62\u974C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91C7"+ - "\u955F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E6D\u8F71\u0000\u0000\u94CB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95B1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AF2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96C3\u99BD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0CF\u0000\u0000\u0000\u8F6D\u0000"+ - "\u0000\u99BE\u8EF4\u0000\u8F72\u95E4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99BF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9242\u0000\uFBA5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDB4\u8F77\u0000\u0000\u0000"+ - "\u99C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFAB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8F40\uFA44\u0000\u0000\u0000"+ - "\u0000\u0000\u99C2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8F5C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C4"+ - "\u99C5\u0000\u0000\u8F7B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FA3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96CD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96C7\u0000\u0000\u0000"; + protected CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) { + int mark = src.position(); + try { + while (src.hasRemaining()) { + int inSize = 1; + char c = src.get(); + int bb = encodeChar(c); + if (bb == UNMAPPABLE_ENCODING) { + if (Character.isSurrogate(c)) { + int cp; + if ((cp = sgp().parse(c, src)) < 0) + return sgp.error(); + bb = encodeSupp(cp); + if (bb == UNMAPPABLE_ENCODING) + return CoderResult.unmappableForLength(2); + inSize = 2; + } else { + return CoderResult.unmappableForLength(1); + } + } + if (bb > MAX_SINGLEBYTE) { // DoubleByte + if (dst.remaining() < 2) + return CoderResult.OVERFLOW; + dst.put((byte)(bb >> 8)); + dst.put((byte)(bb)); + } else { + if (dst.remaining() < 1) + return CoderResult.OVERFLOW; + dst.put((byte)bb); + } + mark += inSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } - private final static String innerIndex6= - "\u0000\u0000\u8FA5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFABB\u0000\u0000"+ - "\u9570\u0000\u0000\u0000\u9368\u0000\u8F7E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FAA\u0000\u0000\u0000\u0000\u0000\u0000\uA050"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90D3\u0000\u0000\u9556\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FB8\u0000\u0000\u0000"+ - "\u0000\u0000\u99C8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FAF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99C9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9579\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9F49\u0000\u0000"+ - "\u0000\u0000\u99CA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99CB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9DD5\u8FB0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFA7A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5F\u0000"+ - "\u0000\u0000\u0000\u99CD\uA0C9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9ADB\u0000\u0000"+ - "\u0000\uA0C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FB4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0C7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA043\u0000"+ - "\u0000\u0000\u8FB5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FB2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA061\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E5E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FB6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FE8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CB2"+ - "\u0000\u0000\u0000\u0000\u0000\u957C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FC7\u0000\u0000\u8FBB\u8FBC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FEC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FC0\u0000"+ - "\u936A\u0000\u0000\u0000\u8BE4\u9C7C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95A1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEEC\u0000\u0000\u95A3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC1\u0000\u0000\u0000"+ - "\uA052\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99D0\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC3\u8FC4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95A4"+ - "\u0000\u0000\u0000\u0000\u0000\u8FC6\u0000\u9E60"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9D8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95A5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CB3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99D1"+ - "\uFEF1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99D2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CC2\u0000\u0000\u0000\u99D3"+ - "\u0000\u0000\u0000\u0000\u0000\u95A7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95A9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95A6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98E2\u0000\u0000\u0000\u0000\u0000\u0000\u8FC9"+ - "\u0000\uA0C2\u8FCA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99D4\u0000\u0000\uA0B9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9B58\u0000\u8FCD"+ - "\u0000\uA0D4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FCE\u0000\u0000\u0000"+ - "\u0000\u8BE5\u0000\u0000\u0000\u0000\u8979\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FD0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95B6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99D6\u0000\u95E5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99D7\u0000\u0000\u0000\u0000\u95B5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0CA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FFD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA058\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FD6\u0000\u0000\u0000\u99D8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FD3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FE5\u0000\u0000\u0000\u0000\u0000\u8FE9"+ - "\u0000\u0000\u0000\u0000\u99D9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u927C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C45\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FDE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FDF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA04B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FE2"+ - "\u0000\u0000\u0000\uA0CC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FE3\u8FE4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BC4\u0000"+ - "\u0000\u0000\u9BFC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u964C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9AF6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FE8\u0000\u0000\u0000\u0000"+ - "\u8BE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u897B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99DA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FED\u0000\u0000\u0000\u95C0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0CB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E48\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99DB\u0000\u8FF3\u0000"+ - "\u0000\u0000\u0000\u8FF9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95C1\u0000\uA04E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99DC\u0000\u0000\u0000\u0000\uA064"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FF7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89B0\uA048\u0000\u0000\u0000"+ - "\u0000\u8FFB\u8FF6\u0000\u0000\u0000\u0000\u0000"+ - "\u9DDC\u0000\u0000\u0000\u99DD\u8BE8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92C1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0D2\u0000"+ - "\u0000\u9040\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8AC4\u0000\u0000\u99E0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FF0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FF3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DBF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FF6\u0000\u95C8\u0000\u0000\u9E5A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99E3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FF1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8AA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99E6\u0000\u0000\u0000\u9FF7\u0000\u9FED"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A5C\u0000"+ - "\u9DAE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95C9"+ - "\u0000\u0000\u0000\u0000\u0000\u9048\u0000\u0000"+ - "\u99E8\u0000\u0000\u0000\u0000\u0000\u9049\u0000"+ - "\u0000\u0000\u0000\u0000\u90B1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u904A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99EA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9BD1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99EB\u0000\u99EC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99ED\u0000\u0000"+ - "\u0000\u0000\u99EE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u904C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u904D\u0000\u0000"+ - "\u95CB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95CC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9F78\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897C\u897D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u995D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9B5A\u0000\u0000\u0000\u0000\u9050\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9054\u0000\uC6D6\u9AA8\u99EF"+ - "\uFEEB\u9DA3\u9DA1\u9943\u9945\u0000\u9D7D\u0000"+ - "\u0000\u99F0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99F1\u0000\u99F2\u0000\u0000\u0000"+ - "\u9D60\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0A3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u905B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9EDB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D79\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99F3\u0000\u0000\u0000\u9062"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9F55\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BF9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9065\u0000\u0000\u96E0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98BE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9068\u0000\u0000\u0000\u0000\u0000\u906C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95D8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u906A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FB2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FAE\u0000\u0000\u9FB0\u0000\u89AD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u906E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E71\u0000\u0000\u0000\u0000\u0000\u9E4A\u0000"+ - "\u0000\u0000\u0000\u0000\u9FDC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89AB\u0000\u9FB8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9070\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8B63\u0000"+ - "\u0000\u0000\u0000\u95DC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9071\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC5E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8949"+ - "\u0000\u0000\u0000\u0000\u0000\u965B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94A6\u0000\u0000\u0000\u8FD5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E73\u0000\u0000\u0000\u0000\u0000\u9075\u0000"+ - "\u0000\u0000\u0000\u99F7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99F9\u0000\u9663\u95B9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94D4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCFA\u0000\u0000\u0000"+ - "\u0000\u9077\u0000\u0000\u90AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9D4D\u0000\u0000"+ - "\u99FA\u0000\u0000\u0000\u0000\u92E3\u0000\u97BB"+ - "\u0000\u0000\u9078\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99FB\u0000\u0000\u97E0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96DC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9CA8\u0000\u0000\u9772\u0000\u0000\u0000"+ - "\u0000\u9440\u0000\u0000\u0000\u0000\u0000\u92F2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99FD\u0000"+ - "\u0000\u99FC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF9D7\u964A\u0000\u0000\u0000\u96D8\u99FE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u904B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFA41\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A40\u0000\u975B\u0000\u0000"+ - "\u0000\u0000\u0000\u9A41\u91DD\u0000\u0000\u0000"+ - "\u0000\u0000\u93FC\u9A42\u9A43\u0000\u9659\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A44\u0000\u0000"+ - "\u0000\u0000\u0000\u9051\u0000\u0000\u0000\u94BF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90A2\u0000\u0000\u0000"+ - "\u9CAB\u9776\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC55\uFE45\u94A8\u9A45\uFA4B\u9DE1\u0000\u0000"+ - "\u96D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9774"+ - "\u0000\u0000\uFDF5\u0000\u0000\u0000\u92E5\u0000"+ - "\u9645\u91DA\u0000\u90A3\u0000\u0000\uA05F\u0000"+ - "\u0000\u0000\u0000\u90AF\u97BF\u0000\u0000\u0000"+ - "\u914C\u0000\u0000\u0000\u0000\u967A\u0000\u0000"+ - "\u0000\u91DE\u0000\u0000\u9A46\uFEB0\u9779\u946C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9858\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9266\u0000\u0000\u0000"+ - "\u93FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A47\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9749\u0000\u0000\u9748\u0000\u934A\u0000\u9CE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9264\u0000"+ - "\u0000\u0000\u0000\u91DF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB79\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96D7\u0000\u0000\u0000\u0000"+ - "\u9343\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFDCB\uFE7A\u0000\u91DB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97AF\u0000\u0000\u95DD\u0000\u0000\u0000"+ - "\u9348\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A4B"+ - "\u0000\u0000\u0000\uFC45\u0000\u9A4D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u91BC\u90E2\u90B4\u95E1"+ - "\u0000\u0000\u0000\u0000\u0000\u9A4E\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A4F\u0000"+ - "\u0000\u0000\uFE40\uFE43\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96DD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A51\u0000\u0000\u0000"+ - "\u96A7\u0000\u0000\u90B0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9C4E\u0000\u9443"+ - "\u0000\u0000\u0000\u0000\u8EBA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A52\u0000\uFCC1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BE9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CAF"+ - "\u0000\u0000\u8BFD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9ABC\u0000\u9AB8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9AA7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A53\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D74"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BEA\u0000\u0000\u0000\u0000\u0000\u0000\u8BEB"+ - "\u0000\u0000\u0000\u0000\u0000\u90B2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95E9\u95E8"+ - "\u0000\u95E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90B5\u0000\u9A54\u0000\u0000\u0000\u90B3\u95E7"+ - "\u0000\u0000\u8B50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A56\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) { + if (src.hasArray() && dst.hasArray()) + return encodeArrayLoop(src, dst); + else + return encodeBufferLoop(src, dst); + } + + static char[] C2B_UNMAPPABLE = new char[0x100]; + static { + Arrays.fill(C2B_UNMAPPABLE, (char)UNMAPPABLE_ENCODING); + } - private final static String innerIndex7= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+ - "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+ - "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+ - "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BC4\u0000\u0000\u0000\u0000\u0000\u90DE"+ - "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+ - "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+ - "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+ - "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+ - "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+ - "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+ - "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+ - "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+ - "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+ - "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+ - "\u0000\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+ - "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+ - "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+ - "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+ - "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+ - "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+ - "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+ - "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+ - "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+ - "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+ - "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+ - "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+ - "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+ - "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+ - "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+ - "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+ - "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+ - "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+ - "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+ - "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+ - "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+ - "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+ - "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+ - "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+ - "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+ - "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+ - "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+ - "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+ - "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+ - "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+ - "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+ - "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+ - "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+ - "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+ - "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+ - "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+ - "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+ - "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+ - "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+ - "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+ - "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C8\u0000\u0000\u8BF8\u0000\u0000\u8DAA"+ - "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFA40\u0000\uFA42\uFA43\u0000\uFA45\u0000\u0000"+ - "\uFA48\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+ - "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+ - "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+ - "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+ - "\uFA68\u0000\u0000\uFA6B\u0000\uFA6D\uFA6E\u0000"+ - "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+ - "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAA5\u0000\uFAA7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+ - "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+ - "\u0000\u0000\uFACC\uFACD\uFACE\u0000\uFAD0\u0000"+ - "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+ - "\uFADA\u0000\u0000\u0000\u0000\uFADF\uFAE0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE8\uFAE9"+ - "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+ - "\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFB40\uFB41\u0000"+ - "\uFB43\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+ - "\uFB4B\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFB5D\uFB5E\uFB5F\u0000\uFB61\u0000"+ - "\u0000\u0000\uFB65\uFB66\u0000\uFB68\u0000\uFB6A"+ - "\uFB6B\u0000\uFB6D\u0000\u0000\uFB70\u0000\u0000"+ - "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\uFB7A"+ - "\u0000\u0000\uFB7D\u0000\uFBA1\u0000\u0000\uFBA4"+ - "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+ - "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+ - "\u0000\uFBB6\uFBB7\u0000\uFBB9\u0000\u0000\u0000"+ - "\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\u0000\u0000"+ - "\u0000\u0000\u0000\uFBC8\uFBC9\uFBCA\uFBCB\u0000"+ - "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\uFBD3\u0000"+ - "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\uFBDC"+ - "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+ - "\u0000\uFBE6\u0000\u0000\u0000\uFBEA\uFBEB\uFBEC"+ - "\uFBED\u0000\uFBEF\uFBF0\u0000\u0000\u0000\u0000"+ - "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+ - "\u0000\uFBFE\u0000\u0000\uFC42\u0000\u0000\u0000"+ - "\u0000\uFC47\uFC48\uFC49\uFC4A\uFC4B\u0000\uFC4D"+ - "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+ - "\uFC56\u0000\u0000\uFC59\uFC5A\uFC5B\uFC5C\uFC5D"+ - "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\uFC64\uFC65"+ - "\uFC66\u0000\uFC68\u0000\uFC6A\u0000\u0000\u0000"+ - "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+ - "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\uFCA6\uFCA7"+ - "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+ - "\u0000\uFCB1\u0000\uFCB3\uFCB4\u0000\u0000\uFCB7"+ - "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+ - "\u0000\u0000\uFCC2\u0000\uFCC4\u0000\u0000\uFCC7"+ - "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\uFCCF"+ - "\u0000\uFCD1\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+ - "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+ - "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+ - "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\uFCEE\u0000"+ - "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\uFCF7"+ - "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+ - "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+ - "\uFD49\uFD4A\uFD4B\uFD4C\u0000\u0000\uFD4F\uFD50"+ - "\u0000\u0000\uFD53\uFD54\u0000\u0000\u0000\uFD58"+ - "\uFD59\u0000\uFD5B\u0000\uFD5D\u0000\u0000\uFD60"+ - "\uFD61\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+ - "\uFD69\uFD6A\uFD6B\uFD6C\u0000\uFD6E\u0000\uFD70"+ - "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+ - "\uFD79\uFD7A\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\uFDA2"+ - "\uFDA3\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+ - "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+ - "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+ - "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+ - "\u0000\uFDC4\u0000\uFDC6\u0000\uFDC8\uFDC9\uFDCA"+ - "\u0000\u0000\u0000\uFDCE\u0000\uFDD0\uFDD1\u0000"+ - "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+ - "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFDE8\uFDE9\u0000"+ - "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+ - "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+ - "\u0000\uFE4D\uFE4E\u0000\u0000\u0000\u0000\u0000"+ - "\uFE54\uFE55\uFE56\uFE57\u0000\u0000\u0000\u0000"+ - "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+ - "\uFE64\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+ - "\u0000\uFE6D\uFE6E\u0000\uFE70\u0000\uFE72\u0000"+ - "\u0000\u0000\u0000\u0000\uFE78\u0000\u0000\u0000"+ - "\u0000\uFE7D\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+ - "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+ - "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+ - "\uFEB6\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\uFEC5"+ - "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+ - "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+ - "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+ - "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+ - "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+ - "\uFEF6\u0000\u0000\u0000\uFEFA\uFEFB\u0000\uFEFD"+ - "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u8E45\u0000"+ - "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+ - "\u0000\u0000\u0000\u0000\u0000\u8E54\u8E55\u0000"+ - "\u0000\u0000\u8E59\u0000\u8E5B\u0000\u0000\u0000"+ - "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+ - "\u0000\u0000\u0000\u8E6A\u8E6B\u8E6C\u0000\u0000"+ - "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+ - "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EA2\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u8EAF\u0000"+ - "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+ - "\u8EB9\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+ - "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u8EC7\u8EC8"+ - "\u8EC9\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u8ED8"+ - "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+ - "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+ - "\u8EE9\u0000\u8EEB\u8EEC\u8EED\u0000\u8EEF\u8EF0"+ - "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+ - "\u8EF9\u8EFA\u0000\u0000\u8EFD\u8EFE\u0000\u0000"+ - "\u0000\u8F43\u8F44\u8F45\u8F46\u8F47\u0000\u0000"+ - "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u0000"+ - "\u0000\u0000\u8F54\u8F55\u0000\u0000\u0000\u8F59"+ - "\u8F5A\u0000\u0000\u8F5D\u8F5E\u8F5F\u0000\u8F61"+ - "\u0000\u8F63\u8F64\u0000\u0000\u8F67\u0000\u0000"+ - "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u8F70\u0000"+ - "\u0000\u8F73\u8F74\u8F75\u8F76\u0000\u0000\u8F79"+ - "\u8F7A\u0000\u8F7C\u0000\u0000\u8FA1\u8FA2\u0000"+ - "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u8FA9\u0000\u8FAB"+ - "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA\u0000"+ - "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u8FC2\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+ - "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u8FDB"+ - "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+ - "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u8FEB"+ - "\u0000\u0000\u8FEE\u8FEF\u8FF0\u8FF1\u8FF2\u0000"+ - "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+ - "\u8FFC\u8FFD\u0000\u0000\u9041\u9042\u9043\u9044"+ - "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+ - "\u9055\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+ - "\u905D\u905E\u905F\u9060\u9061\u0000\u9063\u9064"+ - "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+ - "\u0000\u0000\u906F\u0000\u0000\u0000\u9073\u9074"+ - "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+ - "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+ - "\u0000\u90A8\u90A9\u90AA\u0000\u90AC\u90AD\u90AE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90B7\u90B8\u90B9\u90BA\u90BB\u90BC\u0000\u0000"+ - "\u0000\u90C0\u0000\u90C2\u0000\u0000\u0000\u90C6"+ - "\u0000\u0000\u90C9\u90CA\u90CB\u90CC\u90CD\u90CE"+ - "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u90D5\u90D6"+ - "\u90D7\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+ - "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+ - "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u90F5\u0000"+ - "\u0000\u0000\u0000\u90FA\u90FB\u90FC\u90FD\u90FE"+ - "\u9140\u0000\u0000\u0000\u0000\u9145\u9146\u9147"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u914F"+ - "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+ - "\u9158\u9159\u915A\u0000\u0000\u915D\u0000\u915F"+ - "\u0000\u0000\u9162\u0000\u0000\u9165\u9166\u9167"+ - "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+ - "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+ - "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+ - "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+ - "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u91B1"+ - "\u0000\u91B3\u91B4\u91B5\u0000\u91B7\u91B8\u0000"+ - "\u0000\u91BB\u0000\u91BD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u91CD\u91CE\u91CF\u0000\u91D1"+ - "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+ - "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+ - "\u0000\u91E3\u0000\u0000\u0000\u91E7\u91E8\u0000"+ - "\u91EA\u0000\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1"+ - "\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7\u91F8\u91F9"+ - "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+ - "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+ - "\u924B\u924C\u924D\u924E\u924F\u0000\u9251\u9252"+ - "\u9253\u0000\u9255\u0000\u9257\u9258\u9259\u925A"+ - "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+ - "\u9263\u0000\u9265\u0000\u0000\u0000\u9269\u926A"+ - "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+ - "\u9273\u9274\u9275\u9276\u9277\u0000\u9279\u927A"+ - "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+ - "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+ - "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+ - "\u92BD\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+ - "\u0000\u92C6\u0000\u0000\u92C9\u0000\u92CB\u92CC"+ - "\u92CD\u92CE\u0000\u92D0\u0000\u92D2\u0000\u0000"+ - "\u0000\u0000\u92D7\u92D8\u92D9\u0000\u92DB\u0000"; - - private final static String innerIndex8= - "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92E9\u0000\u0000\u92EC"+ - "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92F6\u92F7\u92F8\u92F9\u92FA\u0000\u0000"+ - "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+ - "\u0000\u9347\u0000\u9349\u0000\u934B\u0000\u0000"+ - "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+ - "\u9356\u9357\u9358\u9359\u935A\u935B\u0000\u935D"+ - "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+ - "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+ - "\u0000\u936F\u9370\u9371\u9372\u9373\u0000\u9375"+ - "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+ - "\u937E\u0000\u93A2\u93A3\u93A4\u93A5\u93A6\u93A7"+ - "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+ - "\u0000\u93B1\u0000\u0000\u0000\u93B5\u93B6\u93B7"+ - "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+ - "\u93C0\u93C1\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7"+ - "\u93C8\u0000\u93CA\u93CB\u93CC\u93CD\u93CE\u93CF"+ - "\u93D0\u0000\u93D2\u0000\u93D4\u0000\u93D6\u93D7"+ - "\u0000\u93D9\u93DA\u0000\u93DC\u93DD\u93DE\u93DF"+ - "\u93E0\u93E1\u93E2\u0000\u93E4\u0000\u93E6\u0000"+ - "\u0000\u93E9\u0000\u93EB\u93EC\u93ED\u0000\u0000"+ - "\u0000\u0000\u93F2\u0000\u0000\u0000\u93F6\u0000"+ - "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+ - "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+ - "\u9449\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+ - "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+ - "\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u0000"+ - "\u9469\u0000\u0000\u0000\u0000\u946E\u946F\u9470"+ - "\u0000\u9472\u9473\u9474\u9475\u0000\u0000\u9478"+ - "\u9479\u0000\u947B\u947C\u947D\u947E\u94A1\u94A2"+ - "\u94A3\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+ - "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+ - "\u94B3\u94B4\u94B5\u94B6\u0000\u0000\u94B9\u94BA"+ - "\u94BB\u94BC\u94BD\u94BE\u0000\u94C0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u94C7\u94C8\u94C9\u0000"+ - "\u0000\u0000\u0000\u94CE\u0000\u0000\u94D1\u94D2"+ - "\u94D3\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+ - "\u94DB\u0000\u94DD\u94DE\u94DF\u94E0\u0000\u0000"+ - "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+ - "\u0000\u94EC\u0000\u0000\u94EF\u94F0\u94F1\u94F2"+ - "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+ - "\u9544\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+ - "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+ - "\u9554\u0000\u0000\u0000\u0000\u9559\u955A\u955B"+ - "\u955C\u0000\u955E\u0000\u9560\u9561\u9562\u0000"+ - "\u9564\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+ - "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u9573"+ - "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+ - "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+ - "\u95AE\u95AF\u95B0\u0000\u95B2\u95B3\u95B4\u0000"+ - "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+ - "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+ - "\u95C6\u95C7\u0000\u0000\u95CA\u0000\u0000\u95CD"+ - "\u0000\u0000\u95D0\u95D1\u0000\u0000\u95D4\u0000"+ - "\u95D6\u95D7\u0000\u0000\u0000\u95DB\u0000\u0000"+ - "\u95DE\u95DF\u95E0\u0000\u95E2\u95E3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95EA\u0000\u95EC\u95ED"+ - "\u95EE\u95EF\u95F0\u95F1\u0000\u95F3\u95F4\u95F5"+ - "\u95F6\u95F7\u95F8\u95F9\u0000\u0000\u95FC\u0000"+ - "\u95FE\u0000\u9641\u9642\u9643\u0000\u0000\u9646"+ - "\u9647\u9648\u9649\u0000\u0000\u0000\u964D\u0000"+ - "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+ - "\u0000\u9658\u0000\u965A\u0000\u965C\u965D\u965E"+ - "\u965F\u0000\u9661\u9662\u0000\u9664\u0000\u0000"+ - "\u0000\u9668\u9669\u0000\u966B\u0000\u0000\u966E"+ - "\u966F\u0000\u0000\u0000\u0000\u9674\u9675\u9676"+ - "\u0000\u9678\u9679\u0000\u0000\u967C\u0000\u967E"+ - "\u96A1\u0000\u96A3\u96A4\u0000\u96A6\u0000\u96A8"+ - "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+ - "\u96B9\u96BA\u0000\u96BC\u0000\u96BE\u96BF\u96C0"+ - "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u96C8"+ - "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+ - "\u0000\u96D2\u96D3\u96D4\u96D5\u96D6\u0000\u0000"+ - "\u0000\u96DA\u0000\u0000\u0000\u0000\u96DF\u0000"+ - "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+ - "\u96E9\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96F7\u96F8"+ - "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+ - "\u0000\u9743\u9744\u9745\u9746\u9747\u0000\u0000"+ - "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+ - "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+ - "\u975A\u0000\u0000\u975D\u0000\u975F\u9760\u9761"+ - "\u9762\u0000\u0000\u0000\u9766\u9767\u9768\u9769"+ - "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+ - "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+ - "\u977A\u977B\u977C\u977D\u0000\u97A1\u97A2\u0000"+ - "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+ - "\u97AC\u97AD\u97AE\u0000\u97B0\u97B1\u97B2\u0000"+ - "\u97B4\u97B5\u97B6\u0000\u97B8\u97B9\u97BA\u0000"+ - "\u0000\u97BD\u97BE\u0000\u97C0\u97C1\u97C2\u97C3"+ - "\u0000\u97C5\u97C6\u97C7\u0000\u97C9\u97CA\u0000"+ - "\u97CC\u97CD\u0000\u97CF\u0000\u0000\u97D2\u97D3"+ - "\u97D4\u0000\u0000\u97D7\u97D8\u0000\u97DA\u97DB"+ - "\u97DC\u97DD\u97DE\u0000\u0000\u97E1\u0000\u97E3"+ - "\u97E4\u0000\u0000\u97E7\u97E8\u0000\u97EA\u97EB"+ - "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+ - "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+ - "\u0000\u97FD\u97FE\u9840\u9841\u9842\u9843\u0000"+ - "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+ - "\u0000\u984E\u0000\u0000\u9851\u9852\u9853\u0000"+ - "\u9855\u9856\u0000\u0000\u0000\u985A\u0000\u0000"+ - "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+ - "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+ - "\u986D\u986E\u0000\u0000\u9871\u9872\u0000\u9874"+ - "\u9875\u0000\u0000\u0000\u9879\u0000\u987B\u987C"+ - "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+ - "\u98A7\u98A8\u98A9\u98AA\u0000\u98AC\u0000\u0000"+ - "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+ - "\u0000\u0000\u98B9\u0000\u0000\u98BC\u98BD\u0000"+ - "\u0000\u98C0\u0000\u0000\u98C3\u0000\u98C5\u0000"+ - "\u0000\u0000\u0000\u0000\u98CB\u98CC\u98CD\u98CE"+ - "\u0000\u98D0\u98D1\u0000\u0000\u0000\u0000\u98D6"+ - "\u0000\u0000\u98D9\u0000\u98DB\u0000\u98DD\u0000"+ - "\u98DF\u0000\u0000\u0000\u0000\u98E4\u0000\u98E6"+ - "\u0000\u98E8\u98E9\u0000\u98EB\u98EC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98F4\u0000\u0000"+ - "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u98FE"+ - "\u9940\u0000\u0000\u0000\u0000\u0000\u9946\u0000"+ - "\u9948\u0000\u0000\u994B\u0000\u0000\u994E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9955\u9956\u0000"+ - "\u0000\u9959\u0000\u995B\u0000\u0000\u0000\u995F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u996E\u0000"+ - "\u0000\u0000\u0000\u9973\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u997A\u997B\u0000\u0000\u0000\u99A1"+ - "\u0000\u0000\u0000\u99A5\u0000\u99A7\u0000\u0000"+ - "\u0000\u0000\u0000\u99AD\u0000\u0000\u0000\u0000"+ - "\u0000\u99B3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99BC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99C3\u0000\u0000\u0000\u99C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99CE\u99CF\u0000\u0000"+ - "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99DE\u0000\u0000\u99E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99F5\u0000\u0000\u99F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A48\u9A49\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A50\u0000\u0000"+ - "\u0000\u0000\u9A55\u0000\u0000\u9A58\u0000\u9A5A"+ - "\u0000\u9A5C\u0000\u0000\u0000\u9A60\u0000\u0000"+ - "\u9A63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A6E\u0000\u9A70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A79\u0000"+ - "\u9A7B\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+ - "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+ - "\u9ABD\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+ - "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+ - "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+ - "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+ - "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+ - "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u9AEC"+ - "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+ - "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+ - "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+ - "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u9B4D"+ - "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+ - "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+ - "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+ - "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+ - "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+ - "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+ - "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+ - "\u9BA8\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+ - "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+ - "\u9BB8\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u9BBE\u9BBF"+ - "\u9BC0\u9BC1\u9BC2\u9BC3\u0000\u9BC5\u0000\u9BC7"+ - "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+ - "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+ - "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u9BDF"+ - "\u9BE0\u9BE1\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7"+ - "\u9BE8\u0000\u9BEA\u9BEB\u0000\u9BED\u9BEE\u9BEF"+ - "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+ - "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+ - "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+ - "\u9C49\u9C4A\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+ - "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+ - "\u0000\u0000\u9C5B\u9C5C\u0000\u9C5E\u9C5F\u9C60"+ - "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+ - "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u9C6F\u9C70"+ - "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+ - "\u9C79\u9C7A\u0000\u0000\u9C7D\u0000\u9CA1\u9CA2"+ - "\u9CA3\u9CA4\u9CA5\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+ - "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+ - "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u9CBA"+ - "\u9CBB\u0000\u0000\u9CBE\u0000\u9CC0\u9CC1\u0000"+ - "\u9CC3\u9CC4\u0000\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA"+ - "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u9CD1\u9CD2"+ - "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+ - "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+ - "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+ - "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+ - "\u0000\u0000\u0000\u9CF6\u9CF7\u9CF8\u0000\u9CFA"+ - "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+ - "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u0000\u9D4B"+ - "\u0000\u0000\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+ - "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+ - "\u9D5C\u9D5D\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+ - "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+ - "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u9D73"+ - "\u0000\u9D75\u0000\u9D77\u9D78\u0000\u9D7A\u9D7B"+ - "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u9DA5"+ - "\u0000\u0000\u0000\u0000\u9DAA\u9DAB\u9DAC\u9DAD"+ - "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u9DB5"+ - "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+ - "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+ - "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u9DCC\u9DCD"+ - "\u9DCE\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+ - "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+ - "\u9DEE\u0000\u0000\u0000\u9DF2\u9DF3\u0000\u0000"+ - "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+ - "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E4F\u0000\u9E51\u0000\u9E53\u9E54\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E63\u9E64\u0000\u9E66"+ - "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+ - "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+ - "\u9E77\u0000\u9E79\u9E7A\u9E7B\u9E7C\u9E7D\u9E7E"+ - "\u0000\u0000\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+ - "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+ - "\u0000\u0000\u0000\u9EB4\u0000\u0000\u0000\u9EB8"+ - "\u9EB9\u0000\u9EBB\u9EBC\u0000\u9EBE\u0000\u0000"+ - "\u0000\u9EC2\u9EC3\u0000\u9EC5\u9EC6\u0000\u9EC8"+ - "\u9EC9\u0000\u9ECB\u9ECC\u9ECD\u9ECE\u9ECF\u9ED0"+ - "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+ - "\u9ED9\u9EDA\u0000\u0000\u9EDD\u9EDE\u9EDF\u9EE0"+ - "\u0000\u0000\u9EE3\u0000\u9EE5\u0000\u9EE7\u0000"+ - "\u0000\u0000\u0000\u9EEC\u0000\u9EEE\u0000\u9EF0"+ - "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+ - "\u9EF9\u0000\u9EFB\u9EFC\u0000\u0000\u0000\u0000"+ - "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+ - "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+ - "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FA5\u0000\u0000\u0000\u0000\u9FAA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+ - "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+ - "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+ - "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+ - "\u0000\u0000\u0000\u9FD7\u0000\u9FD9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+ - "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+ - "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA04F\u0000\u0000\u0000\uA053\u0000"+ - "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA068\u0000\uA06A\u0000\u0000"+ - "\uA06D\u0000\uA06F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA078\u0000\u0000\uA07B\u0000"+ - "\u0000\uA07E\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+ - "\uA0A7\u0000\u0000\u0000\uA0AB\uA0AC\u0000\u0000"+ - "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+ - "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D8\u0000\uA0DA\u0000\u0000\u0000\uA0DE"+ - "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\uA0E6"+ - "\u0000\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+ - "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+ - "\uA0F7\uA0F8\uA0F9\u0000\uA0FB\u0000\u0000\uA0FE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+ - "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+ - "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+ - "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+ - "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89B2\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+ - "\u89BA\u89BB\u89BC\u0000\u89BE\u89BF\u0000\u0000"+ - "\u0000\u0000\u0000\u89C5\u0000\u0000\u0000\u0000"+ - "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89D5\u0000\u89D7\u0000\u0000"+ - "\u89DA\u89DB\u89DC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89E6\u0000\u89E8\u0000"+ - "\u89EA\u0000\u0000\u89ED\u89EE\u89EF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F9"+ - "\u0000\u89FB\u89FC\u0000\u89FE\u8A40\u0000\u0000"+ - "\u8A43\u8A44\u8A45\u0000\u8A47\u8A48\u8A49\u0000"+ - "\u8A4B\u8A4C\u8A4D\u8A4E\u0000\u8A50\u8A51\u8A52"+ - "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+ - "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+ - "\u0000\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u0000"+ - "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+ - "\u0000\u0000\u0000\u8A76\u8A77\u0000\u0000\u8A7A"+ - "\u8A7B\u8A7C\u8A7D\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+ - "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u8AAC"+ - "\u8AAD\u8AAE\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+ - "\u8AB5\u8AB6\u0000\u8AB8\u8AB9\u0000\u8ABB\u8ABC"+ - "\u8ABD\u0000\u0000\u8AC0\u0000\u8AC2\u8AC3\u0000"+ - "\u0000\u0000\u8AC7\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+ - "\u0000\u8ACE\u8ACF\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4"+ - "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u8ADA\u0000\u8ADC"+ - "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+ - "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u8AEB\u8AEC"+ - "\u8AED\u8AEE\u8AEF\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4"+ - "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u8AFB\u8AFC"+ - "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+ - "\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+ - "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+ - "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+ - "\u8B5E\u0000\u8B60\u0000\u8B62\u0000\u8B64\u8B65"+ - "\u8B66\u8B67\u8B68\u8B69\u8B6A\u8B6B\u0000\u8B6D"+ - "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+ - "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+ - "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u8BA6\u8BA7"+ - "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+ - "\u0000\u8BB1\u8BB2\u0000\u0000\u8BB5\u8BB6\u0000"+ - "\u8BB8\u0000\u0000\u8BBB\u8BBC\u0000\u8BBE\u0000"+ - "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+ - "\u8BC8\u0000\u0000\u0000\u8BCC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+ - "\u0000\u0000\u0000\u8BDB\u8BDC\u0000\u8BDE\u0000"+ - "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+ - "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D63"+ - "\u8D64\u0000\u0000\u8D67\u8D68\u0000\u0000\u0000"+ - "\u0000\u8D6D\u8D6E\u8D6F\u8D70\u0000\u0000\u0000"+ - "\u8D74\u0000\u0000\u0000\u8D78\u0000\u0000\u0000"+ - "\u0000\u8D7D\u0000\u8DA1\u0000\u0000\u0000\u0000"+ - "\u8DA6\u0000\u0000\u0000\u0000\u8DAB\u0000\u8DAD"+ - "\u0000\u0000\u8DB0\u0000\u8DB2\u0000\u8DB4\u0000"+ - "\u0000\u8DB7\u0000\u0000\u8DBA\u8DBB\u8DBC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DC3\u0000\u8DC5"+ - "\u0000\u0000\u0000\u0000\u8DCA\u0000\u8DCC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DD6\u0000\u0000\u0000\u0000\u8DDB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DEB\u8DEC\u0000"+ - "\u0000\u8DEF\u8DF0\u0000\u0000\u8DF3\u0000\u8DF5"+ - "\u0000\u0000\u0000\u0000\u0000\u8DFB\u8DFC\u8DFD"+ - "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6CD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+ - "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8D6\uC8D7\uC8D8\uC8D9\uC8DA\uC8DB\uC8DC\uC8DD"+ - "\uC8DE\uC8DF\uC8E0\uC8E1\uC8E2\uC8E3\uC8E4\uC8E5"+ - "\uC8E6\uC8E7\uC8E8\uC8E9\uC8EA\uC8EB\uC8EC\uC8ED"+ - "\uC8EE\uC8EF\uC8F0\uC8F1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 1, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, - 0, 6, 0, 0, 7, 8, 0, 9, 0, 0, 0, 0, 0, 0, 10, 11, - 12, 0, 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 0, - 0, 0, 0, 137, 138, 139, 140, 141, 142, 0, 0, 0, 0, 0, 0, 143 - }; - - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2, - innerIndex3, - innerIndex4, - innerIndex5, - innerIndex6, - innerIndex7, - innerIndex8 - }; - - public Encoder(Charset cs) { - super(cs, - index1, - index2); + static void initc2b(char[][] c2b, String[] b2cStr, String pua) { + // init c2b/c2bSupp from b2cStr and supp + int b2Min = 0x40; + Arrays.fill(c2b, C2B_UNMAPPABLE); + for (int b1 = 0; b1 < 0x100; b1++) { + String s = b2cStr[b1]; + if (s == null) + continue; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + int hi = c >> 8; + if (c2b[hi] == C2B_UNMAPPABLE) { + c2b[hi] = new char[0x100]; + Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); + } + c2b[hi][c & 0xff] = (char)((b1 << 8) | (i + b2Min)); + } + } + if (pua != null) { // add the compatibility pua entries + char c = '\ue000'; //first pua character + for (int i = 0; i < pua.length(); i++) { + char bb = pua.charAt(i); + if (bb != UNMAPPABLE_DECODING) { + int hi = c >> 8; + if (c2b[hi] == C2B_UNMAPPABLE) { + c2b[hi] = new char[0x100]; + Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); + } + c2b[hi][c & 0xff] = (char)bb; + } + c++; + } + } } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/HKSCS_2001.java --- a/jdk/src/share/classes/sun/nio/cs/ext/HKSCS_2001.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7827 +0,0 @@ -/* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/* - */ - -package sun.nio.cs.ext; - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; - -public abstract class HKSCS_2001 extends Charset -{ - - public HKSCS_2001() { - super("HKSCS-2001", ExtendedCharsets.aliasesFor("HKSCS-2001")); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public static short[] getDecoderIndex1() { - return Decoder.index1; - } - - public static String[] getDecoderIndex2() { - return Decoder.index2; - - } - - public static short[] getEncoderIndex1() { - return Encoder.index1; - - } - public static String[] getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends DoubleByteDecoder { - - public Decoder(Charset cs) { - super(cs, index1, index2, 0x40, 0xFE); - } - - protected char decodeDouble(int c1, int c2) { - char result = super.decodeDouble(c1, c2); - int offset = (result - 0xD800); - - if (result >= '\uD800' && result <= '\uDFFF') { - highSurrogate = - SurrogateMappings.charAt(offset * 2); - lowSurrogate = - SurrogateMappings.charAt((offset *2) + 1); - return '\uD800'; - } else { - return result; - } - } - - private final static String innerIndex0= - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF303"+ - "\uF304\uF305\uF306\uF307\uD800\uF309\uD801\uD802"+ - "\uF30C\uF30D\uD803\uD804\uF310\uD805\uF312\uF313"+ - "\uF314\uF315\uD806\uF317\uF318\u0100\u00C1\u01CD"+ - "\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1"+ - "\u00D2\uF325\u1EBE\uF327\u1EC0\u00CA\u0101\u00E1"+ - "\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B"+ - "\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B"+ - "\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u01DC\u00FC\uF344\u1EBF\uF346\u1EC1\u00EA\u0261"+ - "\uF34A\uF34B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD807\uD808"+ - "\uFFFD\u650A\uFFFD\uFFFD\u4E3D\u6EDD\u9D4E\u91DF"+ - "\uFFFD\uFFFD\uD809\u6491\u4F1A\u4F28\u4FA8\u5156"+ - "\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1"+ - "\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66"+ - "\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804"+ - "\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7"+ - "\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6"+ - "\u8BBE\u8BE2\u8F66\u8F67\u8F6E\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u7411"+ - "\u7CFC\u7DCD\u6946\u7AC9\u5227\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u918C\u78B8\u915E\u80BC\uFFFD\u8D0B\u80F6"+ - "\uD80A\uFFFD\uFFFD\u809F\u9EC7\u4CCD\u9DC9\u9E0C"+ - "\u4C3E\uD80B\uD80C\u9E0A\uD80D\u35C1\uFFFD\u6E9A"+ - "\u823E\u7519\uFFFD\u4911\u9A6C\u9A8F\u9F99\u7987"+ - "\uD80E\uD80F\uD810\uD811\u4E24\u4E81\u4E80\u4E87"+ - "\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088"+ - "\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205"+ - "\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0"+ - "\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3"+ - "\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598"+ - "\u553F\u35A5\u35BF\u55D7\u35C5\uD812\u5525\uFFFD"+ - "\uD813\uD814\uD815\u5590\uD816\u39EC\uD817\u8E46"+ - "\uD818\uD819\u4053\uD81A\u777A\uD81B\u3A34\u47D5"+ - "\uD81C\uD81D\uD81E\u64DD\uD81F\uD820\uD821\uD822"+ - "\u648D\u8E7E\uD823\uD824\uD825\uD826\uD827\uD828"+ - "\uFFFD\uD829\uD82A\uD82B\u47F4\uD82C\uD82D\u9AB2"+ - "\u3A67\uD82E\u3FED\u3506\uD82F\uD830\uD831\uD832"+ - "\u9D6E\u9815\uFFFD\u43D9\uD833\u64B4\u54E3\uD834"+ - "\uD835\uD836\u39FB\uD837\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD838\uD839"+ - "\uD83A\u64EA\uD83B\uD83C\u8E68\uD83D\uD83E\uD83F"+ - "\uFFFD\u480B\uD840\u3FFA\u5873\uD841\uFFFD\uD842"+ - "\uD843\uD844\uD845\uD846\u5579\u40BB\u43BA\uFFFD"+ - "\u4AB4\uD847\uD848\u81AA\u98F5\uD849\u6379\u39FE"+ - "\uD84A\u8DC0\u56A1\u647C\u3E43\uFFFD\uD84B\uD84C"+ - "\uD84D\uD84E\uFFFD\uD84F\uD850\u3992\u3A06\uD851"+ - "\u3578\uD852\uD853\u5652\uD854\uD855\uD856\u34BC"+ - "\u6C3D\uD857\uFFFD\uFFFD\uD858\uD859\uD85A\uD85B"+ - "\uD85C\uD85D\uD85E\uD85F\u7F93\uD860\uD861\uD862"+ - "\u35FB\uD863\uD864\uD865\uD866\u3F93\uD867\uD868"+ - "\uD869\uD86A\uFFFD\uD86B\uD86C\uD86D\uD86E\uD86F"+ - "\u3FF9\uD870\u6432\uD871\uD872\uD873\uD874\uD875"+ - "\uD876\uD877\uD878\u3A18\uD879\uD87A\uD87B\uD87C"+ - "\uD87D\uD87E\uD87F\uD880\u95AA\u54CC\u82C4\u55B9"+ - "\uFFFD\uD881\u9C26\u9AB6\uD882\uD883\u7140\u816D"+ - "\u80EC\u5C1C\uD884\u8134\u3797\u535F\uD885\u91B6"+ - "\uD886\uD887\uD888\uD889\u35DD\uD88A\u3609\uD88B"+ - "\u56AF\uD88C\uD88D\uD88E\uD88F\uD890\uD891\uD892"+ - "\uD893\uD894\uD895\uD896\u5A54\uD897\uD898\uD899"+ - "\uD89A\u579C\uD89B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uD89C\uD89D\uD89E"+ - "\uD89F\uD8A0\u3703\uD8A1\uD8A2\uD8A3\uD8A4\uD8A5"+ - "\uD8A6\uD8A7\uD8A8\u5899\u5268\u361A\uD8A9\u7BB2"+ - "\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD8AA"+ - "\uD8AB\u55FB\u35F2\u5689\u4E28\u5902\uD8AC\uD8AD"+ - "\u9751\uD8AE\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4"+ - "\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B"+ - "\u4E2C\u72AD\uD8AF\u7F52\u793B\u7CF9\u7F53\uD8B0"+ - "\u34C1\uFFFD\uD8B1\u8002\u8080\uD8B2\uD8B3\u535D"+ - "\u8864\u89C1\uD8B4\u8BA0\u8D1D\u9485\u9578\u957F"+ - "\u95E8\uD8B5\u97E6\u9875\u98CE\u98DE\u9963\uD8B6"+ - "\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD8B7\u961D"+ - "\u6237\u94A2\uFFFD\u503B\u6DFE\uD8B8\uF57A\u3DC9"+ - "\u888F\uD8B9\u7077\u5CF5\u4B20\uD8BA\u3559\uD8BB"+ - "\u6122\uD8BC\u8FA7\u91F6\u7191\u6719\u73BA\uD8BD"+ - "\uD8BE\u3C8B\uD8BF\u4B10\u78E4\u7402\u51AE\uD8C0"+ - "\u4009\u6A63\uD8C1\u4223\u860F\uFFFD\u7A2A\uD8C2"+ - "\uD8C3\u9755\u704D\u5324\uD8C4\u93F4\u76D9\uD8C5"+ - "\uF5A4\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\uF5AB"+ - "\u5434\u7D8B\u5892\u58D0\uD8C6\u5E92\u5E99\u5FC2"+ - "\uD8C7\u658B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uD8C8\u6919\u6A43\uD8C9"+ - "\u6CFF\uFFFD\u7200\uD8CA\u738C\u3EDB\uD8CB\u5B15"+ - "\u74B9\u8B83\uD8CC\uD8CD\u7A93\u7BEC\u7CC3\u7E6C"+ - "\u82F8\u8597\uF5CC\u8890\uF5CE\u8EB9\uF5D0\u8FCF"+ - "\u855F\u99E0\u9221\uF5D5\uD8CE\uD8CF\u4071\u42A2"+ - "\u5A1A\uFFFD\uFFFD\uFFFD\u9868\u676B\u4276\u573D"+ - "\uFFFD\u85D6\uD8D0\u82BF\uD8D1\u4C81\uD8D2\u5D7B"+ - "\uD8D3\uD8D4\uF5EC\uF5ED\u5B96\uF5EF\uFFFD\u7E5B"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4"+ - "\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908"+ - "\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7"+ - "\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8"+ - "\u56B1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u3A03\u63E2\u63FB\u6407\u645A"+ - "\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD"+ - "\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4"+ - "\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909"+ - "\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD"+ - "\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB"+ - "\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA"+ - "\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1"+ - "\u6E15\u6E18\u6E29\u6E86\uD8D5\u6EBB\u6EE2\u6EDA"+ - "\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD8D6\u6F81"+ - "\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91"+ - "\u7050\u7054\u706F\u707F\u7089\uD8D7\u43C1\u35F1"+ - "\uD8D8\uD8D9\u57BE\uD8DA\u713E\uD8DB\u364E\u69A2"+ - "\uD8DC\u5B74\u7A49\uD8DD\uD8DE\u7A65\u7A7D\uD8DF"+ - "\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD8E0\u41CA\u7ADA"+ - "\u7ADD\u7AEA\u41EF\u54B2\uD8E1\u7B0B\u7B55\u7B29"+ - "\uD8E2\uD8E3\u7BA2\u7B6F\u839C\uD8E4\uD8E5\u7BD0"+ - "\u8421\u7B92\uFFFD\uD8E6\u3DAD\uD8E7\u8492\u7BFA"+ - "\uFFFD\u7C35\uD8E8\u7C44\u7C83\uD8E9\u7CA6\u667D"+ - "\uD8EA\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u7E67\u451D\uD8EB\u7D5D\uD8EC\u748D"+ - "\u7D89\u7DAB\u7135\u7DB3\uFFFD\uD8ED\uD8EE\u7DE4"+ - "\u3D13\u7DF5\uD8EF\u7DE5\uD8F0\uFFFD\uD8F1\uD8F2"+ - "\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47"+ - "\u7936\uD8F3\u99E1\u7F97\uD8F4\u7FA3\uD8F5\uD8F6"+ - "\u455C\uD8F7\u4503\uD8F8\u7FFA\uD8F9\uFFFD\u8008"+ - "\u801D\uFFFD\u802F\uD8FA\uD8FB\u803B\u803C\u8061"+ - "\uD8FC\u4989\uD8FD\uD8FE\uD8FF\u6725\u80A7\uD900"+ - "\u8107\u811A\u58B0\uD901\u6C7F\uD902\uD903\u64E7"+ - "\uD904\u8218\uD905\u6A53\uD906\uD907\u447A\u8229"+ - "\uD908\uD909\uD90A\u4FF9\uD90B\u84E2\u8362\uD90C"+ - "\uD90D\uD90E\uD90F\uD910\u82AA\u691B\uD911\u41DB"+ - "\u854B\u82D0\u831A\uD912\uD913\u36C1\uD914\uD915"+ - "\u827B\u82E2\u8318\uD916\uD917\uD918\uD919\uD91A"+ - "\u3DBF\u831D\u55EC\u8385\u450B\uD91B\u83AC\uFFFD"+ - "\u83D3\u347E\uD91C\u6A57\u855A\u3496\uD91D\uD91E"+ - "\u8458\uD91F\u8471\u3DD3\u44E4\u6AA7\u844A\uD920"+ - "\u7958\uFFFD\uD921\uD922\uD923\u84DE\uFFFD\u8391"+ - "\u44A0\u8493\u84E4\uD924\u4240\uD925\u4543\u8534"+ - "\u5AF2\uD926\u4527\u8573\u4516\u67BF\u8616\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uD927\uD928\u85C1\uD929\u8602\uD92A\uD92B"+ - "\uD92C\u456A\u8628\u3648\uD92D\u53F7\uD92E\u867E"+ - "\u8771\uD92F\u87EE\uD930\u87B1\u87DA\u880F\u5661"+ - "\u866C\u6856\u460F\u8845\u8846\uD931\uD932\uD933"+ - "\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777"+ - "\uD934\u8987\u898A\uFFFD\uFFFD\u89A7\u89BC\uD935"+ - "\u89E7\uD936\uD937\u8A9C\u7793\u91FE\u8A90\uD938"+ - "\u7AE9\uD939\uD93A\u4713\uD93B\u717C\u8B0C\u8B1F"+ - "\uD93C\uD93D\u8B3F\u8B4C\u8B4D\u8AA9\uD93E\u8B90"+ - "\u8B9B\u8AAF\uD93F\u4615\u884F\u8C9B\uD940\uD941"+ - "\uD942\u3725\uD943\u8CD6\uD944\uD945\u8D12\u8D03"+ - "\uD946\u8CDB\u705C\u8D11\uD947\u3ED0\uFFFD\u8DA9"+ - "\uD948\uD949\uD94A\u3B7C\uD94B\uD94C\u7AE7\u8EAD"+ - "\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD94D\uD94E\u8FA5"+ - "\u9303\uD94F\uD950\u8FB3\u492A\uD951\uD952\uD953"+ - "\u5EF8\uD954\u8FF9\uD955\uD956\uD957\uD958\u3980"+ - "\uD959\u9037\uD95A\uD95B\u9061\uD95C\uD95D\u90A8"+ - "\uD95E\u90C4\uD95F\u90AE\uFFFD\u9167\u3AF0\u91A9"+ - "\u91C4\u7CAC\uD960\uD961\u920E\u6C9F\u9241\u9262"+ - "\uD962\uFFFD\uD963\uD964\uD965\uD966\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uD967\u932C\u936B\uD968\uD969\u708F\u5AC3\uD96A"+ - "\uD96B\u4965\u9244\uD96C\uD96D\uD96E\u9373\u945B"+ - "\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD96F"+ - "\uD970\uD971\uD972\u49DF\u6C1C\u967B\u9696\u416C"+ - "\u96A3\uD973\u61DA\u96B6\u78F5\uD974\u96BD\u53CC"+ - "\u49A1\uD975\uD976\uD977\uD978\uD979\uD97A\uD97B"+ - "\uD97C\u9731\u8642\u9736\u4A0F\u453D\u4585\uD97D"+ - "\u7075\u5B41\u971B\uFFFD\uD97E\u9757\u5B4A\uD97F"+ - "\u975F\u9425\u50D0\uD980\uD981\u9789\u979F\u97B1"+ - "\u97BE\u97C0\u97D2\u97E0\uD982\u97EE\u741C\uD983"+ - "\uFFFD\u97F5\uD984\uD985\u4AD1\u9834\u9833\u984B"+ - "\u9866\u3B0E\uD986\u3D51\uD987\uD988\uD989\u98CA"+ - "\u98B7\u98C8\u98C7\u4AFF\uD98A\uD98B\u55B0\u98E1"+ - "\u98E6\u98EC\u9378\u9939\uD98C\u4B72\uD98D\uD98E"+ - "\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD98F\u36C4\uD990"+ - "\uD991\u9AE0\u9AE2\uD992\u9AF4\u4C0E\u9B14\u9B2D"+ - "\uD993\u5034\u9B34\uD994\u38C3\uD995\u9B50\u9B40"+ - "\uD996\u5A45\uD997\u9B8E\uD998\u9C02\u9BFF\u9C0C"+ - "\uD999\u9DD4\uD99A\uD99B\uD99C\uD99D\uD99E\uD99F"+ - "\u9D7E\u9D83\uD9A0\u9E0E\u6888\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9DC4"+ - "\uD9A1\uD9A2\uD9A3\uD9A4\uD9A5\u9D39\uD9A6\uD9A7"+ - "\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD9A8"+ - "\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD9A9\u9F02"+ - "\u9F08\u4B96\u9424\uD9AA\u9F17\uFFFD\u9F39\u569F"+ - "\u568A\u9F45\u99B8\uD9AB\u97F2\u847F\u9F62\u9F69"+ - "\u7ADC\u9F8E\u7216\u4BBE\uD9AC\uD9AD\u7177\uD9AE"+ - "\uD9AF\uD9B0\u739E\uD9B1\uD9B2\u799F\uD9B3\uD9B4"+ - "\u9369\u93F3\uD9B5\u92EC\u9381\u93CB\uD9B6\uD9B7"+ - "\u7217\u3EEB\u7772\u7A43\u70D0\uD9B8\uD9B9\u717E"+ - "\uD9BA\u70A3\uD9BB\uD9BC\u3EC7\uD9BD\uD9BE\uD9BF"+ - "\u3722\uD9C0\uD9C1\u36E1\uD9C2\uD9C3\uD9C4\u3723"+ - "\uD9C5\u575B\uD9C6\uD9C7\uD9C8\uD9C9\uD9CA\u8503"+ - "\uD9CB\uFFFD\u8455\uD9CC\uD9CD\uD9CE\uD9CF\uD9D0"+ - "\uD9D1\u44F4\uD9D2\uD9D3\uD9D4\u67F9\u3733\u3C15"+ - "\u3DE7\u586C\uD9D5\u6810\u4057\uD9D6\uD9D7\uD9D8"+ - "\uD9D9\uD9DA\u54CB\u569E\uD9DB\u5692\uD9DC\uD9DD"+ - "\uD9DE\u93C6\uD9DF\u939C\u4EF8\u512B\u3819\uD9E0"+ - "\u4EBC\uD9E1\uD9E2\u4F4B\u4F8A\uD9E3\u5A68\uD9E4"+ - "\uD9E5\u3999\uD9E6\uD9E7\u3435\u4F29\uD9E8\uD9E9"+ - "\uD9EA\u8ADA\uD9EB\u4E98\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u50CD\u510D"+ - "\u4FA2\u4F03\uD9EC\uD9ED\u4F42\u502E\u506C\u5081"+ - "\u4FCC\u4FE5\u5058\u50FC\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u6E76\uD9EE\uD9EF\uD9F0\u6D72\uD9F1\uD9F2\u51A8"+ - "\u51C3\uD9F3\u44DD\uD9F4\uD9F5\uD9F6\u8D7A\uD9F7"+ - "\uD9F8\u5259\u52A4\uD9F9\u52E1\uFFFD\u467A\u718C"+ - "\uD9FA\uD9FB\uD9FC\uD9FD\u69D1\uD9FE\uFFFD\u3EDE"+ - "\u7499\u7414\u7456\u7398\u4B8E\uD9FF\uDA00\u53D0"+ - "\u3584\u720F\uDA01\u55B4\uDA02\u54CD\uDA03\u571D"+ - "\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB"+ - "\u5A99\uDA04\uDA05\uDA06\uDA07\u5A2C\u59B8\u928F"+ - "\u5A7E\u5ACF\u5A12\uDA08\uDA09\uDA0A\uDA0B\u36F5"+ - "\u6D05\u7443\u5A21\uDA0C\u5A81\uDA0D\uDA0E\u93E0"+ - "\u748C\uDA0F\u7105\u4972\u9408\uDA10\u93BD\u37A0"+ - "\u5C1E\u5C9E\u5E5E\u5E48\uDA11\uDA12\uDA13\u5ECD"+ - "\u5B4F\uDA14\uDA15\u3701\uDA16\u36DD\uDA17\u36D3"+ - "\u812A\uDA18\uDA19\uDA1A\uDA1B\u5F0C\u5F0E\uDA1C"+ - "\uDA1D\u5A6B\uDA1E\u5B44\u8614\uDA1F\u8860\u607E"+ - "\uDA20\uDA21\u5FDB\u3EB8\uDA22\uDA23\uDA24\uDA25"+ - "\u61C0\uDA26\uDA27\uDA28\u6199\u6198\u6075\uDA29"+ - "\uDA2A\uDA2B\uDA2C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6471\uDA2D\uDA2E"+ - "\u3A29\uDA2F\uDA30\uDA31\uDA32\u6337\uDA33\u64B6"+ - "\u6331\u63D1\uDA34\uDA35\u62A4\uDA36\u643B\u656B"+ - "\u6972\u3BF4\uDA37\uDA38\uDA39\uDA3A\u550D\uDA3B"+ - "\uDA3C\uDA3D\u66CE\uDA3E\uDA3F\u3AE0\u4190\uDA40"+ - "\uDA41\uDA42\uDA43\uDA44\uDA45\u78EE\uDA46\uDA47"+ - "\uDA48\u3464\uDA49\uDA4A\uDA4B\u668E\uDA4C\u666B"+ - "\u4B93\u6630\uDA4D\uDA4E\u6663\uDA4F\uDA50\u661E"+ - "\uDA51\u38D1\uDA52\uDA53\u3B99\uDA54\uDA55\u74D0"+ - "\u3B96\u678F\uDA56\u68B6\u681E\u3BC4\u6ABE\u3863"+ - "\uDA57\uDA58\u6A33\u6A52\u6AC9\u6B05\uDA59\u6511"+ - "\u6898\u6A4C\u3BD7\u6A7A\u6B57\uDA5A\uDA5B\u93A0"+ - "\u92F2\uDA5C\uDA5D\u9289\uDA5E\uDA5F\u9467\u6DA5"+ - "\u6F0B\uDA60\uFFFD\uDA61\u3D8F\u6E04\uDA62\u5A3D"+ - "\u6E0A\u5847\u6D24\u7842\u713B\uDA63\uDA64\u70F1"+ - "\u7250\u7287\u7294\uDA65\uDA66\u5179\uDA67\uDA68"+ - "\u747A\uDA69\uDA6A\uDA6B\uDA6C\uDA6D\u3F06\u3EB1"+ - "\uDA6E\uDA6F\uDA70\u60A7\u3EF3\u74CC\u743C\u9387"+ - "\u7437\u449F\uDA71\u4551\u7583\u3F63\uDA72\uDA73"+ - "\u3F58\u7555\u7673\uDA74\u3B19\u7468\uDA75\uDA76"+ - "\uDA77\u3AFB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u3DCD\uDA78\u3EFF\uDA79"+ - "\uDA7A\u91FA\u5732\u9342\uDA7B\uDA7C\u50DF\uDA7D"+ - "\uDA7E\u7778\uDA7F\u770E\u770F\u777B\uDA80\uDA81"+ - "\u3A5E\uDA82\u7438\u749B\u3EBF\uDA83\uDA84\u40C8"+ - "\uDA85\uDA86\u9307\uDA87\u781E\u788D\u7888\u78D2"+ - "\u73D0\u7959\uDA88\uDA89\u410E\uFFFD\u8496\u79A5"+ - "\u6A2D\uDA8A\u7A3A\u79F4\u416E\uDA8B\u4132\u9235"+ - "\u79F1\uDA8C\uDA8D\uDA8E\uDA8F\uDA90\u3597\u556B"+ - "\u3570\u36AA\uDA91\uDA92\u7AE2\u5A59\uDA93\uDA94"+ - "\uDA95\u5A0D\uDA96\u78F0\u5A2A\uDA97\u7AFE\u41F9"+ - "\u7C5D\u7C6D\u4211\uDA98\uDA99\uDA9A\u7CCD\uDA9B"+ - "\uDA9C\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3"+ - "\u7F4E\uDA9D\uDA9E\uDA9F\u7D97\uDAA0\u426A\uDAA1"+ - "\uDAA2\u67D6\uDAA3\uDAA4\u57C4\uDAA5\uDAA6\uDAA7"+ - "\u7FDD\u7B27\uDAA8\uDAA9\uDAAA\u7B0C\uDAAB\u99E6"+ - "\u8645\u9A63\u6A1C\uDAAC\u39E2\uDAAD\uDAAE\u9A1F"+ - "\uDAAF\u8480\uDAB0\uDAB1\u44EA\u8137\u4402\u80C6"+ - "\u8109\u8142\uDAB2\u98C3\uDAB3\u8262\u8265\uDAB4"+ - "\u8453\uDAB5\u8610\uDAB6\u5A86\u417F\uDAB7\u5B2B"+ - "\uDAB8\u5AE4\uDAB9\u86A0\uDABA\uDABB\u882D\uDABC"+ - "\u5A02\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u886E\u4F45\u8887\u88BF\u88E6"+ - "\u8965\u894D\uDABD\u8954\uDABE\uDABF\uDAC0\uDAC1"+ - "\uDAC2\uDAC3\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D"+ - "\u8A1C\uDAC4\u5F4D\u922B\uDAC5\u65D4\u7129\u70C4"+ - "\uDAC6\u9D6D\u8C9F\u8CE9\uDAC7\u599A\u77C3\u59F0"+ - "\u436E\u36D4\u8E2A\u8EA7\uDAC8\u8F30\u8F4A\u42F4"+ - "\u6C58\u6FBB\uDAC9\u489B\u6F79\u6E8B\uDACA\u9BE9"+ - "\u36B5\uDACB\u90BB\uFFFD\u5571\u4906\u91BB\u9404"+ - "\uDACC\u4062\uDACD\u9427\uDACE\uDACF\u84E5\u8A2B"+ - "\u9599\u95A7\u9597\u9596\uDAD0\u7445\u3EC2\uDAD1"+ - "\uDAD2\uDAD3\u3EE7\uDAD4\u968F\uDAD5\uDAD6\uDAD7"+ - "\u3ECC\uDAD8\uDAD9\uDADA\u7412\u746B\u3EFC\u9741"+ - "\uDADB\u6847\u4A1D\uDADC\uDADD\uFFFD\u9368\uDADE"+ - "\uDADF\uDAE0\uDAE1\u92BA\u5B11\u8B69\u493C\u73F9"+ - "\uDAE2\u979B\u9771\u9938\uDAE3\u5DC1\uDAE4\uDAE5"+ - "\u981F\uDAE6\u92F6\uDAE7\u91E5\u44C0\uDAE8\uDAE9"+ - "\uDAEA\u98DC\uDAEB\u3F00\u922A\u4925\u8414\u993B"+ - "\u994D\uDAEC\u3DFD\u999B\u4B6F\u99AA\u9A5C\uDAED"+ - "\uDAEE\u6A8F\u9A21\u5AFE\u9A2F\uDAEF\u4B90\uDAF0"+ - "\u99BC\u4BBD\u4B97\u937D\u5872\uDAF1\u5822\uDAF2"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uDAF3\u7844\uDAF4\uDAF5\u68C5\u3D7D"+ - "\u9458\u3927\u6150\uDAF6\uDAF7\u6107\u9C4F\u9C53"+ - "\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uDAF8\u9B9F\uDAF9"+ - "\uDAFA\u9D21\u4CAE\uDAFB\u9E18\u4CB0\u9D0C\uDAFC"+ - "\uDAFD\uDAFE\uDAFF\u9DA5\u84BD\uDB00\uDB01\uDB02"+ - "\u85FC\u4533\uDB03\uDB04\uDB05\u8420\u85EE\uDB06"+ - "\uDB07\uDB08\u79E2\uDB09\uDB0A\u492D\uDB0B\u3D62"+ - "\u93DB\u92BE\u9348\uDB0C\u78B9\u9277\u944D\u4FE4"+ - "\u3440\u9064\uDB0D\u783D\u7854\u78B6\u784B\uDB0E"+ - "\uDB0F\uDB10\u369A\u4F72\u6FDA\u6FD9\uFFFD\u701E"+ - "\u5414\uDB11\u57BB\u58F3\u578A\u9D16\u57D7\u7134"+ - "\u34AF\uDB12\u71EB\uDB13\uDB14\uFFFD\uDB15\uDB16"; - - private final static String innerIndex1= - "\u610C\u5ACE\u5A0B\u42BC\uDB17\u372C\u4B7B\uDB18"+ - "\u93BB\u93B8\uDB19\uDB1A\u8472\uDB1B\uDB1C\uDB1D"+ - "\uDB1E\uDB1F\u5994\uDB20\uDB21\u7DA8\uDB22\uDB23"+ - "\uDB24\uDB25\uDB26\u92E5\u73E2\u3EE9\u74B4\uDB27"+ - "\uDB28\u3EE1\uDB29\u6AD8\u73F3\u73FB\u3ED6\uDB2A"+ - "\uDB2B\uDB2C\uDB2D\uDB2E\uDB2F\uDB30\u7448\uDB31"+ - "\u70A5\uDB32\u9284\u73E6\u935F\uDB33\u9331\uDB34"+ - "\uDB35\u9386\uDB36\uDB37\u4935\uDB38\u716B\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uDB39\uDB3A\u56A4\uDB3B\uDB3C\uDB3D\u5502"+ - "\u79C4\uDB3E\u7DFE\uDB3F\uDB40\uDB41\u452E\u9401"+ - "\u370A\uDB42\uDB43\u59B0\uDB44\uDB45\uDB46\u5AA1"+ - "\u36E2\uDB47\u36B0\u925F\u5A79\uDB48\uDB49\u9374"+ - "\u3CCD\uDB4A\u4A96\u398A\u50F4\u3D69\u3D4C\uDB4B"+ - "\u7175\u42FB\uDB4C\u6E0F\uDB4D\u44EB\u6D57\uDB4E"+ - "\u7067\u6CAF\u3CD6\uDB4F\uDB50\u6E02\u6F0C\u3D6F"+ - "\uDB51\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4"+ - "\u926E\u493E\u8F41\uDB52\uDB53\u5812\u57C8\u36D6"+ - "\uDB54\u70FE\uDB55\uDB56\uDB57\uDB58\uDB59\u68B9"+ - "\u6967\uDB5A\uDB5B\uDB5C\uDB5D\uDB5E\uDB5F\uDB60"+ - "\uDB61\u6A1A\uDB62\uDB63\u843E\u44DF\u44CE\uDB64"+ - "\uDB65\uDB66\uDB67\u6F17\uDB68\u833D\uDB69\u83ED"+ - "\uDB6A\uDB6B\uDB6C\u5989\u5A82\uDB6D\u5A61\u5A71"+ - "\uDB6E\uDB6F\u372D\u59EF\uDB70\u36C7\u718E\u9390"+ - "\u669A\uDB71\u5A6E\u5A2B\uDB72\u6A2B\uDB73\uDB74"+ - "\uDB75\uDB76\u711D\uDB77\uDB78\u4FB0\uDB79\u5CC2"+ - "\uDB7A\uDB7B\uDB7C\u6A0C\uDB7D\uDB7E\u70A6\u7133"+ - "\uDB7F\u3DA5\u6CDF\uDB80\uDB81\u7E65\u59EB\u5D2F"+ - "\u3DF3\u5F5C\uDB82\uDB83\u7DA4\u8426\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u5485\uDB84\uDB85\uDB86\u577E\uDB87\uDB88\u3FE5"+ - "\uDB89\uDB8A\u7003\uDB8B\u5D70\u738F\u7CD3\uDB8C"+ - "\uDB8D\u4FC8\u7FE7\u72CD\u7310\uDB8E\u7338\u7339"+ - "\uDB8F\u7341\u7348\u3EA9\uDB90\u906C\u71F5\uDB91"+ - "\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419"+ - "\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E"+ - "\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC"+ - "\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uDB92\u7188"+ - "\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045"+ - "\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2"+ - "\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866"+ - "\u8448\uDB93\u7933\u6803\u7932\u4103\u4109\u7991"+ - "\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC"+ - "\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C"+ - "\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C"+ - "\u7CB8\u4294\u7CED\u8F93\u70C0\uDB94\u7DCF\u7DD4"+ - "\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025"+ - "\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7"+ - "\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114"+ - "\u4401\u3B39\u8156\u8159\u815A\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4413"+ - "\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF"+ - "\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8"+ - "\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464"+ - "\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538"+ - "\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692"+ - "\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF"+ - "\u8924\u8947\u8991\uDB95\u8A29\u8A38\u8A94\u8AB4"+ - "\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED"+ - "\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837"+ - "\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA"+ - "\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228"+ - "\u9258\u926B\u92B1\u92AE\u92BF\u92E3\u92EB\u92F3"+ - "\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF"+ - "\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479"+ - "\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24"+ - "\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9"+ - "\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937"+ - "\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F"+ - "\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20"+ - "\u376F\uDB96\u9D49\u9C3A\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u9EFE\u5650"+ - "\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC"+ - "\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8"+ - "\u9F44\uDB97\uDB98\uDB99\u691A\u94C3\u59AC\uDB9A"+ - "\u5840\u94C1\u37B9\uDB9B\uDB9C\uDB9D\uDB9E\u5757"+ - "\u7173\uDB9F\uDBA0\uDBA1\u546A\uDBA2\uDBA3\u549E"+ - "\uDBA4\uDBA5\uDBA6\uDBA7\uDBA8\u60E7\uDBA9\u567A"+ - "\uDBAA\uDBAB\uDBAC\uDBAD\uDBAE\uDBAF\u6955\u9C2F"+ - "\u87A5\uDBB0\uDBB1\uDBB2\uDBB3\uDBB4\uDBB5\u5C20"+ - "\uDBB6\u5E0B\uDBB7\uDBB8\uDBB9\u671E\uDBBA\uDBBB"+ - "\uDBBC\u3647\uDBBD\uDBBE\uDBBF\uDBC0\u5364\u84AD"+ - "\uDBC1\uDBC2\uDBC3\u8B81\uDBC4\uDBC5\uDBC6\uDBC7"+ - "\u4E78\u70BB\uDBC8\uDBC9\uDBCA\uDBCB\uDBCC\uDBCD"+ - "\uDBCE\uDBCF\u62C3\uDBD0\uDBD1\u7198\u6855\uDBD2"+ - "\u69E9\u36C8\uDBD3\uDBD4\uDBD5\uDBD6\uDBD7\uDBD8"+ - "\u82FD\uDBD9\uDBDA\uDBDB\u89A5\uDBDC\u8FA0\uDBDD"+ - "\u97B8\uDBDE\u9847\u9ABD\uDBDF\uFFFD\uDBE0\uDBE1"+ - "\uDBE2\uDBE3\uDBE4\uDBE5\uDBE6\uDBE7\uDBE8\uDBE9"+ - "\uDBEA\uDBEB\uDBEC\uDBED\u5FB1\u6648\u66BF\uDBEE"+ - "\uDBEF\uDBF0\uFFFD\uDBF1\uFFFD\uDBF2\uDBF3\uFFFD"+ - "\uDBF4\u58B5\u670E\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u6918\uDBF5\uDBF6"+ - "\uDBF7\uDBF8\uDBF9\uDBFA\uDBFB\u48D0\u4AB8\uDBFC"+ - "\uDBFD\uDBFE\uDBFF\uDC00\uDC01\uDC02\uDC03\uDC04"+ - "\u51D2\uDC05\u599F\uDC06\u3BBE\uDC07\uDC08\uDC09"+ - "\u5788\uDC0A\u399B\uDC0B\uDC0C\uDC0D\u3762\uDC0E"+ - "\u8B5E\uDC0F\uFFFD\uDC10\uDC11\uDC12\u7209\uDC13"+ - "\uDC14\u5965\uDC15\uDC16\uDC17\u8EDA\uDC18\u528F"+ - "\u573F\u7171\uDC19\uDC1A\uDC1B\uDC1C\u55BC\uDC1D"+ - "\uDC1E\uDC1F\uFFFD\u3473\uDC20\uDC21\uDC22\u4718"+ - "\uDC23\uDC24\uDC25\uDC26\uDC27\u5066\u34FB\uDC28"+ - "\uFFFD\uDC29\u477C\uDC2A\uDC2B\uDC2C\uDC2D\uDC2E"+ - "\u57A1\u7151\uFFFD\uDC2F\uDC30\u9056\uDC31\uDC32"+ - "\u8B62\uDC33\uDC34\u5D5B\uDC35\uFFFD\uDC36\uDC37"+ - "\u8AEA\uDC38\uDC39\uDC3A\uDC3B\u4BC0\uDC3C\uDC3D"+ - "\uDC3E\u9465\uDC3F\u6195\u5A27\uDC40\uFFFD\u56B9"+ - "\uDC41\uDC42\u4E6A\uDC43\u9656\u6D8F\uDC44\u3618"+ - "\u8977\uDC45\uDC46\uDC47\uDC48\uFFFD\uDC49\u7B42"+ - "\uDC4A\uDC4B\uDC4C\uFFFD\uDC4D\u7A45\uFFFD\uDC4E"+ - "\u9A26\uDC4F\u365F\uDC50\uDC51\u7983\uDC52\uDC53"+ - "\u5D2C\uDC54\uFFFD\uDC55\u46D0\uDC56\u753B\u8865"+ - "\uDC57\u58B6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\u371C\uDC58\uDC59\uDC5A"+ - "\u3C54\uDC5B\uDC5C\u9281\uDC5D\uDC5E\u9330\uDC5F"+ - "\uDC60\u6C39\u949F\uDC61\uDC62\u8827\u88F5\uDC63"+ - "\uDC64\uDC65\u6EB8\uDC66\uDC67\u39A4\u36B9\uFFFD"+ - "\uFFFD\u453F\u66B6\uDC68\uDC69\u8943\uDC6A\uDC6B"+ - "\u56D6\u40DF\uDC6C\u39A1\uDC6D\uDC6E\uDC6F\u71AD"+ - "\u8366\uDC70\uDC71\uFFFD\u4CB7\uDC72\uDC73\uDC74"+ - "\uDC75\uDC76\uDC77\uDC78\u7B43\u797E\uDC79\u6FB5"+ - "\uDC7A\u6A03\uDC7B\u53A2\uDC7C\u93BF\u6836\u975D"+ - "\uDC7D\uDC7E\uDC7F\uDC80\uDC81\uDC82\u5D85\uDC83"+ - "\uDC84\u5715\u9823\uDC85\u5DAB\uDC86\u65BE\u69D5"+ - "\u53D2\uDC87\uDC88\u3C11\u6736\uDC89\uDC8A\uDC8B"+ - "\uDC8C\uDC8D\uDC8E\uDC8F\uDC90\uDC91\uDC92\uDC93"+ - "\u35CA\uDC94\uDC95\u48FA\u63E6\uDC96\u7808\u9255"+ - "\uDC97\u43F2\uDC98\u43DF\uDC99\uDC9A\uDC9B\u59F8"+ - "\uDC9C\uFFFD\uDC9D\uDC9E\uFFFD\uDC9F\uDCA0\u3DF7"+ - "\uDCA1\uDCA2\u8FD0\u728F\u568B\uDCA3\uDCA4\uDCA5"+ - "\uDCA6\uDCA7\uDCA8\uDCA9\uDCAA\uDCAB\uDCAC\uDCAD"+ - "\uDCAE\uDCAF\u7E9F\uDCB0\uDCB1\u4CA4\u9547\uDCB2"+ - "\u71A2\uDCB3\u4D91\u9012\uDCB4\u4D9C\uDCB5\u8FBE"+ - "\u55C1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u8FBA\uDCB6\u8FB9\uDCB7\u4509"+ - "\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uDCB8\uDCB9\u373A"+ - "\u8E80\uDCBA\uDCBB\uDCBC\uDCBD\uDCBE\uDCBF\u3DEB"+ - "\uDCC0\uDCC1\uDCC2\uDCC3\u4E9A\uDCC4\uDCC5\u56BF"+ - "\uDCC6\u8E0E\u5B6D\uDCC7\uDCC8\u63DE\uFFFD\uDCC9"+ - "\uDCCA\u6530\u562D\uDCCB\u541A\uDCCC\u3DC6\uDCCD"+ - "\u4C7D\u5622\u561E\u7F49\uDCCE\u5975\uDCCF\u8770"+ - "\u4E1C\uDCD0\uDCD1\uDCD2\u8117\u9D5E\u8D18\u763B"+ - "\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625"+ - "\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uDCD3"+ - "\u35CE\u5605\u55F1\u66F1\uDCD4\u362D\u7534\u55F0"+ - "\u55BA\u5497\u5572\uDCD5\uDCD6\u5ED0\uDCD7\uDCD8"+ - "\uDCD9\uDCDA\u9EAB\u7D5A\u55DE\uDCDB\u629D\u976D"+ - "\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569"+ - "\uDCDC\u9C72\uDCDD\u519A\u34DF\uDCDE\u51A7\u544D"+ - "\u551E\u5513\u7666\u8E2D\uDCDF\u75B1\u80B6\u8804"+ - "\u8786\u88C7\u81B6\u841C\uDCE0\u44EC\u7304\uDCE1"+ - "\u5B90\u830B\uDCE2\u567B\uDCE3\uDCE4\uDCE5\uDCE6"+ - "\uDCE7\uDCE8\u9170\uDCE9\u9208\uDCEA\uDCEB\uDCEC"+ - "\uDCED\u7266\uDCEE\u474E\uDCEF\uDCF0\uDCF1\u40FA"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\u9C5D\u651F\uDCF2\u48F3\uDCF3\uDCF4"+ - "\uDCF5\uDCF6\uFFFD\uDCF7\uDCF8\uFFFD\uDCF9\uDCFA"+ - "\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2"+ - "\u5367\u36AC\u39DC\u537D\u36A5\uDCFB\u589A\uDCFC"+ - "\u822D\u544B\u57AA\uDCFD\uDCFE\uFFFD\u3A52\uDCFF"+ - "\u7374\uDD00\u4D09\u9BED\uDD01\uDD02\u4C5B\uDD03"+ - "\uDD04\uDD05\u845C\uDD06\uDD07\uDD08\uDD09\u632E"+ - "\u7D25\uDD0A\uDD0B\u3A2A\u9008\u52CC\u3E74\u367A"+ - "\u45E9\uDD0C\u7640\u5AF0\uDD0D\u787A\u47B6\u58A7"+ - "\u40BF\u567C\u9B8B\u5D74\u7654\uDD0E\u9E85\u4CE1"+ - "\uFFFD\u37FB\u6119\uDD0F\uDD10\uFFFD\u565D\uDD11"+ - "\u57A7\uDD12\uDD13\u5234\uDD14\u35AD\uFFFD\u9D7C"+ - "\u7C56\u9B39\u57DE\uDD15\u5C53\u64D3\uDD16\uDD17"+ - "\uDD18\u86AD\uDD19\uDD1A\uDD1B\uDD1C\uFFFD\u51FE"+ - "\uDD1D\u5D8E\u9703\uDD1E\u9E81\u904C\u7B1F\u9B02"+ - "\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E"+ - "\uFFFD\u7C42\u7C86\u9C15\u7BFC\u9B09\uFFFD\u9C1B"+ - "\uDD1F\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260"+ - "\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB"+ - "\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980"+ - "\u50A6\u7546\uDD20\u99DA\u5273\uFFFD\u9159\u9681"+ - "\u915C\uFFFD\u9151\uDD21\u637F\uDD22\u6ACA\u5611"+ - "\u918E\u757A\u6285\uDD23\u734F\u7C70\uDD24\uDD25"+ - "\uFFFD\uDD26\u76D6\u9B9D\u4E2A\uDD27\u83BE\u8842"+ - "\uFFFD\u5C4A\u69C0\uFFFD\u577A\u521F\u5DF5\u4ECE"+ - "\u6C31\uDD28\u4F39\u549C\u54DA\u529A\u8D82\u35FE"+ - "\uFFFD\u35F3\uFFFD\u6B52\u917C\u9FA5\u9B97\u982E"+ - "\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\uFFFD\u6BFA"+ - "\u8818\u7F78\uFFFD\u5620\uDD29\u8E77\u9F53\uFFFD"+ - "\u8DD4\u8E4F\u9E1C\u8E01\u6282\uDD2A\u8E28\u8E75"+ - "\u7AD3\uDD2B\u7A3E\u78D8\u6CEA\u8A67\u7607\uDD2C"+ - "\u9F26\u6CCE\u87D6\u75C3\uDD2D\u7853\uDD2E\u8D0C"+ - "\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uDD2F\u862F"+ - "\u5FBA\u88A0\u44B7\uFFFD\uDD30\uDD31\uFFFD\u8A7E"+ - "\uDD32\uFFFD\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F"+ - "\u87F5\uFFFD\uFFFD\u8CF7\u732C\u9721\u9BB0\u35D6"+ - "\u72B2\u4C07\u7C51\u994A\uDD33\u6159\u4C04\u9E96"+ - "\u617D\uFFFD\u575F\u616F\u62A6\u6239\uFFFD\u3A5C"+ - "\u61E2\u53AA\uDD34\u6364\u6802\u35D2\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\u5D57\uDD35\u8FDA\uDD36\uFFFD\u50D9\uDD37\u7906"+ - "\u5332\u9638\uDD38\u4065\uFFFD\u77FE\uFFFD\u7CC2"+ - "\uDD39\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2"+ - "\u8994\u821A\u670C\u8062\uDD3A\u805B\u74F0\u8103"+ - "\u7724\u8989\uDD3B\u7553\uDD3C\u87A9\u87CE\u81C8"+ - "\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635"+ - "\u69B2\u8DA6\uFFFD\u89A9\uFFFD\u6DB9\u87C1\uDD3D"+ - "\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\uFFFD\u6077"+ - "\uFFFD\u7F71\uDD3E\uFFFD\u60E9\u4B7E\u5220\u3C18"+ - "\uDD3F\uDD40\uDD41\uDD42\uDD43\uDD44\uDD45\uDD46"+ - "\uDD47\u5CC1\uDD48\uDD49\uDD4A\uDD4B\uDD4C\uDD4D"+ - "\u4562\u5B1F\uDD4E\u9F50\u9EA6\uDD4F\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\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\u4E36\u4E3F\u4E85"+ - "\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6"+ - "\u590A\u5B80\u5DDB\u2F33\u5E7F\uFFFD\u5F50\u5F61"+ - "\u6534\uFFFD\u7592\uFFFD\u8FB5\uFFFD\u00A8\u02C6"+ - "\u30FD\u30FE\u309D\u309E\uFFFD\uFFFD\u3005\u3006"+ - "\u3007\u30FC\uFF3B\uFF3D\u273D\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\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\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\u21E7\u21B8\u21B9\uF7E5\uDD50\u4E5A"+ - "\uDD51\u5202\uF7EA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF7EB\u5188\uF7ED"+ - "\uDD52\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121"+ - "\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A"+ - "\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA"+ - "\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC"+ - "\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\uFFFD\uFFFD"+ - "\uFFFD\u0283\u0250\u025B\u0254\u0275\u0153\u00F8"+ - "\u014B\u028A\u026A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA"+ - "\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569"+ - "\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558"+ - "\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562"+ - "\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570"+ - "\u256F\uFFED\uDD53\u92DB\uDD54\uDD55\u854C\u42B5"+ - "\u73EF\u51B5\u3649\uDD56\uDD57\u9344\uDD58\u82EE"+ - "\uDD59\u783C\u6744\u62DF\uDD5A\uDD5B\uDD5C\uDD5D"+ - "\uDD5E\u4FAB\uDD5F\u5008\uDD60\uDD61\uDD62\uDD63"+ - "\uDD64\uFFFD\uDD65\u5FA4\uDD66\uDD67\u6EDB\uDD68"+ - "\uFFFD\u5101\u347A\u510E\u986C\u3743\u8416\uDD69"+ - "\uDD6A\u5160\uDD6B\u516A\uDD6C\uDD6D\uDD6E\uDD6F"+ - "\uDD70\uDD71\uDD72\u5B82\u877D\uDD73\uDD74\u51B2"+ - "\u51B8\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\u9D34\u51C9\u51CF\u51D1\u3CDC"+ - "\u51D3\uDD75\u51B3\u51E2\u5342\u51ED\u83CD\u693E"+ - "\uDD76\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294"+ - "\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uDD77\uFFFD"+ - "\uDD78\u5549\u6ED9\uDD79\uDD7A\uDD7B\u5333\uFFFD"+ - "\uDD7C\u6CCB\uDD7D\u681B\u73D5\u604A\u3EAA\u38CC"+ - "\uDD7E\u71DD\u44A2\u536D\u5374\uDD7F\u537E\uFFFD"+ - "\uDD80\uDD81\u77E6\u5393\uDD82\u53A0\u53AB\u53AE"+ - "\u73A7\uDD83\u3F59\u739C\u53C1\u53C5\u6C49\u4E49"+ - "\u57FE\u53D9\u3AAB\uDD84\u53E0\uDD85\uDD86\u53F6"+ - "\uDD87\u5413\u7079\u552B\u6657\u6D5B\u546D\uDD88"+ - "\uDD89\u555D\u548F\u54A4\u47A6\uDD8A\uDD8B\u3DB4"+ - "\uDD8C\uDD8D\uDD8E\u5547\u4CED\u542F\u7417\u5586"+ - "\u55A9\uFFFD\uDD8F\uDD90\u4552\uDD91\u66B3\uDD92"+ - "\u5637\u66CD\uDD93\u66A4\u66AD\u564D\u564F\u78F1"+ - "\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uDD94\u3623"+ - "\uDD95\u5746\uDD96\u6C6E\u708B\u5742\u36B1\uDD97"+ - "\u57E6\uDD98\u5803\uDD99\uDD9A\u5826\uDD9B\u585C"+ - "\u58AA\u3561\u58E0\u58DC\uDD9C\u58FB\u5BFF\u5743"+ - "\uDD9D\uDD9E\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uDD9F\u5A24\u5553\uDDA0\u8505\u59C9"+ - "\uDDA1\uDDA2\uDDA3\uDDA4\u59D9\uDDA5\uDDA6\uDDA7"+ - "\u6D71\uDDA8\uDDA9\u59F9\uDDAA\u5AAB\u5A63\u36E6"+ - "\uDDAB\uFFFD\u3708\u5A96\u7465\u5AD3\uDDAC\uDDAD"+ - "\u3D85\uDDAE\u3732\uDDAF\u5E83\u52D0\u5B76\u6588"+ - "\u5B7C\uDDB0\u4004\u485D\uDDB1\u5BD5\u6160\uDDB2"+ - "\uDDB3\uDDB4\u5BF3\u5B9D\u4D10\u5C05\uDDB5\u5C13"+ - "\u73CE\u5C14\uDDB6\uDDB7\u5C49\u48DD\u5C85\u5CE9"+ - "\u5CEF\u5D8B\uDDB8\uDDB9\u5D10\u5D18\u5D46\uDDBA"+ - "\u5CBA\u5DD7\u82FC\u382D\uDDBB\uDDBC\uDDBD\u8287"+ - "\u3836\u3BC2\u5E2E\u6A8A\uFFFD\u5E7A\uDDBE\uDDBF"+ - "\u53A6\u4EB7\uFFFD\u53A8\uDDC0\u5E09\u5EF4\uDDC1"; - - private final static String innerIndex2= - "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uDDC2"+ - "\uDDC3\u3ADE\u48AE\uDDC4\u5F3A\uDDC5\uDDC6\uFFFD"+ - "\uDDC7\u5F63\u97BD\uDDC8\u5F72\u9340\uDDC9\u5FA7"+ - "\u5DB6\u3D5F\uDDCA\uDDCB\uDDCC\uDDCD\u91D6\uDDCE"+ - "\uDDCF\u6031\u6685\uDDD0\u3963\u3DC7\u3639\u5790"+ - "\uDDD1\u7971\u3E40\u609E\uFFFD\u60B3\uDDD2\uDDD3"+ - "\uDDD4\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uDDD5"+ - "\uDDD6\u6181\u51F4\uDDD7\u6187\u5BAA\uDDD8\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uDDD9\u61D3\uDDDA\uDDDB\u61D0\u3932\uDDDC"+ - "\uDDDD\u6023\u615C\u651E\u638B\uDDDE\u62C5\uDDDF"+ - "\u62D5\uDDE0\u636C\uDDE1\u3A17\u6438\u63F8\uDDE2"+ - "\uDDE3\uFFFD\u6F8A\uDDE4\u9814\uDDE5\uDDE6\u64E1"+ - "\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uDDE7"+ - "\uDDE8\u6585\u656D\u655F\uDDE9\u65B5\uDDEA\u4B37"+ - "\u65D1\u40D8\uDDEB\u65E0\u65E3\u5FDF\uDDEC\u6618"+ - "\uDDED\uDDEE\u6644\uDDEF\uDDF0\u664B\uDDF1\u6667"+ - "\uDDF2\u6673\uFFFD\uDDF3\uDDF4\uDDF5\uDDF6\uDDF7"+ - "\u77C5\uDDF8\u99A4\u6702\uDDF9\uDDFA\u3B2B\u69FA"+ - "\uDDFB\uFFFD\u6767\u6762\uDDFC\uDDFD\u67D7\u44E9"+ - "\u6822\u6E50\u923C\u6801\uDDFE\uDDFF\u685D\uDE00"+ - "\u69E1\u6A0B\uDE01\u6973\u68C3\uDE02\u6901\u6900"+ - "\u3D32\u3A01\uDE03\u3B80\u67AC\u6961\uDE04\u42FC"+ - "\u6936\u6998\u3BA1\uDE05\u8363\u5090\u69F9\uDE06"+ - "\uDE07\u6A45\uDE08\u6A9D\u3BF3\u67B1\u6AC8\uDE09"+ - "\u3C0D\u6B1D\uDE0A\u60DE\u6B35\u6B74\uDE0B\u6EB5"+ - "\uDE0C\uDE0D\uDE0E\u3740\u5421\uDE0F\u6BE1\uDE10"+ - "\u6BDC\u6C37\uDE11\uDE12\uDE13\u6C5A\u8226\u6C79"+ - "\uDE14\u44C5\uDE15\uDE16\uDE17\uDE18\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uDE19\u36E5\u3CEB\uDE1A\u9B83\uDE1B\uDE1C\u7F8F"+ - "\u6837\uDE1D\uDE1E\uDE1F\u6D96\u6D5C\u6E7C\u6F04"+ - "\uDE20\uDE21\uDE22\u8533\uDE23\u51C7\uFFFD\uFFFD"+ - "\u842E\uDE24\uFFFD\uDE25\u7453\uDE26\u79CC\u6E4F"+ - "\u5A91\uDE27\u6FF8\u370D\u6F9D\uDE28\u6EFA\uDE29"+ - "\uDE2A\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uDE2B"+ - "\u3D3B\u6F9F\uDE2C\u6FD3\uDE2D\uDE2E\uDE2F\uDE30"+ - "\uDE31\uDE32\u51DF\uDE33\uDE34\uDE35\uDE36\u704B"+ - "\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104"+ - "\u3DE8\u71B4\u7196\uDE37\u712B\u7145\u5A88\u714A"+ - "\uFFFD\u5C9C\uDE38\u714F\u9362\uDE39\u712C\uDE3A"+ - "\uDE3B\uDE3C\u71BA\uDE3D\u70BD\u720E\u9442\u7215"+ - "\u5911\u9443\u7224\u9341\uDE3E\u722E\u7240\uDE3F"+ - "\u68BD\u7255\u7257\u3E55\uDE40\u680D\u6F3D\u7282"+ - "\uFFFD\u732B\uDE41\uDE42\u48ED\uDE43\u7328\u732E"+ - "\u73CF\u73AA\uDE44\uDE45\u73C9\u7449\uDE46\uDE47"+ - "\uDE48\u6623\u36C5\uDE49\uDE4A\uDE4B\u73F7\u7415"+ - "\u6903\uDE4C\u7439\uDE4D\u3ED7\uFFFD\uDE4E\u7460"+ - "\uDE4F\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474"+ - "\u93F1\u6A2C\u7482\u4953\uDE50\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uDE51"+ - "\uDE52\uDE53\u5B46\uDE54\uDE55\u74C8\uDE56\u750E"+ - "\uFFFD\u751E\uDE57\uDE58\u5BD7\uDE59\u9385\u754D"+ - "\u754A\u7567\u756E\uDE5A\u3F04\uDE5B\u758E\u745D"+ - "\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676"+ - "\uDE5C\u7690\u81EF\u37F8\uDE5D\uDE5E\u76A1\u76A5"+ - "\u76B7\u76CC\uDE5F\u8462\uDE60\uDE61\uDE62\u771E"+ - "\u7726\u7740\u64AF\uDE63\u7758\uDE64\u77AF\uDE65"+ - "\uDE66\uDE67\u77F4\uFFFD\uDE68\uDE69\u68CA\u78AF"+ - "\u78C7\u78D3\u96A5\u792E\uDE6A\u78D7\u7934\u78B1"+ - "\uDE6B\u8FB8\u8884\uDE6C\uDE6D\uDE6E\u7986\u8900"+ - "\u6902\u7980\uDE6F\u799D\uDE70\u793C\u79A9\u6E2A"+ - "\uDE71\u3EA8\u79C6\uDE72\u79D4"; - - private final static short index1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 0 - }; - - private final String SurrogateMappings = - "\ud840\udd0c\ud840\udcd1\ud840\udccd\ud840\udccb"+ - "\ud847\udfe8\ud840\udcca\ud840\udd0e\ud868\udfa9"+ - "\ud844\udd45\ud85d\udf35\ud842\udde7\ud867\uddf6"+ - "\ud85c\udc0e\ud868\udd33\ud861\udc6c\ud847\uddca"+ - "\ud841\uddd0\ud84a\udee6\ud85f\udd84\ud843\udc42"+ - "\ud843\udd15\ud854\udd2b\ud84b\udcc6\ud840\udf41"+ - "\ud853\uddb8\ud865\udce5\ud860\udcbe\ud84b\udc38"+ - "\ud860\udd5d\ud85a\uddf2\ud853\uddea\ud843\udd7c"+ - "\ud843\udfb4\ud843\udcd5\ud844\udcf4\ud843\ude96"+ - "\ud843\udc0b\ud843\udf64\ud84b\udca9\ud860\ude56"+ - "\ud851\udcd3\ud843\udd46\ud866\ude4d\ud860\udce9"+ - "\ud853\udea7\ud84b\udcc2\ud865\uddf4\ud854\udec7"+ - "\ud865\udfd4\ud85e\udcc8\ud84b\udd44\ud858\udca5"+ - "\ud84b\udd4c\ud84a\udfca\ud844\udc77\ud844\udc6f"+ - "\ud859\udeda\ud859\udf16\ud85e\udda0\ud854\udc52"+ - "\ud843\udc43\ud848\udda1\ud862\udf4c\ud841\udf31"+ - "\ud840\udda9\ud84b\udd8d\ud851\uddc8\ud841\udcfc"+ - "\ud858\udc97\ud843\udf4c\ud843\udd96\ud84a\ude66"+ - "\ud844\udc9d\ud843\udd9c\ud849\udf75\ud869\ude01"+ - "\ud843\ude09\ud84a\udecf\ud84b\udcc9\ud844\udcc8"+ - "\ud84e\uddc2\ud860\ude9b\ud857\ude49\ud848\udcc7"+ - "\ud843\udf31\ud84b\udcb2\ud865\udf20\ud853\ude3b"+ - "\ud85d\udd74\ud84b\ude8b\ud848\ude08\ud869\ude5b"+ - "\ud863\udccd\ud843\ude7a\ud843\udc34\ud85a\udc1c"+ - "\ud844\udccf\ud84a\udc03\ud84a\udd39\ud854\udde3"+ - "\ud843\ude8c\ud843\udf8d\ud843\udeaa\ud843\udf30"+ - "\ud843\udd47\ud844\udd4f\ud843\ude4c\ud843\udeab"+ - "\ud842\udfa9\ud843\udd48\ud844\udcc0\ud844\udd3d"+ - "\ud849\ude96\ud843\udfad\ud84c\udff4\ud85d\ude39"+ - "\ud84a\udfce\ud843\udd7e\ud843\udd7f\ud84b\udc51"+ - "\ud84b\udc55\ud843\ude98\ud844\udcc7\ud843\udf2e"+ - "\ud869\ude32\ud85a\udf50\ud863\udcd2\ud863\udd99"+ - "\ud863\udcca\ud867\udec3\ud85d\udf5e\ud84b\uddee"+ - "\ud859\udd72\ud860\udcbd\ud843\udefa\ud843\ude0f"+ - "\ud843\ude77\ud843\udefb\ud853\uddeb\ud843\udcd6"+ - "\ud849\udfb5\ud844\udcc9\ud843\ude10\ud843\ude78"+ - "\ud844\udc78\ud844\udd48\ud860\ude07\ud845\udc55"+ - "\ud843\ude79\ud853\ude50\ud84b\udda4\ud844\udc1d"+ - "\ud844\udc1e\ud844\udcf5\ud844\udcf6\ud843\ude11"+ - "\ud85d\ude94\ud860\udecd\ud843\udfb5\ud843\ude7b"+ - "\ud854\udd7e\ud843\udfb6\ud844\udd80\ud854\uded8"+ - "\ud868\udebd\ud852\uddda\ud846\udc3a\ud850\udd77"+ - "\ud860\ude7c\ud855\udf3d\ud856\udf74\ud84c\udd3d"+ - "\ud846\udfc1\ud87e\udc78\ud840\udc86\ud852\udce9"+ - "\ud858\ude6a\ud858\udf4b\ud859\ude12\ud85a\udd51"+ - "\ud85e\udcb2\ud863\ude0f\ud866\udc10\ud840\udc87"+ - "\ud867\udc73\ud850\udd4e\ud854\uddcd\ud857\udd30"+ - "\ud862\ude32\ud84c\ude81\ud868\udd07\ud846\udd80"+ - "\ud861\udf0f\ud868\udeba\ud866\udd47\ud862\udeea"+ - "\ud848\udc7e\ud862\udde3\ud847\uddb6\ud849\udf12"+ - "\ud84c\udff9\ud84f\udc63\ud851\udd05\ud852\ude13"+ - "\ud857\udca4\ud855\ude95\ud863\uddb9\ud845\udc3f"+ - "\ud852\udd7b\ud85c\udd0d\ud85b\udd74\ud85a\udf15"+ - "\ud85b\udfbe\ud862\uddc0\ud84f\udf41\ud840\udf25"+ - "\ud843\uded8\ud84f\uded7\ud85b\uded3\ud855\udfe0"+ - "\ud862\udfe9\ud856\udce1\ud865\udcd9\ud856\uddac"+ - "\ud859\udc8d\ud857\udc01\ud854\udf0e\ud857\udcfe"+ - "\ud856\udfb4\ud85b\udc7f\ud857\udd20\ud857\udc65"+ - "\ud857\udcc1\ud852\udc82\ud851\udd78\ud85b\ude44"+ - "\ud85b\uded6\ud850\udc57\ud858\udc29\ud845\udff9"+ - "\ud860\udf6d\ud858\udd21\ud858\udd5a\ud858\uded0"+ - "\ud858\udf51\ud845\ude61\ud840\udc68\ud84d\udf66"+ - "\ud860\udf3a\ud859\udc89\ud868\udc87\ud85b\udcc3"+ - "\ud849\udf14\ud859\ude26\ud84f\udde3\ud859\udee8"+ - "\ud862\ude48\ud849\udef6\ud859\udc98\ud853\udfb8"+ - "\ud845\udc8a\ud846\udc5e\ud852\ude65\ud852\ude95"+ - "\ud842\udf0d\ud85a\ude52\ud84f\udd7e\ud845\udcfd"+ - "\ud85a\udf0a\ud852\udda7\ud84d\udd30\ud845\udf73"+ - "\ud84f\uddf8\ud87e\udd94\ud843\ude16\ud845\udfb4"+ - "\ud84c\udd7d\ud84d\udd5a\ud84f\ude8b\ud85b\udda3"+ - "\ud85a\udf05\ud85a\udf97\ud84d\uddce\ud85b\udda5"+ - "\ud85b\uded4\ud85b\ude42\ud84b\udeef\ud856\udfe4"+ - "\ud84f\udcb5\ud85a\udf96\ud85b\ude77\ud85b\ude43"+ - "\ud857\udc91\ud857\udcc0\ud85b\ude99\ud861\ude25"+ - "\ud861\ude3b\ud85c\udc88\ud845\udd82\ud85c\udccd"+ - "\ud87e\uddb2\ud846\udca2\ud85c\udf9a\ud868\udcf8"+ - "\ud84b\udc27\ud85d\udde0\ud84f\uddb9\ud85d\udde4"+ - "\ud85d\udf0f\ud862\ude25\ud85e\udd24\ud85e\udebd"+ - "\ud85e\ude59\ud85e\udf3a\ud84f\udf8f\ud85e\udf38"+ - "\ud855\udc30\ud855\udd65\ud852\ude7a\ud845\udedf"+ - "\ud85f\udd54\ud85f\udd8f\ud87e\uddd4\ud85f\udd53"+ - "\ud85f\udd98\ud85f\uddbd\ud846\udd10\ud853\udcc9"+ - "\ud860\udc02\ud844\udc14\ud852\udd8a\ud860\uddbc"+ - "\ud85c\udd0c\ud860\udf65\ud861\udc12\ud868\ude9f"+ - "\ud842\ude50\ud862\uddde\ud861\udd3d\ud84f\uddbb"+ - "\ud84c\ude62\ud868\udc14\ud861\udebc\ud861\udd01"+ - "\ud848\udf25\ud85b\uded7\ud861\udd3c\ud85e\udebe"+ - "\ud861\udd6c\ud861\ude0b\ud861\udf13\ud861\udee6"+ - "\ud862\udd33\ud847\ude89\ud855\uddb9\ud862\udec6"+ - "\ud84f\udc9b\ud862\udf0c\ud855\udddb\ud843\udd31"+ - "\ud862\udee1\ud862\udfeb\ud862\udee2\ud862\udee5"+ - "\ud862\udfec\ud863\udc39\ud862\udfff\ud849\ude7a"+ - "\ud861\uded8\ud844\ude7c\ud84f\ude2e\ud85b\uded5"+ - "\ud862\udee0\ud85b\udcb8\ud840\ude74\ud859\udc10"+ - "\ud864\udcaf\ud864\udce5\ud852\uded1\ud846\udd15"+ - "\ud84c\udf0a\ud852\udee9\ud864\uddd5\ud864\uddeb"+ - "\ud84c\udcb7\ud84c\udcbc\ud855\udc6c\ud865\udc33"+ - "\ud865\udc1d\ud85e\udd7a\ud85c\udd75\ud841\ude30"+ - "\ud850\udd5c\ud855\udf06\ud85b\udd27\ud845\uded3"+ - "\ud852\ude29\ud866\udc57\ud866\udd05\ud855\udf25"+ - "\ud864\udcb1\ud866\udfd5\ud866\udf05\ud861\ude00"+ - "\ud85a\udda8\ud84c\udc7d\ud867\udd3e\ud846\udc63"+ - "\ud850\ude4b\ud867\ude68\ud867\udfb7\ud868\udd92"+ - "\ud868\uddab\ud868\udce1\ud868\udd23\ud868\udddf"+ - "\ud868\udd34\ud848\udd5b\ud868\udd93\ud868\ude20"+ - "\ud846\udd3b\ud868\ude33\ud868\udcb9\ud868\udeb4"+ - "\ud850\udf64\ud863\udc2b\ud85b\udda2\ud864\udc8b"+ - "\ud852\udd75\ud852\uddbb\ud852\uddf8\ud850\udf48"+ - "\ud852\ude51\ud862\udfda\ud846\udcfa\ud862\udd7e"+ - "\ud863\ude36\ud862\ude44\ud862\udd6c\ud851\udcb9"+ - "\ud851\udc73\ud850\udff8\ud845\udfef\ud846\udcbe"+ - "\ud84d\udd99\ud846\udc85\ud855\udc2f\ud845\udff8"+ - "\ud845\udefb\ud846\udc39\ud845\udf74\ud846\udcd1"+ - "\ud857\udf4b\ud845\udec0\ud852\ude25\ud844\udffe"+ - "\ud844\udea8\ud844\udfc6\ud845\udcb6\ud84d\udea6"+ - "\ud852\udd94\ud85c\udd65\ud84f\ude31\ud855\udd5c"+ - "\ud84f\udefb\ud85c\udc52\ud84d\udeee\ud866\udd9d"+ - "\ud85b\udf26\ud846\udd22\ud84d\udf3f\ud850\udce1"+ - "\ud850\udc8b\ud850\udd0f\ud85b\udc21\ud859\udeb1"+ - "\ud843\udfdf\ud842\udfa8\ud843\ude0d\ud862\udf13"+ - "\ud851\udc36\ud841\udc65\ud840\udf7f\ud855\ude51"+ - "\ud840\uddab\ud840\udfcb\ud840\udf0a\ud841\udc14"+ - "\ud840\udec0\ud863\udeb3\ud840\ude75\ud840\ude0c"+ - "\ud852\ude0e\ud84f\ude8a\ud84d\udd95\ud84f\ude39"+ - "\ud84f\udebf\ud846\udc84\ud84f\ude89\ud841\udde0"+ - "\ud841\udca3\ud841\udc92\ud841\udc91\ud862\ude9c"+ - "\ud841\udf0e\ud842\udc73\ud850\udf8c\ud843\udc20"+ - "\ud852\uddac\ud844\udce4\ud843\ude1d\ud852\udebc"+ - "\ud850\udc8d\ud850\udcc9\ud840\udf45\ud842\udfc6"+ - "\ud862\ude46\ud845\udefa\ud845\udf6f\ud845\udf10"+ - "\ud856\udd46\ud846\uddf3\ud846\udc61\ud850\ude95"+ - "\ud857\ude83\ud862\udfd7\ud841\udc13\ud844\udf03"+ - "\ud862\uddfb\ud846\udd96\ud846\udd7c\ud84e\udeee"+ - "\ud846\udd03\ud846\udd04\ud846\udca0\ud845\udefe"+ - "\ud862\ude47\ud847\uddba\ud84d\udc72\ud862\udda8"+ - "\ud846\udd27\ud845\udfab\ud845\udf3b\ud85d\uddfd"+ - "\ud84a\udc60\ud849\ude2b\ud849\uddaf\ud849\uddbe"+ - "\ud864\udc88\ud85b\udf73\ud840\udc3e\ud840\udc46"+ - "\ud849\ude1b\ud84b\udc9b\ud84b\udd07\ud851\uded4"+ - "\ud864\udd4d\ud851\ude65\ud84a\udf6a\ud84a\udf22"+ - "\ud84d\udc50\ud866\udcea\ud84b\ude78\ud869\udc5b"+ - "\ud852\udde3\ud84b\udd67\ud84b\udca1\ud84c\udc8e"+ - "\ud84c\udead\ud852\udd89\ud84c\udeab\ud84c\udee0"+ - "\ud846\udcd9\ud865\udc3f\ud84c\ude89\ud84c\uddb3"+ - "\ud855\udd84\ud862\udf22\ud855\udd8f\ud845\udefc"+ - "\ud855\udd5b\ud855\udc25\ud84c\udd03\ud846\udc2a"+ - "\ud84c\ude34\ud84c\ude0f\ud84c\udd82\ud850\udec9"+ - "\ud85b\udd24\ud85e\udc70\ud847\uddeb\ud84c\uded2"+ - "\ud84c\udee1\ud856\udc72\ud84e\udc3a\ud84d\udfbc"+ - "\ud84d\udfa2\ud84c\udffe\ud851\ude2a\ud84d\udfd5"+ - "\ud851\udc87\ud846\udd12\ud84f\udfc0\ud84f\udc9a"+ - "\ud862\udfea\ud862\udecb\ud860\udc1e\ud862\udddc"+ - "\ud852\uddec\ud84f\udf7f\ud850\udc3c\ud850\udf1a"+ - "\ud850\ude76\ud851\udf8f\ud851\udf25\ud852\udea4"+ - "\ud841\uddeb\ud84f\udef8\ud84d\ude5f\ud852\ude4a"+ - "\ud852\udd17\ud857\udfe1\ud852\udedf\ud863\udc23"+ - "\ud84f\udf35\ud85b\uddea\ud853\udcd9\ud853\udd06"+ - "\ud869\uddc6\ud862\udecc\ud852\uddab\ud852\udd8e"+ - "\ud852\ude4e\ud852\uddc5\ud852\udcf3\ud862\udee3"+ - "\ud846\udc64\ud854\ude21\ud854\udde7\ud84c\ude32"+ - "\ud851\ude97\ud84d\udf81\ud852\udcf0\ud852\udeba"+ - "\ud852\udec7\ud852\ude96\ud858\uddae\ud855\udd81"+ - "\ud85d\udf41\ud855\udee3\ud84f\udefa\ud845\udee6"+ - "\ud843\udd4c\ud852\udd8c\ud840\ude99\ud84f\uddba"+ - "\ud845\udf6e\ud840\uddd4\ud843\udc0d\ud849\udef5"+ - "\ud856\udeaf\ud856\ude9c\ud840\ude5b\ud856\udfc6"+ - "\ud856\udfb3\ud857\udebc\ud857\udea6\ud852\uddf9"+ - "\ud845\udfb0\ud858\ude61\ud858\udd5c\ud85e\udf48"+ - "\ud857\ude82\ud85a\udf75\ud842\udd16\ud840\udc4e"+ - "\ud84d\uddcf\ud859\udc12\ud858\udff8\ud852\udd62"+ - "\ud842\udc2c\ud856\udee9\ud857\udd43\ud857\ude0e"+ - "\ud84d\udc3f\ud852\uddf7\ud859\uddad\ud859\udda0"+ - "\ud85c\udd27\ud85b\udcd1\ud859\udfb4\ud85a\ude42"+ - "\ud85a\ude51\ud85b\udda7\ud85c\ude1b\ud846\udc40"+ - "\ud846\udca1\ud846\udcd8\ud87e\uddbc\ud84f\udd8f"+ - "\ud85d\udc22\ud855\ude83\ud85d\udf85\ud85d\udf84"+ - "\ud862\udff5\ud862\udfd9\ud862\udf9c\ud862\uddf9"+ - "\ud865\udc48\ud850\ude84\ud846\udc45\ud85f\udddc"+ - "\ud853\udc09\ud848\udf21\ud845\udfda\ud852\udd2f"+ - "\ud862\ude4b\ud862\udefc\ud863\udc1d\ud863\udc3b"+ - "\ud863\udd34\ud852\udcff\ud852\ude42\ud850\udfea"+ - "\ud84c\ude25\ud863\udee7\ud863\ude66\ud863\ude65"+ - "\ud852\udded\ud852\ude78\ud84f\udfee\ud864\udcb0"+ - "\ud864\udc93\ud855\udfdf\ud862\udd89\ud863\udc26"+ - "\ud862\udf2f\ud858\udfbe\ud850\ude1b\ud843\udf26"+ - "\ud862\udfc5\ud852\udeb2\ud865\udcda\ud865\uddd7"+ - "\ud862\udf50\ud852\ude67\ud862\udf64\ud862\ude45"+ - "\ud85e\udf06\ud862\udf65\ud856\udcc8\ud866\udcf1"+ - "\ud866\udd48\ud844\udf02\ud852\uddb8\ud845\udce8"+ - "\ud849\udf1f\ud84f\uddb8\ud849\udf81\ud84a\udd6b"+ - "\ud867\ude2d\ud868\uddf5\ud868\udcfe\ud850\udd04"+ - "\ud868\uddb4\ud868\udced\ud868\udcf3\ud866\udd2f"+ - "\ud85b\ude12\ud85b\udfdf\ud85a\udf82\ud85b\udda4"+ - "\ud85b\ude84\ud85b\uddf0\ud85b\ude00\ud84d\udfd7"+ - "\ud858\udc64\ud84d\udd9c\ud84d\ude40\ud852\uddde"+ - "\ud840\udebf\ud855\udd5d\ud845\udf57\ud84c\uddc9"+ - "\ud852\udd41\ud850\uddb5\ud850\uddac\ud85b\udc40"+ - "\ud853\udf97\ud845\udfb5\ud862\ude49\ud851\udc88"+ - "\ud862\uddfc\ud846\udcd6\ud843\udf1d\ud85b\udcc0"+ - "\ud845\udc13\ud850\udefa\ud84b\udc26\ud850\udfc1"+ - "\ud84f\uddb7\ud859\udf41\ud858\udd5b\ud858\udca4"+ - "\ud852\uddb9\ud852\udd8b\ud862\uddfa\ud862\udf63"+ - "\ud846\udc9f\ud852\udeb3\ud852\ude3e\ud852\ude94"+ - "\ud845\udfd9\ud852\ude66\ud840\udfa7\ud845\udc24"+ - "\ud852\udde5\ud852\udd16\ud852\udd76\ud841\udcfe"+ - "\ud862\udece\ud862\ude16\ud862\udfe7\ud855\uddd5"+ - "\ud862\ude82\ud852\udd43\ud843\udcff\ud841\ude1a"+ - "\ud842\udfeb\ud843\udcb8\ud845\udffa\ud845\udec2"+ - "\ud852\ude50\ud846\udc52\ud862\udec0\ud852\uddad"+ - "\ud846\udcbf\ud846\udc83\ud85d\udc84\ud84f\udd5b"+ - "\ud862\ude81\ud846\udc62\ud842\udeb4\ud844\udf9c"+ - "\ud860\ude18\ud864\udce4\ud85f\ude4f\ud84f\udfed"+ - "\ud84f\ude2d\ud840\udff5\ud863\udc1c\ud85a\udfc0"+ - "\ud845\udc52\ud850\udf62\ud852\ude71\ud84b\udfe3"+ - "\ud844\udeb0\ud848\udfbd\ud844\udf98\ud84d\udce5"+ - "\ud85e\udff4\ud84d\udedf\ud862\ude83\ud84d\udfd6"+ - "\ud84c\udffa\ud853\udc9f\ud84d\udead\ud85b\udcb7"+ - "\ud85b\udd26\ud85b\udd51\ud85b\udc82\ud85b\udfde"+ - "\ud85c\udd09\ud845\udf3a\ud85b\udc80\ud85c\udc53"+ - "\ud845\udfdb\ud845\udfb3\ud846\udd05\ud850\uddfc"+ - "\ud845\udf3c\ud850\udea5\ud850\ude93\ud84f\udef9"+ - "\ud85d\udf36\ud851\udc5b\ud850\udeca\ud850\ude59"+ - "\ud862\udde1\ud85b\udd28\ud851\udcce\ud85f\ude4d"+ - "\ud850\udfbd\ud850\ude56\ud844\udf04\ud850\udfe9"+ - "\ud87e\udc25\ud852\ude4f\ud852\ude5d\ud845\udfdf"+ - "\ud84e\udefa\ud84c\udf00\ud840\ude14\ud842\udcd5"+ - "\ud841\ude19\ud847\udf9e\ud868\udeb6\ud864\udd5b"+ - "\ud862\ude59\ud865\udc20\ud85e\udef4\ud855\udef6"+ - "\ud85e\udf18\ud852\udcf2\ud853\udf5c\ud855\udd35"+ - "\ud843\udccf\ud85e\udd67\ud846\udfc2\ud840\udc94"+ - "\ud840\udeb7\ud840\udfa0\ud841\udcd7\ud841\uddd5"+ - "\ud841\ude15\ud841\ude76\ud845\udeba\ud842\udec2"+ - "\ud842\udecd\ud842\udfbf\ud87e\udc3b\ud842\udfcb"+ - "\ud842\udffb\ud843\udc3b\ud843\udc53\ud843\udc65"+ - "\ud843\udc7c\ud843\udc8d\ud843\udcb5\ud843\udcdd"+ - "\ud843\udced\ud843\udd6f\ud843\uddb2\ud843\uddc8"+ - "\ud843\ude04\ud843\ude0e\ud843\uded7\ud843\udf90"+ - "\ud843\udf2d\ud843\ude73\ud843\udfbc\ud844\udc5c"+ - "\ud844\udc4f\ud844\udc76\ud844\udc7b\ud844\udc88"+ - "\ud844\udc96\ud844\udcbf\ud844\udcd3\ud844\udd2f"+ - "\ud844\udd3b\ud844\udee3\ud844\udf75\ud844\udf36"+ - "\ud845\udd77\ud845\ude19\ud845\udfc3\ud845\udfc7"+ - "\ud846\udc2d\ud846\udd6a\ud846\ude2d\ud846\ude45"+ - "\ud847\udc2a\ud847\udc70\ud847\udcac\ud847\udec8"+ - "\ud847\uded5\ud847\udf15\ud848\udc45\ud848\ude7c"+ - "\ud848\udfd7\ud848\udffa\ud849\udf2a\ud84a\udc71"+ - "\ud84a\udd4f\ud84a\udd67\ud84a\udd93\ud84a\uded5"+ - "\ud84a\udee8\ud84a\udf0e\ud84a\udf3f\ud84b\udc4c"+ - "\ud84b\udc88\ud84b\udcb7\ud856\udfe8\ud84b\udd08"+ - "\ud84b\udd12\ud84b\uddb7\ud84b\udd95\ud84b\ude42"+ - "\ud84b\udf74\ud84b\udfcc\ud84c\udc33\ud84c\udc66"+ - "\ud84c\udf1f\ud84c\udfde\ud85e\ude79\ud84d\udd67"+ - "\ud84d\uddf3\ud852\uddba\ud84d\ude1a\ud84d\udf16"+ - "\ud840\udf46\ud84e\udea7\ud85d\ude57\ud857\udfe2"+ - "\ud84f\ude11\ud84f\udeb9\ud85d\uddfe\ud848\udc9a"+ - "\ud850\udd19\ud862\ude9a\ud850\udeee\ud850\udf0d"+ - "\ud850\udc3b\ud850\udf34\ud850\udf96\ud852\ude45"+ - "\ud841\uddca\ud841\ude11\ud847\udea8\ud84f\udcff"+ - "\ud851\udc04\ud851\udcd6\ud851\ude74\ud851\udf2f"+ - "\ud861\udde8\ud866\uddc9\ud848\uddc3\ud862\udf4e"+ - "\ud852\udc12\ud852\udcfb\ud852\ude15\ud852\udec0"+ - "\ud843\udc78\ud853\udea5\ud853\udf86\ud841\udf79"+ - "\ud854\udc2c\ud854\ude99\ud855\udc19\ud84f\udf4a"+ - "\ud852\udea7\ud855\udc46\ud855\udc6e\ud85a\udf52"+ - "\ud855\udd3f\ud85d\ude32\ud855\udd5e\ud855\udd62"+ - "\ud855\udd66\ud855\udfc7\ud852\udd3f\ud856\udc5d"+ - "\ud84c\udfcc\ud856\udd03\ud862\udd48\ud856\udeae"+ - "\ud856\udf89\ud857\udc06\ud847\udd90\ud858\udd02"+ - "\ud85f\udc12\ud858\uddb2\ud853\udf9a\ud859\udc02"+ - "\ud859\udc4a\ud85a\udff7\ud859\udc84\ud846\udd1c"+ - "\ud852\uddf6\ud859\udc88\ud84f\udfef\ud859\udd12"+ - "\ud859\uddbf\ud859\udeb5\ud849\udf1b\ud855\udfe1"+ - "\ud87e\udccd\ud851\udd21\ud859\udefc\ud852\udd34"+ - "\ud85b\udcbd\ud859\udf99\ud85a\udc6e\ud859\udc11"+ - "\ud85a\udc5e\ud85a\udcc7\ud864\udcc0\ud842\ude11"+ - "\ud85a\udd26\ud85a\udd39\ud85a\uddfa\ud85a\ude2d"+ - "\ud859\udc69\ud840\udc21\ud85a\ude34\ud85a\udf5b"+ - "\ud84d\udd19\ud85a\udf9d\ud85b\udca4\ud85b\uddae"+ - "\ud849\udd8d\ud85c\udc4b\ud85c\uddcd\ud85c\ude80"+ - "\ud85c\ude85\ud848\udd7a\ud85c\ude8b\ud85c\udee6"+ - "\ud852\uddd0\ud85d\udc50\ud843\udef8\ud84a\udd26"+ - "\ud861\udc73\ud845\udfb1\ud852\ude2a\ud846\udc20"+ - "\ud867\udcad\ud866\udca4\ud85d\udfcc\ud85e\udc58"+ - "\ud845\ude0a\ud84d\udf2f\ud860\udce8\ud844\udfc5"+ - "\ud85e\udddd\ud864\udda8\ud85c\udcaf\ud862\uddab"+ - "\ud85e\uddfd\ud85e\ude0a\ud85e\udf0b\ud85f\udd66"+ - "\ud850\udd7a\ud860\udc09\ud868\udedf\ud860\udf18"+ - "\ud85b\ude07\ud860\udd6f\ud860\udc23\ud85a\uddb5"+ - "\ud844\udfed\ud84c\ude2f\ud860\udc48\ud863\udc30"+ - "\ud860\udc83\ud862\udd49\ud852\udd88\ud852\udea5"+ - "\ud84f\udf81\ud860\udc90\ud860\udcf4\ud860\udd2e"+ - "\ud847\udfa1\ud860\udd4f\ud860\udd89\ud860\uddaf"+ - "\ud860\ude1a\ud860\udf06\ud860\udf2f\ud860\udf8a"+ - "\ud861\udc68\ud861\udeaa\ud862\udd56\ud862\uddb8"+ - "\ud862\udde7\ud862\udde8\ud862\udf46\ud862\udfd4"+ - "\ud863\udc09\ud863\udfc5\ud864\udcec\ud864\udd10"+ - "\ud864\udd3c\ud864\udd5e\ud852\udeca\ud865\udce7"+ - "\ud865\udde9\ud865\uddb0\ud865\uddb8\ud865\udf32"+ - "\ud866\udcd1\ud866\udd49\ud866\udd6a\ud866\uddc3"+ - "\ud866\ude28\ud866\udf0e\ud867\udd5a\ud867\udd9b"+ - "\ud867\udef8\ud867\udf23\ud868\ude93\ud868\udeff"+ - "\ud869\uddcb\ud843\udc9c\ud849\udcb0\ud852\ude93"+ - "\ud862\udf2c\ud85e\udc9d\ud845\udff5\ud860\udc24"+ - "\ud862\udf6c\ud862\udf99\ud85e\ude3e\ud859\udeaf"+ - "\ud85d\ude55\ud84f\udcb7\ud855\ude35\ud856\udd56"+ - "\ud857\ude81\ud858\ude58\ud843\ude6d\ud84f\ude88"+ - "\ud853\udc9e\ud845\udff6\ud846\udc7b\ud857\udc4a"+ - "\ud854\udf11\ud867\udd98\ud857\uded8\ud84f\udd40"+ - "\ud843\udfea\ud843\udd49\ud84d\udeba\ud843\ude9d"+ - "\ud860\udee2\ud843\udc41\ud843\udc96\ud854\udd48"+ - "\ud843\ude76\ud84b\udc62\ud843\udea2\ud844\udc75"+ - "\ud84a\udf43\ud84b\udeb3\ud843\udda7\ud85a\udc8a"+ - "\ud844\udcc1\ud851\udf06\ud85a\udc93\ud849\udef4"+ - "\ud85f\udd2f\ud850\udda3\ud85f\udd73\ud85b\uded0"+ - "\ud85c\udeb6\ud844\uddd9\ud84f\udcfc\ud869\udea9"+ - "\ud843\udeac\ud843\udef9\ud847\udca2\ud853\udfc2"+ - "\ud85f\udff9\ud843\udfeb\ud84b\udda0\ud851\udfe0"+ - "\ud867\udd7c\ud843\udfec\ud843\ude0a\ud85d\udda3"+ - "\ud843\udfed\ud858\udc48\ud844\udd87\ud851\ude18"+ - "\ud852\udf6e\ud856\ude95\ud842\udd79\ud849\udc65"+ - "\ud867\udeac\ud84f\udcfe\ud867\udf30\ud853\udfa9"+ - "\ud865\udd9e\ud867\udfde\ud84f\uddb6\ud85c\udeb2"+ - "\ud859\udfb3\ud84d\udf20\ud84f\udef7\ud84f\ude2c"+ - "\ud841\udc8e\ud843\udeb6\ud869\udc34\ud84c\udcda"+ - "\ud850\udff2\ud844\udea9\ud852\udd63\ud867\ude06"+ - "\ud85c\udcae\ud845\udf6c\ud865\udcd0\ud858\udf35"+ - "\ud85c\udd64\ud843\udd28\ud85b\udd22\ud852\udee2"+ - "\ud843\udd71\ud847\udf0f\ud847\uddd1\ud852\udd3e"+ - "\ud845\udf6d\ud863\ude97\ud85b\udd23\ud840\udffc"+ - "\ud857\udc21\ud84f\udcfd\ud852\udd19\ud843\udcd4"+ - "\ud840\uddf2\ud869\ude4a\ud860\udf7d\ud852\ude77"+ - "\ud862\ude5a\ud868\udeb2\ud87e\udc40\ud852\udebb"+ - "\ud846\udc3b\ud85b\ude05\ud849\udd1b\ud858\udd59"+ - "\ud84c\udff5\ud862\udfc2\ud863\ude39\ud847\udd46"+ - "\ud843\udf3b\ud857\udf1a\ud85d\udc86\ud859\udfcc"+ - "\ud85b\uded1\ud850\udc11\ud862\udf2d\ud84f\udcc7"+ - "\ud857\uded7\ud85d\ude56\ud855\udd31\ud846\udd44"+ - "\ud844\udefe\ud866\udd03\ud85b\udddc\ud85c\udcad"+ - "\ud858\uddad\ud862\ude0f\ud84d\ude77\ud840\udcee"+ - "\ud85a\udc46\ud853\udf0e\ud858\udf4c\ud858\ude6b"+ - "\ud840\udccc\ud840\udc8a\ud85d\ude07\ud841\udd47"+ - "\ud841\udddf\ud84f\udfc5\ud852\udd42\ud862\udde4"+ - "\ud846\udddb\ud84f\udcc8\ud852\udd33\ud862\uddaa"+ - "\ud840\udea0\ud85a\udfb3\ud844\udf05\ud849\udced"+ - "\ud85b\udd29\ud85e\ude84\ud84d\ude00\ud852\udeb1"+ - "\ud849\udd13\ud840\udf7e\ud840\udf80\ud840\udf47"+ - "\ud841\udc1f\ud852\udda4\ud841\udc87\ud84c\udfb4"+ - "\ud842\udfff\ud848\udcfc\ud840\udee5\ud849\udd30"+ - "\ud841\udd8e\ud84c\ude33\ud846\udd83\ud841\uddb3"+ - "\ud84f\udc99\ud852\udea6\ud84d\udf2d\ud85a\udf13"+ - "\ud862\udede\ud84f\udf80\ud842\udd54\ud84f\udfec"+ - "\ud842\udfe2\ud845\udf26\ud845\udee8\ud861\udeab"+ - "\ud845\udd96\ud845\ude13\ud862\ude9b\ud855\udf72"+ - "\ud842\udf8f\ud84f\udfeb\ud84b\udda3\ud843\udc77"+ - "\ud85a\udf53\ud843\udd74\ud845\udf0d\ud843\udedd"+ - "\ud843\udd4d\ud862\uddbc\ud849\ude98\ud846\udcd7"+ - "\ud850\udc3a\ud851\udc35\ud844\udcb4\ud84c\ude8a"+ - "\ud862\udf66\ud844\ude4f\ud850\udda5\ud85b\udc7e"+ - "\ud845\udc16\ud845\udc54\ud850\udf63\ud852\udff5"+ - "\ud844\ude3c\ud868\udd50\ud850\ude78\ud845\ude3e"+ - "\ud845\ude92\ud843\udd4e\ud85b\udc81\ud85b\udd2a"+ - "\ud845\udfdc\ud845\udffb\ud845\udfb2\ud85b\udda6"+ - "\ud846\udc28\ud845\uded5\ud85b\ude45\ud852\udda9"+ - "\ud85b\udfa1\ud849\udd54\ud846\udd11\ud845\udeb8"+ - "\ud85e\ude0e\ud840\ude04\ud846\ude34\ud856\uddcc"+ - "\ud841\udda5\ud846\udf44\ud847\udca5\ud85a\udf28"+ - "\ud847\uddf9\ud847\ude37\ud847\udea4\ud852\udd01"+ - "\ud848\udc49\ud848\udd73\ud851\udcbc\ud843\udcd3"+ - "\ud845\udf71\ud861\udc82\ud840\uddc1\ud87e\udc94"+ - "\ud844\udf3a\ud85a\udc88\ud848\udfd0\ud849\udc71"+ - "\ud85b\ude6e\ud862\ude36\ud854\ude50\ud847\udf6a"+ - "\ud85c\udcf8\ud849\ude68\ud840\ude9e\ud862\ude29"+ - "\ud846\udc77\ud849\udfb4\ud852\udd82\ud852\udd8f"+ - "\ud85e\ude53\ud87e\udca6\ud85b\uded2\ud841\ude56"+ - "\ud84f\udfb7\ud84a\udc5f\ud862\udf9d\ud866\udd5d"+ - "\ud84a\udd80\ud84a\udcc1\ud840\udd18\ud845\udf70"+ - "\ud84b\ude0d\ud852\udddf\ud844\udf8e\ud845\udffc"+ - "\ud84b\ude36\ud850\udc8c\ud855\udf1d\ud852\ude28"+ - "\ud852\ude23\ud84c\udc7e\ud852\udd40\ud846\udc29"+ - "\ud84d\udc00\ud84c\uddf7\ud84c\uddf8\ud84c\udda4"+ - "\ud84c\udda5\ud843\ude75\ud854\udde6\ud847\ude3d"+ - "\ud84c\ude31\ud861\uddf4\ud84c\uddc8\ud854\udf13"+ - "\ud84a\udcf7\ud850\udf9c\ud852\ude21\ud84d\udfc2"+ - "\ud850\uddcd\ud864\udced\ud84c\udfe6\ud85b\udda0"+ - "\ud84d\udc6f\ud862\udedf\ud84d\uddcd\ud84d\ude3c"+ - "\ud862\ude4a\ud840\udfc9\ud84d\ude59\ud848\udd2a"+ - "\ud84d\udf03\ud864\udd9c\ud842\udd23\ud849\udfcd"+ - "\ud84e\udedb\ud840\udfb5\ud846\udd58\ud84e\udf5a"+ - "\ud84f\udefc\ud849\udc8b\ud852\udcf1\ud85a\udf51"+ - "\ud84f\uddbc\ud84f\uddbd\ud850\udda4\ud852\udd0c"+ - "\ud852\udd00\ud84f\udcc9\ud843\udd32\ud84c\uddf9"+ - "\ud849\udc91\ud85b\udd25\ud85b\udda1\ud85b\uddeb"+ - "\ud852\udd7f\ud850\udc85\ud85b\ude72\ud85b\udf74"+ - "\ud862\udf21\ud84f\ude2f\ud84f\udf82\ud84c\udc4b"+ - "\ud84f\ude30\ud845\udc97\ud850\udc3d\ud864\udd70"+ - "\ud850\udd44\ud850\udc91\ud850\udd55\ud850\udc39"+ - "\ud84f\udff0\ud84f\udfb4\ud850\udd3f\ud850\udd56"+ - "\ud850\udd57\ud850\udd40\ud858\udddd\ud850\ude77"+ - "\ud850\udf65\ud850\udec1\ud851\udc5a\ud852\ude27"+ - "\ud852\ude22\ud862\udfe8\ud855\ude05\ud852\udd74"+ - "\ud84c\udc44\ud852\udc23\ud862\udc2b\ud862\udc04"+ - "\ud843\udc3a\ud85a\ude2e\ud850\udde2\ud845\udee7"+ - "\ud852\ude24\ud852\uddb7\ud852\udd8d\ud852\uddfb"+ - "\ud852\ude26\ud841\uddc3\ud84a\udcad\ud863\udeb2"+ - "\ud852\ude8c\ud850\udd5f\ud852\ude79\ud862\udf8f"+ - "\ud863\udc03\ud846\udc9e\ud846\udd88\ud863\uded9"+ - "\ud846\ude4b\ud863\udeac\ud853\udf82\ud853\udd13"+ - "\ud858\udff5\ud85a\udd11\ud85a\udd0e\ud85b\udf9f"+ - "\ud854\udc9d\ud854\udd7d\ud847\ude1c\ud854\ude20"+ - "\ud84c\udeac\ud862\udd64\ud862\udd68\ud845\udec1"+ - "\ud844\udf76\ud852\ude12\ud855\udde0\ud85d\ude0c"+ - "\ud862\udf2b\ud858\udc83\ud849\ude1c\ud856\udc57"+ - "\ud85e\udf39\ud85c\udd26\ud864\udd0d"; - - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2 - }; - } - - protected static class Encoder extends DoubleByteEncoder { - - private byte[] encoded = new byte[2]; - - public Encoder(Charset cs) { - super(cs, - index1, - index2); - } - - protected byte[] encodeSurrogate(char high, char low) { - int index = searchTabSurr(high, low, unicodeSearchTab); - - if (index >= 0) { - int val = (int)nativeSupplementary.charAt(index / 2); - - encoded[0] = (byte)((val & 0x0000ff00)>>8); - encoded[1] = (byte) (val & 0xff); - return encoded; - } else { - // Surrogate pair cannot be mapped - return null; - } - } - - /** - * Perform a binary search within the sorted array of - * surrogate values to locate the position of the native - * two byte value equivalent encoded using Shift_JIS encoding - * scheme - */ - protected int searchTabSurr(char code1, char code2, String table) { - int i = 0, l, h; - for (l = 0, h = table.length() - 2; l < h; ) { - if (table.charAt(l) == code1 && table.charAt(l+1) == code2) { - i = l; - break; - } - if (table.charAt(h) == code1 && table.charAt(h+1) == code2) { - i = h; - break; - } - i = (l + h) / 2; - i = (i%2 != 0)? i - 1 : i; - - if (table.charAt(i) == code1 && table.charAt(i+1) == code2) - break; - - int sum = (int)(table.charAt(i+2) - 0xd800) * 0x400 - + (int)(table.charAt(i+3) - 0xdc00) + 0x10000; - int sum2 = (int)(code1 - 0xd800) * 0x400 - + (int)(code2 - 0xdc00) + 0x10000; - if (sum == sum2) - return (i + 2); - - if (sum < sum2) - l = i + 2; - else - h = i - 2; - } - if (code1 == table.charAt(i) && code2 == table.charAt(i+1)) { - return i; - } else { - return -1; - } - } - private final static String innerIndex0= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8859\u8857\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u885D\u885B\u8866\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8861\u885F\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u886A\u8868\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u886F\u886D\u88A7\u0000\u8873\u8871\u0000\u0000"+ - "\u0000\u0000\u8877\u8875\u0000\u0000\u0000\u0000"+ - "\uC8FB\u887B\u8879\u0000\u88A2\u0000\u0000\u0000"+ - "\u8856\u8867\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u885A\u886C\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u885C\u886E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8870\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8FC\u885E\u8874\u0000\u0000"+ - "\u0000\u0000\u0000\uC8FA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8878\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8858\u8869\u0000"+ - "\u8872\u8860\u8876\u0000\u887A\u0000\u887C\u0000"+ - "\u887D\u0000\u887E\u0000\u88A1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8F6\u886B\u0000\u0000\uC8F8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8F7\u0000\u0000\u0000\u0000"+ - "\u0000\u88A8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8FE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8F9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8F5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8FD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6D9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC7F9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC7F3\uC7F4\uC7F5\uC7F6\uC7F7\uC7F8\uC7FA\uC7FB"+ - "\uC7FC\uC7FD\uC7FE\uC840\uC841\uC842\uC843\uC844"+ - "\uC845\uC846\uC847\uC848\uC849\uC84A\uC84B\uC84C"+ - "\uC84D\uC84E\uC84F\uC850\uC851\uC852\uC853\uC854"+ - "\uC855\uC856\uC857\uC858\uC859\uC85A\uC85C\uC85D"+ - "\uC85E\uC85F\uC860\uC861\uC862\uC863\uC864\uC865"+ - "\uC866\uC867\uC868\uC869\uC86A\uC86B\uC86C\uC86D"+ - "\uC86E\uC86F\uC870\uC871\uC872\uC873\uC874\uC875"+ - "\u0000\uC85B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8863\u88A4"+ - "\u8865\u88A6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8D2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC8D3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6B5\uC6B6\uC6B7\uC6B8\uC6B9\uC6BA\uC6BB\uC6BC"+ - "\uC6BD\uC6BE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC877\uC878\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC876"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC6A1\uC6A2\uC6A3\uC6A4\uC6A5\uC6A6\uC6A7\uC6A8"+ - "\uC6A9\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC6AB\uC6AC\uC6AD\uC6AE"+ - "\uC6AF\uC6B0\uC6B1\uC6B2\uC6B3\uC6B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uF9F9\uF9F8\uF9E6\uF9EF\uF9DD\uF9E8\uF9F1\uF9DF"+ - "\uF9EC\uF9F5\uF9E3\uF9EE\uF9F7\uF9E5\uF9E9\uF9F2"+ - "\uF9E0\uF9EB\uF9F4\uF9E2\uF9E7\uF9F0\uF9DE\uF9ED"+ - "\uF9F6\uF9E4\uF9EA\uF9F3\uF9E1\uF9FA\uF9FB\uF9FD"+ - "\uF9FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6E6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8D6\u0000\u0000\u0000\uC8D7\u0000\uC8D8\uC8D9"+ - "\uC8DA\u0000\uC8DB\u0000\uC8DC\uC8DD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8DE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uC8DF\uC8E0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC8E1\u0000\uC8E2"+ - "\u0000\u0000\uC8E3\u0000\uC8E4\u0000\uC8E5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E6\u0000"+ - "\u0000\u0000\u0000\u0000\uC8E7\u0000\uC8E8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8E9\u0000"+ - "\u0000\u0000\uC8EA\u0000\uC8EB\uC8EC\u0000\uC8ED"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8EE\uC8EF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC8F0\u0000"+ - "\u0000\u0000\u0000\uC8F1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC6CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6E0\uC6E1\uC6E2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC6E7\uC6E8\uC6E9\uC6EA\uC6EB\uC6EC\uC6ED"+ - "\uC6EE\uC6EF\uC6F0\uC6F1\uC6F2\uC6F3\uC6F4\uC6F5"+ - "\uC6F6\uC6F7\uC6F8\uC6F9\uC6FA\uC6FB\uC6FC\uC6FD"+ - "\uC6FE\uC740\uC741\uC742\uC743\uC744\uC745\uC746"+ - "\uC747\uC748\uC749\uC74A\uC74B\uC74C\uC74D\uC74E"+ - "\uC74F\uC750\uC751\uC752\uC753\uC754\uC755\uC756"+ - "\uC757\uC758\uC759\uC75A\uC75B\uC75C\uC75D\uC75E"+ - "\uC75F\uC760\uC761\uC762\uC763\uC764\uC765\uC766"+ - "\uC767\uC768\uC769\uC76A\uC76B\uC76C\uC76D\uC76E"+ - "\uC76F\uC770\uC771\uC772\uC773\uC774\uC775\uC776"+ - "\uC777\uC778\uC779\uC77A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC8D4\uC8D5\uC6DC\uC6DD\u0000"+ - "\u0000\uC77B\uC77C\uC77D\uC77E\uC7A1\uC7A2\uC7A3"+ - "\uC7A4\uC7A5\uC7A6\uC7A7\uC7A8\uC7A9\uC7AA\uC7AB"+ - "\uC7AC\uC7AD\uC7AE\uC7AF\uC7B0\uC7B1\uC7B2\uC7B3"+ - "\uC7B4\uC7B5\uC7B6\uC7B7\uC7B8\uC7B9\uC7BA\uC7BB"+ - "\uC7BC\uC7BD\uC7BE\uC7BF\uC7C0\uC7C1\uC7C2\uC7C3"+ - "\uC7C4\uC7C5\uC7C6\uC7C7\uC7C8\uC7C9\uC7CA\uC7CB"+ - "\uC7CC\uC7CD\uC7CE\uC7CF\uC7D0\uC7D1\uC7D2\uC7D3"+ - "\uC7D4\uC7D5\uC7D6\uC7D7\uC7D8\uC7D9\uC7DA\uC7DB"+ - "\uC7DC\uC7DD\uC7DE\uC7DF\uC7E0\uC7E1\uC7E2\uC7E3"+ - "\uC7E4\uC7E5\uC7E6\uC7E7\uC7E8\uC7E9\uC7EA\uC7EB"+ - "\uC7EC\uC7ED\uC7EE\uC7EF\uC7F0\uC7F1\uC7F2\u0000"+ - "\u0000\u0000\u0000\u0000\uC6E3\uC6DA\uC6DB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC8D1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9277\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89D5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93CD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9BDF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFA68\u0000\u0000\u89DA\u8F59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89DB\u0000\u0000\u8F5D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89DC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8ADA\u0000\u0000\u0000"+ - "\u0000\u8BDC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u97DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E53"+ - "\u0000\u0000\u0000\u0000\u9DAA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9BEA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A6E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8BC8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89E8\u0000\u89EA\u0000\u0000\u0000\u0000"+ - "\u0000\u8C4B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB70\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89ED\u0000\u0000"+ - "\u94DD\u0000\u89EE\u0000\u0000\u0000\u0000\u9EB4"+ - "\u8AD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92DB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94DB"+ - "\u89F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB7A\u0000\u0000\u0000\u89FB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EFC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FC"+ - "\u0000\u89BF\u0000\u0000\u0000\u89FE\u0000\u89E6"+ - "\u0000\u0000\u9D46\u0000\u0000\u0000\u9DEE\u0000"+ - "\u0000\u0000\uA07E\u0000\u0000\u0000\uA068\u0000"+ - "\u0000\u0000\u0000\u98E9\u0000\u8B68\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFD\u8BBE\u9FD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AEB\u0000\u0000\u9FD7\u0000"; - - private final static String innerIndex1= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8B6A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9C5C\u0000\u8BB1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB5E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DF3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0D0\u0000\u0000"+ - "\u0000\uFC66\u0000\u0000\u0000\u0000\u92E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AEC"+ - "\u8FAB\uFA48\u0000\u0000\u0000\u0000\u8E45\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C6F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EDE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89EF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96E9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EBB\u0000\u0000"+ - "\u0000\u0000\u94DE\u0000\u9EB8\u0000\u0000\u0000"+ - "\u97BA\uFB65\u0000\u0000\u0000\u95D6\u0000\u0000"+ - "\u0000\u9CBB\u0000\u0000\u97DA\u0000\u0000\u0000"+ - "\u0000\u8F45\u0000\uFB7D\u9158\uFE64\u0000\u9856"+ - "\u9B4D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u935B\u95C7\u0000\u97E7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9359\u0000\u0000"+ - "\u0000\u91F5\u97B8\u0000\u0000\uFDA2\uFBB6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92FA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9357\u0000\u8BA6\u0000\u0000\u0000\u0000"+ - "\uFBB9\u0000\u97B0\u0000\u0000\uFDC4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9CA1\u0000\u0000\u0000"+ - "\u0000\u0000\u91F2\u91F9\u0000\u8FF1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9745\u9853\u0000\u0000"+ - "\uFE78\u0000\uFBC1\u9251\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DAD\u0000\u0000\u0000\u0000\u0000"+ - "\uFD6C\u0000\u0000\uFA6B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9BC2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A7B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B60"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u934B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9ABD\u0000\u0000\u0000\u0000\u91B7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95B4\u0000\u0000\u0000\u0000\u0000"+ - "\uFEC5\u0000\u0000\u9EF0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D64"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9269\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBEA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF\u0000"+ - "\u8D68\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93EB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9166\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000"+ - "\u0000\u93DD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BCC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D6E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96A8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCA6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D6F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFC64\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8D74\u97C3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AD0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9274\u0000\u9BBE\u0000\u0000\u0000\u0000"+ - "\u0000\u9CC8\u0000\u0000\u9CBA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EB9\u0000\u0000\u0000"+ - "\u0000\u0000\u955A\u0000\u0000\u91B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A48\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7D\u0000\u0000\u8A7D\u0000\u0000\u8AC2\u0000"+ - "\u0000\uFD4A\u0000\u8DA1\u0000\u0000\u8AD1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCB4"+ - "\u8B47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93A4\u9EDA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A51\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DA6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EC5\u0000\u0000\u0000\u0000\uFCC4"+ - "\u0000\u0000\u0000\u0000\uA078\u0000\u94B5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC2\u8A6B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAE8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DAD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC49\u0000"+ - "\u93C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u906F\u0000\u8DB0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u947E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90FA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9479\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DB2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCEE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u997B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DB4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DB7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DBB\u8DBA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DBC\u9044\u0000\u0000\u0000"+ - "\uFD4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93E4\u0000"+ - "\u0000\u93E0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DC3\u0000\u9BB8\u0000"+ - "\u0000\u0000\uFBF0\u0000\u93E9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93F6"+ - "\u0000\u0000\u0000\u0000\u0000\u8DC5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DCA\u0000\u0000\u0000"+ - "\u0000\u0000\u8DCC\uFD5D\u93B5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD61\u0000\u0000"+ - "\u0000\u9CF8\u0000\u0000\u0000\u9252\u0000\u0000"+ - "\uA0E8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9CA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C56\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DD6\u0000\u97C0\u0000\u0000"+ - "\u0000\uA0DE\u0000\u0000\u0000\u0000\u97D2\u0000"+ - "\u0000\u0000\u0000\u0000\uFAA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDA3\u0000\u0000\u0000\u8DDB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u91B5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFD49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDD1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEB\u0000"+ - "\u0000\u0000\u0000\u0000\u97C6\u0000\uFDCE\u0000"+ - "\u0000\u90FC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFC59"+ - "\u0000\u0000\u96D6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97C5\u8DEF\u0000\u0000\u0000\u0000\u97D7"+ - "\u0000\u0000\u0000\u0000\u0000\u8DF0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96A6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBBF\u0000\u0000"+ - "\u0000\u0000\u8DF3\u0000\u0000\u0000\u0000\u9449"+ - "\u0000\u8DF5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9872\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E6B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAFD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F50"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DCC\uFC65"+ - "\u0000\u8C44\u0000\u0000\u996E\u94A1\u0000\u0000"+ - "\u0000\u0000\u0000\u8F63\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0DA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9253"+ - "\uFDE9\u0000\u0000\u9DB5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9879\u0000\u0000\u0000\u9D5D"+ - "\u0000\u0000\u0000\u0000\u8D63\u9669\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC6A\u0000\u0000\u8AC7\u0000\u0000\u0000\u0000"+ - "\u89D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE4D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EDD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEFB\u98BC\uFACC\u0000\u0000\u95B0\u0000\u0000"+ - "\u0000\u9464\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u936F\u0000\u0000\u0000\u0000\u0000\u0000\u94B9"+ - "\u0000\u0000\u95EC\u0000\u0000\u0000\u0000\u91EE"+ - "\u0000\u0000\u98C3\u0000\u95F6\u0000\u0000\u0000"+ - "\u8FFD\u98C5\u0000\u0000\u0000\u0000\u9766\uFE6E"+ - "\u0000\u0000\u97DD\u8CAA\u0000\u0000\u92D2\u0000"+ - "\u0000\u9761\u98CB\u0000\u0000\u0000\u0000\u95F0"+ - "\u0000\u975D\u0000\u91E3\u0000\u0000\u0000\u0000"+ - "\u98CC\u0000\u0000\u9469\u98CD\u0000\u0000\u0000"+ - "\u0000\u0000\u98CE\u0000\u95FC\u0000\u0000\u94A3"+ - "\u9662\u0000\u0000\u0000\uFEB6\u0000\u9463\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98D0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98D1\u0000\u0000\u0000\u0000"+ - "\u9475\uFAE0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98D6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AF0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98DB"+ - "\u0000\u0000\u0000\u0000\u98DD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98A8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A6D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8AFB\u8AAE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBC9\u0000\u0000\u0000"+ - "\u0000\u8C5D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98E4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98E8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8A4D\u0000\u0000\u0000\u9257"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95DF\u0000\u0000\uA0AC\u0000\u0000"+ - "\u0000\u0000\u98EB\u0000\u0000\u0000\u0000\u98EC"+ - "\u0000\u8CC3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AB8\u0000\u0000\u0000\u9EE7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u94BC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD1\u0000\u0000\u0000\u0000\u0000\u0000\u9CC6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98FE\uFDE8\u0000\u0000\u0000"+ - "\u0000\u9940\u0000\u0000\u0000\u0000\u94C9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94D3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9946"+ - "\u0000\u0000\u0000\u0000\u90C0\u0000\u94D1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9573"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9948\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u994B\u0000\u0000\u0000"+ - "\u0000\u0000\u8E55\u0000\u0000\u0000\u0000\u994E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EFE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8E59"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94EC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94EF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C60\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F74\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9955\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9544\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8CCB\u0000"+ - "\u0000\u0000\u9956\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9959\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u995B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8CC4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFA45\u0000\u0000"+ - "\u0000\u90B7\u0000\u0000\u9743\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95CD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u97C9\uFD50\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EB9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95C6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8A76\u0000\u0000\u0000\u0000\u0000\u9D51"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9973\u0000\u0000"+ - "\u0000\u0000\u9D4F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u997A\u9564\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99A1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8EED\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99AD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946E"+ - "\u8F70\u0000\uFAD0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99B3\u0000\u0000\u0000\u0000\u0000\u0000\uA053"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u965C\u0000\u0000\u0000\u0000\uFD7A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97FE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92BD\u0000\u97FD"+ - "\u0000\u0000\u0000\u0000\u8F64\u0000\u0000\u0000"+ - "\u0000\uFCF7\u9562\u97CD\u9E64\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u924C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EC9\u99BC\u0000\u0000\u0000"+ - "\u0000\u9DA5\u0000\u8F54\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8F7C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EA2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97AE\u0000"+ - "\u0000\u0000\u0000\u96C8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99C3\u0000\u90D6\u0000\u9CBE"+ - "\u0000\u0000\u0000\u8F76\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9470\uFB4B\u0000\u0000\uFDCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8EC7\u0000\u0000\u0000"+ - "\u0000\u0000\uA0F9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8FA9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90D7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EDF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static String innerIndex2= - "\u0000\u0000\u0000\u0000\u0000\u0000\u99CE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA"+ - "\u0000\u0000\u0000\u0000\u0000\u8FEB\u0000\u99CF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FC2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92C9\u0000\u0000\u0000\u0000\u0000"+ - "\u97DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95B3"+ - "\u9C79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95B2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FDB\u0000\u0000\u0000\u0000"+ - "\u9BE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E7A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9BEE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99DE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAFA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9EE5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A52\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99E1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8A67\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BB5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8AAC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97DE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95D1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99F5\uFC4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBDC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE56\u0000\u0000"+ - "\u0000\u0000\u0000\u9EA4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95DB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9664\u0000\u0000"+ - "\u0000\u0000\u9055\u0000\u0000\u96D4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u977C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u964D\u0000\u97E1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A48\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A49\u0000\uFE7D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90AA\u0000\u0000"+ - "\u0000\u0000\u9A50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9347\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90C9\u0000\u0000\u0000\u0000\u0000\u9A55"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90BC"+ - "\u0000\u0000\u0000\u0000\u0000\u9A58\u0000\u8BB8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u90D5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9641\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A5A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A5C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8ABB\u0000\u0000\u0000"+ - "\u9BAA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90F5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A60\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9145"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8C58\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A63\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8C49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8BB6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966B"+ - "\u9A6E\u0000\u914F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9746\u0000\u0000\uA0E6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92D7\u0000"+ - "\u9675\u0000\u0000\u93D4\u0000\u0000\u91BB\u9679"+ - "\u0000\u0000\u0000\u0000\u0000\u9A70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9678\u91CD\u0000"+ - "\u9C4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA06F\u0000\u0000\uA06A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u915F\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9FA5\u0000\u0000\u89BA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9ECD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A79\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DCE\u0000\u0000"+ - "\u0000\u8CD2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9D73\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96B9\u0000"+ - "\u96BC\u0000\u0000\u0000\u0000\u0000\u0000\u9CD1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EEE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB43\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EC9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFBD3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9D78\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9D7B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EB3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EB2\u0000\u9DD6\u0000\u0000\u0000"+ - "\u0000\u994F\u0000\u0000\u89CE\u0000\u0000\u0000"+ - "\u8BC0\u0000\u9FC4\u0000\u8BD4\u0000\u0000\u8C72"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6BF\u8BF9"+ - "\u0000\u0000\u0000\u0000\u0000\u8946\u0000\uC6C0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC87B\u8BC6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C57\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9AFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89D0\u89CF\u0000\u0000\u0000\uC6C1\u0000\u89D1"+ - "\u0000\u89E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u927E\u0000\u9DBA\u0000\u0000\u0000\u0000\u0000"+ - "\uC6C2\u0000\u0000\u8C6F\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBF8"+ - "\u0000\u0000\u0000\u8BC7\u926B\u0000\u0000\u89D2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FCF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DA9\u89D3\u0000\u0000\u99E2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9267\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92A4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8C73"+ - "\u0000\u0000\u894E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u894F\u9278\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91B6\u0000\u0000\u0000\u0000\u89D4"+ - "\u0000\u9FD2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92A7\u0000\u0000\u95A2\u0000\u0000"+ - "\u0000\u0000\u0000\u926E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96EA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u926F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92A3\u0000\u0000\u0000\u0000\u0000"+ - "\u8950\u0000\u0000\uFA57\u0000\u0000\u0000\u0000"+ - "\u9866\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89D6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B2\u0000\u0000\u0000\u92AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96DE\u92AC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8C70\u0000\u9F6E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EF2\u0000\u0000\u0000\u9F6C\u0000\u0000"+ - "\u0000\u0000\u0000\u89D8\u0000\u0000\u0000\u0000"+ - "\uFA59\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92A8\u0000"+ - "\u0000\u0000\u0000\u0000\u9163\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C40\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F73\u0000"+ - "\u92AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BE9\u0000"+ - "\u0000\u0000\u0000\u0000\u92A9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD56\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FA8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8C71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92A1\u0000\u0000"+ - "\u90E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0A6\u0000\u0000\u0000\u0000\u0000\u94AB"+ - "\u0000\uFC72\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97C4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92AE\u0000\u0000\u0000"+ - "\u0000\uFA67\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92A2\uFA69\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9268\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8951\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFA6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFA71\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8952\u0000\u0000\u0000"+ - "\u0000\u945A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC6C3\u0000\u0000\u0000\u89DD\u0000"+ - "\uC8A2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uC6C4\u0000"+ - "\u0000\u0000\u9E52\u0000\u8953\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9E55"+ - "\u92BA\u0000\u0000\uC6C5\u0000\u0000\u8C5B\u0000"+ - "\u0000\u0000\uFA7D\uFAA8\u9A68\uFA47\u0000\u0000"+ - "\uFA7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92BB\u0000\u0000\u0000\uFDB6"+ - "\u0000\uFAA2\u0000\u0000\u0000\u0000\u0000\uFAA3"+ - "\u0000\uFAA4\u9BB4\uFAA6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89DF\u0000\u0000\u0000\uFDDB"+ - "\u0000\u0000\uFAA9\u0000\u8954\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAAB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFC7A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89E0\u0000\u9F4F\u0000"+ - "\u0000\u0000\uC87D\u0000\u0000\u89E1\u0000\u0000"+ - "\u0000\u0000\u0000\uFAB0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FCD"+ - "\uA0E7\u0000\u0000\u0000\u0000\u0000\uFAB1\u89A6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EFA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAB2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAB4"+ - "\u0000\u92C4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F6F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9FAC\u0000\u0000\u0000\u0000"+ - "\u0000\u89E3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9BD3"+ - "\u89E4\u0000\u0000\u0000\uFAB5\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8955\u0000\u0000\u92C5\u0000\u0000\u0000"+ - "\u8956\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000"+ - "\u0000\uFAB6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAB7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EDC\u0000\u0000\u0000"+ - "\uFBC4\u9F71\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFABA\u92C7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uC6C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8C68\u0000\u0000\u89E5"+ - "\u0000\u0000\u0000\u0000\u9F7D\u0000\u0000\u0000"+ - "\u0000\u0000\uA0A9\uFAC4\u0000\u0000\u0000\u0000"+ - "\uC6C7\u0000\u0000\u8957\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFAAA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8958\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BE3\u0000\u8B61"+ - "\u0000\u0000\u0000\u0000\u9AF1\u0000\u0000\u9EB7"+ - "\u0000\uC6C8\u0000\u0000\u0000\uFAD1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAD2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EBA\uFAD4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFADB\u0000\u9CE0\u0000\u0000\u0000\uFBF7\u0000"+ - "\uFBFA\u89E7\uA07A\uFADC\u0000\u0000\uFADD\u0000"+ - "\u89E9\u0000\u0000\u0000\u0000\u0000\uC6C9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE2\u89EB\u0000\u0000\uFAE3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90C8\u0000\u0000\u0000"+ - "\u92DA\u8959\u9CF5\u0000\u0000\u0000\u0000\u0000"+ - "\u895A\uFAE7\u9FA2\u0000\u0000\u0000\u0000\u0000"+ - "\uFAEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAED\u8FAD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAEF\u96EF\u0000\u9DEC\u0000"+ - "\u0000\u0000\u9DCA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD6D\u0000\u89EC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB44"+ - "\u0000\u0000\u9DE2\u0000\u8C75\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EC0\u0000\u9E56\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F79\u9AC7\u0000\u0000\uFAF4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98A1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAF8"+ - "\u0000\u0000\u0000\u89F0\u9E47\u0000\u0000\u9DF7"+ - "\u0000\u0000\u0000\u0000\u9FD3\u0000\u9ACA\u0000"+ - "\u0000\u0000\u0000\u89F1\uFAF9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E5A\u0000\u89F2\u0000\u0000\u0000"+ - "\u0000\u89F3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u925D\u8B51\u92E0\u0000\u0000"+ - "\u89F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8A79\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97A7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u93BA\u0000\u0000"+ - "\u0000\u0000\u0000\u9E58\u0000\u0000\u0000\u0000"+ - "\u89F6\u0000\u0000\u0000\u0000\u0000\u9E57\u0000"+ - "\u0000\u0000\u0000\u89F7\u0000\u8A41\u0000\u0000"+ - "\u89F8\u0000\u0000\uFAF1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB42"+ - "\u0000\uFABF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBA3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAF7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E4E\u0000\u94DC\u0000\u0000\u0000\u0000"+ - "\u0000\u95DA\u9DF8\u9F6A\u0000\u0000\u0000\u0000"+ - "\u0000\u8AB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB46\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8A46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB47\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9148\u0000\u0000\u0000\u92DE\u0000\u0000\u0000"+ - "\u0000\u8B53\u9DF6\u0000\u9BDA\u0000\u0000\u0000"+ - "\u0000\u9D7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89FD"+ - "\u99E4\u0000\u0000\u0000\u0000\u0000\u9E43\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DE9\u0000\u8F52\u0000\u0000\u0000"+ - "\u9DF5\u9DF0\u0000\u0000\u0000\u99E7\u0000\u0000"+ - "\u0000\u0000\u0000\u8BBD\u0000\u0000\u0000\u0000"; - - private final static String innerIndex3= - "\u0000\u0000\u0000\u0000\u0000\u9DEF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DD0\u0000"+ - "\u9FEB\u8DA9\u9DCF\u98E1\u0000\u9DE5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DC8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB4F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9DEB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB54\u0000\uFB55"+ - "\u9AA2\u0000\u8AD6\u0000\u9A5F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EF5\u0000\u0000"+ - "\u0000\u8FB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9AD2\u9E6A\u9EE8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BBF\u91C2\u9D62\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9260\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u925E\u91C1"+ - "\u0000\u8AC5\u0000\u0000\u97A3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8B6C"+ - "\u0000\u8D7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9C54\u0000\u0000\u0000\u0000\u0000\u9DBD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CC5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u895B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB5C\u0000\uFB5B"+ - "\u0000\uFB57\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98C7\u0000\u0000"+ - "\uFB5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CEE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u92E2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94A7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8CCC\u0000\u9BD4"+ - "\u0000\u0000\uFB64\uFB76\u0000\u0000\uFB60\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99E5\u0000\u0000\u9AC2"+ - "\u0000\u0000\u0000\u91FB\u0000\u0000\u0000\uA073"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F72"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FCC\u0000\u0000\u0000\u98A5\u92E8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BBC\u0000\u96F3\u0000\u0000\u92E7\u0000\u0000"+ - "\uFC67\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B7D\u0000\u0000\u0000"+ - "\u0000\u9BF4\u0000\u0000\u0000\u0000\u0000\u9EF7"+ - "\u0000\u0000\u9EC1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u996F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96F1\u0000\u0000\u8E41\u0000"+ - "\u0000\u0000\u0000\u0000\u954A\u0000\u0000\u0000"+ - "\u97E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F5"+ - "\u0000\u0000\u0000\u0000\u0000\u92E6\u9F42\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB67\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99A9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE6\u0000"+ - "\u0000\u0000\u0000\uFB69\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97E5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u967D\u0000\u0000\u0000\uFB6C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99A2\u0000\u0000\u0000\u0000\u0000"+ - "\u9ABB\u0000\u0000\u0000\u9A65\u0000\u0000\u944E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB6E\u0000\u0000\u99DF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E3\u0000\u0000\u9254\u0000\u0000\u0000"+ - "\u0000\u0000\u967B\u8AAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C77\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BAF\u9EBD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9EE6"+ - "\u0000\u0000\uFB6F\u0000\u0000\u0000\u0000\u0000"+ - "\u8EE1\u0000\u0000\u0000\u0000\u9B7D\u9C7E\u0000"+ - "\u0000\u0000\u0000\uF9D9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92EA\u0000\u0000\u0000\u0000"+ - "\u8C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB72\u0000\u0000\u0000"+ - "\uFB71\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u895C\u0000\u98F0\u96F2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB74\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BC1\u0000\u895D\u89DE\u0000\u895E"+ - "\u0000\u0000\uC6CA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE42\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB7B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u895F\u0000\u8960\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9BCD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DD3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u984C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9752\u0000\u0000\u0000"+ - "\u0000\u0000\u95C3\u0000\u0000\u0000\u0000\u9BB6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AB9\u0000\u0000\u0000"+ - "\u97B3\u0000\u0000\u0000\u0000\u0000\u0000\u9F74"+ - "\u92F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97DF\u0000\u0000\u0000"+ - "\u0000\uFBA6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9877\u0000\u0000\u0000\u9854"+ - "\u95C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9D55\uFBB2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u957E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9742\u0000\u94E6\u0000\u0000"+ - "\u0000\u0000\u92F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8CC5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92FD\u0000\u0000\uFBA2\u0000\u0000\u9C51"+ - "\u0000\u0000\u94E9\u985C\u92F0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u944C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u916B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B78\u0000\u0000\u0000"+ - "\u0000\u94E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u984F\u0000\uFBB5\u0000\u0000\u0000\u0000"+ - "\u9271\u0000\u0000\u9365\u0000\u0000\u985B\u0000"+ - "\u0000\u9850\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97BC\u0000\u0000\u0000\u0000\u92F3\u0000"+ - "\u0000\u9340\u984D\u0000\u0000\u0000\u9572\u0000"+ - "\uFDEF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFDC1\u0000\u0000\u0000\u0000\uFBBA\u0000"+ - "\u0000\u92EB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC73\u97B7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBB4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90A7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9741\u92F4"+ - "\u0000\u0000\u0000\uFBBC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9577\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9EE2\u0000\u8F78\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uF9DC\u0000\u0000\u0000\u9672\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EB5\u0000\u0000"+ - "\u0000\u964B\u0000\u0000\u0000\u8CAC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0FA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9575\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90DA\u0000\u0000\u9367\u0000\uFEA4\u0000"+ - "\u0000\u0000\u90DF\u0000\u0000\u0000\u0000\u9354"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8961\u0000"+ - "\u8BB4\u0000\u0000\u0000\u0000\u9DC0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8E48\u0000\uFBC5\u0000"+ - "\u0000\u0000\u0000\u0000\uFBC7\u0000\u0000\u0000"+ - "\uC6CB\u0000\uFA79\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E67\u0000\u0000\u0000\u0000\u0000\u8CD9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBD2\u8962\u8963"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC7D\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F6B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBCC\u0000\uFEAE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBD1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB75"+ - "\u0000\u0000\u0000\u0000\u0000\uFBD4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFBD6\uFBD8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8B5D\u0000\u934C\u0000"+ - "\u9AE2\u0000\u0000\u8BC9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBDB\u9FC9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F44\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98ED\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFBDD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DF2\u8964\u0000\uFDF2\u0000\u934D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBE7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0F2\u9868\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F58\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D73\u0000\u0000"+ - "\u0000\uFBDE\u0000\u0000\u0000\u0000\u0000\uFBDF"+ - "\u0000\u0000\u0000\u0000\u0000\u8C48\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFBE3\u0000\u0000\u0000\u0000\u8DA8\u0000\u0000"+ - "\uFBE4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9C75\u0000\u0000\u9878"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8D60\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBE5\u0000"+ - "\u8D61\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8D62\uA0A1"+ - "\u0000\u0000\u0000\u9C40\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98AD\u0000\u0000\u0000\u9EEA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8CD4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CEB\u0000\u0000"+ - "\u0000\u0000\u0000\uFBE0\u0000\u0000\u9F51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D65\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CF1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC58\u0000"+ - "\u0000\u8D66\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9654\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBE8"+ - "\u0000\u0000\u0000\uC6CC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9FCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBFC\u0000\u9AE4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F75\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFBF1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8D69\u0000\u0000\u0000\u0000\u0000"+ - "\u934F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u934E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBF4\u0000\u0000\u0000\u0000\uC6CE"+ - "\u0000\u0000\u0000\uFBC3\u0000\u0000\u8965\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C7A\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8C7B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D6A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9353\u0000\u0000"+ - "\u9DFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBFD\u0000\u0000\u0000"+ - "\u9059\uFC40\u0000\uFC41\uFC43\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9361\uFC46\u9362\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D6B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC4C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95B8\u0000\u0000"+ - "\uC6D0\u8BCA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u987A\u0000\u0000\u0000"+ - "\u0000\uC6D1\u0000\uFC51\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFC54\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8D6C\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFA61\u0000\u0000\uFC57"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9B70\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA051\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C7C\u0000\u8BCB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u936E\u0000\u0000\u0000\uFCD5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCA9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC61\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8966\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFACB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uF9DA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u937A\u0000\uA0E0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u936B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC6B\u0000"+ - "\u0000\u0000\u0000\u0000\uA0DC\u0000\u0000\u9468"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFC6D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D71"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD64\u0000"+ - "\u0000\u0000\u0000\u99BA\u0000\u0000\u0000\u9AD0"+ - "\u9A61\uA0E5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA05B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AC"+ - "\u0000\u0000\u0000\u0000\u9740\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9EF1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C4D\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F7E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8D72\u0000\u0000"+ - "\u0000\u0000\uFC76\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA06E\u0000\u0000\uFCAA\u0000\u0000\u0000"+ - "\uFBCD\u0000\u0000\u0000\uFC74\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA074"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA071\u0000\u0000"+ - "\u0000\uFC79\u0000\u0000\u0000\u0000\u0000\uFC7C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9C50\u0000\u0000"+ - "\u9379\u9378\u0000\u0000\uA0DD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D75"+ - "\u0000\u8D76\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9374\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D77"+ - "\uFCA5\u0000\u0000\uFCA2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90C3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA079\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8D79\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BFC"+ - "\u0000\uA076\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8BCD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9F5A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FF4\u0000\u0000\u9FBA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E45\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93B0\u0000\uA075\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9B46\u0000\uFCAE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA51"+ - "\u0000\u0000\u0000\u0000\u0000\u8D7B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8D7C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9ED6\u0000"+ - "\u0000\u93AC\u0000\u0000\u0000\u9F5B\u0000\u93A9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA07C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCB2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8AC1\u0000\u0000\u0000\u0000\u0000\u9FB4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCAC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FC5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93AD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DC3\u0000"+ - "\u0000\u0000\u8DA2\u0000\u0000\u0000\u9D4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCB6\u0000\u0000\u8DA3\u9E4B\u0000\u9E4D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DA4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8AFD\u0000\u0000\u0000\u0000\u0000"+ - "\uFCB5\u0000\uFCC3\u93B2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DA5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93A1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8AC6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A5B\u0000\u0000"+ - "\u0000\u894D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED4"+ - "\u0000\u0000\u0000\u0000\u8A78\u0000\u93AB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F45\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A56\u0000\u0000"+ - "\u0000\uFCBF\u0000\u0000\u0000\uFCC0\u0000\u8EE6"+ - "\u0000\u0000\u8AA4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8943\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93F3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB\u9EA2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9DC7\u0000\u0000\u0000\uC6D2\u8BCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCC5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCCB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93B3\u0000\uFCCA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCC9\u8DAC\u0000"+ - "\uFBC6\u8967\u0000\u8C7E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCCD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF3\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFCD0\u0000\u0000\u95BB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD3\u0000\u0000\uFCD4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DAE"; - - private final static String innerIndex4= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFCD7\u0000\u0000\u0000\u0000\u0000\u93DB\u0000"+ - "\u0000\u0000\u0000\uFE63\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93D5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCDA\u0000\u0000\u0000"+ - "\u9B71\u0000\u0000\uFCDD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8DAF\u0000\u0000\u0000\uFAF2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u93D8\u0000\u0000\u0000\uFCDF"+ - "\u0000\u0000\u0000\u93D3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFCE1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E76\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFC62\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93D1\u0000"+ - "\u0000\u0000\u8DB1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9859\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFB52\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB53\u0000\u0000"+ - "\u0000\u0000\u0000\uFB4D\u0000\u0000\u9CBF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B72"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFB50\u93BE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9DF1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCEB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA0BB\u0000\u9B7E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DB3\u0000"+ - "\u0000\u8C52\u0000\u0000\u0000\u0000\u9AE8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EDC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CF9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFA50\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98E7\uFCF3\u0000\u0000\u0000\u0000\uFCF2"+ - "\u0000\u0000\u0000\u8CCA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u93E5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9A59\u0000\u0000\u0000\u8DB5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFD4D\u0000\u0000\u0000"+ - "\u0000\uFD5E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F7D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9547\uFCF6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9250\u0000\u0000\u0000\u0000\u8968\u0000"+ - "\u8DB6\uFCFB\uA07D\u98FC\u8969\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE4F\u0000\u0000"+ - "\u9256\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAC9\u0000\u0000\u93E8\u0000"+ - "\u0000\u0000\uFCF8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CE3\uFDA9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC44\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9640"+ - "\u0000\u0000\u8DB8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9B4A\u8FB9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFCFE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u896A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DB9\u0000\u0000\u0000"+ - "\u917E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u93F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB7C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93E7\u0000"+ - "\u0000\u97EF\u0000\u0000\u0000\uFE4A\u0000\u0000"+ - "\u0000\u0000\u0000\uFD45\u0000\u96A5\u0000\u0000"+ - "\u0000\u0000\uFEE0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD48\uFD47\uFEF2\uFE6A\u0000\u0000\u0000\u0000"+ - "\u0000\u8DBD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9BA1\u8CA2\u9AB7\u8EFC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FA1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAAD\u0000"+ - "\u0000\u0000\u0000\u8DBE\u0000\u0000\u89A4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AD9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD4E\u0000\u0000\u8DC0\u0000\u0000\u97F0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u93B4\uFD44\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FA7\u0000\u0000\u0000\u0000\u8DC2\u0000\u0000"+ - "\u0000\u0000\u99B6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD52\u0000\u0000\u0000\u0000\u0000\u0000\u8DC1"+ - "\u0000\u0000\u8E46\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0D1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92CF\u0000\u0000\u0000\u9CF4\u8DC4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD41\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9B4C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFD57\uFCEF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CDE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFD42\u986C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u97F9\u0000\u9558\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u985E\uFE7B\u94CD\u0000\u0000"+ - "\u0000\u0000\u0000\u93EE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8CA3\u0000\uFD5A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u93F5\u0000\u0000\u0000"+ - "\u0000\u0000\u93EF\u8EEA\u0000\u0000\u0000\u8F5B"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C5E\u0000\u8DC6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DC8\u0000\u0000\u8DC7\u0000\u0000\u0000"+ - "\u0000\u0000\u93F7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DC9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFBF2\u0000\u0000\u0000\u0000\u9670"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DCB\u0000\u0000\u0000\uFD5C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8F65"+ - "\u0000\u0000\u0000\u8DCD\u0000\u0000\u0000\u0000"+ - "\u0000\u9DA8\u94F9\u0000\u0000\u8DCE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93EA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFD5F\u93F0\u9FB6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DCF\u0000\u0000\u0000"+ - "\u9763\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DD0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u93F1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD62\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD65\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FDB\u0000\u0000\u0000\u0000\u93F8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF7"+ - "\u0000\u0000\u0000\u0000\uFD66\u0000\u0000\u0000"+ - "\u0000\u0000\u8BCF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DD1\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DD2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFD71\u0000\u0000\u0000"+ - "\u0000\uFD6F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DD3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FE7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FD0\u0000\u0000\u0000\u8BD0\u0000\uFD72"+ - "\u0000\u9CAE\u8BD1\u0000\u0000\u8ADB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAE4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u95CE\u0000\uFD76\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB62\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DD4\u0000\u0000"+ - "\u0000\uFD78\u0000\u0000\u0000\u0000\u0000\u8EE3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9076"+ - "\u0000\u0000\u98C6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8DD5\u0000\u0000\u0000\u0000\u97D1"+ - "\u0000\u0000\u9EB6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAC7\u0000\u0000\uA042\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9873"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FFC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CA5"+ - "\u0000\u0000\u8DD7\u0000\u0000\u92FB\u8DD8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u944F\u0000\u8DD9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u896B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97CE"+ - "\u0000\u0000\u0000\uFAF3\uFDAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFBAF\u92B7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DDA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5A"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFDAD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DDC\u9444\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DDD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8C41\u0000"+ - "\u0000\u0000\u97D5\u0000\u944A\u0000\u0000\u0000"+ - "\u0000\u0000\u944D\u0000\u0000\u0000\u0000\u97CB"+ - "\u0000\u0000\u0000\u0000\u0000\u8DDE\u0000\u0000"+ - "\u8DDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DE0\uFEF9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC0"+ - "\uFCF9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFB7E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u92B3\u0000"+ - "\u0000\u0000\u0000\u0000\uFDAF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DE1\u0000"+ - "\u0000\u0000\u0000\u95D3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u89C1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFD68\u0000\u0000"+ - "\u9CB7\u0000\u0000\u8DE3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFAC0\u8DE5\uFA64\u0000\u8947\u0000\u0000"+ - "\u0000\u0000\u8DE4\u0000\u0000\u0000\u0000\u0000"+ - "\u8DE7\u8DE8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFDC7\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDB0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9445\u97D6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFCC6\u9844"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DE9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DEA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFE50\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DA7\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDCF\u0000\u0000\u0000"+ - "\u0000\u95D2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DED\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFCBA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFDC5\u0000\uFDD2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CDC\u0000\u0000"+ - "\u0000\u0000\u0000\u95CF\u0000\u0000\u8DEE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDD4\u0000\u0000\u0000\u0000"+ - "\u0000\u96EC\u96EB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90B6\u0000"+ - "\uFDC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98AB\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96EE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDE0\u0000\u8C67\u0000\u0000"+ - "\u8DF6\u0000\u0000\u0000\u8DF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FFA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97D0"+ - "\u0000\u0000\u0000\u0000\u8BD2\u0000\u0000\u8DF8"+ - "\u0000\u0000\u0000\u0000\u0000\u90D9\u0000\u8C47"+ - "\u0000\uFAF0\u0000\u0000\u0000\u0000\uFDE1\u8DF9"+ - "\u0000\uFDE3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8DFA\u0000\uFB63\u0000\u0000\u0000\u90A6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9970\u0000\u0000\u91EB\u0000\u9770\u986F\uFDE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98F2\u0000\u9AFC\u896C\uFDFD\u0000\u0000"+ - "\u995E\u0000\u0000\u0000\u95BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDE4\u0000\u0000\u0000"+ - "\u91E6\u0000\u0000\u0000\u0000\uFDE5\uFDE6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDE7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9454\u0000\u0000\u0000\u99B8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9346\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9863\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95BC\u0000\uFDED\uFDF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9870\u96F6\u8EA9\u0000\u0000"+ - "\u0000\u0000\u0000\u9451\u0000\u0000\u8E43\u0000"+ - "\u8B5A\u0000\u0000\u0000\u0000\uFDEE\u0000\u0000"+ - "\u0000\u0000\uFDF0\u0000\u0000\u0000\u0000\uFDF4"+ - "\u0000\u9BF5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u977E\u0000\u0000\u0000\u0000"+ - "\u0000\u9BD5\u0000\u9AC3\u0000\u97C8\uA0DB\u91D0"+ - "\u0000\u0000\u9FE4\u0000\u8FDD\u0000\u91E9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98E0\u0000\u0000\u0000\u92CA\u0000\u9857\u0000"+ - "\u0000\u8C51\u0000\u0000\u0000\u0000\uFDEB\u0000"+ - "\u9B49\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D76\u9EAF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CCC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFDEA\u0000\u0000\u8DF1"+ - "\u0000\u0000\uFDFB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8E53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFACF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96F9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98BF\u9E49\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8CA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9BCA\u0000\u0000\u0000\u0000\uFDFE\u92DC"+ - "\u0000\u0000\u0000\u0000\u0000\uFE41\u91CC\u91E2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFE44\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8BD3\u0000\u0000\uFE47\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFE48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9455\u0000\u0000\u0000\u0000\uFE4B\u0000\uFE4C"+ - "\u0000\u0000\u0000\u0000\u8DBF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E78\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE51\u0000\u0000\u0000\u0000\u9456"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D61"+ - "\u0000\u0000\u0000\u0000\u9457\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9966"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BD5\u0000\u0000"+ - "\u0000\u0000\uA069\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98B4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA049\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA04C\u0000\u9E65\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B5\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFE58\u0000\u9975\uFE53\uA065\u0000\uFE59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98B7\u98B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98BA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98BB\u0000\u0000\u0000\u0000\u0000\u0000\u9FBC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA04A\u0000\u0000\u9EC7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CA9\u0000\u0000\u98AE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u92D6\u0000\u0000\u0000\uFAE1\u0000\u91D4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADE"+ - "\u0000\u0000\uFE5B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C53\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE5E\u0000\u0000\u0000\u0000\uFBD7\uFE5A"+ - "\u94C5\u0000\u0000\u0000\u0000\uFACA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98C1\u975C\u0000\uFE74\u0000\u9773\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFA46"+ - "\u0000\u0000\u0000\u9764\u0000\u0000\u0000\uFE68"+ - "\u0000\u964E\u0000\u9765\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C5A\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89A1\u95FA\u0000\u92D4\uFE69\u0000\uFB45"+ - "\u0000\u98C8\u0000\u0000\u90EF\u0000\u98C9\u98CA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u946D"+ - "\u94B7\uFE6C\u0000\u0000\u946B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92FC\u0000\u95EB\u0000\uFE73"+ - "\u976E\uFE5F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDBD\u0000\u0000\u92D5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFEB9\u0000\u0000"+ - "\uFE71\u0000\u0000\u0000\u0000\uFBBB\u0000\u0000"+ - "\u947A\u0000\u0000\u95FB\uFE77\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFE79\u0000\uFE75\u0000"+ - "\u0000\u0000\u945D\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE7C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9344\u8EA6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92D3\u0000\u94B8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFC71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u975E\u0000\u0000\u0000"+ - "\u0000\u8CAD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEA7\u0000\u0000\u0000\u946A\u0000\u0000\u0000"+ - "\u93E3\u0000\u0000\u98CF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA0D9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0BF\uA04D\uA0B8\u0000\u0000\u0000\u0000\u0000"+ - "\uA0CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEA9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C3\u0000\u0000\u0000\u0000\uFEAB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9DF4\u896D\u0000\u0000"+ - "\u0000\u0000\u0000\u9C7B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u98D2\u0000\u0000\u0000\u9FA9\u0000"+ - "\u0000\u0000\uFEB2\u0000\u0000\uFEB1\u0000\u0000"+ - "\u0000\u97D9\u0000\uA0C4\u0000\u9476\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9978\u0000\u0000\u0000\u0000\u0000\u0000\uFEB3"+ - "\u0000\u0000\u0000\u0000\u0000\u98D3\uFEB4\u0000"+ - "\u0000\u0000\u98D4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9471\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98D5\uFEB8\u0000"+ - "\u0000\u0000\uC6D4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEBA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9E5C\u0000\u0000\uFEBB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA044\u0000\u0000\u0000\u0000"+ - "\u98D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98D8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static String innerIndex5= - "\u0000\u0000\uFEBC\u0000\u0000\u0000\u0000\u9FFE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEBD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9DDD\u0000\u0000\u0000\u0000"+ - "\u9EE1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98DA\u9DDF\uFEBF"+ - "\u0000\uFEBE\u0000\u0000\u9EEB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E59\uA05C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC0"+ - "\u0000\u0000\u0000\u9477\u98DC\u0000\uFEC1\u0000"+ - "\u0000\u0000\u98DE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEC3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFEC8\u0000\u0000\u0000\uFEC9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFECA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFECB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FC2\u0000"+ - "\u0000\u8C6B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98C4\u0000\u94B0\u94B1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFED1\u0000"+ - "\u0000\u0000\u0000\u0000\uA0C1\u0000\uFED2\u0000"+ - "\u0000\u0000\u0000\uA0CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFED3\u0000\u0000\u98E5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFED6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91E4\u0000\u0000\u0000\u0000\u8FC7"+ - "\u94AE\u0000\u8A4F\u94B2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FD4\u0000\u0000\u0000\u0000"+ - "\u98EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFED8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9DE0\u0000\u0000\u0000\u0000\u98EE\u0000"+ - "\u0000\u0000\u0000\u95C4\u0000\uFCE8\u0000\u0000"+ - "\u0000\u0000\u0000\u98EF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8C6E\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAD8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEDC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0AE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9D4C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F1\u0000\u0000\u0000\u98F3\u0000\u94C1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u98F5\u0000\u0000\uFA4F\u96E2\u0000\u0000"+ - "\u0000\u0000\u9450\u0000\u96A2\u0000\u0000\u98F6"+ - "\u0000\u0000\u0000\u96E5\u0000\u0000\u0000\u0000"+ - "\u0000\u98F7\u0000\uA046\u96E3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9EE4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF9D6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u94C3\u0000\u0000\u0000\u0000\u94C2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE1"+ - "\u0000\uFEE9\u0000\u0000\u0000\u0000\u96E4\u0000"+ - "\u89AC\u96DB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94C4\uFEE3\u0000\u0000\u0000\uFEE7"+ - "\u9FFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8C59\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u93C9\u0000"+ - "\u94E8\uFB56\u0000\u0000\u0000\u90C5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0A8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFEE5\u0000"+ - "\u0000\u0000\u98FD\u98FB\uFEE8\u0000\u8EBF\u0000"+ - "\u0000\u0000\u0000\u8BD8\uFEF7\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F68\u94C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DEA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC69\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9CDA\u0000"+ - "\uFEF3\u0000\u0000\u9C72\u0000\u0000\uFEF0\u89C9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9941\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9942\u0000\u0000\u0000\uFEF5\u0000\u91D7"+ - "\u0000\u0000\u0000\u0000\u0000\u94CC\u0000\u0000"+ - "\u0000\uFEF8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u97A8\u0000\uFEFC\u0000"+ - "\u0000\u0000\u0000\u0000\uFDBF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEFE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u96D1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u94D5\u0000\u0000\u94D0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9944\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8C63\u0000\u0000\uA0B3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u94CF\u0000\u0000\u0000\u9FFA\u0000"+ - "\u0000\u0000\u0000\u91E5\u0000\u9C6A\u0000\u0000"+ - "\u0000\u8E49\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E4C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E4D\u0000\u0000"+ - "\u0000\u0000\u0000\u9A73\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9947\u0000\u8CB1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8E50\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8E4F\u9949\u0000\u0000\u0000"+ - "\u0000\u0000\u8E51\u8E52\u0000\u0000\u0000\u0000"+ - "\u9AB2\u89A5\u0000\u0000\u0000\u0000\u0000\u994C"+ - "\u0000\u0000\u0000\u9FF8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E56\u994D\u91CA\u8E57\u0000\u0000"+ - "\u0000\u0000\u94E1\u0000\u0000\u0000\u0000\u9047"+ - "\u0000\u8FD8\u8E58\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u94EB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8E5C\u9553\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FE5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F56"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954F"+ - "\u0000\u8E5E\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u996A\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C64\u9CD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E5D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9950\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9951\u0000\u0000\u8E62"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9952\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E68\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E61\u9F59\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BB3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5D"+ - "\u8E66\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CB2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E6E\u0000\u9F64\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9953\u0000\u0000\uFAB8\u0000\u0000"+ - "\u0000\u0000\u0000\u9954\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8E70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F61\u0000\u8E72\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA06B\u0000\u0000\u0000\u0000\u9F40\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94ED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94EE\u0000\u0000"+ - "\u9FBD\u0000\u0000\u0000\u8E7B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9957\u94F7\u0000\u9F5F\u0000"+ - "\u0000\u0000\u0000\u8E73\u0000\u0000\u9F62\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u94F6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9958\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8E75\uF9DB"+ - "\u0000\u0000\u0000\u0000\u9072\u0000\u94F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u995A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0B0\u8CB3\u0000\u0000\u0000\u8E79"+ - "\u0000\u8E78\u0000\u0000\u0000\u94F3\u0000\u0000"+ - "\u0000\u0000\u0000\u98AF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0B2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8E7A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u995C\u0000\u0000"+ - "\u0000\u0000\u0000\u8E7C\u0000\u8E7D\u0000\u0000"+ - "\u0000\u8BD9\u0000\u0000\u89A2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9ED7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0B6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E42\u0000\u0000\u8EA4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EA7\u0000\u8C76\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9542"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u987D\u0000\u0000\u0000"+ - "\u9755\u0000\u0000\u8EA8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u89A3\u0000\u9960"+ - "\u9962\u0000\u0000\u94FC\u9961\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u94FA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8EAE\u8EB2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8EB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9963\u97AA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u94FB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EBB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8CDC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9876\u0000\u8EA1"+ - "\u0000\u0000\u0000\u0000\u8CB4\u0000\u8EB7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DA6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9EB0\u0000"+ - "\u0000\u0000\u8EB8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D70"+ - "\u0000\u0000\u0000\u0000\u896E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u896F\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8970\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8971"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8972"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8973"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8974\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8975"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8EBC\u8EBD\u0000\u0000\u0000\u0000\u0000\u8EBE"+ - "\u0000\u9DD1\u0000\u0000\u0000\u0000\u94FD\u0000"+ - "\u0000\u0000\u8BD7\u8BDA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FE9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDA8"+ - "\u0000\u0000\u0000\u8AE7\u0000\u0000\u0000\u8EC2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EC4\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9964\u0000"+ - "\u0000\u0000\u0000\u0000\u9965\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u954E\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u98B3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8ECB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BDF\u0000\u0000\u0000\u0000\u0000"+ - "\u8ECE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8ECF\u0000\u0000"+ - "\u9968\u0000\u0000\u0000\u0000\u9969\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u996B\u8ED1"+ - "\u0000\u996C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8ED4\u8ED5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u996D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0BE\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED6\uA0BC\uA0B5\u0000\u0000\uA0B4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89B5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EDD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5D\u9971"+ - "\u0000\u0000\u0000\u0000\u89AE\u9DE8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9565\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9972\u0000\u0000\u8B5C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u89B1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA0C0\u0000\u0000\u0000\u8EDF"+ - "\u0000\u9566\u0000\u0000\u9974\u0000\u9976\u0000"+ - "\u0000\u0000\u9977\u0000\u9979\u0000\u0000\u9DDA"+ - "\u0000\u0000\u8EE0\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u935C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9DE6\u0000\u8B5F\u0000\u0000\u9563"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9567\u0000\u0000\u0000\u0000\u0000"+ - "\u9DE3\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u997C\u0000"+ - "\u0000\u997D\u997E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8B5B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99A3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99A4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99A6\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99A8\u0000\u0000"+ - "\u0000\u0000\u8ABE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E61\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99AA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFEC4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u98C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8EE8\u0000\uA0BA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFD77\u0000"+ - "\u0000\u8EEE\u0000\u0000\u0000\u9EBF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u89C2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99AC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u956B\u0000\u0000\u956C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99AF\u0000"+ - "\u0000\u994A\u8976\u8F48\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99AE\u0000"+ - "\u0000\u0000\u8EFB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CD0"+ - "\u0000\u0000\u0000\u0000\u8B52\u0000\u0000\u0000"+ - "\u0000\u0000\u99B0\u0000\u0000\u0000\u0000\u8977"+ - "\u8F41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8F49\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFA4D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DE4"+ - "\u8CB5\u0000\u0000\u0000\uFBE9\u9B54\u0000\u99B2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9E68\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8F4A\u0000\u8F42\u0000\u0000\u8F51\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9846\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99B4"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8EF5\uFD55\u0000\u0000\u9CCD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8978"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8F53\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8F6F\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8E63\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8F56\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFE76\u0000\u0000\u0000\u0000\u9FC6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAAC\u0000\u0000"+ - "\u0000\u0000\u0000\u8F58\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9848\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99B7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9665\u0000\uFA6C\u0000"+ - "\u9DE7\u0000\u0000\u0000\u9E62\u0000\u0000\u0000"+ - "\u96CC\u8E67\u0000\u0000\uFC75\u0000\u987E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFDB9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u97FC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98F9\u0000\u8F66\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u956E\u0000\u9245\u0000\u0000"+ - "\u8F60\u0000\u0000\u0000\u9ED1\u0000\u0000\u0000"+ - "\u0000\u0000\uFECD\u0000\u99B9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8F62\u974C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91C7"+ - "\u955F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8E6D\u8F71\u0000\u0000\u94CB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95B1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AF2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96C3\u99BD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0CF\u0000\u0000\u0000\u8F6D\u0000"+ - "\u0000\u99BE\u8EF4\u0000\u8F72\u95E4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99BF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9242\u0000\uFBA5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFDB4\u8F77\u0000\u0000\u0000"+ - "\u99C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFAB9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8F40\uFA44\u0000\u0000\u0000"+ - "\u0000\u0000\u99C2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8F5C\u0000\u0000\u0000\u0000\u8CBD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99C4"+ - "\u99C5\u0000\u0000\u8F7B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8CB6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FA3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8CCE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96CD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96C7\u0000\u0000\u0000"; - - private final static String innerIndex6= - "\u0000\u0000\u8FA5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFABB\u0000\u8C61"+ - "\u9570\u0000\u0000\u0000\u9368\u0000\u8F7E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FAA\u0000\u0000\u0000\u0000\u0000\u0000\uA050"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90D3\u0000\u0000\u9556\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FB8\u0000\u0000\u0000"+ - "\u0000\u0000\u99C8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FAF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99C9\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9579\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9F49\u0000\u0000"+ - "\u0000\u0000\u99CA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99CB"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9DD5\u8FB0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFA7A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9E5F\u0000"+ - "\u0000\u0000\u0000\u99CD\uA0C9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9ADB\u0000\u0000"+ - "\u0000\uA0C6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FB4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0C7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA043\u0000"+ - "\u0000\u0000\u8FB5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FB2\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA061\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E5E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FB6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FE8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CB2"+ - "\u0000\u0000\u0000\u0000\u0000\u957C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FC7\u0000\u0000\u8FBB\u8FBC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FEC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FC0\u0000"+ - "\u936A\u0000\u0000\u0000\u8BE4\u9C7C\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95A1\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEEC\u0000\u0000\u95A3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8C45"+ - "\u8CB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC1\u0000\u0000\u0000"+ - "\uA052\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99D0\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC3\u8FC4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95A4"+ - "\u0000\u0000\u0000\u0000\u0000\u8FC6\u0000\u9E60"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9D8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95A5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CB3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99D1"+ - "\uFEF1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99D2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9CC2\u0000\u0000\u0000\u99D3"+ - "\u0000\u0000\u0000\u0000\u0000\u95A7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95A9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95A6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9C5D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98E2\u0000\u0000\u0000\u0000\u0000\u0000\u8FC9"+ - "\u0000\uA0C2\u8FCA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99D4\u0000\u0000\uA0B9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9B58\u0000\u8FCD"+ - "\u0000\uA0D4\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FCE\u0000\u0000\u0000"+ - "\u0000\u8BE5\u0000\u0000\u0000\u0000\u8979\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FD0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95B6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99D6\u0000\u95E5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99D7\u0000\u0000\u0000\u0000\u95B5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0CA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FFD"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA058\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FD6\u0000\u0000\u0000\u99D8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FD3\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FE5\u0000\u0000\u0000\u0000\u0000\u8FE9"+ - "\u0000\u0000\u0000\u0000\u99D9\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u927C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9C45\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FDE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FDF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA04B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8FE2"+ - "\u0000\u0000\u0000\uA0CC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FE3\u8FE4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BC4\u0000"+ - "\u0000\u0000\u9BFC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u964C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9AF6\u0000\u8CAE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8FE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FE8\u0000\u0000\u0000\u0000"+ - "\u8BE7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u897B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99DA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FED\u0000\u0000\u0000\u95C0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uA0CB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E48\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99DB\u0000\u8FF3\u0000"+ - "\u0000\u0000\u0000\u8FF9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95C1\u0000\uA04E\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99DC\u0000\u0000\u0000\u0000\uA064"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FF7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89B0\uA048\u0000\u0000\u0000"+ - "\u0000\u8FFB\u8FF6\u0000\u0000\u0000\u0000\u0000"+ - "\u9DDC\u0000\u0000\u0000\u99DD\u8BE8\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u92C1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FD6\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0D2\u0000"+ - "\u0000\u9040\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8AC4\u0000\u0000\u99E0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FF0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FF3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DBF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FF6\u0000\u95C8\u0000\u0000\u9E5A\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99E3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A4A\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FF1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8AA7\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99E6\u0000\u0000\u0000\u9FF7\u0000\u9FED"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8A5C\u0000"+ - "\u9DAE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95C9"+ - "\u0000\u0000\u0000\u0000\u0000\u9048\u0000\u0000"+ - "\u99E8\u0000\u0000\u0000\u0000\u0000\u9049\u0000"+ - "\u0000\u8CBA\u0000\u0000\u90B1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u904A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99EA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9BD1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99EB\u0000\u99EC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u99ED\u0000\u0000"+ - "\u0000\u0000\u99EE\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u904C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u904D\u0000\u0000"+ - "\u95CB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97E2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95CC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9F78\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897C\u897D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u897E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u995D\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9B5A\u0000\u0000\u0000\u0000\u9050\u0000\u8C4F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9054\u0000\uC6D6\u9AA8\u99EF"+ - "\uFEEB\u9DA3\u9DA1\u9943\u9945\u0000\u9D7D\u0000"+ - "\u0000\u99F0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99F1\u0000\u99F2\u0000\u0000\u8CBC"+ - "\u9D60\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA0A3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u905B\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9EDB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9D79\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99F3\u0000\u0000\u0000\u9062"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9F55\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9BF9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9065\u0000\u0000\u96E0\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u98BE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9068\u0000\u0000\u0000\u0000\u0000\u906C\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u95D8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u906A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FB2\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FAE\u0000\u0000\u9FB0\u0000\u89AD\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u906E"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E71\u0000\u0000\u0000\u0000\u0000\u9E4A\u0000"+ - "\u0000\u0000\u0000\u0000\u9FDC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89AB\u0000\u9FB8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9070\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8B63\u0000"+ - "\u0000\u0000\u0000\u95DC\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9071\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFC5E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8949"+ - "\u0000\u0000\u0000\u0000\u0000\u965B\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8C50\u0000"+ - "\u0000\u0000\u94A6\u0000\u0000\u0000\u8FD5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E73\u0000\u0000\u0000\u0000\u0000\u9075\u0000"+ - "\u0000\u0000\u0000\u99F7\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8CBF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u99F9\u0000\u9663\u95B9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u94D4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCFA\u0000\u0000\u0000"+ - "\u0000\u9077\u0000\u0000\u90AB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9D4D\u0000\u0000"+ - "\u99FA\u0000\u0000\u0000\u0000\u92E3\u0000\u97BB"+ - "\u0000\u0000\u9078\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99FB\u0000\u0000\u97E0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96DC"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9CA8\u0000\u0000\u9772\u0000\u0000\u0000"+ - "\u0000\u9440\u0000\u0000\u0000\u0000\u0000\u92F2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u99FD\u0000"+ - "\u0000\u99FC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uF9D7\u964A\u0000\u0000\u0000\u96D8\u99FE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u904B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFA41\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A40\u0000\u975B\u0000\u0000"+ - "\u0000\u0000\u0000\u9A41\u91DD\u0000\u0000\u0000"+ - "\u0000\u0000\u93FC\u9A42\u9A43\u0000\u9659\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A44\u0000\u0000"+ - "\u0000\u0000\u0000\u9051\u0000\u0000\u0000\u94BF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90A2\u0000\u0000\u0000"+ - "\u9CAB\u9776\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFC55\uFE45\u94A8\u9A45\uFA4B\u9DE1\u0000\u0000"+ - "\u96D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9774"+ - "\u0000\u0000\uFDF5\u0000\u0000\u0000\u92E5\u0000"+ - "\u9645\u91DA\u0000\u90A3\u0000\u0000\uA05F\u0000"+ - "\u0000\u0000\u0000\u90AF\u97BF\u0000\u0000\u0000"+ - "\u914C\u0000\u0000\u0000\u0000\u967A\u0000\u0000"+ - "\u0000\u91DE\u0000\u0000\u9A46\uFEB0\u9779\u946C"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9858\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9266\u0000\u0000\u0000"+ - "\u93FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A47\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9749\u0000\u0000\u9748\u0000\u934A\u0000\u9CE2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9264\u0000"+ - "\u0000\u0000\u0000\u91DF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFB79\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96D7\u0000\u0000\u0000\u0000"+ - "\u9343\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFDCB\uFE7A\u0000\u91DB\u8C6A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u97AF\u0000\u0000\u95DD\u0000\u0000\u0000"+ - "\u9348\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A4B"+ - "\u0000\u0000\u0000\uFC45\u0000\u9A4D\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u91BC\u90E2\u90B4\u95E1"+ - "\u0000\u0000\u0000\u0000\u0000\u9A4E\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A4F\u0000"+ - "\u0000\u0000\uFE40\uFE43\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96DD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A51\u0000\u0000\u0000"+ - "\u96A7\u0000\u0000\u90B0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9C4E\u0000\u9443"+ - "\u0000\u0000\u0000\u0000\u8EBA\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A52\u0000\uFCC1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BE9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9CAF"+ - "\u0000\u0000\u8BFD\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9ABC\u0000\u9AB8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9AA7\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A53\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9D74"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BEA\u0000\u0000\u0000\u0000\u0000\u0000\u8BEB"+ - "\u0000\u0000\u0000\u0000\u0000\u90B2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u95E9\u95E8"+ - "\u0000\u95E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90B5\u0000\u9A54\u0000\u0000\u0000\u90B3\u95E7"+ - "\u0000\u0000\u8B50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8BEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9A56\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - -/* - private final static String innerIndex7= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+ - "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+ - "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+ - "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BC4\u0000\u0000\u0000\u8C66\u0000\u90DE"+ - "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+ - "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+ - "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+ - "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+ - "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+ - "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+ - "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+ - "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+ - "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+ - "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+ - "\u8CC9\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+ - "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+ - "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+ - "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+ - "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+ - "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+ - "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+ - "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+ - "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+ - "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+ - "\u8CBE\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+ - "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+ - "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+ - "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+ - "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+ - "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+ - "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+ - "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+ - "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+ - "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+ - "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+ - "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+ - "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+ - "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+ - "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+ - "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+ - "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+ - "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+ - "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+ - "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+ - "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+ - "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+ - "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+ - "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+ - "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+ - "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+ - "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+ - "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+ - "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+ - "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+ - "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+ - "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C8\u0000\u0000\u0000\u0000\u0000\u8DAA"+ - "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFA40\u0000\uFA42\uFA43\u0000\u0000\u0000\u0000"+ - "\u0000\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+ - "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+ - "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+ - "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFA6D\uFA6E\u0000"+ - "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+ - "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFAA7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+ - "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+ - "\u0000\u0000\u0000\u0000\uFACE\u0000\u0000\u0000"+ - "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+ - "\uFADA\u0000\u0000\u0000\u0000\uFADF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFAE9"+ - "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+ - "\u0000\uFAFB\uFAFC\u0000\uFAFE\uFB40\uFB41\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+ - "\u0000\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFB5D\u0000\uFB5F\u0000\uFB61\u0000"+ - "\u0000\u0000\u0000\uFB66\u0000\uFB68\u0000\uFB6A"+ - "\uFB6B\u0000\uFB6D\u0000\u0000\u0000\u0000\u0000"+ - "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBA1\u0000\u0000\uFBA4"+ - "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+ - "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+ - "\u0000\u0000\uFBB7\u0000\u0000\u0000\u0000\u0000"+ - "\uFBBD\uFBBE\u0000\uFBC0\u0000\uFBC2\u0000\u0000"+ - "\u0000\u0000\u0000\uFBC8\u0000\u0000\uFBCB\u0000"+ - "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\u0000\u0000"+ - "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+ - "\u0000\uFBE6\u0000\u0000\u0000\u0000\uFBEB\uFBEC"+ - "\uFBED\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+ - "\u0000\uFBFE\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC47\uFC48\u0000\u0000\uFC4B\u0000\uFC4D"+ - "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+ - "\uFC56\u0000\u0000\u0000\uFC5A\uFC5B\uFC5C\uFC5D"+ - "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\u0000\u0000"+ - "\u0000\u0000\uFC68\u0000\u0000\u0000\u0000\u0000"+ - "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+ - "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\u0000\uFCA7"+ - "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+ - "\u0000\uFCB1\u0000\uFCB3\u0000\u0000\u0000\uFCB7"+ - "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCC7"+ - "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\u0000"+ - "\u0000\u0000\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+ - "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+ - "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+ - "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\u0000\u0000"+ - "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+ - "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+ - "\u0000\u0000\uFD4B\u0000\u0000\u0000\uFD4F\u0000"+ - "\u0000\u0000\u0000\uFD54\u0000\u0000\u0000\uFD58"+ - "\uFD59\u0000\uFD5B\u0000\u0000\u0000\u0000\uFD60"+ - "\u0000\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+ - "\uFD69\uFD6A\uFD6B\u0000\u0000\uFD6E\u0000\uFD70"+ - "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+ - "\uFD79\u0000\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\u0000"+ - "\u0000\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+ - "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+ - "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+ - "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+ - "\u0000\u0000\u0000\uFDC6\u0000\uFDC8\uFDC9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFDD0\u0000\u0000"+ - "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+ - "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+ - "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+ - "\u0000\u0000\uFE4E\u0000\u0000\u0000\u0000\u0000"+ - "\uFE54\uFE55\u0000\uFE57\u0000\u0000\u0000\u0000"+ - "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+ - "\u0000\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+ - "\u0000\uFE6D\u0000\u0000\uFE70\u0000\uFE72\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+ - "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+ - "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+ - "\u0000\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\u0000"+ - "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+ - "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+ - "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+ - "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+ - "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+ - "\uFEF6\u0000\u0000\u0000\uFEFA\u0000\u0000\uFEFD"+ - "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u0000\u0000"+ - "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+ - "\u0000\u0000\u0000\u0000\u0000\u8E54\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8E5B\u0000\u0000\u0000"+ - "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+ - "\u0000\u0000\u0000\u8E6A\u0000\u8E6C\u0000\u0000"+ - "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+ - "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u0000\u0000"+ - "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+ - "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u0000\u8EC8"+ - "\u0000\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u0000"+ - "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+ - "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+ - "\u8EE9\u0000\u8EEB\u8EEC\u0000\u0000\u8EEF\u8EF0"+ - "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+ - "\u8EF9\u8EFA\u0000\u0000\u8EFD\u0000\u0000\u0000"+ - "\u0000\u8F43\u8F44\u0000\u8F46\u8F47\u0000\u0000"+ - "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u0000\u0000"+ - "\u0000\u0000\u0000\u8F55\u0000\u0000\u0000\u0000"+ - "\u8F5A\u0000\u0000\u0000\u8F5E\u8F5F\u0000\u8F61"+ - "\u0000\u0000\u0000\u0000\u0000\u8F67\u0000\u0000"+ - "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8F73\u0000\u8F75\u0000\u0000\u0000\u8F79"+ - "\u0000\u0000\u0000\u0000\u0000\u8FA1\u8FA2\u0000"+ - "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u0000\u0000\u0000"+ - "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+ - "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u0000"+ - "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+ - "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u0000"+ - "\u0000\u0000\u8FEE\u8FEF\u8FF0\u0000\u8FF2\u0000"+ - "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+ - "\u8FFC\u0000\u0000\u0000\u9041\u9042\u9043\u0000"+ - "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+ - "\u0000\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+ - "\u905D\u905E\u905F\u0000\u9061\u0000\u9063\u9064"+ - "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9073\u9074"+ - "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+ - "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+ - "\u0000\u90A8\u90A9\u0000\u0000\u90AC\u90AD\u90AE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90B8\u90B9\u90BA\u90BB\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90C2\u0000\u0000\u0000\u90C6"+ - "\u0000\u0000\u0000\u90CA\u90CB\u90CC\u90CD\u90CE"+ - "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+ - "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+ - "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u90FB\u0000\u90FD\u90FE"+ - "\u9140\u0000\u0000\u0000\u0000\u0000\u9146\u9147"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u0000"+ - "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+ - "\u0000\u9159\u915A\u0000\u0000\u915D\u0000\u0000"+ - "\u0000\u0000\u9162\u0000\u0000\u9165\u0000\u9167"+ - "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+ - "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+ - "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+ - "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91B1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u91B8\u0000"+ - "\u0000\u0000\u0000\u91BD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u91CE\u91CF\u0000\u91D1"+ - "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+ - "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+ - "\u0000\u0000\u0000\u0000\u0000\u91E7\u91E8\u0000"+ - "\u91EA\u0000\u91EC\u91ED\u0000\u91EF\u91F0\u91F1"+ - "\u0000\u91F3\u91F4\u0000\u91F6\u91F7\u91F8\u0000"+ - "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+ - "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+ - "\u924B\u0000\u924D\u924E\u924F\u0000\u0000\u0000"+ - "\u0000\u0000\u9255\u0000\u0000\u9258\u9259\u925A"+ - "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+ - "\u9263\u0000\u9265\u0000\u0000\u0000\u0000\u926A"+ - "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+ - "\u9273\u0000\u9275\u9276\u0000\u0000\u9279\u927A"+ - "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+ - "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+ - "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+ - "\u0000\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+ - "\u0000\u92C6\u0000\u0000\u0000\u0000\u92CB\u92CC"+ - "\u92CD\u92CE\u0000\u92D0\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u92D8\u92D9\u0000\u0000\u0000"; - */ - private final static String innerIndex7= - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BFB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A57\u0000\u0000\u0000\u0000"+ - "\uA0AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FA6\u0000\u0000\u0000\u99CC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9C59\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99B5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90BE\u0000\u0000\u0000\u0000"+ - "\u0000\u9FAF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u95F2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90BF\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90C1\u0000\uFEE4\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90C4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u90C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92E4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9F52\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u90DB\u0000\u0000\u0000\u0000"+ - "\u0000\uA066\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90D2\u0000\u0000\u0000\u0000\u90D4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9A5B\u95FD\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8BC4\u0000\u0000\u0000\u8C66\u0000\u90DE"+ - "\u0000\u0000\u0000\u0000\u0000\u9CE4\u0000\u90E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9E46\u0000\u0000"+ - "\u0000\u9651\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFB58"+ - "\u0000\u90E6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9650\u0000\u0000\u0000\u90E7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u90E8\u9A5D\u0000\u9F7A\u0000\u0000\u0000"+ - "\u9B5C\u0000\u9F7C\u0000\u0000\uFC52\u90E9\u0000"+ - "\u90EA\u0000\u9A5E\u0000\u0000\u0000\u0000\u0000"+ - "\u9F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u90EB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90EC\u0000\u0000\u0000\u0000\u0000\u8BEE\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90EE\u0000"+ - "\u0000\u0000\u91C6\u0000\u0000\u90F2\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCBC\u8A74\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9657"+ - "\u0000\u0000\u0000\u9CEF\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FDF\u0000"+ - "\u0000\u0000\u0000\u90F7\u90F6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9B5E"+ - "\u0000\u0000\u0000\u90F8\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90F9\u0000"+ - "\u8CC9\u0000\u0000\u0000\uFA6A\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BEF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9FE0\u0000\u0000\u9142"+ - "\u0000\u9A62\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9569\u0000\u0000\u0000\u9144"+ - "\u9143\u0000\u9141\u0000\u0000\u0000\u8BF0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9660\u0000\u8BF1\u0000"+ - "\u99F6\u9149\u0000\u0000\u0000\u0000\u914A\u0000"+ - "\u0000\u0000\u0000\u0000\u914B\u0000\u0000\u0000"+ - "\u0000\u9A64\u0000\u0000\u0000\u8ABF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A66\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A67\u0000\u0000\u9A69\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9A6A"+ - "\u9652\u914D\u0000\u9666\u0000\u0000\u0000\u0000"+ - "\u9F7B\u0000\u9A6B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA06C\u0000\u0000\u9667\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A6C\u0000\u0000"+ - "\u0000\u0000\u9A6D\u8BF2\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u966A\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFCEA\u0000\u0000\u0000"+ - "\u0000\u0000\u966C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91C4\u0000\u0000\u0000\u9677\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99F4\u9A6F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FAB\u0000\u0000\u0000\u0000\u0000"+ - "\u8CBE\u8EC1\u0000\u0000\u0000\u0000\u9555\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9152\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9153\u0000\u0000\u0000"+ - "\u9155\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u955D"+ - "\u0000\u9671\u0000\u0000\u0000\u0000\u9C6D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9673"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9154\u9A71\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9156\u0000\u0000\u0000\u966D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9557\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89C6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89C7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8A6A\u0000\u0000\u0000\u8B57\u0000"+ - "\u0000\u0000\u9FE1\u0000\u0000\u9B5F\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA05D"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u915B\u0000\u915C\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u915E\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9F5C"+ - "\u0000\u0000\u9F57\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F65\u0000\u0000\u0000\u0000\u0000\u9A72"+ - "\u0000\u0000\u0000\u0000\u9160\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F5E\u0000\u0000\u9161\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9164\u0000\u0000\u0000"+ - "\u0000\u9F41\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9169\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9168\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A74\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B2"+ - "\u0000\u9A75\u0000\uFDA5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EE9\u0000\u8BBA\u916D\uA060"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FDE"+ - "\u0000\u0000\u0000\u0000\u0000\u9FC3\u0000\u96B5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA067\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96B3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A76\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95D5\u0000\u0000\u0000\u9ECA\u0000\u0000"+ - "\u0000\u9A77\u0000\u0000\u9A78\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9170"+ - "\u0000\u0000\u916F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA3\u0000\u9171\u0000\u0000\u0000"+ - "\u96B1\u0000\u0000\u0000\u0000\u9F63\u0000\u0000"+ - "\u0000\u0000\u0000\u9F67\u0000\u0000\u0000\u8BB9"+ - "\u9A7A\u0000\u0000\u0000\u0000\u0000\u8B56\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9ADA"+ - "\u0000\u0000\u0000\u0000\u0000\u96B0\u0000\u0000"+ - "\u0000\u0000\u9A7E\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DDE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96AD"+ - "\u0000\u0000\u0000\u96AE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9EA1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9E50\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96AF\u8BF4\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9FA4\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u96BD\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96F4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u96B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAA1\u0000\u0000\u0000"+ - "\u0000\u91A7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA05E\u0000\u0000\u0000"+ - "\u0000\u9A7D\u0000\u0000\u0000\u0000\u8948\u0000"+ - "\u9EB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9DDB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u95BF\u8A73\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9EFE\u0000\u917A\u0000"+ - "\u0000\u0000\u0000\u917B\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u96C2\u0000\u0000"+ - "\u0000\u0000\u0000\u9F77\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AA4\u0000\u0000"+ - "\u9AA5\u0000\u0000\u0000\u91A1\u0000\u0000\u0000"+ - "\u0000\u89B8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9173\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AA6\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u89BD\u0000\u89B9\u0000\u917D\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96BB\u0000\u0000\u0000\u9FF2\u0000\u0000\u8BF5"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9AA9\u0000\u0000\u0000\u0000"+ - "\u0000\u9F54\u0000\u0000\u9FE3\u9EED\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u91AA\u0000\u0000\u0000\u0000\u91AB\uA070\u0000"+ - "\u9F6D\u0000\u0000\u0000\u0000\u0000\u91AC\u0000"+ - "\u0000\u0000\u91AD\u0000\u0000\u0000\uA0FD\u0000"+ - "\u9FE2\u0000\u91AF\u9E41\u9AAA\u0000\u0000\u91B0"+ - "\u0000\u9AAB\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9AAC\u0000\u9A4A"+ - "\u0000\u91B2\u0000\u0000\u8BF6\u0000\u9AAD\u89B6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9AAF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9AB0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9AB1\u0000\u0000\u0000\u0000\u0000\u9AA1\u0000"+ - "\u0000\u0000\u91B9\u0000\u0000\u0000\u0000\u0000"+ - "\u91BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u91BE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA041\u8BB7"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9AB3\u91C3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA0FC\u0000\u0000\u9FEE\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9F69\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u91C8\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u91C9\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8DE6"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u91CB\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89C8\u0000\u0000\uC074\u0000\u0000\u8DAA"+ - "\u0000\u0000\u0000\u0000\u0000\u9FDD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFA40\u0000\uFA42\uFA43\u0000\uFA45\u0000\u0000"+ - "\uFA48\uFA49\uFA4A\u0000\uFA4C\u0000\uFA4E\u0000"+ - "\u0000\u0000\uFA52\uFA53\uFA54\uFA55\uFA56\u0000"+ - "\uFA58\u0000\uFA5A\uFA5B\uFA5C\uFA5D\uFA5E\u0000"+ - "\uFA60\u0000\uFA62\uFA63\u0000\uFA65\u0000\u0000"+ - "\uFA68\u0000\u0000\uFA6B\u0000\uFA6D\uFA6E\u0000"+ - "\uFA70\u0000\uFA72\uFA73\uFA74\uFA75\uFA76\uFA77"+ - "\uFA78\u0000\u0000\uFA7B\uFA7C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAA5\u0000\uFAA7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFAAE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFABC\u0000\uFABE\u0000\u0000\uFAC1"+ - "\uFAC2\uFAC3\u0000\u0000\uFAC6\u0000\uFAC8\u0000"+ - "\u0000\u0000\uFACC\uFACD\uFACE\u0000\uFAD0\u0000"+ - "\u0000\uFAD3\u0000\u0000\uFAD6\uFAD7\u0000\u0000"+ - "\uFADA\u0000\u0000\u0000\u0000\uFADF\uFAE0\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uFAE8\uFAE9"+ - "\u0000\uFAEB\uFAEC\u0000\uFAEE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uFAF5\uFAF6\u0000\u0000\u0000"+ - "\uFAFA\uFAFB\uFAFC\uFAFD\uFAFE\uFB40\uFB41\u0000"+ - "\uFB43\u0000\u0000\u0000\u0000\u0000\uFB49\uFB4A"+ - "\uFB4B\uFB4C\u0000\uFB4E\u0000\u0000\uFB51\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFB5D\uFB5E\uFB5F\u0000\uFB61\u0000"+ - "\u0000\u0000\uFB65\uFB66\u0000\uFB68\u0000\uFB6A"+ - "\uFB6B\u0000\uFB6D\u0000\u0000\uFB70\u0000\u0000"+ - "\uFB73\u0000\u0000\u0000\uFB77\uFB78\u0000\uFB7A"+ - "\u0000\u0000\uFB7D\u0000\uFBA1\u0000\u0000\uFBA4"+ - "\u0000\u0000\uFBA7\uFBA8\uFBA9\uFBAA\u0000\uFBAC"+ - "\uFBAD\uFBAE\u0000\uFBB0\uFBB1\u0000\uFBB3\u0000"+ - "\u0000\uFBB6\uFBB7\u0000\uFBB9\u0000\u0000\u0000"+ - "\uFBBD\uFBBE\uFBBF\uFBC0\uFBC1\uFBC2\u0000\u0000"+ - "\u0000\u0000\u0000\uFBC8\uFBC9\uFBCA\uFBCB\u0000"+ - "\u0000\uFBCE\uFBCF\uFBD0\u0000\u0000\uFBD3\u0000"+ - "\uFBD5\u0000\u0000\u0000\uFBD9\uFBDA\u0000\uFBDC"+ - "\u0000\u0000\u0000\u0000\uFBE1\uFBE2\u0000\u0000"+ - "\u0000\uFBE6\u0000\u0000\u0000\uFBEA\uFBEB\uFBEC"+ - "\uFBED\u0000\uFBEF\uFBF0\u0000\u0000\u0000\u0000"+ - "\uFBF5\uFBF6\u0000\u0000\u0000\u0000\uFBFB\u0000"+ - "\u0000\uFBFE\u0000\u0000\uFC42\u0000\u0000\u0000"+ - "\u0000\uFC47\uFC48\uFC49\uFC4A\uFC4B\u0000\uFC4D"+ - "\uFC4E\u0000\uFC50\u0000\u0000\uFC53\u0000\u0000"+ - "\uFC56\u0000\u0000\uFC59\uFC5A\uFC5B\uFC5C\uFC5D"+ - "\u0000\uFC5F\uFC60\u0000\u0000\uFC63\uFC64\uFC65"+ - "\uFC66\u0000\uFC68\u0000\uFC6A\u0000\u0000\u0000"+ - "\uFC6E\uFC6F\uFC70\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uFC77\uFC78\u0000\u0000\uFC7B\u0000\u0000"+ - "\uFC7E\uFCA1\u0000\uFCA3\uFCA4\u0000\uFCA6\uFCA7"+ - "\uFCA8\u0000\u0000\u0000\u0000\uFCAD\u0000\uFCAF"+ - "\u0000\uFCB1\u0000\uFCB3\uFCB4\u0000\u0000\uFCB7"+ - "\uFCB8\u0000\u0000\uFCBB\u0000\uFCBD\uFCBE\u0000"+ - "\u0000\u0000\uFCC2\u0000\uFCC4\u0000\u0000\uFCC7"+ - "\uFCC8\u0000\u0000\u0000\uFCCC\u0000\uFCCE\uFCCF"+ - "\u0000\uFCD1\uFCD2\u0000\u0000\u0000\uFCD6\u0000"+ - "\uFCD8\uFCD9\u0000\uFCDB\uFCDC\u0000\uFCDE\u0000"+ - "\uFCE0\u0000\u0000\uFCE3\uFCE4\uFCE5\uFCE6\uFCE7"+ - "\u0000\uFCE9\u0000\u0000\uFCEC\uFCED\uFCEE\u0000"+ - "\uFCF0\u0000\u0000\u0000\uFCF4\uFCF5\u0000\uFCF7"+ - "\u0000\u0000\u0000\u0000\uFCFC\uFCFD\u0000\uFD40"+ - "\u0000\u0000\uFD43\u0000\u0000\uFD46\u0000\u0000"+ - "\uFD49\uFD4A\uFD4B\uFD4C\u0000\u0000\uFD4F\uFD50"+ - "\u0000\u0000\uFD53\uFD54\u0000\u0000\u0000\uFD58"+ - "\uFD59\u0000\uFD5B\u0000\uFD5D\u0000\u0000\uFD60"+ - "\uFD61\u0000\uFD63\u0000\u0000\u0000\uFD67\u0000"+ - "\uFD69\uFD6A\uFD6B\uFD6C\u0000\uFD6E\u0000\uFD70"+ - "\u0000\u0000\uFD73\uFD74\uFD75\u0000\u0000\u0000"+ - "\uFD79\uFD7A\uFD7B\uFD7C\uFD7D\uFD7E\uFDA1\uFDA2"+ - "\uFDA3\uFDA4\u0000\uFDA6\uFDA7\u0000\u0000\uFDAA"+ - "\uFDAB\uFDAC\u0000\u0000\u0000\u0000\uFDB1\uFDB2"+ - "\uFDB3\u0000\uFDB5\u0000\u0000\u0000\u0000\uFDBA"+ - "\u0000\uFDBC\u0000\uFDBE\u0000\u0000\u0000\uFDC2"+ - "\u0000\uFDC4\u0000\uFDC6\u0000\uFDC8\uFDC9\uFDCA"+ - "\u0000\u0000\u0000\uFDCE\u0000\uFDD0\uFDD1\u0000"+ - "\uFDD3\u0000\uFDD5\uFDD6\uFDD7\uFDD8\uFDD9\uFDDA"+ - "\u0000\uFDDC\uFDDD\uFDDE\uFDDF\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uFDE8\uFDE9\u0000"+ - "\u0000\uFDEC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFDF3\u0000\u0000\uFDF6\u0000\uFDF8\uFDF9\uFDFA"+ - "\u0000\uFDFC\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uFE46\u0000\u0000\uFE49\u0000\u0000"+ - "\u0000\uFE4D\uFE4E\u0000\u0000\u0000\u0000\u0000"+ - "\uFE54\uFE55\uFE56\uFE57\u0000\u0000\u0000\u0000"+ - "\uFE5C\uFE5D\u0000\u0000\uFE60\uFE61\uFE62\u0000"+ - "\uFE64\uFE65\uFE66\uFE67\u0000\u0000\u0000\uFE6B"+ - "\u0000\uFE6D\uFE6E\u0000\uFE70\u0000\uFE72\u0000"+ - "\u0000\u0000\u0000\u0000\uFE78\u0000\u0000\u0000"+ - "\u0000\uFE7D\uFE7E\uFEA1\uFEA2\uFEA3\u0000\uFEA5"+ - "\uFEA6\u0000\uFEA8\u0000\u0000\u0000\uFEAC\uFEAD"+ - "\u0000\uFEAF\u0000\u0000\u0000\u0000\u0000\uFEB5"+ - "\uFEB6\uFEB7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uFEC2\u0000\u0000\uFEC5"+ - "\uFEC6\uFEC7\u0000\u0000\u0000\u0000\uFECC\u0000"+ - "\uFECE\uFECF\uFED0\u0000\u0000\u0000\u0000\uFED5"+ - "\u0000\uFED7\u0000\uFED9\uFEDA\uFEDB\u0000\u0000"+ - "\uFEDE\uFEDF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uFEE6\u0000\u0000\u0000\uFEEA\u0000\u0000\uFEED"+ - "\uFEEE\uFEEF\u0000\u0000\u0000\u0000\uFEF4\u0000"+ - "\uFEF6\u0000\u0000\u0000\uFEFA\uFEFB\u0000\uFEFD"+ - "\u0000\u8E40\u0000\u8E42\u0000\u8E44\u8E45\u0000"+ - "\u8E47\u0000\u0000\u8E4A\u8E4B\u0000\u0000\u8E4E"+ - "\u0000\u0000\u0000\u0000\u0000\u8E54\u8E55\u0000"+ - "\u0000\u0000\u8E59\u0000\u8E5B\u0000\u0000\u0000"+ - "\u8E5F\u8E60\u0000\u0000\u0000\u8E64\u8E65\u0000"+ - "\u0000\u0000\u0000\u8E6A\u8E6B\u8E6C\u0000\u0000"+ - "\u0000\u0000\u8E71\u0000\u0000\u8E74\u0000\u0000"+ - "\u8E77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8EA2\u8EA3\u0000\u8EA5\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8EAC\u8EAD\u0000\u8EAF\u0000"+ - "\u8EB1\u0000\u8EB3\u0000\u8EB5\u8EB6\u0000\u0000"+ - "\u8EB9\u0000\u0000\u0000\u0000\u0000\u0000\u8EC0"+ - "\u0000\u0000\u8EC3\u0000\u8EC5\u8EC6\u8EC7\u8EC8"+ - "\u8EC9\u8ECA\u0000\u8ECC\u0000\u0000\u0000\u0000"+ - "\u0000\u8ED2\u8ED3\u0000\u0000\u0000\u8ED7\u8ED8"+ - "\u8ED9\u8EDA\u8EDB\u0000\u0000\u8EDE\u0000\u0000"+ - "\u0000\u8EE2\u0000\u8EE4\u8EE5\u0000\u8EE7\u0000"+ - "\u8EE9\u0000\u8EEB\u8EEC\u8EED\u0000\u8EEF\u8EF0"+ - "\u8EF1\u0000\u8EF3\u0000\u0000\u8EF6\u8EF7\u8EF8"+ - "\u8EF9\u8EFA\u0000\u0000\u8EFD\u8EFE\u0000\u0000"+ - "\u0000\u8F43\u8F44\u8F45\u8F46\u8F47\u0000\u0000"+ - "\u0000\u8F4B\u8F4C\u8F4D\u8F4E\u8F4F\u8F50\u0000"+ - "\u0000\u0000\u8F54\u8F55\u0000\u0000\u0000\u8F59"+ - "\u8F5A\u0000\u0000\u8F5D\u8F5E\u8F5F\u0000\u8F61"+ - "\u0000\u8F63\u8F64\u0000\u0000\u8F67\u0000\u0000"+ - "\u8F6A\u8F6B\u8F6C\u0000\u0000\u0000\u8F70\u0000"+ - "\u0000\u8F73\u8F74\u8F75\u8F76\u0000\u0000\u8F79"+ - "\u8F7A\u0000\u8F7C\u0000\u0000\u8FA1\u8FA2\u0000"+ - "\u8FA4\u0000\u8FA6\u8FA7\u8FA8\u8FA9\u0000\u8FAB"+ - "\u8FAC\u0000\u8FAE\u0000\u0000\u8FB1\u0000\u8FB3"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8FBA\u0000"+ - "\u0000\u8FBD\u8FBE\u8FBF\u0000\u0000\u8FC2\u0000"+ - "\u0000\u0000\u0000\u0000\u8FC8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8FCF\u0000\u8FD1\u8FD2\u0000"+ - "\u0000\u0000\u0000\u8FD7\u0000\u8FD9\u8FDA\u8FDB"+ - "\u8FDC\u0000\u0000\u0000\u8FE0\u8FE1\u0000\u0000"+ - "\u0000\u0000\u8FE6\u0000\u0000\u0000\u8FEA\u8FEB"+ - "\u0000\u0000\u8FEE\u8FEF\u8FF0\u8FF1\u8FF2\u0000"+ - "\u8FF4\u8FF5\u0000\u0000\u8FF8\u0000\u0000\u0000"+ - "\u8FFC\u8FFD\u0000\u0000\u9041\u9042\u9043\u9044"+ - "\u9045\u9046\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u904E\u904F\u0000\u0000\u9052\u9053\u0000"+ - "\u9055\u9056\u9057\u9058\u0000\u905A\u0000\u905C"+ - "\u905D\u905E\u905F\u9060\u9061\u0000\u9063\u9064"+ - "\u0000\u9066\u9067\u0000\u9069\u0000\u906B\u0000"+ - "\u0000\u0000\u906F\u0000\u0000\u0000\u9073\u9074"+ - "\u0000\u0000\u0000\u0000\u9079\u0000\u907B\u907C"+ - "\u907D\u907E\u90A1\u0000\u0000\u90A4\u90A5\u0000"+ - "\u0000\u90A8\u90A9\u90AA\u0000\u90AC\u90AD\u90AE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u90B7\u90B8\u90B9\u90BA\u90BB\u90BC\u0000\u0000"+ - "\u0000\u90C0\u0000\u90C2\u0000\u0000\u0000\u90C6"+ - "\u0000\u0000\u90C9\u90CA\u90CB\u90CC\u90CD\u90CE"+ - "\u90CF\u90D0\u90D1\u0000\u0000\u0000\u90D5\u90D6"+ - "\u90D7\u90D8\u0000\u0000\u0000\u0000\u90DD\u0000"+ - "\u0000\u90E0\u0000\u0000\u0000\u90E4\u90E5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u90ED\u0000"+ - "\u0000\u90F0\u0000\u0000\u90F3\u90F4\u90F5\u0000"+ - "\u0000\u0000\u0000\u90FA\u90FB\u90FC\u90FD\u90FE"+ - "\u9140\u0000\u0000\u0000\u0000\u9145\u9146\u9147"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u914E\u914F"+ - "\u9150\u9151\u0000\u0000\u0000\u0000\u0000\u9157"+ - "\u9158\u9159\u915A\u0000\u0000\u915D\u0000\u915F"+ - "\u0000\u0000\u9162\u0000\u0000\u9165\u9166\u9167"+ - "\u0000\u0000\u916A\u0000\u916C\u0000\u916E\u0000"+ - "\u0000\u0000\u9172\u0000\u9174\u9175\u9176\u9177"+ - "\u9178\u9179\u0000\u0000\u917C\u0000\u0000\u0000"+ - "\u91A2\u91A3\u91A4\u91A5\u91A6\u0000\u91A8\u91A9"+ - "\u0000\u0000\u0000\u0000\u91AE\u0000\u0000\u91B1"+ - "\u0000\u91B3\u91B4\u91B5\u0000\u91B7\u91B8\u0000"+ - "\u0000\u91BB\u0000\u91BD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u91C5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u91CD\u91CE\u91CF\u0000\u91D1"+ - "\u91D2\u91D3\u0000\u91D5\u91D6\u0000\u91D8\u91D9"+ - "\u0000\u0000\u91DC\u0000\u0000\u0000\u91E0\u91E1"+ - "\u0000\u91E3\u0000\u0000\u0000\u91E7\u91E8\u0000"+ - "\u91EA\u0000\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1"+ - "\u91F2\u91F3\u91F4\u91F5\u91F6\u91F7\u91F8\u91F9"+ - "\u91FA\u0000\u91FC\u91FD\u91FE\u9240\u9241\u0000"+ - "\u9243\u0000\u0000\u9246\u9247\u9248\u9249\u924A"+ - "\u924B\u924C\u924D\u924E\u924F\u0000\u9251\u9252"+ - "\u9253\u0000\u9255\u0000\u9257\u9258\u9259\u925A"+ - "\u925B\u925C\u0000\u0000\u925F\u0000\u9261\u9262"+ - "\u9263\u0000\u9265\u0000\u0000\u0000\u9269\u926A"+ - "\u0000\u926C\u926D\u0000\u0000\u9270\u0000\u9272"+ - "\u9273\u9274\u9275\u9276\u9277\u0000\u9279\u927A"+ - "\u927B\u0000\u927D\u0000\u0000\u0000\u0000\u0000"+ - "\u92A5\u92A6\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92B4"+ - "\u92B5\u92B6\u0000\u92B8\u92B9\u0000\u0000\u92BC"+ - "\u92BD\u92BE\u92BF\u92C0\u0000\u92C2\u92C3\u0000"+ - "\u0000\u92C6\u0000\u0000\u92C9\u0000\u92CB\u92CC"+ - "\u92CD\u92CE\u0000\u92D0\u0000\u92D2\u0000\u0000"+ - "\u0000\u0000\u92D7\u92D8\u92D9\u0000\u92DB\u0000"; - - /* - private final static String innerIndex8= - "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u92EC"+ - "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92F6\u92F7\u92F8\u92F9\u0000\u0000\u0000"+ - "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+ - "\u0000\u0000\u0000\u9349\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+ - "\u9356\u0000\u9358\u0000\u935A\u0000\u0000\u935D"+ - "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+ - "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+ - "\u0000\u0000\u9370\u9371\u9372\u9373\u0000\u9375"+ - "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+ - "\u937E\u0000\u93A2\u93A3\u0000\u93A5\u93A6\u93A7"+ - "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+ - "\u0000\u93B1\u0000\u0000\u0000\u0000\u93B6\u93B7"+ - "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+ - "\u93C0\u0000\u0000\u93C3\u93C4\u93C5\u93C6\u93C7"+ - "\u93C8\u0000\u93CA\u93CB\u93CC\u0000\u93CE\u93CF"+ - "\u93D0\u0000\u93D2\u0000\u0000\u0000\u93D6\u93D7"+ - "\u0000\u93D9\u93DA\u0000\u93DC\u0000\u93DE\u93DF"+ - "\u0000\u93E1\u93E2\u0000\u0000\u0000\u93E6\u0000"+ - "\u0000\u0000\u0000\u0000\u93EC\u93ED\u0000\u0000"+ - "\u0000\u0000\u93F2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+ - "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+ - "\u0000\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+ - "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+ - "\u9461\u9462\u0000\u0000\u9465\u9466\u9467\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u946F\u0000"+ - "\u0000\u0000\u9473\u9474\u0000\u0000\u0000\u9478"+ - "\u0000\u0000\u947B\u947C\u947D\u0000\u0000\u94A2"+ - "\u0000\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+ - "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+ - "\u94B3\u94B4\u0000\u94B6\u0000\u0000\u0000\u94BA"+ - "\u94BB\u0000\u94BD\u94BE\u0000\u94C0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u94C7\u94C8\u0000\u0000"+ - "\u0000\u0000\u0000\u94CE\u0000\u0000\u0000\u94D2"+ - "\u0000\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+ - "\u0000\u0000\u0000\u0000\u94DF\u94E0\u0000\u0000"+ - "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+ - "\u0000\u0000\u0000\u0000\u0000\u94F0\u94F1\u94F2"+ - "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+ - "\u0000\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+ - "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+ - "\u9554\u0000\u0000\u0000\u0000\u9559\u0000\u955B"+ - "\u955C\u0000\u955E\u0000\u9560\u9561\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+ - "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u0000"+ - "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+ - "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+ - "\u95AE\u95AF\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+ - "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95CA\u0000\u0000\u0000"+ - "\u0000\u0000\u95D0\u0000\u0000\u0000\u95D4\u0000"+ - "\u0000\u95D7\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u95DE\u0000\u95E0\u0000\u95E2\u95E3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95EA\u0000\u0000\u95ED"+ - "\u95EE\u95EF\u0000\u95F1\u0000\u95F3\u95F4\u95F5"+ - "\u0000\u95F7\u95F8\u95F9\u0000\u0000\u0000\u0000"+ - "\u95FE\u0000\u0000\u9642\u9643\u0000\u0000\u9646"+ - "\u9647\u9648\u9649\u0000\u0000\u0000\u0000\u0000"+ - "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+ - "\u0000\u9658\u0000\u965A\u0000\u0000\u965D\u965E"+ - "\u965F\u0000\u9661\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9668\u0000\u0000\u0000\u0000\u0000\u966E"+ - "\u966F\u0000\u0000\u0000\u0000\u9674\u0000\u9676"+ - "\u0000\u0000\u0000\u0000\u0000\u967C\u0000\u967E"+ - "\u96A1\u0000\u96A3\u96A4\u0000\u0000\u0000\u0000"+ - "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+ - "\u0000\u96BA\u0000\u0000\u0000\u96BE\u96BF\u96C0"+ - "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u0000"+ - "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+ - "\u0000\u96D2\u96D3\u0000\u96D5\u0000\u0000\u0000"+ - "\u0000\u96DA\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u96F8"+ - "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+ - "\u0000\u0000\u9744\u0000\u0000\u9747\u0000\u0000"+ - "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+ - "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+ - "\u975A\u0000\u0000\u0000\u0000\u975F\u9760\u0000"+ - "\u9762\u0000\u0000\u0000\u0000\u9767\u9768\u9769"+ - "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+ - "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+ - "\u977A\u977B\u0000\u977D\u0000\u97A1\u97A2\u0000"+ - "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+ - "\u97AC\u97AD\u0000\u0000\u0000\u97B1\u97B2\u0000"+ - "\u97B4\u97B5\u97B6\u0000\u0000\u97B9\u0000\u0000"+ - "\u0000\u97BD\u97BE\u0000\u0000\u97C1\u0000\u0000"+ - "\u0000\u0000\u0000\u97C7\u0000\u0000\u97CA\u0000"+ - "\u97CC\u0000\u0000\u97CF\u0000\u0000\u0000\u97D3"+ - "\u97D4\u0000\u0000\u0000\u97D8\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u97E3"+ - "\u97E4\u0000\u0000\u0000\u97E8\u0000\u97EA\u97EB"+ - "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+ - "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+ - "\u0000\u0000\u0000\u9840\u9841\u9842\u9843\u0000"+ - "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+ - "\u0000\u984E\u0000\u0000\u9851\u9852\u0000\u0000"+ - "\u9855\u0000\u0000\u0000\u0000\u985A\u0000\u0000"+ - "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+ - "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+ - "\u986D\u986E\u0000\u0000\u9871\u0000\u0000\u9874"+ - "\u9875\u0000\u0000\u0000\u0000\u0000\u987B\u987C"+ - "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+ - "\u98A7\u0000\u98A9\u98AA\u0000\u98AC\u0000\u0000"+ - "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+ - "\u0000\u0000\u98B9\u0000\u0000\u0000\u98BD\u0000"+ - "\u0000\u98C0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u98DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u995F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+ - "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+ - "\u0000\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+ - "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+ - "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+ - "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+ - "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+ - "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u0000"+ - "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+ - "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+ - "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+ - "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u0000"+ - "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+ - "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+ - "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+ - "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+ - "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+ - "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+ - "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+ - "\u9BA8\u0000\u0000\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+ - "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+ - "\u0000\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u0000\u9BBF"+ - "\u9BC0\u9BC1\u0000\u9BC3\u0000\u9BC5\u0000\u9BC7"+ - "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+ - "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+ - "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u0000"+ - "\u9BE0\u9BE1\u9BE2\u0000\u9BE4\u9BE5\u9BE6\u9BE7"+ - "\u9BE8\u0000\u0000\u9BEB\u0000\u9BED\u0000\u9BEF"+ - "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+ - "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+ - "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+ - "\u9C49\u0000\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+ - "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+ - "\u0000\u0000\u9C5B\u0000\u0000\u9C5E\u9C5F\u9C60"+ - "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+ - "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u0000\u9C70"+ - "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+ - "\u0000\u9C7A\u0000\u0000\u9C7D\u0000\u0000\u9CA2"+ - "\u9CA3\u9CA4\u0000\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+ - "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+ - "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9CC0\u9CC1\u0000"+ - "\u9CC3\u9CC4\u0000\u0000\u9CC7\u0000\u9CC9\u9CCA"+ - "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u0000\u9CD2"+ - "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+ - "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+ - "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+ - "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+ - "\u0000\u0000\u0000\u9CF6\u9CF7\u0000\u0000\u9CFA"+ - "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+ - "\u9D44\u9D45\u0000\u9D47\u9D48\u0000\u0000\u9D4B"+ - "\u0000\u0000\u9D4E\u0000\u9D50\u0000\u9D52\u9D53"+ - "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+ - "\u9D5C\u0000\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+ - "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+ - "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u0000"+ - "\u0000\u9D75\u0000\u9D77\u0000\u0000\u9D7A\u0000"+ - "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9DAB\u9DAC\u0000"+ - "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u0000"+ - "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+ - "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+ - "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u0000\u9DCD"+ - "\u0000\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+ - "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+ - "\u0000\u0000\u0000\u0000\u9DF2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+ - "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E4F\u0000\u9E51\u0000\u0000\u9E54\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E63\u0000\u0000\u9E66"+ - "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+ - "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+ - "\u9E77\u0000\u9E79\u0000\u9E7B\u9E7C\u9E7D\u0000"+ - "\u0000\u0000\u9EA3\u0000\u9EA5\u9EA6\u9EA7\u9EA8"+ - "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EBC\u0000\u9EBE\u0000\u0000"+ - "\u0000\u9EC2\u9EC3\u0000\u0000\u9EC6\u0000\u9EC8"+ - "\u0000\u0000\u9ECB\u9ECC\u0000\u9ECE\u9ECF\u9ED0"+ - "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+ - "\u9ED9\u0000\u0000\u0000\u0000\u0000\u0000\u9EE0"+ - "\u0000\u0000\u9EE3\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9EEC\u0000\u0000\u0000\u0000"+ - "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+ - "\u9EF9\u0000\u9EFB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+ - "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+ - "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9FAA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+ - "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+ - "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+ - "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+ - "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+ - "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA04F\u0000\u0000\u0000\u0000\u0000"+ - "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uA06D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA07B\u0000"+ - "\u0000\u0000\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+ - "\uA0A7\u0000\u0000\u0000\uA0AB\u0000\u0000\u0000"+ - "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+ - "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D8\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\u0000"+ - "\u0000\u0000\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+ - "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+ - "\uA0F7\uA0F8\u0000\u0000\uA0FB\u0000\u0000\uA0FE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+ - "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+ - "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+ - "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+ - "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u89BB\u89BC\u0000\u89BE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8A40\u0000\u0000"+ - "\u8A43\u8A44\u8A45\u0000\u8A47\u0000\u8A49\u0000"+ - "\u8A4B\u8A4C\u0000\u8A4E\u0000\u8A50\u0000\u0000"+ - "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+ - "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+ - "\u0000\u8A64\u8A65\u8A66\u0000\u8A68\u8A69\u0000"+ - "\u0000\u8A6C\u0000\u0000\u8A6F\u8A70\u8A71\u8A72"+ - "\u0000\u0000\u0000\u0000\u8A77\u0000\u0000\u8A7A"+ - "\u8A7B\u8A7C\u0000\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+ - "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u0000"+ - "\u8AAD\u0000\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+ - "\u8AB5\u8AB6\u0000\u0000\u0000\u0000\u0000\u8ABC"+ - "\u8ABD\u0000\u0000\u8AC0\u0000\u0000\u8AC3\u0000"+ - "\u0000\u0000\u0000\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+ - "\u0000\u8ACE\u8ACF\u0000\u0000\u8AD2\u0000\u8AD4"+ - "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u0000\u0000\u8ADC"+ - "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+ - "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u0000\u8AEC"+ - "\u8AED\u8AEE\u8AEF\u0000\u8AF1\u8AF2\u8AF3\u8AF4"+ - "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u0000\u8AFC"+ - "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+ - "\u8B46\u0000\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+ - "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+ - "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+ - "\u8B5E\u0000\u0000\u0000\u8B62\u0000\u8B64\u8B65"+ - "\u8B66\u8B67\u0000\u8B69\u0000\u8B6B\u0000\u8B6D"+ - "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+ - "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+ - "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u0000\u8BA7"+ - "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+ - "\u0000\u0000\u8BB2\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8BBB\u8BBC\u0000\u0000\u0000"+ - "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+ - "\u0000\u0000\u0000\u8BDB\u0000\u0000\u8BDE\u0000"+ - "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+ - "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8C42\u8C43\u0000\u0000\u8C46\u0000\u0000"+ - "\u0000\u8C4A\u0000\u8C4C\u0000\u8C4E\u0000\u0000"+ - "\u0000\u0000\u0000\u8C54\u8C55\u0000\u8C57\u0000"+ - "\u0000\u0000\u0000\u8C5C\u0000\u0000\u8C5F\u0000"+ - "\u0000\u0000\u0000\u8C64\u8C65\u0000\u0000\u0000"+ - "\u8C69\u0000\u0000\u8C6C\u8C6D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C74\u0000\u0000\u0000\u0000"+ - "\u8C79\u0000\u0000\u0000\u8C7D\u0000\u8CA1\u0000"+ - "\u0000\u8CA4\u0000\u0000\u0000\u8CA8\u0000\u0000"+ - "\u8CAB\u0000\u0000\u0000\u8CAF\u8CB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CB7\u0000\u8CB9\u0000"+ - "\u8CBB\u0000\u0000\u0000\u0000\u8CC0\u8CC1\u8CC2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CCF\u0000\u8CD1\u0000"+ - "\u8CD3\u0000\u8CD5\u8CD6\u8CD7\u8CD8\u0000\u8CDA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8DEC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DFB\u0000\u0000"+ - "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+ - "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - */ - private final static String innerIndex8= - "\u92DD\u0000\u92DF\u0000\u92E1\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u92E9\u0000\u0000\u92EC"+ - "\u92ED\u92EE\u92EF\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u92F6\u92F7\u92F8\u92F9\u92FA\u0000\u0000"+ - "\u0000\u92FE\u0000\u9341\u9342\u0000\u0000\u9345"+ - "\u0000\u9347\u0000\u9349\u0000\u934B\u0000\u0000"+ - "\u0000\u0000\u9350\u9351\u9352\u0000\u0000\u9355"+ - "\u9356\u9357\u9358\u9359\u935A\u935B\u0000\u935D"+ - "\u935E\u935F\u9360\u0000\u0000\u9363\u9364\u0000"+ - "\u9366\u0000\u0000\u9369\u0000\u0000\u936C\u936D"+ - "\u0000\u936F\u9370\u9371\u9372\u9373\u0000\u9375"+ - "\u9376\u9377\u0000\u0000\u0000\u937B\u937C\u937D"+ - "\u937E\u0000\u93A2\u93A3\u93A4\u93A5\u93A6\u93A7"+ - "\u93A8\u0000\u93AA\u0000\u0000\u0000\u93AE\u93AF"+ - "\u0000\u93B1\u0000\u0000\u0000\u93B5\u93B6\u93B7"+ - "\u93B8\u93B9\u0000\u93BB\u93BC\u93BD\u0000\u93BF"+ - "\u93C0\u93C1\u93C2\u93C3\u93C4\u93C5\u93C6\u93C7"+ - "\u93C8\u0000\u93CA\u93CB\u93CC\u93CD\u93CE\u93CF"+ - "\u93D0\u0000\u93D2\u0000\u93D4\u0000\u93D6\u93D7"+ - "\u0000\u93D9\u93DA\u0000\u93DC\u93DD\u93DE\u93DF"+ - "\u93E0\u93E1\u93E2\u0000\u93E4\u0000\u93E6\u0000"+ - "\u0000\u93E9\u0000\u93EB\u93EC\u93ED\u0000\u0000"+ - "\u0000\u0000\u93F2\u0000\u0000\u0000\u93F6\u0000"+ - "\u0000\u93F9\u93FA\u0000\u0000\u93FD\u93FE\u0000"+ - "\u9441\u9442\u0000\u0000\u0000\u9446\u0000\u9448"+ - "\u9449\u0000\u944B\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9452\u9453\u0000\u0000\u0000\u0000\u9458"+ - "\u9459\u0000\u945B\u945C\u0000\u945E\u945F\u9460"+ - "\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u0000"+ - "\u9469\u0000\u0000\u0000\u0000\u946E\u946F\u9470"+ - "\u0000\u9472\u9473\u9474\u9475\u0000\u0000\u9478"+ - "\u9479\u0000\u947B\u947C\u947D\u947E\u94A1\u94A2"+ - "\u94A3\u94A4\u94A5\u0000\u0000\u0000\u94A9\u94AA"+ - "\u0000\u94AC\u94AD\u0000\u94AF\u0000\u0000\u0000"+ - "\u94B3\u94B4\u94B5\u94B6\u0000\u0000\u94B9\u94BA"+ - "\u94BB\u94BC\u94BD\u94BE\u0000\u94C0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u94C7\u94C8\u94C9\u0000"+ - "\u0000\u0000\u0000\u94CE\u0000\u0000\u94D1\u94D2"+ - "\u94D3\u0000\u0000\u94D6\u94D7\u94D8\u94D9\u94DA"+ - "\u94DB\u0000\u94DD\u94DE\u94DF\u94E0\u0000\u0000"+ - "\u94E3\u94E4\u94E5\u0000\u94E7\u0000\u0000\u94EA"+ - "\u0000\u94EC\u0000\u0000\u94EF\u94F0\u94F1\u94F2"+ - "\u0000\u94F4\u94F5\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u94FE\u9540\u9541\u0000\u9543"+ - "\u9544\u9545\u9546\u0000\u9548\u9549\u0000\u954B"+ - "\u954C\u954D\u0000\u0000\u9550\u9551\u9552\u0000"+ - "\u9554\u0000\u0000\u0000\u0000\u9559\u955A\u955B"+ - "\u955C\u0000\u955E\u0000\u9560\u9561\u9562\u0000"+ - "\u9564\u0000\u0000\u0000\u9568\u0000\u956A\u0000"+ - "\u0000\u956D\u0000\u956F\u0000\u9571\u0000\u9573"+ - "\u9574\u0000\u9576\u0000\u9578\u0000\u957A\u957B"+ - "\u0000\u957D\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u95A8\u0000\u95AA\u95AB\u95AC\u95AD"+ - "\u95AE\u95AF\u95B0\u0000\u95B2\u95B3\u95B4\u0000"+ - "\u0000\u95B7\u0000\u0000\u95BA\u0000\u0000\u0000"+ - "\u95BE\u0000\u0000\u0000\u95C2\u0000\u0000\u0000"+ - "\u95C6\u95C7\u0000\u0000\u95CA\u0000\u0000\u95CD"+ - "\u0000\u0000\u95D0\u95D1\u0000\u0000\u95D4\u0000"+ - "\u95D6\u95D7\u0000\u0000\u0000\u95DB\u0000\u0000"+ - "\u95DE\u95DF\u95E0\u0000\u95E2\u95E3\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u95EA\u0000\u95EC\u95ED"+ - "\u95EE\u95EF\u95F0\u95F1\u0000\u95F3\u95F4\u95F5"+ - "\u95F6\u95F7\u95F8\u95F9\u0000\u0000\u95FC\u0000"+ - "\u95FE\u0000\u9641\u9642\u9643\u0000\u0000\u9646"+ - "\u9647\u9648\u9649\u0000\u0000\u0000\u964D\u0000"+ - "\u964F\u0000\u0000\u0000\u9653\u0000\u9655\u9656"+ - "\u0000\u9658\u0000\u965A\u0000\u965C\u965D\u965E"+ - "\u965F\u0000\u9661\u9662\u0000\u9664\u0000\u0000"+ - "\u0000\u9668\u9669\u0000\u966B\u0000\u0000\u966E"+ - "\u966F\u0000\u0000\u0000\u0000\u9674\u9675\u9676"+ - "\u0000\u9678\u9679\u0000\u0000\u967C\u0000\u967E"+ - "\u96A1\u0000\u96A3\u96A4\u0000\u96A6\u0000\u96A8"+ - "\u0000\u96AA\u96AB\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u96B4\u0000\u96B6\u96B7\u0000"+ - "\u96B9\u96BA\u0000\u96BC\u0000\u96BE\u96BF\u96C0"+ - "\u96C1\u0000\u0000\u96C4\u96C5\u96C6\u0000\u96C8"+ - "\u96C9\u96CA\u96CB\u0000\u0000\u96CE\u96CF\u96D0"+ - "\u0000\u96D2\u96D3\u96D4\u96D5\u96D6\u0000\u0000"+ - "\u0000\u96DA\u0000\u0000\u0000\u0000\u96DF\u0000"+ - "\u96E1\u0000\u0000\u0000\u0000\u96E6\u96E7\u96E8"+ - "\u96E9\u0000\u0000\u0000\u0000\u0000\u0000\u96F0"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u96F7\u96F8"+ - "\u0000\u96FA\u96FB\u0000\u96FD\u96FE\u0000\u0000"+ - "\u0000\u9743\u9744\u9745\u9746\u9747\u0000\u0000"+ - "\u974A\u974B\u0000\u974D\u974E\u974F\u9750\u9751"+ - "\u0000\u9753\u9754\u0000\u9756\u9757\u9758\u9759"+ - "\u975A\u0000\u0000\u975D\u0000\u975F\u9760\u9761"+ - "\u9762\u0000\u0000\u0000\u9766\u9767\u9768\u9769"+ - "\u976A\u976B\u976C\u976D\u0000\u976F\u0000\u9771"+ - "\u0000\u0000\u0000\u9775\u0000\u9777\u9778\u0000"+ - "\u977A\u977B\u977C\u977D\u0000\u97A1\u97A2\u0000"+ - "\u97A4\u97A5\u97A6\u0000\u0000\u97A9\u0000\u97AB"+ - "\u97AC\u97AD\u97AE\u0000\u97B0\u97B1\u97B2\u0000"+ - "\u97B4\u97B5\u97B6\u0000\u97B8\u97B9\u97BA\u0000"+ - "\u0000\u97BD\u97BE\u0000\u97C0\u97C1\u97C2\u97C3"+ - "\u0000\u97C5\u97C6\u97C7\u0000\u97C9\u97CA\u0000"+ - "\u97CC\u97CD\u0000\u97CF\u0000\u0000\u97D2\u97D3"+ - "\u97D4\u0000\u0000\u97D7\u97D8\u0000\u97DA\u97DB"+ - "\u97DC\u97DD\u97DE\u0000\u0000\u97E1\u0000\u97E3"+ - "\u97E4\u0000\u0000\u97E7\u97E8\u0000\u97EA\u97EB"+ - "\u97EC\u97ED\u97EE\u0000\u0000\u97F1\u97F2\u97F3"+ - "\u97F4\u97F5\u97F6\u97F7\u97F8\u0000\u97FA\u97FB"+ - "\u0000\u97FD\u97FE\u9840\u9841\u9842\u9843\u0000"+ - "\u9845\u0000\u9847\u0000\u9849\u984A\u984B\u0000"+ - "\u0000\u984E\u0000\u0000\u9851\u9852\u9853\u0000"+ - "\u9855\u9856\u0000\u0000\u0000\u985A\u0000\u0000"+ - "\u985D\u0000\u985F\u9860\u9861\u9862\u0000\u9864"+ - "\u9865\u0000\u9867\u0000\u9869\u986A\u986B\u0000"+ - "\u986D\u986E\u0000\u0000\u9871\u9872\u0000\u9874"+ - "\u9875\u0000\u0000\u0000\u9879\u0000\u987B\u987C"+ - "\u0000\u0000\u0000\u98A2\u98A3\u98A4\u0000\u98A6"+ - "\u98A7\u98A8\u98A9\u98AA\u0000\u98AC\u0000\u0000"+ - "\u0000\u98B0\u98B1\u0000\u0000\u0000\u0000\u98B6"+ - "\u0000\u0000\u98B9\u0000\u0000\u98BC\u98BD\u0000"+ - "\u0000\u98C0\u0000\u0000\u98C3\u0000\u98C5\u0000"+ - "\u0000\u0000\u0000\u0000\u98CB\u98CC\u98CD\u98CE"+ - "\u0000\u98D0\u98D1\u0000\u0000\u0000\u0000\u98D6"+ - "\u0000\u0000\u98D9\u0000\u98DB\u0000\u98DD\u0000"+ - "\u98DF\u0000\u0000\u0000\u0000\u98E4\u0000\u98E6"+ - "\u0000\u98E8\u98E9\u0000\u98EB\u98EC\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u98F4\u0000\u0000"+ - "\u0000\u0000\u0000\u98FA\u0000\u0000\u0000\u98FE"+ - "\u9940\u0000\u0000\u0000\u0000\u0000\u9946\u0000"+ - "\u9948\u0000\u0000\u994B\u0000\u0000\u994E\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9955\u9956\u0000"+ - "\u0000\u9959\u0000\u995B\u0000\u0000\u0000\u995F"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9967"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u996E\u0000"+ - "\u0000\u0000\u0000\u9973\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u997A\u997B\u0000\u0000\u0000\u99A1"+ - "\u0000\u0000\u0000\u99A5\u0000\u99A7\u0000\u0000"+ - "\u0000\u0000\u0000\u99AD\u0000\u0000\u0000\u0000"+ - "\u0000\u99B3\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u99BC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u99C3\u0000\u0000\u0000\u99C7\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99CE\u99CF\u0000\u0000"+ - "\u0000\u0000\u0000\u99D5\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u99DE\u0000\u0000\u99E1"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u99E9"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u99F5\u0000\u0000\u99F8\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A48\u9A49\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9A50\u0000\u0000"+ - "\u0000\u0000\u9A55\u0000\u0000\u9A58\u0000\u9A5A"+ - "\u0000\u9A5C\u0000\u0000\u0000\u9A60\u0000\u0000"+ - "\u9A63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u9A6E\u0000\u9A70\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9A79\u0000"+ - "\u9A7B\u9A7C\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9AB4"+ - "\u9AB5\u9AB6\u0000\u0000\u0000\u9ABA\u0000\u0000"+ - "\u9ABD\u9ABE\u9ABF\u9AC0\u9AC1\u0000\u0000\u9AC4"+ - "\u9AC5\u9AC6\u0000\u9AC8\u9AC9\u0000\u9ACB\u9ACC"+ - "\u9ACD\u9ACE\u9ACF\u0000\u9AD1\u0000\u9AD3\u9AD4"+ - "\u9AD5\u9AD6\u9AD7\u9AD8\u0000\u0000\u0000\u9ADC"+ - "\u9ADD\u9ADE\u9ADF\u9AE0\u9AE1\u0000\u9AE3\u0000"+ - "\u9AE5\u9AE6\u9AE7\u0000\u9AE9\u9AEA\u9AEB\u9AEC"+ - "\u9AED\u9AEE\u9AEF\u9AF0\u0000\u0000\u9AF3\u9AF4"+ - "\u9AF5\u0000\u9AF7\u9AF8\u9AF9\u9AFA\u0000\u0000"+ - "\u9AFD\u9AFE\u9B40\u9B41\u9B42\u9B43\u9B44\u9B45"+ - "\u0000\u9B47\u9B48\u0000\u0000\u9B4B\u0000\u9B4D"+ - "\u9B4E\u9B4F\u9B50\u9B51\u9B52\u9B53\u0000\u9B55"+ - "\u9B56\u9B57\u0000\u9B59\u0000\u9B5B\u0000\u9B5D"+ - "\u0000\u0000\u9B60\u0000\u9B62\u9B63\u9B64\u9B65"+ - "\u9B66\u9B67\u9B68\u9B69\u9B6A\u9B6B\u9B6C\u9B6D"+ - "\u9B6E\u9B6F\u0000\u0000\u0000\u9B73\u9B74\u9B75"+ - "\u0000\u9B77\u0000\u9B79\u9B7A\u0000\u9B7C\u0000"+ - "\u0000\u0000\u9BA2\u9BA3\u9BA4\u9BA5\u9BA6\u9BA7"+ - "\u9BA8\u9BA9\u9BAA\u9BAB\u9BAC\u9BAD\u9BAE\u9BAF"+ - "\u9BB0\u9BB1\u9BB2\u9BB3\u0000\u9BB5\u0000\u9BB7"+ - "\u9BB8\u9BB9\u9BBA\u9BBB\u0000\u9BBD\u9BBE\u9BBF"+ - "\u9BC0\u9BC1\u9BC2\u9BC3\u0000\u9BC5\u0000\u9BC7"+ - "\u9BC8\u9BC9\u0000\u9BCB\u9BCC\u0000\u9BCE\u9BCF"+ - "\u9BD0\u0000\u9BD2\u0000\u0000\u0000\u9BD6\u9BD7"+ - "\u9BD8\u9BD9\u0000\u9BDB\u9BDC\u9BDD\u0000\u9BDF"+ - "\u9BE0\u9BE1\u9BE2\u9BE3\u9BE4\u9BE5\u9BE6\u9BE7"+ - "\u9BE8\u0000\u9BEA\u9BEB\u0000\u9BED\u9BEE\u9BEF"+ - "\u9BF0\u9BF1\u9BF2\u9BF3\u0000\u0000\u0000\u9BF7"+ - "\u9BF8\u0000\u9BFA\u9BFB\u0000\u9BFD\u9BFE\u0000"+ - "\u9C41\u0000\u9C43\u9C44\u0000\u9C46\u9C47\u9C48"+ - "\u9C49\u9C4A\u9C4B\u9C4C\u9C4D\u0000\u9C4F\u0000"+ - "\u0000\u9C52\u0000\u0000\u9C55\u9C56\u0000\u9C58"+ - "\u0000\u0000\u9C5B\u9C5C\u0000\u9C5E\u9C5F\u9C60"+ - "\u9C61\u0000\u9C63\u0000\u9C65\u9C66\u9C67\u0000"+ - "\u9C69\u0000\u0000\u9C6C\u0000\u9C6E\u9C6F\u9C70"+ - "\u9C71\u0000\u9C73\u9C74\u0000\u9C76\u0000\u9C78"+ - "\u9C79\u9C7A\u0000\u0000\u9C7D\u0000\u9CA1\u9CA2"+ - "\u9CA3\u9CA4\u9CA5\u9CA6\u9CA7\u0000\u9CA9\u9CAA"+ - "\u0000\u9CAC\u9CAD\u0000\u0000\u9CB0\u9CB1\u0000"+ - "\u0000\u9CB4\u9CB5\u9CB6\u0000\u9CB8\u9CB9\u9CBA"+ - "\u9CBB\u0000\u0000\u9CBE\u0000\u9CC0\u9CC1\u0000"+ - "\u9CC3\u9CC4\u0000\u9CC6\u9CC7\u9CC8\u9CC9\u9CCA"+ - "\u9CCB\u0000\u0000\u9CCE\u9CCF\u0000\u9CD1\u9CD2"+ - "\u9CD3\u9CD4\u9CD5\u9CD6\u9CD7\u9CD8\u0000\u0000"+ - "\u9CDB\u0000\u9CDD\u0000\u9CDF\u0000\u9CE1\u0000"+ - "\u0000\u0000\u9CE5\u9CE6\u9CE7\u9CE8\u9CE9\u9CEA"+ - "\u0000\u9CEC\u9CED\u0000\u0000\u9CF0\u0000\u9CF2"+ - "\u0000\u0000\u0000\u9CF6\u9CF7\u9CF8\u0000\u9CFA"+ - "\u9CFB\u9CFC\u9CFD\u9CFE\u9D40\u9D41\u9D42\u9D43"+ - "\u9D44\u9D45\u9D46\u9D47\u9D48\u9D49\u0000\u9D4B"+ - "\u0000\u0000\u9D4E\u9D4F\u9D50\u9D51\u9D52\u9D53"+ - "\u9D54\u0000\u9D56\u0000\u9D58\u9D59\u0000\u9D5B"+ - "\u9D5C\u9D5D\u9D5E\u9D5F\u0000\u0000\u0000\u9D63"+ - "\u9D64\u9D65\u9D66\u9D67\u9D68\u9D69\u9D6A\u9D6B"+ - "\u9D6C\u9D6D\u9D6E\u9D6F\u0000\u9D71\u9D72\u9D73"+ - "\u0000\u9D75\u0000\u9D77\u9D78\u0000\u9D7A\u9D7B"+ - "\u9D7C\u0000\u0000\u0000\u9DA2\u0000\u9DA4\u9DA5"+ - "\u0000\u0000\u0000\u0000\u9DAA\u9DAB\u9DAC\u9DAD"+ - "\u0000\u9DAF\u9DB0\u9DB1\u9DB2\u9DB3\u9DB4\u9DB5"+ - "\u9DB6\u9DB7\u9DB8\u9DB9\u0000\u9DBB\u9DBC\u0000"+ - "\u9DBE\u0000\u0000\u9DC1\u9DC2\u0000\u0000\u9DC5"+ - "\u9DC6\u0000\u0000\u9DC9\u0000\u9DCB\u9DCC\u9DCD"+ - "\u9DCE\u0000\u0000\u0000\u9DD2\u0000\u9DD4\u0000"+ - "\u0000\u9DD7\u9DD8\u9DD9\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9DED"+ - "\u9DEE\u0000\u0000\u0000\u9DF2\u9DF3\u0000\u0000"+ - "\u0000\u0000\u0000\u9DF9\u9DFA\u0000\u9DFC\u9DFD"+ - "\u9DFE\u9E40\u0000\u0000\u0000\u9E44\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9E4F\u0000\u9E51\u0000\u9E53\u9E54\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E5B\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u9E63\u9E64\u0000\u9E66"+ - "\u0000\u0000\u9E69\u0000\u9E6B\u9E6C\u9E6D\u9E6E"+ - "\u9E6F\u9E70\u0000\u9E72\u0000\u9E74\u9E75\u9E76"+ - "\u9E77\u0000\u9E79\u9E7A\u9E7B\u9E7C\u9E7D\u9E7E"+ - "\u0000\u0000\u9EA3\u9EA4\u9EA5\u9EA6\u9EA7\u9EA8"+ - "\u0000\u9EAA\u9EAB\u0000\u9EAD\u9EAE\u0000\u0000"+ - "\u0000\u0000\u0000\u9EB4\u0000\u0000\u0000\u9EB8"+ - "\u9EB9\u0000\u9EBB\u9EBC\u0000\u9EBE\u0000\u0000"+ - "\u0000\u9EC2\u9EC3\u0000\u9EC5\u9EC6\u0000\u9EC8"+ - "\u9EC9\u0000\u9ECB\u9ECC\u9ECD\u9ECE\u9ECF\u9ED0"+ - "\u0000\u9ED2\u9ED3\u9ED4\u9ED5\u0000\u0000\u9ED8"+ - "\u9ED9\u9EDA\u0000\u0000\u9EDD\u9EDE\u9EDF\u9EE0"+ - "\u0000\u0000\u9EE3\u0000\u9EE5\u0000\u9EE7\u0000"+ - "\u0000\u0000\u0000\u9EEC\u0000\u9EEE\u0000\u9EF0"+ - "\u0000\u9EF2\u9EF3\u0000\u0000\u9EF6\u0000\u9EF8"+ - "\u9EF9\u0000\u9EFB\u9EFC\u0000\u0000\u0000\u0000"+ - "\u0000\u9F43\u0000\u0000\u9F46\u9F47\u9F48\u0000"+ - "\u9F4A\u9F4B\u9F4C\u9F4D\u0000\u0000\u9F50\u0000"+ - "\u0000\u9F53\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F68\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u9F70\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FA5\u0000\u0000\u0000\u0000\u9FAA\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9FB3"+ - "\u0000\u9FB5\u0000\u0000\u0000\u0000\u0000\u9FBB"+ - "\u0000\u0000\u9FBE\u9FBF\u0000\u9FC1\u0000\u0000"+ - "\u0000\u9FC5\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u9FD1\u0000\u0000"+ - "\u0000\u0000\u0000\u9FD7\u0000\u9FD9\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u9FEC\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u9FF5\u0000\u0000\u0000\u9FF9\u0000\u0000"+ - "\u0000\u0000\u0000\uA040\u0000\u0000\u0000\u0000"+ - "\uA045\u0000\uA047\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uA04F\u0000\u0000\u0000\uA053\u0000"+ - "\uA055\uA056\u0000\u0000\uA059\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA068\u0000\uA06A\u0000\u0000"+ - "\uA06D\u0000\uA06F\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uA078\u0000\u0000\uA07B\u0000"+ - "\u0000\uA07E\u0000\uA0A2\u0000\uA0A4\u0000\u0000"+ - "\uA0A7\u0000\u0000\u0000\uA0AB\uA0AC\u0000\u0000"+ - "\u0000\u0000\uA0B1\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\uA0BD\u0000"+ - "\u0000\u0000\u0000\u0000\uA0C3\u0000\uA0C5\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D0\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\uA0D8\u0000\uA0DA\u0000\u0000\u0000\uA0DE"+ - "\u0000\u0000\u0000\u0000\uA0E3\u0000\u0000\uA0E6"+ - "\u0000\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE"+ - "\uA0EF\uA0F0\uA0F1\u0000\uA0F3\uA0F4\uA0F5\uA0F6"+ - "\uA0F7\uA0F8\uA0F9\u0000\uA0FB\u0000\u0000\uA0FE"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8840\u8841\u8842\u8843\u8844"+ - "\u8845\u8846\u8847\u8848\u8849\u884A\u884B\u884C"+ - "\u884D\u884E\u884F\u8850\u8851\u8852\u8853\u8854"+ - "\u8855\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8862\u0000\u8864"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u88A3\u0000\u88A5\u0000"+ - "\u0000\u0000\u88A9\u88AA\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8940\u8941\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u894C\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u89B2\u0000\u0000\u0000\u0000\u89B7\u0000\u0000"+ - "\u89BA\u89BB\u89BC\u0000\u89BE\u89BF\u0000\u0000"+ - "\u0000\u0000\u0000\u89C5\u0000\u0000\u0000\u0000"+ - "\u89CA\u89CB\u89CC\u89CD\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u89D5\u0000\u89D7\u0000\u0000"+ - "\u89DA\u89DB\u89DC\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u89E6\u0000\u89E8\u0000"+ - "\u89EA\u0000\u0000\u89ED\u89EE\u89EF\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u89F9"+ - "\u0000\u89FB\u89FC\u0000\u89FE\u8A40\u0000\u0000"+ - "\u8A43\u8A44\u8A45\u0000\u8A47\u8A48\u8A49\u0000"+ - "\u8A4B\u8A4C\u8A4D\u8A4E\u0000\u8A50\u8A51\u8A52"+ - "\u8A53\u8A54\u8A55\u0000\u8A57\u8A58\u8A59\u8A5A"+ - "\u0000\u0000\u8A5D\u8A5E\u8A5F\u8A60\u8A61\u8A62"+ - "\u0000\u8A64\u8A65\u8A66\u8A67\u8A68\u8A69\u0000"+ - "\u8A6B\u8A6C\u8A6D\u8A6E\u8A6F\u8A70\u8A71\u8A72"+ - "\u0000\u0000\u0000\u8A76\u8A77\u0000\u0000\u8A7A"+ - "\u8A7B\u8A7C\u8A7D\u8A7E\u8AA1\u8AA2\u8AA3\u0000"+ - "\u8AA5\u8AA6\u0000\u8AA8\u8AA9\u8AAA\u0000\u8AAC"+ - "\u8AAD\u8AAE\u0000\u8AB0\u0000\u8AB2\u8AB3\u8AB4"+ - "\u8AB5\u8AB6\u0000\u8AB8\u8AB9\u0000\u8ABB\u8ABC"+ - "\u8ABD\u0000\u0000\u8AC0\u0000\u8AC2\u8AC3\u0000"+ - "\u0000\u0000\u8AC7\u0000\u8AC9\u8ACA\u8ACB\u8ACC"+ - "\u0000\u8ACE\u8ACF\u8AD0\u8AD1\u8AD2\u8AD3\u8AD4"+ - "\u8AD5\u0000\u8AD7\u8AD8\u8AD9\u8ADA\u0000\u8ADC"+ - "\u0000\u0000\u8ADF\u8AE0\u8AE1\u8AE2\u8AE3\u8AE4"+ - "\u8AE5\u8AE6\u0000\u8AE8\u8AE9\u8AEA\u8AEB\u8AEC"+ - "\u8AED\u8AEE\u8AEF\u8AF0\u8AF1\u8AF2\u8AF3\u8AF4"+ - "\u0000\u8AF6\u8AF7\u8AF8\u8AF9\u8AFA\u8AFB\u8AFC"+ - "\u0000\u8AFE\u8B40\u8B41\u8B42\u8B43\u8B44\u8B45"+ - "\u8B46\u8B47\u8B48\u8B49\u8B4A\u8B4B\u8B4C\u8B4D"+ - "\u8B4E\u8B4F\u0000\u0000\u0000\u0000\u0000\u8B55"+ - "\u0000\u0000\u8B58\u8B59\u0000\u0000\u0000\u0000"+ - "\u8B5E\u0000\u8B60\u0000\u8B62\u0000\u8B64\u8B65"+ - "\u8B66\u8B67\u8B68\u8B69\u8B6A\u8B6B\u0000\u8B6D"+ - "\u8B6E\u8B6F\u8B70\u8B71\u8B72\u8B73\u8B74\u8B75"+ - "\u8B76\u8B77\u0000\u8B79\u8B7A\u8B7B\u8B7C\u0000"+ - "\u8B7E\u8BA1\u8BA2\u8BA3\u8BA4\u8BA5\u8BA6\u8BA7"+ - "\u8BA8\u8BA9\u8BAA\u8BAB\u8BAC\u8BAD\u8BAE\u0000"+ - "\u0000\u8BB1\u8BB2\u0000\u0000\u8BB5\u8BB6\u0000"+ - "\u8BB8\u0000\u0000\u8BBB\u8BBC\u0000\u8BBE\u0000"+ - "\u0000\u0000\u8BC2\u8BC3\u0000\u8BC5\u0000\u0000"+ - "\u8BC8\u0000\u0000\u0000\u8BCC\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u8BD6\u0000"+ - "\u0000\u0000\u0000\u8BDB\u8BDC\u0000\u8BDE\u0000"+ - "\u0000\u8BE1\u8BE2\u0000\u0000\u0000\u8BE6\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8BED\u0000\u0000"+ - "\u0000\u0000\u0000\u8BF3\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u8BFA\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u8C42\u8C43\u0000\u0000\u8C46\u0000\u0000"+ - "\u0000\u8C4A\u0000\u8C4C\u0000\u8C4E\u0000\u0000"+ - "\u0000\u0000\u0000\u8C54\u8C55\u0000\u8C57\u0000"+ - "\u0000\u0000\u0000\u8C5C\u0000\u0000\u8C5F\u0000"+ - "\u0000\u0000\u0000\u8C64\u8C65\u0000\u0000\u0000"+ - "\u8C69\u0000\u0000\u8C6C\u8C6D\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u8C74\u0000\u0000\u0000\u0000"+ - "\u8C79\u0000\u0000\u0000\u8C7D\u0000\u8CA1\u0000"+ - "\u0000\u8CA4\u0000\u0000\u0000\u8CA8\u0000\u0000"+ - "\u8CAB\u0000\u0000\u0000\u8CAF\u8CB0\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CB7\u0000\u8CB9\u0000"+ - "\u8CBB\u0000\u0000\u0000\u0000\u8CC0\u8CC1\u8CC2"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8CCF\u0000\u8CD1\u0000"+ - "\u8CD3\u0000\u8CD5\u8CD6\u8CD7\u8CD8\u0000\u8CDA"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8D63"+ - "\u8D64\u0000\u0000\u8D67\u8D68\u0000\u0000\u0000"+ - "\u0000\u8D6D\u8D6E\u8D6F\u8D70\u0000\u0000\u0000"+ - "\u8D74\u0000\u0000\u0000\u8D78\u0000\u0000\u0000"+ - "\u0000\u8D7D\u0000\u8DA1\u0000\u0000\u0000\u0000"+ - "\u8DA6\u0000\u0000\u0000\u0000\u8DAB\u0000\u8DAD"+ - "\u0000\u0000\u8DB0\u0000\u8DB2\u0000\u8DB4\u0000"+ - "\u0000\u8DB7\u0000\u0000\u8DBA\u8DBB\u8DBC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DC3\u0000\u8DC5"+ - "\u0000\u0000\u0000\u0000\u8DCA\u0000\u8DCC\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u8DD6\u0000\u0000\u0000\u0000\u8DDB\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u8DE2\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u8DEB\u8DEC\u0000"+ - "\u0000\u8DEF\u8DF0\u0000\u0000\u8DF3\u0000\u8DF5"+ - "\u0000\u0000\u0000\u0000\u0000\u8DFB\u8DFC\u8DFD"+ - "\u8DFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC6CD\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uC879\uC87A\u0000"+ - "\uC87C\u0000\uC87E\uC8A1\u0000\uC8A3\uC8A4\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8BF8"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\uC8D6\uC8D7\uC8D8\uC8D9\uC8DA\uC8DB\uC8DC\uC8DD"+ - "\uC8DE\uC8DF\uC8E0\uC8E1\uC8E2\uC8E3\uC8E4\uC8E5"+ - "\uC8E6\uC8E7\uC8E8\uC8E9\uC8EA\uC8EB\uC8EC\uC8ED"+ - "\uC8EE\uC8EF\uC8F0\uC8F1\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8D0\u0000\u0000\u0000\u0000\uC8CF"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\uC6E4\u0000\uC6E5\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\uC8CD\u0000\uC8CE\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\uF9FE\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 1, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, - 0, 6, 0, 0, 7, 8, 0, 9, 0, 0, 0, 0, 0, 0, 10, 11, - 12, 0, 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 0, - 0, 0, 0, 137, 138, 139, 140, 141, 142, 142, 0, 0, 0, 0, 0, 143 - }; - - static String index2[] = { - innerIndex0, - innerIndex1, - innerIndex2, - innerIndex3, - innerIndex4, - innerIndex5, - innerIndex6, - innerIndex7, - innerIndex8 - }; - - String unicodeSearchTab = - "\ud840\udc21\ud840\udc3e\ud840\udc46\ud840\udc4e" + - "\ud840\udc68\ud840\udc86\ud840\udc87\ud840\udc8a" + - "\ud840\udc94\ud840\udcca\ud840\udccb\ud840\udccc" + - "\ud840\udccd\ud840\udcd1\ud840\udcee\ud840\udd0c" + - "\ud840\udd0e\ud840\udd18\ud840\udda9\ud840\uddab" + - "\ud840\uddc1\ud840\uddd4\ud840\uddf2\ud840\ude04" + - "\ud840\ude0c\ud840\ude14\ud840\ude5b\ud840\ude74" + - "\ud840\ude75\ud840\ude99\ud840\ude9e\ud840\udea0" + - "\ud840\udeb7\ud840\udebf\ud840\udec0\ud840\udee5" + - "\ud840\udf0a\ud840\udf25\ud840\udf41\ud840\udf45" + - "\ud840\udf46\ud840\udf47\ud840\udf7e\ud840\udf7f" + - "\ud840\udf80\ud840\udfa0\ud840\udfa7\ud840\udfb5" + - "\ud840\udfc9\ud840\udfcb\ud840\udff5\ud840\udffc" + - "\ud841\udc13\ud841\udc14\ud841\udc1f\ud841\udc65" + - "\ud841\udc87\ud841\udc8e\ud841\udc91\ud841\udc92" + - "\ud841\udca3\ud841\udcd7\ud841\udcfc\ud841\udcfe" + - "\ud841\udd47\ud841\udd8e\ud841\udda5\ud841\uddb3" + - "\ud841\uddc3\ud841\uddca\ud841\uddd0\ud841\uddd5" + - "\ud841\udddf\ud841\udde0\ud841\uddeb\ud841\ude11" + - "\ud841\ude15\ud841\ude19\ud841\ude1a\ud841\ude30" + - "\ud841\ude56\ud841\ude76\ud841\udf0e\ud841\udf31" + - "\ud841\udf79\ud842\udc2c\ud842\udc73\ud842\udcd5" + - "\ud842\udd16\ud842\udd23\ud842\udd54\ud842\udd79" + - "\ud842\udde7\ud842\ude11\ud842\ude50\ud842\udeb4" + - "\ud842\udec2\ud842\udecd\ud842\udf0d\ud842\udf8f" + - "\ud842\udfa8\ud842\udfa9\ud842\udfbf\ud842\udfc6" + - "\ud842\udfcb\ud842\udfe2\ud842\udfeb\ud842\udffb" + - "\ud842\udfff\ud843\udc0b\ud843\udc0d\ud843\udc20" + - "\ud843\udc34\ud843\udc3a\ud843\udc3b\ud843\udc41" + - "\ud843\udc42\ud843\udc43\ud843\udc53\ud843\udc65" + - "\ud843\udc77\ud843\udc78\ud843\udc7c\ud843\udc8d" + - "\ud843\udc96\ud843\udc9c\ud843\udcb5\ud843\udcb8" + - "\ud843\udccf\ud843\udcd3\ud843\udcd4\ud843\udcd5" + - "\ud843\udcd6\ud843\udcdd\ud843\udced\ud843\udcff" + - "\ud843\udd15\ud843\udd28\ud843\udd31\ud843\udd32" + - "\ud843\udd46\ud843\udd47\ud843\udd48\ud843\udd49" + - "\ud843\udd4c\ud843\udd4d\ud843\udd4e\ud843\udd6f" + - "\ud843\udd71\ud843\udd74\ud843\udd7c\ud843\udd7e" + - "\ud843\udd7f\ud843\udd96\ud843\udd9c\ud843\udda7" + - "\ud843\uddb2\ud843\uddc8\ud843\ude04\ud843\ude09" + - "\ud843\ude0a\ud843\ude0d\ud843\ude0e\ud843\ude0f" + - "\ud843\ude10\ud843\ude11\ud843\ude16\ud843\ude1d" + - "\ud843\ude4c\ud843\ude6d\ud843\ude73\ud843\ude75" + - "\ud843\ude76\ud843\ude77\ud843\ude78\ud843\ude79" + - "\ud843\ude7a\ud843\ude7b\ud843\ude8c\ud843\ude96" + - "\ud843\ude98\ud843\ude9d\ud843\udea2\ud843\udeaa" + - "\ud843\udeab\ud843\udeac\ud843\udeb6\ud843\uded7" + - "\ud843\uded8\ud843\udedd\ud843\udef8\ud843\udef9" + - "\ud843\udefa\ud843\udefb\ud843\udf1d\ud843\udf26" + - "\ud843\udf2d\ud843\udf2e\ud843\udf30\ud843\udf31" + - "\ud843\udf3b\ud843\udf4c\ud843\udf64\ud843\udf8d" + - "\ud843\udf90\ud843\udfad\ud843\udfb4\ud843\udfb5" + - "\ud843\udfb6\ud843\udfbc\ud843\udfdf\ud843\udfea" + - "\ud843\udfeb\ud843\udfec\ud843\udfed\ud844\udc14" + - "\ud844\udc1d\ud844\udc1e\ud844\udc4f\ud844\udc5c" + - "\ud844\udc6f\ud844\udc75\ud844\udc76\ud844\udc77" + - "\ud844\udc78\ud844\udc7b\ud844\udc88\ud844\udc96" + - "\ud844\udc9d\ud844\udcb4\ud844\udcbf\ud844\udcc0" + - "\ud844\udcc1\ud844\udcc7\ud844\udcc8\ud844\udcc9" + - "\ud844\udccf\ud844\udcd3\ud844\udce4\ud844\udcf4" + - "\ud844\udcf5\ud844\udcf6\ud844\udd2f\ud844\udd3b" + - "\ud844\udd3d\ud844\udd45\ud844\udd48\ud844\udd4f" + - "\ud844\udd80\ud844\udd87\ud844\uddd9\ud844\ude3c" + - "\ud844\ude4f\ud844\ude7c\ud844\udea8\ud844\udea9" + - "\ud844\udeb0\ud844\udee3\ud844\udefe\ud844\udf02" + - "\ud844\udf03\ud844\udf04\ud844\udf05\ud844\udf36" + - "\ud844\udf3a\ud844\udf75\ud844\udf76\ud844\udf8e" + - "\ud844\udf98\ud844\udf9c\ud844\udfc5\ud844\udfc6" + - "\ud844\udfed\ud844\udffe\ud845\udc13\ud845\udc16" + - "\ud845\udc24\ud845\udc3f\ud845\udc52\ud845\udc54" + - "\ud845\udc55\ud845\udc8a\ud845\udc97\ud845\udcb6" + - "\ud845\udce8\ud845\udcfd\ud845\udd77\ud845\udd82" + - "\ud845\udd96\ud845\ude0a\ud845\ude13\ud845\ude19" + - "\ud845\ude3e\ud845\ude61\ud845\ude92\ud845\udeb8" + - "\ud845\udeba\ud845\udec0\ud845\udec1\ud845\udec2" + - "\ud845\uded3\ud845\uded5\ud845\udedf\ud845\udee6" + - "\ud845\udee7\ud845\udee8\ud845\udefa\ud845\udefb" + - "\ud845\udefc\ud845\udefe\ud845\udf0d\ud845\udf10" + - "\ud845\udf26\ud845\udf3a\ud845\udf3b\ud845\udf3c" + - "\ud845\udf57\ud845\udf6c\ud845\udf6d\ud845\udf6e" + - "\ud845\udf6f\ud845\udf70\ud845\udf71\ud845\udf73" + - "\ud845\udf74\ud845\udfab\ud845\udfb0\ud845\udfb1" + - "\ud845\udfb2\ud845\udfb3\ud845\udfb4\ud845\udfb5" + - "\ud845\udfc3\ud845\udfc7\ud845\udfd9\ud845\udfda" + - "\ud845\udfdb\ud845\udfdc\ud845\udfdf\ud845\udfef" + - "\ud845\udff5\ud845\udff6\ud845\udff8\ud845\udff9" + - "\ud845\udffa\ud845\udffb\ud845\udffc\ud846\udc20" + - "\ud846\udc28\ud846\udc29\ud846\udc2a\ud846\udc2d" + - "\ud846\udc39\ud846\udc3a\ud846\udc3b\ud846\udc40" + - "\ud846\udc45\ud846\udc52\ud846\udc5e\ud846\udc61" + - "\ud846\udc62\ud846\udc63\ud846\udc64\ud846\udc77" + - "\ud846\udc7b\ud846\udc83\ud846\udc84\ud846\udc85" + - "\ud846\udc9e\ud846\udc9f\ud846\udca0\ud846\udca1" + - "\ud846\udca2\ud846\udcbe\ud846\udcbf\ud846\udcd1" + - "\ud846\udcd6\ud846\udcd7\ud846\udcd8\ud846\udcd9" + - "\ud846\udcfa\ud846\udd03\ud846\udd04\ud846\udd05" + - "\ud846\udd10\ud846\udd11\ud846\udd12\ud846\udd15" + - "\ud846\udd1c\ud846\udd22\ud846\udd27\ud846\udd3b" + - "\ud846\udd44\ud846\udd58\ud846\udd6a\ud846\udd7c" + - "\ud846\udd80\ud846\udd83\ud846\udd88\ud846\udd96" + - "\ud846\udddb\ud846\uddf3\ud846\ude2d\ud846\ude34" + - "\ud846\ude45\ud846\ude4b\ud846\udf44\ud846\udfc1" + - "\ud846\udfc2\ud847\udc2a\ud847\udc70\ud847\udca2" + - "\ud847\udca5\ud847\udcac\ud847\udd46\ud847\udd90" + - "\ud847\uddb6\ud847\uddba\ud847\uddca\ud847\uddd1" + - "\ud847\uddeb\ud847\uddf9\ud847\ude1c\ud847\ude37" + - "\ud847\ude3d\ud847\ude89\ud847\udea4\ud847\udea8" + - "\ud847\udec8\ud847\uded5\ud847\udf0f\ud847\udf15" + - "\ud847\udf6a\ud847\udf9e\ud847\udfa1\ud847\udfe8" + - "\ud848\udc45\ud848\udc49\ud848\udc7e\ud848\udc9a" + - "\ud848\udcc7\ud848\udcfc\ud848\udd2a\ud848\udd5b" + - "\ud848\udd73\ud848\udd7a\ud848\udda1\ud848\uddc3" + - "\ud848\ude08\ud848\ude7c\ud848\udf21\ud848\udf25" + - "\ud848\udfbd\ud848\udfd0\ud848\udfd7\ud848\udffa" + - "\ud849\udc65\ud849\udc71\ud849\udc8b\ud849\udc91" + - "\ud849\udcb0\ud849\udced\ud849\udd13\ud849\udd1b" + - "\ud849\udd30\ud849\udd54\ud849\udd8d\ud849\uddaf" + - "\ud849\uddbe\ud849\ude1b\ud849\ude1c\ud849\ude2b" + - "\ud849\ude68\ud849\ude7a\ud849\ude96\ud849\ude98" + - "\ud849\udef4\ud849\udef5\ud849\udef6\ud849\udf12" + - "\ud849\udf14\ud849\udf1b\ud849\udf1f\ud849\udf2a" + - "\ud849\udf75\ud849\udf81\ud849\udfb4\ud849\udfb5" + - "\ud849\udfcd\ud84a\udc03\ud84a\udc5f\ud84a\udc60" + - "\ud84a\udc71\ud84a\udcad\ud84a\udcc1\ud84a\udcf7" + - "\ud84a\udd26\ud84a\udd39\ud84a\udd4f\ud84a\udd67" + - "\ud84a\udd6b\ud84a\udd80\ud84a\udd93\ud84a\ude66" + - "\ud84a\udecf\ud84a\uded5\ud84a\udee6\ud84a\udee8" + - "\ud84a\udf0e\ud84a\udf22\ud84a\udf3f\ud84a\udf43" + - "\ud84a\udf6a\ud84a\udfca\ud84a\udfce\ud84b\udc26" + - "\ud84b\udc27\ud84b\udc38\ud84b\udc4c\ud84b\udc51" + - "\ud84b\udc55\ud84b\udc62\ud84b\udc88\ud84b\udc9b" + - "\ud84b\udca1\ud84b\udca9\ud84b\udcb2\ud84b\udcb7" + - "\ud84b\udcc2\ud84b\udcc6\ud84b\udcc9\ud84b\udd07" + - "\ud84b\udd08\ud84b\udd12\ud84b\udd44\ud84b\udd4c" + - "\ud84b\udd67\ud84b\udd8d\ud84b\udd95\ud84b\udda0" + - "\ud84b\udda3\ud84b\udda4\ud84b\uddb7\ud84b\uddee" + - "\ud84b\ude0d\ud84b\ude36\ud84b\ude42\ud84b\ude78" + - "\ud84b\ude8b\ud84b\udeb3\ud84b\udeef\ud84b\udf74" + - "\ud84b\udfcc\ud84b\udfe3\ud84c\udc33\ud84c\udc44" + - "\ud84c\udc4b\ud84c\udc66\ud84c\udc7d\ud84c\udc7e" + - "\ud84c\udc8e\ud84c\udcb7\ud84c\udcbc\ud84c\udcda" + - "\ud84c\udd03\ud84c\udd3d\ud84c\udd7d\ud84c\udd82" + - "\ud84c\udda4\ud84c\udda5\ud84c\uddb3\ud84c\uddc8" + - "\ud84c\uddc9\ud84c\uddf7\ud84c\uddf8\ud84c\uddf9" + - "\ud84c\ude0f\ud84c\ude25\ud84c\ude2f\ud84c\ude31" + - "\ud84c\ude32\ud84c\ude33\ud84c\ude34\ud84c\ude62" + - "\ud84c\ude81\ud84c\ude89\ud84c\ude8a\ud84c\udeab" + - "\ud84c\udeac\ud84c\udead\ud84c\uded2\ud84c\udee0" + - "\ud84c\udee1\ud84c\udf00\ud84c\udf0a\ud84c\udf1f" + - "\ud84c\udfb4\ud84c\udfcc\ud84c\udfde\ud84c\udfe6" + - "\ud84c\udff4\ud84c\udff5\ud84c\udff9\ud84c\udffa" + - "\ud84c\udffe\ud84d\udc00\ud84d\udc3f\ud84d\udc50" + - "\ud84d\udc6f\ud84d\udc72\ud84d\udce5\ud84d\udd19" + - "\ud84d\udd30\ud84d\udd5a\ud84d\udd67\ud84d\udd95" + - "\ud84d\udd99\ud84d\udd9c\ud84d\uddcd\ud84d\uddce" + - "\ud84d\uddcf\ud84d\uddf3\ud84d\ude00\ud84d\ude1a" + - "\ud84d\ude3c\ud84d\ude40\ud84d\ude59\ud84d\ude5f" + - "\ud84d\ude77\ud84d\udea6\ud84d\udead\ud84d\udeba" + - "\ud84d\udedf\ud84d\udeee\ud84d\udf03\ud84d\udf16" + - "\ud84d\udf20\ud84d\udf2d\ud84d\udf2f\ud84d\udf3f" + - "\ud84d\udf66\ud84d\udf81\ud84d\udfa2\ud84d\udfbc" + - "\ud84d\udfc2\ud84d\udfd5\ud84d\udfd6\ud84d\udfd7" + - "\ud84e\udc3a\ud84e\uddc2\ud84e\udea7\ud84e\udedb" + - "\ud84e\udeee\ud84e\udefa\ud84e\udf5a\ud84f\udc63" + - "\ud84f\udc99\ud84f\udc9a\ud84f\udc9b\ud84f\udcb5" + - "\ud84f\udcb7\ud84f\udcc7\ud84f\udcc8\ud84f\udcc9" + - "\ud84f\udcfc\ud84f\udcfd\ud84f\udcfe\ud84f\udcff" + - "\ud84f\udd40\ud84f\udd5b\ud84f\udd7e\ud84f\udd8f" + - "\ud84f\uddb6\ud84f\uddb7\ud84f\uddb8\ud84f\uddb9" + - "\ud84f\uddba\ud84f\uddbb\ud84f\uddbc\ud84f\uddbd" + - "\ud84f\udde3\ud84f\uddf8\ud84f\ude11\ud84f\ude2c" + - "\ud84f\ude2d\ud84f\ude2e\ud84f\ude2f\ud84f\ude30" + - "\ud84f\ude31\ud84f\ude39\ud84f\ude88\ud84f\ude89" + - "\ud84f\ude8a\ud84f\ude8b\ud84f\udeb9\ud84f\udebf" + - "\ud84f\uded7\ud84f\udef7\ud84f\udef8\ud84f\udef9" + - "\ud84f\udefa\ud84f\udefb\ud84f\udefc\ud84f\udf35" + - "\ud84f\udf41\ud84f\udf4a\ud84f\udf7f\ud84f\udf80" + - "\ud84f\udf81\ud84f\udf82\ud84f\udf8f\ud84f\udfb4" + - "\ud84f\udfb7\ud84f\udfc0\ud84f\udfc5\ud84f\udfeb" + - "\ud84f\udfec\ud84f\udfed\ud84f\udfee\ud84f\udfef" + - "\ud84f\udff0\ud850\udc11\ud850\udc39\ud850\udc3a" + - "\ud850\udc3b\ud850\udc3c\ud850\udc3d\ud850\udc57" + - "\ud850\udc85\ud850\udc8b\ud850\udc8c\ud850\udc8d" + - "\ud850\udc91\ud850\udcc9\ud850\udce1\ud850\udd04" + - "\ud850\udd0f\ud850\udd19\ud850\udd3f\ud850\udd40" + - "\ud850\udd44\ud850\udd4e\ud850\udd55\ud850\udd56" + - "\ud850\udd57\ud850\udd5c\ud850\udd5f\ud850\udd77" + - "\ud850\udd7a\ud850\udda3\ud850\udda4\ud850\udda5" + - "\ud850\uddac\ud850\uddb5\ud850\uddcd\ud850\udde2" + - "\ud850\uddfc\ud850\ude1b\ud850\ude4b\ud850\ude56" + - "\ud850\ude59\ud850\ude76\ud850\ude77\ud850\ude78" + - "\ud850\ude84\ud850\ude93\ud850\ude95\ud850\udea5" + - "\ud850\udec1\ud850\udec9\ud850\udeca\ud850\udeee" + - "\ud850\udefa\ud850\udf0d\ud850\udf1a\ud850\udf34" + - "\ud850\udf48\ud850\udf62\ud850\udf63\ud850\udf64" + - "\ud850\udf65\ud850\udf8c\ud850\udf96\ud850\udf9c" + - "\ud850\udfbd\ud850\udfc1\ud850\udfe9\ud850\udfea" + - "\ud850\udff2\ud850\udff8\ud851\udc04\ud851\udc35" + - "\ud851\udc36\ud851\udc5a\ud851\udc5b\ud851\udc73" + - "\ud851\udc87\ud851\udc88\ud851\udcb9\ud851\udcbc" + - "\ud851\udcce\ud851\udcd3\ud851\udcd6\ud851\udd05" + - "\ud851\udd21\ud851\udd78\ud851\uddc8\ud851\ude18" + - "\ud851\ude2a\ud851\ude65\ud851\ude74\ud851\ude97" + - "\ud851\uded4\ud851\udf06\ud851\udf25\ud851\udf2f" + - "\ud851\udf8f\ud851\udfe0\ud852\udc12\ud852\udc23" + - "\ud852\udc82\ud852\udce9\ud852\udcf0\ud852\udcf1" + - "\ud852\udcf2\ud852\udcf3\ud852\udcfb\ud852\udcff" + - "\ud852\udd00\ud852\udd01\ud852\udd0c\ud852\udd16" + - "\ud852\udd17\ud852\udd19\ud852\udd2f\ud852\udd33" + - "\ud852\udd34\ud852\udd3e\ud852\udd3f\ud852\udd40" + - "\ud852\udd41\ud852\udd42\ud852\udd43\ud852\udd62" + - "\ud852\udd63\ud852\udd74\ud852\udd75\ud852\udd76" + - "\ud852\udd7b\ud852\udd7f\ud852\udd82\ud852\udd88" + - "\ud852\udd89\ud852\udd8a\ud852\udd8b\ud852\udd8c" + - "\ud852\udd8d\ud852\udd8e\ud852\udd8f\ud852\udd94" + - "\ud852\udda4\ud852\udda7\ud852\udda9\ud852\uddab" + - "\ud852\uddac\ud852\uddad\ud852\uddb7\ud852\uddb8" + - "\ud852\uddb9\ud852\uddba\ud852\uddbb\ud852\uddc5" + - "\ud852\uddd0\ud852\uddda\ud852\uddde\ud852\udddf" + - "\ud852\udde3\ud852\udde5\ud852\uddec\ud852\udded" + - "\ud852\uddf6\ud852\uddf7\ud852\uddf8\ud852\uddf9" + - "\ud852\uddfb\ud852\ude0e\ud852\ude12\ud852\ude13" + - "\ud852\ude15\ud852\ude21\ud852\ude22\ud852\ude23" + - "\ud852\ude24\ud852\ude25\ud852\ude26\ud852\ude27" + - "\ud852\ude28\ud852\ude29\ud852\ude2a\ud852\ude3e" + - "\ud852\ude42\ud852\ude45\ud852\ude4a\ud852\ude4e" + - "\ud852\ude4f\ud852\ude50\ud852\ude51\ud852\ude5d" + - "\ud852\ude65\ud852\ude66\ud852\ude67\ud852\ude71" + - "\ud852\ude77\ud852\ude78\ud852\ude79\ud852\ude7a" + - "\ud852\ude8c\ud852\ude93\ud852\ude94\ud852\ude95" + - "\ud852\ude96\ud852\udea4\ud852\udea5\ud852\udea6" + - "\ud852\udea7\ud852\udeb1\ud852\udeb2\ud852\udeb3" + - "\ud852\udeba\ud852\udebb\ud852\udebc\ud852\udec0" + - "\ud852\udec7\ud852\udeca\ud852\uded1\ud852\udedf" + - "\ud852\udee2\ud852\udee9\ud852\udf6e\ud852\udff5" + - "\ud853\udc09\ud853\udc9e\ud853\udc9f\ud853\udcc9" + - "\ud853\udcd9\ud853\udd06\ud853\udd13\ud853\uddb8" + - "\ud853\uddea\ud853\uddeb\ud853\ude3b\ud853\ude50" + - "\ud853\udea5\ud853\udea7\ud853\udf0e\ud853\udf5c" + - "\ud853\udf82\ud853\udf86\ud853\udf97\ud853\udf9a" + - "\ud853\udfa9\ud853\udfb8\ud853\udfc2\ud854\udc2c" + - "\ud854\udc52\ud854\udc9d\ud854\udd2b\ud854\udd48" + - "\ud854\udd7d\ud854\udd7e\ud854\uddcd\ud854\udde3" + - "\ud854\udde6\ud854\udde7\ud854\ude20\ud854\ude21" + - "\ud854\ude50\ud854\ude99\ud854\udec7\ud854\uded8" + - "\ud854\udf0e\ud854\udf11\ud854\udf13\ud855\udc19" + - "\ud855\udc25\ud855\udc2f\ud855\udc30\ud855\udc46" + - "\ud855\udc6c\ud855\udc6e\ud855\udd31\ud855\udd35" + - "\ud855\udd3f\ud855\udd5b\ud855\udd5c\ud855\udd5d" + - "\ud855\udd5e\ud855\udd62\ud855\udd65\ud855\udd66" + - "\ud855\udd81\ud855\udd84\ud855\udd8f\ud855\uddb9" + - "\ud855\uddd5\ud855\udddb\ud855\udde0\ud855\ude05" + - "\ud855\ude35\ud855\ude51\ud855\ude83\ud855\ude95" + - "\ud855\udee3\ud855\udef6\ud855\udf06\ud855\udf1d" + - "\ud855\udf25\ud855\udf3d\ud855\udf72\ud855\udfc7" + - "\ud855\udfdf\ud855\udfe0\ud855\udfe1\ud856\udc57" + - "\ud856\udc5d\ud856\udc72\ud856\udcc8\ud856\udce1" + - "\ud856\udd03\ud856\udd46\ud856\udd56\ud856\uddac" + - "\ud856\uddcc\ud856\ude95\ud856\ude9c\ud856\udeae" + - "\ud856\udeaf\ud856\udee9\ud856\udf74\ud856\udf89" + - "\ud856\udfb3\ud856\udfb4\ud856\udfc6\ud856\udfe4" + - "\ud856\udfe8\ud857\udc01\ud857\udc06\ud857\udc21" + - "\ud857\udc4a\ud857\udc65\ud857\udc91\ud857\udca4" + - "\ud857\udcc0\ud857\udcc1\ud857\udcfe\ud857\udd20" + - "\ud857\udd30\ud857\udd43\ud857\ude0e\ud857\ude49" + - "\ud857\ude81\ud857\ude82\ud857\ude83\ud857\udea6" + - "\ud857\udebc\ud857\uded7\ud857\uded8\ud857\udf1a" + - "\ud857\udf4b\ud857\udfe1\ud857\udfe2\ud858\udc29" + - "\ud858\udc48\ud858\udc64\ud858\udc83\ud858\udc97" + - "\ud858\udca4\ud858\udca5\ud858\udd02\ud858\udd21" + - "\ud858\udd59\ud858\udd5a\ud858\udd5b\ud858\udd5c" + - "\ud858\uddad\ud858\uddae\ud858\uddb2\ud858\udddd" + - "\ud858\ude58\ud858\ude61\ud858\ude6a\ud858\ude6b" + - "\ud858\uded0\ud858\udf35\ud858\udf4b\ud858\udf4c" + - "\ud858\udf51\ud858\udfbe\ud858\udff5\ud858\udff8" + - "\ud859\udc02\ud859\udc10\ud859\udc11\ud859\udc12" + - "\ud859\udc4a\ud859\udc69\ud859\udc84\ud859\udc88" + - "\ud859\udc89\ud859\udc8d\ud859\udc98\ud859\udd12" + - "\ud859\udd72\ud859\udda0\ud859\uddad\ud859\uddbf" + - "\ud859\ude12\ud859\ude26\ud859\udeaf\ud859\udeb1" + - "\ud859\udeb5\ud859\udeda\ud859\udee8\ud859\udefc" + - "\ud859\udf16\ud859\udf41\ud859\udf99\ud859\udfb3" + - "\ud859\udfb4\ud859\udfcc\ud85a\udc1c\ud85a\udc46" + - "\ud85a\udc5e\ud85a\udc6e\ud85a\udc88\ud85a\udc8a" + - "\ud85a\udc93\ud85a\udcc7\ud85a\udd0e\ud85a\udd11" + - "\ud85a\udd26\ud85a\udd39\ud85a\udd51\ud85a\udda8" + - "\ud85a\uddb5\ud85a\uddf2\ud85a\uddfa\ud85a\ude2d" + - "\ud85a\ude2e\ud85a\ude34\ud85a\ude42\ud85a\ude51" + - "\ud85a\ude52\ud85a\udf05\ud85a\udf0a\ud85a\udf13" + - "\ud85a\udf15\ud85a\udf28\ud85a\udf50\ud85a\udf51" + - "\ud85a\udf52\ud85a\udf53\ud85a\udf5b\ud85a\udf75" + - "\ud85a\udf82\ud85a\udf96\ud85a\udf97\ud85a\udf9d" + - "\ud85a\udfb3\ud85a\udfc0\ud85a\udff7\ud85b\udc21" + - "\ud85b\udc40\ud85b\udc7e\ud85b\udc7f\ud85b\udc80" + - "\ud85b\udc81\ud85b\udc82\ud85b\udca4\ud85b\udcb7" + - "\ud85b\udcb8\ud85b\udcbd\ud85b\udcc0\ud85b\udcc3" + - "\ud85b\udcd1\ud85b\udd22\ud85b\udd23\ud85b\udd24" + - "\ud85b\udd25\ud85b\udd26\ud85b\udd27\ud85b\udd28" + - "\ud85b\udd29\ud85b\udd2a\ud85b\udd51\ud85b\udd74" + - "\ud85b\udda0\ud85b\udda1\ud85b\udda2\ud85b\udda3" + - "\ud85b\udda4\ud85b\udda5\ud85b\udda6\ud85b\udda7" + - "\ud85b\uddae\ud85b\udddc\ud85b\uddea\ud85b\uddeb" + - "\ud85b\uddf0\ud85b\ude00\ud85b\ude05\ud85b\ude07" + - "\ud85b\ude12\ud85b\ude42\ud85b\ude43\ud85b\ude44" + - "\ud85b\ude45\ud85b\ude6e\ud85b\ude72\ud85b\ude77" + - "\ud85b\ude84\ud85b\ude99\ud85b\uded0\ud85b\uded1" + - "\ud85b\uded2\ud85b\uded3\ud85b\uded4\ud85b\uded5" + - "\ud85b\uded6\ud85b\uded7\ud85b\udf26\ud85b\udf73" + - "\ud85b\udf74\ud85b\udf9f\ud85b\udfa1\ud85b\udfbe" + - "\ud85b\udfde\ud85b\udfdf\ud85c\udc0e\ud85c\udc4b" + - "\ud85c\udc52\ud85c\udc53\ud85c\udc88\ud85c\udcad" + - "\ud85c\udcae\ud85c\udcaf\ud85c\udccd\ud85c\udcf8" + - "\ud85c\udd09\ud85c\udd0c\ud85c\udd0d\ud85c\udd26" + - "\ud85c\udd27\ud85c\udd64\ud85c\udd65\ud85c\udd75" + - "\ud85c\uddcd\ud85c\ude1b\ud85c\ude80\ud85c\ude85" + - "\ud85c\ude8b\ud85c\udeb2\ud85c\udeb6\ud85c\udee6" + - "\ud85c\udf9a\ud85d\udc22\ud85d\udc50\ud85d\udc84" + - "\ud85d\udc86\ud85d\udd74\ud85d\udda3\ud85d\udde0" + - "\ud85d\udde4\ud85d\uddfd\ud85d\uddfe\ud85d\ude07" + - "\ud85d\ude0c\ud85d\ude32\ud85d\ude39\ud85d\ude55" + - "\ud85d\ude56\ud85d\ude57\ud85d\ude94\ud85d\udf0f" + - "\ud85d\udf35\ud85d\udf36\ud85d\udf41\ud85d\udf5e" + - "\ud85d\udf84\ud85d\udf85\ud85d\udfcc\ud85e\udc58" + - "\ud85e\udc70\ud85e\udc9d\ud85e\udcb2\ud85e\udcc8" + - "\ud85e\udd24\ud85e\udd67\ud85e\udd7a\ud85e\udda0" + - "\ud85e\udddd\ud85e\uddfd\ud85e\ude0a\ud85e\ude0e" + - "\ud85e\ude3e\ud85e\ude53\ud85e\ude59\ud85e\ude79" + - "\ud85e\ude84\ud85e\udebd\ud85e\udebe\ud85e\udef4" + - "\ud85e\udf06\ud85e\udf0b\ud85e\udf18\ud85e\udf38" + - "\ud85e\udf39\ud85e\udf3a\ud85e\udf48\ud85e\udff4" + - "\ud85f\udc12\ud85f\udd2f\ud85f\udd53\ud85f\udd54" + - "\ud85f\udd66\ud85f\udd73\ud85f\udd84\ud85f\udd8f" + - "\ud85f\udd98\ud85f\uddbd\ud85f\udddc\ud85f\ude4d" + - "\ud85f\ude4f\ud85f\udff9\ud860\udc02\ud860\udc09" + - "\ud860\udc1e\ud860\udc23\ud860\udc24\ud860\udc48" + - "\ud860\udc83\ud860\udc90\ud860\udcbd\ud860\udcbe" + - "\ud860\udce8\ud860\udce9\ud860\udcf4\ud860\udd2e" + - "\ud860\udd4f\ud860\udd5d\ud860\udd6f\ud860\udd89" + - "\ud860\uddaf\ud860\uddbc\ud860\ude07\ud860\ude18" + - "\ud860\ude1a\ud860\ude56\ud860\ude7c\ud860\ude9b" + - "\ud860\udecd\ud860\udee2\ud860\udf06\ud860\udf18" + - "\ud860\udf2f\ud860\udf3a\ud860\udf65\ud860\udf6d" + - "\ud860\udf7d\ud860\udf8a\ud861\udc12\ud861\udc68" + - "\ud861\udc6c\ud861\udc73\ud861\udc82\ud861\udd01" + - "\ud861\udd3c\ud861\udd3d\ud861\udd6c\ud861\udde8" + - "\ud861\uddf4\ud861\ude00\ud861\ude0b\ud861\ude25" + - "\ud861\ude3b\ud861\udeaa\ud861\udeab\ud861\udebc" + - "\ud861\uded8\ud861\udee6\ud861\udf0f\ud861\udf13" + - "\ud862\udc04\ud862\udc2b\ud862\udd33\ud862\udd48" + - "\ud862\udd49\ud862\udd56\ud862\udd64\ud862\udd68" + - "\ud862\udd6c\ud862\udd7e\ud862\udd89\ud862\udda8" + - "\ud862\uddaa\ud862\uddab\ud862\uddb8\ud862\uddbc" + - "\ud862\uddc0\ud862\udddc\ud862\uddde\ud862\udde1" + - "\ud862\udde3\ud862\udde4\ud862\udde7\ud862\udde8" + - "\ud862\uddf9\ud862\uddfa\ud862\uddfb\ud862\uddfc" + - "\ud862\ude0f\ud862\ude16\ud862\ude25\ud862\ude29" + - "\ud862\ude32\ud862\ude36\ud862\ude44\ud862\ude45" + - "\ud862\ude46\ud862\ude47\ud862\ude48\ud862\ude49" + - "\ud862\ude4a\ud862\ude4b\ud862\ude59\ud862\ude5a" + - "\ud862\ude81\ud862\ude82\ud862\ude83\ud862\ude9a" + - "\ud862\ude9b\ud862\ude9c\ud862\udec0\ud862\udec6" + - "\ud862\udecb\ud862\udecc\ud862\udece\ud862\udede" + - "\ud862\udedf\ud862\udee0\ud862\udee1\ud862\udee2" + - "\ud862\udee3\ud862\udee5\ud862\udeea\ud862\udefc" + - "\ud862\udf0c\ud862\udf13\ud862\udf21\ud862\udf22" + - "\ud862\udf2b\ud862\udf2c\ud862\udf2d\ud862\udf2f" + - "\ud862\udf46\ud862\udf4c\ud862\udf4e\ud862\udf50" + - "\ud862\udf63\ud862\udf64\ud862\udf65\ud862\udf66" + - "\ud862\udf6c\ud862\udf8f\ud862\udf99\ud862\udf9c" + - "\ud862\udf9d\ud862\udfc2\ud862\udfc5\ud862\udfd4" + - "\ud862\udfd7\ud862\udfd9\ud862\udfda\ud862\udfe7" + - "\ud862\udfe8\ud862\udfe9\ud862\udfea\ud862\udfeb" + - "\ud862\udfec\ud862\udff5\ud862\udfff\ud863\udc03" + - "\ud863\udc09\ud863\udc1c\ud863\udc1d\ud863\udc23" + - "\ud863\udc26\ud863\udc2b\ud863\udc30\ud863\udc39" + - "\ud863\udc3b\ud863\udcca\ud863\udccd\ud863\udcd2" + - "\ud863\udd34\ud863\udd99\ud863\uddb9\ud863\ude0f" + - "\ud863\ude36\ud863\ude39\ud863\ude65\ud863\ude66" + - "\ud863\ude97\ud863\udeac\ud863\udeb2\ud863\udeb3" + - "\ud863\uded9\ud863\udee7\ud863\udfc5\ud864\udc88" + - "\ud864\udc8b\ud864\udc93\ud864\udcaf\ud864\udcb0" + - "\ud864\udcb1\ud864\udcc0\ud864\udce4\ud864\udce5" + - "\ud864\udcec\ud864\udced\ud864\udd0d\ud864\udd10" + - "\ud864\udd3c\ud864\udd4d\ud864\udd5b\ud864\udd5e" + - "\ud864\udd70\ud864\udd9c\ud864\udda8\ud864\uddd5" + - "\ud864\uddeb\ud865\udc1d\ud865\udc20\ud865\udc33" + - "\ud865\udc3f\ud865\udc48\ud865\udcd0\ud865\udcd9" + - "\ud865\udcda\ud865\udce5\ud865\udce7\ud865\udd9e" + - "\ud865\uddb0\ud865\uddb8\ud865\uddd7\ud865\udde9" + - "\ud865\uddf4\ud865\udf20\ud865\udf32\ud865\udfd4" + - "\ud866\udc10\ud866\udc57\ud866\udca4\ud866\udcd1" + - "\ud866\udcea\ud866\udcf1\ud866\udd03\ud866\udd05" + - "\ud866\udd2f\ud866\udd47\ud866\udd48\ud866\udd49" + - "\ud866\udd5d\ud866\udd6a\ud866\udd9d\ud866\uddc3" + - "\ud866\uddc9\ud866\ude28\ud866\ude4d\ud866\udf05" + - "\ud866\udf0e\ud866\udfd5\ud867\udc73\ud867\udcad" + - "\ud867\udd3e\ud867\udd5a\ud867\udd7c\ud867\udd98" + - "\ud867\udd9b\ud867\uddf6\ud867\ude06\ud867\ude2d" + - "\ud867\ude68\ud867\udeac\ud867\udec3\ud867\udef8" + - "\ud867\udf23\ud867\udf30\ud867\udfb7\ud867\udfde" + - "\ud868\udc14\ud868\udc87\ud868\udcb9\ud868\udce1" + - "\ud868\udced\ud868\udcf3\ud868\udcf8\ud868\udcfe" + - "\ud868\udd07\ud868\udd23\ud868\udd33\ud868\udd34" + - "\ud868\udd50\ud868\udd92\ud868\udd93\ud868\uddab" + - "\ud868\uddb4\ud868\udddf\ud868\uddf5\ud868\ude20" + - "\ud868\ude33\ud868\ude93\ud868\ude9f\ud868\udeb2" + - "\ud868\udeb4\ud868\udeb6\ud868\udeba\ud868\udebd" + - "\ud868\udedf\ud868\udeff\ud868\udfa9\ud869\udc34" + - "\ud869\udc5b\ud869\uddc6\ud869\uddcb\ud869\ude01" + - "\ud869\ude32\ud869\ude4a\ud869\ude5b\ud869\udea9" + - "\ud87e\udc25\ud87e\udc3b\ud87e\udc40\ud87e\udc78" + - "\ud87e\udc94\ud87e\udca6\ud87e\udccd\ud87e\udd94" + - "\ud87e\uddb2\ud87e\uddbc\ud87e\uddd4"; - - String nativeSupplementary = - "\u9C71\u9375\u9376\u9548\u8EC6\u8BC5"+ - "\u8BFA\uC87C\u9AB4\u884E\u884B\uC87A"+ - "\u8848\u8847\uA0F6\u8845\u8853\uFCAD"+ - "\u8AAD\u9272\uFC47\u94DF\u9FD1\uFBCB"+ - "\u927D\u98A4\u94E7\u90CB\u927B\u94D8"+ - "\uFC5F\uFA54\u9AB5\u96DA\u9279\uFA74"+ - "\u9275\u8DFB\u8A49\u92DF\u9B7C\uFA63"+ - "\uFA60\u926D\uFA62\u9AB6\u976B\uFD6A"+ - "\uFD54\u9273\u97D8\u9FBB\u9342\u9276"+ - "\uFA65\u926C\uFA6E\u9EE0\u92C0\u92BF"+ - "\u92BE\u9ABA\u8AB3\u9775\uFA40\uFA76"+ - "\uFBD0\uFA7B\uFE6D\u9BB3\u89CC\u9ABE"+ - "\uFA42\u92BC\u945C\u9BB5\u9ABF\u98A7"+ - "\u97A4\u90FD\uFC7B\u9AC0\u92C3\u8AAA"+ - "\u9BD0\u9550\u92C6\u98A6\u9546\uFD63"+ - "\uFAC2\u9EC3\u89B2\u9C66\u9053\u97C1"+ - "\u9AC4\u9AC5\u8EEF\uFAE9\u9262\u8AF7"+ - "\u9AC6\u92E1\u9AC9\uFAC6\u97A5\u9ACB"+ - "\uFA72\u8A5E\u94E0\u92CC\u8AE5\uFE5C"+ - "\u9ACC\u9DF9\u8A43\u8AA6\u9ACD\u9ACE"+ - "\uFAEE\u9BCC\u9ACF\u9AD1\u9DFA\u9D7C"+ - "\u9AD3\u97A6\u995F\uFBF6\u9FC5\u8A59"+ - "\u8B6B\u9AD4\u9AD5\u97A2\u8A44\u9F4A"+ - "\u90A1\uFDA4\u8A64\u8AF2\u8AF8\u9DD8"+ - "\u94D6\uFAFE\uFBA7\u9AD6\u9F4D\uFAF6"+ - "\u8A57\u8B43\u8B44\u8AB6\u8AC0\u9E54"+ - "\u9AD7\u9AD8\u9ADC\u8ACA\u9EA8\u9263"+ - "\u9ADD\u8B65\u8B6F\u8B7E\u8F43\u92D0"+ - "\u8AF4\u9DBE\u9AE1\uFCDE\u9DFD\u8B66"+ - "\u8B70\u8B75\u8AE4\u8BA4\u8AED\u8A5D"+ - "\u8B48\u9DED\u9E40\u8AEF\u8AF6\u9E76"+ - "\u9EE3\u9ADE\u8DFE\uFAFC\u9CB1\u9E77"+ - "\u8B64\u8B67\u974B\u9653\u9AE0\u8B4A"+ - "\u8AF1\u8AD7\uA0AB\u8AB5\u8A5F\u8AEE"+ - "\u9ADF\u8AFE\u8A58\u8BA3\u8BA7\u9AE3"+ - "\u9261\u9DD7\u9E7D\u9EA7\u9EAB\u9042"+ - "\u8B79\u8B7A\u9AE6\u9AE5\u8A7E\u9E44"+ - "\u9AE7\u8A7C\u8B71\u9AE9\u9AEA\u9AEB"+ - "\u8ABD\uFB4E\u9AED\u8AF9\u9E63\u8B49"+ - "\u8ACE\u8B6E\u8AE8\u9AEE\u92CE\u8A5A"+ - "\u8B7B\u8B7C\u9AEF\u9AF0\u8AFA\u8941"+ - "\u8B72\u8AF3\u8BA8\u9EAE\u9E72\uFB73"+ - "\uFB5F\u90BA\u91FE\u9EF6\u97ED\u9AF3"+ - "\uA0EE\u967C\u9345\u986E\uFA56\u9AF5"+ - "\uFC4B\u9AF4\uFEDE\uFCB7\u97F1\u97C7"+ - "\u9CCB\u9240\u9CE8\u91FD\u974E\uFB68"+ - "\u976C\u8CC2\u97E8\uFB6A\u8B74\u8EE7"+ - "\uFDC8\u9241\u96A1\u8EF3\u9AF7\u8FA6"+ - "\uFAD6\u9CC7\uFAD7\u9AF8\uFBA1\u8EC5"+ - "\uFBA4\uFBC2\u9AC1\u91FA\uFEDB\u97AB"+ - "\u9147\uFBB1\u8FEA\u94D2\uFE61\uFACE"+ - "\u92ED\u91F3\u93C6\u935A\uFAFB\u92EF"+ - "\uFAC8\u9847\u9366\u9855\u96E6\u9F43"+ - "\u9FAA\u94DA\u92EE\uFCAF\uFBFB\u8EF9"+ - "\u91F6\u9364\u94F5\u9CB6\uFBAD\u984E"+ - "\u8F44\u96FD\u9AF9\u9AFA\u9769\u95D4"+ - "\u984B\uFBAA\u987C\u91EA\u9DAF\u9DC5"+ - "\u91F1\u8EB1\u97A9\uFBAC\uFCB8\u9CB9"+ - "\uFBB0\uFCD2\u93CB\u9AFD\u91F4\u8BAC"+ - "\uA055\u9574\u95BE\u97AD\u8EE9\u92F8"+ - "\u97BE\u916C\u94AA\uFC63\u9DC6\u97B5"+ - "\u92B8\u91EF\uFEA6\u9760\u9358\u9576"+ - "\u8FAC\u91EC\u97B4\u91F7\u974A\uFB49"+ - "\u9578\u93BC\u91D6\u9355\u9356\u9851"+ - "\u8FF8\uFBC0\u93F2\u90D0\u9C44\u9255"+ - "\u9363\u91A5\uA0ED\uFD6B\u9AFE\u9351"+ - "\u8C57\uFA78\uFEA8\u9350\uFA4C\u92F7"+ - "\u9B40\uFBCE\u9B41\uFEAD\uFBD5\u8BC2"+ - "\u9A7C\u9B42\u9B43\u9E79\uFBD9\u9B44"+ - "\uA0A7\u9BF3\u8C79\u935E\u89CB\u9F53"+ - "\u93D7\uFBE1\uFED0\uFBE2\uFCE3\u9074"+ - "\uFBE6\u9BB7\u9B45\u9B47\u9F50\u9B48"+ - "\uFC5B\u98A9\u9CFD\u884C\u9B4B\uFBEC"+ - "\u8C69\u9BA8\u8AD5\uFA73\uFD59\u91A2"+ - "\uFBED\u9CA9\u8AA8\u9BC3\u8AE1\u9B4E"+ - "\u95D0\u905F\u97EE\uFC4E\u9B4F\u9B50"+ - "\u9EC6\uFC50\uFD73\uFDA7\u9DA2\uFA58"+ - "\uFA5E\uA059\uFA75\uFBBE\u9CA2\u9370"+ - "\u9371\u9377\uFEEF\u936D\uFC5D\u90B8"+ - "\u8AFC\uFB41\u9E6B\u94E3\u8EE2\u8C7D"+ - "\u8ED7\u9C4D\u96A3\u9B51\u8AC3\u96AA"+ - "\uFC68\u8B6D\uFD67\u8AE9\uFCA1\u936C"+ - "\u9B52\uFE70\uFCA8\uFCE9\u9CB4\u8AEA"+ - "\u9B53\u9B55\u96AB\uFCA7\u9B56\u8ABC"+ - "\u8ACB\u9B57\u89CD\u9B59\u9B5B\u93A5"+ - "\u9B5D\u9E4F\u93A3\u8A7B\u8B42\u9750"+ - "\u8FB3\u8A50\u9B60\u8B45\u8B46\u9DFE"+ - "\u9B62\u937B\u93B1\u8A60\u8AD8\u9B63"+ - "\u8A69\u8A47\u8ACC\u937C\u9B65\u9B66"+ - "\u8A72\u8A7A\u93AF\u8AB0\u9B68\u9EA3"+ - "\uFAEC\u8B77\u9B67\u8B59\uFCB1\uFCBB"+ - "\u9B69\u93A8\u8AE0\u9E51\u8F5F\u9B6A"+ - "\u9B6B\u97EC\u9B6C\uFE4E\uFDC2\u9B6D"+ - "\u9167\uFCCC\u93B6\u90E4\u90E5\u9EF2"+ - "\u93CA\u8BBC\u8F46\u93CF\uFCDB\uFCDC"+ - "\u93C0\uFCE6\u96E7\uFCD8\uFCD9\uFDA6"+ - "\u93CE\u95F1\u9CE9\uFCE4\u94AF\uFA77"+ - "\u93CC\u905A\u8C54\u93BF\uFB51\u93B9"+ - "\uFED7\u93B7\u93D9\u93BB\u93DA\u98A3"+ - "\u90D1\u9B6E\uFA70\u9BEB\u9B6F\uFCFC"+ - "\u8B40\uA07B\u8CA1\u97F7\u93E2\uFCD6"+ - "\u9559\u93A6\uFD40\u935F\u97F2\u9C76"+ - "\u8EF8\u8F47\u9B74\u92B4\u91ED\u96D2"+ - "\uFD46\u8F4F\u9549\u9B75\uFA5C\u9B79"+ - "\uFD4B\u96D3\uFD58\u945F\uA0F5\u9243"+ - "\u97FA\u9DD9\u97F4\u924D\uFD5B\u9B7A"+ - "\u9ED5\uFAAE\u9CC9\u9258\u8EC8\u94B4"+ - "\u93E1\u93DF\uFCF0\u93EC\u97F6\u96CF"+ - "\u93DE\u8ACF\u9BA2\uFD69\u9352\u98A2"+ - "\uFD6E\u8CA4\uFA7C\u93FA\u907C\u8F67"+ - "\u9DB7\uA0E9\uFA4E\uFDA1\u9E74\u9FBF"+ - "\u9ECB\u9BB9\u9DD4\u97B9\u8EF1\u957B"+ - "\u9ED2\u9753\u96A4\u8FBE\u94D9\u9058"+ - "\uFD79\uFD7B\u8EDA\u8EFA\u9BA5\u9ED9"+ - "\u97D4\u90BB\uFDBC\uFDC6\u9248\u92B5"+ - "\u9DC1\u92B9\u92A6\u8F4B\u9BA6\u92B6"+ - "\u8E40\u9ED8\u945E\u985F\u94CE\u924A"+ - "\uFD70\u9467\u8DEC\u9BD8\u9448\uFAC1"+ - "\u9CF7\uFDBE\u8FDA\uFDD9\uFC7E\u93F9"+ - "\uFA43\uFAEB\uFAC3\u97D3\u95F9\u9C48"+ - "\uFDD8\uA0D8\uFDD7\uFB4A\u9BAF\u944B"+ - "\uFDC9\u8EAC\uFDB2\u925A\uFCBD\u92D9"+ - "\uFDD5\u92DD\u9259\u96BA\u925B\u9BAB"+ - "\uFDDA\uFDDE\uFDD3\u8C46\uFDD6\uFDDC"+ - "\uFDDD\u90FE\uFEA1\u8BAD\u9CD8\u9E6D"+ - "\uFD7C\uFB61\u96F8\u96F0\uFCF4\uFE60"+ - "\u9852\u964F\u916E\u986D\u9864\u9453"+ - "\uFDEC\uFB78\u95BA\u985D\u92F9\u985A"+ - "\uFDF6\u93D0\u9862\u9BAD\u974F\u9BAE"+ - "\u9452\u9BB0\u91D2\u97EA\uFB6B\u91B1"+ - "\uFDF3\u92CB\u9BB1\uFCEC\u986B\u9751"+ - "\u9871\u95EF\u9EF3\u91E8\u9BBA\uFB4C"+ - "\u926A\uFDF8\u9861\u91E7\u93ED\u9744"+ - "\u91E1\uFBF5\u9869\u8A62\u9BBB\u8CA8"+ - "\u9C55\u8E77\u8AB2\u9EBC\u93E6\u93A2"+ - "\u9BBD\u94B3\u937D\u9E66\u9459\u9BBF"+ - "\u9458\u9EA5\u9BC7\uFE54\u8E74\u8BD6"+ - "\u94B6\uFD74\u98C0\u94A5\u9BC8\u95ED"+ - "\uFD7E\uFBEB\uFD7D\u976F\u9461\u9FC1"+ - "\u95D7\uFA52\u9C58\u9F68\u9BE7\uFCCE"+ - "\u96E8\uFA49\u97A1\u954D\u9EF8\uFE49"+ - "\u91CE\u9771\u8CCF\uFDB1\uFC6E\u9CF2"+ - "\u93B8\u9043\u9759\u94D7\uFE66\u947D"+ - "\uFC6F\u9246\uFA6D\u8EF7\uFBB7\u947C"+ - "\u92CD\u97B2\uFE65\u967E\u9758\u9B77"+ - "\u91CF\u94A4\u9CAD\u8BAB\u96D5\uFCB3"+ - "\u93AE\u976D\u9446\u95F7\u9C46\u955B"+ - "\u91D1\u94F4\uFE67\u92A5\uFEDF\u8CAB"+ - "\u9BC9\uFCED\uFDFA\uFCC8\uFE62\u91FC"+ - "\uFE6B\uFDF9\uFCC7\u914E\u9CB8\u9767"+ - "\u95EE\u9BB2\u9460\u94A2\u9875\u97AC"+ - "\u91D3\u987B\u8EEB\u976A\u965E\u97EB"+ - "\u9FF9\u95F8\uFEA2\u8FE6\uFE7E\u9DA4"+ - "\u9768\u8EEC\u94BD\u945B\u9CF6\uFAA7"+ - "\u9BD9\uFA5D\u9656\u9762\u94BA\uA04F"+ - "\u92D8\u9BCB\u94BB\u9D5F\u90CF\u9465"+ - "\u9F4C\u90D8\u9EBE\uFB6D\u95CA\u9DC2"+ - "\u97F8\u8FFC\u9473\u9474\uFEB7\u8A4B"+ - "\u8A55\u8B69\u8ADC\u8B76\u9BCE\u8A68"+ - "\uA0F8\u98DF\uFEB5\u9BCF\u96FB\u9BFB"+ - "\u9ECE\u8EE5\u9E7B\u9BD2\u8AA5\uFECE"+ - "\u8A45\u9DFC\uFECF\u8BA5\u8C4A\u8AEC"+ - "\uFCE0\u94AD\uFED5\u94AC\uFC5A\u9BD6"+ - "\u8A6F\u8BA9\u8E5F\u9DCB\uFCE7\u9BD7"+ - "\u93C8\u91F0\u8FE0\u9BDB\u90ED\u9BDC"+ - "\uA0EC\u98FA\u9BE0\u93C7\u9249\u96E1"+ - "\u9BE2\u9BE4\u8FE1\u9BE5\u94C0\u93C3"+ - "\u93C5\u9079\u977B\u907E\uFEE6\uFE46"+ - "\u9DB8\u9270\u95A8\u8CB0\u94C8\u98B9"+ - "\u9140\uFCBE\u9157\u8BB2\uFADF\u9BE6"+ - "\u9643\u8E44\u9C4F\uFEF4\u9BE8\u93DC"+ - "\u966F\u8E4A\u9BED\u92F6\u9DB9\u8E4E"+ - "\uFBCF\u9EC2\u94E5\u9BF0\u94E4\u9551"+ - "\u8BBB\u9BF1\u94F0\u8E64\u94EA\u8F61"+ - "\u9B64\u8E5B\u9BF2\u9FBE\u9DC9\u8E6C"+ - "\u8F73\u8CAF\u8F75\u8E71\u8E60\u8E6A"+ - "\u8C4C\u9552\u9554\u8AD4\u9DBB\u9543"+ - "\u92FE\u94F2\u94F1\uA0EA\u9DD2\uA0B1"+ - "\u91F8\u9462\u9BA4\u8EAD\u9EAD\u96D0"+ - "\uFEEE\u8AB4\u9757\u8A77\u9BF7\u8EB5"+ - "\uA06D\u8EB6\u9756\u9540\uA0F3\u94BE"+ - "\u9BFA\uFDDF\u9DBC\u94FE\u8BDB\uA0FE"+ - "\u8EC0\u9F47\u8BDE\uA0FB\u8EC3\u9649"+ - "\uFEC2\u954C\u9BFD\u90CC\u9C60\u954B"+ - "\u9BFE\u9C70\u9C43\u9C47\u8ECC\u8E54"+ - "\u8EE4\u9C49\u8B5E\u955E\u955C\u9C4B"+ - "\u8BE1\u8ED9\u9DB4\u925F\u9C4C\u8AA1"+ - "\u8EDB\u9C56\u8AA2\u9754\u9C5E\u9ED4"+ - "\u9568\uA0C3\u8AE6\uA0F7\u9C61\u9C5F"+ - "\uFC4D\u9E5B\u9E69\u9C63\uFEC7\uFEC6"+ - "\u9C67\u9C69\u8BE2\u9165\u9CE7\u8A54"+ - "\u9C6C\u9C6E\uFE5D\u9C73\u956A\u956D"+ - "\u8EF0\u8F4D\u8EF6\uFABC\u8CD5\uFBDA"+ - "\u8B4C\uFD75\u9BDD\uFAF5\u9C74\u9545"+ - "\u96C6\u8F6A\u8F4E\u9C78\uFA55\u97E4"+ - "\u9C41\u925C\u96FA\uFB66\u8E65\u9849"+ - "\uFBA8\u9842\u9C7A\u97FB\u90CA\u9C5B"+ - "\u974D\u8ED3\u9561\u9F4B\u9FB5\u93D2"+ - "\uFDAA\u9840\u9146\u9867\uFA5A\uFBA9"+ - "\u9841\u8CD3\uFCFD\uFDAB\u91BD\u8F4C"+ - "\u96C9\u8F55\uFBAE\u956F\u9C7D\uA0F0"+ - "\u946F\uFDAC\u96CB\u96CE\uA056\u9CE1"+ - "\u96C4\u8F5E\u8F6C\u8EA3\uFBB3\uFC53"+ - "\uFDB3\u8F6B\u96CA\u8F79\u9E6F\uA0C5"+ - "\uFC78\u8E42\u8F5A\u90C2\u8EA5\u9061"+ - "\u924F\u9373\uFDB5\uFECC\uFBBD\u8CD6"+ - "\u9843\u96C5\u89BC\u9CA3\u924B\u984A"+ - "\u8FA4\uA0F1\u9EFB\u9CD2\u8FA7\uFC5C"+ - "\u9845\u9046\u8CD1\uFEFA\u9560\u9F48"+ - "\u9247\u90FB\u9CA4\u9571\u9CA6\u9CA7"+ - "\u9CAA\u9ED3\u9E70\u9CAC\u8FAE\u957D"+ - "\u9CB0\u97B6\uA0BD\u8ADF\u9EAA\u8FBD"+ - "\u8FBF\u9369\u9BA7\uC8A4\uFEEA\u9BE1"+ - "\u8B41\u9DB6\uA0EB\u9BA3\u8BA1\u8FC8"+ - "\u894C\u9860\u94C7\u8B58\u95AB\u95AA"+ - "\u9CC3\u9CC4\u93D6\u9DAC\u8BE6\u8A71"+ - "\u8FD1\u99D5\u90F4\u8AA3\u9CCE\u9CD4"+ - "\u9CD5\uFBC8\u9DB3\uFC70\u8FD7\u9B73"+ - "\uFA5B\u8FD2\u9064\u98B6\u9668\u9CD6"+ - "\u98BD\u8FDC\uFEF6\u8FD9\u9541\u97F3"+ - "\u9BF8\u9E6C\u8FF2\u8FEE\u9CD7\u9E6E"+ - "\u8A40\u8FEF\u8FF4\u8FF5\u95C2\u986A"+ - "\u97CF\u9E7C\u9041\u9CDB\u9441\u9CE6"+ - "\u9DB0\u9CEA\u9CED\u9CFA\u8B62\u8A4E"+ - "\u9CCA\u8A66\u9CFB\u9CFC\u9CFE\u8A53"+ - "\u9CE5\u9D40\u9D41\u9045\u8B73\u97CA"+ - "\u9D42\u8A61\u8BAE\u8AD2\u8BA2\u9DF2"+ - "\u9D43\u9CDF\u9D44\u8ECA\u904E\u8EB3"+ - "\u9FF5\u9D45\u904F\u9D47\u89CA\u9CB5"+ - "\uFBFE\u905E\u9063\u9057\u9066\u9BC0"+ - "\uFCE5\u9162\u9067\u8FA1\u8FA2\u9D48"+ - "\uFAD3\u905D\u90B9\u906B\u8C5C\u9069"+ - "\uFE57\uFE55\u9073\u9BEF\u9CF0\u9D4B"+ - "\uFED9\uFEDA\u91E0\u91D8\u9646\u9360"+ - "\uFA53\u9CD3\u9D4E\uFB40\u8DE2\u9442"+ - "\u9056\u9865\u8C6C\uFA4A\u9D50\u9D52"+ - "\u95AF\u975A\u9349\u9747\uA0F4\u9778"+ - "\u8FCF\uFC60\u8C4E\uFC56\u91DC\u9661"+ - "\u92EC\u935D\u8EDE\u96FE\uFD4F\u95DE"+ - "\u98B0\uA040\u97BD\u977D\u97F5\u9BAC"+ - "\uFADA\u92C2\u97B1\u907B\u93FE\u947B"+ - "\u9777\uFABE\uFD43\u90C6\u90A4\u90A8"+ - "\u94A9\u90A9\u8C65\u95E0\u907D\u9265"+ - "\uFDBA\u93C4\uFEED\u9DAB\uA0E3\u9648"+ - "\u9D53\u8AA9\u9BC5\u965D\u975F\u965F"+ - "\u966E\uFB5D\u9DB1\uFEA3\u9DB2\u95AE"+ - "\uFCA3\uA0A2\u9655\u9D54\u9341\u95AD"+ - "\u91D5\u977A\uFDFC\u8E47\u93FD\u90A5"+ - "\u90AC\u95AC\u90AE\uFEA5\u9D56\u97E3"+ - "\u95E2\u9466\u9647\u91B8\u9CEC\u90AD"+ - "\u95E3\u8B4F\u8AE3\u8B4D\u95EA\u8B4E"+ - "\u8CC1\u8BED\u91D9\uA0A4\u95F5\u95F4"+ - "\u9FB3\uFEAF\uFE72\u927A\uFEAC\u95F3"+ - "\u9D58\u9372\u91C5\u9642\u90CD\u95FE"+ - "\u9159\u9C65\u97CC\u90CE\u9D59\uFCF5"+ - "\uFEFD\u9D5B\u9D5C\u937E\u98AC\u9D5E"+ - "\uFDD0\uFD60\u9CCF\u90DD\u90E0\u90F3"+ - "\u98B1\u90F0\u93BD\u95B7\u9F46\u8E4B"+ - "\u9658\u8A4C\u9D63\u9ECF\u9D65\u9D66"+ - "\u965A\u9D64\u8A6C\u8AD9\u9D67\u8A70"+ - "\u8BF3\u9150\u9CC1\u9D68\u93A7\u9674"+ - "\uA0EF\u9151\u96C1\u8C64\u9676\u9D69"+ - "\uFCA4\u9D6A\u924E\u9D6B\u9BC1\u9D6C"+ - "\u8A65\u915D\u9D6D\u915A\u8C42\u9CC0"+ - "\u916A\u9D6E\u9EA6\u9DCD\u9D6F\u89BB"+ - "\u9EF9\u96B4\u9172\u9EC8\u8B55\u9D71"+ - "\u9D72\u9ECC\u9174\u9ED0\u905C\u8ED2"+ - "\u91A8\u9177\u96BF\u96C0\u8FB1\u96B7"+ - "\u8C55\u9178\u89BE\u917C\uFB77\u9175"+ - "\u91A3\u9176\u96BE\u9179\u96B6\u91A4"+ - "\u91A6\u9D75\u9052\uA045\u91A9\u98AA"+ - "\u8C5F\u8BAA\u9CDD\u9D77\u8940\u9EEC"+ - "\u93AA\u9478\u9D7A\u8AC9\u8B4B\u9FEC"+ - "\u8AE2\u9E75\u9874\u9AC8\uA047\u8BC3"+ - "\uFC48\uFC77\u9C52\u8EFD\u8FA8\u957A"+ - "\u8FF0"; - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS.java --- a/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,47 +55,35 @@ return new Encoder(this); } - private static class Decoder extends HKSCS.Decoder { - - private static DoubleByte.Decoder ms950Dec = + static class Decoder extends HKSCS.Decoder { + private static DoubleByte.Decoder ms950 = (DoubleByte.Decoder)new MS950().newDecoder(); - /* - * Note current decoder decodes 0x8BC2 --> U+F53A - * ie. maps to Unicode PUA. - * Unaccounted discrepancy between this mapping - * inferred from MS950/windows-950 and the published - * MS HKSCS mappings which maps 0x8BC2 --> U+5C22 - * a character defined with the Unified CJK block - */ - - protected char decodeDouble(int byte1, int byte2) { - char c = super.decodeDouble(byte1, byte2); - return (c != UNMAPPABLE_DECODING) ? c : ms950Dec.decodeDouble(byte1, byte2); + private static char[][] b2cBmp = new char[0x100][]; + private static char[][] b2cSupp = new char[0x100][]; + static { + initb2c(b2cBmp, HKSCSMapping.b2cBmpStr); + initb2c(b2cSupp, HKSCSMapping.b2cSuppStr); } private Decoder(Charset cs) { - super(cs); + super(cs, ms950, b2cBmp, b2cSupp); } } private static class Encoder extends HKSCS.Encoder { - - private static DoubleByte.Encoder ms950Enc = + private static DoubleByte.Encoder ms950 = (DoubleByte.Encoder)new MS950().newEncoder(); - /* - * Note current encoder encodes U+F53A --> 0x8BC2 - * Published MS HKSCS mappings show - * U+5C22 <--> 0x8BC2 - */ - protected int encodeDouble(char ch) { - int r = super.encodeDouble(ch); - return (r != UNMAPPABLE_ENCODING) ? r : ms950Enc.encodeChar(ch); + static char[][] c2bBmp = new char[0x100][]; + static char[][] c2bSupp = new char[0x100][]; + static { + initc2b(c2bBmp, HKSCSMapping.b2cBmpStr, HKSCSMapping.pua); + initc2b(c2bSupp, HKSCSMapping.b2cSuppStr, null); } private Encoder(Charset cs) { - super(cs); + super(cs, ms950, c2bBmp, c2bSupp); } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS_XP.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/sun/nio/cs/ext/MS950_HKSCS_XP.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,102 @@ +/* + * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package sun.nio.cs.ext; + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import sun.nio.cs.HistoricallyNamedCharset; +import static sun.nio.cs.CharsetMapping.*; + +public class MS950_HKSCS_XP extends Charset +{ + public MS950_HKSCS_XP() { + super("x-MS950-HKSCS-XP", ExtendedCharsets.aliasesFor("x-MS950-HKSCS-XP")); + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof MS950) + || (cs instanceof MS950_HKSCS_XP)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new Encoder(this); + } + + static class Decoder extends HKSCS.Decoder { + private static DoubleByte.Decoder ms950 = + (DoubleByte.Decoder)new MS950().newDecoder(); + + /* + * Note current decoder decodes 0x8BC2 --> U+F53A + * ie. maps to Unicode PUA. + * Unaccounted discrepancy between this mapping + * inferred from MS950/windows-950 and the published + * MS HKSCS mappings which maps 0x8BC2 --> U+5C22 + * a character defined with the Unified CJK block + */ + private static char[][] b2cBmp = new char[0x100][]; + static { + initb2c(b2cBmp, HKSCS_XPMapping.b2cBmpStr); + } + + public char decodeDoubleEx(int b1, int b2) { + return UNMAPPABLE_DECODING; + } + + private Decoder(Charset cs) { + super(cs, ms950, b2cBmp, null); + } + } + + private static class Encoder extends HKSCS.Encoder { + private static DoubleByte.Encoder ms950 = + (DoubleByte.Encoder)new MS950().newEncoder(); + + /* + * Note current encoder encodes U+F53A --> 0x8BC2 + * Published MS HKSCS mappings show + * U+5C22 <--> 0x8BC2 + */ + static char[][] c2bBmp = new char[0x100][]; + static { + initc2b(c2bBmp, HKSCS_XPMapping.b2cBmpStr, null); + } + + public int encodeSupp(int cp) { + return UNMAPPABLE_ENCODING; + } + + private Encoder(Charset cs) { + super(cs, ms950, c2bBmp, null); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/pkcs11/P11SecureRandom.java --- a/jdk/src/share/classes/sun/security/pkcs11/P11SecureRandom.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/pkcs11/P11SecureRandom.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ package sun.security.pkcs11; import java.util.*; - +import java.io.*; import java.security.*; import sun.security.pkcs11.wrapper.*; @@ -61,9 +61,28 @@ // buffer, if mixing is used private byte[] mixBuffer; - // bytes remaining in buffer, if mixing is used + // bytes remaining in mixBuffer, if mixing is used private int buffered; + /* + * we buffer data internally for efficiency but limit the lifetime + * to avoid using stale bits. + */ + // lifetime in ms, currently 100 ms (0.1 s) + private static final long MAX_IBUFFER_TIME = 100; + + // size of the internal buffer + private static final int IBUFFER_SIZE = 32; + + // internal buffer for the random bits + private transient byte[] iBuffer = new byte[IBUFFER_SIZE]; + + // number of bytes remain in iBuffer + private transient int ibuffered = 0; + + // time that data was read into iBuffer + private transient long lastRead = 0L; + P11SecureRandom(Token token) { this.token = token; } @@ -104,16 +123,29 @@ if ((bytes == null) || (bytes.length == 0)) { return; } - Session session = null; - try { - session = token.getOpSession(); - token.p11.C_GenerateRandom(session.id(), bytes); - mix(bytes); - } catch (PKCS11Exception e) { - throw new ProviderException("nextBytes() failed", e); - } finally { - token.releaseSession(session); + if (bytes.length <= IBUFFER_SIZE) { + int ofs = 0; + synchronized (iBuffer) { + while (ofs < bytes.length) { + long time = System.currentTimeMillis(); + // refill the internal buffer if empty or stale + if ((ibuffered == 0) || + !(time - lastRead < MAX_IBUFFER_TIME)) { + lastRead = time; + implNextBytes(iBuffer); + ibuffered = IBUFFER_SIZE; + } + // copy the buffered bytes into 'bytes' + while ((ofs < bytes.length) && (ibuffered > 0)) { + bytes[ofs++] = iBuffer[IBUFFER_SIZE - ibuffered--]; + } + } + } + } else { + // avoid using the buffer - just fill bytes directly + implNextBytes(bytes); } + } // see JCA spec @@ -143,4 +175,26 @@ } } + // fill up the specified buffer with random bytes, and mix them + private void implNextBytes(byte[] bytes) { + Session session = null; + try { + session = token.getOpSession(); + token.p11.C_GenerateRandom(session.id(), bytes); + mix(bytes); + } catch (PKCS11Exception e) { + throw new ProviderException("nextBytes() failed", e); + } finally { + token.releaseSession(session); + } + } + + private void readObject(ObjectInputStream in) + throws IOException, ClassNotFoundException { + in.defaultReadObject(); + // assign default values to non-null transient fields + iBuffer = new byte[IBUFFER_SIZE]; + ibuffered = 0; + lastRead = 0L; + } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/pkcs11/P11Signature.java --- a/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,8 +30,7 @@ import java.nio.ByteBuffer; import java.security.*; -import java.security.interfaces.ECPublicKey; - +import java.security.interfaces.*; import sun.nio.ch.DirectBuffer; import sun.security.util.*; @@ -88,7 +87,7 @@ // mechanism id private final long mechanism; - // digest algorithm OID, if we do RSA padding ourselves + // digest algorithm OID, if we encode RSA signature ourselves private final ObjectIdentifier digestOID; // type, one of T_* below @@ -103,7 +102,7 @@ // associated session, if any private Session session; - // mode, on of M_* below + // mode, one of M_* below private int mode; // flag indicating whether an operation is initialized @@ -137,6 +136,9 @@ this.token = token; this.algorithm = algorithm; this.mechanism = mechanism; + byte[] buffer = null; + ObjectIdentifier digestOID = null; + MessageDigest md = null; switch ((int)mechanism) { case (int)CKM_MD2_RSA_PKCS: case (int)CKM_MD5_RSA_PKCS: @@ -146,34 +148,25 @@ case (int)CKM_SHA512_RSA_PKCS: keyAlgorithm = "RSA"; type = T_UPDATE; - digestOID = null; buffer = new byte[1]; - md = null; break; case (int)CKM_DSA_SHA1: keyAlgorithm = "DSA"; type = T_UPDATE; - digestOID = null; buffer = new byte[1]; - md = null; break; case (int)CKM_ECDSA_SHA1: keyAlgorithm = "EC"; type = T_UPDATE; - digestOID = null; buffer = new byte[1]; - md = null; break; case (int)CKM_DSA: keyAlgorithm = "DSA"; - digestOID = null; if (algorithm.equals("DSA")) { type = T_DIGEST; md = MessageDigest.getInstance("SHA-1"); - buffer = null; } else if (algorithm.equals("RawDSA")) { type = T_RAW; - md = null; buffer = new byte[20]; } else { throw new ProviderException(algorithm); @@ -181,10 +174,8 @@ break; case (int)CKM_ECDSA: keyAlgorithm = "EC"; - digestOID = null; if (algorithm.equals("NONEwithECDSA")) { type = T_RAW; - md = null; buffer = new byte[RAW_ECDSA_MAX]; } else { String digestAlg; @@ -201,14 +192,12 @@ } type = T_DIGEST; md = MessageDigest.getInstance(digestAlg); - buffer = null; } break; case (int)CKM_RSA_PKCS: case (int)CKM_RSA_X_509: keyAlgorithm = "RSA"; type = T_DIGEST; - buffer = null; if (algorithm.equals("MD5withRSA")) { md = MessageDigest.getInstance("MD5"); digestOID = AlgorithmId.MD5_oid; @@ -234,6 +223,9 @@ default: throw new ProviderException("Unknown mechanism: " + mechanism); } + this.buffer = buffer; + this.digestOID = digestOID; + this.md = md; session = token.getOpSession(); } @@ -326,9 +318,52 @@ } } + private void checkRSAKeyLength(int len) throws InvalidKeyException { + RSAPadding padding; + try { + padding = RSAPadding.getInstance + (RSAPadding.PAD_BLOCKTYPE_1, (len + 7) >> 3); + } catch (InvalidAlgorithmParameterException iape) { + throw new InvalidKeyException(iape.getMessage()); + } + int maxDataSize = padding.getMaxDataSize(); + int encodedLength; + if (algorithm.equals("MD5withRSA") || + algorithm.equals("MD2withRSA")) { + encodedLength = 34; + } else if (algorithm.equals("SHA1withRSA")) { + encodedLength = 35; + } else if (algorithm.equals("SHA256withRSA")) { + encodedLength = 51; + } else if (algorithm.equals("SHA384withRSA")) { + encodedLength = 67; + } else if (algorithm.equals("SHA512withRSA")) { + encodedLength = 83; + } else { + throw new ProviderException("Unknown signature algo: " + algorithm); + } + if (encodedLength > maxDataSize) { + throw new InvalidKeyException + ("Key is too short for this signature algorithm"); + } + } + // see JCA spec protected void engineInitVerify(PublicKey publicKey) throws InvalidKeyException { + if (publicKey == null) { + throw new InvalidKeyException("Key must not be null"); + } + // Need to check RSA key length whenever a new key is set + if (keyAlgorithm.equals("RSA") && publicKey != p11Key) { + int keyLen; + if (publicKey instanceof P11Key) { + keyLen = ((P11Key) publicKey).keyLength(); + } else { + keyLen = ((RSAKey) publicKey).getModulus().bitLength(); + } + checkRSAKeyLength(keyLen); + } cancelOperation(); mode = M_VERIFY; p11Key = P11KeyFactory.convertKey(token, publicKey, keyAlgorithm); @@ -338,6 +373,19 @@ // see JCA spec protected void engineInitSign(PrivateKey privateKey) throws InvalidKeyException { + if (privateKey == null) { + throw new InvalidKeyException("Key must not be null"); + } + // Need to check RSA key length whenever a new key is set + if (keyAlgorithm.equals("RSA") && privateKey != p11Key) { + int keyLen; + if (privateKey instanceof P11Key) { + keyLen = ((P11Key) privateKey).keyLength; + } else { + keyLen = ((RSAKey) privateKey).getModulus().bitLength(); + } + checkRSAKeyLength(keyLen); + } cancelOperation(); mode = M_SIGN; p11Key = P11KeyFactory.convertKey(token, privateKey, keyAlgorithm); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/provider/PolicyFile.java --- a/jdk/src/share/classes/sun/security/provider/PolicyFile.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/provider/PolicyFile.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -65,6 +65,9 @@ import javax.sound.sampled.AudioPermission; import javax.net.ssl.SSLPermission; */ +import sun.misc.JavaSecurityProtectionDomainAccess; +import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache; +import sun.misc.SharedSecrets; import sun.security.util.Password; import sun.security.util.PolicyUtil; import sun.security.util.PropertyExpander; @@ -1102,7 +1105,7 @@ /** * Refreshes the policy object by re-reading all the policy files. */ - public void refresh() { + @Override public void refresh() { init(url); } @@ -1119,9 +1122,10 @@ * * @see java.security.ProtectionDomain */ + @Override public boolean implies(ProtectionDomain pd, Permission p) { PolicyInfo pi = policyInfo.get(); - Map pdMap = pi.getPdMapping(); + ProtectionDomainCache pdMap = pi.getPdMapping(); PermissionCollection pc = pdMap.get(pd); @@ -1167,6 +1171,7 @@ * @return the Permissions granted to the provided * ProtectionDomain. */ + @Override public PermissionCollection getPermissions(ProtectionDomain domain) { Permissions perms = new Permissions(); @@ -1202,6 +1207,7 @@ * * @return the set of permissions according to the policy. */ + @Override public PermissionCollection getPermissions(CodeSource codesource) { return getPermissions(new Permissions(), codesource); } @@ -2119,7 +2125,7 @@ return codesource; } - public String toString(){ + @Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append(ResourcesMgr.getString("(")); sb.append(getCodeSource()); @@ -2255,7 +2261,7 @@ * * @return false. */ - public boolean implies(Permission p) { + @Override public boolean implies(Permission p) { return false; } @@ -2272,7 +2278,7 @@ * type (class) name, permission name, actions, and * certificates as this object. */ - public boolean equals(Object obj) { + @Override public boolean equals(Object obj) { if (obj == this) return true; @@ -2320,7 +2326,7 @@ * * @return a hash code value for this object. */ - public int hashCode() { + @Override public int hashCode() { int hash = type.hashCode(); if (name != null) hash ^= name.hashCode(); @@ -2339,7 +2345,7 @@ * * @return the empty string "". */ - public String getActions() { + @Override public String getActions() { return ""; } @@ -2366,7 +2372,7 @@ * * @return information about this SelfPermission. */ - public String toString() { + @Override public String toString() { return "(SelfPermission " + type + " " + name + " " + actions + ")"; } } @@ -2388,7 +2394,7 @@ final Map aliasMapping; // Maps ProtectionDomain to PermissionCollection - private final Map[] pdMapping; + private final ProtectionDomainCache[] pdMapping; private java.util.Random random; PolicyInfo(int numCaches) { @@ -2397,16 +2403,17 @@ Collections.synchronizedList(new ArrayList(2)); aliasMapping = Collections.synchronizedMap(new HashMap(11)); - pdMapping = new Map[numCaches]; + pdMapping = new ProtectionDomainCache[numCaches]; + JavaSecurityProtectionDomainAccess jspda + = SharedSecrets.getJavaSecurityProtectionDomainAccess(); for (int i = 0; i < numCaches; i++) { - pdMapping[i] = Collections.synchronizedMap - (new WeakHashMap()); + pdMapping[i] = jspda.getProtectionDomainCache(); } if (numCaches > 1) { random = new java.util.Random(); } } - Map getPdMapping() { + ProtectionDomainCache getPdMapping() { if (pdMapping.length == 1) { return pdMapping[0]; } else { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/provider/X509Factory.java --- a/jdk/src/share/classes/sun/security/provider/X509Factory.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/provider/X509Factory.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,6 @@ package sun.security.provider; import java.io.*; -import java.util.Collection; import java.util.*; import java.security.cert.*; import sun.security.x509.X509CertImpl; @@ -37,6 +36,7 @@ import sun.security.util.DerValue; import sun.security.util.Cache; import sun.misc.BASE64Decoder; +import sun.security.pkcs.ParsingException; /** * This class defines a certificate factory for X.509 v3 certificates & @@ -62,10 +62,6 @@ public static final String BEGIN_CERT = "-----BEGIN CERTIFICATE-----"; public static final String END_CERT = "-----END CERTIFICATE-----"; - private static final int defaultExpectedLineLength = 80; - - private static final char[] endBoundary = "-----END".toCharArray(); - private static final int ENC_MAX_LENGTH = 4096 * 1024; // 4 MB MAX private static final Cache certCache = Cache.newSoftMemoryCache(750); @@ -92,13 +88,7 @@ throw new CertificateException("Missing input stream"); } try { - if (is.markSupported() == false) { - // consume the entire input stream - byte[] totalBytes; - totalBytes = getTotalBytes(new BufferedInputStream(is)); - is = new ByteArrayInputStream(totalBytes); - } - byte[] encoding = readSequence(is); + byte[] encoding = readOneBlock(is); if (encoding != null) { X509CertImpl cert = (X509CertImpl)getFromCache(certCache, encoding); if (cert != null) { @@ -108,19 +98,7 @@ addToCache(certCache, cert.getEncodedInternal(), cert); return cert; } else { - X509CertImpl cert; - // determine if binary or Base64 encoding. If Base64 encoding, - // the certificate must be bounded at the beginning by - // "-----BEGIN". - if (isBase64(is)) { - // Base64 - byte[] data = base64_to_binary(is); - cert = new X509CertImpl(data); - } else { - // binary - cert = new X509CertImpl(new DerValue(is)); - } - return intern(cert); + throw new IOException("Empty input"); } } catch (IOException ioe) { throw (CertificateException)new CertificateException @@ -129,73 +107,21 @@ } /** - * Read a DER SEQUENCE from an InputStream and return the encoding. - * If data does not represent a SEQUENCE, it uses indefinite length - * encoding, or is longer than ENC_MAX_LENGTH, the stream is reset - * and this method returns null. - */ - private static byte[] readSequence(InputStream in) throws IOException { - in.mark(ENC_MAX_LENGTH); - byte[] b = new byte[4]; - int i = readFully(in, b, 0, b.length); - if ((i != b.length) || (b[0] != 0x30)) { // first byte must be SEQUENCE - in.reset(); - return null; - } - i = b[1] & 0xff; - int totalLength; - if (i < 0x80) { - int valueLength = i; - totalLength = valueLength + 2; - } else if (i == 0x81) { - int valueLength = b[2] & 0xff; - totalLength = valueLength + 3; - } else if (i == 0x82) { - int valueLength = ((b[2] & 0xff) << 8) | (b[3] & 0xff); - totalLength = valueLength + 4; - } else { // ignore longer length forms - in.reset(); - return null; - } - if (totalLength > ENC_MAX_LENGTH) { - in.reset(); - return null; - } - byte[] encoding = new byte[totalLength]; - if( totalLength < b.length ) { - in.reset(); - i = readFully(in, encoding, 0, totalLength); - if( i != totalLength ) { - in.reset(); - return null; - } - } else { - System.arraycopy(b, 0, encoding, 0, b.length); - int n = totalLength - b.length; - i = readFully(in, encoding, b.length, n); - if (i != n) { - in.reset(); - return null; - } - } - return encoding; - } - - /** * Read from the stream until length bytes have been read or EOF has * been reached. Return the number of bytes actually read. */ - private static int readFully(InputStream in, byte[] buffer, int offset, + private static int readFully(InputStream in, ByteArrayOutputStream bout, int length) throws IOException { int read = 0; + byte[] buffer = new byte[2048]; while (length > 0) { - int n = in.read(buffer, offset, length); + int n = in.read(buffer, 0, length<2048?length:2048); if (n <= 0) { break; } + bout.write(buffer, 0, n); read += n; length -= n; - offset += n; } return read; } @@ -309,21 +235,11 @@ throw new CertificateException("Missing input stream"); } try { - if (inStream.markSupported() == false) { - // consume the entire input stream - byte[] totalBytes; - totalBytes = getTotalBytes(new BufferedInputStream(inStream)); - inStream = new ByteArrayInputStream(totalBytes); - } - // determine if binary or Base64 encoding. If Base64 encoding, - // each certificate must be bounded at the beginning by - // "-----BEGIN". - if (isBase64(inStream)) { - // Base64 - byte[] data = base64_to_binary(inStream); - return new X509CertPath(new ByteArrayInputStream(data)); + byte[] encoding = readOneBlock(inStream); + if (encoding != null) { + return new X509CertPath(new ByteArrayInputStream(encoding)); } else { - return new X509CertPath(inStream); + throw new IOException("Empty input"); } } catch (IOException ioe) { throw new CertificateException(ioe.getMessage()); @@ -350,21 +266,11 @@ throw new CertificateException("Missing input stream"); } try { - if (inStream.markSupported() == false) { - // consume the entire input stream - byte[] totalBytes; - totalBytes = getTotalBytes(new BufferedInputStream(inStream)); - inStream = new ByteArrayInputStream(totalBytes); - } - // determine if binary or Base64 encoding. If Base64 encoding, - // each certificate must be bounded at the beginning by - // "-----BEGIN". - if (isBase64(inStream)) { - // Base64 - byte[] data = base64_to_binary(inStream); + byte[] data = readOneBlock(inStream); + if (data != null) { return new X509CertPath(new ByteArrayInputStream(data), encoding); } else { - return(new X509CertPath(inStream, encoding)); + throw new IOException("Empty input"); } } catch (IOException ioe) { throw new CertificateException(ioe.getMessage()); @@ -426,11 +332,6 @@ throw new CertificateException("Missing input stream"); } try { - if (is.markSupported() == false) { - // consume the entire input stream - is = new ByteArrayInputStream - (getTotalBytes(new BufferedInputStream(is))); - } return parseX509orPKCS7Cert(is); } catch (IOException ioe) { throw new CertificateException(ioe); @@ -458,13 +359,7 @@ throw new CRLException("Missing input stream"); } try { - if (is.markSupported() == false) { - // consume the entire input stream - byte[] totalBytes; - totalBytes = getTotalBytes(new BufferedInputStream(is)); - is = new ByteArrayInputStream(totalBytes); - } - byte[] encoding = readSequence(is); + byte[] encoding = readOneBlock(is); if (encoding != null) { X509CRLImpl crl = (X509CRLImpl)getFromCache(crlCache, encoding); if (crl != null) { @@ -474,19 +369,7 @@ addToCache(crlCache, crl.getEncodedInternal(), crl); return crl; } else { - X509CRLImpl crl; - // determine if binary or Base64 encoding. If Base64 encoding, - // the CRL must be bounded at the beginning by - // "-----BEGIN". - if (isBase64(is)) { - // Base64 - byte[] data = base64_to_binary(is); - crl = new X509CRLImpl(data); - } else { - // binary - crl = new X509CRLImpl(new DerValue(is)); - } - return intern(crl); + throw new IOException("Empty input"); } } catch (IOException ioe) { throw new CRLException(ioe.getMessage()); @@ -504,19 +387,13 @@ * * @exception CRLException on parsing errors. */ - public Collection engineGenerateCRLs(InputStream -is) - throws CRLException + public Collection engineGenerateCRLs( + InputStream is) throws CRLException { if (is == null) { throw new CRLException("Missing input stream"); } try { - if (is.markSupported() == false) { - // consume the entire input stream - is = new ByteArrayInputStream - (getTotalBytes(new BufferedInputStream(is))); - } return parseX509orPKCS7CRL(is); } catch (IOException ioe) { throw new CRLException(ioe.getMessage()); @@ -533,42 +410,25 @@ throws CertificateException, IOException { Collection coll = new ArrayList(); - boolean first = true; - while (is.available() != 0) { - // determine if binary or Base64 encoding. If Base64 encoding, - // each certificate must be bounded at the beginning by - // "-----BEGIN". - InputStream is2 = is; - if (isBase64(is2)) { - // Base64 - is2 = new ByteArrayInputStream(base64_to_binary(is2)); + byte[] data = readOneBlock(is); + if (data == null) { + return new ArrayList(0); + } + try { + PKCS7 pkcs7 = new PKCS7(data); + X509Certificate[] certs = pkcs7.getCertificates(); + // certs are optional in PKCS #7 + if (certs != null) { + return Arrays.asList(certs); + } else { + // no crls provided + return new ArrayList(0); } - if (first) - is2.mark(is2.available()); - try { - // treat as X.509 cert - coll.add(intern(new X509CertImpl(new DerValue(is2)))); - } catch (CertificateException e) { - Throwable cause = e.getCause(); - // only treat as PKCS#7 if this is the first cert parsed - // and the root cause of the decoding failure is an IOException - if (first && cause != null && (cause instanceof IOException)) { - // treat as PKCS#7 - is2.reset(); - PKCS7 pkcs7 = new PKCS7(is2); - X509Certificate[] certs = pkcs7.getCertificates(); - // certs are optional in PKCS #7 - if (certs != null) { - return Arrays.asList(certs); - } else { - // no certs provided - return new ArrayList(0); - } - } else { - throw e; - } + } catch (ParsingException e) { + while (data != null) { + coll.add(new X509CertImpl(data)); + data = readOneBlock(is); } - first = false; } return coll; } @@ -583,162 +443,215 @@ throws CRLException, IOException { Collection coll = new ArrayList(); - boolean first = true; - while (is.available() != 0) { - // determine if binary or Base64 encoding. If Base64 encoding, - // the CRL must be bounded at the beginning by - // "-----BEGIN". - InputStream is2 = is; - if (isBase64(is)) { - // Base64 - is2 = new ByteArrayInputStream(base64_to_binary(is2)); + byte[] data = readOneBlock(is); + if (data == null) { + return new ArrayList(0); + } + try { + PKCS7 pkcs7 = new PKCS7(data); + X509CRL[] crls = pkcs7.getCRLs(); + // CRLs are optional in PKCS #7 + if (crls != null) { + return Arrays.asList(crls); + } else { + // no crls provided + return new ArrayList(0); } - if (first) - is2.mark(is2.available()); - try { - // treat as X.509 CRL - coll.add(new X509CRLImpl(is2)); - } catch (CRLException e) { - // only treat as PKCS#7 if this is the first CRL parsed - if (first) { - is2.reset(); - PKCS7 pkcs7 = new PKCS7(is2); - X509CRL[] crls = pkcs7.getCRLs(); - // CRLs are optional in PKCS #7 - if (crls != null) { - return Arrays.asList(crls); - } else { - // no crls provided - return new ArrayList(0); - } - } + } catch (ParsingException e) { + while (data != null) { + coll.add(new X509CRLImpl(data)); + data = readOneBlock(is); } - first = false; } return coll; } - /* - * Converts a Base64-encoded X.509 certificate or X.509 CRL or PKCS#7 data - * to binary encoding. - * In all cases, the data must be bounded at the beginning by - * "-----BEGIN", and must be bounded at the end by "-----END". + /** + * Returns an ASN.1 SEQUENCE from a stream, which might be a BER-encoded + * binary block or a PEM-style BASE64-encoded ASCII data. In the latter + * case, it's de-BASE64'ed before return. + * + * After the reading, the input stream pointer is after the BER block, or + * after the newline character after the -----END SOMETHING----- line. + * + * @param is the InputStream + * @returns byte block or null if end of stream + * @throws IOException If any parsing error */ - private byte[] base64_to_binary(InputStream is) - throws IOException - { - long len = 0; // total length of base64 encoding, including boundaries - - is.mark(is.available()); - - BufferedInputStream bufin = new BufferedInputStream(is); - BufferedReader br = - new BufferedReader(new InputStreamReader(bufin, "ASCII")); + private static byte[] readOneBlock(InputStream is) throws IOException { - // First read all of the data that is found between - // the "-----BEGIN" and "-----END" boundaries into a buffer. - String temp; - while (true) { - temp=readLine(br); - if (temp == null) { - throw new IOException("Unsupported encoding"); + // The first character of a BLOCK. + int c = is.read(); + if (c == -1) { + return null; + } + if (c == DerValue.tag_Sequence) { + ByteArrayOutputStream bout = new ByteArrayOutputStream(2048); + bout.write(c); + readBERInternal(is, bout, c); + return bout.toByteArray(); + } else { + // Read BASE64 encoded data, might skip info at the beginning + char[] data = new char[2048]; + int pos = 0; + + // Step 1: Read until header is found + int hyphen = (c=='-') ? 1: 0; // count of consequent hyphens + int last = (c=='-') ? -1: c; // the char before hyphen + while (true) { + int next = is.read(); + if (next == -1) { + // We accept useless data after the last block, + // say, empty lines. + return null; + } + if (next == '-') { + hyphen++; + } else { + hyphen = 0; + last = next; + } + if (hyphen == 5 && (last==-1 || last=='\r' || last=='\n')) { + break; + } } - len += temp.length(); - if (temp.startsWith("-----BEGIN")) { - break; - } - } - StringBuffer strBuf = new StringBuffer(); - while ((temp=readLine(br))!=null && !temp.startsWith("-----END")) { - strBuf.append(temp); - } - if (temp == null) { - throw new IOException("Unsupported encoding"); - } else { - len += temp.length(); - } - // consume only as much as was needed - len += strBuf.length(); - is.reset(); - is.skip(len); - - // Now, that data is supposed to be a single X.509 certificate or - // X.509 CRL or PKCS#7 formatted data... Base64 encoded. - // Decode into binary and return the result. - BASE64Decoder decoder = new BASE64Decoder(); - return decoder.decodeBuffer(strBuf.toString()); - } + // Step 2: Read the rest of header, determine the line end + int end; + while (true) { + int next = is.read(); + if (next == -1) { + throw new IOException("Incomplete data"); + } + if (next == '\n') { + end = '\n'; + break; + } + if (next == '\r') { + next = is.read(); + if (next == -1) { + throw new IOException("Incomplete data"); + } + if (next == '\n') { + end = '\n'; + } else { + end = '\r'; + data[pos++] = (char)next; + } + break; + } + } - /* - * Reads the entire input stream into a byte array. - */ - private byte[] getTotalBytes(InputStream is) throws IOException { - byte[] buffer = new byte[8192]; - ByteArrayOutputStream baos = new ByteArrayOutputStream(2048); - int n; - baos.reset(); - while ((n = is.read(buffer, 0, buffer.length)) != -1) { - baos.write(buffer, 0, n); - } - return baos.toByteArray(); - } + // Step 3: Read the data + while (true) { + int next = is.read(); + if (next == -1) { + throw new IOException("Incomplete data"); + } + if (next != '-') { + data[pos++] = (char)next; + if (pos >= data.length) { + data = Arrays.copyOf(data, data.length+1024); + } + } else { + break; + } + } - /* - * Determines if input is binary or Base64 encoded. - */ - private boolean isBase64(InputStream is) throws IOException { - if (is.available() >= 1) { - is.mark(1); - int c1 = is.read(); - is.reset(); - if (c1 != DerValue.tag_Sequence) { - return true; - } else { - return false; + // Step 4: Consume the footer + while (true) { + int next = is.read(); + // Add next == '\n' for maximum safety, in case endline + // is not consistent. + if (next == -1 || next == end || next == '\n') { + break; + } } - } else { - return false; + + BASE64Decoder decoder = new BASE64Decoder(); + return decoder.decodeBuffer(new String(data, 0, pos)); } } - /* - * Read a line of text. A line is considered to be terminated by any one - * of a line feed ('\n'), a carriage return ('\r'), a carriage return - * followed immediately by a linefeed, or an end-of-certificate marker. + /** + * Read one BER data block. This method is aware of indefinite-length BER + * encoding and will read all of the sub-sections in a recursive way * - * @return A String containing the contents of the line, including - * any line-termination characters, or null if the end of the - * stream has been reached. + * @param is Read from this InputStream + * @param bout Write into this OutputStream + * @param tag Tag already read (-1 mean not read) + * @returns The current tag, used to check EOC in indefinite-length BER + * @throws IOException Any parsing error */ - private String readLine(BufferedReader br) throws IOException { - int c; - int i = 0; - boolean isMatch = true; - boolean matched = false; - StringBuffer sb = new StringBuffer(defaultExpectedLineLength); - do { - c = br.read(); - if (isMatch && (i < endBoundary.length)) { - isMatch = ((char)c != endBoundary[i++]) ? false : true; + private static int readBERInternal(InputStream is, + ByteArrayOutputStream bout, int tag) throws IOException { + + if (tag == -1) { // Not read before the call, read now + tag = is.read(); + if (tag == -1) { + throw new IOException("BER/DER tag info absent"); + } + if ((tag & 0x1f) == 0x1f) { + throw new IOException("Multi octets tag not supported"); + } + bout.write(tag); + } + + int n = is.read(); + if (n == -1) { + throw new IOException("BER/DER length info ansent"); + } + bout.write(n); + + int length; + + if (n == 0x80) { // Indefinite-length encoding + if ((tag & 0x20) != 0x20) { + throw new IOException( + "Non constructed encoding must have definite length"); + } + while (true) { + int subTag = readBERInternal(is, bout, -1); + if (subTag == 0) { // EOC, end of indefinite-length section + break; + } } - if (!matched) - matched = (isMatch && (i == endBoundary.length)); - sb.append((char)c); - } while ((c != -1) && (c != '\n') && (c != '\r')); - - if (!matched && c == -1) { - return null; - } - if (c == '\r') { - br.mark(1); - int c2 = br.read(); - if (c2 == '\n') { - sb.append((char)c); - } else { - br.reset(); + } else { + if (n < 0x80) { + length = n; + } else if (n == 0x81) { + length = is.read(); + if (length == -1) { + throw new IOException("Incomplete BER/DER length info"); + } + bout.write(length); + } else if (n == 0x82) { + int highByte = is.read(); + int lowByte = is.read(); + if (lowByte == -1) { + throw new IOException("Incomplete BER/DER length info"); + } + bout.write(highByte); + bout.write(lowByte); + length = (highByte << 8) | lowByte; + } else if (n == 0x83) { + int highByte = is.read(); + int midByte = is.read(); + int lowByte = is.read(); + if (lowByte == -1) { + throw new IOException("Incomplete BER/DER length info"); + } + bout.write(highByte); + bout.write(midByte); + bout.write(lowByte); + length = (highByte << 16) | (midByte << 8) | lowByte; + } else { // ignore longer length forms + throw new IOException("Invalid BER/DER data (too huge?)"); + } + if (readFully(is, bout, length) != length) { + throw new IOException("Incomplete BER/DER data"); } } - return sb.toString(); + return tag; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java --- a/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java Wed Jul 05 17:09:51 2017 +0200 @@ -93,13 +93,17 @@ * Constructors */ ClientHandshaker(SSLSocketImpl socket, SSLContextImpl context, - ProtocolList enabledProtocols) { + ProtocolList enabledProtocols, + ProtocolVersion activeProtocolVersion) { super(socket, context, enabledProtocols, true, true); + this.activeProtocolVersion = activeProtocolVersion; } ClientHandshaker(SSLEngineImpl engine, SSLContextImpl context, - ProtocolList enabledProtocols) { + ProtocolList enabledProtocols, + ProtocolVersion activeProtocolVersion) { super(engine, context, enabledProtocols, true, true); + this.activeProtocolVersion = activeProtocolVersion; } /* @@ -275,7 +279,42 @@ // sent the "client hello" but the server's not seen it. // if (state < HandshakeMessage.ht_client_hello) { - kickstart(); + if (!renegotiable) { // renegotiation is not allowed. + if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) { + // response with a no_negotiation warning, + warningSE(Alerts.alert_no_negotiation); + + // invalidate the handshake so that the caller can + // dispose this object. + invalidated = true; + + // If there is still unread block in the handshake + // input stream, it would be truncated with the disposal + // and the next handshake message will become incomplete. + // + // However, according to SSL/TLS specifications, no more + // handshake message could immediately follow ClientHello + // or HelloRequest. But in case of any improper messages, + // we'd better check to ensure there is no remaining bytes + // in the handshake input stream. + if (input.available() > 0) { + fatalSE(Alerts.alert_unexpected_message, + "HelloRequest followed by an unexpected " + + "handshake message"); + } + + } else { + // For SSLv3, send the handshake_failure fatal error. + // Note that SSLv3 does not define a no_negotiation alert + // like TLSv1. However we cannot ignore the message + // simply, otherwise the other side was waiting for a + // response that would never come. + fatalSE(Alerts.alert_handshake_failure, + "renegotiation is not allowed"); + } + } else { + kickstart(); + } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/ssl/Handshaker.java --- a/jdk/src/share/classes/sun/security/ssl/Handshaker.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -60,9 +60,12 @@ */ abstract class Handshaker { - // current protocol version + // protocol version being established using this Handshaker ProtocolVersion protocolVersion; + // the currently active protocol version during a renegotiation + ProtocolVersion activeProtocolVersion; + // list of enabled protocols ProtocolList enabledProtocols; @@ -124,6 +127,13 @@ /* Class and subclass dynamic debugging support */ static final Debug debug = Debug.getInstance("ssl"); + // By default, disable the unsafe legacy session renegotiation + static final boolean renegotiable = Debug.getBooleanProperty( + "sun.security.ssl.allowUnsafeRenegotiation", false); + + // need to dispose the object when it is invalidated + boolean invalidated; + Handshaker(SSLSocketImpl c, SSLContextImpl context, ProtocolList enabledProtocols, boolean needCertVerify, boolean isClient) { @@ -144,6 +154,7 @@ this.sslContext = context; this.isClient = isClient; enableNewSession = true; + invalidated = false; setCipherSuite(CipherSuite.C_NULL); @@ -489,7 +500,9 @@ */ void processLoop() throws IOException { - while (input.available() > 0) { + // need to read off 4 bytes at least to get the handshake + // message type and length. + while (input.available() >= 4) { byte messageType; int messageLen; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java --- a/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -433,11 +433,12 @@ connectionState = cs_RENEGOTIATE; } if (roleIsServer) { - handshaker = new ServerHandshaker - (this, sslContext, enabledProtocols, doClientAuth); + handshaker = new ServerHandshaker(this, sslContext, + enabledProtocols, doClientAuth, + connectionState == cs_RENEGOTIATE, protocolVersion); } else { - handshaker = new ClientHandshaker - (this, sslContext, enabledProtocols); + handshaker = new ClientHandshaker(this, sslContext, + enabledProtocols, protocolVersion); } handshaker.enabledCipherSuites = enabledCipherSuites; handshaker.setEnableSessionCreation(enableSessionCreation); @@ -639,6 +640,10 @@ break; case cs_DATA: + if (!Handshaker.renegotiable) { + throw new SSLHandshakeException("renegotiation is not allowed"); + } + // initialize the handshaker, move to cs_RENEGOTIATE initHandshaker(); break; @@ -966,7 +971,13 @@ handshaker.process_record(inputRecord, expectingFinished); expectingFinished = false; - if (handshaker.isDone()) { + if (handshaker.invalidated) { + handshaker = null; + // if state is cs_RENEGOTIATE, revert it to cs_DATA + if (connectionState == cs_RENEGOTIATE) { + connectionState = cs_DATA; + } + } else if (handshaker.isDone()) { sess = handshaker.getSession(); if (!writer.hasOutboundData()) { hsStatus = HandshakeStatus.FINISHED; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java --- a/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java Wed Jul 05 17:09:51 2017 +0200 @@ -907,7 +907,13 @@ handshaker.process_record(r, expectingFinished); expectingFinished = false; - if (handshaker.isDone()) { + if (handshaker.invalidated) { + handshaker = null; + // if state is cs_RENEGOTIATE, revert it to cs_DATA + if (connectionState == cs_RENEGOTIATE) { + connectionState = cs_DATA; + } + } else if (handshaker.isDone()) { sess = handshaker.getSession(); handshaker = null; connectionState = cs_DATA; @@ -925,6 +931,7 @@ t.start(); } } + if (needAppData || connectionState != cs_DATA) { continue; } else { @@ -1083,11 +1090,12 @@ connectionState = cs_RENEGOTIATE; } if (roleIsServer) { - handshaker = new ServerHandshaker - (this, sslContext, enabledProtocols, doClientAuth); + handshaker = new ServerHandshaker(this, sslContext, + enabledProtocols, doClientAuth, + connectionState == cs_RENEGOTIATE, protocolVersion); } else { - handshaker = new ClientHandshaker - (this, sslContext, enabledProtocols); + handshaker = new ClientHandshaker(this, sslContext, + enabledProtocols, protocolVersion); } handshaker.enabledCipherSuites = enabledCipherSuites; handshaker.setEnableSessionCreation(enableSessionCreation); @@ -1192,6 +1200,10 @@ break; case cs_DATA: + if (!Handshaker.renegotiable) { + throw new SSLHandshakeException("renegotiation is not allowed"); + } + // initialize the handshaker, move to cs_RENEGOTIATE initHandshaker(); break; @@ -1840,6 +1852,11 @@ return host; } + // ONLY used by HttpsClient to setup the URI specified hostname + synchronized public void setHost(String host) { + this.host = host; + } + /** * Gets an input stream to read from the peer on the other side. * Data read from this stream was always integrity protected in diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java --- a/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java Wed Jul 05 17:09:51 2017 +0200 @@ -69,6 +69,9 @@ // flag to check for clientCertificateVerify message private boolean needClientVerify = false; + // indicate a renegotiation handshaking + private boolean isRenegotiation = false; + /* * For exportable ciphersuites using non-exportable key sizes, we use * ephemeral RSA keys. We could also do anonymous RSA in the same way @@ -96,20 +99,28 @@ * Constructor ... use the keys found in the auth context. */ ServerHandshaker(SSLSocketImpl socket, SSLContextImpl context, - ProtocolList enabledProtocols, byte clientAuth) { + ProtocolList enabledProtocols, byte clientAuth, + boolean isRenegotiation, ProtocolVersion activeProtocolVersion) { + super(socket, context, enabledProtocols, (clientAuth != SSLEngineImpl.clauth_none), false); doClientAuth = clientAuth; + this.isRenegotiation = isRenegotiation; + this.activeProtocolVersion = activeProtocolVersion; } /* * Constructor ... use the keys found in the auth context. */ ServerHandshaker(SSLEngineImpl engine, SSLContextImpl context, - ProtocolList enabledProtocols, byte clientAuth) { + ProtocolList enabledProtocols, byte clientAuth, + boolean isRenegotiation, ProtocolVersion activeProtocolVersion) { + super(engine, context, enabledProtocols, (clientAuth != SSLEngineImpl.clauth_none), false); doClientAuth = clientAuth; + this.isRenegotiation = isRenegotiation; + this.activeProtocolVersion = activeProtocolVersion; } /* @@ -257,6 +268,45 @@ if (debug != null && Debug.isOn("handshake")) { mesg.print(System.out); } + + // if it is a renegotiation request and renegotiation is not allowed + if (isRenegotiation && !renegotiable) { + if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) { + // response with a no_negotiation warning, + warningSE(Alerts.alert_no_negotiation); + + // invalidate the handshake so that the caller can + // dispose this object. + invalidated = true; + + // If there is still unread block in the handshake + // input stream, it would be truncated with the disposal + // and the next handshake message will become incomplete. + // + // However, according to SSL/TLS specifications, no more + // handshake message could immediately follow ClientHello + // or HelloRequest. But in case of any improper messages, + // we'd better check to ensure there is no remaining bytes + // in the handshake input stream. + if (input.available() > 0) { + fatalSE(Alerts.alert_unexpected_message, + "ClientHello followed by an unexpected " + + "handshake message"); + + } + + return; + } else { + // For SSLv3, send the handshake_failure fatal error. + // Note that SSLv3 does not define a no_negotiation alert + // like TLSv1. However we cannot ignore the message + // simply, otherwise the other side was waiting for a + // response that would never come. + fatalSE(Alerts.alert_handshake_failure, + "renegotiation is not allowed"); + } + } + /* * Always make sure this entire record has been digested before we * start emitting output, to ensure correct digesting order. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/security/tools/KeyTool.java --- a/jdk/src/share/classes/sun/security/tools/KeyTool.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/security/tools/KeyTool.java Wed Jul 05 17:09:51 2017 +0200 @@ -977,46 +977,35 @@ if (filename != null) { inStream = new FileInputStream(filename); } - // Read the full stream before feeding to X509Factory, - // otherwise, keytool -gencert | keytool -importcert - // might not work properly, since -gencert is slow - // and there's no data in the pipe at the beginning. - ByteArrayOutputStream bout = new ByteArrayOutputStream(); + String importAlias = (alias!=null)?alias:keyAlias; try { - byte[] b = new byte[4096]; - while (true) { - int len = inStream.read(b); - if (len < 0) break; - bout.write(b, 0, len); + if (keyStore.entryInstanceOf( + importAlias, KeyStore.PrivateKeyEntry.class)) { + kssave = installReply(importAlias, inStream); + if (kssave) { + System.err.println(rb.getString + ("Certificate reply was installed in keystore")); + } else { + System.err.println(rb.getString + ("Certificate reply was not installed in keystore")); + } + } else if (!keyStore.containsAlias(importAlias) || + keyStore.entryInstanceOf(importAlias, + KeyStore.TrustedCertificateEntry.class)) { + kssave = addTrustedCert(importAlias, inStream); + if (kssave) { + System.err.println(rb.getString + ("Certificate was added to keystore")); + } else { + System.err.println(rb.getString + ("Certificate was not added to keystore")); + } } } finally { if (inStream != System.in) { inStream.close(); } } - inStream = new ByteArrayInputStream(bout.toByteArray()); - String importAlias = (alias!=null)?alias:keyAlias; - if (keyStore.entryInstanceOf(importAlias, KeyStore.PrivateKeyEntry.class)) { - kssave = installReply(importAlias, inStream); - if (kssave) { - System.err.println(rb.getString - ("Certificate reply was installed in keystore")); - } else { - System.err.println(rb.getString - ("Certificate reply was not installed in keystore")); - } - } else if (!keyStore.containsAlias(importAlias) || - keyStore.entryInstanceOf(importAlias, - KeyStore.TrustedCertificateEntry.class)) { - kssave = addTrustedCert(importAlias, inStream); - if (kssave) { - System.err.println(rb.getString - ("Certificate was added to keystore")); - } else { - System.err.println(rb.getString - ("Certificate was not added to keystore")); - } - } } else if (command == IMPORTKEYSTORE) { doImportKeyStore(); kssave = true; @@ -2149,18 +2138,7 @@ inStream = new FileInputStream(filename); } try { - // Read the full stream before feeding to X509Factory, - // otherwise, keytool -gencert | keytool -printcert - // might not work properly, since -gencert is slow - // and there's no data in the pipe at the beginning. - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - byte[] b = new byte[4096]; - while (true) { - int len = inStream.read(b); - if (len < 0) break; - bout.write(b, 0, len); - } - printCertFromStream(new ByteArrayInputStream(bout.toByteArray()), out); + printCertFromStream(inStream, out); } finally { if (inStream != System.in) { inStream.close(); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/classes/sun/util/resources/TimeZoneNames.java --- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Wed Jul 05 17:09:51 2017 +0200 @@ -446,12 +446,13 @@ {"America/Winnipeg", CST}, {"America/Yakutat", AKST}, {"America/Yellowknife", MST}, - {"Antarctica/Casey", new String[] {"Casey Time", "CAST", - "Casey Summer Time", "CAST"}}, + {"Antarctica/Casey", WST_AUS}, {"Antarctica/Davis", new String[] {"Davis Time", "DAVT", "Davis Summer Time", "DAVST"}}, {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Time", "DDUT", "Dumont-d'Urville Summer Time", "DDUST"}}, + {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST", + "Macquarie Island Summer Time", "MIST"}}, {"Antarctica/Mawson", new String[] {"Mawson Time", "MAWT", "Mawson Summer Time", "MAWST"}}, {"Antarctica/McMurdo", NZST}, diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp --- a/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -40,7 +40,7 @@ void bytes::malloc(size_t len_) { len = len_; - ptr = NEW(byte, len_+1); // add trailing zero byte always + ptr = NEW(byte, add_size(len_, 1)); // add trailing zero byte always if (ptr == null) { // set ptr to some victim memory, to ease escape set(dummy, sizeof(dummy)-1); @@ -56,7 +56,7 @@ return; } byte* oldptr = ptr; - ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, len_+1); + ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, add_size(len_, 1)); if (ptr != null) { mtrace('r', oldptr, 0); mtrace('m', ptr, len_+1); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp --- a/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -507,7 +507,7 @@ maybe_inline void unpacker::saveTo(bytes& b, byte* ptr, size_t len) { - b.ptr = U_NEW(byte, len+1); + b.ptr = U_NEW(byte, add_size(len,1)); if (aborting()) { b.len = 0; return; @@ -1154,7 +1154,7 @@ *fillp = 0; // bigbuf must contain a well-formed Utf8 string int length = (int)(fillp - bigbuf.ptr); bytes& value = cpMap[i].value.b; - value.set(U_NEW(byte, length+1), length); + value.set(U_NEW(byte, add_size(length,1)), length); value.copyFrom(bigbuf.ptr, length); CHECK; // Index all Utf8 strings @@ -1626,7 +1626,7 @@ return no_bands; } else { int nb = bs_limit - bs_base; - band** res = U_NEW(band*, nb+1); + band** res = U_NEW(band*, add_size(nb, 1)); CHECK_(no_bands); for (int i = 0; i < nb; i++) { band* b = (band*) band_stack.get(bs_base + i); @@ -1735,7 +1735,7 @@ } // save away the case labels int ntags = band_stack.length() - case_base; - int* tags = U_NEW(int, 1+ntags); + int* tags = U_NEW(int, add_size(ntags, 1)); CHECK_(lp); k_case.le_casetags = tags; *tags++ = ntags; @@ -3139,8 +3139,8 @@ int* field_counts = T_NEW(int, nclasses); int* method_counts = T_NEW(int, nclasses); cpindex* all_indexes = U_NEW(cpindex, nclasses*2); - entry** field_ix = U_NEW(entry*, nfields+nclasses); - entry** method_ix = U_NEW(entry*, nmethods+nclasses); + entry** field_ix = U_NEW(entry*, add_size(nfields, nclasses)); + entry** method_ix = U_NEW(entry*, add_size(nmethods, nclasses)); for (j = 0; j < nfields; j++) { entry& f = fields[j]; @@ -4132,7 +4132,7 @@ } const char* suffix = ".java"; int len = (int)(prefix.len + strlen(suffix)); - bytes name; name.set(T_NEW(byte, len + 1), len); + bytes name; name.set(T_NEW(byte, add_size(len, 1)), len); name.strcat(prefix).strcat(suffix); ref = cp.ensureUtf8(name); } @@ -4647,7 +4647,7 @@ bytes& prefix = cur_class->ref(0)->value.b; const char* suffix = ".class"; int len = (int)(prefix.len + strlen(suffix)); - bytes name; name.set(T_NEW(byte, len + 1), len); + bytes name; name.set(T_NEW(byte, add_size(len, 1)), len); cur_file.name = name.strcat(prefix).strcat(suffix).strval(); } } else { @@ -4714,6 +4714,7 @@ input.ensureSize(fleft); } rplimit = rp = input.base(); + CHECK; input.setLimit(rp + fleft); if (!ensure_input(fleft)) abort("EOF reading resource file"); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/lang/System.c --- a/jdk/src/share/native/java/lang/System.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/lang/System.c Wed Jul 05 17:09:51 2017 +0200 @@ -67,10 +67,13 @@ (*env)->DeleteLocalRef(env, r); \ } else ((void) 0) -#define PUTPROP_ForPlatformCString(props, key, val) \ +/* "key" is a char type string with only ASCII character in it. + "val" is a nchar (typedefed in java_props.h) type string */ + +#define PUTPROP_ForPlatformNString(props, key, val) \ if (1) { \ - jstring jkey = JNU_NewStringPlatform(env, key); \ - jstring jval = JNU_NewStringPlatform(env, val); \ + jstring jkey = (*env)->NewStringUTF(env, key); \ + jstring jval = GetStringPlatform(env, val); \ jobject r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \ if ((*env)->ExceptionOccurred(env)) return NULL; \ (*env)->DeleteLocalRef(env, jkey); \ @@ -150,7 +153,7 @@ (sprops->cpu_isalist ? sprops->cpu_isalist : "")); PUTPROP(props, "sun.cpu.endian", sprops->cpu_endian); - /* !!! DO NOT call PUTPROP_ForPlatformCString before this line !!! + /* !!! DO NOT call PUTPROP_ForPlatformNString before this line !!! * !!! I18n properties have not been set up yet !!! */ @@ -195,18 +198,18 @@ */ PUTPROP(props, "java.awt.graphicsenv", sprops->graphics_env); if (sprops->font_dir != NULL) { - PUTPROP_ForPlatformCString(props, + PUTPROP_ForPlatformNString(props, "sun.java2d.fontpath", sprops->font_dir); } - PUTPROP_ForPlatformCString(props, "java.io.tmpdir", sprops->tmp_dir); + PUTPROP_ForPlatformNString(props, "java.io.tmpdir", sprops->tmp_dir); - PUTPROP_ForPlatformCString(props, "user.name", sprops->user_name); - PUTPROP_ForPlatformCString(props, "user.home", sprops->user_home); + PUTPROP_ForPlatformNString(props, "user.name", sprops->user_name); + PUTPROP_ForPlatformNString(props, "user.home", sprops->user_home); PUTPROP(props, "user.timezone", sprops->timezone); - PUTPROP_ForPlatformCString(props, "user.dir", sprops->user_dir); + PUTPROP_ForPlatformNString(props, "user.dir", sprops->user_dir); /* This is a sun. property as it is currently only set for Gnome and * Windows desktops. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/lang/java_props.h --- a/jdk/src/share/native/java/lang/java_props.h Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/lang/java_props.h Wed Jul 05 17:09:51 2017 +0200 @@ -28,21 +28,29 @@ #include +/* The preferred native type for storing text on the current OS */ +#ifdef WIN32 +#include +typedef WCHAR nchar; +#else +typedef char nchar; +#endif + typedef struct { char *os_name; char *os_version; char *os_arch; - char *tmp_dir; - char *font_dir; - char *user_dir; + nchar *tmp_dir; + nchar *font_dir; + nchar *user_dir; char *file_separator; char *path_separator; char *line_separator; - char *user_name; - char *user_home; + nchar *user_name; + nchar *user_home; char *language; char *country; @@ -71,5 +79,6 @@ } java_props_t; java_props_t *GetJavaProperties(JNIEnv *env); +jstring GetStringPlatform(JNIEnv *env, nchar* str); #endif /* _JAVA_PROPS_H */ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/util/zip/Deflater.c --- a/jdk/src/share/native/java/util/zip/Deflater.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/util/zip/Deflater.c Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,6 @@ #define DEF_MEM_LEVEL 8 -static jfieldID strmID; static jfieldID levelID; static jfieldID strategyID; static jfieldID setParamsID; @@ -49,7 +48,6 @@ JNIEXPORT void JNICALL Java_java_util_zip_Deflater_initIDs(JNIEnv *env, jclass cls) { - strmID = (*env)->GetFieldID(env, cls, "strm", "J"); levelID = (*env)->GetFieldID(env, cls, "level", "I"); strategyID = (*env)->GetFieldID(env, cls, "strategy", "I"); setParamsID = (*env)->GetFieldID(env, cls, "setParams", "Z"); @@ -94,7 +92,7 @@ } JNIEXPORT void JNICALL -Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong strm, +Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong addr, jarray b, jint off, jint len) { Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0); @@ -102,7 +100,7 @@ if (buf == 0) {/* out of memory */ return; } - res = deflateSetDictionary((z_stream *)jlong_to_ptr(strm), buf + off, len); + res = deflateSetDictionary((z_stream *)jlong_to_ptr(addr), buf + off, len); (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0); switch (res) { case Z_OK: @@ -111,151 +109,144 @@ JNU_ThrowIllegalArgumentException(env, 0); break; default: - JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg); + JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg); break; } } JNIEXPORT jint JNICALL -Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, +Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr, jarray b, jint off, jint len, jint flush) { - z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID)); + z_stream *strm = jlong_to_ptr(addr); - if (strm == 0) { - JNU_ThrowNullPointerException(env, 0); - return 0; - } else { - jarray this_buf = (*env)->GetObjectField(env, this, bufID); - jint this_off = (*env)->GetIntField(env, this, offID); - jint this_len = (*env)->GetIntField(env, this, lenID); - jbyte *in_buf; - jbyte *out_buf; - int res; - if ((*env)->GetBooleanField(env, this, setParamsID)) { - int level = (*env)->GetIntField(env, this, levelID); - int strategy = (*env)->GetIntField(env, this, strategyID); + jarray this_buf = (*env)->GetObjectField(env, this, bufID); + jint this_off = (*env)->GetIntField(env, this, offID); + jint this_len = (*env)->GetIntField(env, this, lenID); + jbyte *in_buf; + jbyte *out_buf; + int res; + if ((*env)->GetBooleanField(env, this, setParamsID)) { + int level = (*env)->GetIntField(env, this, levelID); + int strategy = (*env)->GetIntField(env, this, strategyID); - in_buf = (jbyte *) malloc(this_len); - if (in_buf == 0) { - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } - (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); + in_buf = (jbyte *) malloc(this_len); + if (in_buf == 0) { + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } + (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); + out_buf = (jbyte *) malloc(len); + if (out_buf == 0) { + free(in_buf); + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } - out_buf = (jbyte *) malloc(len); - if (out_buf == 0) { - free(in_buf); - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } + strm->next_in = (Bytef *) in_buf; + strm->next_out = (Bytef *) out_buf; + strm->avail_in = this_len; + strm->avail_out = len; + res = deflateParams(strm, level, strategy); - strm->next_in = (Bytef *) in_buf; - strm->next_out = (Bytef *) out_buf; - strm->avail_in = this_len; - strm->avail_out = len; - res = deflateParams(strm, level, strategy); - - if (res == Z_OK) { - (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); - } - free(out_buf); - free(in_buf); + if (res == Z_OK) { + (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); + } + free(out_buf); + free(in_buf); - switch (res) { - case Z_OK: - (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE); - this_off += this_len - strm->avail_in; - (*env)->SetIntField(env, this, offID, this_off); - (*env)->SetIntField(env, this, lenID, strm->avail_in); - return len - strm->avail_out; - case Z_BUF_ERROR: - (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE); - return 0; - default: - JNU_ThrowInternalError(env, strm->msg); - return 0; - } - } else { - jboolean finish = (*env)->GetBooleanField(env, this, finishID); - - in_buf = (jbyte *) malloc(this_len); - if (in_buf == 0) { - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } - (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); + switch (res) { + case Z_OK: + (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE); + this_off += this_len - strm->avail_in; + (*env)->SetIntField(env, this, offID, this_off); + (*env)->SetIntField(env, this, lenID, strm->avail_in); + return len - strm->avail_out; + case Z_BUF_ERROR: + (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE); + return 0; + default: + JNU_ThrowInternalError(env, strm->msg); + return 0; + } + } else { + jboolean finish = (*env)->GetBooleanField(env, this, finishID); + in_buf = (jbyte *) malloc(this_len); + if (in_buf == 0) { + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } + (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); - out_buf = (jbyte *) malloc(len); - if (out_buf == 0) { - free(in_buf); - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } + out_buf = (jbyte *) malloc(len); + if (out_buf == 0) { + free(in_buf); + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } - strm->next_in = (Bytef *) in_buf; - strm->next_out = (Bytef *) out_buf; - strm->avail_in = this_len; - strm->avail_out = len; - res = deflate(strm, finish ? Z_FINISH : flush); + strm->next_in = (Bytef *) in_buf; + strm->next_out = (Bytef *) out_buf; + strm->avail_in = this_len; + strm->avail_out = len; + res = deflate(strm, finish ? Z_FINISH : flush); - if (res == Z_STREAM_END || res == Z_OK) { - (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); - } - free(out_buf); - free(in_buf); + if (res == Z_STREAM_END || res == Z_OK) { + (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); + } + free(out_buf); + free(in_buf); - switch (res) { - case Z_STREAM_END: - (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE); - /* fall through */ - case Z_OK: - this_off += this_len - strm->avail_in; - (*env)->SetIntField(env, this, offID, this_off); - (*env)->SetIntField(env, this, lenID, strm->avail_in); - return len - strm->avail_out; - case Z_BUF_ERROR: - return 0; + switch (res) { + case Z_STREAM_END: + (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE); + /* fall through */ + case Z_OK: + this_off += this_len - strm->avail_in; + (*env)->SetIntField(env, this, offID, this_off); + (*env)->SetIntField(env, this, lenID, strm->avail_in); + return len - strm->avail_out; + case Z_BUF_ERROR: + return 0; default: - JNU_ThrowInternalError(env, strm->msg); - return 0; - } + JNU_ThrowInternalError(env, strm->msg); + return 0; } } } JNIEXPORT jint JNICALL -Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->adler; + return ((z_stream *)jlong_to_ptr(addr))->adler; } JNIEXPORT jlong JNICALL -Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->total_in; + return ((z_stream *)jlong_to_ptr(addr))->total_in; } JNIEXPORT jlong JNICALL -Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->total_out; + return ((z_stream *)jlong_to_ptr(addr))->total_out; } JNIEXPORT void JNICALL -Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr) { - if (deflateReset((z_stream *)jlong_to_ptr(strm)) != Z_OK) { + if (deflateReset((z_stream *)jlong_to_ptr(addr)) != Z_OK) { JNU_ThrowInternalError(env, 0); } } JNIEXPORT void JNICALL -Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong addr) { - if (deflateEnd((z_stream *)jlong_to_ptr(strm)) == Z_STREAM_ERROR) { + if (deflateEnd((z_stream *)jlong_to_ptr(addr)) == Z_STREAM_ERROR) { JNU_ThrowInternalError(env, 0); } else { - free((z_stream *)jlong_to_ptr(strm)); + free((z_stream *)jlong_to_ptr(addr)); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/util/zip/Inflater.c --- a/jdk/src/share/native/java/util/zip/Inflater.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/util/zip/Inflater.c Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,6 @@ #define ThrowDataFormatException(env, msg) \ JNU_ThrowByName(env, "java/util/zip/DataFormatException", msg) -static jfieldID strmID; static jfieldID needDictID; static jfieldID finishedID; static jfieldID bufID, offID, lenID; @@ -49,7 +48,6 @@ JNIEXPORT void JNICALL Java_java_util_zip_Inflater_initIDs(JNIEnv *env, jclass cls) { - strmID = (*env)->GetFieldID(env, cls, "strm", "J"); needDictID = (*env)->GetFieldID(env, cls, "needDict", "Z"); finishedID = (*env)->GetFieldID(env, cls, "finished", "Z"); bufID = (*env)->GetFieldID(env, cls, "buf", "[B"); @@ -84,134 +82,129 @@ } JNIEXPORT void JNICALL -Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong strm, +Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong addr, jarray b, jint off, jint len) { Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0); int res; if (buf == 0) /* out of memory */ return; - res = inflateSetDictionary(jlong_to_ptr(strm), buf + off, len); + res = inflateSetDictionary(jlong_to_ptr(addr), buf + off, len); (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0); switch (res) { case Z_OK: break; case Z_STREAM_ERROR: case Z_DATA_ERROR: - JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(strm))->msg); + JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(addr))->msg); break; default: - JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg); + JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg); break; } } JNIEXPORT jint JNICALL -Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, +Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr, jarray b, jint off, jint len) { - z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID)); + z_stream *strm = jlong_to_ptr(addr); - if (strm == 0) { - JNU_ThrowNullPointerException(env, 0); - return 0; - } else { - jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID); - jint this_off = (*env)->GetIntField(env, this, offID); - jint this_len = (*env)->GetIntField(env, this, lenID); - jbyte *in_buf; - jbyte *out_buf; - int ret; + jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID); + jint this_off = (*env)->GetIntField(env, this, offID); + jint this_len = (*env)->GetIntField(env, this, lenID); + jbyte *in_buf; + jbyte *out_buf; + int ret; - in_buf = (jbyte *) malloc(this_len); - if (in_buf == 0) { - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } - (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); + in_buf = (jbyte *) malloc(this_len); + if (in_buf == 0) { + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } + (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf); - out_buf = (jbyte *) malloc(len); - if (out_buf == 0) { - free(in_buf); - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - } + out_buf = (jbyte *) malloc(len); + if (out_buf == 0) { + free(in_buf); + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + } - strm->next_in = (Bytef *) in_buf; - strm->next_out = (Bytef *) out_buf; - strm->avail_in = this_len; - strm->avail_out = len; - ret = inflate(strm, Z_PARTIAL_FLUSH); + strm->next_in = (Bytef *) in_buf; + strm->next_out = (Bytef *) out_buf; + strm->avail_in = this_len; + strm->avail_out = len; + ret = inflate(strm, Z_PARTIAL_FLUSH); - if (ret == Z_STREAM_END || ret == Z_OK) { - (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); - } - free(out_buf); - free(in_buf); + if (ret == Z_STREAM_END || ret == Z_OK) { + (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf); + } + free(out_buf); + free(in_buf); - switch (ret) { - case Z_STREAM_END: - (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE); - /* fall through */ - case Z_OK: - this_off += this_len - strm->avail_in; - (*env)->SetIntField(env, this, offID, this_off); - (*env)->SetIntField(env, this, lenID, strm->avail_in); - return len - strm->avail_out; - case Z_NEED_DICT: - (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE); - /* Might have consumed some input here! */ - this_off += this_len - strm->avail_in; - (*env)->SetIntField(env, this, offID, this_off); - (*env)->SetIntField(env, this, lenID, strm->avail_in); - return 0; - case Z_BUF_ERROR: - return 0; - case Z_DATA_ERROR: - ThrowDataFormatException(env, strm->msg); - return 0; - case Z_MEM_ERROR: - JNU_ThrowOutOfMemoryError(env, 0); - return 0; - default: - JNU_ThrowInternalError(env, strm->msg); - return 0; - } + switch (ret) { + case Z_STREAM_END: + (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE); + /* fall through */ + case Z_OK: + this_off += this_len - strm->avail_in; + (*env)->SetIntField(env, this, offID, this_off); + (*env)->SetIntField(env, this, lenID, strm->avail_in); + return len - strm->avail_out; + case Z_NEED_DICT: + (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE); + /* Might have consumed some input here! */ + this_off += this_len - strm->avail_in; + (*env)->SetIntField(env, this, offID, this_off); + (*env)->SetIntField(env, this, lenID, strm->avail_in); + return 0; + case Z_BUF_ERROR: + return 0; + case Z_DATA_ERROR: + ThrowDataFormatException(env, strm->msg); + return 0; + case Z_MEM_ERROR: + JNU_ThrowOutOfMemoryError(env, 0); + return 0; + default: + JNU_ThrowInternalError(env, strm->msg); + return 0; } } JNIEXPORT jint JNICALL -Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->adler; + return ((z_stream *)jlong_to_ptr(addr))->adler; } JNIEXPORT jlong JNICALL -Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->total_in; + return ((z_stream *)jlong_to_ptr(addr))->total_in; } JNIEXPORT jlong JNICALL -Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr) { - return ((z_stream *)jlong_to_ptr(strm))->total_out; + return ((z_stream *)jlong_to_ptr(addr))->total_out; } JNIEXPORT void JNICALL -Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr) { - if (inflateReset(jlong_to_ptr(strm)) != Z_OK) { + if (inflateReset(jlong_to_ptr(addr)) != Z_OK) { JNU_ThrowInternalError(env, 0); } } JNIEXPORT void JNICALL -Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong strm) +Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr) { - if (inflateEnd(jlong_to_ptr(strm)) == Z_STREAM_ERROR) { + if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) { JNU_ThrowInternalError(env, 0); } else { - free(jlong_to_ptr(strm)); + free(jlong_to_ptr(addr)); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/util/zip/ZipFile.c --- a/jdk/src/share/native/java/util/zip/ZipFile.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/util/zip/ZipFile.c Wed Jul 05 17:09:51 2017 +0200 @@ -81,7 +81,8 @@ JNIEXPORT jlong JNICALL Java_java_util_zip_ZipFile_open(JNIEnv *env, jclass cls, jstring name, - jint mode, jlong lastModified) + jint mode, jlong lastModified, + jboolean usemmap) { const char *path = JNU_GetStringPlatformChars(env, name, 0); char *msg = 0; @@ -109,7 +110,7 @@ goto finally; } #endif - zip = ZIP_Put_In_Cache(path, zfd, &msg, lastModified); + zip = ZIP_Put_In_Cache0(path, zfd, &msg, lastModified, usemmap); } if (zip != 0) { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/util/zip/zip_util.c --- a/jdk/src/share/native/java/util/zip/zip_util.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/util/zip/zip_util.c Wed Jul 05 17:09:51 2017 +0200 @@ -251,11 +251,16 @@ if (zip->lock != NULL) MDESTROY(zip->lock); free(zip->name); freeCEN(zip); + #ifdef USE_MMAP - if (zip->maddr != NULL) munmap((char *)zip->maddr, zip->mlen); -#else - free(zip->cencache.data); + if (zip->usemmap) { + if (zip->maddr != NULL) + munmap((char *)zip->maddr, zip->mlen); + } else #endif + { + free(zip->cencache.data); + } if (zip->comment != NULL) free(zip->comment); if (zip->zfd != -1) ZFILE_Close(zip->zfd); @@ -585,49 +590,53 @@ ZIP_FORMAT_ERROR("invalid END header (bad central directory offset)"); #ifdef USE_MMAP - /* On Solaris & Linux prior to JDK 6, we used to mmap the whole jar file to - * read the jar file contents. However, this greatly increased the perceived - * footprint numbers because the mmap'ed pages were adding into the totals shown - * by 'ps' and 'top'. We switched to mmaping only the central directory of jar - * file while calling 'read' to read the rest of jar file. Here are a list of - * reasons apart from above of why we are doing so: - * 1. Greatly reduces mmap overhead after startup complete; - * 2. Avoids dual path code maintainance; - * 3. Greatly reduces risk of address space (not virtual memory) exhaustion. - */ - if (pagesize == 0) { - pagesize = (jlong)sysconf(_SC_PAGESIZE); - if (pagesize == 0) goto Catch; - } - if (cenpos > pagesize) { - offset = cenpos & ~(pagesize - 1); - } else { - offset = 0; + if (zip->usemmap) { + /* On Solaris & Linux prior to JDK 6, we used to mmap the whole jar file to + * read the jar file contents. However, this greatly increased the perceived + * footprint numbers because the mmap'ed pages were adding into the totals shown + * by 'ps' and 'top'. We switched to mmaping only the central directory of jar + * file while calling 'read' to read the rest of jar file. Here are a list of + * reasons apart from above of why we are doing so: + * 1. Greatly reduces mmap overhead after startup complete; + * 2. Avoids dual path code maintainance; + * 3. Greatly reduces risk of address space (not virtual memory) exhaustion. + */ + if (pagesize == 0) { + pagesize = (jlong)sysconf(_SC_PAGESIZE); + if (pagesize == 0) goto Catch; + } + if (cenpos > pagesize) { + offset = cenpos & ~(pagesize - 1); + } else { + offset = 0; + } + /* When we are not calling recursively, knownTotal is -1. */ + if (knownTotal == -1) { + void* mappedAddr; + /* Mmap the CEN and END part only. We have to figure + out the page size in order to make offset to be multiples of + page size. + */ + zip->mlen = cenpos - offset + cenlen + endhdrlen; + zip->offset = offset; + mappedAddr = mmap64(0, zip->mlen, PROT_READ, MAP_SHARED, zip->zfd, (off64_t) offset); + zip->maddr = (mappedAddr == (void*) MAP_FAILED) ? NULL : + (unsigned char*)mappedAddr; + + if (zip->maddr == NULL) { + jio_fprintf(stderr, "mmap failed for CEN and END part of zip file\n"); + goto Catch; + } + } + cenbuf = zip->maddr + cenpos - offset; + } else +#endif + { + if ((cenbuf = malloc((size_t) cenlen)) == NULL || + (readFullyAt(zip->zfd, cenbuf, cenlen, cenpos) == -1)) + goto Catch; } - /* When we are not calling recursively, knownTotal is -1. */ - if (knownTotal == -1) { - void* mappedAddr; - /* Mmap the CEN and END part only. We have to figure - out the page size in order to make offset to be multiples of - page size. - */ - zip->mlen = cenpos - offset + cenlen + endhdrlen; - zip->offset = offset; - mappedAddr = mmap64(0, zip->mlen, PROT_READ, MAP_SHARED, zip->zfd, (off64_t) offset); - zip->maddr = (mappedAddr == (void*) MAP_FAILED) ? NULL : - (unsigned char*)mappedAddr; - if (zip->maddr == NULL) { - jio_fprintf(stderr, "mmap failed for CEN and END part of zip file\n"); - goto Catch; - } - } - cenbuf = zip->maddr + cenpos - offset; -#else - if ((cenbuf = malloc((size_t) cenlen)) == NULL || - (readFullyAt(zip->zfd, cenbuf, cenlen, cenpos) == -1)) - goto Catch; -#endif cenend = cenbuf + cenlen; /* Initialize zip file data structures based on the total number @@ -700,9 +709,11 @@ cenpos = -1; Finally: -#ifndef USE_MMAP - free(cenbuf); +#ifdef USE_MMAP + if (!zip->usemmap) #endif + free(cenbuf); + return cenpos; } @@ -782,9 +793,17 @@ * If a zip error occurs, then *pmsg will be set to the error message text if * pmsg != 0. Otherwise, *pmsg will be set to NULL. */ + jzfile * ZIP_Put_In_Cache(const char *name, ZFILE zfd, char **pmsg, jlong lastModified) { + return ZIP_Put_In_Cache0(name, zfd, pmsg, lastModified, JNI_TRUE); +} + +jzfile * +ZIP_Put_In_Cache0(const char *name, ZFILE zfd, char **pmsg, jlong lastModified, + jboolean usemmap) +{ static char errbuf[256]; jlong len; jzfile *zip; @@ -793,6 +812,9 @@ return NULL; } +#ifdef USE_MMAP + zip->usemmap = usemmap; +#endif zip->refs = 1; zip->lastModified = lastModified; @@ -877,8 +899,6 @@ return; } -#ifndef USE_MMAP - /* Empirically, most CEN headers are smaller than this. */ #define AMPLE_CEN_HEADER_SIZE 160 @@ -928,7 +948,6 @@ cache->pos = cenpos; return cen; } -#endif /* not USE_MMAP */ typedef enum { ACCESS_RANDOM, ACCESS_SEQUENTIAL } AccessHint; @@ -953,14 +972,17 @@ ze->comment = NULL; #ifdef USE_MMAP - cen = (char*) zip->maddr + zc->cenpos - zip->offset; -#else - if (accessHint == ACCESS_RANDOM) - cen = readCENHeader(zip, zc->cenpos, AMPLE_CEN_HEADER_SIZE); - else - cen = sequentialAccessReadCENHeader(zip, zc->cenpos); - if (cen == NULL) goto Catch; + if (zip->usemmap) { + cen = (char*) zip->maddr + zc->cenpos - zip->offset; + } else #endif + { + if (accessHint == ACCESS_RANDOM) + cen = readCENHeader(zip, zc->cenpos, AMPLE_CEN_HEADER_SIZE); + else + cen = sequentialAccessReadCENHeader(zip, zc->cenpos); + if (cen == NULL) goto Catch; + } nlen = CENNAM(cen); elen = CENEXT(cen); @@ -976,7 +998,6 @@ if ((ze->name = malloc(nlen + 1)) == NULL) goto Catch; memcpy(ze->name, cen + CENHDR, nlen); ze->name[nlen] = '\0'; - if (elen > 0) { char *extra = cen + CENHDR + nlen; @@ -1037,9 +1058,10 @@ ze = NULL; Finally: -#ifndef USE_MMAP - if (cen != NULL && accessHint == ACCESS_RANDOM) free(cen); +#ifdef USE_MMAP + if (!zip->usemmap) #endif + if (cen != NULL && accessHint == ACCESS_RANDOM) free(cen); return ze; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/java/util/zip/zip_util.h --- a/jdk/src/share/native/java/util/zip/zip_util.h Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/java/util/zip/zip_util.h Wed Jul 05 17:09:51 2017 +0200 @@ -45,9 +45,6 @@ * Header sizes including signatures */ -#ifdef USE_MMAP -#define SIGSIZ 4 -#endif #define LOCHDR 30 #define EXTHDR 16 #define CENHDR 46 @@ -211,9 +208,9 @@ jlong mlen; /* length (in bytes) mmaped */ jlong offset; /* offset of the mmapped region from the start of the file. */ -#else + jboolean usemmap; /* if mmap is used. */ +#endif cencache cencache; /* CEN header cache */ -#endif ZFILE zfd; /* open file descriptor */ void *lock; /* read lock */ char *comment; /* zip file comment */ @@ -259,6 +256,9 @@ jzfile * ZIP_Put_In_Cache(const char *name, ZFILE zfd, char **pmsg, jlong lastModified); +jzfile * +ZIP_Put_In_Cache0(const char *name, ZFILE zfd, char **pmsg, jlong lastModified, jboolean usemmap); + void JNICALL ZIP_Close(jzfile *zip); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c --- a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c Wed Jul 05 17:09:51 2017 +0200 @@ -258,6 +258,7 @@ typedef struct pixelBufferStruct { jobject hpixelObject; // Usually a DataBuffer bank as a byte array + unsigned int byteBufferLength; union pixptr { INT32 *ip; // Pinned buffer pointer, as 32-bit ints unsigned char *bp; // Pinned buffer pointer, as bytes @@ -270,6 +271,7 @@ */ static void initPixelBuffer(pixelBufferPtr pb) { pb->hpixelObject = NULL; + pb->byteBufferLength = 0; pb->buf.ip = NULL; } @@ -279,13 +281,13 @@ */ static int setPixelBuffer(JNIEnv *env, pixelBufferPtr pb, jobject obj) { pb->hpixelObject = (*env)->NewGlobalRef(env, obj); - if (pb->hpixelObject == NULL) { JNU_ThrowByName( env, "java/lang/OutOfMemoryError", "Setting Pixel Buffer"); return NOT_OK; } + pb->byteBufferLength = (*env)->GetArrayLength(env, pb->hpixelObject); return OK; } @@ -302,6 +304,7 @@ unpinPixelBuffer(env, pb); (*env)->DeleteGlobalRef(env, pb->hpixelObject); pb->hpixelObject = NULL; + pb->byteBufferLength = 0; } } @@ -1828,6 +1831,7 @@ boolean orderedBands = TRUE; imageIODataPtr data = (imageIODataPtr) ptr; j_decompress_ptr cinfo; + unsigned int numBytes; /* verify the inputs */ @@ -2027,15 +2031,22 @@ // scanline buffer into the raster. in = scanLinePtr + (sourceXStart * cinfo->output_components); if (pixelLimit > in) { - memcpy(out, in, pixelLimit - in); + numBytes = pixelLimit - in; + if (numBytes > data->pixelBuf.byteBufferLength) { + numBytes = data->pixelBuf.byteBufferLength; + } + memcpy(out, in, numBytes); } } else { + numBytes = numBands; for (in = scanLinePtr+sourceXStart*cinfo->output_components; - in < pixelLimit; + in < pixelLimit && + numBytes <= data->pixelBuf.byteBufferLength; in += pixelStride) { for (i = 0; i < numBands; i++) { *out++ = *(in+bands[i]); } + numBytes += numBands; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c --- a/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Wed Jul 05 17:09:51 2017 +0200 @@ -2239,7 +2239,8 @@ int dataType = BYTE_DATA_TYPE; int width; int height; - int size = rasterP->width * rasterP->height * rasterP->numBands; + int dataSize; + int offset; *dataPP = NULL; @@ -2292,6 +2293,22 @@ #endif switch (rasterP->type) { case sun_awt_image_IntegerComponentRaster_TYPE_INT_8BIT_SAMPLES: + if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 4)) && + SAFE_TO_ALLOC_2(width, 4) && + SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 4))) + { + return -1; + } + offset = 4 * rasterP->chanOffsets[0]; + dataSize = 4 * (*env)->GetArrayLength(env, rasterP->jdata); + + if (offset < 0 || offset >= dataSize || + width > rasterP->scanlineStride || + height * rasterP->scanlineStride * 4 > dataSize - offset) + { + // raster data buffer is too short + return -1; + } dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata, NULL); if (dataP == NULL) { @@ -2300,11 +2317,25 @@ *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, 4, width, height, rasterP->scanlineStride*4, - (unsigned char *)dataP - + rasterP->chanOffsets[0]*4); + (unsigned char *)dataP + offset); *dataPP = dataP; return 0; case sun_awt_image_IntegerComponentRaster_TYPE_BYTE_SAMPLES: + if (!(SAFE_TO_ALLOC_2(width, rasterP->numBands) && + SAFE_TO_ALLOC_2(height, rasterP->scanlineStride))) + { + return -1; + } + offset = rasterP->chanOffsets[0]; + dataSize = (*env)->GetArrayLength(env, rasterP->jdata); + + if (offset < 0 || offset >= dataSize || + width * rasterP->numBands > rasterP->scanlineStride || + height * rasterP->scanlineStride > dataSize - offset) + { + // raster data buffer is too short + return -1; + } dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata, NULL); if (dataP == NULL) { @@ -2313,11 +2344,26 @@ *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, rasterP->numBands, width, height, rasterP->scanlineStride, - (unsigned char *)dataP - + rasterP->chanOffsets[0]); + (unsigned char *)dataP + offset); *dataPP = dataP; return 0; case sun_awt_image_IntegerComponentRaster_TYPE_USHORT_SAMPLES: + if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 2)) && + SAFE_TO_ALLOC_3(width, rasterP->numBands, 2) && + SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 2))) + { + return -1; + } + offset = rasterP->chanOffsets[0] * 2; + dataSize = 2 * (*env)->GetArrayLength(env, rasterP->jdata); + + if (offset < 0 || offset >= dataSize || + width * rasterP->numBands > rasterP->scanlineStride || + height * rasterP->scanlineStride * 2 > dataSize - offset) + { + // raster data buffer is too short + return -1; + } dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata, NULL); if (dataP == NULL) { @@ -2327,8 +2373,7 @@ rasterP->numBands, width, height, rasterP->scanlineStride*2, - (unsigned char *)dataP - + rasterP->chanOffsets[0]*2); + (unsigned char *)dataP + offset); *dataPP = dataP; return 0; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/awt/medialib/safe_alloc.h --- a/jdk/src/share/native/sun/awt/medialib/safe_alloc.h Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/awt/medialib/safe_alloc.h Wed Jul 05 17:09:51 2017 +0200 @@ -35,11 +35,11 @@ */ #define SAFE_TO_ALLOC_2(c, sz) \ (((c) > 0) && ((sz) > 0) && \ - ((0xffffffffu / ((juint)(c))) > (sz))) + ((0xffffffffu / ((juint)(c))) > ((juint)(sz)))) #define SAFE_TO_ALLOC_3(w, h, sz) \ (((w) > 0) && ((h) > 0) && ((sz) > 0) && \ - (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > (sz))) + (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > ((juint)(sz)))) #endif // __SAFE_ALLOC_H__ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c --- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c Wed Jul 05 17:09:51 2017 +0200 @@ -1433,6 +1433,9 @@ // If is in memory, the LUT is already there, so throw a copy if (Icc -> TagPtrs[n]) { + if (!_cmsValidateLUT((LPLUT) Icc ->TagPtrs[n])) { + return NULL; + } return cmsDupLUT((LPLUT) Icc ->TagPtrs[n]); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c --- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c Wed Jul 05 17:09:51 2017 +0200 @@ -1969,6 +1969,10 @@ goto ErrorCleanup; } + if (Transforms[i] == NULL) { + cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateMultiprofileTransform: unable to create transform"); + goto ErrorCleanup; + } CurrentColorSpace = ColorSpaceOut; } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/share/native/sun/management/Flag.c --- a/jdk/src/share/native/sun/management/Flag.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/share/native/sun/management/Flag.c Wed Jul 05 17:09:51 2017 +0200 @@ -133,11 +133,8 @@ globals[i].value.j); break; default: - // unsupported type - sprintf(errmsg, "Unsupported VMGlobal Type %d", globals[i].type); - JNU_ThrowInternalError(env, errmsg); - free(globals); - return 0; + // ignore unsupported type + continue; } switch (globals[i].origin) { case JMM_VMGLOBAL_ORIGIN_DEFAULT: diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties --- a/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties Wed Jul 05 17:09:51 2017 +0200 @@ -26,134 +26,310 @@ # Version -# Uses Fedora Core 6 fonts and file paths. +# Uses Fedora 9 fonts and file paths. version=1 # Component Font Mappings -dialog.plain.latin-1=DejaVu LGC Sans +dialog.plain.latin-1=DejaVu Sans dialog.plain.japanese-x0208=Sazanami Gothic dialog.plain.korean=Baekmuk Gulim dialog.plain.chinese-big5=AR PL ShanHeiSun Uni dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.bengali=Lohit Bengali +dialog.plain.gujarati=Lohit Gujarati +dialog.plain.hindi=Lohit Hindi +dialog.plain.malayalam=Lohit Malayalam +dialog.plain.oriya=Lohit Oriya +dialog.plain.punjabi=Lohit Punjabi +dialog.plain.tamil=Lohit Tamil +dialog.plain.telugu=Lohit Telugu +dialog.plain.sinhala=LKLUG -dialog.bold.latin-1=DejaVu LGC Sans Bold +dialog.bold.latin-1=DejaVu Sans Bold dialog.bold.japanese-x0208=Sazanami Gothic dialog.bold.korean=Baekmuk Gulim dialog.bold.chinese-big5=AR PL ShanHeiSun Uni dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.bengali=Lohit Bengali +dialog.bold.gujarati=Lohit Gujarati +dialog.bold.hindi=Lohit Hindi +dialog.bold.malayalam=Lohit Malayalam +dialog.bold.oriya=Lohit Oriya +dialog.bold.punjabi=Lohit Punjabi +dialog.bold.tamil=Lohit Tamil +dialog.bold.telugu=Lohit Telugu +dialog.bold.sinhala=LKLUG -dialog.italic.latin-1=DejaVu LGC Sans Oblique +dialog.italic.latin-1=DejaVu Sans Oblique dialog.italic.japanese-x0208=Sazanami Gothic dialog.italic.korean=Baekmuk Gulim dialog.italic.chinese-big5=AR PL ShanHeiSun Uni dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.bengali=Lohit Bengali +dialog.italic.gujarati=Lohit Gujarati +dialog.italic.hindi=Lohit Hindi +dialog.italic.malayalam=Lohit Malayalam +dialog.italic.oriya=Lohit Oriya +dialog.italic.punjabi=Lohit Punjabi +dialog.italic.tamil=Lohit Tamil +dialog.italic.telugu=Lohit Telugu +dialog.italic.sinhala=LKLUG -dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique dialog.bolditalic.japanese-x0208=Sazanami Gothic dialog.bolditalic.korean=Baekmuk Gulim dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni - +dialog.bolditalic.bengali=Lohit Bengali +dialog.bolditalic.gujarati=Lohit Gujarati +dialog.bolditalic.hindi=Lohit Hindi +dialog.bolditalic.malayalam=Lohit Malayalam +dialog.bolditalic.oriya=Lohit Oriya +dialog.bolditalic.punjabi=Lohit Punjabi +dialog.bolditalic.tamil=Lohit Tamil +dialog.bolditalic.telugu=Lohit Telugu +dialog.bolditalic.sinhala=LKLUG -sansserif.plain.latin-1=DejaVu LGC Sans +sansserif.plain.latin-1=DejaVu Sans sansserif.plain.japanese-x0208=Sazanami Gothic sansserif.plain.korean=Baekmuk Gulim sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.bengali=Lohit Bengali +sansserif.plain.gujarati=Lohit Gujarati +sansserif.plain.hindi=Lohit Hindi +sansserif.plain.malayalam=Lohit Malayalam +sansserif.plain.oriya=Lohit Oriya +sansserif.plain.punjabi=Lohit Punjabi +sansserif.plain.tamil=Lohit Tamil +sansserif.plain.telugu=Lohit Telugu +sansserif.plain.sinhala=LKLUG -sansserif.bold.latin-1=DejaVu LGC Sans Bold +sansserif.bold.latin-1=DejaVu Sans Bold sansserif.bold.japanese-x0208=Sazanami Gothic sansserif.bold.korean=Baekmuk Gulim sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.bengali=Lohit Bengali +sansserif.bold.gujarati=Lohit Gujarati +sansserif.bold.hindi=Lohit Hindi +sansserif.bold.malayalam=Lohit Malayalam +sansserif.bold.oriya=Lohit Oriya +sansserif.bold.punjabi=Lohit Punjabi +sansserif.bold.tamil=Lohit Tamil +sansserif.bold.telugu=Lohit Telugu +sansserif.bold.sinhala=LKLUG -sansserif.italic.latin-1=DejaVu LGC Sans Oblique +sansserif.italic.latin-1=DejaVu Sans Oblique sansserif.italic.japanese-x0208=Sazanami Gothic sansserif.italic.korean=Baekmuk Gulim sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.bengali=Lohit Bengali +sansserif.italic.gujarati=Lohit Gujarati +sansserif.italic.hindi=Lohit Hindi +sansserif.italic.malayalam=Lohit Malayalam +sansserif.italic.oriya=Lohit Oriya +sansserif.italic.punjabi=Lohit Punjabi +sansserif.italic.tamil=Lohit Tamil +sansserif.italic.telugu=Lohit Telugu +sansserif.italic.sinhala=LKLUG -sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique sansserif.bolditalic.japanese-x0208=Sazanami Gothic sansserif.bolditalic.korean=Baekmuk Gulim sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni - +sansserif.bolditalic.bengali=Lohit Bengali +sansserif.bolditalic.gujarati=Lohit Gujarati +sansserif.bolditalic.hindi=Lohit Hindi +sansserif.bolditalic.malayalam=Lohit Malayalam +sansserif.bolditalic.oriya=Lohit Oriya +sansserif.bolditalic.punjabi=Lohit Punjabi +sansserif.bolditalic.tamil=Lohit Tamil +sansserif.bolditalic.telugu=Lohit Telugu +sansserif.bolditalic.sinhala=LKLUG -serif.plain.latin-1=DejaVu LGC Serif +serif.plain.latin-1=DejaVu Serif serif.plain.japanese-x0208=Sazanami Mincho serif.plain.korean=Baekmuk Batang serif.plain.chinese-big5=AR PL ZenKai Uni serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.bengali=Lohit Bengali +serif.plain.gujarati=Lohit Gujarati +serif.plain.hindi=Lohit Hindi +serif.plain.malayalam=Lohit Malayalam +serif.plain.oriya=Lohit Oriya +serif.plain.punjabi=Lohit Punjabi +serif.plain.tamil=Lohit Tamil +serif.plain.telugu=Lohit Telugu +serif.plain.sinhala=LKLUG -serif.bold.latin-1=DejaVu LGC Serif Bold +serif.bold.latin-1=DejaVu Serif Bold serif.bold.japanese-x0208=Sazanami Mincho serif.bold.korean=Baekmuk Batang serif.bold.chinese-big5=AR PL ZenKai Uni serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.bengali=Lohit Bengali +serif.bold.gujarati=Lohit Gujarati +serif.bold.hindi=Lohit Hindi +serif.bold.malayalam=Lohit Malayalam +serif.bold.oriya=Lohit Oriya +serif.bold.punjabi=Lohit Punjabi +serif.bold.tamil=Lohit Tamil +serif.bold.telugu=Lohit Telugu +serif.bold.sinhala=LKLUG -serif.italic.latin-1=DejaVu LGC Serif Oblique +serif.italic.latin-1=DejaVu Serif Oblique serif.italic.japanese-x0208=Sazanami Mincho serif.italic.korean=Baekmuk Batang serif.italic.chinese-big5=AR PL ZenKai Uni serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.bengali=Lohit Bengali +serif.italic.gujarati=Lohit Gujarati +serif.italic.hindi=Lohit Hindi +serif.italic.malayalam=Lohit Malayalam +serif.italic.oriya=Lohit Oriya +serif.italic.punjabi=Lohit Punjabi +serif.italic.tamil=Lohit Tamil +serif.italic.telugu=Lohit Telugu +serif.italic.sinhala=LKLUG -serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique serif.bolditalic.japanese-x0208=Sazanami Mincho serif.bolditalic.korean=Baekmuk Batang serif.bolditalic.chinese-big5=AR PL ZenKai Uni serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni - +serif.bolditalic.bengali=Lohit Bengali +serif.bolditalic.gujarati=Lohit Gujarati +serif.bolditalic.hindi=Lohit Hindi +serif.bolditalic.malayalam=Lohit Malayalam +serif.bolditalic.oriya=Lohit Oriya +serif.bolditalic.punjabi=Lohit Punjabi +serif.bolditalic.tamil=Lohit Tamil +serif.bolditalic.telugu=Lohit Telugu +serif.bolditalic.sinhala=LKLUG -monospaced.plain.latin-1=DejaVu LGC Sans Mono +monospaced.plain.latin-1=DejaVu Sans Mono monospaced.plain.japanese-x0208=Sazanami Gothic monospaced.plain.korean=Baekmuk Gulim monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.bengali=Lohit Bengali +monospaced.plain.gujarati=Lohit Gujarati +monospaced.plain.hindi=Lohit Hindi +monospaced.plain.malayalam=Lohit Malayalam +monospaced.plain.oriya=Lohit Oriya +monospaced.plain.punjabi=Lohit Punjabi +monospaced.plain.tamil=Lohit Tamil +monospaced.plain.telugu=Lohit Telugu +monospaced.plain.sinhala=LKLUG -monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold +monospaced.bold.latin-1=DejaVu Sans Mono Bold monospaced.bold.japanese-x0208=Sazanami Gothic monospaced.bold.korean=Baekmuk Gulim monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.bengali=Lohit Bengali +monospaced.bold.gujarati=Lohit Gujarati +monospaced.bold.hindi=Lohit Hindi +monospaced.bold.malayalam=Lohit Malayalam +monospaced.bold.oriya=Lohit Oriya +monospaced.bold.punjabi=Lohit Punjabi +monospaced.bold.tamil=Lohit Tamil +monospaced.bold.telugu=Lohit Telugu +monospaced.bold.sinhala=LKLUG -monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique +monospaced.italic.latin-1=DejaVu Sans Mono Oblique monospaced.italic.japanese-x0208=Sazanami Gothic monospaced.italic.korean=Baekmuk Gulim monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.bengali=Lohit Bengali +monospaced.italic.gujarati=Lohit Gujarati +monospaced.italic.hindi=Lohit Hindi +monospaced.italic.malayalam=Lohit Malayalam +monospaced.italic.oriya=Lohit Oriya +monospaced.italic.punjabi=Lohit Punjabi +monospaced.italic.tamil=Lohit Tamil +monospaced.italic.telugu=Lohit Telugu +monospaced.italic.sinhala=LKLUG -monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique monospaced.bolditalic.japanese-x0208=Sazanami Gothic monospaced.bolditalic.korean=Baekmuk Gulim monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni - +monospaced.bolditalic.bengali=Lohit Bengali +monospaced.bolditalic.gujarati=Lohit Gujarati +monospaced.bolditalic.hindi=Lohit Hindi +monospaced.bolditalic.malayalam=Lohit Malayalam +monospaced.bolditalic.oriya=Lohit Oriya +monospaced.bolditalic.punjabi=Lohit Punjabi +monospaced.bolditalic.tamil=Lohit Tamil +monospaced.bolditalic.telugu=Lohit Telugu +monospaced.bolditalic.sinhala=LKLUG -dialoginput.plain.latin-1=DejaVu LGC Sans Mono +dialoginput.plain.latin-1=DejaVu Sans Mono dialoginput.plain.japanese-x0208=Sazanami Gothic dialoginput.plain.korean=Baekmuk Gulim dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.bengali=Lohit Bengali +dialoginput.plain.gujarati=Lohit Gujarati +dialoginput.plain.hindi=Lohit Hindi +dialoginput.plain.malayalam=Lohit Malayalam +dialoginput.plain.oriya=Lohit Oriya +dialoginput.plain.punjabi=Lohit Punjabi +dialoginput.plain.tamil=Lohit Tamil +dialoginput.plain.telugu=Lohit Telugu +dialoginput.plain.sinhala=LKLUG -dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold +dialoginput.bold.latin-1=DejaVu Sans Mono Bold dialoginput.bold.japanese-x0208=Sazanami Gothic dialoginput.bold.korean=Baekmuk Gulim dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.bengali=Lohit Bengali +dialoginput.bold.gujarati=Lohit Gujarati +dialoginput.bold.hindi=Lohit Hindi +dialoginput.bold.malayalam=Lohit Malayalam +dialoginput.bold.oriya=Lohit Oriya +dialoginput.bold.punjabi=Lohit Punjabi +dialoginput.bold.tamil=Lohit Tamil +dialoginput.bold.telugu=Lohit Telugu +dialoginput.bold.sinhala=LKLUG -dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique dialoginput.italic.japanese-x0208=Sazanami Gothic dialoginput.italic.korean=Baekmuk Gulim dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.bengali=Lohit Bengali +dialoginput.italic.gujarati=Lohit Gujarati +dialoginput.italic.hindi=Lohit Hindi +dialoginput.italic.malayalam=Lohit Malayalam +dialoginput.italic.oriya=Lohit Oriya +dialoginput.italic.punjabi=Lohit Punjabi +dialoginput.italic.tamil=Lohit Tamil +dialoginput.italic.telugu=Lohit Telugu +dialoginput.italic.sinhala=LKLUG -dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique dialoginput.bolditalic.japanese-x0208=Sazanami Gothic dialoginput.bolditalic.korean=Baekmuk Gulim dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.bengali=Lohit Bengali +dialoginput.bolditalic.gujarati=Lohit Gujarati +dialoginput.bolditalic.hindi=Lohit Hindi +dialoginput.bolditalic.malayalam=Lohit Malayalam +dialoginput.bolditalic.oriya=Lohit Oriya +dialoginput.bolditalic.punjabi=Lohit Punjabi +dialoginput.bolditalic.tamil=Lohit Tamil +dialoginput.bolditalic.telugu=Lohit Telugu +dialoginput.bolditalic.sinhala=LKLUG # Search Sequences @@ -162,28 +338,40 @@ sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 sequence.allfonts.EUC-KR=korean,latin-1 sequence.allfonts.GB18030=chinese-gb18030,latin-1 -sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala # Font File Names -filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf -filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf -filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf -filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf -filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf -filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf -filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf -filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf + +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf -filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf -filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf -filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf -filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf -filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf -filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf -filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf -filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf -filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf -filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties --- a/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties Wed Jul 05 17:09:51 2017 +0200 @@ -26,106 +26,253 @@ # Version -# Uses Ubuntu 6.10 (Edgy) fonts and file paths. +# Uses Ubuntu 8.04 (hardy), Debian 6.0 (Squeeze) (and more recent releases) fonts and file paths. version=1 # Component Font Mappings -dialog.plain.latin-1=DejaVu Sans -dialog.plain.japanese-x0208=Kochi Gothic -dialog.plain.korean=Baekmuk Dotum - -dialog.bold.latin-1=DejaVu Sans Bold -dialog.bold.japanese-x0208=Kochi Gothic -dialog.bold.korean=Baekmuk Dotum - -dialog.italic.latin-1=DejaVu Sans Oblique -dialog.italic.japanese-x0208=Kochi Gothic -dialog.italic.korean=Baekmuk Dotum - -dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique -dialog.bolditalic.japanese-x0208=Kochi Gothic -dialog.bolditalic.korean=Baekmuk Dotum +# Chinese fonts +allfonts.umingcn=AR PL UMing CN +#allfonts.umingcn.motif=AR PL UMing CN +allfonts.uminghk=AR PL UMing HK +#allfonts.uminghk.motif=AR PL UMing HK +allfonts.umingtw=AR PL UMing TW +#allfonts.umingtw.motif=AR PL UMing TW +allfonts.wqy-zenhei=WenQuanYi Zen Hei +#allfonts.wqy-zenhei.motif=WenQuanYi Zen Hei +allfonts.shanheisun=AR PL ShanHeiSun Uni +#allfonts.shanheisun.motif=AR PL ShanHeiSun Uni - -sansserif.plain.latin-1=DejaVu Sans -sansserif.plain.japanese-x0208=Kochi Gothic -sansserif.plain.korean=Baekmuk Dotum - -sansserif.bold.latin-1=DejaVu Sans Bold -sansserif.bold.japanese-x0208=Kochi Gothic -sansserif.bold.korean=Baekmuk Dotum - -sansserif.italic.latin-1=DejaVu Sans Oblique -sansserif.italic.japanese-x0208=Kochi Gothic -sansserif.italic.korean=Baekmuk Dotum - -sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique -sansserif.bolditalic.japanese-x0208=Kochi Gothic -sansserif.bolditalic.korean=Baekmuk Dotum +# Indic scripts +allfonts.bengali=Lohit Bengali +allfonts.gujarati=Lohit Gujarati +allfonts.hindi=Lohit Hindi +#allfonts.malayalam=Lohit Malayalam +allfonts.oriya=Lohit Oriya +allfonts.punjabi=Lohit Punjabi +allfonts.tamil=Lohit Tamil +allfonts.telugu=Lohit Telugu +allfonts.sinhala=LKLUG serif.plain.latin-1=DejaVu Serif -serif.plain.japanese-x0208=Kochi Mincho -serif.plain.korean=Baekmuk Batang +#serif.plain.latin-1.motif=LuxiSerif-Regular +serif.plain.japanese-kochi=Kochi Mincho +serif.plain.japanese-sazanami=Sazanami Mincho +serif.plain.japanese-vlgothic=Sazanami Mincho +serif.plain.korean-baekmuk=Baekmuk Batang +#serif.plain.korean-baekmuk.motif=Baekmuk Batang +serif.plain.korean-un=UnBatang +#serif.plain.korean-un.motif=UnBatang serif.bold.latin-1=DejaVu Serif Bold -serif.bold.japanese-x0208=Kochi Mincho -serif.bold.korean=Baekmuk Batang +#serif.bold.latin-1.motif=LuxiSerif-Bold +serif.bold.japanese-kochi=Kochi Mincho +serif.bold.japanese-sazanami=Sazanami Mincho +serif.bold.japanese-vlgothic=Sazanami Mincho +serif.bold.korean-baekmuk=Baekmuk Batang +#serif.bold.korean-baekmuk.motif=Baekmuk Batang +serif.bold.korean-un=UnBatang Bold +#serif.bold.korean-un.motif=UnBatang Bold serif.italic.latin-1=DejaVu Serif Oblique -serif.italic.japanese-x0208=Kochi Mincho -serif.italic.korean=Baekmuk Batang +#serif.italic.latin-1.motif=LuxiSerif-Oblique +serif.italic.japanese-kochi=Kochi Mincho +serif.italic.japanese-sazanami=Sazanami Mincho +serif.italic.japanese-vlgothic=Sazanami Mincho +serif.italic.korean-baekmuk=Baekmuk Batang +#serif.italic.korean-baekmuk.motif=Baekmuk Batang +serif.italic.korean-un=UnBatang +#serif.italic.korean-un.motif=UnBatang serif.bolditalic.latin-1=DejaVu Serif Bold Oblique -serif.bolditalic.japanese-x0208=Kochi Mincho -serif.bolditalic.korean=Baekmuk Batang +#serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique +serif.bolditalic.japanese-kochi=Kochi Mincho +serif.bolditalic.japanese-sazanami=Sazanami Mincho +serif.bolditalic.japanese-vlgothic=Sazanami Mincho +serif.bolditalic.korean-baekmuk=Baekmuk Batang +#serif.bolditalic.korean-baekmuk.motif=Baekmuk Batang +serif.bolditalic.korean-un=UnBatang Bold +#serif.bolditalic.korean-un.motif=UnBatang Bold + +sansserif.plain.latin-1=DejaVu Sans +#sansserif.plain.latin-1.motif=LuxiSans-Regular +sansserif.plain.japanese-kochi=Kochi Gothic +sansserif.plain.japanese-sazanami=Sazanami Gothic +sansserif.plain.japanese-vlgothic=VL PGothic +sansserif.plain.korean-baekmuk=Baekmuk Gulim +#sansserif.plain.korean-baekmuk.motif=Baekmuk Gulim +sansserif.plain.korean-un=UnDotum +#sansserif.plain.korean-un.motif=UnDotum +sansserif.bold.latin-1=DejaVu Sans Bold +#sansserif.bold.latin-1.motif=LuxiSans-Bold +sansserif.bold.japanese-kochi=Kochi Gothic +sansserif.bold.japanese-sazanami=Sazanami Gothic +sansserif.bold.japanese-vlgothic=VL PGothic +sansserif.bold.korean-baekmuk=Baekmuk Gulim +#sansserif.bold.korean-baekmuk.motif=Baekmuk Gulim +sansserif.bold.korean-un=UnDotum Bold +#sansserif.bold.korean-un.motif=UnDotum Bold + +sansserif.italic.latin-1=DejaVu Sans Oblique +#sansserif.italic.latin-1.motif=LuxiSans-Oblique +sansserif.italic.japanese-kochi=Kochi Gothic +sansserif.italic.japanese-sazanami=Sazanami Gothic +sansserif.italic.japanese-vlgothic=VL PGothic +sansserif.italic.korean-baekmuk=Baekmuk Gulim +#sansserif.italic.korean-baekmuk.motif=Baekmuk Gulim +sansserif.italic.korean-un=UnDotum +#sansserif.italic.korean-un.motif=UnDotum + +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique +#sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique +sansserif.bolditalic.japanese-kochi=Kochi Gothic +sansserif.bolditalic.japanese-sazanami=Sazanami Gothic +sansserif.bolditalic.japanese-vlgothic=VL PGothic +sansserif.bolditalic.korean-baekmuk=Baekmuk Gulim +#sansserif.bolditalic.korean-baekmuk.motif=Baekmuk Gulim +sansserif.bolditalic.korean-un=UnDotum Bold +#sansserif.bolditalic.korean-un.motif=UnDotum Bold monospaced.plain.latin-1=DejaVu Sans Mono -monospaced.plain.japanese-x0208=Kochi Gothic -monospaced.plain.korean=Baekmuk Dotum +#monospaced.plain.latin-1.motif=LuxiMono-Regular +monospaced.plain.japanese-kochi=Kochi Gothic +monospaced.plain.japanese-sazanami=Sazanami Gothic +monospaced.plain.japanese-vlgothic=VL Gothic +monospaced.plain.korean-baekmuk=Baekmuk Gulim +#monospaced.plain.korean-baekmuk.motif=Baekmuk Gulim +monospaced.plain.korean-un=UnDotum +#monospaced.plain.korean-un.motif=UnDotum monospaced.bold.latin-1=DejaVu Sans Mono Bold -monospaced.bold.japanese-x0208=Kochi Gothic -monospaced.bold.korean=Baekmuk Dotum +#monospaced.bold.latin-1.motif=LuxiMono-Bold +monospaced.bold.japanese-kochi=Kochi Gothic +monospaced.bold.japanese-sazanami=Sazanami Gothic +monospaced.bold.japanese-vlgothic=VL Gothic +monospaced.bold.korean-baekmuk=Baekmuk Gulim +#monospaced.bold.korean-baekmuk.motif=Baekmuk Gulim +monospaced.bold.korean-un=UnDotum Bold +#monospaced.bold.korean-un.motif=UnDotum Bold monospaced.italic.latin-1=DejaVu Sans Mono Oblique -monospaced.italic.japanese-x0208=Kochi Gothic -monospaced.italic.korean=Baekmuk Dotum +#monospaced.italic.latin-1.motif=LuxiMono-Oblique +monospaced.italic.japanese-kochi=Kochi Gothic +monospaced.italic.japanese-sazanami=Sazanami Gothic +monospaced.italic.japanese-vlgothic=VL Gothic +monospaced.italic.korean-baekmuk=Baekmuk Gulim +#monospaced.italic.korean-baekmuk.motif=Baekmuk Gulim +monospaced.italic.korean-un=UnDotum +#monospaced.italic.korean-un.motif=UnDotum monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique -monospaced.bolditalic.japanese-x0208=Kochi Gothic -monospaced.bolditalic.korean=Baekmuk Dotum +#monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique +monospaced.bolditalic.japanese-kochi=Kochi Gothic +monospaced.bolditalic.japanese-sazanami=Sazanami Gothic +monospaced.bolditalic.japanese-vlgothic=VL Gothic +monospaced.bolditalic.korean-baekmuk=Baekmuk Gulim +#monospaced.bolditalic.korean-baekmuk.motif=Baekmuk Gulim +monospaced.bolditalic.korean-un=UnDotum Bold +#monospaced.bolditalic.korean-un.motif=UnDotum Bold + +dialog.plain.latin-1=DejaVu Sans +#dialog.plain.latin-1.motif=LuxiSans-Regular +dialog.plain.japanese-kochi=Kochi Gothic +dialog.plain.japanese-sazanami=Sazanami Gothic +dialog.plain.japanese-vlgothic=VL PGothic +dialog.plain.korean-baekmuk=Baekmuk Gulim +#dialog.plain.korean-baekmuk.motif=Baekmuk Gulim +dialog.plain.korean-un=UnDotum +#dialog.plain.korean-un.motif=UnDotum +dialog.bold.latin-1=DejaVu Sans Bold +#dialog.bold.latin-1.motif=LuxiSans-Bold +dialog.bold.japanese-kochi=Kochi Gothic +dialog.bold.japanese-sazanami=Sazanami Gothic +dialog.bold.japanese-vlgothic=VL PGothic +dialog.bold.korean-baekmuk=Baekmuk Gulim +#dialog.bold.korean-baekmuk.motif=Baekmuk Gulim +dialog.bold.korean-un=UnDotum Bold +#dialog.bold.korean-un.motif=UnDotum Bold + +dialog.italic.latin-1=DejaVu Sans Oblique +#dialog.italic.latin-1.motif=LuxiSans-Oblique +dialog.italic.japanese-kochi=Kochi Gothic +dialog.italic.japanese-sazanami=Sazanami Gothic +dialog.italic.japanese-vlgothic=VL PGothic +dialog.italic.korean-baekmuk=Baekmuk Gulim +#dialog.italic.korean-baekmuk.motif=Baekmuk Gulim +dialog.italic.korean-un=UnDotum +#dialog.italic.korean-un.motif=UnDotum + +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique +#dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique +dialog.bolditalic.japanese-kochi=Kochi Gothic +dialog.bolditalic.japanese-sazanami=Sazanami Gothic +dialog.bolditalic.japanese-vlgothic=VL PGothic +dialog.bolditalic.korean-baekmuk=Baekmuk Gulim +#dialog.bolditalic.korean-baekmuk.motif=Baekmuk Gulim +dialog.bolditalic.korean-un=UnDotum Bold +#dialog.bolditalic.korean-un.motif=UnDotum Bold dialoginput.plain.latin-1=DejaVu Sans Mono -dialoginput.plain.japanese-x0208=Kochi Gothic -dialoginput.plain.korean=Baekmuk Dotum +#dialoginput.plain.latin-1.motif=LuxiMono-Regular +dialoginput.plain.japanese-kochi=Kochi Gothic +dialoginput.plain.japanese-sazanami=Sazanami Gothic +dialoginput.plain.japanese-vlgothic=VL Gothic +dialoginput.plain.korean-baekmuk=Baekmuk Gulim +#dialoginput.plain.korean-baekmuk.motif=Baekmuk Gulim +dialoginput.plain.korean-un=UnDotum +#dialoginput.plain.korean-un.motif=UnDotum dialoginput.bold.latin-1=DejaVu Sans Mono Bold -dialoginput.bold.japanese-x0208=Kochi Gothic -dialoginput.bold.korean=Baekmuk Dotum +#dialoginput.bold.latin-1.motif=LuxiMono-Bold +dialoginput.bold.japanese-kochi=Kochi Gothic +dialoginput.bold.japanese-sazanami=Sazanami Gothic +dialoginput.bold.japanese-vlgothic=VL Gothic +dialoginput.bold.korean-baekmuk=Baekmuk Gulim +#dialoginput.bold.korean-baekmuk.motif=Baekmuk Gulim +dialoginput.bold.korean-un=UnDotum Bold +#dialoginput.bold.korean-un.motif=UnDotum Bold dialoginput.italic.latin-1=DejaVu Sans Mono Oblique -dialoginput.italic.japanese-x0208=Kochi Gothic -dialoginput.italic.korean=Baekmuk Dotum +#dialoginput.italic.latin-1.motif=LuxiMono-Oblique +dialoginput.italic.japanese-kochi=Kochi Gothic +dialoginput.italic.japanese-sazanami=Sazanami Gothic +dialoginput.italic.japanese-vlgothic=VL Gothic +dialoginput.italic.korean-baekmuk=Baekmuk Gulim +#dialoginput.italic.korean-baekmuk.motif=Baekmuk Gulim +dialoginput.italic.korean-un=UnDotum +#dialoginput.italic.korean-un.motif=UnDotum dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique -dialoginput.bolditalic.japanese-x0208=Kochi Gothic -dialoginput.bolditalic.korean=Baekmuk Dotum - -allfonts.chinese-big5=AR PL ZenKai Uni -allfonts.chinese-gb18030=AR PL ZenKai Uni +#dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique +dialoginput.bolditalic.japanese-kochi=Kochi Gothic +dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic +dialoginput.bolditalic.japanese-vlgothic=VL Gothic +dialoginput.bolditalic.korean-baekmuk=Baekmuk Gulim +#dialoginput.bolditalic.korean-baekmuk.motif=Baekmuk Gulim +dialoginput.bolditalic.korean-un=UnDotum Bold +#dialoginput.bolditalic.korean-un.motif=UnDotum Bold # Search Sequences sequence.allfonts=latin-1 -sequence.allfonts.Big5=chinese-big5,latin-1 -sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 -sequence.allfonts.EUC-KR=korean,latin-1 -sequence.allfonts.GB18030=chinese-gb18030,latin-1 -sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean +sequence.allfonts.GB18030=latin-1,umingcn,shanheisun,wqy-zenhei +sequence.allfonts.GB2312=latin-1,umingcn,shanheisun,wqy-zenhei +sequence.allfonts.GBK=latin-1,umingcn,shanheisun,wqy-zenhei +sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi +sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk +sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-zenhei +sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-zenhei +#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala +sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu + +# Exclusion Ranges + +exclusion.japanese-kochi=0390-03d6,2200-22ef,2701-27be +exclusion.japanese-sazanami=0390-03d6,2200-22ef,2701-27be +exclusion.japanese-vlgothic=0390-03d6,2200-22ef,2701-27be # Font File Names @@ -144,8 +291,58 @@ filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf -filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf -filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf -filename.AR_PL_ZenKai_Uni=/usr/share/fonts//truetype/arphic/ukai.ttf -filename.Baekmuk_Dotum=/usr/share/fonts/truetype/baekmuk/dotum.ttf +filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc +filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc +filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf + +filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf +filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf +filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf +filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf +filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf +filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf +filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf +filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf +filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf +filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf +filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf +filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf + +filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf +filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf +filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf +filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf +#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf +filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf +filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf +filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf +filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf + +filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf +filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf +filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf +filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf +filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf +filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf +filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf +filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf +filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf +filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf +filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf +filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf + +# AWT X11 font paths +awtfontpath.latin-1=/usr/share/fonts/X11/Type1 +awtfontpath.umingcn=/usr/share/fonts/truetype/arphic +awtfontpath.uminghk=/usr/share/fonts/truetype/arphic +awtfontpath.umingtw=/usr/share/fonts/truetype/arphic +awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic +awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy +awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi +awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami +awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic +awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk +awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties --- a/jdk/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties Wed Jul 05 17:09:51 2017 +0200 @@ -352,7 +352,7 @@ sequence.allfonts.Big5=latin-1,chinese-big5,dingbats,symbol -sequence.allfonts.Big5-HKSCS=latin-1,chinese-big5,chinese-hkscs,dingbats,symbol +sequence.allfonts.Big5-HKSCS-2001=latin-1,chinese-big5,chinese-hkscs,dingbats,symbol sequence.allfonts.windows-1251=cyrillic-cp1251,latin-1,dingbats,symbol diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/solaris/native/java/lang/java_props_md.c --- a/jdk/src/solaris/native/java/lang/java_props_md.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/solaris/native/java/lang/java_props_md.c Wed Jul 05 17:09:51 2017 +0200 @@ -337,22 +337,24 @@ std_encoding = "EUC-JP-LINUX"; } #else - /* For Solaris use customized vendor defined character - * customized EUC-JP converter - */ if (strcmp(p,"eucJP") == 0) { + /* For Solaris use customized vendor defined character + * customized EUC-JP converter + */ std_encoding = "eucJP-open"; - } -#endif -#ifndef __linux__ - /* - * Remap the encoding string to Big5_Solaris which augments - * the default converter for Solaris Big5 locales to include - * seven additional ideographic characters beyond those included - * in the Java "Big5" converter. - */ - if (strcmp(p, "Big5") == 0) { - std_encoding = "Big5_Solaris"; + } else if (strcmp(p, "Big5") == 0 || strcmp(p, "BIG5") == 0) { + /* + * Remap the encoding string to Big5_Solaris which augments + * the default converter for Solaris Big5 locales to include + * seven additional ideographic characters beyond those included + * in the Java "Big5" converter. + */ + std_encoding = "Big5_Solaris"; + } else if (strcmp(p, "Big5-HKSCS") == 0) { + /* + * Solaris uses HKSCS2001 + */ + std_encoding = "Big5-HKSCS-2001"; } #endif sprops.encoding = std_encoding; @@ -414,3 +416,9 @@ return &sprops; } + +jstring +GetStringPlatform(JNIEnv *env, nchar* cstr) +{ + return JNU_NewStringPlatform(env, cstr); +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c --- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Wed Jul 05 17:09:51 2017 +0200 @@ -1143,7 +1143,7 @@ jobject addr; int i; - if (ni_addrsID == NULL) { + if (ni_addrsID == NULL || ia_addressID == NULL) { jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); CHECK_NULL(c); ni_addrsID = (*env)->GetFieldID(env, c, "addrs", diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/windows/classes/sun/awt/windows/fontconfig.properties --- a/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties Wed Jul 05 17:09:51 2017 +0200 @@ -210,6 +210,12 @@ sequence.dialog.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb sequence.dialoginput.x-MS950-HKSCS=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb +sequence.serif.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb +sequence.sansserif.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb +sequence.monospaced.x-MS950-HKSCS-XP=chinese-ms950,alphabetic,chinese-hkscs,dingbats,symbol,chinese-ms950-extb +sequence.dialog.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb +sequence.dialoginput.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb + sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/windows/native/java/lang/ProcessImpl_md.c --- a/jdk/src/windows/native/java/lang/ProcessImpl_md.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/windows/native/java/lang/ProcessImpl_md.c Wed Jul 05 17:09:51 2017 +0200 @@ -145,11 +145,11 @@ HANDLE errWrite = INVALID_HANDLE_VALUE; SECURITY_ATTRIBUTES sa; PROCESS_INFORMATION pi; - STARTUPINFO si; - LPTSTR pcmd = NULL; - LPCTSTR pdir = NULL; - LPVOID penvBlock = NULL; - jlong *handles = NULL; + STARTUPINFOW si; + const jchar* pcmd = NULL; + const jchar* pdir = NULL; + const jchar* penvBlock = NULL; + jlong *handles = NULL; jlong ret = 0; OSVERSIONINFO ver; jboolean onNT = JNI_FALSE; @@ -161,22 +161,17 @@ onNT = JNI_TRUE; assert(cmd != NULL); - pcmd = (LPTSTR) JNU_GetStringPlatformChars(env, cmd, NULL); + pcmd = (*env)->GetStringChars(env, cmd, NULL); if (pcmd == NULL) goto Catch; if (dir != 0) { - pdir = (LPCTSTR) JNU_GetStringPlatformChars(env, dir, NULL); + pdir = (*env)->GetStringChars(env, dir, NULL); if (pdir == NULL) goto Catch; - pdir = (LPCTSTR) JVM_NativePath((char *)pdir); } - if (envBlock != NULL) { - penvBlock = onNT - ? (LPVOID) ((*env)->GetStringChars(env, envBlock, NULL)) - : (LPVOID) JNU_GetStringPlatformChars(env, envBlock, NULL); + penvBlock = ((*env)->GetStringChars(env, envBlock, NULL)); if (penvBlock == NULL) goto Catch; } - assert(stdHandles != NULL); handles = (*env)->GetLongArrayElements(env, stdHandles, NULL); if (handles == NULL) goto Catch; @@ -237,30 +232,17 @@ if (onNT) processFlag = CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT; else - processFlag = selectProcessFlag(env, cmd); - - /* Java and Windows are both pure Unicode systems at heart. - * Windows has both a legacy byte-based API and a 16-bit Unicode - * "W" API. The Right Thing here is to call CreateProcessW, since - * that will allow all process-related information like command - * line arguments to be passed properly to the child. We don't do - * that currently, since we would first have to have "W" versions - * of JVM_NativePath and perhaps other functions. In the - * meantime, we can call CreateProcess with the magic flag - * CREATE_UNICODE_ENVIRONMENT, which passes only the environment - * in "W" mode. We will fix this later. */ - - ret = CreateProcess(0, /* executable name */ - pcmd, /* command line */ - 0, /* process security attribute */ - 0, /* thread security attribute */ - TRUE, /* inherits system handles */ - processFlag, /* selected based on exe type */ - penvBlock, /* environment block */ - pdir, /* change to the new current directory */ - &si, /* (in) startup information */ - &pi); /* (out) process information */ - + processFlag = selectProcessFlag(env, cmd) | CREATE_UNICODE_ENVIRONMENT; + ret = CreateProcessW(0, /* executable name */ + (LPWSTR)pcmd, /* command line */ + 0, /* process security attribute */ + 0, /* thread security attribute */ + TRUE, /* inherits system handles */ + processFlag, /* selected based on exe type */ + (LPVOID)penvBlock,/* environment block */ + (LPCWSTR)pdir, /* change to the new current directory */ + &si, /* (in) startup information */ + &pi); /* (out) process information */ if (!ret) { win32Error(env, "CreateProcess"); goto Catch; @@ -276,18 +258,13 @@ closeSafely(errWrite); if (pcmd != NULL) - JNU_ReleaseStringPlatformChars(env, cmd, (char *) pcmd); + (*env)->ReleaseStringChars(env, cmd, pcmd); if (pdir != NULL) - JNU_ReleaseStringPlatformChars(env, dir, (char *) pdir); - if (penvBlock != NULL) { - if (onNT) - (*env)->ReleaseStringChars(env, envBlock, (jchar *) penvBlock); - else - JNU_ReleaseStringPlatformChars(env, dir, (char *) penvBlock); - } + (*env)->ReleaseStringChars(env, dir, pdir); + if (penvBlock != NULL) + (*env)->ReleaseStringChars(env, envBlock, penvBlock); if (handles != NULL) (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0); - return ret; Catch: diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/windows/native/java/lang/java_props_md.c --- a/jdk/src/windows/native/java/lang/java_props_md.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/windows/native/java/lang/java_props_md.c Wed Jul 05 17:09:51 2017 +0200 @@ -451,7 +451,7 @@ { char * ret = encoding_names[langIDMap[index].encoding]; - //Traditional Chinese Windows should use MS950_HKSCS as the + //Traditional Chinese Windows should use MS950_HKSCS_XP as the //default encoding, if HKSCS patch has been installed. // "old" MS950 0xfa41 -> u+e001 // "new" MS950 0xfa41 -> u+92db @@ -460,7 +460,7 @@ WCHAR unicodeChar; MultiByteToWideChar(CP_ACP, 0, mbChar, 2, &unicodeChar, 1); if (unicodeChar == 0x92db) { - ret = "MS950_HKSCS"; + ret = "MS950_HKSCS_XP"; } } else { //SimpChinese Windows should use GB18030 as the default @@ -513,14 +513,14 @@ /* * Code to figure out the user's home directory using the registry */ -static char * +static WCHAR* getHomeFromRegistry() { HKEY key; int rc; DWORD type; - char *p; - char path[MAX_PATH+1]; + WCHAR *p; + WCHAR path[MAX_PATH+1]; int size = MAX_PATH+1; rc = RegOpenKeyEx(HKEY_CURRENT_USER, SHELL_KEY, 0, KEY_READ, &key); @@ -530,18 +530,18 @@ } path[0] = 0; - rc = RegQueryValueEx(key, "Desktop", 0, &type, path, &size); + rc = RegQueryValueExW(key, L"Desktop", 0, &type, (LPBYTE)path, &size); if (rc != ERROR_SUCCESS || type != REG_SZ) { return NULL; } RegCloseKey(key); /* Get the parent of Desktop directory */ - p = strrchr(path, '\\'); + p = wcsrchr(path, L'\\'); if (p == NULL) { return NULL; } - *p = '\0'; - return strdup(path); + *p = L'\0'; + return _wcsdup(path); } /* @@ -550,16 +550,16 @@ typedef HRESULT (WINAPI *GetSpecialFolderType)(HWND, int, LPITEMIDLIST *); typedef BOOL (WINAPI *GetPathFromIDListType)(LPCITEMIDLIST, LPSTR); -char * +WCHAR* getHomeFromShell32() { - HMODULE lib = LoadLibrary("SHELL32.DLL"); + HMODULE lib = LoadLibraryW(L"SHELL32.DLL"); GetSpecialFolderType do_get_folder; GetPathFromIDListType do_get_path; HRESULT rc; LPITEMIDLIST item_list = 0; - char *p; - char path[MAX_PATH+1]; + WCHAR *p; + WCHAR path[MAX_PATH+1]; int size = MAX_PATH+1; if (lib == 0) { @@ -568,7 +568,7 @@ } do_get_folder = (GetSpecialFolderType)GetProcAddress(lib, "SHGetSpecialFolderLocation"); - do_get_path = (GetPathFromIDListType)GetProcAddress(lib, "SHGetPathFromIDListA"); + do_get_path = (GetPathFromIDListType)GetProcAddress(lib, "SHGetPathFromIDListW"); if (do_get_folder == 0 || do_get_path == 0) { // the library doesn't hold the right functions !!?? @@ -582,10 +582,10 @@ } path[0] = 0; - (*do_get_path)(item_list, path); + (*do_get_path)(item_list, (LPSTR)path); /* Get the parent of Desktop directory */ - p = strrchr(path, '\\'); + p = wcsrchr(path, L'\\'); if (p) { *p = 0; } @@ -598,8 +598,7 @@ * We also don't unload the SHELL32 DLL. We've paid the hit for loading * it and we may need it again later. */ - - return strdup(path); + return _wcsdup(path); } static boolean @@ -650,6 +649,8 @@ { static java_props_t sprops = {0}; + OSVERSIONINFOEX ver; + if (sprops.user_dir) { return &sprops; } @@ -659,10 +660,10 @@ /* tmp dir */ { - char tmpdir[MAX_PATH + 1]; + WCHAR tmpdir[MAX_PATH + 1]; /* we might want to check that this succeed */ - GetTempPath(MAX_PATH + 1, tmpdir); - sprops.tmp_dir = strdup(tmpdir); + GetTempPathW(MAX_PATH + 1, tmpdir); + sprops.tmp_dir = _wcsdup(tmpdir); } /* Printing properties */ @@ -672,14 +673,13 @@ sprops.graphics_env = "sun.awt.Win32GraphicsEnvironment"; { /* This is used only for debugging of font problems. */ - char *path = getenv("JAVA2D_FONTPATH"); - sprops.font_dir = (path != 0) ? strdup(path) : NULL; + WCHAR *path = _wgetenv(L"JAVA2D_FONTPATH"); + sprops.font_dir = (path != NULL) ? _wcsdup(path) : NULL; } /* OS properties */ { char buf[100]; - OSVERSIONINFOEX ver; SYSTEM_INFO si; PGNSI pGNSI; @@ -828,14 +828,14 @@ * 100 K of footprint. */ { - char *uname = getenv("USERNAME"); - if (uname != NULL && strlen(uname) > 0) { - sprops.user_name = strdup(uname); + WCHAR *uname = _wgetenv(L"USERNAME"); + if (uname != NULL && wcslen(uname) > 0) { + sprops.user_name = _wcsdup(uname); } else { - char buf[100]; + WCHAR buf[100]; int buflen = sizeof(buf); sprops.user_name = - GetUserName(buf, &buflen) ? strdup(buf) : "unknown"; + GetUserNameW(buf, &buflen) ? _wcsdup(buf) : L"unknown"; } } @@ -856,14 +856,13 @@ * On single-user Win95, user.home gets set to c:\windows. */ { - char *homep = getHomeFromRegistry(); + WCHAR *homep = getHomeFromRegistry(); if (homep == NULL) { homep = getHomeFromShell32(); - if (homep == NULL) { - homep = "C:\\"; - } + if (homep == NULL) + homep = L"C:\\"; } - sprops.user_home = homep; + sprops.user_home = _wcsdup(homep); } /* @@ -932,6 +931,17 @@ } else { sprops.sun_jnu_encoding = getEncodingInternal(index); } + if (langID == 0x0c04 && ver.dwMajorVersion == 6) { + // MS claims "Vista has built-in support for HKSCS-2004. + // All of the HKSCS-2004 characters have Unicode 4.1. + // PUA code point assignments". But what it really means + // is that the HKSCS-2004 is ONLY supported in Unicode. + // Test indicates the MS950 in its zh_HK locale is a + // "regular" MS950 which does not handle HKSCS-2004 at + // all. Set encoding to MS950_HKSCS. + sprops.encoding = "MS950_HKSCS"; + sprops.sun_jnu_encoding = "MS950_HKSCS"; + } } } @@ -950,9 +960,9 @@ /* Current directory */ { - char buf[MAX_PATH]; - GetCurrentDirectory(sizeof(buf), buf); - sprops.user_dir = strdup(buf); + WCHAR buf[MAX_PATH]; + GetCurrentDirectoryW(sizeof(buf), buf); + sprops.user_dir = _wcsdup(buf); } sprops.file_separator = "\\"; @@ -961,3 +971,9 @@ return &sprops; } + +jstring +GetStringPlatform(JNIEnv *env, nchar* wcstr) +{ + return (*env)->NewString(env, wcstr, wcslen(wcstr)); +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c --- a/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c Wed Jul 05 17:09:51 2017 +0200 @@ -1579,7 +1579,7 @@ jobject addr; int i; - if (ni_addrsID == NULL) { + if (ni_addrsID == NULL || ia_familyID == NULL) { jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); CHECK_NULL_RETURN (c, -1); ni_addrsID = (*env)->GetFieldID(env, c, "addrs", diff -r 482f63894bb1 -r 44158f6d3b94 jdk/src/windows/native/sun/windows/awt_Component.cpp --- a/jdk/src/windows/native/sun/windows/awt_Component.cpp Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -3707,8 +3707,7 @@ if (hIMC == NULL) { return; } - COMPOSITIONFORM cf = {CFS_POINT, {0, r.bottom}, NULL}; - // Place the composition window right below the client Window + COMPOSITIONFORM cf = {CFS_DEFAULT, {0, 0}, {0, 0, 0, 0}}; ImmSetCompositionWindow(hIMC, &cf); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/Makefile --- a/jdk/test/Makefile Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/Makefile Wed Jul 05 17:09:51 2017 +0200 @@ -70,6 +70,10 @@ ifeq ($(UNAME_S), Linux) OS_NAME = linux OS_ARCH := $(shell $(UNAME) -m) + # Check for unknown arch, try uname -p if uname -m says unknown + ifeq ($(OS_ARCH),unknown) + OS_ARCH := $(shell $(UNAME) -p) + endif OS_VERSION := $(shell $(UNAME) -r) endif ifndef OS_NAME @@ -93,16 +97,26 @@ # Only want major and minor numbers from os version OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2) -# Try and use names i586, x64, and ia64 consistently -OS_ARCH:=$(subst X64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst AMD64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst amd64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst x86_64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst EM64T,x64,$(OS_ARCH)) -OS_ARCH:=$(subst em64t,x64,$(OS_ARCH)) -OS_ARCH:=$(subst intel64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst Intel64,x64,$(OS_ARCH)) -OS_ARCH:=$(subst INTEL64,x64,$(OS_ARCH)) +# Name to use for x86_64 arch (historically amd64, but should change someday) +OS_ARCH_X64_NAME:=amd64 +#OS_ARCH_X64_NAME:=x64 + +# Alternate arch names (in case this arch is known by a second name) +# PROBLEM_LISTS may use either name. +OS_ARCH2-amd64:=x64 +#OS_ARCH2-x64:=amd64 + +# Try and use the arch names consistently +OS_ARCH:=$(subst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(subst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) OS_ARCH:=$(subst IA64,ia64,$(OS_ARCH)) OS_ARCH:=$(subst X86,i586,$(OS_ARCH)) OS_ARCH:=$(subst x86,i586,$(OS_ARCH)) @@ -110,17 +124,32 @@ OS_ARCH:=$(subst i486,i586,$(OS_ARCH)) OS_ARCH:=$(subst i686,i586,$(OS_ARCH)) -# Check for ARCH_DATA_MODEL, adjust OS_ARCH accordingly +# Default ARCH_DATA_MODEL settings +ARCH_DATA_MODEL-i586 = 32 +ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64 +ARCH_DATA_MODEL-ia64 = 64 +ARCH_DATA_MODEL-sparc = 32 +ARCH_DATA_MODEL-sparcv9 = 64 + +# If ARCH_DATA_MODEL is not defined, try and pick a reasonable default +ifndef ARCH_DATA_MODEL + ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH)) +endif ifndef ARCH_DATA_MODEL ARCH_DATA_MODEL=32 endif + +# Platform directory name +PLATFORM_OS = $(OS_NAME)-$(OS_ARCH) + +# Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris ARCH_DATA_MODEL_ERROR= \ - ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(OS_NAME)-$(ARCH) + ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS) ifeq ($(ARCH_DATA_MODEL),64) - ifeq ($(OS_NAME)-$(OS_ARCH),solaris-i586) - OS_ARCH=x64 + ifeq ($(PLATFORM_OS),solaris-i586) + OS_ARCH=$(OS_ARCH_X64_NAME) endif - ifeq ($(OS_NAME)-$(OS_ARCH),solaris-sparc) + ifeq ($(PLATFORM_OS),solaris-sparc) OS_ARCH=sparcv9 endif ifeq ($(OS_ARCH),i586) @@ -131,7 +160,7 @@ endif else ifeq ($(ARCH_DATA_MODEL),32) - ifeq ($(OS_ARCH),x64) + ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME)) x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") endif ifeq ($(OS_ARCH),ia64) @@ -145,6 +174,12 @@ endif endif +# Alternate OS_ARCH name (defaults to OS_ARCH) +OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH)) +ifeq ($(OS_ARCH2),) + OS_ARCH2:=$(OS_ARCH) +endif + # Root of this test area (important to use full paths in some places) TEST_ROOT := $(shell $(PWD)) @@ -152,21 +187,21 @@ ifdef ALT_OUTPUTDIR ABS_OUTPUTDIR = $(ALT_OUTPUTDIR) else - ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(OS_NAME)-$(OS_ARCH) + ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS) endif -ABS_BUILD_ROOT = $(ABS_OUTPUTDIR) -ABS_TEST_OUTPUT_DIR := $(ABS_BUILD_ROOT)/testoutput/$(UNIQUE_DIR) +ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR) +ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR) # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test) ifndef PRODUCT_HOME # Try to use j2sdk-image if it exists - ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image - PRODUCT_HOME := \ - $(shell \ - if [ -d $(ABS_JDK_IMAGE) ] ; then \ - $(ECHO) "$(ABS_JDK_IMAGE)"; \ - else \ - $(ECHO) "$(ABS_BUILD_ROOT)"; \ + ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image + PRODUCT_HOME := \ + $(shell \ + if [ -d $(ABS_JDK_IMAGE) ] ; then \ + $(ECHO) "$(ABS_JDK_IMAGE)"; \ + else \ + $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \ fi) PRODUCT_HOME := $(PRODUCT_HOME) endif @@ -325,8 +360,10 @@ @$(RM) $@ $@.temp1 $@.temp2 @(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all' ) ;\ ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH)' ) ;\ + ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)' ) ;\ ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\ ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)' ) ;\ + ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)' ) ;\ ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all' ) ;\ ($(ECHO) "#") ;\ ) | $(SED) -e 's@^[\ ]*@@' \ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/ProblemList.txt --- a/jdk/test/ProblemList.txt Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/ProblemList.txt Wed Jul 05 17:09:51 2017 +0200 @@ -596,10 +596,6 @@ # Interrupted or IO exception, maybe writing to non-unique named file? com/sun/net/httpserver/bugs/B6373555.java generic-all -# Dies on pretty much all platforms when run with -ea -esa, Assertion error -java/net/CookieHandler/TestHttpCookie.java generic-all -java/net/URLClassLoader/closetest/CloseTest.java generic-all - # Fails on OpenSolaris, BindException unexpected java/net/BindException/Test.java generic-all @@ -647,9 +643,6 @@ # Linux i586, fails with unexpected output java/net/MulticastSocket/NoLoopbackPackets.java linux-i586 -# Times out on windows x64, fails with samevm on solaris 11 i586 -java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java generic-all - # Address already in use java/net/DatagramSocket/DatagramTimeout.java generic-all @@ -661,7 +654,6 @@ java/net/Socket/AccurateTimeout.java generic-all java/net/Socket/asyncClose/BrokenPipe.java generic-all java/net/Socket/CloseAvailable.java generic-all -java/net/Socket/FDClose.java generic-all # Linux X64 address already in use, samevm issues java/net/Socket/LingerTest.java generic-all @@ -692,8 +684,6 @@ java/net/SocketInputStream/SocketTimeout.java generic-all # Linux i586, address already in use or timeout, samevm issues -java/net/URLConnection/B5052093.java generic-all -java/net/URLConnection/contentHandler/UserContentHandler.java generic-all java/net/URLConnection/DisconnectAfterEOF.java generic-all java/net/URLConnection/HandleContentTypeWithAttrs.java generic-all java/net/URLConnection/Responses.java generic-all @@ -701,12 +691,9 @@ java/net/URLConnection/ZeroContentLength.java generic-all # Solaris 11 i586 fails with samevm, not sure why -java/net/HttpURLConnection/HttpResponseCode.java generic-all java/net/ResponseCache/B6181108.java generic-all java/net/ResponseCache/ResponseCacheTest.java generic-all java/net/URL/GetContent.java generic-all -java/net/URL/TestIPv6Addresses.java generic-all -java/net/URLClassLoader/HttpTest.java generic-all java/net/URLConnection/HttpContinueStackOverflow.java generic-all java/net/URLConnection/Redirect307Test.java generic-all java/net/URLConnection/RedirectLimit.java generic-all @@ -735,9 +722,6 @@ # Connection refused, windows samevm sun/net/www/protocol/http/DigestTest.java generic-all -# Fails on Fedora 9 32bit & 64bit & Solaris 10, wrong proxy for http://localhost/index.html -java/net/ProxySelector/B6737819.java generic-all - ############################################################################ # jdk_nio @@ -745,6 +729,9 @@ # Suspect many of these tests auffer from using fixed ports, no concrete # evidence. +# Failing on Solaris x86 and Linux x86, filed 6934585 +java/nio/channels/AsynchronousSocketChannel/Basic.java generic-all + # Occasionally Failing with java.lang.AssertionError on Windows X64 # at sun.nio.ch.PendingIoCache.clearPendingIoMap(PendingIoCache.java:144) #java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java windows-all @@ -948,6 +935,15 @@ # jdk_security +# Failing on Solaris i586, 3/9/2010, not a -samevm issue (jdk_security3) +sun/security/pkcs11/Secmod/AddPrivateKey.java solaris-i586 +sun/security/pkcs11/ec/ReadCertificates.java solaris-i586 +sun/security/pkcs11/ec/ReadPKCS12.java solaris-i586 +sun/security/pkcs11/ec/TestCurves.java solaris-i586 +sun/security/pkcs11/ec/TestECDSA.java solaris-i586 +sun/security/pkcs11/ec/TestECGenSpec.java solaris-i586 +sun/security/pkcs11/ec/TestKeyFactory.java solaris-i586 + # Unknown problem, could be a jtreg -samevm issue? # Error while cleaning up threads after test java/security/Security/SynchronizedAccess.java generic-all diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/beans/EventHandler/Test6277246.java --- a/jdk/test/java/beans/EventHandler/Test6277246.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/beans/EventHandler/Test6277246.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,10 +49,10 @@ catch (NoSuchMethodException exception) { throw new Error("unexpected exception", exception); } + catch (SecurityException exception) { + // expected security exception + } catch (RuntimeException exception) { - if (exception.getCause() instanceof SecurityException) { - return; // expected security exception - } throw new Error("unexpected exception", exception); } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/beans/EventHandler/Test6277266.java --- a/jdk/test/java/beans/EventHandler/Test6277266.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/beans/EventHandler/Test6277266.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,7 +51,7 @@ ); throw new Error("SecurityException expected"); } catch (InvocationTargetException exception) { - if (exception.getCause().getCause() instanceof SecurityException){ + if (exception.getCause() instanceof SecurityException){ return; // expected security exception } throw new Error("unexpected exception", exception); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/beans/Statement/Test6707226.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/beans/Statement/Test6707226.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,45 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6707226 + * @summary Tests the value updating in Expression + * @author Sergey Malenkov + */ + +import java.beans.Expression; + +public class Test6707226 { + public static void main(String[] args) throws Exception { + Object value = new Object(); + + Expression expression = new Expression(value, Object.class, "new", null); + if (!value.equals(expression.getValue())) + throw new Error("the value is updated unexpectedly"); + + expression.execute(); + if (value.equals(expression.getValue())) + throw new Error("the value is not updated as expected"); + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/lang/ProcessBuilder/Basic.java --- a/jdk/test/java/lang/ProcessBuilder/Basic.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/lang/ProcessBuilder/Basic.java Wed Jul 05 17:09:51 2017 +0200 @@ -26,6 +26,7 @@ * @bug 4199068 4738465 4937983 4930681 4926230 4931433 4932663 4986689 * 5026830 5023243 5070673 4052517 4811767 6192449 6397034 6413313 * 6464154 6523983 6206031 4960438 6631352 6631966 6850957 6850958 + * 4947220 * @summary Basic tests for Process and Environment Variable code * @run main/othervm Basic * @author Martin Buchholz @@ -1456,13 +1457,14 @@ new File(System.getProperty("user.dir")).getCanonicalPath(); String[] sdirs = new String[] {".", "..", "/", "/bin", - "C:", "c:", "C:/", "c:\\", "\\", "\\bin" }; + "C:", "c:", "C:/", "c:\\", "\\", "\\bin", + "c:\\windows ", "c:\\Program Files", "c:\\Program Files\\" }; for (String sdir : sdirs) { File dir = new File(sdir); if (! (dir.isDirectory() && dir.exists())) continue; out.println("Testing directory " + dir); - dir = new File(dir.getCanonicalPath()); + //dir = new File(dir.getCanonicalPath()); ProcessBuilder pb = new ProcessBuilder(); equal(pb.directory(), null); @@ -1470,7 +1472,7 @@ pb.directory(dir); equal(pb.directory(), dir); - equal(pwdInChild(pb), dir.toString()); + equal(pwdInChild(pb), dir.getCanonicalPath()); pb.directory(null); equal(pb.directory(), null); @@ -1481,6 +1483,27 @@ } catch (Throwable t) { unexpected(t); } //---------------------------------------------------------------- + // Working directory with Unicode in child + //---------------------------------------------------------------- + try { + if (UnicodeOS.is()) { + File dir = new File(System.getProperty("test.dir", "."), + "ProcessBuilderDir\u4e00\u4e02"); + try { + if (!dir.exists()) + dir.mkdir(); + out.println("Testing Unicode directory:" + dir); + ProcessBuilder pb = new ProcessBuilder(); + pb.directory(dir); + equal(pwdInChild(pb), dir.getCanonicalPath()); + } finally { + if (dir.exists()) + dir.delete(); + } + } + } catch (Throwable t) { unexpected(t); } + + //---------------------------------------------------------------- // OOME in child allocating maximally sized array // Test for hotspot/jvmti bug 6850957 //---------------------------------------------------------------- diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/Authenticator/Deadlock.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/net/Authenticator/Deadlock.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,160 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test + * @bug 6648001 + * @run main/othervm/timeout=20 -ea:sun.net.www.protocol.http.AuthenticationInfo -Dhttp.auth.serializeRequests=true Deadlock + * @summary cancelling HTTP authentication causes deadlock + */ + +import java.util.concurrent.Executors; +import java.util.concurrent.ExecutorService; +import java.io.InputStream; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetSocketAddress; +import java.net.PasswordAuthentication; +import java.net.URL; +import com.sun.net.httpserver.BasicAuthenticator; +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpContext; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpPrincipal; +import com.sun.net.httpserver.HttpServer; + +public class Deadlock { + + public static void main (String[] args) throws Exception { + Handler handler = new Handler(); + InetSocketAddress addr = new InetSocketAddress (0); + HttpServer server = HttpServer.create(addr, 0); + HttpContext ctx = server.createContext("/test", handler); + BasicAuthenticator a = new BasicAuthenticator("foobar@test.realm") { + @Override + public boolean checkCredentials (String username, String pw) { + return "fred".equals(username) && pw.charAt(0) == 'x'; + } + }; + + ctx.setAuthenticator(a); + ExecutorService executor = Executors.newCachedThreadPool(); + server.setExecutor(executor); + server.start (); + java.net.Authenticator.setDefault(new MyAuthenticator()); + + System.out.print("Deadlock: " ); + for (int i=0; i<2; i++) { + Runner t = new Runner(server, i); + t.start(); + t.join(); + } + server.stop(2); + executor.shutdown(); + if (error) { + throw new RuntimeException("test failed error"); + } + + if (count != 2) { + throw new RuntimeException("test failed count = " + count); + } + System.out.println("OK"); + + } + + static class Runner extends Thread { + HttpServer server; + int i; + Runner(HttpServer s, int i) { + server = s; + this.i = i; + } + + @Override + public void run() { + URL url; + HttpURLConnection urlc; + try { + url = new URL("http://localhost:"+server.getAddress().getPort()+"/test/foo.html"); + urlc = (HttpURLConnection)url.openConnection (); + } catch (IOException e) { + error = true; + return; + } + InputStream is = null; + try { + is = urlc.getInputStream(); + while (is.read()!= -1) {} + } catch (IOException e) { + if (i == 1) error = true; + } finally { + if (is != null) try { is.close(); } catch (IOException e) {} + } + } + } + + public static boolean error = false; + public static int count = 0; + + static class MyAuthenticator extends java.net.Authenticator { + @Override + public PasswordAuthentication getPasswordAuthentication() { + PasswordAuthentication pw; + if (!getRequestingPrompt().equals("foobar@test.realm")) { + Deadlock.error = true; + } + if (count == 0) { + pw = null; + } else { + pw = new PasswordAuthentication("fred", "xyz".toCharArray()); + } + count++; + return pw; + } + } + + static class Handler implements HttpHandler { + int invocation = 1; + + @Override + public void handle (HttpExchange t) + throws IOException + { + InputStream is = t.getRequestBody(); + Headers map = t.getRequestHeaders(); + Headers rmap = t.getResponseHeaders(); + while (is.read() != -1); + is.close(); + t.sendResponseHeaders(200, -1); + HttpPrincipal p = t.getPrincipal(); + if (!p.getUsername().equals("fred")) { + error = true; + } + if (!p.getRealm().equals("foobar@test.realm")) { + error = true; + } + t.close(); + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/CookieHandler/CookieHandlerTest.java --- a/jdk/test/java/net/CookieHandler/CookieHandlerTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/CookieHandler/CookieHandlerTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -24,9 +24,13 @@ /* @test * @summary Unit test for java.net.CookieHandler * @bug 4696506 + * @run main/othervm CookieHandlerTest * @author Yingxian Wang */ +// Run in othervm since a default cookier handler is set and this +// can effect other HTTP related tests. + import java.net.*; import java.util.*; import java.io.*; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/CookieHandler/TestHttpCookie.java --- a/jdk/test/java/net/CookieHandler/TestHttpCookie.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/CookieHandler/TestHttpCookie.java Wed Jul 05 17:09:51 2017 +0200 @@ -48,7 +48,6 @@ } TestHttpCookie(String cHeader) { - assert cHeader != null; this.cHeader = cHeader; try { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/MulticastSocket/NoLoopbackPackets.java --- a/jdk/test/java/net/MulticastSocket/NoLoopbackPackets.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/MulticastSocket/NoLoopbackPackets.java Wed Jul 05 17:09:51 2017 +0200 @@ -29,9 +29,7 @@ import java.util.*; import java.net.*; - public class NoLoopbackPackets { - private static int PORT = 9001; private static String osname; static boolean isWindows() { @@ -68,40 +66,47 @@ return; } - // we will send packets to three multicast groups :- - // 224.1.1.1, ::ffff:224.1.1.2, and ff02::1:1 - // - List groups = new ArrayList(); - groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), PORT)); - groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), PORT)); - groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), PORT)); + MulticastSocket msock = null; + List failedGroups = new ArrayList(); + try { + msock = new MulticastSocket(); + int port = msock.getLocalPort(); - Thread sender = new Thread(new Sender(groups)); - sender.setDaemon(true); // we want sender to stop when main thread exits - sender.start(); + // we will send packets to three multicast groups :- + // 224.1.1.1, ::ffff:224.1.1.2, and ff02::1:1 + // + List groups = new ArrayList(); + groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), port)); + groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), port)); + groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), port)); + + Thread sender = new Thread(new Sender(groups)); + sender.setDaemon(true); // we want sender to stop when main thread exits + sender.start(); - // Now try to receive multicast packets. we should not see any of them - // since we disable loopback mode. - // - MulticastSocket msock = new MulticastSocket(PORT); - msock.setSoTimeout(5000); // 5 seconds + // Now try to receive multicast packets. we should not see any of them + // since we disable loopback mode. + // + msock.setSoTimeout(5000); // 5 seconds + + byte[] buf = new byte[1024]; + DatagramPacket packet = new DatagramPacket(buf, 0, buf.length); + for (SocketAddress group : groups) { + msock.joinGroup(group, null); - byte[] buf = new byte[1024]; - DatagramPacket packet = new DatagramPacket(buf, 0, buf.length); - List failedGroups = new ArrayList(); - for (SocketAddress group : groups) { - msock.joinGroup(group, null); + try { + msock.receive(packet); - try { - msock.receive(packet); + // it is an error if we receive something + failedGroups.add(group); + } catch (SocketTimeoutException e) { + // we expect this + } - // it is an error if we receive something - failedGroups.add(group); - } catch (SocketTimeoutException e) { - // we expect this + msock.leaveGroup(group, null); } - - msock.leaveGroup(group, null); + } finally { + if (msock != null) try { msock.close(); } catch (Exception e) {} } if (failedGroups.size() > 0) { @@ -111,36 +116,36 @@ throw new RuntimeException("test failed."); } } -} + + static class Sender implements Runnable { + private List sendToGroups; -class Sender implements Runnable { - private List sendToGroups; - - public Sender(List groups) { - sendToGroups = groups; - } + public Sender(List groups) { + sendToGroups = groups; + } - public void run() { - byte[] buf = "hello world".getBytes(); - List packets = new ArrayList(); + public void run() { + byte[] buf = "hello world".getBytes(); + List packets = new ArrayList(); - try { - for (SocketAddress group : sendToGroups) { - DatagramPacket packet = new DatagramPacket(buf, buf.length, group); - packets.add(packet); - } - - MulticastSocket msock = new MulticastSocket(); - msock.setLoopbackMode(true); // disable loopback mode - for (;;) { - for (DatagramPacket packet : packets) { - msock.send(packet); + try { + for (SocketAddress group : sendToGroups) { + DatagramPacket packet = new DatagramPacket(buf, buf.length, group); + packets.add(packet); } - Thread.currentThread().sleep(1000); // 1 second + MulticastSocket msock = new MulticastSocket(); + msock.setLoopbackMode(true); // disable loopback mode + for (;;) { + for (DatagramPacket packet : packets) { + msock.send(packet); + } + + Thread.sleep(1000); // 1 second + } + } catch (Exception e) { + throw new RuntimeException(e); } - } catch (Exception e) { - throw new RuntimeException(e); } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ProxySelector/B6737819.java --- a/jdk/test/java/net/ProxySelector/B6737819.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ProxySelector/B6737819.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,9 +23,15 @@ /* * @test * @bug 6737819 + * @run main/othervm B6737819 * @summary sun.misc.net.DefaultProxySelector doesn't use proxy setting to localhost */ +/* Run in othervm mode since the test sets HTTP proxy system properties that + * are read once and cached by the protocol handler. A previous test using the + * HTTP handler may run and these system properties may be ignored for this test. + */ + import java.net.ProxySelector; import java.net.Proxy; import java.net.URI; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ResponseCache/ResponseCacheTest.java --- a/jdk/test/java/net/ResponseCache/ResponseCacheTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ResponseCache/ResponseCacheTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -150,10 +150,14 @@ } } public static void main(String args[]) throws Exception { - ResponseCache.setDefault(new MyResponseCache()); - FNPrefix = System.getProperty("test.src", ".")+"/"; - OutFNPrefix = System.getProperty("test.scratch", ".")+"/"; - new ResponseCacheTest(); + try { + ResponseCache.setDefault(new MyResponseCache()); + FNPrefix = System.getProperty("test.src", ".")+"/"; + OutFNPrefix = System.getProperty("test.scratch", ".")+"/"; + new ResponseCacheTest(); + } finally{ + ResponseCache.setDefault(null); + } } static class MyResponseCache extends ResponseCache { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ResponseCache/getResponseCode.java --- a/jdk/test/java/net/ResponseCache/getResponseCode.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ResponseCache/getResponseCode.java Wed Jul 05 17:09:51 2017 +0200 @@ -30,8 +30,7 @@ import java.net.*; import java.util.*; import java.io.*; -import java.nio.*; -import sun.net.www.ParseUtil; + /** * Request should get serviced by the cache handler. Response get @@ -52,9 +51,13 @@ } } public static void main(String args[]) throws Exception { - ResponseCache.setDefault(new MyResponseCache()); - FNPrefix = System.getProperty("test.src", ".")+"/"; - new getResponseCode(); + try { + ResponseCache.setDefault(new MyResponseCache()); + FNPrefix = System.getProperty("test.src", ".")+"/"; + new getResponseCode(); + } finally{ + ResponseCache.setDefault(null); + } } static class MyResponseCache extends ResponseCache { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java --- a/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java Wed Jul 05 17:09:51 2017 +0200 @@ -22,17 +22,16 @@ */ /* - * @test - * @summary configuring unconnected Socket before passing to implAccept can cause fd leak - * @bug 6368984 - * @author Edward Wang + * Test run from script, AcceptCauseFileDescriptorLeak.sh + * author Edward Wang */ -import java.io.*; -import java.net.*; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; public class AcceptCauseFileDescriptorLeak { - private static final int REPS = 1000; + private static final int REPS = 2048; public static void main(String[] args) throws Exception { final ServerSocket ss = new ServerSocket(0) { @@ -60,31 +59,5 @@ } ss.close(); t.join(); - - // - // The threshold 20 below is a little arbitrary. The point here is that - // the remaining open file descriptors should be constant independent - // of REPS. - // - if (countOpenFD() > 20) { - throw new RuntimeException("File descriptor leak detected."); - } - } - - - /* - * Actually, this approach to count open file descriptors only - * works for Solaris/Linux. On Windows platform, this method - * will simply return zero. So the test will always be passed - * on Windows, too. - */ - private static int countOpenFD() { - File dirOfFD = new File("/proc/self/fd"); - File[] fds = dirOfFD.listFiles(); - - if (fds != null) - return fds.length; - else - return 0; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.sh Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,48 @@ +# +# Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# @test +# @bug 6368984 +# @summary configuring unconnected Socket before passing to implAccept can cause fd leak +# @build AcceptCauseFileDescriptorLeak +# @run shell AcceptCauseFileDescriptorLeak.sh + +OS=`uname -s` +case "$OS" in + Windows_* | CYGWIN* ) + echo "ulimit not on Windows" + exit 0 + ;; + * ) + CLASSPATH=${TESTCLASSES}:${TESTSRC} + ;; +esac +export CLASSPATH + +# hard limit needs to be less than 1024 for this bug +NOFILES=`ulimit -n -H` +if [ "$NOFILES" = "unlimited" ] || [ $NOFILES -ge 1024 ]; then + ulimit -n 1024 +fi + +${TESTJAVA}/bin/java AcceptCauseFileDescriptorLeak diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/Socket/FDClose.java --- a/jdk/test/java/net/Socket/FDClose.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* - * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/** - * @test - * @bug 4152799 - * @summary test to see if interrupting a socket accept closes fd0 - */ -import java.net.*; -import java.io.*; -import java.util.*; - -public class FDClose { - - static boolean isServerReady = false; - - public static void main(String[] args) throws Exception { - - Thread me = Thread.currentThread(); - - // Put a thread waiting on SocketServer.Accept - AReader test = new AReader(); - Thread readerThread = new Thread(test); - readerThread.start(); - - // wait for the server socket to be ready - while (!isServerReady) { - me.sleep(100); - } - - // Interrupt the waiting thread - readerThread.interrupt(); - - // Wait another moment - me.sleep(100); - - // Check to see if fd0 is closed - System.in.available(); - } - - public static class AReader implements Runnable { - public void run() { - try { - ServerSocket sock = new ServerSocket(0); - isServerReady = true; - sock.accept(); - } catch (Exception e) { - } - } - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/Socket/SocksConnectTimeout.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/net/Socket/SocksConnectTimeout.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,132 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6223635 + * @summary Code hangs at connect call even when Timeout is specified + */ + +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.Socket; +import java.net.ServerSocket; +import java.net.SocketTimeoutException; +import java.io.IOException; +import java.io.Closeable; +import java.util.concurrent.Phaser; +import java.util.concurrent.TimeUnit; + +public class SocksConnectTimeout { + static ServerSocket serverSocket; + static final boolean debug = true; + static final Phaser startPhaser = new Phaser(2); + static final Phaser finishPhaser = new Phaser(2); + static int failed, passed; + + public static void main(String[] args) { + try { + serverSocket = new ServerSocket(0); + + (new Thread() { + @Override + public void run() { serve(); } + }).start(); + + Proxy socksProxy = new Proxy(Proxy.Type.SOCKS, + new InetSocketAddress(InetAddress.getLocalHost(), serverSocket.getLocalPort())); + + test(socksProxy); + } catch (IOException e) { + unexpected(e); + } finally { + close(serverSocket); + + if (failed > 0) + throw new RuntimeException("Test Failed: passed:" + passed + ", failed:" + failed); + } + } + + static void test(Proxy proxy) { + startPhaser.arriveAndAwaitAdvance(); + Socket socket = null; + try { + socket = new Socket(proxy); + connectWithTimeout(socket); + failed("connected successfully!"); + } catch (SocketTimeoutException socketTimeout) { + debug("Passed: Received: " + socketTimeout); + passed(); + } catch (Exception exception) { + failed("Connect timeout test failed", exception); + } finally { + finishPhaser.arriveAndAwaitAdvance(); + close(socket); + } + } + + static void connectWithTimeout(Socket socket) throws IOException { + socket.connect(new InetSocketAddress(InetAddress.getLocalHost(), 1234), 500); + } + + static void serve() { + Socket client = null; + try { + startPhaser.arriveAndAwaitAdvance(); + client = serverSocket.accept(); + finishPhaser.awaitAdvanceInterruptibly(finishPhaser.arrive(), 5, TimeUnit.SECONDS); + } catch (Exception e) { + unexpected(e); + } finally { + close(client); + } + } + + static void debug(String message) { + if (debug) + System.out.println(message); + } + + static void unexpected(Exception e ) { + System.out.println("Unexcepted Exception: " + e); + } + + static void close(Closeable closeable) { + if (closeable != null) try { closeable.close(); } catch (IOException e) {unexpected(e);} + } + + static void failed(String message) { + System.out.println(message); + failed++; + } + + static void failed(String message, Exception e) { + System.out.println(message); + System.out.println(e); + failed++; + } + + static void passed() { passed++; }; + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/URL/TestIPv6Addresses.java --- a/jdk/test/java/net/URL/TestIPv6Addresses.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/URL/TestIPv6Addresses.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,8 +23,12 @@ /* @test * @bug 4451522 4460484 + * @run main/othervm TestIPv6Addresses * @summary URI and URL getHost() methods don't comform to RFC 2732 */ + +// Run in othervm because the tests sets a SecurityManager + import java.net.*; public class TestIPv6Addresses { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/URLClassLoader/HttpTest.java --- a/jdk/test/java/net/URLClassLoader/HttpTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/URLClassLoader/HttpTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -56,9 +56,9 @@ } public void run() { + InputStream in = null; try { - - InputStream in = s.getInputStream(); + in = s.getInputStream(); for (;;) { // read entire request from client @@ -111,6 +111,9 @@ } // for } catch (Exception e) { + unexpected(e); + } finally { + if (in != null) { try {in.close(); } catch(IOException e) {unexpected(e);} } } } } @@ -131,6 +134,11 @@ } } + void unexpected(Exception e) { + System.out.println(e); + e.printStackTrace(); + } + public static HttpServer create() throws Exception { if (svr != null) return svr; @@ -211,6 +219,7 @@ // one GET request svr.counters().reset(); InputStream in = cl.getResourceAsStream("foo2.gif"); + in.close(); System.out.println(svr.counters()); if (svr.counters().getCount() > 1) { failed = true; diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/URLClassLoader/closetest/CloseTest.java --- a/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -34,7 +34,6 @@ import java.io.*; import java.net.*; import java.lang.reflect.*; -import java.util.concurrent.*; import com.sun.net.httpserver.*; public class CloseTest { @@ -107,7 +106,6 @@ } else { copyFile (new File (src, f), new File (dst, f)); } - assert false; } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/URLConnection/B5052093.java --- a/jdk/test/java/net/URLConnection/B5052093.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/URLConnection/B5052093.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,12 +1,10 @@ /* - * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -66,17 +64,29 @@ public static void main(String[] args) throws Exception { server = new HttpServer(new B5052093(), 1, 10, 0); - URL url = new URL("http://localhost:"+server.getLocalPort()+"/foo"); - URLConnection conn = url.openConnection(); - int i = conn.getContentLength(); - long l = conn.getContentLengthLong(); - if (i != -1 || l != testSize) - throw new RuntimeException("Wrong content-length from http"); + try { + URL url = new URL("http://localhost:"+server.getLocalPort()+"/foo"); + URLConnection conn = url.openConnection(); + int i = conn.getContentLength(); + long l = conn.getContentLengthLong(); + if (i != -1 || l != testSize) { + System.out.println("conn.getContentLength = " + i); + System.out.println("conn.getContentLengthLong = " + l); + System.out.println("testSize = " + testSize); + throw new RuntimeException("Wrong content-length from http"); + } - URLConnection fu = new LargeFileURLConnection(new LargeFile()); - i = fu.getContentLength(); - l = fu.getContentLengthLong(); - if (i != -1 || l != testSize) - throw new RuntimeException("Wrong content-length from file"); + URLConnection fu = new LargeFileURLConnection(new LargeFile()); + i = fu.getContentLength(); + l = fu.getContentLengthLong(); + if (i != -1 || l != testSize) { + System.out.println("fu.getContentLength = " + i); + System.out.println("fu.getContentLengthLong = " + l); + System.out.println("testSize = " + testSize); + throw new RuntimeException("Wrong content-length from file"); + } + } finally { + server.terminate(); + } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/URLConnection/contentHandler/UserContentHandler.java --- a/jdk/test/java/net/URLConnection/contentHandler/UserContentHandler.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/URLConnection/contentHandler/UserContentHandler.java Wed Jul 05 17:09:51 2017 +0200 @@ -25,8 +25,16 @@ * @bug 4191147 * @summary 1.2beta4 does not load user defined content handlers * @build UserContentHandler - * @run main UserContentHandler + * @run main/othervm UserContentHandler */ + +/* Run in othervm mode since the test sets a system property, java.content.handler.pkgs, + * that prepends a specific package prefix defining a text/plain content + * handler. If other URLConnection tests run before this one they might trigger + * the Sun implementation text/plain content handler in sun.net.www.content + * to be loaded and cached, this will break this test. + */ + import java.net.*; import java.io.*; import java.util.*; @@ -55,7 +63,7 @@ // don't close the connection immediately as otherwise // the http headers may not have been received and the // http client will re-connect. - Thread.currentThread().sleep(2000); + Thread.sleep(2000); s.close(); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ipv6tests/TcpTest.java --- a/jdk/test/java/net/ipv6tests/TcpTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ipv6tests/TcpTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -47,9 +47,11 @@ try { ia4any = InetAddress.getByName ("0.0.0.0"); ia6any = InetAddress.getByName ("::0"); - int scope = ia6addr.getScopeId(); - if (scope != 0) { - ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6%"+scope); + if (ia6addr != null) { + int scope = ia6addr.getScopeId(); + if (scope != 0) { + ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6%"+scope); + } } else { ia6bad = InetAddress.getByName ("fe80::1:2:3:4:5:6"); } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/net/ipv6tests/Tests.java --- a/jdk/test/java/net/ipv6tests/Tests.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/net/ipv6tests/Tests.java Wed Jul 05 17:09:51 2017 +0200 @@ -38,12 +38,25 @@ OutputStream o1 = s1.getOutputStream(); OutputStream o2 = s2.getOutputStream(); - simpleWrite (o1, 100); - simpleWrite (o2, 200); + startSimpleWriter("SimpleWriter-1", o1, 100); + startSimpleWriter("SimpleWriter-2", o2, 200); simpleRead (i2, 100); simpleRead (i1, 200); } + static void startSimpleWriter(String threadName, final OutputStream os, final int start) { + (new Thread(new Runnable() { + public void run() { + try { simpleWrite(os, start); } + catch (Exception e) {unexpected(e); } + }}, threadName)).start(); + } + + static void unexpected(Exception e ) { + System.out.println("Unexcepted Exception: " + e); + e.printStackTrace(); + } + /** * Send a packet from s1 to s2 (ia2/s2.localPort) and check it * Send a packet from s2 to s1 (ia1/s1.localPort) and check it @@ -247,13 +260,15 @@ } private NetworkInterface getNextIf () { - while (ifs.hasMoreElements()) { - NetworkInterface nic = (NetworkInterface)ifs.nextElement(); - try { - if (nic.isUp() && !nic.isLoopback()) - return nic; - } catch (SocketException e) { - // ignore + if (ifs != null) { + while (ifs.hasMoreElements()) { + NetworkInterface nic = (NetworkInterface)ifs.nextElement(); + try { + if (nic.isUp() && !nic.isLoopback()) + return nic; + } catch (SocketException e) { + // ignore + } } } diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java --- a/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,7 +23,7 @@ /* * @test - * @bug 4777124 6920545 + * @bug 4777124 6920545 6911753 * @summary Verify that all Charset subclasses are available through the API */ @@ -65,8 +65,6 @@ // remove the known pseudo-charsets that serve only to implement // other charsets, but shouldn't be known to the public charsets.remove(Class.forName("sun.nio.cs.Unicode")); - charsets.remove(Class.forName("sun.nio.cs.ext.HKSCS")); - charsets.remove(Class.forName("sun.nio.cs.ext.HKSCS_2001")); charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022")); charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_GB")); charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_CNS")); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/nio/charset/Charset/RegisteredCharsets.java --- a/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java Wed Jul 05 17:09:51 2017 +0200 @@ -22,7 +22,7 @@ */ /* @test - * @bug 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668 + * @bug 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668 6911753 * @summary Check that registered charsets are actually registered */ @@ -240,7 +240,6 @@ "Big5_HKSCS", "big5hk", "big5-hkscs", - "big5-hkscs:unicode3.0", "big5hkscs" }); diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/java/security/cert/CertificateFactory/ReturnStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/security/cert/CertificateFactory/ReturnStream.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,64 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6813340 + * @summary X509Factory should not depend on is.available()==0 + */ +import java.io.*; +import java.security.cert.*; + +/** + * Tests ol'Mac style file, end witha single '\r' + */ +public class ReturnStream { + + public static void main(String[] args) throws Exception { + FileInputStream fin = new FileInputStream(new File(new File( + System.getProperty("test.src", "."), "openssl"), "pem")); + byte[] buffer = new byte[4096]; + int size = 0; + while (true) { + int len = fin.read(buffer, size, 4096-size); + if (len < 0) break; + size += len; + } + fin.close(); + + // Make a copy + System.arraycopy(buffer, 0, buffer, size, size); + size += size; + + // Create a ol'Mac style file. + for (int i=0; iTest"), doc, 0); + } catch (Exception e) { + throw new RuntimeException("The test failed", e); + } + + Element elem = doc.getElement("test"); + ImageView iv = new ImageView(elem); + + if (iv.getLoadingImageIcon() == null) { + throw new RuntimeException("getLoadingImageIcon returns null"); + } + + if (iv.getNoImageIcon() == null) { + throw new RuntimeException("getNoImageIcon returns null"); + } + } + }); + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/lib/security/cacerts/VerifyCACerts.java --- a/jdk/test/lib/security/cacerts/VerifyCACerts.java Wed Jul 05 17:09:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -/* - * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/** - * @test - * @bug 4400624 6321453 6728890 6732157 6754779 6768559 - * @summary Make sure all self-signed root cert signatures are valid - */ -import java.io.FileInputStream; -import java.security.KeyStore; -import java.security.MessageDigest; -import java.security.cert.*; -import java.util.*; - -public class VerifyCACerts { - - private final static String cacertsFileName = - System.getProperty("java.home") + - System.getProperty("file.separator") + "lib" + - System.getProperty("file.separator") + "security" + - System.getProperty("file.separator") + "cacerts"; - - private static boolean atLeastOneFailed = false; - - private static MessageDigest md; - - // map of cert alias to SHA1 fingerprint - private static Map fpMap = new HashMap(); - - private static String[][] entries = { - { "swisssignsilverg2ca", "9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB"}, - { "swisssigngoldg2ca", "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61"}, - { "swisssignplatinumg2ca", "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66"}, - { "verisigntsaca", "BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56"}, - { "camerfirmachambersignca", "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C"}, - { "camerfirmachambersca", "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C"}, - { "camerfirmachamberscommerceca", "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1"}, - { "deutschetelekomrootca2", "85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF"}, - }; - - static { - for (String[] entry : entries) { - fpMap.put(entry[0], entry[1]); - } - }; - - public static void main(String[] args) throws Exception { - md = MessageDigest.getInstance("SHA1"); - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray()); - - // check that all entries in the map are in the keystore - for (String alias : fpMap.keySet()) { - if (!ks.isCertificateEntry(alias)) { - atLeastOneFailed = true; - System.err.println(alias + " is not in cacerts"); - } - } - // pull all the trusted self-signed CA certs out of the cacerts file - // and verify their signatures - Enumeration aliases = ks.aliases(); - while (aliases.hasMoreElements()) { - String alias = aliases.nextElement(); - System.out.println("Verifying " + alias); - if (!ks.isCertificateEntry(alias)) { - atLeastOneFailed = true; - System.err.println(alias + " is not a trusted cert entry"); - } - Certificate cert = ks.getCertificate(alias); - // remember the GTE CyberTrust CA cert for further tests - if (alias.equals("gtecybertrustca")) { - atLeastOneFailed = true; - System.err.println - ("gtecybertrustca is expired and should be deleted"); - } - cert.verify(cert.getPublicKey()); - if (!checkFingerprint(alias, cert)) { - atLeastOneFailed = true; - System.err.println - (alias + " SHA1 fingerprint is incorrect"); - } - } - - if (atLeastOneFailed) { - throw new Exception("At least one cacert test failed"); - } - } - - private static boolean checkFingerprint(String alias, Certificate cert) - throws Exception { - String fingerprint = fpMap.get(alias); - if (fingerprint == null) { - // no entry for alias - return true; - } - System.out.println("Checking fingerprint of " + alias); - byte[] digest = md.digest(cert.getEncoded()); - return fingerprint.equals(toHexString(digest)); - } - - private static String toHexString(byte[] block) { - StringBuffer buf = new StringBuffer(); - int len = block.length; - for (int i = 0; i < len; i++) { - byte2hex(block[i], buf); - if (i < len-1) { - buf.append(":"); - } - } - return buf.toString(); - } - - private static void byte2hex(byte b, StringBuffer buf) { - char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', - '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - int high = ((b & 0xf0) >> 4); - int low = (b & 0x0f); - buf.append(hexChars[high]); - buf.append(hexChars[low]); - } -} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java --- a/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,8 +23,9 @@ /* * @test - * @bug 6578647 + * @bug 6578647 6829283 * @summary Undefined requesting URL in java.net.Authenticator.getPasswordAuthentication() + * @summary HTTP/Negotiate: Authenticator triggered again when user cancels the first one */ import com.sun.net.httpserver.Headers; @@ -35,6 +36,8 @@ import com.sun.net.httpserver.HttpPrincipal; import com.sun.security.auth.module.Krb5LoginModule; import java.io.BufferedReader; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; @@ -79,6 +82,9 @@ // web page content final static String CONTENT = "Hello, World!"; + // For 6829283, count how many times the Authenticator is called. + static int count = 0; + // URLs for web test, proxy test. The proxy server is not a real proxy // since it fakes the same content for any URL. :) final static URL webUrl, proxyUrl; @@ -134,6 +140,17 @@ } } + /** + * This Authenticator knows nothing + */ + static class KnowNothingAuthenticator extends java.net.Authenticator { + @Override + public PasswordAuthentication getPasswordAuthentication () { + HttpNegotiateServer.count++; + return null; + } + } + public static void main(String[] args) throws Exception { @@ -147,7 +164,6 @@ kdcp.addPrincipalRandKey("krbtgt/" + REALM_PROXY); kdcp.addPrincipalRandKey("HTTP/" + PROXY_HOST); - KDC.writeMultiKtab(KRB5_TAB, kdcw, kdcp); KDC.saveConfig(KRB5_CONF, kdcw, kdcp, "default_keytab_name = " + KRB5_TAB, "[domain_realm]", @@ -157,6 +173,19 @@ System.setProperty("java.security.krb5.conf", KRB5_CONF); Config.refresh(); + KDC.writeMultiKtab(KRB5_TAB, kdcw, kdcp); + + // Write a customized JAAS conf file, so that any kinit cache + // will be ignored. + System.setProperty("java.security.auth.login.config", OneKDC.JAAS_CONF); + File f = new File(OneKDC.JAAS_CONF); + FileOutputStream fos = new FileOutputStream(f); + fos.write(( + "com.sun.security.jgss.krb5.initiate {\n" + + " com.sun.security.auth.module.Krb5LoginModule required;\n};\n" + ).getBytes()); + fos.close(); + f.deleteOnExit(); HttpServer h1 = httpd(WEB_PORT, "Negotiate", false, "HTTP/" + WEB_HOST + "@" + REALM_WEB, KRB5_TAB); @@ -164,23 +193,21 @@ "HTTP/" + PROXY_HOST + "@" + REALM_PROXY, KRB5_TAB); try { - - BufferedReader reader; - java.net.Authenticator.setDefault(new KnowAllAuthenticator()); - - reader = new BufferedReader(new InputStreamReader( - webUrl.openConnection().getInputStream())); - if (!reader.readLine().equals(CONTENT)) { - throw new RuntimeException("Bad content"); + Exception e1 = null, e2 = null; + try { + test6578647(); + } catch (Exception e) { + e1 = e; + e.printStackTrace(); } - - reader = new BufferedReader(new InputStreamReader( - proxyUrl.openConnection( - new Proxy(Proxy.Type.HTTP, - new InetSocketAddress(PROXY_HOST, PROXY_PORT))) - .getInputStream())); - if (!reader.readLine().equals(CONTENT)) { - throw new RuntimeException("Bad content"); + try { + test6829283(); + } catch (Exception e) { + e2 = e; + e.printStackTrace(); + } + if (e1 != null || e2 != null) { + throw new RuntimeException("Test error"); } } finally { // Must stop. Seems there's no HttpServer.startAsDaemon() @@ -189,6 +216,40 @@ } } + static void test6578647() throws Exception { + BufferedReader reader; + java.net.Authenticator.setDefault(new KnowAllAuthenticator()); + + reader = new BufferedReader(new InputStreamReader( + webUrl.openConnection().getInputStream())); + if (!reader.readLine().equals(CONTENT)) { + throw new RuntimeException("Bad content"); + } + + reader = new BufferedReader(new InputStreamReader( + proxyUrl.openConnection( + new Proxy(Proxy.Type.HTTP, + new InetSocketAddress(PROXY_HOST, PROXY_PORT))) + .getInputStream())); + if (!reader.readLine().equals(CONTENT)) { + throw new RuntimeException("Bad content"); + } + } + + static void test6829283() throws Exception { + BufferedReader reader; + java.net.Authenticator.setDefault(new KnowNothingAuthenticator()); + try { + new BufferedReader(new InputStreamReader( + webUrl.openConnection().getInputStream())); + } catch (IOException ioe) { + // Will fail since no username and password is provided. + } + if (count > 1) { + throw new RuntimeException("Authenticator called twice"); + } + } + /** * Creates and starts an HTTP or proxy server that requires * Negotiate authentication. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/pkcs11/SecureRandom/TestDeserialization.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/pkcs11/SecureRandom/TestDeserialization.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,94 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test + * @bug 6837847 + * @summary Ensure a deserialized PKCS#11 SecureRandom is functional. + * @library .. + */ + +import java.security.*; +import java.io.*; + +public class TestDeserialization extends PKCS11Test { + + public void main(Provider p) throws Exception { + // Skip this test for providers not found by java.security.Security + if (Security.getProvider(p.getName()) != p) { + System.out.println("Skip test for provider " + p.getName()); + return; + } + SecureRandom r; + try { + r = SecureRandom.getInstance("PKCS11", p); + System.out.println("SecureRandom instance " + r); + } catch (NoSuchAlgorithmException e) { + System.out.println("Provider " + p + + " does not support SecureRandom, skipping"); + e.printStackTrace(); + return; + } + r.setSeed(System.currentTimeMillis()); + byte[] buf = new byte[16]; + byte[] ser = toByteArray(r); + System.out.println("Serialized Len = " + ser.length); + SecureRandom r2 = fromByteArray(ser); + System.out.println("Deserialized into " + r2); + r2.nextBytes(buf); + System.out.println("Done"); + } + + public static void main(String[] args) throws Exception { + main(new TestDeserialization()); + } + + private byte[] toByteArray(SecureRandom r) throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(1024); + ObjectOutputStream outStream = null; + try { + outStream = new ObjectOutputStream(out); + outStream.writeObject(r); + return out.toByteArray(); + } finally { + if (outStream != null) { + outStream.close(); + } + } + } + + private SecureRandom fromByteArray(byte[] buf) throws Exception { + SecureRandom r = null; + ByteArrayInputStream is = new ByteArrayInputStream(buf); + ObjectInputStream ois = null; + try { + ois = new ObjectInputStream(is); + r = (SecureRandom) ois.readObject(); + } finally { + if (ois != null) { + ois.close(); + } + } + return r; + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/pkcs11/Signature/TestRSAKeyLength.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/pkcs11/Signature/TestRSAKeyLength.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,74 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test %W% %E% + * @bug 6695485 + * @summary Make sure initSign/initVerify() check RSA key lengths + * @author Yu-Ching Valerie Peng + * @library .. + */ + +import java.security.*; + +public class TestRSAKeyLength extends PKCS11Test { + public static void main(String[] args) throws Exception { + main(new TestRSAKeyLength()); + } + public void main(Provider p) throws Exception { + boolean isValidKeyLength[] = { true, true, false, false }; + String algos[] = { "SHA1withRSA", "SHA256withRSA", + "SHA384withRSA", "SHA512withRSA" }; + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", p); + kpg.initialize(512); + KeyPair kp = kpg.generateKeyPair(); + PrivateKey privKey = kp.getPrivate(); + PublicKey pubKey = kp.getPublic(); + + for (int i = 0; i < algos.length; i++) { + Signature sig = Signature.getInstance(algos[i], p); + System.out.println("Testing RSA signature " + algos[i]); + try { + sig.initSign(privKey); + if (!isValidKeyLength[i]) { + throw new Exception("initSign: Expected IKE not thrown!"); + } + } catch (InvalidKeyException ike) { + if (isValidKeyLength[i]) { + throw new Exception("initSign: Unexpected " + ike); + } + } + try { + sig.initVerify(pubKey); + if (!isValidKeyLength[i]) { + throw new RuntimeException("initVerify: Expected IKE not thrown!"); + } + new SignedObject("Test string for getSignature test.", privKey, sig); + } catch (InvalidKeyException ike) { + if (isValidKeyLength[i]) { + throw new Exception("initSign: Unexpected " + ike); + } + } + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java --- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ * @test * @bug 4403428 * @summary Invalidating JSSE session on server causes SSLProtocolException + * @ignore incompatible with disabled unsafe renegotiation (6898739), please + * reenable when safe renegotiation is implemented. * @author Brad Wetmore */ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/etc/keystore Binary file jdk/test/sun/security/ssl/etc/keystore has changed diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/etc/truststore Binary file jdk/test/sun/security/ssl/etc/truststore has changed diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java --- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,8 @@ * @bug 4280338 * @summary "Unsupported SSL message version" SSLProtocolException * w/SSL_RSA_WITH_NULL_MD5 + * @ignore incompatible with disabled unsafe renegotiation (6898739), please + * reenable when safe renegotiation is implemented. * * @author Ram Marti * @author Brad Wetmore diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java --- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ * @test * @bug 4948079 * @summary SSLEngineResult needs updating [none yet] + * @ignore incompatible with disabled unsafe renegotiation (6898739), please + * reenable when safe renegotiation is implemented. * * This is a simple hack to test a bunch of conditions and check * their return codes. diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java --- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,8 @@ * @bug 4495742 * @summary Add non-blocking SSL/TLS functionality, usable with any * I/O abstraction + * @ignore incompatible with disabled unsafe renegotiation (6898739), please + * reenable when safe renegotiation is implemented. * * This is a bit hacky, meant to test various conditions. The main * thing I wanted to do with this was to do buffer reads/writes diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java --- a/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ * @test * @bug 4495742 * @summary Demonstrate SSLEngine switch from no client auth to client auth. + * @ignore incompatible with disabled unsafe renegotiation (6898739), please + * reenable when safe renegotiation is implemented. * * @author Brad R. Wetmore */ diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java --- a/jdk/test/sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/ssl/sanity/ciphersuites/CheckCipherSuites.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,9 +40,21 @@ "SSL_RSA_WITH_RC4_128_MD5", "SSL_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_RSA_WITH_RC4_128_SHA", + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_DES_CBC_SHA", @@ -59,11 +71,27 @@ "SSL_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_256_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", + "TLS_ECDH_RSA_WITH_RC4_128_SHA", + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_DES_CBC_SHA", @@ -81,9 +109,21 @@ "SSL_RSA_WITH_RC4_128_MD5", "SSL_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_RSA_WITH_RC4_128_SHA", + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_DES_CBC_SHA", @@ -93,14 +133,23 @@ "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", + "SSL_RSA_WITH_NULL_MD5", "SSL_RSA_WITH_NULL_SHA", + "TLS_ECDH_ECDSA_WITH_NULL_SHA", + "TLS_ECDH_RSA_WITH_NULL_SHA", + "TLS_ECDHE_ECDSA_WITH_NULL_SHA", + "TLS_ECDHE_RSA_WITH_NULL_SHA", "SSL_DH_anon_WITH_RC4_128_MD5", "TLS_DH_anon_WITH_AES_128_CBC_SHA", "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", "SSL_DH_anon_WITH_DES_CBC_SHA", + "TLS_ECDH_anon_WITH_RC4_128_SHA", + "TLS_ECDH_anon_WITH_AES_128_CBC_SHA", + "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", + "TLS_ECDH_anon_WITH_NULL_SHA", "TLS_KRB5_WITH_RC4_128_SHA", "TLS_KRB5_WITH_RC4_128_MD5", "TLS_KRB5_WITH_3DES_EDE_CBC_SHA", @@ -110,7 +159,7 @@ "TLS_KRB5_EXPORT_WITH_RC4_40_SHA", "TLS_KRB5_EXPORT_WITH_RC4_40_MD5", "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", - "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5" + "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", }; // supported ciphersuites using unlimited JCE policy jurisdiction files @@ -120,11 +169,27 @@ "SSL_RSA_WITH_RC4_128_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_256_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", + "TLS_ECDH_RSA_WITH_RC4_128_SHA", + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_DES_CBC_SHA", @@ -134,15 +199,25 @@ "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", + "SSL_RSA_WITH_NULL_MD5", "SSL_RSA_WITH_NULL_SHA", + "TLS_ECDH_ECDSA_WITH_NULL_SHA", + "TLS_ECDH_RSA_WITH_NULL_SHA", + "TLS_ECDHE_ECDSA_WITH_NULL_SHA", + "TLS_ECDHE_RSA_WITH_NULL_SHA", "SSL_DH_anon_WITH_RC4_128_MD5", "TLS_DH_anon_WITH_AES_128_CBC_SHA", "TLS_DH_anon_WITH_AES_256_CBC_SHA", "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", "SSL_DH_anon_WITH_DES_CBC_SHA", + "TLS_ECDH_anon_WITH_RC4_128_SHA", + "TLS_ECDH_anon_WITH_AES_128_CBC_SHA", + "TLS_ECDH_anon_WITH_AES_256_CBC_SHA", + "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", + "TLS_ECDH_anon_WITH_NULL_SHA", "TLS_KRB5_WITH_RC4_128_SHA", "TLS_KRB5_WITH_RC4_128_MD5", "TLS_KRB5_WITH_3DES_EDE_CBC_SHA", @@ -152,7 +227,7 @@ "TLS_KRB5_EXPORT_WITH_RC4_40_SHA", "TLS_KRB5_EXPORT_WITH_RC4_40_MD5", "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", - "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5" + "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", }; private static void showSuites(String[] suites) { diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,879 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 + * @author Xuelei Fan + */ + +import java.net.*; +import java.util.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.KeyFactory; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.spec.*; +import java.security.interfaces.*; +import java.math.BigInteger; + +import sun.security.ssl.SSLSocketImpl; + +/* + * Certificates and key used in the test. + * + * TLS server certificate: + * server private key: + * -----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A + * + * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e + * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI + * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n + * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb + * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP + * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz + * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF + * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J + * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa + * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH + * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT + * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q + * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie + * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU + * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB + * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi + * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y + * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo + * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 + * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 + * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 + * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 + * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC + * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF + * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * publicExponent: 65537 (0x10001) + * privateExponent: + * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: + * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: + * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: + * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: + * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: + * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: + * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: + * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: + * 37:6b:37:59:ed:db:6d:b1 + * prime1: + * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: + * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: + * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: + * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: + * d6:11:4c:99:c7 + * prime2: + * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: + * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: + * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: + * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: + * e0:e1:84:ff:2f + * exponent1: + * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: + * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: + * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: + * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: + * 12:b7:6e:91 + * exponent2: + * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: + * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: + * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: + * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: + * 19:7b:b0:de:53 + * coefficient: + * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: + * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: + * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: + * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: + * 12:d7:eb:4f + * + * + * server certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 8 (0x8) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:43:04 2008 GMT + * Not After : Aug 25 03:43:04 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * DNS:localhost + * Signature Algorithm: md5WithRSAEncryption0 + * + * -----BEGIN CERTIFICATE----- + * MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 + * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 + * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS + * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh + * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac + * PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi + * nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn + * JqCpf5uZGOo= + * -----END CERTIFICATE----- + * + * + * TLS client certificate: + * client private key: + * ----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 + * + * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 + * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf + * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak + * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH + * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat + * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 + * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ + * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ + * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN + * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U + * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO + * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig + * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 + * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z + * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB + * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW + * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf + * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 + * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 + * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX + * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM + * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 + * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j + * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY + * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * publicExponent: 65537 (0x10001) + * privateExponent: + * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: + * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: + * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: + * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: + * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: + * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: + * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: + * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: + * e5:28:9b:f9:4c:94:c6:b1 + * prime1: + * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: + * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: + * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: + * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: + * e2:a0:4d:ab:b5 + * prime2: + * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: + * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: + * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: + * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: + * 76:7d:ce:32:8f + * exponent1: + * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: + * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: + * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: + * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: + * 4c:de:38:95 + * exponent2: + * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: + * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: + * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: + * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: + * 0d:78:df:fd + * coefficient: + * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: + * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: + * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: + * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: + * 35:92:f2:e3 + * + * client certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 9 (0x9) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:43:24 2008 GMT + * Not After : Aug 25 03:43:24 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * DNS:localhost + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas + * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV + * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq + * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh + * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F + * HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj + * XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN + * cl/epUcHL7E= + * -----END CERTIFICATE----- + * + * + * + * Trusted CA certificate: + * Certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 0 (0x0) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 02:43:36 2008 GMT + * Not After : Aug 25 02:43:36 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: + * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: + * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: + * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: + * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: + * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: + * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: + * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: + * 89:2a:95:12:4c:d8:09:2a:e9 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Subject Key Identifier: + * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org + * serial:00 + * + * X509v3 Basic Constraints: + * CA:TRUE + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX + * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj + * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G + * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ + * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt + * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw + * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA + * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ + * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P + * 6Mvf0r1PNTY2hwTJLJmKtg== + * -----END CERTIFICATE--- + */ + + +public class DNSIdentities { + static Map cookies; + ServerSocket ss; + + /* + * ============================================================= + * Set the various variables needed for the tests, then + * specify what tests to run on each side. + */ + + /* + * Should we run the client or server in a separate thread? + * Both sides can throw exceptions, but do you have a preference + * as to which side should be the main thread. + */ + static boolean separateServerThread = true; + + /* + * Where do we find the keystores? + */ + static String trusedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + + "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + + "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + + "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + + "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + + "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + + "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + + "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + + "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + + "6Mvf0r1PNTY2hwTJLJmKtg==\n" + + "-----END CERTIFICATE-----"; + + static String serverCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + + "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + + "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + + "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" + + "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac\n" + + "PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi\n" + + "nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn\n" + + "JqCpf5uZGOo=\n" + + "-----END CERTIFICATE-----"; + + static String clientCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + + "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + + "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + + "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" + + "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F\n" + + "HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj\n" + + "XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN\n" + + "cl/epUcHL7E=\n" + + "-----END CERTIFICATE-----"; + + static byte serverPrivateExponent[] = { + (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, + (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, + (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, + (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, + (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, + (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, + (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, + (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, + (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, + (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, + (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, + (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, + (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, + (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, + (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, + (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, + (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, + (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, + (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, + (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, + (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, + (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, + (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, + (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, + (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, + (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, + (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, + (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, + (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, + (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, + (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, + (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 + }; + + static byte serverModulus[] = { + (byte)0x00, + (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, + (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, + (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, + (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, + (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, + (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, + (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, + (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, + (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, + (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, + (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, + (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, + (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, + (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, + (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, + (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, + (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, + (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, + (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, + (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, + (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, + (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, + (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, + (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, + (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, + (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, + (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, + (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, + (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, + (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, + (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, + (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 + }; + + static byte clientPrivateExponent[] = { + (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, + (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, + (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, + (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, + (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, + (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, + (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, + (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, + (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, + (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, + (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, + (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, + (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, + (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, + (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, + (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, + (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, + (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, + (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, + (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, + (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, + (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, + (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, + (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, + (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, + (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, + (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, + (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, + (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, + (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, + (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, + (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 + }; + + static byte clientModulus[] = { + (byte)0x00, + (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, + (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, + (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, + (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, + (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, + (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, + (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, + (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, + (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, + (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, + (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, + (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, + (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, + (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, + (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, + (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, + (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, + (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, + (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, + (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, + (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, + (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, + (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, + (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, + (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, + (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, + (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, + (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, + (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, + (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, + (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, + (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b + }; + + static char passphrase[] = "passphrase".toCharArray(); + + /* + * Is the server ready to serve? + */ + volatile static boolean serverReady = false; + + /* + * Turn on SSL debugging? + */ + static boolean debug = false; + + private SSLServerSocket sslServerSocket = null; + + /* + * Define the server side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doServerSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, serverCertStr, + serverModulus, serverPrivateExponent, passphrase); + SSLServerSocketFactory sslssf = context.getServerSocketFactory(); + + sslServerSocket = + (SSLServerSocket) sslssf.createServerSocket(serverPort); + serverPort = sslServerSocket.getLocalPort(); + + /* + * Signal Client, we're ready for his connect. + */ + serverReady = true; + + SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); + sslSocket.setNeedClientAuth(true); + if (sslSocket instanceof SSLSocketImpl) { + ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); + } + + PrintStream out = + new PrintStream(sslSocket.getOutputStream()); + + try { + // ignore request data + + // send the response + out.print("HTTP/1.1 200 OK\r\n"); + out.print("Content-Type: text/html; charset=iso-8859-1\r\n"); + out.print("Content-Length: "+ 9 +"\r\n"); + out.print("\r\n"); + out.print("Testing\r\n"); + out.flush(); + } finally { + // close the socket + Thread.sleep(2000); + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; + } + + } + + /* + * Define the client side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, clientCertStr, + clientModulus, clientPrivateExponent, passphrase); + + SSLContext.setDefault(context); + + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } + + HttpsURLConnection http = null; + + /* establish http connection to server */ + URL url = new URL("https://localhost:" + serverPort+"/"); + System.out.println("url is "+url.toString()); + + http = (HttpsURLConnection)url.openConnection(); + + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + + http.disconnect(); + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // use any free port by default + volatile int serverPort = 0; + + volatile Exception serverException = null; + volatile Exception clientException = null; + + public static void main(String args[]) throws Exception { + if (debug) + System.setProperty("javax.net.debug", "all"); + + /* + * Start the tests. + */ + new DNSIdentities(); + } + + Thread clientThread = null; + Thread serverThread = null; + /* + * Primary constructor, used to drive remainder of the test. + * + * Fork off the other side, then do your work. + */ + DNSIdentities() throws Exception { + if (separateServerThread) { + startServer(true); + startClient(false); + } else { + startClient(true); + startServer(false); + } + + /* + * Wait for other side to close down. + */ + if (separateServerThread) { + serverThread.join(); + } else { + clientThread.join(); + } + + /* + * When we get here, the test is pretty much over. + * + * If the main thread excepted, that propagates back + * immediately. If the other thread threw an exception, we + * should report back. + */ + if (serverException != null) + throw serverException; + if (clientException != null) + throw clientException; + } + + void startServer(boolean newThread) throws Exception { + if (newThread) { + serverThread = new Thread() { + public void run() { + try { + doServerSide(); + } catch (Exception e) { + /* + * Our server thread just died. + * + * Release the client, if not active already... + */ + System.err.println("Server died..."); + serverReady = true; + serverException = e; + } + } + }; + serverThread.start(); + } else { + doServerSide(); + } + } + + void startClient(boolean newThread) throws Exception { + if (newThread) { + clientThread = new Thread() { + public void run() { + try { + doClientSide(); + } catch (Exception e) { + /* + * Our client thread just died. + */ + System.err.println("Client died..."); + clientException = e; + } + } + }; + clientThread.start(); + } else { + doClientSide(); + } + } + + // get the ssl context + private static SSLContext getSSLContext(String trusedCertStr, + String keyCertStr, byte[] modulus, + byte[] privateExponent, char[] passphrase) throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + ByteArrayInputStream is = + new ByteArrayInputStream(trusedCertStr.getBytes()); + Certificate trusedCert = cf.generateCertificate(is); + is.close(); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + ks.setCertificateEntry("RSA Export Signer", trusedCert); + + if (keyCertStr != null) { + // generate the private key. + RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( + new BigInteger(modulus), + new BigInteger(privateExponent)); + KeyFactory kf = KeyFactory.getInstance("RSA"); + RSAPrivateKey priKey = + (RSAPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(keyCertStr.getBytes()); + Certificate keyCert = cf.generateCertificate(is); + is.close(); + + Certificate[] chain = new Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry. + ks.setKeyEntry("Whatever", priKey, passphrase, chain); + } + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + SSLContext ctx = SSLContext.getInstance("TLS"); + + if (keyCertStr != null) { + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + ctx.init(null, tmf.getTrustManagers(), null); + } + + return ctx; + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsCreateSockTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsCreateSockTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,210 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test + * @bug 6771432 + * @summary createSocket() - smpatch fails using 1.6.0_10 because of "Unconnected sockets not implemented" + */ + +import javax.net.SocketFactory; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocketFactory; +import java.security.NoSuchAlgorithmException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.URL; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStreamWriter; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpsConfigurator; + +/* + * This class tests that the HTTPS protocol handler is using its socket factory for + * creating new Sockets. It does this by wrapping the default SSLSocketFactory with + * its own socket factory, SimpleSSLSocketFactory, and verifying that when a https + * connection is made one of the socket factories createSocket methods, that + * actually creates a Socket, is being invoked by the protocol handler. + */ + +public class HttpsCreateSockTest +{ + /* + * Where do we find the keystores? + */ + static String pathToStores = "../../../../../../etc"; + static String keyStoreFile = "keystore"; + static String trustStoreFile = "truststore"; + static String passwd = "passphrase"; + + com.sun.net.httpserver.HttpsServer httpsServer; + MyHandler httpHandler; + + public static void main(String[] args) { + String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; + String trustFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + trustStoreFile; + + System.setProperty("javax.net.ssl.keyStore", keyFilename); + System.setProperty("javax.net.ssl.keyStorePassword", passwd); + System.setProperty("javax.net.ssl.trustStore", trustFilename); + System.setProperty("javax.net.ssl.trustStorePassword", passwd); + + new HttpsCreateSockTest(); + } + + public HttpsCreateSockTest() { + try { + startHttpsServer(); + doClient(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + httpsServer.stop(1); + } + } + + void doClient() throws IOException { + InetSocketAddress address = httpsServer.getAddress(); + + URL url = new URL("https://localhost:" + address.getPort() + "/"); + System.out.println("trying to connect to " + url + "..."); + + HttpsURLConnection uc = (HttpsURLConnection) url.openConnection(); + uc.setHostnameVerifier(new AllHostnameVerifier()); + if (uc instanceof javax.net.ssl.HttpsURLConnection) { + ((javax.net.ssl.HttpsURLConnection) uc).setSSLSocketFactory(new SimpleSSLSocketFactory()); + System.out.println("Using TestSocketFactory"); + } + uc.connect(); + System.out.println("CONNECTED " + uc); + System.out.println(uc.getResponseMessage()); + uc.disconnect(); + } + + /** + * Https Server + */ + public void startHttpsServer() throws IOException, NoSuchAlgorithmException { + httpsServer = com.sun.net.httpserver.HttpsServer.create(new InetSocketAddress(0), 0); + httpsServer.createContext("/", new MyHandler()); + httpsServer.setHttpsConfigurator(new HttpsConfigurator(SSLContext.getDefault())); + httpsServer.start(); + } + + class MyHandler implements HttpHandler { + private String message = "This is a message!"; + + @Override + public void handle(HttpExchange t) throws IOException { + t.sendResponseHeaders(200, message.length()); + BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(t.getResponseBody(), "ISO8859-1")); + writer.write(message, 0, message.length()); + writer.close(); + t.close(); + } + } + + /** + * Simple wrapper on default SSLSocketFactory + */ + class SimpleSSLSocketFactory extends SSLSocketFactory + { + /* + * true if this factory has been used to create a new Socket, i.e. + * one of the SocketFactory methods has been called. + */ + boolean socketCreated = false; + + /* + * true if this factory has been used to wrap a Socket, i.e. + * the SSLSocketFactory method, + * createSocket(Socket, String, int, boolean), has been called. + */ + boolean socketWrapped = false; + + @Override + public Socket createSocket(InetAddress host, int port) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port); + } + + @Override + public Socket createSocket(InetAddress address, int port, InetAddress localAddress, + int localPort) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(address, port, localAddress, localPort); + } + + @Override + public Socket createSocket(String host, int port) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port); + } + + @Override + public Socket createSocket(String host, int port, InetAddress localHost, + int localPort) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port, localHost, localPort); + } + + // methods from SSLSocketFactory + @Override + public Socket createSocket(Socket s, String host, int port, + boolean autoClose) throws IOException { + socketWrapped = true; + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket + (s, host, port, autoClose); + } + + @Override + public String[] getDefaultCipherSuites() { + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getDefaultCipherSuites(); + } + + @Override + public String[] getSupportedCipherSuites() { + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getSupportedCipherSuites(); + } + } + + class AllHostnameVerifier implements HostnameVerifier + { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsSocketFacTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsSocketFacTest.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,225 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6614957 + * @summary HttpsURLConnection not using the set SSLSocketFactory for creating all its Sockets + * @run main/othervm HttpsSocketFacTest + */ + +import javax.net.SocketFactory; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocketFactory; +import java.security.NoSuchAlgorithmException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.URL; +import java.io.BufferedWriter; +import java.io.InputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpsConfigurator; + +/* + * This class tests that the HTTPS protocol handler is using its socket factory for + * creating new Sockets. It does this by wrapping the default SSLSocketFactory with + * its own socket factory, SimpleSSLSocketFactory, and verifying that when a https + * connection is made one of the socket factories createSocket methods, that + * actually creates a Socket, is being invoked by the protocol handler. + */ + +public class HttpsSocketFacTest +{ + /* + * Where do we find the keystores? + */ + static String pathToStores = "../../../../../../etc"; + static String keyStoreFile = "keystore"; + static String trustStoreFile = "truststore"; + static String passwd = "passphrase"; + + com.sun.net.httpserver.HttpsServer httpsServer; + MyHandler httpHandler; + + public static void main(String[] args) { + String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; + String trustFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + trustStoreFile; + + System.setProperty("javax.net.ssl.keyStore", keyFilename); + System.setProperty("javax.net.ssl.keyStorePassword", passwd); + System.setProperty("javax.net.ssl.trustStore", trustFilename); + System.setProperty("javax.net.ssl.trustStorePassword", passwd); + + new HttpsSocketFacTest(); + } + + public HttpsSocketFacTest() { + try { + startHttpsServer(); + doClient(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + httpsServer.stop(1); + } + } + + void doClient() throws IOException { + InetSocketAddress address = httpsServer.getAddress(); + URL url = new URL("https://localhost:" + address.getPort() + "/test6614957/"); + System.out.println("trying to connect to " + url + "..."); + + HttpsURLConnection uc = (HttpsURLConnection) url.openConnection(); + SimpleSSLSocketFactory sssf = new SimpleSSLSocketFactory(); + uc.setSSLSocketFactory(sssf); + uc.setHostnameVerifier(new AllHostnameVerifier()); + InputStream is = uc.getInputStream(); + + byte[] ba = new byte[1024]; + int read = 0; + while ((read = is.read(ba)) != -1) { + System.out.println(new String(ba, 0, read)); + } + + System.out.println("SimpleSSLSocketFactory.socketCreated = " + sssf.socketCreated); + System.out.println("SimpleSSLSocketFactory.socketWrapped = " + sssf.socketWrapped); + + if (!sssf.socketCreated) + throw new RuntimeException("Failed: Socket Factory not being called to create Socket"); + } + + /** + * Https Server + */ + public void startHttpsServer() throws IOException, NoSuchAlgorithmException { + httpsServer = com.sun.net.httpserver.HttpsServer.create(new InetSocketAddress(0), 0); + httpsServer.createContext("/test6614957/", new MyHandler()); + httpsServer.setHttpsConfigurator(new HttpsConfigurator(SSLContext.getDefault())); + httpsServer.start(); + } + + class MyHandler implements HttpHandler { + private String message = "This is a message!"; + + @Override + public void handle(HttpExchange t) throws IOException { + t.sendResponseHeaders(200, message.length()); + BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(t.getResponseBody(), "ISO8859-1")); + writer.write(message, 0, message.length()); + writer.close(); + t.close(); + } + } + + /** + * Simple wrapper on default SSLSocketFactory + */ + class SimpleSSLSocketFactory extends SSLSocketFactory + { + /* + * true if this factory has been used to create a new Socket, i.e. + * one of the SocketFactory methods has been called. + */ + boolean socketCreated = false; + + /* + * true if this factory has been used to wrap a Socket, i.e. + * the SSLSocketFactory method, + * createSocket(Socket, String, int, boolean), has been called. + */ + boolean socketWrapped = false; + + // methods for SocketFactory + @Override + public Socket createSocket() throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(); + } + + @Override + public Socket createSocket(InetAddress host, int port) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port); + } + + @Override + public Socket createSocket(InetAddress address, int port, InetAddress localAddress, + int localPort) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(address, port, localAddress, localPort); + } + + @Override + public Socket createSocket(String host, int port) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port); + } + + @Override + public Socket createSocket(String host, int port, InetAddress localHost, + int localPort) throws IOException { + socketCreated = true; + return SocketFactory.getDefault().createSocket(host, port, localHost, localPort); + } + + // methods from SSLSocketFactory + @Override + public Socket createSocket(Socket s, String host, int port, + boolean autoClose) throws IOException { + socketWrapped = true; + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket + (s, host, port, autoClose); + } + + @Override + public String[] getDefaultCipherSuites() { + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getDefaultCipherSuites(); + } + + @Override + public String[] getSupportedCipherSuites() { + return ((SSLSocketFactory) SSLSocketFactory.getDefault()).getSupportedCipherSuites(); + } + } + + class AllHostnameVerifier implements HostnameVerifier + { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + } +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,887 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 + * @author Xuelei Fan + */ + +import java.net.*; +import java.util.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.KeyFactory; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.spec.*; +import java.security.interfaces.*; +import java.math.BigInteger; + +import sun.security.ssl.SSLSocketImpl; + +/* + * Certificates and key used in the test. + * + * TLS server certificate: + * server private key: + * -----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A + * + * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e + * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI + * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n + * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb + * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP + * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz + * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF + * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J + * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa + * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH + * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT + * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q + * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie + * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU + * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB + * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi + * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y + * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo + * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 + * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 + * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 + * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 + * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC + * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF + * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * publicExponent: 65537 (0x10001) + * privateExponent: + * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: + * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: + * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: + * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: + * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: + * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: + * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: + * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: + * 37:6b:37:59:ed:db:6d:b1 + * prime1: + * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: + * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: + * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: + * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: + * d6:11:4c:99:c7 + * prime2: + * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: + * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: + * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: + * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: + * e0:e1:84:ff:2f + * exponent1: + * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: + * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: + * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: + * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: + * 12:b7:6e:91 + * exponent2: + * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: + * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: + * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: + * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: + * 19:7b:b0:de:53 + * coefficient: + * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: + * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: + * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: + * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: + * 12:d7:eb:4f + * + * + * server certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 8 (0x8) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:43:04 2008 GMT + * Not After : Aug 25 03:43:04 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * DNS:localhost + * Signature Algorithm: md5WithRSAEncryption0 + * + * -----BEGIN CERTIFICATE----- + * MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 + * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 + * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS + * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh + * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac + * PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi + * nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn + * JqCpf5uZGOo= + * -----END CERTIFICATE----- + * + * + * TLS client certificate: + * client private key: + * ----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 + * + * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 + * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf + * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak + * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH + * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat + * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 + * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ + * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ + * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN + * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U + * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO + * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig + * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 + * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z + * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB + * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW + * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf + * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 + * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 + * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX + * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM + * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 + * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j + * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY + * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * publicExponent: 65537 (0x10001) + * privateExponent: + * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: + * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: + * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: + * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: + * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: + * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: + * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: + * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: + * e5:28:9b:f9:4c:94:c6:b1 + * prime1: + * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: + * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: + * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: + * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: + * e2:a0:4d:ab:b5 + * prime2: + * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: + * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: + * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: + * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: + * 76:7d:ce:32:8f + * exponent1: + * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: + * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: + * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: + * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: + * 4c:de:38:95 + * exponent2: + * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: + * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: + * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: + * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: + * 0d:78:df:fd + * coefficient: + * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: + * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: + * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: + * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: + * 35:92:f2:e3 + * + * client certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 9 (0x9) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:43:24 2008 GMT + * Not After : Aug 25 03:43:24 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * DNS:localhost + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas + * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV + * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq + * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh + * bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F + * HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj + * XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN + * cl/epUcHL7E= + * -----END CERTIFICATE----- + * + * + * + * Trusted CA certificate: + * Certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 0 (0x0) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 02:43:36 2008 GMT + * Not After : Aug 25 02:43:36 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: + * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: + * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: + * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: + * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: + * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: + * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: + * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: + * 89:2a:95:12:4c:d8:09:2a:e9 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Subject Key Identifier: + * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org + * serial:00 + * + * X509v3 Basic Constraints: + * CA:TRUE + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX + * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj + * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G + * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ + * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt + * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw + * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA + * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ + * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P + * 6Mvf0r1PNTY2hwTJLJmKtg== + * -----END CERTIFICATE--- + */ + + +public class IPAddressDNSIdentities { + static Map cookies; + ServerSocket ss; + + /* + * ============================================================= + * Set the various variables needed for the tests, then + * specify what tests to run on each side. + */ + + /* + * Should we run the client or server in a separate thread? + * Both sides can throw exceptions, but do you have a preference + * as to which side should be the main thread. + */ + static boolean separateServerThread = true; + + /* + * Where do we find the keystores? + */ + static String trusedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + + "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + + "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + + "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + + "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + + "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + + "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + + "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + + "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + + "6Mvf0r1PNTY2hwTJLJmKtg==\n" + + "-----END CERTIFICATE-----"; + + static String serverCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICpDCCAg2gAwIBAgIBCDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMDRaFw0yODA4MjUwMzQzMDRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + + "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + + "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + + "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" + + "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAoqVTciHtcvsUj+YaTct8tUh3aTCsKsac\n" + + "PHhfQ+ObjiXSgxsKYTX7ym/wk/wvlbUcbqLKxsu7qrcJitH+H9heV1hEHEu65Uoi\n" + + "nRugFruyOrwvAylV8Cm2af7ddilmYJ+sdJA6N2M3xJRxR0G2LFHEXDNEjYReyexn\n" + + "JqCpf5uZGOo=\n" + + "-----END CERTIFICATE-----"; + + static String clientCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICpDCCAg2gAwIBAgIBCTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzQzMjRaFw0yODA4MjUwMzQzMjRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + + "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + + "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + + "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjczBxMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAXBgNVHREBAf8EDTALgglsb2Nh\n" + + "bGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAm25gJyqW1JznQ1EyOtTGswBVwfgBOf+F\n" + + "HJuBTcflYQLbTD/AETPQJGvZU9tdhuLtbG3OPhR7vSY8zeAbfM3dbH7QFr3r47Gj\n" + + "XEH7qM/MX+Z3ifVaC4MeJmrYQkYFSuKeyyKpdRVX4w4nnFHF6OsNASsYrMW6LpxN\n" + + "cl/epUcHL7E=\n" + + "-----END CERTIFICATE-----"; + + static byte serverPrivateExponent[] = { + (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, + (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, + (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, + (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, + (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, + (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, + (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, + (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, + (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, + (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, + (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, + (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, + (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, + (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, + (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, + (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, + (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, + (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, + (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, + (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, + (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, + (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, + (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, + (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, + (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, + (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, + (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, + (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, + (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, + (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, + (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, + (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 + }; + + static byte serverModulus[] = { + (byte)0x00, + (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, + (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, + (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, + (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, + (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, + (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, + (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, + (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, + (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, + (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, + (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, + (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, + (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, + (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, + (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, + (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, + (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, + (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, + (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, + (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, + (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, + (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, + (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, + (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, + (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, + (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, + (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, + (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, + (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, + (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, + (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, + (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 + }; + + static byte clientPrivateExponent[] = { + (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, + (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, + (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, + (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, + (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, + (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, + (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, + (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, + (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, + (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, + (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, + (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, + (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, + (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, + (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, + (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, + (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, + (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, + (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, + (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, + (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, + (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, + (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, + (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, + (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, + (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, + (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, + (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, + (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, + (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, + (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, + (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 + }; + + static byte clientModulus[] = { + (byte)0x00, + (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, + (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, + (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, + (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, + (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, + (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, + (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, + (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, + (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, + (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, + (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, + (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, + (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, + (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, + (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, + (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, + (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, + (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, + (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, + (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, + (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, + (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, + (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, + (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, + (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, + (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, + (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, + (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, + (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, + (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, + (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, + (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b + }; + + static char passphrase[] = "passphrase".toCharArray(); + + /* + * Is the server ready to serve? + */ + volatile static boolean serverReady = false; + + /* + * Turn on SSL debugging? + */ + static boolean debug = false; + + private SSLServerSocket sslServerSocket = null; + + /* + * Define the server side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doServerSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, serverCertStr, + serverModulus, serverPrivateExponent, passphrase); + SSLServerSocketFactory sslssf = context.getServerSocketFactory(); + + sslServerSocket = + (SSLServerSocket) sslssf.createServerSocket(serverPort); + serverPort = sslServerSocket.getLocalPort(); + + /* + * Signal Client, we're ready for his connect. + */ + serverReady = true; + + SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); + sslSocket.setNeedClientAuth(true); + if (sslSocket instanceof SSLSocketImpl) { + ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); + } + + PrintStream out = + new PrintStream(sslSocket.getOutputStream()); + + try { + // ignore request data + + // send the response + out.print("HTTP/1.1 200 OK\r\n"); + out.print("Content-Type: text/html; charset=iso-8859-1\r\n"); + out.print("Content-Length: "+ 9 +"\r\n"); + out.print("\r\n"); + out.print("Testing\r\n"); + out.flush(); + } finally { + // close the socket + Thread.sleep(2000); + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; + } + + } + + /* + * Define the client side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, clientCertStr, + clientModulus, clientPrivateExponent, passphrase); + + SSLContext.setDefault(context); + + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } + + HttpsURLConnection http = null; + + /* establish http connection to server */ + URL url = new URL("https://127.0.0.1:" + serverPort+"/"); + System.out.println("url is "+url.toString()); + + try { + http = (HttpsURLConnection)url.openConnection(); + + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + + throw new Exception("Unexpectly found subject alternative name " + + "matching IP address"); + } catch (SSLHandshakeException sslhe) { + // no subject alternative names matching IP address 127.0.0.1 found + // that's the expected exception, ignore it. + } finally { + http.disconnect(); + } + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // use any free port by default + volatile int serverPort = 0; + + volatile Exception serverException = null; + volatile Exception clientException = null; + + public static void main(String args[]) throws Exception { + if (debug) + System.setProperty("javax.net.debug", "all"); + + /* + * Start the tests. + */ + new IPAddressDNSIdentities(); + } + + Thread clientThread = null; + Thread serverThread = null; + /* + * Primary constructor, used to drive remainder of the test. + * + * Fork off the other side, then do your work. + */ + IPAddressDNSIdentities() throws Exception { + if (separateServerThread) { + startServer(true); + startClient(false); + } else { + startClient(true); + startServer(false); + } + + /* + * Wait for other side to close down. + */ + if (separateServerThread) { + serverThread.join(); + } else { + clientThread.join(); + } + + /* + * When we get here, the test is pretty much over. + * + * If the main thread excepted, that propagates back + * immediately. If the other thread threw an exception, we + * should report back. + */ + if (serverException != null) + throw serverException; + if (clientException != null) + throw clientException; + } + + void startServer(boolean newThread) throws Exception { + if (newThread) { + serverThread = new Thread() { + public void run() { + try { + doServerSide(); + } catch (Exception e) { + /* + * Our server thread just died. + * + * Release the client, if not active already... + */ + System.err.println("Server died..."); + serverReady = true; + serverException = e; + } + } + }; + serverThread.start(); + } else { + doServerSide(); + } + } + + void startClient(boolean newThread) throws Exception { + if (newThread) { + clientThread = new Thread() { + public void run() { + try { + doClientSide(); + } catch (Exception e) { + /* + * Our client thread just died. + */ + System.err.println("Client died..."); + clientException = e; + } + } + }; + clientThread.start(); + } else { + doClientSide(); + } + } + + // get the ssl context + private static SSLContext getSSLContext(String trusedCertStr, + String keyCertStr, byte[] modulus, + byte[] privateExponent, char[] passphrase) throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + ByteArrayInputStream is = + new ByteArrayInputStream(trusedCertStr.getBytes()); + Certificate trusedCert = cf.generateCertificate(is); + is.close(); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + ks.setCertificateEntry("RSA Export Signer", trusedCert); + + if (keyCertStr != null) { + // generate the private key. + RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( + new BigInteger(modulus), + new BigInteger(privateExponent)); + KeyFactory kf = KeyFactory.getInstance("RSA"); + RSAPrivateKey priKey = + (RSAPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(keyCertStr.getBytes()); + Certificate keyCert = cf.generateCertificate(is); + is.close(); + + Certificate[] chain = new Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry. + ks.setKeyEntry("Whatever", priKey, passphrase, chain); + } + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + SSLContext ctx = SSLContext.getInstance("TLS"); + + if (keyCertStr != null) { + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + ctx.init(null, tmf.getTrustManagers(), null); + } + + return ctx; + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,880 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 + * @author Xuelei Fan + */ + +import java.net.*; +import java.util.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.KeyFactory; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.spec.*; +import java.security.interfaces.*; +import java.math.BigInteger; + +import sun.security.ssl.SSLSocketImpl; + +/* + * Certificates and key used in the test. + * + * TLS server certificate: + * server private key: + * -----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A + * + * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e + * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI + * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n + * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb + * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP + * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz + * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF + * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J + * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa + * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH + * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT + * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q + * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie + * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU + * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB + * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi + * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y + * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo + * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 + * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 + * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 + * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 + * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC + * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF + * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * publicExponent: 65537 (0x10001) + * privateExponent: + * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: + * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: + * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: + * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: + * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: + * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: + * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: + * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: + * 37:6b:37:59:ed:db:6d:b1 + * prime1: + * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: + * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: + * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: + * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: + * d6:11:4c:99:c7 + * prime2: + * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: + * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: + * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: + * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: + * e0:e1:84:ff:2f + * exponent1: + * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: + * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: + * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: + * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: + * 12:b7:6e:91 + * exponent2: + * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: + * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: + * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: + * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: + * 19:7b:b0:de:53 + * coefficient: + * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: + * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: + * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: + * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: + * 12:d7:eb:4f + * + * + * server certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 7 (0x7) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:27:57 2008 GMT + * Not After : Aug 25 03:27:57 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1 + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 + * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 + * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS + * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB + * MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva + * cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h + * pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun + * nZif + * -----END CERTIFICATE----- + * + * + * TLS client certificate: + * client private key: + * ----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 + * + * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 + * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf + * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak + * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH + * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat + * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 + * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ + * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ + * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN + * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U + * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO + * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig + * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 + * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z + * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB + * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW + * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf + * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 + * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 + * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX + * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM + * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 + * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j + * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY + * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * publicExponent: 65537 (0x10001) + * privateExponent: + * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: + * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: + * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: + * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: + * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: + * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: + * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: + * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: + * e5:28:9b:f9:4c:94:c6:b1 + * prime1: + * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: + * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: + * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: + * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: + * e2:a0:4d:ab:b5 + * prime2: + * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: + * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: + * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: + * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: + * 76:7d:ce:32:8f + * exponent1: + * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: + * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: + * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: + * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: + * 4c:de:38:95 + * exponent2: + * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: + * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: + * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: + * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: + * 0d:78:df:fd + * coefficient: + * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: + * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: + * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: + * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: + * 35:92:f2:e3 + * + * client certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 6 (0x6) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:27:34 2008 GMT + * Not After : Aug 25 03:27:34 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1 + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas + * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV + * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq + * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB + * MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx + * HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP + * i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC + * I9aw + * -----END CERTIFICATE----- + * + * + * + * Trusted CA certificate: + * Certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 0 (0x0) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 02:43:36 2008 GMT + * Not After : Aug 25 02:43:36 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: + * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: + * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: + * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: + * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: + * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: + * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: + * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: + * 89:2a:95:12:4c:d8:09:2a:e9 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Subject Key Identifier: + * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org + * serial:00 + * + * X509v3 Basic Constraints: + * CA:TRUE + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX + * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj + * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G + * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ + * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt + * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw + * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA + * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ + * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P + * 6Mvf0r1PNTY2hwTJLJmKtg== + * -----END CERTIFICATE--- + */ + + +public class IPAddressIPIdentities { + static Map cookies; + ServerSocket ss; + + /* + * ============================================================= + * Set the various variables needed for the tests, then + * specify what tests to run on each side. + */ + + /* + * Should we run the client or server in a separate thread? + * Both sides can throw exceptions, but do you have a preference + * as to which side should be the main thread. + */ + static boolean separateServerThread = true; + + /* + * Where do we find the keystores? + */ + static String trusedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + + "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + + "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + + "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + + "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + + "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + + "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + + "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + + "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + + "6Mvf0r1PNTY2hwTJLJmKtg==\n" + + "-----END CERTIFICATE-----"; + + static String serverCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + + "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + + "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + + "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + + "MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva\n" + + "cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h\n" + + "pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun\n" + + "nZif\n" + + "-----END CERTIFICATE-----"; + + static String clientCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + + "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + + "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + + "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + + "MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx\n" + + "HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP\n" + + "i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC\n" + + "I9aw\n" + + "-----END CERTIFICATE-----"; + + + static byte serverPrivateExponent[] = { + (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, + (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, + (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, + (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, + (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, + (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, + (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, + (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, + (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, + (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, + (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, + (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, + (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, + (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, + (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, + (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, + (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, + (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, + (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, + (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, + (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, + (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, + (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, + (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, + (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, + (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, + (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, + (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, + (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, + (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, + (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, + (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 + }; + + static byte serverModulus[] = { + (byte)0x00, + (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, + (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, + (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, + (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, + (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, + (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, + (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, + (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, + (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, + (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, + (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, + (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, + (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, + (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, + (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, + (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, + (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, + (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, + (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, + (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, + (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, + (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, + (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, + (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, + (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, + (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, + (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, + (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, + (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, + (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, + (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, + (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 + }; + + static byte clientPrivateExponent[] = { + (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, + (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, + (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, + (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, + (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, + (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, + (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, + (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, + (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, + (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, + (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, + (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, + (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, + (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, + (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, + (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, + (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, + (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, + (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, + (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, + (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, + (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, + (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, + (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, + (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, + (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, + (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, + (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, + (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, + (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, + (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, + (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 + }; + + static byte clientModulus[] = { + (byte)0x00, + (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, + (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, + (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, + (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, + (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, + (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, + (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, + (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, + (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, + (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, + (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, + (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, + (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, + (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, + (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, + (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, + (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, + (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, + (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, + (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, + (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, + (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, + (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, + (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, + (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, + (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, + (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, + (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, + (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, + (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, + (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, + (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b + }; + + static char passphrase[] = "passphrase".toCharArray(); + + /* + * Is the server ready to serve? + */ + volatile static boolean serverReady = false; + + /* + * Turn on SSL debugging? + */ + static boolean debug = false; + + private SSLServerSocket sslServerSocket = null; + + /* + * Define the server side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doServerSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, serverCertStr, + serverModulus, serverPrivateExponent, passphrase); + SSLServerSocketFactory sslssf = context.getServerSocketFactory(); + + sslServerSocket = + (SSLServerSocket) sslssf.createServerSocket(serverPort); + serverPort = sslServerSocket.getLocalPort(); + + /* + * Signal Client, we're ready for his connect. + */ + serverReady = true; + + SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); + sslSocket.setNeedClientAuth(true); + if (sslSocket instanceof SSLSocketImpl) { + ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); + } + + PrintStream out = + new PrintStream(sslSocket.getOutputStream()); + + try { + // ignore request data + + // send the response + out.print("HTTP/1.1 200 OK\r\n"); + out.print("Content-Type: text/html; charset=iso-8859-1\r\n"); + out.print("Content-Length: "+ 9 +"\r\n"); + out.print("\r\n"); + out.print("Testing\r\n"); + out.flush(); + } finally { + // close the socket + Thread.sleep(2000); + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; + } + + } + + /* + * Define the client side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, clientCertStr, + clientModulus, clientPrivateExponent, passphrase); + + SSLContext.setDefault(context); + + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } + + HttpsURLConnection http = null; + + /* establish http connection to server */ + URL url = new URL("https://127.0.0.1:" + serverPort+"/"); + System.out.println("url is "+url.toString()); + + http = (HttpsURLConnection)url.openConnection(); + + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + + http.disconnect(); + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // use any free port by default + volatile int serverPort = 0; + + volatile Exception serverException = null; + volatile Exception clientException = null; + + public static void main(String args[]) throws Exception { + if (debug) + System.setProperty("javax.net.debug", "all"); + + /* + * Start the tests. + */ + new IPAddressIPIdentities(); + } + + Thread clientThread = null; + Thread serverThread = null; + /* + * Primary constructor, used to drive remainder of the test. + * + * Fork off the other side, then do your work. + */ + IPAddressIPIdentities() throws Exception { + if (separateServerThread) { + startServer(true); + startClient(false); + } else { + startClient(true); + startServer(false); + } + + /* + * Wait for other side to close down. + */ + if (separateServerThread) { + serverThread.join(); + } else { + clientThread.join(); + } + + /* + * When we get here, the test is pretty much over. + * + * If the main thread excepted, that propagates back + * immediately. If the other thread threw an exception, we + * should report back. + */ + if (serverException != null) + throw serverException; + if (clientException != null) + throw clientException; + } + + void startServer(boolean newThread) throws Exception { + if (newThread) { + serverThread = new Thread() { + public void run() { + try { + doServerSide(); + } catch (Exception e) { + /* + * Our server thread just died. + * + * Release the client, if not active already... + */ + System.err.println("Server died..."); + serverReady = true; + serverException = e; + } + } + }; + serverThread.start(); + } else { + doServerSide(); + } + } + + void startClient(boolean newThread) throws Exception { + if (newThread) { + clientThread = new Thread() { + public void run() { + try { + doClientSide(); + } catch (Exception e) { + /* + * Our client thread just died. + */ + System.err.println("Client died..."); + clientException = e; + } + } + }; + clientThread.start(); + } else { + doClientSide(); + } + } + + // get the ssl context + private static SSLContext getSSLContext(String trusedCertStr, + String keyCertStr, byte[] modulus, + byte[] privateExponent, char[] passphrase) throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + ByteArrayInputStream is = + new ByteArrayInputStream(trusedCertStr.getBytes()); + Certificate trusedCert = cf.generateCertificate(is); + is.close(); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + ks.setCertificateEntry("RSA Export Signer", trusedCert); + + if (keyCertStr != null) { + // generate the private key. + RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( + new BigInteger(modulus), + new BigInteger(privateExponent)); + KeyFactory kf = KeyFactory.getInstance("RSA"); + RSAPrivateKey priKey = + (RSAPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(keyCertStr.getBytes()); + Certificate keyCert = cf.generateCertificate(is); + is.close(); + + Certificate[] chain = new Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry. + ks.setKeyEntry("Whatever", priKey, passphrase, chain); + } + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + SSLContext ctx = SSLContext.getInstance("TLS"); + + if (keyCertStr != null) { + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + ctx.init(null, tmf.getTrustManagers(), null); + } + + return ctx; + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,880 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 + * @author Xuelei Fan + */ + +import java.net.*; +import java.util.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.KeyFactory; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.spec.*; +import java.security.interfaces.*; +import java.math.BigInteger; + +import sun.security.ssl.SSLSocketImpl; + +/* + * Certificates and key used in the test. + * + * TLS server certificate: + * server private key: + * -----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A + * + * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e + * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI + * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n + * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb + * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP + * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz + * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF + * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J + * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa + * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH + * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT + * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q + * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie + * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU + * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB + * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi + * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y + * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo + * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 + * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 + * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 + * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 + * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC + * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF + * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * publicExponent: 65537 (0x10001) + * privateExponent: + * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: + * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: + * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: + * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: + * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: + * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: + * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: + * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: + * 37:6b:37:59:ed:db:6d:b1 + * prime1: + * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: + * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: + * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: + * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: + * d6:11:4c:99:c7 + * prime2: + * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: + * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: + * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: + * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: + * e0:e1:84:ff:2f + * exponent1: + * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: + * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: + * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: + * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: + * 12:b7:6e:91 + * exponent2: + * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: + * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: + * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: + * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: + * 19:7b:b0:de:53 + * coefficient: + * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: + * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: + * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: + * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: + * 12:d7:eb:4f + * + * + * server certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 7 (0x7) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:27:57 2008 GMT + * Not After : Aug 25 03:27:57 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1 + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 + * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 + * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS + * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB + * MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva + * cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h + * pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun + * nZif + * -----END CERTIFICATE----- + * + * + * TLS client certificate: + * client private key: + * ----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 + * + * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 + * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf + * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak + * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH + * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat + * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 + * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ + * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ + * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN + * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U + * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO + * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig + * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 + * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z + * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB + * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW + * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf + * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 + * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 + * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX + * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM + * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 + * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j + * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY + * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * publicExponent: 65537 (0x10001) + * privateExponent: + * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: + * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: + * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: + * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: + * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: + * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: + * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: + * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: + * e5:28:9b:f9:4c:94:c6:b1 + * prime1: + * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: + * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: + * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: + * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: + * e2:a0:4d:ab:b5 + * prime2: + * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: + * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: + * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: + * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: + * 76:7d:ce:32:8f + * exponent1: + * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: + * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: + * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: + * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: + * 4c:de:38:95 + * exponent2: + * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: + * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: + * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: + * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: + * 0d:78:df:fd + * coefficient: + * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: + * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: + * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: + * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: + * 35:92:f2:e3 + * + * client certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 6 (0x6) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:27:34 2008 GMT + * Not After : Aug 25 03:27:34 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1 + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas + * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV + * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq + * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB + * MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx + * HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP + * i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC + * I9aw + * -----END CERTIFICATE----- + * + * + * + * Trusted CA certificate: + * Certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 0 (0x0) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 02:43:36 2008 GMT + * Not After : Aug 25 02:43:36 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: + * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: + * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: + * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: + * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: + * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: + * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: + * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: + * 89:2a:95:12:4c:d8:09:2a:e9 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Subject Key Identifier: + * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org + * serial:00 + * + * X509v3 Basic Constraints: + * CA:TRUE + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX + * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj + * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G + * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ + * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt + * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw + * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA + * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ + * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P + * 6Mvf0r1PNTY2hwTJLJmKtg== + * -----END CERTIFICATE--- + */ + + +public class IPIdentities { + static Map cookies; + ServerSocket ss; + + /* + * ============================================================= + * Set the various variables needed for the tests, then + * specify what tests to run on each side. + */ + + /* + * Should we run the client or server in a separate thread? + * Both sides can throw exceptions, but do you have a preference + * as to which side should be the main thread. + */ + static boolean separateServerThread = true; + + /* + * Where do we find the keystores? + */ + static String trusedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + + "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + + "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + + "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + + "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + + "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + + "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + + "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + + "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + + "6Mvf0r1PNTY2hwTJLJmKtg==\n" + + "-----END CERTIFICATE-----"; + + static String serverCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + + "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + + "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + + "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + + "MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva\n" + + "cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h\n" + + "pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun\n" + + "nZif\n" + + "-----END CERTIFICATE-----"; + + static String clientCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + + "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + + "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + + "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + + "MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx\n" + + "HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP\n" + + "i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC\n" + + "I9aw\n" + + "-----END CERTIFICATE-----"; + + + static byte serverPrivateExponent[] = { + (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, + (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, + (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, + (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, + (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, + (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, + (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, + (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, + (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, + (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, + (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, + (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, + (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, + (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, + (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, + (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, + (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, + (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, + (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, + (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, + (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, + (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, + (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, + (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, + (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, + (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, + (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, + (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, + (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, + (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, + (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, + (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 + }; + + static byte serverModulus[] = { + (byte)0x00, + (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, + (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, + (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, + (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, + (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, + (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, + (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, + (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, + (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, + (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, + (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, + (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, + (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, + (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, + (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, + (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, + (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, + (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, + (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, + (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, + (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, + (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, + (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, + (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, + (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, + (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, + (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, + (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, + (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, + (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, + (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, + (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 + }; + + static byte clientPrivateExponent[] = { + (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, + (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, + (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, + (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, + (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, + (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, + (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, + (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, + (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, + (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, + (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, + (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, + (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, + (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, + (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, + (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, + (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, + (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, + (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, + (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, + (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, + (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, + (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, + (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, + (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, + (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, + (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, + (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, + (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, + (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, + (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, + (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 + }; + + static byte clientModulus[] = { + (byte)0x00, + (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, + (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, + (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, + (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, + (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, + (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, + (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, + (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, + (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, + (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, + (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, + (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, + (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, + (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, + (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, + (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, + (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, + (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, + (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, + (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, + (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, + (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, + (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, + (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, + (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, + (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, + (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, + (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, + (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, + (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, + (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, + (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b + }; + + static char passphrase[] = "passphrase".toCharArray(); + + /* + * Is the server ready to serve? + */ + volatile static boolean serverReady = false; + + /* + * Turn on SSL debugging? + */ + static boolean debug = false; + + private SSLServerSocket sslServerSocket = null; + + /* + * Define the server side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doServerSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, serverCertStr, + serverModulus, serverPrivateExponent, passphrase); + SSLServerSocketFactory sslssf = context.getServerSocketFactory(); + + sslServerSocket = + (SSLServerSocket) sslssf.createServerSocket(serverPort); + serverPort = sslServerSocket.getLocalPort(); + + /* + * Signal Client, we're ready for his connect. + */ + serverReady = true; + + SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); + sslSocket.setNeedClientAuth(true); + if (sslSocket instanceof SSLSocketImpl) { + ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); + } + + PrintStream out = + new PrintStream(sslSocket.getOutputStream()); + + try { + // ignore request data + + // send the response + out.print("HTTP/1.1 200 OK\r\n"); + out.print("Content-Type: text/html; charset=iso-8859-1\r\n"); + out.print("Content-Length: "+ 9 +"\r\n"); + out.print("\r\n"); + out.print("Testing\r\n"); + out.flush(); + } finally { + // close the socket + Thread.sleep(2000); + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; + } + + } + + /* + * Define the client side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, clientCertStr, + clientModulus, clientPrivateExponent, passphrase); + + SSLContext.setDefault(context); + + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } + + HttpsURLConnection http = null; + + /* establish http connection to server */ + URL url = new URL("https://localhost:" + serverPort+"/"); + System.out.println("url is "+url.toString()); + + http = (HttpsURLConnection)url.openConnection(); + + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + + http.disconnect(); + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // use any free port by default + volatile int serverPort = 0; + + volatile Exception serverException = null; + volatile Exception clientException = null; + + public static void main(String args[]) throws Exception { + if (debug) + System.setProperty("javax.net.debug", "all"); + + /* + * Start the tests. + */ + new IPIdentities(); + } + + Thread clientThread = null; + Thread serverThread = null; + /* + * Primary constructor, used to drive remainder of the test. + * + * Fork off the other side, then do your work. + */ + IPIdentities() throws Exception { + if (separateServerThread) { + startServer(true); + startClient(false); + } else { + startClient(true); + startServer(false); + } + + /* + * Wait for other side to close down. + */ + if (separateServerThread) { + serverThread.join(); + } else { + clientThread.join(); + } + + /* + * When we get here, the test is pretty much over. + * + * If the main thread excepted, that propagates back + * immediately. If the other thread threw an exception, we + * should report back. + */ + if (serverException != null) + throw serverException; + if (clientException != null) + throw clientException; + } + + void startServer(boolean newThread) throws Exception { + if (newThread) { + serverThread = new Thread() { + public void run() { + try { + doServerSide(); + } catch (Exception e) { + /* + * Our server thread just died. + * + * Release the client, if not active already... + */ + System.err.println("Server died..."); + serverReady = true; + serverException = e; + } + } + }; + serverThread.start(); + } else { + doServerSide(); + } + } + + void startClient(boolean newThread) throws Exception { + if (newThread) { + clientThread = new Thread() { + public void run() { + try { + doClientSide(); + } catch (Exception e) { + /* + * Our client thread just died. + */ + System.err.println("Client died..."); + clientException = e; + } + } + }; + clientThread.start(); + } else { + doClientSide(); + } + } + + // get the ssl context + private static SSLContext getSSLContext(String trusedCertStr, + String keyCertStr, byte[] modulus, + byte[] privateExponent, char[] passphrase) throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + ByteArrayInputStream is = + new ByteArrayInputStream(trusedCertStr.getBytes()); + Certificate trusedCert = cf.generateCertificate(is); + is.close(); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + ks.setCertificateEntry("RSA Export Signer", trusedCert); + + if (keyCertStr != null) { + // generate the private key. + RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( + new BigInteger(modulus), + new BigInteger(privateExponent)); + KeyFactory kf = KeyFactory.getInstance("RSA"); + RSAPrivateKey priKey = + (RSAPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(keyCertStr.getBytes()); + Certificate keyCert = cf.generateCertificate(is); + is.close(); + + Certificate[] chain = new Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry. + ks.setKeyEntry("Whatever", priKey, passphrase, chain); + } + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + SSLContext ctx = SSLContext.getInstance("TLS"); + + if (keyCertStr != null) { + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + ctx.init(null, tmf.getTrustManagers(), null); + } + + return ctx; + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,879 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @summary X509 certificate hostname checking is broken in JDK1.6.0_10 + * @bug 6766775 + * @author Xuelei Fan + */ + +import java.net.*; +import java.util.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.KeyFactory; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.spec.*; +import java.security.interfaces.*; +import java.math.BigInteger; + +import sun.security.ssl.SSLSocketImpl; + +/* + * Certificates and key used in the test. + * + * TLS server certificate: + * server private key: + * -----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A + * + * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e + * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI + * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n + * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb + * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP + * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz + * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF + * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J + * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa + * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH + * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT + * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q + * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie + * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU + * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB + * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi + * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y + * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo + * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 + * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 + * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 + * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 + * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC + * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF + * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * publicExponent: 65537 (0x10001) + * privateExponent: + * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: + * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: + * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: + * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: + * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: + * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: + * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: + * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: + * 37:6b:37:59:ed:db:6d:b1 + * prime1: + * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: + * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: + * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: + * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: + * d6:11:4c:99:c7 + * prime2: + * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: + * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: + * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: + * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: + * e0:e1:84:ff:2f + * exponent1: + * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: + * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: + * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: + * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: + * 12:b7:6e:91 + * exponent2: + * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: + * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: + * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: + * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: + * 19:7b:b0:de:53 + * coefficient: + * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: + * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: + * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: + * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: + * 12:d7:eb:4f + * + * + * server certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 4 (0x4) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:21:16 2008 GMT + * Not After : Aug 25 03:21:16 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: + * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: + * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: + * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: + * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: + * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: + * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: + * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: + * 30:05:40:2c:4f:ab:d9:74:89 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1, DNS:localhost + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICqjCCAhOgAwIBAgIBBDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzIxMTZaFw0yODA4MjUwMzIxMTZaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 + * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 + * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS + * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjeTB3MAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB + * gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAWTrftGaL73lKLgRTrChGR+F6 + * //qvs0OM94IOKVeHz36NO49cMJmhJSbKdiGIkppBgpLIBoWxZlN9NOO9oSXFYZsZ + * rHaAe9/lWMtQM7XpjqjhWVhB5VPvWFbkorQFMtRYLf7pkonGPFq8GOO1s0TKhogC + * jtYCdzlrU4v+om/J3H8= + * -----END CERTIFICATE----- + * + * + * TLS client certificate: + * client private key: + * ----BEGIN RSA PRIVATE KEY----- + * Proc-Type: 4,ENCRYPTED + * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 + * + * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 + * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf + * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak + * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH + * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat + * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 + * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ + * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ + * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN + * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U + * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO + * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig + * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= + * -----END RSA PRIVATE KEY----- + * + * -----BEGIN RSA PRIVATE KEY----- + * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 + * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z + * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB + * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW + * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf + * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 + * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 + * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX + * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM + * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 + * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j + * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY + * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== + * -----END RSA PRIVATE KEY----- + * + * Private-Key: (1024 bit) + * modulus: + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * publicExponent: 65537 (0x10001) + * privateExponent: + * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: + * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: + * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: + * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: + * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: + * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: + * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: + * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: + * e5:28:9b:f9:4c:94:c6:b1 + * prime1: + * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: + * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: + * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: + * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: + * e2:a0:4d:ab:b5 + * prime2: + * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: + * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: + * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: + * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: + * 76:7d:ce:32:8f + * exponent1: + * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: + * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: + * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: + * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: + * 4c:de:38:95 + * exponent2: + * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: + * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: + * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: + * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: + * 0d:78:df:fd + * coefficient: + * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: + * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: + * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: + * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: + * 35:92:f2:e3 + * + * client certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 5 (0x5) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 03:22:10 2008 GMT + * Not After : Aug 25 03:22:10 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: + * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: + * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: + * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: + * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: + * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: + * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: + * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: + * 75:8d:f5:82:ac:43:92:44:1b + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Basic Constraints: + * CA:FALSE + * X509v3 Key Usage: + * Digital Signature, Non Repudiation, Key Encipherment + * X509v3 Subject Key Identifier: + * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * + * X509v3 Subject Alternative Name: critical + * IP Address:127.0.0.1, DNS:localhost + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICqjCCAhOgAwIBAgIBBTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMzIyMTBaFw0yODA4MjUwMzIyMTBaMHIxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD + * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas + * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV + * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq + * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjeTB3MAkGA1UdEwQCMAAw + * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV + * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB + * gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAwDc4f13abs9ZeEkrl5WV2Z74 + * BlmBhXu8ExtAvoF9q6Ug6xV1MDpxbD124KfUHHL0kNMhMB1WIpC0kOnQBxziNpfS + * 7u6GOc3tWLSxw/sHoJGCefnRBllLZOoQuSBrWB8qgilL6HRmZ4UqDcXu4UCaLBZ0 + * KGDT5ASEN6Lq2GtiP4Y= + * -----END CERTIFICATE----- + * + * + * + * Trusted CA certificate: + * Certificate: + * Data: + * Version: 3 (0x2) + * Serial Number: 0 (0x0) + * Signature Algorithm: md5WithRSAEncryption + * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Validity + * Not Before: Dec 8 02:43:36 2008 GMT + * Not After : Aug 25 02:43:36 2028 GMT + * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org + * Subject Public Key Info: + * Public Key Algorithm: rsaEncryption + * RSA Public Key: (1024 bit) + * Modulus (1024 bit): + * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: + * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: + * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: + * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: + * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: + * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: + * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: + * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: + * 89:2a:95:12:4c:d8:09:2a:e9 + * Exponent: 65537 (0x10001) + * X509v3 extensions: + * X509v3 Subject Key Identifier: + * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * X509v3 Authority Key Identifier: + * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 + * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org + * serial:00 + * + * X509v3 Basic Constraints: + * CA:TRUE + * Signature Algorithm: md5WithRSAEncryption + * + * -----BEGIN CERTIFICATE----- + * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET + * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK + * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ + * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp + * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX + * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj + * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G + * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ + * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt + * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw + * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA + * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ + * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P + * 6Mvf0r1PNTY2hwTJLJmKtg== + * -----END CERTIFICATE--- + */ + + +public class Identities { + static Map cookies; + ServerSocket ss; + + /* + * ============================================================= + * Set the various variables needed for the tests, then + * specify what tests to run on each side. + */ + + /* + * Should we run the client or server in a separate thread? + * Both sides can throw exceptions, but do you have a preference + * as to which side should be the main thread. + */ + static boolean separateServerThread = true; + + /* + * Where do we find the keystores? + */ + static String trusedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + + "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + + "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + + "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + + "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + + "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + + "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + + "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + + "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + + "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + + "6Mvf0r1PNTY2hwTJLJmKtg==\n" + + "-----END CERTIFICATE-----"; + + static String serverCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICqjCCAhOgAwIBAgIBBDANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzIxMTZaFw0yODA4MjUwMzIxMTZaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + + "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + + "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + + "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjeTB3MAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB\n" + + "gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAWTrftGaL73lKLgRTrChGR+F6\n" + + "//qvs0OM94IOKVeHz36NO49cMJmhJSbKdiGIkppBgpLIBoWxZlN9NOO9oSXFYZsZ\n" + + "rHaAe9/lWMtQM7XpjqjhWVhB5VPvWFbkorQFMtRYLf7pkonGPFq8GOO1s0TKhogC\n" + + "jtYCdzlrU4v+om/J3H8=\n" + + "-----END CERTIFICATE-----"; + + static String clientCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICqjCCAhOgAwIBAgIBBTANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + + "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + + "EwhTb21lLU9yZzAeFw0wODEyMDgwMzIyMTBaFw0yODA4MjUwMzIyMTBaMHIxCzAJ\n" + + "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + + "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + + "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + + "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + + "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + + "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjeTB3MAkGA1UdEwQCMAAw\n" + + "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + + "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDAdBgNVHREBAf8EEzARhwR/AAAB\n" + + "gglsb2NhbGhvc3QwDQYJKoZIhvcNAQEEBQADgYEAwDc4f13abs9ZeEkrl5WV2Z74\n" + + "BlmBhXu8ExtAvoF9q6Ug6xV1MDpxbD124KfUHHL0kNMhMB1WIpC0kOnQBxziNpfS\n" + + "7u6GOc3tWLSxw/sHoJGCefnRBllLZOoQuSBrWB8qgilL6HRmZ4UqDcXu4UCaLBZ0\n" + + "KGDT5ASEN6Lq2GtiP4Y=\n" + + "-----END CERTIFICATE-----"; + + static byte serverPrivateExponent[] = { + (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, + (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, + (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, + (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, + (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, + (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, + (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, + (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, + (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, + (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, + (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, + (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, + (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, + (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, + (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, + (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, + (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, + (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, + (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, + (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, + (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, + (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, + (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, + (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, + (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, + (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, + (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, + (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, + (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, + (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, + (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, + (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 + }; + + static byte serverModulus[] = { + (byte)0x00, + (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, + (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, + (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, + (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, + (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, + (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, + (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, + (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, + (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, + (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, + (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, + (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, + (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, + (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, + (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, + (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, + (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, + (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, + (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, + (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, + (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, + (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, + (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, + (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, + (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, + (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, + (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, + (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, + (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, + (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, + (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, + (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 + }; + + static byte clientPrivateExponent[] = { + (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, + (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, + (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, + (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, + (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, + (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, + (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, + (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, + (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, + (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, + (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, + (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, + (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, + (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, + (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, + (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, + (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, + (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, + (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, + (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, + (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, + (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, + (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, + (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, + (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, + (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, + (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, + (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, + (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, + (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, + (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, + (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 + }; + + static byte clientModulus[] = { + (byte)0x00, + (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, + (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, + (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, + (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, + (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, + (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, + (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, + (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, + (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, + (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, + (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, + (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, + (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, + (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, + (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, + (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, + (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, + (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, + (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, + (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, + (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, + (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, + (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, + (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, + (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, + (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, + (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, + (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, + (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, + (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, + (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, + (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b + }; + + static char passphrase[] = "passphrase".toCharArray(); + + /* + * Is the server ready to serve? + */ + volatile static boolean serverReady = false; + + /* + * Turn on SSL debugging? + */ + static boolean debug = false; + + private SSLServerSocket sslServerSocket = null; + + /* + * Define the server side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doServerSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, serverCertStr, + serverModulus, serverPrivateExponent, passphrase); + SSLServerSocketFactory sslssf = context.getServerSocketFactory(); + + sslServerSocket = + (SSLServerSocket) sslssf.createServerSocket(serverPort); + serverPort = sslServerSocket.getLocalPort(); + + /* + * Signal Client, we're ready for his connect. + */ + serverReady = true; + + SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); + sslSocket.setNeedClientAuth(true); + if (sslSocket instanceof SSLSocketImpl) { + ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); + } + + PrintStream out = + new PrintStream(sslSocket.getOutputStream()); + + try { + // ignore request data + + // send the response + out.print("HTTP/1.1 200 OK\r\n"); + out.print("Content-Type: text/html; charset=iso-8859-1\r\n"); + out.print("Content-Length: "+ 9 +"\r\n"); + out.print("\r\n"); + out.print("Testing\r\n"); + out.flush(); + } finally { + // close the socket + Thread.sleep(2000); + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; + } + + } + + /* + * Define the client side of the test. + * + * If the server prematurely exits, serverReady will be set to true + * to avoid infinite hangs. + */ + void doClientSide() throws Exception { + SSLContext context = getSSLContext(trusedCertStr, clientCertStr, + clientModulus, clientPrivateExponent, passphrase); + + SSLContext.setDefault(context); + + /* + * Wait for server to get started. + */ + while (!serverReady) { + Thread.sleep(50); + } + + HttpsURLConnection http = null; + + /* establish http connection to server */ + URL url = new URL("https://localhost:" + serverPort+"/"); + System.out.println("url is "+url.toString()); + + http = (HttpsURLConnection)url.openConnection(); + + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + + http.disconnect(); + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // use any free port by default + volatile int serverPort = 0; + + volatile Exception serverException = null; + volatile Exception clientException = null; + + public static void main(String args[]) throws Exception { + if (debug) + System.setProperty("javax.net.debug", "all"); + + /* + * Start the tests. + */ + new Identities(); + } + + Thread clientThread = null; + Thread serverThread = null; + /* + * Primary constructor, used to drive remainder of the test. + * + * Fork off the other side, then do your work. + */ + Identities() throws Exception { + if (separateServerThread) { + startServer(true); + startClient(false); + } else { + startClient(true); + startServer(false); + } + + /* + * Wait for other side to close down. + */ + if (separateServerThread) { + serverThread.join(); + } else { + clientThread.join(); + } + + /* + * When we get here, the test is pretty much over. + * + * If the main thread excepted, that propagates back + * immediately. If the other thread threw an exception, we + * should report back. + */ + if (serverException != null) + throw serverException; + if (clientException != null) + throw clientException; + } + + void startServer(boolean newThread) throws Exception { + if (newThread) { + serverThread = new Thread() { + public void run() { + try { + doServerSide(); + } catch (Exception e) { + /* + * Our server thread just died. + * + * Release the client, if not active already... + */ + System.err.println("Server died..."); + serverReady = true; + serverException = e; + } + } + }; + serverThread.start(); + } else { + doServerSide(); + } + } + + void startClient(boolean newThread) throws Exception { + if (newThread) { + clientThread = new Thread() { + public void run() { + try { + doClientSide(); + } catch (Exception e) { + /* + * Our client thread just died. + */ + System.err.println("Client died..."); + clientException = e; + } + } + }; + clientThread.start(); + } else { + doClientSide(); + } + } + + // get the ssl context + private static SSLContext getSSLContext(String trusedCertStr, + String keyCertStr, byte[] modulus, + byte[] privateExponent, char[] passphrase) throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + ByteArrayInputStream is = + new ByteArrayInputStream(trusedCertStr.getBytes()); + Certificate trusedCert = cf.generateCertificate(is); + is.close(); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + ks.setCertificateEntry("RSA Export Signer", trusedCert); + + if (keyCertStr != null) { + // generate the private key. + RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( + new BigInteger(modulus), + new BigInteger(privateExponent)); + KeyFactory kf = KeyFactory.getInstance("RSA"); + RSAPrivateKey priKey = + (RSAPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(keyCertStr.getBytes()); + Certificate keyCert = cf.generateCertificate(is); + is.close(); + + Certificate[] chain = new Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry. + ks.setKeyEntry("Whatever", priKey, passphrase, chain); + } + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + SSLContext ctx = SSLContext.getInstance("TLS"); + + if (keyCertStr != null) { + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + ctx.init(null, tmf.getTrustManagers(), null); + } + + return ctx; + } + +} diff -r 482f63894bb1 -r 44158f6d3b94 jdk/test/sun/security/tools/jarsigner/oldsig.sh --- a/jdk/test/sun/security/tools/jarsigner/oldsig.sh Wed Jul 05 17:09:16 2017 +0200 +++ b/jdk/test/sun/security/tools/jarsigner/oldsig.sh Wed Jul 05 17:09:51 2017 +0200 @@ -1,5 +1,5 @@ # -# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2007-2010 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,7 @@ # # @test -# @bug 6543940 +# @bug 6543940 6868865 # @summary Exception thrown when signing a jarfile in java 1.5 # # @run shell oldsig.sh @@ -77,5 +77,6 @@ ${TESTJAVA}${FS}bin${FS}jarsigner \ -keystore ${TESTSRC}${FS}JarSigning.keystore \ -storepass bbbbbb \ + -digestalg SHA1 \ B.jar c ${TESTJAVA}${FS}bin${FS}jarsigner -verify B.jar diff -r 482f63894bb1 -r 44158f6d3b94 langtools/.hgtags --- a/langtools/.hgtags Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/.hgtags Wed Jul 05 17:09:51 2017 +0200 @@ -62,3 +62,4 @@ 136bfc67946219fb02ee223984540a4a9c5b209f jdk7-b85 ef07347428f2198ae6b8144ac0b9086bbe39fd16 jdk7-b86 409db93d19c002333980df5b797c6b965150c7a0 jdk7-b87 +f9b5d4867a26f8c4b90ad37fe2c345b721e93d6b jdk7-b88 diff -r 482f63894bb1 -r 44158f6d3b94 langtools/make/Makefile --- a/langtools/make/Makefile Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/make/Makefile Wed Jul 05 17:09:51 2017 +0200 @@ -188,10 +188,16 @@ # All ant targets of interest ANT_TARGETS = build clean sanity post-sanity diagnostics # for now +# Create diagnostics log (careful, ant 1.8.0 -diagnostics always does an exit 1) +$(OUTPUTDIR)/build/ant-diagnostics.log: + @mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR) + @$(RM) $@ + $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $@ ; \ + $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -version >> $@ + # Create a make target for each -$(ANT_TARGETS): +$(ANT_TARGETS): $(OUTPUTDIR)/build/ant-diagnostics.log @ mkdir -p $(OUTPUTDIR)/build $(ANT_TMPDIR) - $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) -diagnostics > $(OUTPUTDIR)/build/ant-diagnostics.log $(ANT_JAVA_HOME) $(ANT_OPTS) $(ANT) $(ANT_OPTIONS) $@ #------------------------------------------------------------------- diff -r 482f63894bb1 -r 44158f6d3b94 langtools/make/jprt.properties --- a/langtools/make/jprt.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/make/jprt.properties Wed Jul 05 17:09:51 2017 +0200 @@ -50,6 +50,5 @@ jprt.test.targets= # Directories needed to build -jprt.bundle.src.dirs=make src jprt.bundle.exclude.src.dirs=build dist diff -r 482f63894bb1 -r 44158f6d3b94 langtools/src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java --- a/langtools/src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/src/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java Wed Jul 05 17:09:51 2017 +0200 @@ -229,23 +229,24 @@ if (kind == ENUM) { List enclosedElements = new ArrayList(e.getEnclosedElements()); + // Handle any enum constants specially before other entities. List enumConstants = new ArrayList(); for(Element element : enclosedElements) { if (element.getKind() == ENUM_CONSTANT) enumConstants.add(element); } - - int i; - for(i = 0; i < enumConstants.size()-1; i++) { + if (!enumConstants.isEmpty()) { + int i; + for(i = 0; i < enumConstants.size()-1; i++) { + this.visit(enumConstants.get(i), true); + writer.print(","); + } this.visit(enumConstants.get(i), true); - writer.print(","); - } - if (i >= 0 ) { - this.visit(enumConstants.get(i), true); - writer.print(";"); + writer.println(";\n"); + + enclosedElements.removeAll(enumConstants); } - enclosedElements.removeAll(enumConstants); for(Element element : enclosedElements) this.visit(element); } else { diff -r 482f63894bb1 -r 44158f6d3b94 langtools/src/share/classes/com/sun/tools/javah/JavahTask.java --- a/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java Wed Jul 05 17:09:51 2017 +0200 @@ -318,12 +318,6 @@ int run(String[] args) { try { handleOptions(args); - if (classes == null || classes.size() == 0) { - if (help || version || fullVersion) - return 0; - else - return 1; - } boolean ok = run(); return ok ? 0 : 1; } catch (BadArgs e) { @@ -355,7 +349,7 @@ fileManager = getDefaultFileManager(diagnosticListener, log); Iterator iter = args.iterator(); - boolean noArgs = !iter.hasNext(); + noArgs = !iter.hasNext(); while (iter.hasNext()) { String arg = iter.next(); @@ -416,9 +410,9 @@ Util util = new Util(log, diagnosticListener); - if (help) { + if (noArgs || help) { showHelp(); - return true; + return help; // treat noArgs as an error for purposes of exit code } if (version || fullVersion) { @@ -636,6 +630,7 @@ String usercp; List classes; boolean verbose; + boolean noArgs; boolean help; boolean trace; boolean version; diff -r 482f63894bb1 -r 44158f6d3b94 langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java --- a/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java Wed Jul 05 17:09:51 2017 +0200 @@ -225,15 +225,15 @@ writeModifiers(flags.getFieldModifiers()); Signature_attribute sigAttr = getSignature(f.attributes); if (sigAttr == null) - print(getFieldType(f.descriptor)); + print(getJavaFieldType(f.descriptor)); else { try { Type t = sigAttr.getParsedSignature().getType(constant_pool); - print(t); + print(getJavaName(t.toString())); } catch (ConstantPoolException e) { // report error? // fall back on non-generic descriptor - print(getFieldType(f.descriptor)); + print(getJavaFieldType(f.descriptor)); } } print(" "); @@ -314,14 +314,14 @@ } if (getName(m).equals("")) { print(getJavaName(classFile)); - print(getParameterTypes(d, flags)); + print(getJavaParameterTypes(d, flags)); } else if (getName(m).equals("")) { print("{}"); } else { - print(getReturnType(d)); + print(getJavaReturnType(d)); print(" "); print(getName(m)); - print(getParameterTypes(d, flags)); + print(getJavaParameterTypes(d, flags)); } Attribute e_attr = m.attributes.get(Attribute.Exceptions); @@ -460,9 +460,9 @@ } } - String getFieldType(Descriptor d) { + String getJavaFieldType(Descriptor d) { try { - return d.getFieldType(constant_pool); + return getJavaName(d.getFieldType(constant_pool)); } catch (ConstantPoolException e) { return report(e); } catch (DescriptorException e) { @@ -470,9 +470,9 @@ } } - String getReturnType(Descriptor d) { + String getJavaReturnType(Descriptor d) { try { - return d.getReturnType(constant_pool); + return getJavaName(d.getReturnType(constant_pool)); } catch (ConstantPoolException e) { return report(e); } catch (DescriptorException e) { @@ -480,9 +480,9 @@ } } - String getParameterTypes(Descriptor d, AccessFlags flags) { + String getJavaParameterTypes(Descriptor d, AccessFlags flags) { try { - return adjustVarargs(flags, d.getParameterTypes(constant_pool)); + return getJavaName(adjustVarargs(flags, d.getParameterTypes(constant_pool))); } catch (ConstantPoolException e) { return report(e); } catch (DescriptorException e) { diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/Makefile --- a/langtools/test/Makefile Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/Makefile Wed Jul 05 17:09:51 2017 +0200 @@ -1,6 +1,20 @@ # -# Makefile to run jtreg and any other tests +# Makefile to run jtreg and other tests +# + +# Product builds and langtools builds +# +# A full product build (or "control" build) creates a complete JDK image. +# To test a product build, set TESTJAVA to the path for the image. # +# A langtools build just builds the langtools components of a JDK. +# To test a langtools build, set TESTJAVA to the path for a recent JDK +# build, and set TESTBOOTCLASSPATH to the compiled langtools classes -- +# for example build/classes or dist/lib/classes.jar. + +# JPRT +# JPRT may invoke this Makefile directly, as part of a langtools build, +# or indirectly, via FOREST/test/Makefile, as part of a control build. # Get OS/ARCH specifics OSNAME = $(shell uname -s) @@ -41,8 +55,11 @@ # Root of this test area (important to use full paths in some places) TEST_ROOT := $(shell pwd) -# Default bundle of all test results (passed or not) -JPRT_ARCHIVE_BUNDLE=$(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip +# Default bundle of all test results (passed or not) (JPRT only) +ifdef JPRT_JOB_ID + JPRT_CLEAN = clean + JPRT_ARCHIVE_BUNDLE = $(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip +endif ifeq ($(PLATFORM), windows) SLASH_JAVA = J: @@ -57,8 +74,21 @@ JTREG_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg endif JTREG = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtreg +JTDIFF = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtdiff -# Default JDK for JTREG +# Default JCK to run +ifdef JPRT_JCK_HOME + JCK_HOME = $(JPRT_JCK_HOME) +else + JCK_HOME = $(SLASH_JAVA)/re/jck/7/promoted/latest/binaries +endif + +# Default JDK for JTREG and JCK +# +# JT_JAVA is the version of java used to run jtreg/JCK. Since it is now +# standard to execute tests in sameVM mode, it should normally be set the +# same as TESTJAVA (although not necessarily so.) +# ifdef JPRT_JAVA_HOME JT_JAVA = $(JPRT_JAVA_HOME) else @@ -72,49 +102,275 @@ TESTJAVA = $(SLASH_JAVA)/re/jdk/1.7.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH) endif -TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar +# PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from +# make/Makefile +# For langtools, this is a directory containing build and dist +# For a control build, this is build/$(PRODUCT)-$(ARCH)/j2sdk-image +ifdef PRODUCT_HOME + ifeq ($(shell [ -r $(PRODUCT_HOME)/dist/lib/classes.jar ]; echo $$?),0) + TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar + endif + ifeq ($(shell [ -r $(PRODUCT_HOME)/lib/tools.jar ]; echo $$?),0) + TESTJAVA = $(PRODUCT_HOME) + endif +endif + +ifdef TESTBOOTCLASSPATH + JTREG_OPTIONS += -Xbootclasspath/p:$(TESTBOOTCLASSPATH) +### In the following, -refvmoptions is an undocumented option +### The following does not work JCK 7 b30 2/6/2010. Awaiting b31. + JCK_OPTIONS += \ + -vmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH) \ + -refvmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH) +endif + +# Concurrency is the number of tests that can execute at once. +# Supported for JCK, not supported for jtreg. +# On an otherwise empty machine, suggest setting to (#cpus + 2) +# If unset, the default is (#cpus) +### RFE: determine and use #cpus +ifdef JCK_CONCURRENCY + JCK_OPTIONS += -concurrency:$(JCK_CONCURRENCY) +endif + +# JCK is executed using "Multi-JVM Group Mode", which is a hybrid +# of otherVM and sameVM modes. New JVMs are created and reused for +# a number of tests, then eventually discarded and a new one started. +# This amortizes the JVM startup time. The "group size" defines +# how many tests are run in a JVM before it is replaced. +# If unset, the default is 100. +JCK_GROUP_SIZE = 1000 +ifdef JCK_GROUP_SIZE + JCK_COMPILER_OPTIONS += \ + -jtoptions:-Ejck.env.compiler.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE) \ + -jtoptions:-Ejck.env.compiler.compRefExecute.groupMode.groupSize=$(JCK_GROUP_SIZE) +### The following is not supported. Awaiting RFE 6924287 +### 6924287: Jck4Jdk: Allow to configure test group size for group mode via simple command line option +### JCK_RUNTIME_OPTIONS += \ +### -jtoptions:-Ejck.env.runtime.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE) +endif + +# Assertions: some tests show failures when assertions are enabled. +# Since javac is typically loaded via the bootclassloader (either via TESTJAVA +# or TESTBOOTCLASSPATH), you may need -esa to enable assertions in javac. +JTREG_OPTIONS += $(ASSERTION_OPTIONS) +JCK_OPTIONS += $(ASSERTION_OPTIONS:%=-vmoptions:%) + +# Include shared options +JCK_COMPILER_OPTIONS += $(JCK_OPTIONS) +JCK_RUNTIME_OPTIONS += $(JCK_OPTIONS) + +# Exit codes: +# jtreg, jck: 0: OK, 1: tests failed, 2: tests error; 3+: SERIOUS +FATAL_JTREG_EXIT = 3 +FATAL_JCK_EXIT = 3 +# jtdiff: 0: OK, 1: differences found; 2+: SERIOUS +FATAL_JTDIFF_EXIT = 2 +# +# Exit -- used for final "normal" exit from "make". Redefine to "true" to avoid +# having make exit with non-zero return code. +EXIT = exit +# Function to exit shell if exit code of preceding command is greater than or equal +# to a given level. Redefine function or preceding FATAL_*_EXIT codes as needed. +EXIT_IF_FATAL = status=$$?; if [ $$status -ge $(1) ]; then exit $$status ; fi # The test directories to run DEFAULT_TESTDIRS = . TESTDIRS = $(DEFAULT_TESTDIRS) # Root of all test results -TEST_OUTPUT_DIR = $(TEST_ROOT)/o_$(PLATFORM)-$(ARCH) +TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools +ABS_TEST_OUTPUT_DIR := \ + $(shell mkdir -p $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools; \ + cd $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools; \ + pwd ) +# Subdirectories for different test runs +JTREG_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jtreg +JCK_COMPILER_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-compiler +JCK_RUNTIME_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-runtime-Xcompile -# Default make rule -all apt javac javadoc javah javap: clean check jtreg-tests $(JPRT_ARCHIVE_BUNDLE) +# Default make rule -- warning, may take a while +all: $(JPRT_CLEAN) jtreg-tests jck-compiler-tests jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) all-summary + @echo "Testing completed successfully" + +jtreg apt javac javadoc javah javap: $(JPRT_CLEAN) jtreg-tests $(JPRT_ARCHIVE_BUNDLE) jtreg-summary + @echo "Testing completed successfully" + +jck-compiler: $(JPRT_CLEAN) jck-compiler-tests $(JPRT_ARCHIVE_BUNDLE) jck-compiler-summary + @echo "Testing completed successfully" + +jck-runtime: $(JPRT_CLEAN) jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) jck-runtime-summary @echo "Testing completed successfully" # for use with JPRT -testrule -all: TESTDIRS = . -apt: TESTDIRS = tools/apt -javac: TESTDIRS = tools/javac -javadoc: TESTDIRS = tools/javadoc com/sun/javadoc -javah: TESTDIRS = tools/javah -javap: TESTDIRS = tools/javap +all: JTREG_TESTDIRS = . +jtreg: JTREG_TESTDIRS = . +apt: JTREG_TESTDIRS = tools/apt +javac: JTREG_TESTDIRS = tools/javac +javadoc: JTREG_TESTDIRS = tools/javadoc com/sun/javadoc +javah: JTREG_TESTDIRS = tools/javah +javap: JTREG_TESTDIRS = tools/javap + +# Run jtreg tests +# +# JTREG_HOME +# Installed location of jtreg +# JT_JAVA +# Version of java used to run jtreg. Should normally be the same as TESTJAVA +# TESTJAVA +# Version of java to be tested. +# JTREG_OPTIONS +# Additional options for jtreg +# JTREG_TESTDIRS +# Directories of tests to be run +# JTREG_OUTPUT_DIR +# Where to write the results +# JTREG_REFERENCE +# (Optional) reference results (e.g. work, report or summary.txt) +# +jtreg-tests: check-jtreg FRC + @rm -f -r $(JTREG_OUTPUT_DIR)/JTwork $(JTREG_OUTPUT_DIR)/JTreport \ + $(JTREG_OUTPUT_DIR)/diff.html $(JTREG_OUTPUT_DIR)/status.txt + @mkdir -p $(JTREG_OUTPUT_DIR) + JT_JAVA=$(JT_JAVA) $(JTREG) \ + -J-Xmx512m \ + -a -samevm -ignore:quiet -v:fail,error,nopass \ + -r:$(JTREG_OUTPUT_DIR)/JTreport \ + -w:$(JTREG_OUTPUT_DIR)/JTwork \ + -jdk:$(TESTJAVA) \ + $(JAVA_ARGS:%=-vmoption:%) \ + $(JTREG_OPTIONS) \ + $(JTREG_TESTDIRS) \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JTREG_EXIT)) ; \ + echo $$status > $(JTREG_OUTPUT_DIR)/status.txt \ + ) +ifdef JTREG_REFERENCE + JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JTREG_OUTPUT_DIR)/diff.html \ + $(JTREG_REFERENCE) $(JTREG_OUTPUT_DIR)/JTreport \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) ) +endif + +jtreg-summary: FRC + if [ -r $(JTREG_OUTPUT_DIR)/status.txt ]; then \ + echo ; echo "Summary of jtreg test failures" ; \ + cat $(JTREG_OUTPUT_DIR)/JTreport/text/summary.txt | \ + grep -v 'Not run' | grep -v 'Passed' ; \ + echo ; \ + $(EXIT) `cat $(JTREG_OUTPUT_DIR)/status.txt` ; \ + fi # Check to make sure these directories exist -check: $(JT_HOME) $(PRODUCT_HOME) $(JTREG) +check-jtreg: $(JT_HOME) $(PRODUCT_HOME) $(JTREG) + + +# Run JCK-compiler tests +# +# JCK_HOME +# Installed location of JCK: should include JCK-compiler, and JCK-extras +# JT_JAVA +# Version of java used to run JCK. Should normally be the same as TESTJAVA +# TESTJAVA +# Version of java to be tested. +# JCK_COMPILER_OPTIONS +# Additional options for JCK-compiler +# JCK_COMPILER_TESTDIRS +# Directories of tests to be run +# JCK_COMPILER_OUTPUT_DIR +# Where to write the results +# JCK_COMPILER_REFERENCE +# (Optional) reference results (e.g. work, report or summary.txt) +# +jck-compiler-tests: check-jck FRC + @rm -f -r $(JCK_COMPILER_OUTPUT_DIR)/work $(JCK_COMPILER_OUTPUT_DIR)/report \ + $(JCK_COMPILER_OUTPUT_DIR)/diff.html $(JCK_COMPILER_OUTPUT_DIR)/status.txt + @mkdir -p $(JCK_COMPILER_OUTPUT_DIR) + $(JT_JAVA)/bin/java -XX:MaxPermSize=256m -Xmx512m \ + -jar $(JCK_HOME)/JCK-compiler-7/lib/jtjck.jar \ + -v:non-pass \ + -r:$(JCK_COMPILER_OUTPUT_DIR)/report \ + -w:$(JCK_COMPILER_OUTPUT_DIR)/work \ + -jdk:$(TESTJAVA) \ + $(JCK_COMPILER_OPTIONS) \ + $(JCK_COMPILER_TESTDIRS) \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \ + echo $$status > $(JCK_COMPILER_OUTPUT_DIR)/status.txt \ + ) +ifdef JCK_COMPILER_REFERENCE + JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_COMPILER_OUTPUT_DIR)/diff.html \ + $(JCK_COMPILER_REFERENCE) $(JCK_COMPILER_OUTPUT_DIR)/report \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) ) +endif + +jck-compiler-summary: FRC + if [ -r $(JCK_COMPILER_OUTPUT_DIR)/status.txt ]; then \ + echo ; echo "Summary of JCK-compiler test failures" ; \ + cat $(JCK_COMPILER_OUTPUT_DIR)/report/text/summary.txt | \ + grep -v 'Not run' | grep -v 'Passed' ; \ + echo ; \ + $(EXIT) `cat $(JCK_COMPILER_OUTPUT_DIR)/status.txt` ; \ + fi -# Run the tests -jtreg-tests: FRC - @echo "Using export JAVA_TOOL_OPTIONS=$(JAVA_TOOL_OPTIONS)" - @rm -f -r $(TEST_OUTPUT_DIR)/JTwork $(TEST_OUTPUT_DIR)/JTreport - @mkdir -p $(TEST_OUTPUT_DIR) - JT_JAVA=$(JT_JAVA) $(JTREG) \ - -a -samevm -k:\!ignore -v:fail,error,nopass \ - -r:$(TEST_OUTPUT_DIR)/JTreport \ - -w:$(TEST_OUTPUT_DIR)/JTwork \ - -jdk:$(TESTJAVA) \ - -Xbootclasspath/p:$(TESTBOOTCLASSPATH) \ - $(JAVA_ARGS:%=-vmoption:%) \ - $(TESTDIRS) \ - || ( status=$$? ; \ - echo ; echo "Summary of test failures" ; \ - cat $(TEST_OUTPUT_DIR)/JTreport/text/summary.txt | \ - grep -v 'Not run' | grep -v 'Passed' ; \ - echo ; \ - exit $$status ) +# Run JCK-runtime tests in -Xcompile mode +# This is a special mode to test javac by compiling the tests in the JCK-runtime test suite +# Normal JCK-runtime invocation belongs in the jdk/ repository. +# +# JCK_HOME +# Installed location of JCK: should include JCK-compiler, JCK-runtime and JCK-extras +# JT_JAVA +# Version of java used to run JCK. Should normally be the same as TESTJAVA +# TESTJAVA +# Version of java to be tested. +# JCK_RUNTIME_OPTIONS +# Additional options for JCK-runtime +# JCK_RUNTIME_TESTDIRS +# Directories of tests to be run +# JCK_RUNTIME_OUTPUT_DIR +# Where to write the results +# JCK_RUNTIME_REFERENCE +# (Optional) reference results (e.g. work, report or summary.txt) +# +jck-runtime-tests: check-jck FRC + @rm -f -r $(JCK_RUNTIME_OUTPUT_DIR)/work $(JCK_RUNTIME_OUTPUT_DIR)/report \ + $(JCK_RUNTIME_OUTPUT_DIR)/diff.html $(JCK_RUNTIME_OUTPUT_DIR)/status.txt + @mkdir -p $(JCK_RUNTIME_OUTPUT_DIR) + $(JT_JAVA)/bin/java -XX:MaxPermSize=256m -Xmx512m \ + -jar $(JCK_HOME)/JCK-runtime-7/lib/jtjck.jar \ + -v:non-pass \ + -r:$(JCK_RUNTIME_OUTPUT_DIR)/report \ + -w:$(JCK_RUNTIME_OUTPUT_DIR)/work \ + -jdk:$(TESTJAVA) \ + -Xcompile \ + $(JCK_RUNTIME_OPTIONS) \ + $(JCK_RUNTIME_TESTDIRS) \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \ + echo $$status > $(JCK_RUNTIME_OUTPUT_DIR)/status.txt \ + ) +ifdef JCK_RUNTIME_REFERENCE + JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_RUNTIME_OUTPUT_DIR)/diff.html \ + $(JCK_RUNTIME_REFERENCE) $(JCK_RUNTIME_OUTPUT_DIR)/report \ + || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) ) +endif + +jck-runtime-summary: FRC + if [ -r $(JCK_RUNTIME_OUTPUT_DIR)/status.txt ]; then \ + echo ; echo "Summary of JCK-runtime test failures" ; \ + cat $(JCK_RUNTIME_OUTPUT_DIR)/report/text/summary.txt | \ + grep -v 'Not run' | grep -v 'Passed' ; \ + echo ; \ + $(EXIT) `cat $(JCK_RUNTIME_OUTPUT_DIR)/status.txt` ; \ + fi + +# Check to make sure these directories exist +check-jck: $(JT_HOME) $(JCK_HOME) $(PRODUCT_HOME) + +all-summary: FRC + if [ -n "`find $(TEST_OUTPUT_DIR) -name status.txt`" ]; then + echo ; echo "Summary of test failures" ; \ + cat `find $(TEST_OUTPUT_DIR) -name summary.txt` | \ + grep -v 'Not run' | grep -v 'Passed' ; \ + echo ; \ + $(EXIT) 1 + fi # Bundle up the results $(JPRT_ARCHIVE_BUNDLE): FRC @@ -124,12 +380,17 @@ # Cleanup clean: - rm -f -r $(TEST_OUTPUT_DIR) rm -f $(JPRT_ARCHIVE_BUNDLE) # Used to force a target rules to run FRC: # Phony targets (e.g. these are not filenames) -.PHONY: all tests clean check +.PHONY: all clean \ + jtreg javac javadoc javah javap jtreg-tests jtreg-summary check-jtreg \ + jck-compiler jck-compiler-tests jck-compiler-summary \ + jck-runtime jck-runtime-tests jck-runtime-summary check-jck +# No use of suffix rules +.SUFFIXES: + diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/OverrideChecks/6738538/T6738538a.java --- a/langtools/test/tools/javac/OverrideChecks/6738538/T6738538a.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/OverrideChecks/6738538/T6738538a.java Wed Jul 05 17:09:51 2017 +0200 @@ -41,4 +41,4 @@ public T m(); } class Crash & I> {} -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/OverrideChecks/6738538/T6738538b.java --- a/langtools/test/tools/javac/OverrideChecks/6738538/T6738538b.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/OverrideChecks/6738538/T6738538b.java Wed Jul 05 17:09:51 2017 +0200 @@ -44,4 +44,4 @@ } class C2 & I2> {} -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/api/6731573/Erroneous.java --- a/langtools/test/tools/javac/api/6731573/Erroneous.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/api/6731573/Erroneous.java Wed Jul 05 17:09:51 2017 +0200 @@ -1,4 +1,4 @@ class A { boolean b; boolean b; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/api/6731573/T6731573.java --- a/langtools/test/tools/javac/api/6731573/T6731573.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/api/6731573/T6731573.java Wed Jul 05 17:09:51 2017 +0200 @@ -106,4 +106,4 @@ public static void main(String... args) throws Exception { new T6731573().test(); } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/cast/6548436/T6548436d.java --- a/langtools/test/tools/javac/cast/6548436/T6548436d.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/cast/6548436/T6548436d.java Wed Jul 05 17:09:51 2017 +0200 @@ -37,4 +37,4 @@ static void test(Base je) { Object o = (Base)je; } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/cast/6558559/T6558559a.java --- a/langtools/test/tools/javac/cast/6558559/T6558559a.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/cast/6558559/T6558559a.java Wed Jul 05 17:09:51 2017 +0200 @@ -37,4 +37,4 @@ A x = null; B y = (B)x; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/cast/6558559/T6558559b.java --- a/langtools/test/tools/javac/cast/6558559/T6558559b.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/cast/6558559/T6558559b.java Wed Jul 05 17:09:51 2017 +0200 @@ -40,4 +40,4 @@ Object o = unboundList; Throwable t3 = (Throwable) o; } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/cast/6586091/T6586091.java --- a/langtools/test/tools/javac/cast/6586091/T6586091.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/cast/6586091/T6586091.java Wed Jul 05 17:09:51 2017 +0200 @@ -35,4 +35,4 @@ A> t = null; B c = (B)t; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/enum/T6724345.java --- a/langtools/test/tools/javac/enum/T6724345.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/enum/T6724345.java Wed Jul 05 17:09:51 2017 +0200 @@ -48,4 +48,4 @@ enum E implements I { V {public void i() {}}; } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/T6557954.java --- a/langtools/test/tools/javac/generics/T6557954.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/T6557954.java Wed Jul 05 17:09:51 2017 +0200 @@ -33,4 +33,4 @@ class T6557954 { class Foo {} T6557954.Foo f; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/T6751514.java --- a/langtools/test/tools/javac/generics/T6751514.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/T6751514.java Wed Jul 05 17:09:51 2017 +0200 @@ -79,4 +79,4 @@ " - found: " + found + ")"); } } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/T6869075.java --- a/langtools/test/tools/javac/generics/T6869075.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/T6869075.java Wed Jul 05 17:09:51 2017 +0200 @@ -64,4 +64,4 @@ " - found: " + found + ")"); } } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/inference/6569789/T6569789.java --- a/langtools/test/tools/javac/generics/inference/6569789/T6569789.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/inference/6569789/T6569789.java Wed Jul 05 17:09:51 2017 +0200 @@ -41,4 +41,4 @@ } static void testMethod(T t) {} -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/inference/6650759/T6650759a.java --- a/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java Wed Jul 05 17:09:51 2017 +0200 @@ -42,4 +42,4 @@ Integer test = getGenericValue(new IntegerInterface()); testSet(getGenericValue(new IntegerInterface())); } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/generics/wildcards/T6732484.java --- a/langtools/test/tools/javac/generics/wildcards/T6732484.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/generics/wildcards/T6732484.java Wed Jul 05 17:09:51 2017 +0200 @@ -34,4 +34,4 @@ class B extends A {} A f; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/processing/model/util/elements/Foo.java --- a/langtools/test/tools/javac/processing/model/util/elements/Foo.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/processing/model/util/elements/Foo.java Wed Jul 05 17:09:51 2017 +0200 @@ -26,4 +26,4 @@ * Dummy type to compile. */ public class Foo { -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/processing/model/util/elements/VacuousEnum.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/util/elements/VacuousEnum.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,33 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6937417 + * @summary Test -Xprint on enum type with no constants + * @author Joseph D. Darcy + * @compile -Xprint VacuousEnum.java + */ +public enum VacuousEnum { + // But alas, no enum constants! +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javac/varargs/T6746184.java --- a/langtools/test/tools/javac/varargs/T6746184.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javac/varargs/T6746184.java Wed Jul 05 17:09:51 2017 +0200 @@ -36,4 +36,4 @@ class A { public static void m(final Object... varargs) {} private static void m(final Object singleArg) {} -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javah/T6893943.java --- a/langtools/test/tools/javah/T6893943.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javah/T6893943.java Wed Jul 05 17:09:51 2017 +0200 @@ -23,7 +23,7 @@ /* * @test - * @bug 6893943 + * @bug 6893943 6937318 * @summary exit code from javah with no args is 0 */ @@ -31,22 +31,32 @@ import java.util.*; public class T6893943 { + static final String[] NO_ARGS = { }; + static final String[] HELP = { "-help" }; + static final String NEWLINE = System.getProperty("line.separator"); + public static void main(String... args) throws Exception { new T6893943().run(); } void run() throws Exception { - testSimpleAPI(); - testCommand(); + testSimpleAPI(NO_ARGS, 1); + testSimpleAPI(HELP, 0); + testCommand(NO_ARGS, 1); + testCommand(HELP, 0); } - void testSimpleAPI() throws Exception { - PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.err)); - int rc = com.sun.tools.javah.Main.run(new String[] { }, pw); - expect("testSimpleAPI", rc, 1); + void testSimpleAPI(String[] args, int expect_rc) throws Exception { + System.err.println("Test simple api: " + Arrays.asList(args)); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + int rc = com.sun.tools.javah.Main.run(args, pw); + pw.close(); + expect("testSimpleAPI", sw.toString(), rc, expect_rc); } - void testCommand() throws Exception { + void testCommand(String[] args, int expect_rc) throws Exception { + System.err.println("Test command: " + Arrays.asList(args)); File javaHome = new File(System.getProperty("java.home")); if (javaHome.getName().equals("jre")) javaHome = javaHome.getParentFile(); @@ -54,22 +64,32 @@ List command = new ArrayList(); command.add(new File(new File(javaHome, "bin"), "javah").getPath()); command.add("-J-Xbootclasspath:" + System.getProperty("sun.boot.class.path")); + command.addAll(Arrays.asList(args)); //System.err.println("command: " + command); ProcessBuilder pb = new ProcessBuilder(command); pb.redirectErrorStream(true); Process p = pb.start(); p.getOutputStream().close(); + StringWriter sw = new StringWriter(); String line; BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = in.readLine()) != null) - System.err.println("javah: " + line); + sw.write(line + NEWLINE); int rc = p.waitFor(); - expect("testCommand", rc, 1); + expect("testCommand", sw.toString(), rc, expect_rc); } - void expect(String name, int actual, int expect) throws Exception { - if (actual != expect) - throw new Exception(name + ": unexpected exit: " + actual + ", expected: " + expect); + void expect(String name, String out, int actual_rc, int expect_rc) throws Exception { + if (out.isEmpty()) + throw new Exception("No output from javah"); + + if (!out.startsWith("Usage:")) { + System.err.println(out); + throw new Exception("Unexpected output from javah"); + } + + if (actual_rc != expect_rc) + throw new Exception(name + ": unexpected exit: " + actual_rc + ", expected: " + expect_rc); } } diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javap/6937244/T6937244.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javap/6937244/T6937244.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,57 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6937244 + * @summary fields display with JVMS names, not Java names + */ + +import java.io.*; + +public class T6937244 { + public static void main(String[] args) throws Exception { + new T6937244().run(); + } + + void run() throws Exception { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + String[] args = { "java.lang.String" }; + int rc = com.sun.tools.javap.Main.run(args, pw); + pw.close(); + String out = sw.toString(); + System.err.println(out); + if (rc != 0) + throw new Exception("unexpected exit from javap: " + rc); + for (String line: out.split("[\r\n]+")) { + if (line.contains("CASE_INSENSITIVE_ORDER")) { + if (line.matches("\\s*\\Qpublic static final java.util.Comparator CASE_INSENSITIVE_ORDER;\\E\\s*")) + return; + throw new Exception("declaration not shown as expected"); + } + } + throw new Exception("declaration of CASE_INSENSITIVE_ORDER not found"); + } +} + diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javap/6937244/T6937244A.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javap/6937244/T6937244A.java Wed Jul 05 17:09:51 2017 +0200 @@ -0,0 +1,90 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6937244 + * @summary fields display with JVMS names, not Java names + */ + +import java.io.*; +import java.util.*; + +public class T6937244A { + public static void main(String[] args) throws Exception { + new T6937244A().run(); + } + + void run() throws Exception { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + String[] args = { "Test" }; + int rc = com.sun.tools.javap.Main.run(args, pw); + pw.close(); + String out = sw.toString(); + System.err.println(out); + if (rc != 0) + throw new Exception("unexpected exit from javap: " + rc); + + int count = 0; + + for (String line: out.split("[\r\n]+")) { + if (line.contains("extends")) { + verify(line, "extends java.lang.Object implements java.util.List"); + count++; + } + + if (line.contains("field")) { + verify(line, "java.util.List field"); + count++; + } + + if (line.contains("method")) { + verify(line, "java.util.List method(java.util.List) throws java.lang.Exception"); + count++; + } + } + + // final backstop check + if (out.contains("/")) + throw new Exception("unexpected \"/\" in output"); + + if (count != 3) + throw new Exception("wrong number of matches found: " + count); + } + + void verify(String line, String expect) throws Exception { + if (!line.contains(expect)) { + System.err.println("line: " + line); + System.err.println("expect: " + expect); + throw new Exception("expected string not found in line"); + } + } +} + + +abstract class Test implements List { + public List field; + public List method(List arg) throws Exception { return null; } +} + diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javap/T6305779.java diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javap/T6715251.java --- a/langtools/test/tools/javap/T6715251.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javap/T6715251.java Wed Jul 05 17:09:51 2017 +0200 @@ -71,4 +71,4 @@ String log; int errors; -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 langtools/test/tools/javap/T6715753.java --- a/langtools/test/tools/javap/T6715753.java Wed Jul 05 17:09:16 2017 +0200 +++ b/langtools/test/tools/javap/T6715753.java Wed Jul 05 17:09:51 2017 +0200 @@ -47,4 +47,4 @@ throw new Exception("test failed"); } } -} \ No newline at end of file +} diff -r 482f63894bb1 -r 44158f6d3b94 make/jprt.properties --- a/make/jprt.properties Wed Jul 05 17:09:16 2017 +0200 +++ b/make/jprt.properties Wed Jul 05 17:09:51 2017 +0200 @@ -62,6 +62,7 @@ # Test targets in test/Makefile jprt.make.rule.test.targets= \ + *-product-*-langtools_jtreg, \ *-product-*-jdk_beans1, \ *-product-*-jdk_beans2, \ *-product-*-jdk_beans3, \ @@ -84,7 +85,6 @@ *-product-*-jdk_util # Not Ready Yet: -# *-product-*-langtools_all # *-product-*-jdk_awt # *-product-*-jdk_rmi # *-product-*-jdk_swing diff -r 482f63894bb1 -r 44158f6d3b94 test/Makefile --- a/test/Makefile Wed Jul 05 17:09:16 2017 +0200 +++ b/test/Makefile Wed Jul 05 17:09:51 2017 +0200 @@ -42,6 +42,7 @@ $(MAKE) -C $1/test $2 ; \ else \ echo "ERROR: File does not exist: $1/test/Makefile"; \ + exit 1; \ fi; \ else \ echo "WARNING: No testing done, directory does not exist: $1"; \ @@ -49,7 +50,7 @@ endef # Test target list for langtools repository -LANGTOOLS_TEST_LIST = langtools_all +LANGTOOLS_TEST_LIST = langtools_jtreg # Test target list for jdk repository JDK_TEST_LIST = \ @@ -74,7 +75,7 @@ # Test targets $(LANGTOOLS_TEST_LIST): - @$(call SUBDIR_TEST, $(LANGTOOLS_DIR), all) + @$(call SUBDIR_TEST, $(LANGTOOLS_DIR), $(subst langtools_,,$@)) $(JDK_TEST_LIST): @$(call SUBDIR_TEST, $(JDK_DIR), $@)