From 73b82deb48dd22efa07b237aab8951f275e9f410 Mon Sep 17 00:00:00 2001 From: sherman Date: Wed, 27 Jan 2010 19:39:55 -0800 Subject: [PATCH] 6920732: opensource test/java/nio/charset Summary: move the test cases to openjdk Reviewed-by: martin --- .../Charset/AvailableCharsetNames.java | 51 + .../Charset/CharsetContainmentTest.java | 115 + .../java/nio/charset/Charset/Contains.java | 166 + .../java/nio/charset/Charset/Default.java | 36 + .../nio/charset/Charset/EmptyCharsetName.java | 102 + jdk/test/java/nio/charset/Charset/EncDec.java | 45 + .../charset/Charset/IllegalCharsetName.java | 63 + .../Charset/NIOCharsetAvailabilityTest.java | 229 + .../nio/charset/Charset/NullCharsetName.java | 52 + .../charset/Charset/RegisteredCharsets.java | 1270 +++ jdk/test/java/nio/charset/Charset/default.sh | 97 + .../charset/CharsetDecoder/AverageMax.java | 96 + .../charset/CharsetDecoder/EmptyInput.java | 48 + .../nio/charset/CharsetEncoder/CanEncode.java | 95 + .../nio/charset/CharsetEncoder/Flush.java | 113 + .../nio/charset/RemovingSunIO/SunioAlias.java | 823 ++ .../nio/charset/RemovingSunIO/TestCOMP.java | 76 + .../TestUnmappableForLength.java | 59 + .../java/nio/charset/coders/BashCache.java | 89 + .../java/nio/charset/coders/BashStreams.java | 391 + jdk/test/java/nio/charset/coders/Check.java | 152 + .../charset/coders/CheckSJISMappingProp.sh | 76 + jdk/test/java/nio/charset/coders/Errors.java | 220 + .../java/nio/charset/coders/FullRead.java | 63 + .../java/nio/charset/coders/IOCoders.java | 103 + .../charset/coders/IsLegalReplacement.java | 93 + .../nio/charset/coders/ResetISO2022JP.java | 63 + .../java/nio/charset/coders/SJISPropTest.java | 59 + .../nio/charset/coders/StreamTimeout.java | 137 + .../java/nio/charset/coders/Surrogate.java | 66 + .../java/nio/charset/coders/Surrogates.java | 90 + jdk/test/java/nio/charset/coders/Util.java | 114 + .../java/nio/charset/coders/ref.shift_jis | 7072 +++++++++++++ .../java/nio/charset/coders/ref.windows-31j | 9409 +++++++++++++++++ jdk/test/java/nio/charset/spi/FooCharset.java | 45 + .../java/nio/charset/spi/FooProvider.java | 45 + jdk/test/java/nio/charset/spi/Test.java | 92 + jdk/test/java/nio/charset/spi/basic.sh | 127 + .../java/nio/charset/spi/charsetProvider.sp | 5 + jdk/test/java/nio/charset/spi/default-pol | 48 + 40 files changed, 22095 insertions(+) create mode 100644 jdk/test/java/nio/charset/Charset/AvailableCharsetNames.java create mode 100644 jdk/test/java/nio/charset/Charset/CharsetContainmentTest.java create mode 100644 jdk/test/java/nio/charset/Charset/Contains.java create mode 100644 jdk/test/java/nio/charset/Charset/Default.java create mode 100644 jdk/test/java/nio/charset/Charset/EmptyCharsetName.java create mode 100644 jdk/test/java/nio/charset/Charset/EncDec.java create mode 100644 jdk/test/java/nio/charset/Charset/IllegalCharsetName.java create mode 100644 jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java create mode 100644 jdk/test/java/nio/charset/Charset/NullCharsetName.java create mode 100644 jdk/test/java/nio/charset/Charset/RegisteredCharsets.java create mode 100644 jdk/test/java/nio/charset/Charset/default.sh create mode 100644 jdk/test/java/nio/charset/CharsetDecoder/AverageMax.java create mode 100644 jdk/test/java/nio/charset/CharsetDecoder/EmptyInput.java create mode 100644 jdk/test/java/nio/charset/CharsetEncoder/CanEncode.java create mode 100644 jdk/test/java/nio/charset/CharsetEncoder/Flush.java create mode 100644 jdk/test/java/nio/charset/RemovingSunIO/SunioAlias.java create mode 100644 jdk/test/java/nio/charset/RemovingSunIO/TestCOMP.java create mode 100644 jdk/test/java/nio/charset/RemovingSunIO/TestUnmappableForLength.java create mode 100644 jdk/test/java/nio/charset/coders/BashCache.java create mode 100644 jdk/test/java/nio/charset/coders/BashStreams.java create mode 100644 jdk/test/java/nio/charset/coders/Check.java create mode 100644 jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh create mode 100644 jdk/test/java/nio/charset/coders/Errors.java create mode 100644 jdk/test/java/nio/charset/coders/FullRead.java create mode 100644 jdk/test/java/nio/charset/coders/IOCoders.java create mode 100644 jdk/test/java/nio/charset/coders/IsLegalReplacement.java create mode 100644 jdk/test/java/nio/charset/coders/ResetISO2022JP.java create mode 100644 jdk/test/java/nio/charset/coders/SJISPropTest.java create mode 100644 jdk/test/java/nio/charset/coders/StreamTimeout.java create mode 100644 jdk/test/java/nio/charset/coders/Surrogate.java create mode 100644 jdk/test/java/nio/charset/coders/Surrogates.java create mode 100644 jdk/test/java/nio/charset/coders/Util.java create mode 100644 jdk/test/java/nio/charset/coders/ref.shift_jis create mode 100644 jdk/test/java/nio/charset/coders/ref.windows-31j create mode 100644 jdk/test/java/nio/charset/spi/FooCharset.java create mode 100644 jdk/test/java/nio/charset/spi/FooProvider.java create mode 100644 jdk/test/java/nio/charset/spi/Test.java create mode 100644 jdk/test/java/nio/charset/spi/basic.sh create mode 100644 jdk/test/java/nio/charset/spi/charsetProvider.sp create mode 100644 jdk/test/java/nio/charset/spi/default-pol diff --git a/jdk/test/java/nio/charset/Charset/AvailableCharsetNames.java b/jdk/test/java/nio/charset/Charset/AvailableCharsetNames.java new file mode 100644 index 0000000000..fb04b0e013 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/AvailableCharsetNames.java @@ -0,0 +1,51 @@ +/* + * 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 4422044 + * @summary Ensure that keys in available-charset map + * are identical to canonical names + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + + +public class AvailableCharsetNames { + + public static void main(String[] args) throws Exception { + Iterator charsetIterator = Charset.availableCharsets().keySet().iterator(); + while (charsetIterator.hasNext()) { + String charsetName = (String) charsetIterator.next(); + Charset charset = Charset.forName(charsetName); + if (!charset.name().equals(charsetName)) { + throw new Exception("Error: Charset name mismatch - expected " + + charsetName + ", got " + charset.name()); + } + } + + } + +} diff --git a/jdk/test/java/nio/charset/Charset/CharsetContainmentTest.java b/jdk/test/java/nio/charset/Charset/CharsetContainmentTest.java new file mode 100644 index 0000000000..03dfbfcc14 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/CharsetContainmentTest.java @@ -0,0 +1,115 @@ +/* + * 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 4626545 4696726 + @summary Checks the inter containment relationships between NIO charsets + */ + +import java.nio.charset.*; + +public class CharsetContainmentTest { + static String[] encodings = + { "US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-8", + "windows-1252", "ISO-8859-1", "ISO-8859-15", "ISO-8859-2", + "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", + "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", + "ISO-2022-JP", "ISO-2022-KR", + + // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder + // support is added (4673614) + // "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB", + + "x-ISCII91", "GBK", "GB18030", "Big5", + "x-EUC-TW", "GB2312", "EUC-KR", "x-Johab", "Big5-HKSCS", + "x-MS950-HKSCS", "windows-1251", "windows-1253", "windows-1254", + "windows-1255", "windows-1256", "windows-1257", "windows-1258", + "x-mswin-936", "x-windows-949", "x-windows-950", "windows-31j", + "Shift_JIS", "EUC-JP", "KOI8-R", "TIS-620" + }; + + static String[][] contains = { + { "US-ASCII"}, + encodings, + encodings, + encodings, + encodings, + {"US-ASCII", "windows-1252"}, + {"US-ASCII", "ISO-8859-1"}, + {"US-ASCII", "ISO-8859-15"}, + {"US-ASCII", "ISO-8859-2"}, + {"US-ASCII", "ISO-8859-3"}, + {"US-ASCII", "ISO-8859-4"}, + {"US-ASCII", "ISO-8859-5"}, + {"US-ASCII", "ISO-8859-6"}, + {"US-ASCII", "ISO-8859-7"}, + {"US-ASCII", "ISO-8859-8"}, + {"US-ASCII", "ISO-8859-9"}, + {"US-ASCII", "ISO-8859-13"}, + {"ISO-2022-JP"}, + {"ISO-2022-KR"}, + // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder + // support is added (4673614) + //{"x-ISO-2022-CN-CNS"}, + //{"x-ISO-2022-CN-GB"}, + {"US-ASCII", "x-ISCII91"}, + {"US-ASCII", "GBK"}, + encodings, + {"US-ASCII", "Big5"}, + {"US-ASCII", "x-EUC-TW"}, + {"US-ASCII", "GB2312"}, + {"US-ASCII", "EUC-KR"}, + {"US-ASCII", "x-Johab"}, + {"US-ASCII", "Big5-HKSCS", "Big5"}, + {"US-ASCII", "x-MS950-HKSCS", "x-windows-950"}, + {"US-ASCII", "windows-1251"}, + {"US-ASCII", "windows-1253"}, + {"US-ASCII", "windows-1254"}, + {"US-ASCII", "windows-1255"}, + {"US-ASCII", "windows-1256"}, + {"US-ASCII", "windows-1257"}, + {"US-ASCII", "windows-1258"}, + {"US-ASCII", "x-mswin-936"}, + {"US-ASCII", "x-windows-949"}, + {"US-ASCII", "x-windows-950"}, + {"US-ASCII", "windows-31j" }, + {"US-ASCII", "Shift_JIS"}, + {"US-ASCII", "EUC-JP"}, + {"US-ASCII", "KOI8-R"}, + {"US-ASCII", "TIS-620"}}; + + + public static void main(String[] args) throws Exception { + for (int i = 0; i < encodings.length; i++) { + Charset c = Charset.forName(encodings[i]); + for (int j = 0 ; j < contains[i].length; j++) { + if (c.contains(Charset.forName(contains[i][j]))) + continue; + else { + throw new Exception ("Error: charset " + encodings[i] + + "doesn't contain " + contains[i][j]); + } + } + } + } +} diff --git a/jdk/test/java/nio/charset/Charset/Contains.java b/jdk/test/java/nio/charset/Charset/Contains.java new file mode 100644 index 0000000000..277446cbe6 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/Contains.java @@ -0,0 +1,166 @@ +/* + * 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 Unit test for charset containment + * @bug 6798572 + */ + +import java.nio.charset.*; + + +public class Contains { + + static void ck(Charset cs1, Charset cs2, boolean cont) throws Exception { + if ((cs1.contains(cs2)) != cont) + throw new Exception("Wrong answer: " + + cs1.name() + " contains " + cs2.name()); + System.err.println(cs1.name() + + (cont ? " contains " : " does not contain ") + + cs2.name()); + } + + public static void main(String[] args) throws Exception { + + Charset us_ascii = Charset.forName("US-ASCII"); + Charset iso_8859_1 = Charset.forName("ISO-8859-1"); + Charset iso_8859_15 = Charset.forName("ISO-8859-15"); + Charset utf_8 = Charset.forName("UTF-8"); + Charset utf_16be = Charset.forName("UTF-16BE"); + Charset cp1252 = Charset.forName("CP1252"); + + ck(us_ascii, us_ascii, true); + ck(us_ascii, iso_8859_1, false); + ck(us_ascii, iso_8859_15, false); + ck(us_ascii, utf_8, false); + ck(us_ascii, utf_16be, false); + ck(us_ascii, cp1252, false); + + ck(iso_8859_1, us_ascii, true); + ck(iso_8859_1, iso_8859_1, true); + ck(iso_8859_1, iso_8859_15, false); + ck(iso_8859_1, utf_8, false); + ck(iso_8859_1, utf_16be, false); + ck(iso_8859_1, cp1252, false); + + ck(iso_8859_15, us_ascii, true); + ck(iso_8859_15, iso_8859_1, false); + ck(iso_8859_15, iso_8859_15, true); + ck(iso_8859_15, utf_8, false); + ck(iso_8859_15, utf_16be, false); + ck(iso_8859_15, cp1252, false); + + ck(utf_8, us_ascii, true); + ck(utf_8, iso_8859_1, true); + ck(utf_8, iso_8859_15, true); + ck(utf_8, utf_8, true); + ck(utf_8, utf_16be, true); + ck(utf_8, cp1252, true); + + ck(utf_16be, us_ascii, true); + ck(utf_16be, iso_8859_1, true); + ck(utf_16be, iso_8859_15, true); + ck(utf_16be, utf_8, true); + ck(utf_16be, utf_16be, true); + ck(utf_16be, cp1252, true); + + ck(cp1252, us_ascii, true); + ck(cp1252, iso_8859_1, false); + ck(cp1252, iso_8859_15, false); + ck(cp1252, utf_8, false); + ck(cp1252, utf_16be, false); + ck(cp1252, cp1252, true); + + checkUTF(); + } + + static void checkUTF() throws Exception { + for (String utfName : utfNames) + for (String csName : charsetNames) + ck(Charset.forName(utfName), + Charset.forName(csName), + true); + } + + static String[] utfNames = {"utf-16", + "utf-8", + "utf-16le", + "utf-16be", + "x-utf-16le-bom"}; + + static String[] charsetNames = { + "US-ASCII", + "UTF-8", + "UTF-16", + "UTF-16BE", + "UTF-16LE", + "x-UTF-16LE-BOM", + "GBK", + "GB18030", + "ISO-8859-1", + "ISO-8859-15", + "ISO-8859-2", + "ISO-8859-3", + "ISO-8859-4", + "ISO-8859-5", + "ISO-8859-6", + "ISO-8859-7", + "ISO-8859-8", + "ISO-8859-9", + "ISO-8859-13", + "JIS_X0201", + "x-JIS0208", + "JIS_X0212-1990", + "GB2312", + "EUC-KR", + "x-EUC-TW", + "EUC-JP", + "x-euc-jp-linux", + "KOI8-R", + "TIS-620", + "x-ISCII91", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "windows-932", + "x-mswin-936", + "x-windows-949", + "x-windows-950", + "windows-31j", + "Big5", + "Big5-HKSCS", + "x-MS950-HKSCS", + "ISO-2022-JP", + "ISO-2022-KR", + "x-ISO-2022-CN-CNS", + "x-ISO-2022-CN-GB", + "Big5-HKSCS", + "x-Johab", + "Shift_JIS" + }; +} diff --git a/jdk/test/java/nio/charset/Charset/Default.java b/jdk/test/java/nio/charset/Charset/Default.java new file mode 100644 index 0000000000..60069003b9 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/Default.java @@ -0,0 +1,36 @@ +/* + * 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. + */ + +/* + */ + +import java.nio.charset.*; + + +public class Default { + + public static void main(String[] args) { + System.out.println(Charset.defaultCharset()); + } + +} diff --git a/jdk/test/java/nio/charset/Charset/EmptyCharsetName.java b/jdk/test/java/nio/charset/Charset/EmptyCharsetName.java new file mode 100644 index 0000000000..0160277a2d --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/EmptyCharsetName.java @@ -0,0 +1,102 @@ +/* + * 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 4786884 + * @summary Ensure that passing the empty string to Charset methods and + * constructors causes an IllegalArgumentException to be thrown + * + * @build EmptyCharsetName + * @run main EmptyCharsetName + * @run main/othervm -Dsun.nio.cs.bugLevel=1.4 EmptyCharsetName + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; + + +public class EmptyCharsetName { + + static boolean compat; + + static abstract class Test { + + public abstract void go() throws Exception; + + Test() throws Exception { + try { + go(); + } catch (Exception x) { + if (compat) { + if (x instanceof UnsupportedCharsetException) { + System.err.println("Thrown as expected: " + x); + return; + } + throw new Exception("Exception thrown", x); + } + if (x instanceof IllegalCharsetNameException) { + System.err.println("Thrown as expected: " + x); + return; + } + throw new Exception("Incorrect exception: " + + x.getClass().getName(), + x); + } + if (!compat) + throw new Exception("No exception thrown"); + } + + } + + public static void main(String[] args) throws Exception { + + // If sun.nio.cs.bugLevel == 1.4 then we want the 1.4 behavior + String bl = System.getProperty("sun.nio.cs.bugLevel"); + compat = (bl != null && bl.equals("1.4")); + + new Test() { + public void go() throws Exception { + Charset.forName(""); + }}; + new Test() { + public void go() throws Exception { + Charset.isSupported(""); + }}; + new Test() { + public void go() throws Exception { + new Charset("", new String[] { }) { + public CharsetDecoder newDecoder() { + return null; + } + public CharsetEncoder newEncoder() { + return null; + } + public boolean contains(Charset cs) { + return false; + } + }; + }}; + } + +} diff --git a/jdk/test/java/nio/charset/Charset/EncDec.java b/jdk/test/java/nio/charset/Charset/EncDec.java new file mode 100644 index 0000000000..63ace00171 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/EncDec.java @@ -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 + * @summary Unit test for encode/decode convenience methods + */ + + +import java.nio.*; +import java.nio.charset.*; + + +public class EncDec { + + public static void main(String[] args) throws Exception { + String s = "Hello, world!"; + ByteBuffer bb = ByteBuffer.allocate(100); + bb.put(Charset.forName("ISO-8859-15").encode(s)).flip(); + String t = Charset.forName("UTF-8").decode(bb).toString(); + System.err.println(t); + if (!t.equals(s)) + throw new Exception("Mismatch: " + s + " != " + t); + } + +} diff --git a/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java b/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java new file mode 100644 index 0000000000..bb8d427040 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java @@ -0,0 +1,63 @@ +/* + * 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 6330020 + * @summary Ensure Charset.forName/isSupport throws the correct exception + * if the charset names passed in are illegal. + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + +public class IllegalCharsetName { + public static void main(String[] args) throws Exception { + String[] illegalNames = { + ".", + "_", + ":", + "-", + ".name", + "_name", + ":name", + "-name", + "name*name", + "name?name" + }; + for (int i = 0; i < illegalNames.length; i++) { + try { + Charset.forName(illegalNames[i]); + throw new Exception("Charset.forName(): No exception thrown"); + } catch (IllegalCharsetNameException x) { //expected + } + + try { + Charset.isSupported(illegalNames[i]); + throw new Exception("Charset.isSupported(): No exception thrown"); + } catch (IllegalCharsetNameException x) { //expected + } + } + } +} diff --git a/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java b/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java new file mode 100644 index 0000000000..4b5d576423 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java @@ -0,0 +1,229 @@ +/* + * 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 4777124 6920545 + * @summary Verify that all Charset subclasses are available through the API + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.Vector; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import sun.misc.Launcher; + + +public class NIOCharsetAvailabilityTest { + + public static void main(String[] args) throws Exception { + // build the set of all Charset subclasses in the + // two known charset implementation packages + Set charsets = new HashSet(); + addCharsets(charsets, "sun.nio.cs"); + addCharsets(charsets, "sun.nio.cs.ext"); + + // remove the charsets that the API says are available + Collection availableCharsets = Charset.availableCharsets().values(); + Iterator iter = availableCharsets.iterator(); + while (iter.hasNext()) { + charsets.remove(((Charset) iter.next()).getClass()); + } + + // 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")); + + // report the charsets that are implemented but not available + iter = charsets.iterator(); + while (iter.hasNext()) { + System.out.println("Unused Charset subclass: " + ((Class) iter.next()).getName()); + } + if (charsets.size() > 0) { + throw new RuntimeException(); + } + } + + private static Vector classPathSegments = new Vector(); + + private static void addCharsets(Set charsets, final String packageName) + throws Exception { + + String classPath = + (String) java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("sun.boot.class.path")); + String s = + (String) java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("java.class.path")); + + // Search combined system and application class path + if (s != null && s.length() != 0) { + classPath += File.pathSeparator + s; + } + while (classPath != null && classPath.length() != 0) { + int i = classPath.lastIndexOf(java.io.File.pathSeparatorChar); + String dir = classPath.substring(i + 1); + if (i == -1) { + classPath = null; + } else { + classPath = classPath.substring(0, i); + } + classPathSegments.insertElementAt(dir, 0); + } + + // add extensions from the extension class loader + ClassLoader appLoader = Launcher.getLauncher().getClassLoader(); + URLClassLoader extLoader = (URLClassLoader) appLoader.getParent(); + URL[] urls = extLoader.getURLs(); + for (int i = 0; i < urls.length; i++) { + try { + URI uri = new URI(urls[i].toString()); + classPathSegments.insertElementAt(uri.getPath(), 0); + } catch (URISyntaxException e) { + } + } + + String[] classList = (String[]) + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Object run() { + return getClassList(packageName, ""); + } + }); + + for (int i = 0; i < classList.length; i++) { + try { + Class clazz = Class.forName(packageName + "." + classList[i]); + Class superclazz = clazz.getSuperclass(); + while (superclazz != null && !superclazz.equals(Object.class)) { + if (superclazz.equals(Charset.class)) { + charsets.add(clazz); + break; + } else { + superclazz = superclazz.getSuperclass(); + } + } + } catch (ClassNotFoundException e) { + } + } + } + + private static final char ZIPSEPARATOR = '/'; + + /** + * Walk through CLASSPATH and find class list from a package. + * The class names start with prefix string + * @param package name, class name prefix + * @return class list in an array of String + */ + private static String[] getClassList(String pkgName, String prefix) { + Vector listBuffer = new Vector(); + String packagePath = pkgName.replace('.', File.separatorChar) + + File.separatorChar; + String zipPackagePath = pkgName.replace('.', ZIPSEPARATOR) + + ZIPSEPARATOR; + for (int i = 0; i < classPathSegments.size(); i++){ + String onePath = (String) classPathSegments.elementAt(i); + File f = new File(onePath); + if (!f.exists()) + continue; + if (f.isFile()) + scanFile(f, zipPackagePath, listBuffer, prefix); + else if (f.isDirectory()) { + String fullPath; + if (onePath.endsWith(File.separator)) + fullPath = onePath + packagePath; + else + fullPath = onePath + File.separatorChar + packagePath; + File dir = new File(fullPath); + if (dir.exists() && dir.isDirectory()) + scanDir(dir, listBuffer, prefix); + } + } + String[] classNames = new String[listBuffer.size()]; + listBuffer.copyInto(classNames); + return classNames; + } + + private static void addClass (String className, Vector listBuffer, String prefix) { + if (className != null && className.startsWith(prefix) + && !listBuffer.contains(className)) + listBuffer.addElement(className); + } + + private static String midString(String str, String pre, String suf) { + String midStr; + if (str.startsWith(pre) && str.endsWith(suf)) + midStr = str.substring(pre.length(), str.length() - suf.length()); + else + midStr = null; + return midStr; + } + + private static void scanDir(File dir, Vector listBuffer, String prefix) { + String[] fileList = dir.list(); + for (int i = 0; i < fileList.length; i++) { + addClass(midString(fileList[i], "", ".class"), listBuffer, prefix); + } + } + + private static void scanFile(File f, String packagePath, Vector listBuffer, + String prefix) { + try { + ZipInputStream zipFile = new ZipInputStream(new FileInputStream(f)); + ZipEntry entry; + while ((entry = zipFile.getNextEntry()) != null) { + String eName = entry.getName(); + if (eName.startsWith(packagePath)) { + if (eName.endsWith(".class")) { + addClass(midString(eName, packagePath, ".class"), + listBuffer, prefix); + } + } + } + } catch (FileNotFoundException e) { + System.out.println("file not found:" + e); + } catch (IOException e) { + System.out.println("file IO Exception:" + e); + } catch (Exception e) { + System.out.println("Exception:" + e); + } + } +} diff --git a/jdk/test/java/nio/charset/Charset/NullCharsetName.java b/jdk/test/java/nio/charset/Charset/NullCharsetName.java new file mode 100644 index 0000000000..e21cf92b16 --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/NullCharsetName.java @@ -0,0 +1,52 @@ +/* + * 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 4448594 + * @summary Ensure passing null to Charset.forName throws the correct exception + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + + +public class NullCharsetName { + + public static void main(String[] args) throws Exception { + try { + Charset.forName(null); + } catch (Exception x) { + if (x instanceof IllegalArgumentException) { + System.err.println("Thrown as expected: " + x); + return; + } + throw new Exception("Incorrect exception: " + + x.getClass().getName(), + x); + } + throw new Exception("No exception thrown"); + } + +} diff --git a/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java b/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java new file mode 100644 index 0000000000..39cbc390da --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/RegisteredCharsets.java @@ -0,0 +1,1270 @@ +/* + * 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 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668 + * @summary Check that registered charsets are actually registered + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + +public class RegisteredCharsets { + + static String [] ianaRegistered = { + "US-ASCII", "UTF8", "Big5", "EUC-JP", + "GBK", "GB18030", "ISO-2022-KR", "ISO-2022-JP", + "GB2312", // IANA preferred name for "EUC-CN" + "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", + "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", + "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", + "ISO-8859-13", "ISO-8859-15", "windows-1251", + "windows-1252", "windows-1253", "windows-1254", + "windows-1255", "windows-1256", "windows-31j", + "Shift_JIS", "JIS_X0201", "JIS_X0212-1990", + "TIS-620", "Big5-HKSCS", + "ISO-2022-CN", + "IBM850", + "IBM852", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM862", + "IBM863", + "IBM864", + "IBM865", + "IBM866", + "IBM868", + "IBM869", + "IBM437", + "IBM775", + "IBM037", + "IBM1026", + "IBM273", + "IBM277", + "IBM278", + "IBM280", + "IBM284", + "IBM285", + "IBM297", + "IBM420", + "IBM424", + "IBM500", + "IBM-Thai", + "IBM870", + "IBM871", + "IBM918", + "IBM1047", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "IBM00858" }; + + static String [] ianaUnRegistered = { + "x-EUC-TW", "x-ISCII91", + "x-windows-949", "x-windows-950", + "x-mswin-936", "x-JIS0208", + "x-ISO-8859-11", + "x-windows-874", + "x-PCK", "x-JISAutoDetect", "x-Johab", + "x-MS950-HKSCS", + "x-Big5-Solaris", + "x-ISO-2022-CN-CNS", + "x-ISO-2022-CN-GB", + "x-MacArabic", + "x-MacCentralEurope", + "x-MacCroatian", + "x-MacCyrillic", + "x-MacDingbat", + "x-MacGreek", + "x-MacHebrew", + "x-MacIceland", + "x-MacRoman", + "x-MacRomania", + "x-MacSymbol", + "x-MacThai", + "x-MacTurkish", + "x-MacUkraine", + "x-IBM942", + "x-IBM942C", + "x-IBM943", + "x-IBM943C", + "x-IBM948", + "x-IBM950", + "x-IBM930", + "x-IBM935", + "x-IBM937", + "x-IBM856", + "x-IBM874", + "x-IBM737", + "x-IBM1006", + "x-IBM1046", + "x-IBM1098", + "x-IBM1025", + "x-IBM1112", + "x-IBM1122", + "x-IBM1123", + "x-IBM1124", + "x-IBM875", + "x-IBM921", + "x-IBM922", + "x-IBM1097", + "x-IBM949", + "x-IBM949C", + "x-IBM939", + "x-IBM933", + "x-IBM1381", + "x-IBM1383", + "x-IBM970", + "x-IBM964", + "x-IBM33722", + "x-IBM1006", + "x-IBM1046", + "x-IBM1097", + "x-IBM1098", + "x-IBM1112", + "x-IBM1122", + "x-IBM1123", + "x-IBM1124", + "x-IBM33722", + "x-IBM737", + "x-IBM856", + "x-IBM874", + "x-IBM875", + "x-IBM922", + "x-IBM933", + "x-IBM964" }; + + static void check(String csn, boolean testRegistered) throws Exception { + if (!Charset.forName(csn).isRegistered() && testRegistered) + throw new Exception("Not registered: " + csn); + else if (Charset.forName(csn).isRegistered() && !testRegistered) + throw new Exception("Registered: " + csn + "should be unregistered"); + } + + static void aliasCheck(String canonicalName, String[] aliasNames) throws Exception + { + for (int k = 0; k < aliasNames.length; k++ ) { + Charset cs = Charset.forName(aliasNames[k]); + if (!cs.name().equals(canonicalName)) { + throw new Exception("Unexpected Canonical name " + canonicalName); + } + } + } + + public static void main(String[] args) throws Exception { + + for (int i = 0; i < ianaRegistered.length ; i++) + check(ianaRegistered[i], true); + + for (int i = 0; i < ianaUnRegistered.length ; i++) + check(ianaUnRegistered[i], false); + + // Check aliases registered with IANA for all NIO supported + // Charset implementations. + // + // The aliases below are in sync with the IANA registered charset + // document at: http://www.iana.org/assignments/character-sets + // Last updated 7/25/2002 + + aliasCheck("US-ASCII", + new String[] {"ascii","ANSI_X3.4-1968", + "iso-ir-6","ANSI_X3.4-1986", "ISO_646.irv:1991", + "ASCII", "ISO646-US","us","IBM367","cp367", + "csASCII", "default"}); + + aliasCheck("UTF-8", + new String[] { + "UTF8", + "unicode-1-1-utf-8" + }); + + aliasCheck("UTF-16", + new String[] { + "UTF_16", + "utf16" + }); + + aliasCheck("UTF-16BE", + new String[] { + "UTF_16BE", + "ISO-10646-UCS-2", + "X-UTF-16BE", + "UnicodeBigUnmarked" + }); + + aliasCheck("UTF-16LE", + new String[] { + "UTF_16LE", + "X-UTF-16LE", + "UnicodeLittleUnmarked" + }); + + aliasCheck("Big5", + new String[] { + "csBig5" + }); + + aliasCheck("Big5-HKSCS", + new String[] { + "Big5_HKSCS", + "big5hk", + "big5-hkscs", + "big5-hkscs:unicode3.0", + "big5hkscs" + }); + + aliasCheck("x-MS950-HKSCS", + new String[] { + "MS950_HKSCS" + }); + + aliasCheck("GB18030", + new String[] { + "gb18030-2000" + }); + + aliasCheck("ISO-2022-KR", new String[] {"csISO2022KR"}); + aliasCheck("ISO-2022-JP", new String[] {"csISO2022JP"}); + aliasCheck("EUC-KR", new String[] { "csEUCKR"}); + aliasCheck("ISO-8859-1", + new String[] { + + // IANA aliases + "iso-ir-100", + "ISO_8859-1", + "latin1", + "l1", + "IBM819", + "cp819", + "csISOLatin1", + + // JDK historical aliases + "819", + "IBM-819", + "ISO8859_1", + "ISO_8859-1:1987", + "ISO_8859_1", + "8859_1", + "ISO8859-1", + + }); + + aliasCheck("ISO-8859-2", + new String[] { + "ISO_8859-2", + "ISO_8859-2:1987", + "iso-ir-101", + "latin2", + "l2", + "8859_2", + "iso_8859-2:1987", + "iso8859-2", + "ibm912", + "ibm-912", + "cp912", + "912", + "csISOLatin2"}); + + aliasCheck("ISO-8859-3", + new String[] {"latin3", + "ISO_8859-3:1988", + "iso-ir-109", + "l3", + "8859_3", + "iso_8859-3:1988", + "iso8859-3", + "ibm913", + "ibm-913", + "cp913", + "913", + "csISOLatin3"}); + + aliasCheck("ISO-8859-4", + new String[] {"csISOLatin4", + "ISO_8859-4:1988", + "iso-ir-110", + "latin4", + "8859_4", + "iso_8859-4:1988", + "iso8859-4", + "ibm914", + "ibm-914", + "cp914", + "914", + "l4"}); + + aliasCheck("ISO-8859-5", + new String[] { + "iso8859_5", // JDK historical + "8859_5", + "iso-ir-144", + "ISO_8859-5", + "ISO_8859-5:1988", + "ISO8859-5", + "cyrillic", + "ibm915", + "ibm-915", + "915", + "cp915", + "csISOLatinCyrillic" + }); + + aliasCheck("ISO-8859-6", + new String[] {"ISO_8859-6:1987", + "iso-ir-127", + "ISO_8859-6", + "ECMA-114", + "ASMO-708", + "arabic", + "8859_6", + "iso_8859-6:1987", + "iso8859-6", + "ibm1089", + "ibm-1089", + "cp1089", + "1089", + "csISOLatinArabic"}); + + aliasCheck("ISO-8859-7", + new String[] {"ISO_8859-7:1987", + "iso-ir-126", + "ISO_8859-7", + "ELOT_928", + "ECMA-118", + "greek", + "greek8", + "8859_7", + "iso_8859-7:1987", + "iso8859-7", + "ibm813", + "ibm-813", + "cp813", + "813", + "csISOLatinGreek"}); + + aliasCheck("ISO-8859-8", + new String[] { + "ISO_8859-8:1988", + "iso-ir-138", + "ISO_8859-8", + "hebrew", + "8859_8", + "iso_8859-8:1988", + "iso8859-8", + "ibm916", + "ibm-916", + "cp916", + "916", + "csISOLatinHebrew"}); + + aliasCheck("ISO-8859-9", + new String[] {"ISO_8859-9:1989", + "iso-ir-148", + "ISO_8859-9", + "latin5", + "l5", + "8859_9", + "iso8859-9", + "ibm920", + "ibm-920", + "cp920", + "920", + "csISOLatin5"}); + + aliasCheck("ISO-8859-13", + new String[] { + "iso8859_13", // JDK historical + "iso_8859-13", + "8859_13", + "ISO8859-13" + }); + + aliasCheck("ISO-8859-15", + new String[] { + // IANA alias + "ISO_8859-15", + // JDK historical aliases + "8859_15", + "ISO-8859-15", + "ISO_8859-15", + "ISO8859-15", + "ISO8859_15", + "IBM923", + "IBM-923", + "cp923", + "923", + "LATIN0", + "LATIN9", + "L9", + "csISOlatin0", + "csISOlatin9", + "ISO8859_15_FDIS" + + }); + + aliasCheck("JIS_X0212-1990", + new String[] { + "iso-ir-159", + "csISO159JISX02121990"}); + + aliasCheck("JIS_X0201", + new String[]{ + "X0201", + "csHalfWidthKatakana"}); + + aliasCheck("KOI8-R", + new String[] { + "KOI8_R", + "csKOI8R"}); + + aliasCheck("GBK", + new String[] { + "windows-936"}); + + aliasCheck("Shift_JIS", + new String[] { + "MS_Kanji", + "csShiftJIS"}); + + aliasCheck("EUC-JP", + new String[] { + "Extended_UNIX_Code_Packed_Format_for_Japanese", + "csEUCPkdFmtJapanese"}); + + aliasCheck("Big5", new String[] {"csBig5"}); + + aliasCheck("windows-31j", new String[] {"csWindows31J"}); + + aliasCheck("x-iso-8859-11", + new String[] { "iso-8859-11", "iso8859_11" }); + + aliasCheck("windows-1250", + new String[] { + "cp1250", + "cp5346" + }); + + aliasCheck("windows-1251", + new String[] { + "cp1251", + "cp5347", + "ansi-1251" + }); + + aliasCheck("windows-1252", + new String[] { + "cp1252", + "cp5348" + }); + + aliasCheck("windows-1253", + new String[] { + "cp1253", + "cp5349" + }); + + aliasCheck("windows-1254", + new String[] { + "cp1254", + "cp5350" + }); + + aliasCheck("windows-1255", + new String[] { + "cp1255" + }); + + aliasCheck("windows-1256", + new String[] { + "cp1256" + }); + + aliasCheck("windows-1257", + new String[] { + "cp1257", + "cp5353" + }); + + aliasCheck("windows-1258", + new String[] { + "cp1258" + }); + + aliasCheck("x-windows-874", + new String[] { + "ms874", "ms-874", "windows-874" }); + + aliasCheck("GB2312", + new String[] { + "x-EUC-CN", + "gb2312-80", + "gb2312-1980", + "euc-cn", + "euccn" }); + + aliasCheck("x-IBM942" , + new String[] { + "cp942", // JDK historical + "ibm942", + "ibm-942", + "942" + }); + + aliasCheck("x-IBM942C" , + new String[] { + "cp942C", // JDK historical + "ibm942C", + "ibm-942C", + "942C" + } ); + + aliasCheck("x-IBM943" , + new String[] { + "cp943", // JDK historical + "ibm943", + "ibm-943", + "943" + } ); + + aliasCheck("x-IBM943C" , + new String[] { + "cp943c", // JDK historical + "ibm943C", + "ibm-943C", + "943C" + } ); + + aliasCheck("x-IBM948" , + new String[] { + "cp948", // JDK historical + "ibm948", + "ibm-948", + "948" + } ); + + aliasCheck("x-IBM950" , + new String[] { + "cp950", // JDK historical + "ibm950", + "ibm-950", + "950" + } ); + + aliasCheck("x-IBM930" , + new String[] { + "cp930", // JDK historical + "ibm930", + "ibm-930", + "930" + } ); + + aliasCheck("x-IBM935" , + new String[] { + "cp935", // JDK historical + "ibm935", + "ibm-935", + "935" + } ); + + aliasCheck("x-IBM937" , + new String[] { + "cp937", // JDK historical + "ibm937", + "ibm-937", + "937" + } ); + + aliasCheck("IBM850" , + new String[] { + "cp850", // JDK historical + "ibm-850", + "ibm850", + "850", + "cspc850multilingual" + } ); + + aliasCheck("IBM852" , + new String[] { + "cp852", // JDK historical + "ibm852", + "ibm-852", + "852", + "csPCp852" + } ); + + aliasCheck("IBM855" , + new String[] { + "cp855", // JDK historical + "ibm-855", + "ibm855", + "855", + "cspcp855" + } ); + + aliasCheck("x-IBM856" , + new String[] { + "cp856", // JDK historical + "ibm-856", + "ibm856", + "856" + } ); + + aliasCheck("IBM857" , + new String[] { + "cp857", // JDK historical + "ibm857", + "ibm-857", + "857", + "csIBM857" + } ); + + aliasCheck("IBM860" , + new String[] { + "cp860", // JDK historical + "ibm860", + "ibm-860", + "860", + "csIBM860" + } ); + aliasCheck("IBM861" , + new String[] { + "cp861", // JDK historical + "ibm861", + "ibm-861", + "861", + "csIBM861" + } ); + + aliasCheck("IBM862" , + new String[] { + "cp862", // JDK historical + "ibm862", + "ibm-862", + "862", + "csIBM862" + } ); + + aliasCheck("IBM863" , + new String[] { + "cp863", // JDK historical + "ibm863", + "ibm-863", + "863", + "csIBM863" + } ); + + aliasCheck("IBM864" , + new String[] { + "cp864", // JDK historical + "ibm864", + "ibm-864", + "864", + "csIBM864" + } ); + + aliasCheck("IBM865" , + new String[] { + "cp865", // JDK historical + "ibm865", + "ibm-865", + "865", + "csIBM865" + } ); + + aliasCheck("IBM866" , new String[] { + "cp866", // JDK historical + "ibm866", + "ibm-866", + "866", + "csIBM866" + } ); + aliasCheck("IBM868" , + new String[] { + "cp868", // JDK historical + "ibm868", + "ibm-868", + "868", + "cp-ar", + "csIBM868" + } ); + + aliasCheck("IBM869" , + new String[] { + "cp869", // JDK historical + "ibm869", + "ibm-869", + "869", + "cp-gr", + "csIBM869" + } ); + + aliasCheck("IBM437" , + new String[] { + "cp437", // JDK historical + "ibm437", + "ibm-437", + "437", + "cspc8codepage437", + "windows-437" + } ); + + aliasCheck("x-IBM874" , + new String[] { + "cp874", // JDK historical + "ibm874", + "ibm-874", + "874" + } ); + aliasCheck("x-IBM737" , + new String[] { + "cp737", // JDK historical + "ibm737", + "ibm-737", + "737" + } ); + + aliasCheck("IBM775" , + new String[] { + "cp775", // JDK historical + "ibm775", + "ibm-775", + "775" + } ); + + aliasCheck("x-IBM921" , + new String[] { + "cp921", // JDK historical + "ibm921", + "ibm-921", + "921" + } ); + + aliasCheck("x-IBM1006" , + new String[] { + "cp1006", // JDK historical + "ibm1006", + "ibm-1006", + "1006" + } ); + + aliasCheck("x-IBM1046" , + new String[] { + "cp1046", // JDK historical + "ibm1046", + "ibm-1046", + "1046" + } ); + + aliasCheck("IBM1047" , + new String[] { + "cp1047", // JDK historical + "ibm-1047", + "1047" + } ); + + aliasCheck("x-IBM1098" , + new String[] { + "cp1098", // JDK historical + "ibm1098", + "ibm-1098", + "1098", + } ); + + aliasCheck("IBM037" , + new String[] { + "cp037", // JDK historical + "ibm037", + "csIBM037", + "cs-ebcdic-cp-us", + "cs-ebcdic-cp-ca", + "cs-ebcdic-cp-wt", + "cs-ebcdic-cp-nl", + "ibm-037", + "ibm-37", + "cpibm37", + "037" + } ); + + aliasCheck("x-IBM1025" , + new String[] { + "cp1025", // JDK historical + "ibm1025", + "ibm-1025", + "1025" + } ); + + aliasCheck("IBM1026" , + new String[] { + "cp1026", // JDK historical + "ibm1026", + "ibm-1026", + "1026" + } ); + + aliasCheck("x-IBM1112" , + new String[] { + "cp1112", // JDK historical + "ibm1112", + "ibm-1112", + "1112" + } ); + + aliasCheck("x-IBM1122" , + new String[] { + "cp1122", // JDK historical + "ibm1122", + "ibm-1122", + "1122" + } ); + + aliasCheck("x-IBM1123" , + new String[] { + "cp1123", // JDK historical + "ibm1123", + "ibm-1123", + "1123" + } ); + + aliasCheck("x-IBM1124" , + new String[] { + "cp1124", // JDK historical + "ibm1124", + "ibm-1124", + "1124" + } ); + + aliasCheck("IBM273" , + new String[] { + "cp273", // JDK historical + "ibm273", + "ibm-273", + "273" + } ); + + aliasCheck("IBM277" , + new String[] { + "cp277", // JDK historical + "ibm277", + "ibm-277", + "277" + } ); + + aliasCheck("IBM278" , + new String[] { + "cp278", // JDK historical + "ibm278", + "ibm-278", + "278", + "ebcdic-sv", + "ebcdic-cp-se", + "csIBM278" + } ); + + aliasCheck("IBM280" , + new String[] { + "cp280", // JDK historical + "ibm280", + "ibm-280", + "280" + } ); + + aliasCheck("IBM284" , + new String[] { + "cp284", // JDK historical + "ibm284", + "ibm-284", + "284", + "csIBM284", + "cpibm284" + } ); + + aliasCheck("IBM285" , + new String[] { + "cp285", // JDK historical + "ibm285", + "ibm-285", + "285", + "ebcdic-cp-gb", + "ebcdic-gb", + "csIBM285", + "cpibm285" + } ); + + aliasCheck("IBM297" , + new String[] { + "cp297", // JDK historical + "ibm297", + "ibm-297", + "297", + "ebcdic-cp-fr", + "cpibm297", + "csIBM297", + } ); + + aliasCheck("IBM420" , + new String[] { + "cp420", // JDK historical + "ibm420", + "ibm-420", + "ebcdic-cp-ar1", + "420", + "csIBM420" + } ); + + aliasCheck("IBM424" , + new String[] { + "cp424", // JDK historical + "ibm424", + "ibm-424", + "424", + "ebcdic-cp-he", + "csIBM424" + } ); + + aliasCheck("IBM500" , + new String[] { + "cp500", // JDK historical + "ibm500", + "ibm-500", + "500", + "ebcdic-cp-ch", + "ebcdic-cp-bh", + "csIBM500" + } ); + + aliasCheck("IBM-Thai" , + new String[] { + "cp838", // JDK historical + "ibm838", + "ibm-838", + "ibm838", + "838" + } ); + + aliasCheck("IBM870" , + new String[] { + "cp870", // JDK historical + "ibm870", + "ibm-870", + "870", + "ebcdic-cp-roece", + "ebcdic-cp-yu", + "csIBM870" + } ); + + aliasCheck("IBM871" , + new String[] { + "cp871", // JDK historical + "ibm871", + "ibm-871", + "871", + "ebcdic-cp-is", + "csIBM871" + } ); + + aliasCheck("x-IBM875" , + new String[] { + "cp875", // JDK historical + "ibm875", + "ibm-875", + "875" + } ); + + aliasCheck("IBM918" , + new String[] { + "cp918", // JDK historical + "ibm-918", + "918", + "ebcdic-cp-ar2" + } ); + + aliasCheck("x-IBM922" , + new String[] { + "cp922", // JDK historical + "ibm922", + "ibm-922", + "922" + } ); + + aliasCheck("x-IBM1097" , + new String[] { + "cp1097", // JDK historical + "ibm1097", + "ibm-1097", + "1097" + } ); + + aliasCheck("x-IBM949" , + new String[] { + "cp949", // JDK historical + "ibm949", + "ibm-949", + "949" + } ); + + aliasCheck("x-IBM949C" , + new String[] { + "cp949C", // JDK historical + "ibm949C", + "ibm-949C", + "949C" + } ); + + aliasCheck("x-IBM939" , + new String[] { + "cp939", // JDK historical + "ibm939", + "ibm-939", + "939" + } ); + + aliasCheck("x-IBM933" , + new String[] { + "cp933", // JDK historical + "ibm933", + "ibm-933", + "933" + } ); + + aliasCheck("x-IBM1381" , + new String[] { + "cp1381", // JDK historical + "ibm1381", + "ibm-1381", + "1381" + } ); + + aliasCheck("x-IBM1383" , + new String[] { + "cp1383", // JDK historical + "ibm1383", + "ibm-1383", + "1383" + } ); + + aliasCheck("x-IBM970" , + new String[] { + "cp970", // JDK historical + "ibm970", + "ibm-970", + "ibm-eucKR", + "970" + } ); + + aliasCheck("x-IBM964" , + new String[] { + "cp964", // JDK historical + "ibm964", + "ibm-964", + "964" + } ); + + aliasCheck("x-IBM33722" , + new String[] { + "cp33722", // JDK historical + "ibm33722", + "ibm-33722", + "ibm-5050", // from IBM alias list + "ibm-33722_vascii_vpua", // from IBM alias list + "33722" + } ); + + aliasCheck("IBM01140" , + new String[] { + "cp1140", // JDK historical + "ccsid01140", + "cp01140", + // "ebcdic-us-037+euro" + } ); + + aliasCheck("IBM01141" , + new String[] { + "cp1141", // JDK historical + "ccsid01141", + "cp01141", + // "ebcdic-de-273+euro" + } ); + + aliasCheck("IBM01142" , + new String[] { + "cp1142", // JDK historical + "ccsid01142", + "cp01142", + // "ebcdic-no-277+euro", + // "ebcdic-dk-277+euro" + } ); + + aliasCheck("IBM01143" , + new String[] { + "cp1143", // JDK historical + "ccsid01143", + "cp01143", + // "ebcdic-fi-278+euro", + // "ebcdic-se-278+euro" + } ); + + aliasCheck("IBM01144" , + new String[] { + "cp1144", // JDK historical + "ccsid01144", + "cp01144", + // "ebcdic-it-280+euro" + } ); + + aliasCheck("IBM01145" , + new String[] { + "cp1145", // JDK historical + "ccsid01145", + "cp01145", + // "ebcdic-es-284+euro" + } ); + + aliasCheck("IBM01146" , + new String[] { + "cp1146", // JDK historical + "ccsid01146", + "cp01146", + // "ebcdic-gb-285+euro" + } ); + + aliasCheck("IBM01147" , + new String[] { + "cp1147", // JDK historical + "ccsid01147", + "cp01147", + // "ebcdic-fr-277+euro" + } ); + + aliasCheck("IBM01148" , + new String[] { + "cp1148", // JDK historical + "ccsid01148", + "cp01148", + // "ebcdic-international-500+euro" + } ); + + aliasCheck("IBM01149" , + new String[] { + "cp1149", // JDK historical + "ccsid01149", + "cp01149", + // "ebcdic-s-871+euro" + } ); + + aliasCheck("IBM00858" , + new String[] { + "cp858", // JDK historical + "ccsid00858", + "cp00858", + // "PC-Multilingual-850+euro" + } ); + + aliasCheck("x-MacRoman", + new String[] { + "MacRoman" // JDK historical + }); + + aliasCheck("x-MacCentralEurope", + new String[] { + "MacCentralEurope" // JDK historical + }); + + aliasCheck("x-MacCroatian", + new String[] { + "MacCroatian" // JDK historical + }); + + + aliasCheck("x-MacCroatian", + new String[] { + "MacCroatian" // JDK historical + }); + + + aliasCheck("x-MacGreek", + new String[] { + "MacGreek" // JDK historical + }); + + aliasCheck("x-MacCyrillic", + new String[] { + "MacCyrillic" // JDK historical + }); + + aliasCheck("x-MacUkraine", + new String[] { + "MacUkraine" // JDK historical + }); + + aliasCheck("x-MacTurkish", + new String[] { + "MacTurkish" // JDK historical + }); + + aliasCheck("x-MacArabic", + new String[] { + "MacArabic" // JDK historical + }); + + aliasCheck("x-MacHebrew", + new String[] { + "MacHebrew" // JDK historical + }); + + aliasCheck("x-MacIceland", + new String[] { + "MacIceland" // JDK historical + }); + + aliasCheck("x-MacRomania", + new String[] { + "MacRomania" // JDK historical + }); + + aliasCheck("x-MacThai", + new String[] { + "MacThai" // JDK historical + }); + + aliasCheck("x-MacSymbol", + new String[] { + "MacSymbol" // JDK historical + }); + + aliasCheck("x-MacDingbat", + new String[] { + "MacDingbat" // JDK historical + }); + } +} diff --git a/jdk/test/java/nio/charset/Charset/default.sh b/jdk/test/java/nio/charset/Charset/default.sh new file mode 100644 index 0000000000..bf51d2ee5a --- /dev/null +++ b/jdk/test/java/nio/charset/Charset/default.sh @@ -0,0 +1,97 @@ +#!/bin/sh + +# +# 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 4772857 +# @summary Unit test for Charset.defaultCharset +# +# @build Default +# @run shell default.sh +# + +# Command-line usage: sh default.sh [/path/to/build] + +if [ -z "$TESTJAVA" ]; then + if [ $# -lt 1 ]; then exit 1; fi + TESTJAVA=$1; shift + TESTSRC=`pwd` + TESTCLASSES=`pwd` +fi + +s="`uname -s`" +if [ "$s" != Linux -a "$s" != SunOS ]; then + echo "$s: locale command not supported on this system, skipping..." + exit 0 +fi + +JAVA=$TESTJAVA/bin/java + +tolower() { + echo "$1" | tr '[A-Z]' '[a-z]' +} + +go() { + + L="$1" + shift + if [ "x`locale -a | grep \^$L\$`" != "x$L" ]; then + echo "$L: Locale not supported, skipping..." + return + fi + + ecs="$1"; shift + + echo -n "$L: " + cs="`LC_ALL=$L $JAVA -cp $TESTCLASSES Default`" + if [ $? != 0 ]; then + exit 1 + elif [ "`tolower $cs`" != "`tolower $ecs`" ]; then + echo "$cs, expected $ecs -- ERROR" + exit 1 + else + echo "$cs, as expected" + fi + +} + +go en_US iso-8859-1 +go ja_JP.utf8 utf-8 +go tr_TR iso-8859-9 +go C us-ascii + +if [ "$s" = Linux ]; then + go ja_JP x-euc-jp-linux + go ja_JP.eucjp x-euc-jp-linux + go ja_JP.ujis x-euc-jp-linux + go ja_JP.utf8 utf-8 +fi + +# Solaris +if [ "$s" = SunOS ]; then + go ja x-eucjp-open + go ja_JP.eucJP x-eucjp-open + go ja_JP.PCK x-PCK + go ja_JP.UTF-8 utf-8 +fi diff --git a/jdk/test/java/nio/charset/CharsetDecoder/AverageMax.java b/jdk/test/java/nio/charset/CharsetDecoder/AverageMax.java new file mode 100644 index 0000000000..78ed606469 --- /dev/null +++ b/jdk/test/java/nio/charset/CharsetDecoder/AverageMax.java @@ -0,0 +1,96 @@ +/* + * 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 4853350 + * @summary Ensure that averages do not exceed maxima + * + * @build AverageMax + * @run main AverageMax + * @run main/othervm -Dsun.nio.cs.bugLevel=1.4 AverageMax + */ + +import java.nio.*; +import java.nio.charset.*; + + +public class AverageMax { + + static boolean compat; + + static abstract class Test { + + public abstract void go() throws Exception; + + Test() throws Exception { + try { + go(); + } catch (Exception x) { + if (compat) { + throw new Exception("Exception thrown", x); + } + if (x instanceof IllegalArgumentException) { + System.err.println("Thrown as expected: " + x); + return; + } + throw new Exception("Incorrect exception: " + + x.getClass().getName(), + x); + } + if (!compat) + throw new Exception("No exception thrown"); + } + + } + + public static void main(String[] args) throws Exception { + + // If sun.nio.cs.bugLevel == 1.4 then we want the 1.4 behavior + String bl = System.getProperty("sun.nio.cs.bugLevel"); + compat = (bl != null && bl.equals("1.4")); + final Charset ascii = Charset.forName("US-ASCII"); + + new Test() { + public void go() throws Exception { + new CharsetDecoder(ascii, 3.9f, 1.2f) { + protected CoderResult decodeLoop(ByteBuffer in, + CharBuffer out) + { + return null; + } + }; + }}; + + new Test() { + public void go() throws Exception { + new CharsetEncoder(ascii, 3.9f, 1.2f) { + protected CoderResult encodeLoop(CharBuffer in, + ByteBuffer out) + { + return null; + } + }; + }}; + } + +} diff --git a/jdk/test/java/nio/charset/CharsetDecoder/EmptyInput.java b/jdk/test/java/nio/charset/CharsetDecoder/EmptyInput.java new file mode 100644 index 0000000000..dcf694756a --- /dev/null +++ b/jdk/test/java/nio/charset/CharsetDecoder/EmptyInput.java @@ -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 4400697 + * @summary Ensure that CharsetDecoder.decode throws BUE on empty input + */ + +import java.nio.*; +import java.nio.charset.*; + + +public class EmptyInput { + + public static void main(String[] args) throws Exception { + ByteBuffer bb = ByteBuffer.allocate(10); + bb.flip(); + CharsetDecoder cd = Charset.forName("US-ASCII").newDecoder(); + try { + cd.decode(bb, CharBuffer.allocate(10), true).throwException(); + } catch (BufferUnderflowException x) { + System.err.println("BufferUnderflowException thrown as expected"); + return; + } + throw new Exception("BufferUnderflowException not thrown"); + } + +} diff --git a/jdk/test/java/nio/charset/CharsetEncoder/CanEncode.java b/jdk/test/java/nio/charset/CharsetEncoder/CanEncode.java new file mode 100644 index 0000000000..fc8ad14f9f --- /dev/null +++ b/jdk/test/java/nio/charset/CharsetEncoder/CanEncode.java @@ -0,0 +1,95 @@ +/* + * 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 4821213 + * @summary Unit test for CharsetEncoder.canEncode methods + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; + + +public class CanEncode { + + private static int errors = 0; + private static PrintStream out = System.err; + + private static void wrong(CharsetEncoder ce, boolean can, String what) { + out.println(ce.charset().name() + + ": Wrong answer for " + what + + ": " + !can); + errors++; + } + + private static void ck(CharsetEncoder ce, char c, boolean can) + throws Exception + { + if (ce.canEncode(c) != can) + wrong(ce, can, + ("'" + c + "' (0x" + + Integer.toHexString(c & 0xffff) + ")")); + } + + private static void ck(CharsetEncoder ce, String s, boolean can) + throws Exception + { + if (ce.canEncode(CharBuffer.wrap(s.toCharArray())) != can) + wrong(ce, can, "array \"" + s + "\""); + if (ce.canEncode(CharBuffer.wrap(s)) != can) + wrong(ce, can, "buffer \"" + s + "\""); + } + + private static void test(String csn) throws Exception { + + Charset cs = Charset.forName(csn); + CharsetEncoder ce = cs.newEncoder(); + + if (cs.name().equals("US-ASCII")) { + ck(ce, 'x', true); + ck(ce, '\u00B6', false); + ck(ce, "x", true); + ck(ce, "\u00B6", false); + ck(ce, "xyzzy", true); + ck(ce, "xy\u00B6", false); + } + + // Unpaired surrogates should never be encodable + ck(ce, '\ud800', false); + ck(ce, '\ud801', false); + ck(ce, '\udffe', false); + ck(ce, '\udfff', false); + ck(ce, "\ud800", false); + ck(ce, "\ud801", false); + ck(ce, "\udffe", false); + ck(ce, "\udfff", false); + + } + + public static void main(String[] args) throws Exception { + test("US-ASCII"); + test("UTF-8"); + } + +} diff --git a/jdk/test/java/nio/charset/CharsetEncoder/Flush.java b/jdk/test/java/nio/charset/CharsetEncoder/Flush.java new file mode 100644 index 0000000000..4f51055327 --- /dev/null +++ b/jdk/test/java/nio/charset/CharsetEncoder/Flush.java @@ -0,0 +1,113 @@ +/* + * 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 6227608 + * @summary Test proper handling of flush() + * @author Martin Buchholz + */ + +import java.util.*; +import java.io.*; +import java.nio.*; +import java.nio.charset.*; + +public class Flush { + private static byte[] contents(ByteBuffer bb) { + byte[] contents = new byte[bb.position()]; + ((ByteBuffer)(bb.duplicate().flip())).get(contents); + return contents; + } + + private static ByteBuffer extend(ByteBuffer bb) { + ByteBuffer x = ByteBuffer.allocate(2*bb.capacity()+10); + bb.flip(); + x.put(bb); + return x; + } + + private static void realMain(String[] args) throws Throwable { + // A japanese character should decode as a 3-byte + // switch-to-japanese escape sequence, followed by a 2-byte + // encoding of the char itself, followed by a 3-byte return to + // ASCII escape sequence. + char[] jis0208 = {'\u3001'}; + CharBuffer cb = CharBuffer.wrap(jis0208); + ByteBuffer bb = ByteBuffer.allocate(6); + CharsetEncoder enc = Charset.forName("ISO-2022-JP").newEncoder(); + + check(enc.encode(cb, bb, true).isUnderflow()); + + System.out.println(Arrays.toString(contents(bb))); + check(! cb.hasRemaining()); + equal(contents(bb).length, 3 + 2); + equal(bb.get(0), (byte)0x1b); + + //---------------------------------------------------------------- + // We must be able to recover if flush() returns OVERFLOW + //---------------------------------------------------------------- + check(enc.flush(bb).isOverflow()); + check(enc.flush(bb).isOverflow()); + equal(contents(bb).length, 3 + 2); + + bb = extend(bb); + + check(enc.flush(bb).isUnderflow()); + equal(bb.get(3 + 2), (byte)0x1b); + System.out.println(Arrays.toString(contents(bb))); + equal(contents(bb).length, 3 + 2 + 3); + + //---------------------------------------------------------------- + // A final redundant flush() is a no-op + //---------------------------------------------------------------- + check(enc.flush(bb).isUnderflow()); + check(enc.flush(bb).isUnderflow()); + equal(contents(bb).length, 3 + 2 + 3); + + //---------------------------------------------------------------- + // CharsetEncoder.encode(ByteBuffer) must call flush(ByteBuffer) + //---------------------------------------------------------------- + bb = enc.encode(CharBuffer.wrap(jis0208)); + byte[] expected = "\u001b$B!\"\u001b(B".getBytes("ASCII"); + byte[] contents = new byte[bb.limit()]; bb.get(contents); + check(Arrays.equals(contents, expected)); + } + + //--------------------- Infrastructure --------------------------- + static volatile int passed = 0, failed = 0; + static void pass() { passed++; } + static void fail() { failed++; Thread.dumpStack(); } + static void fail(String msg) { System.out.println(msg); fail(); } + static void unexpected(Throwable t) { failed++; t.printStackTrace(); } + static void check(boolean cond) { if (cond) pass(); else fail(); } + static void equal(Object x, Object y) { + if (x == null ? y == null : x.equals(y)) pass(); + else {System.out.println(x + " not equal to " + y); fail(); }} + + public static void main(String[] args) throws Throwable { + try { realMain(args); } catch (Throwable t) { unexpected(t); } + + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new Exception("Some tests failed"); + } +} diff --git a/jdk/test/java/nio/charset/RemovingSunIO/SunioAlias.java b/jdk/test/java/nio/charset/RemovingSunIO/SunioAlias.java new file mode 100644 index 0000000000..08838d1dc2 --- /dev/null +++ b/jdk/test/java/nio/charset/RemovingSunIO/SunioAlias.java @@ -0,0 +1,823 @@ +/* + * 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 4454622 + @summary Check if all supported sun.io encoding names are supported in nio.charset + */ + +import java.util.HashMap; +import java.util.Set; +import java.io.UnsupportedEncodingException; +import java.nio.charset.*; + +public class SunioAlias { + public static void main(String argv[]) throws UnsupportedEncodingException { + Set keys = aliasTable.keySet(); + String s = "testing string"; + boolean failed = false; + for (String alias : keys) { + /* See if StringCoding works correctly without sun.io package */ + try { + byte[] bs= s.getBytes(alias); + new String(bs, alias); + + Charset csAlias = Charset.forName(alias); + Charset csName = Charset.forName(aliasTable.get(alias)); + if (csName != csAlias) { + System.out.printf("Alias %s and %s is NOT the same charset in nio\n", + alias, aliasTable.get(alias)); + } + } catch (UnsupportedEncodingException e) { + System.out.printf("Alias %s is UnsupportedEncoding\n", alias); + failed = true; + } catch (IllegalCharsetNameException e) { + System.out.printf("Alias %s is IllegalCharsetName\n", alias); + failed = true; + } + } + if (failed) + throw new UnsupportedEncodingException ("sun.io encoding names are not supported in nio.charset!"); + } + //aliasTable is copy/pasted from sun.io.CharacterEncoding.java + + private static HashMap aliasTable; + static { + aliasTable = new HashMap(460, 1.0f); + + /* known failed names... TBD + // JIS-defined Shift JIS + aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe", + "SJIS"); + // Specialized auto-detection for Japanese charsets + aliasTable.put("jis auto detect", "JISAutoDetect"); + // MIBenum: 1010 + aliasTable.put("unicode-1-1", "UnicodeBigUnmarked"); + */ + aliasTable.put("unicode", "UTF-16"); + aliasTable.put("cspc862latinhebrew", "Cp862"); + aliasTable.put("cp-is", "Cp861"); + /* + // X11 Compound Text + aliasTable.put("x-compound-text", "COMPOUND_TEXT"); + aliasTable.put("x11-compound_text", "COMPOUND_TEXT"); + */ + aliasTable.put("us-ascii", "ASCII"); + aliasTable.put("ascii", "ASCII"); + aliasTable.put("646", "ASCII"); // Solaris POSIX locale + aliasTable.put("iso_646.irv:1983", "ASCII"); // Linux POSIX locale + aliasTable.put("ansi_x3.4-1968", "ASCII"); // Caldera linux + aliasTable.put("iso646-us", "ASCII"); + aliasTable.put("default", "ASCII"); // compatibility with obsolete "Default" converters + aliasTable.put("ascii7", "ASCII"); // compatibility with obsolete "Default" converters + + // Core encodings + aliasTable.put("8859_1", "ISO8859_1"); + aliasTable.put("iso8859_1", "ISO8859_1"); + aliasTable.put("utf-8", "UTF8"); + aliasTable.put("utf8", "UTF8"); + aliasTable.put("utf-16le", "UnicodeLittleUnmarked"); + + // Standard encodings used on Solaris and Linux + aliasTable.put("iso8859-1", "ISO8859_1"); + aliasTable.put("iso8859-2", "ISO8859_2"); + aliasTable.put("iso8859-4", "ISO8859_4"); + aliasTable.put("iso8859-5", "ISO8859_5"); + aliasTable.put("iso8859-6", "ISO8859_6"); + aliasTable.put("iso8859-8", "ISO8859_8"); + aliasTable.put("iso8859-9", "ISO8859_9"); + aliasTable.put("iso8859-13", "ISO8859_13"); + aliasTable.put("iso8859-15", "ISO8859_15"); + aliasTable.put("5601", "EUC_KR"); + aliasTable.put("ansi-1251", "Cp1251"); + aliasTable.put("big5", "Big5"); + aliasTable.put("big5hk", "Big5_HKSCS"); + aliasTable.put("eucjp", "EUC_JP"); + aliasTable.put("cns11643", "EUC_TW"); + aliasTable.put("gb2312", "EUC_CN"); + aliasTable.put("gb18030", "GB18030"); + aliasTable.put("gbk", "GBK"); + aliasTable.put("koi8-r", "KOI8_R"); + aliasTable.put("tis620.2533", "TIS620"); + + // Windows encodings + aliasTable.put("cp1250", "Cp1250"); + aliasTable.put("cp1251", "Cp1251"); + aliasTable.put("cp1252", "Cp1252"); + aliasTable.put("cp1253", "Cp1253"); + aliasTable.put("cp1254", "Cp1254"); + aliasTable.put("cp1255", "Cp1255"); + aliasTable.put("cp1256", "Cp1256"); + aliasTable.put("cp1257", "Cp1257"); + aliasTable.put("cp1258", "Cp1258"); + aliasTable.put("ms874", "MS874"); + aliasTable.put("ms932", "MS932"); + aliasTable.put("ms949", "MS949"); + aliasTable.put("ms950", "MS950"); + aliasTable.put("ms1361", "MS1361"); + + // MIBenum: 4 + aliasTable.put("8859_1", "ISO8859_1"); + aliasTable.put("iso_8859-1:1987", "ISO8859_1"); + aliasTable.put("iso-ir-100", "ISO8859_1"); + aliasTable.put("iso_8859-1", "ISO8859_1"); + aliasTable.put("iso-8859-1", "ISO8859_1"); + aliasTable.put("iso8859-1", "ISO8859_1"); + aliasTable.put("latin1", "ISO8859_1"); + aliasTable.put("l1", "ISO8859_1"); + aliasTable.put("ibm819", "ISO8859_1"); + aliasTable.put("ibm-819", "ISO8859_1"); + aliasTable.put("cp819", "ISO8859_1"); + aliasTable.put("819", "ISO8859_1"); + aliasTable.put("csisolatin1", "ISO8859_1"); + + // MIBenum: 5 + aliasTable.put("8859_2", "ISO8859_2"); + aliasTable.put("iso_8859-2:1987", "ISO8859_2"); + aliasTable.put("iso-ir-101", "ISO8859_2"); + aliasTable.put("iso_8859-2", "ISO8859_2"); + aliasTable.put("iso-8859-2", "ISO8859_2"); + aliasTable.put("iso8859-2", "ISO8859_2"); + aliasTable.put("latin2", "ISO8859_2"); + aliasTable.put("l2", "ISO8859_2"); + aliasTable.put("ibm912", "ISO8859_2"); + aliasTable.put("ibm-912", "ISO8859_2"); + aliasTable.put("cp912", "ISO8859_2"); + aliasTable.put("912", "ISO8859_2"); + aliasTable.put("csisolatin2", "ISO8859_2"); + + // MIBenum: 6 + aliasTable.put("8859_3", "ISO8859_3"); + aliasTable.put("iso_8859-3:1988", "ISO8859_3"); + aliasTable.put("iso-ir-109", "ISO8859_3"); + aliasTable.put("iso_8859-3", "ISO8859_3"); + aliasTable.put("iso-8859-3", "ISO8859_3"); + aliasTable.put("iso8859-3", "ISO8859_3"); + aliasTable.put("latin3", "ISO8859_3"); + aliasTable.put("l3", "ISO8859_3"); + aliasTable.put("ibm913", "ISO8859_3"); + aliasTable.put("ibm-913", "ISO8859_3"); + aliasTable.put("cp913", "ISO8859_3"); + aliasTable.put("913", "ISO8859_3"); + aliasTable.put("csisolatin3", "ISO8859_3"); + + // MIBenum: 7 + aliasTable.put("8859_4", "ISO8859_4"); + aliasTable.put("iso_8859-4:1988", "ISO8859_4"); + aliasTable.put("iso-ir-110", "ISO8859_4"); + aliasTable.put("iso_8859-4", "ISO8859_4"); + aliasTable.put("iso-8859-4", "ISO8859_4"); + aliasTable.put("iso8859-4", "ISO8859_4"); + aliasTable.put("latin4", "ISO8859_4"); + aliasTable.put("l4", "ISO8859_4"); + aliasTable.put("ibm914", "ISO8859_4"); + aliasTable.put("ibm-914", "ISO8859_4"); + aliasTable.put("cp914", "ISO8859_4"); + aliasTable.put("914", "ISO8859_4"); + aliasTable.put("csisolatin4", "ISO8859_4"); + + // MIBenum: 8 + aliasTable.put("8859_5", "ISO8859_5"); + aliasTable.put("iso_8859-5:1988", "ISO8859_5"); + aliasTable.put("iso-ir-144", "ISO8859_5"); + aliasTable.put("iso_8859-5", "ISO8859_5"); + aliasTable.put("iso-8859-5", "ISO8859_5"); + aliasTable.put("iso8859-5", "ISO8859_5"); + aliasTable.put("cyrillic", "ISO8859_5"); + aliasTable.put("csisolatincyrillic", "ISO8859_5"); + aliasTable.put("ibm915", "ISO8859_5"); + aliasTable.put("ibm-915", "ISO8859_5"); + aliasTable.put("cp915", "ISO8859_5"); + aliasTable.put("915", "ISO8859_5"); + + // MIBenum: 9 + aliasTable.put("8859_6", "ISO8859_6"); + aliasTable.put("iso_8859-6:1987", "ISO8859_6"); + aliasTable.put("iso-ir-127", "ISO8859_6"); + aliasTable.put("iso_8859-6", "ISO8859_6"); + aliasTable.put("iso-8859-6", "ISO8859_6"); + aliasTable.put("iso8859-6", "ISO8859_6"); + aliasTable.put("ecma-114", "ISO8859_6"); + aliasTable.put("asmo-708", "ISO8859_6"); + aliasTable.put("arabic", "ISO8859_6"); + aliasTable.put("csisolatinarabic", "ISO8859_6"); + aliasTable.put("ibm1089", "ISO8859_6"); + aliasTable.put("ibm-1089", "ISO8859_6"); + aliasTable.put("cp1089", "ISO8859_6"); + aliasTable.put("1089", "ISO8859_6"); + + // MIBenum: 10 + aliasTable.put("8859_7", "ISO8859_7"); + aliasTable.put("iso_8859-7:1987", "ISO8859_7"); + aliasTable.put("iso-ir-126", "ISO8859_7"); + aliasTable.put("iso_8859-7", "ISO8859_7"); + aliasTable.put("iso-8859-7", "ISO8859_7"); + aliasTable.put("iso8859-7", "ISO8859_7"); + aliasTable.put("elot_928", "ISO8859_7"); + aliasTable.put("ecma-118", "ISO8859_7"); + aliasTable.put("greek", "ISO8859_7"); + aliasTable.put("greek8", "ISO8859_7"); + aliasTable.put("csisolatingreek", "ISO8859_7"); + aliasTable.put("ibm813", "ISO8859_7"); + aliasTable.put("ibm-813", "ISO8859_7"); + aliasTable.put("cp813", "ISO8859_7"); + aliasTable.put("813", "ISO8859_7"); + aliasTable.put("sun_eu_greek", "ISO8859_7"); + + // MIBenum: 11 + aliasTable.put("8859_8", "ISO8859_8"); + aliasTable.put("iso_8859-8:1988", "ISO8859_8"); + aliasTable.put("iso-ir-138", "ISO8859_8"); + aliasTable.put("iso_8859-8", "ISO8859_8"); + aliasTable.put("iso-8859-8", "ISO8859_8"); + aliasTable.put("iso8859-8", "ISO8859_8"); + aliasTable.put("hebrew", "ISO8859_8"); + aliasTable.put("csisolatinhebrew", "ISO8859_8"); + aliasTable.put("ibm916", "ISO8859_8"); + aliasTable.put("ibm-916", "ISO8859_8"); + aliasTable.put("cp916", "ISO8859_8"); + aliasTable.put("916", "ISO8859_8"); + + // MIBenum: 12 + aliasTable.put("8859_9", "ISO8859_9"); + aliasTable.put("iso-ir-148", "ISO8859_9"); + aliasTable.put("iso_8859-9", "ISO8859_9"); + aliasTable.put("iso-8859-9", "ISO8859_9"); + aliasTable.put("iso8859-9", "ISO8859_9"); + aliasTable.put("latin5", "ISO8859_9"); + aliasTable.put("l5", "ISO8859_9"); + aliasTable.put("ibm920", "ISO8859_9"); + aliasTable.put("ibm-920", "ISO8859_9"); + aliasTable.put("cp920", "ISO8859_9"); + aliasTable.put("920", "ISO8859_9"); + aliasTable.put("csisolatin5", "ISO8859_9"); + + // MIBenum: ??? + aliasTable.put("8859_13", "ISO8859_13"); + aliasTable.put("iso_8859-13", "ISO8859_13"); + aliasTable.put("iso-8859-13", "ISO8859_13"); + aliasTable.put("iso8859-13", "ISO8859_13"); + + + // MIBenum: ???? + aliasTable.put("8859_15", "ISO8859_15"); + aliasTable.put("iso-8859-15", "ISO8859_15"); + aliasTable.put("iso_8859-15", "ISO8859_15"); + aliasTable.put("iso8859-15", "ISO8859_15"); + aliasTable.put("ibm923", "ISO8859_15"); + aliasTable.put("ibm-923", "ISO8859_15"); + aliasTable.put("cp923", "ISO8859_15"); + aliasTable.put("923", "ISO8859_15"); + aliasTable.put("latin0", "ISO8859_15"); + aliasTable.put("latin9", "ISO8859_15"); + aliasTable.put("csisolatin0", "ISO8859_15"); + aliasTable.put("csisolatin9", "ISO8859_15"); + + //For compatibility purpose + aliasTable.put("iso8859_15_fdis", "ISO8859_15"); + + // MIBenum: 106 + aliasTable.put("utf-8", "UTF8"); + + // Alias recommended in RFC 1641 + aliasTable.put("unicode-1-1-utf-8", "UTF8"); + + // MIBenum: 1000 + aliasTable.put("iso-10646-ucs-2", "UnicodeBigUnmarked"); + + // Per Unicode standard + aliasTable.put("utf-16be", "UnicodeBigUnmarked"); + aliasTable.put("utf-16le", "UnicodeLittleUnmarked"); + aliasTable.put("utf-16", "UTF16"); + + // Used by drag-and-drop subsystem + aliasTable.put("x-utf-16be", "UnicodeBigUnmarked"); + aliasTable.put("x-utf-16le", "UnicodeLittleUnmarked"); + + // MIBenum: ???? + aliasTable.put("ibm037", "Cp037"); + aliasTable.put("ibm-037", "Cp037"); + aliasTable.put("cp037", "Cp037"); + aliasTable.put("037", "Cp037"); + + // MIBenum: ???? + aliasTable.put("ibm273", "Cp273"); + aliasTable.put("ibm-273", "Cp273"); + aliasTable.put("cp273", "Cp273"); + aliasTable.put("273", "Cp273"); + + // MIBenum: ???? + aliasTable.put("ibm277", "Cp277"); + aliasTable.put("ibm-277", "Cp277"); + aliasTable.put("cp277", "Cp277"); + aliasTable.put("277", "Cp277"); + + // MIBenum: ???? + aliasTable.put("ibm278", "Cp278"); + aliasTable.put("ibm-278", "Cp278"); + aliasTable.put("cp278", "Cp278"); + aliasTable.put("278", "Cp278"); + + // MIBenum: ???? + aliasTable.put("ibm280", "Cp280"); + aliasTable.put("ibm-280", "Cp280"); + aliasTable.put("cp280", "Cp280"); + aliasTable.put("280", "Cp280"); + + // MIBenum: ???? + aliasTable.put("ibm284", "Cp284"); + aliasTable.put("ibm-284", "Cp284"); + aliasTable.put("cp284", "Cp284"); + aliasTable.put("284", "Cp284"); + + // MIBenum: ???? + aliasTable.put("ibm285", "Cp285"); + aliasTable.put("ibm-285", "Cp285"); + aliasTable.put("cp285", "Cp285"); + aliasTable.put("285", "Cp285"); + + // MIBenum: ???? + aliasTable.put("ibm297", "Cp297"); + aliasTable.put("ibm-297", "Cp297"); + aliasTable.put("cp297", "Cp297"); + aliasTable.put("297", "Cp297"); + + // MIBenum: ???? + aliasTable.put("ibm420", "Cp420"); + aliasTable.put("ibm-420", "Cp420"); + aliasTable.put("cp420", "Cp420"); + aliasTable.put("420", "Cp420"); + + // MIBenum: ???? + aliasTable.put("ibm424", "Cp424"); + aliasTable.put("ibm-424", "Cp424"); + aliasTable.put("cp424", "Cp424"); + aliasTable.put("424", "Cp424"); + + // MIBenum: 2011 + aliasTable.put("ibm437", "Cp437"); + aliasTable.put("ibm-437", "Cp437"); + aliasTable.put("cp437", "Cp437"); + aliasTable.put("437", "Cp437"); + aliasTable.put("cspc8codepage437", "Cp437"); + + // MIBenum: ???? + aliasTable.put("ibm500", "Cp500"); + aliasTable.put("ibm-500", "Cp500"); + aliasTable.put("cp500", "Cp500"); + aliasTable.put("500", "Cp500"); + + // MIBenum: ???? + aliasTable.put("ibm737", "Cp737"); + aliasTable.put("ibm-737", "Cp737"); + aliasTable.put("cp737", "Cp737"); + aliasTable.put("737", "Cp737"); + + // MIBenum: ???? + aliasTable.put("ibm775", "Cp775"); + aliasTable.put("ibm-775", "Cp775"); + aliasTable.put("cp775", "Cp775"); + aliasTable.put("775", "Cp775"); + + // MIBenum: ???? + aliasTable.put("ibm838", "Cp838"); /* MDA */ + aliasTable.put("ibm-838", "Cp838"); /* MDA */ + aliasTable.put("cp838", "Cp838"); /* MDA */ + aliasTable.put("838", "Cp838"); /* MDA */ + + // "Cp850" + // MIBenum: 2009 + aliasTable.put("ibm850", "Cp850"); + aliasTable.put("ibm-850", "Cp850"); + aliasTable.put("cp850", "Cp850"); + aliasTable.put("850", "Cp850"); + aliasTable.put("cspc850multilingual", "Cp850"); + + // "Cp852" + // MIBenum: 2010 + aliasTable.put("ibm852", "Cp852"); + aliasTable.put("ibm-852", "Cp852"); + aliasTable.put("cp852", "Cp852"); + aliasTable.put("852", "Cp852"); + aliasTable.put("cspcp852", "Cp852"); + + // "Cp855" + // MIBenum: 2046 + aliasTable.put("ibm855", "Cp855"); + aliasTable.put("ibm-855", "Cp855"); + aliasTable.put("cp855", "Cp855"); + aliasTable.put("855", "Cp855"); + aliasTable.put("cspcp855", "Cp855"); + + // "Cp855" + // MIBenum: ??? + aliasTable.put("ibm856", "Cp856"); + aliasTable.put("ibm-856", "Cp856"); + aliasTable.put("cp856", "Cp856"); + aliasTable.put("856", "Cp856"); + + // "Cp857" + // MIBenum: 2047 + aliasTable.put("ibm857", "Cp857"); + aliasTable.put("ibm-857", "Cp857"); + aliasTable.put("cp857", "Cp857"); + aliasTable.put("857", "Cp857"); + aliasTable.put("csibm857", "Cp857"); + + // "Cp860" + // MIBenum: 2048 + aliasTable.put("ibm860", "Cp860"); + aliasTable.put("ibm-860", "Cp860"); + aliasTable.put("cp860", "Cp860"); + aliasTable.put("860", "Cp860"); + aliasTable.put("csibm860", "Cp860"); + + // MIBenum: 2049 + aliasTable.put("ibm861", "Cp861"); + aliasTable.put("ibm-861", "Cp861"); + aliasTable.put("cp861", "Cp861"); + aliasTable.put("861", "Cp861"); + aliasTable.put("csibm861", "Cp861"); + + // MIBenum: 2013 + aliasTable.put("ibm862", "Cp862"); + aliasTable.put("ibm-862", "Cp862"); + aliasTable.put("cp862", "Cp862"); + aliasTable.put("862", "Cp862"); + + // MIBenum: 2050 + aliasTable.put("ibm863", "Cp863"); + aliasTable.put("ibm-863", "Cp863"); + aliasTable.put("cp863", "Cp863"); + aliasTable.put("863", "Cp863"); + aliasTable.put("csibm863", "Cp863"); + + // MIBenum: 2051 + aliasTable.put("ibm864", "Cp864"); + aliasTable.put("ibm-864", "Cp864"); + aliasTable.put("cp864", "Cp864"); + aliasTable.put("csibm864", "Cp864"); + + // MIBenum: 2052 + aliasTable.put("ibm865", "Cp865"); + aliasTable.put("ibm-865", "Cp865"); + aliasTable.put("cp865", "Cp865"); + aliasTable.put("865", "Cp865"); + aliasTable.put("csibm865", "Cp865"); + + // MIBenum: ???? + aliasTable.put("ibm866", "Cp866"); + aliasTable.put("ibm-866", "Cp866"); + aliasTable.put("cp866", "Cp866"); + aliasTable.put("866", "Cp866"); + aliasTable.put("csibm866", "Cp866"); + + // MIBenum: ???? + aliasTable.put("ibm868", "Cp868"); + aliasTable.put("ibm-868", "Cp868"); + aliasTable.put("cp868", "Cp868"); + aliasTable.put("868", "Cp868"); + + // MIBenum: 2054 + aliasTable.put("ibm869", "Cp869"); + aliasTable.put("ibm-869", "Cp869"); + aliasTable.put("cp869", "Cp869"); + aliasTable.put("869", "Cp869"); + aliasTable.put("cp-gr", "Cp869"); + aliasTable.put("csibm869", "Cp869"); + + // MIBenum: ???? + aliasTable.put("ibm870", "Cp870"); + aliasTable.put("ibm-870", "Cp870"); + aliasTable.put("cp870", "Cp870"); + aliasTable.put("870", "Cp870"); + + // MIBenum: ???? + aliasTable.put("ibm871", "Cp871"); + aliasTable.put("ibm-871", "Cp871"); + aliasTable.put("cp871", "Cp871"); + aliasTable.put("871", "Cp871"); + + // MIBenum: ???? + aliasTable.put("ibm874", "Cp874"); + aliasTable.put("ibm-874", "Cp874"); + aliasTable.put("cp874", "Cp874"); + aliasTable.put("874", "Cp874"); + + // MIBenum: ???? + aliasTable.put("ibm875", "Cp875"); + aliasTable.put("ibm-875", "Cp875"); + aliasTable.put("cp875", "Cp875"); + aliasTable.put("875", "Cp875"); + + // MIBenum: ???? + aliasTable.put("ibm918", "Cp918"); + aliasTable.put("ibm-918", "Cp918"); + aliasTable.put("cp918", "Cp918"); + aliasTable.put("918", "Cp918"); + + // MIBenum: ???? + aliasTable.put("ibm921", "Cp921"); + aliasTable.put("ibm-921", "Cp921"); + aliasTable.put("cp921", "Cp921"); + aliasTable.put("921", "Cp921"); + + // MIBenum: ???? + aliasTable.put("ibm922", "Cp922"); + aliasTable.put("ibm-922", "Cp922"); + aliasTable.put("cp922", "Cp922"); + aliasTable.put("922", "Cp922"); + + // MIBenum: ???? + aliasTable.put("ibm930", "Cp930"); /* MDA */ + aliasTable.put("ibm-930", "Cp930"); /* MDA */ + aliasTable.put("cp930", "Cp930"); /* MDA */ + aliasTable.put("930", "Cp930"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm933", "Cp933"); /* MDA */ + aliasTable.put("ibm-933", "Cp933"); /* MDA */ + aliasTable.put("cp933", "Cp933"); /* MDA */ + aliasTable.put("933", "Cp933"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm935", "Cp935"); /* MDA */ + aliasTable.put("ibm-935", "Cp935"); /* MDA */ + aliasTable.put("cp935", "Cp935"); /* MDA */ + aliasTable.put("935", "Cp935"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm937", "Cp937"); /* MDA */ + aliasTable.put("ibm-937", "Cp937"); /* MDA */ + aliasTable.put("cp937", "Cp937"); /* MDA */ + aliasTable.put("937", "Cp937"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm939", "Cp939"); /* MDA */ + aliasTable.put("ibm-939", "Cp939"); /* MDA */ + aliasTable.put("cp939", "Cp939"); /* MDA */ + aliasTable.put("939", "Cp939"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm942", "Cp942"); /* MDA */ + aliasTable.put("ibm-942", "Cp942"); /* MDA */ + aliasTable.put("cp942", "Cp942"); /* MDA */ + aliasTable.put("942", "Cp942"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm943", "Cp943"); /* ibm.3158 */ + aliasTable.put("ibm-943", "Cp943"); /* ibm.3158 */ + aliasTable.put("cp943", "Cp943"); /* ibm.3158 */ + aliasTable.put("943", "Cp943"); /* ibm.3158 */ + + // MIBenum: ???? + aliasTable.put("ibm948", "Cp948"); /* MDA */ + aliasTable.put("ibm-948", "Cp948"); /* MDA */ + aliasTable.put("cp948", "Cp948"); /* MDA */ + aliasTable.put("948", "Cp948"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm949", "Cp949"); /* MDA */ + aliasTable.put("ibm-949", "Cp949"); /* MDA */ + aliasTable.put("cp949", "Cp949"); /* MDA */ + aliasTable.put("949", "Cp949"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm950", "Cp950"); /* MDA */ + aliasTable.put("ibm-950", "Cp950"); /* MDA */ + aliasTable.put("cp950", "Cp950"); /* MDA */ + aliasTable.put("950", "Cp950"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm964", "Cp964"); /* MDA */ + aliasTable.put("ibm-964", "Cp964"); /* MDA */ + aliasTable.put("cp964", "Cp964"); /* MDA */ + aliasTable.put("964", "Cp964"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm970", "Cp970"); /* MDA */ + aliasTable.put("ibm-970", "Cp970"); /* MDA */ + aliasTable.put("cp970", "Cp970"); /* MDA */ + aliasTable.put("970", "Cp970"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm1006", "Cp1006"); + aliasTable.put("ibm-1006", "Cp1006"); + aliasTable.put("cp1006", "Cp1006"); + aliasTable.put("1006", "Cp1006"); + + // MIBenum: ???? + aliasTable.put("ibm1025", "Cp1025"); + aliasTable.put("ibm-1025", "Cp1025"); + aliasTable.put("cp1025", "Cp1025"); + aliasTable.put("1025", "Cp1025"); + + // MIBenum: ???? + aliasTable.put("ibm1026", "Cp1026"); + aliasTable.put("ibm-1026", "Cp1026"); + aliasTable.put("cp1026", "Cp1026"); + aliasTable.put("1026", "Cp1026"); + + // MIBenum: ???? + aliasTable.put("ibm1097", "Cp1097"); + aliasTable.put("ibm-1097", "Cp1097"); + aliasTable.put("cp1097", "Cp1097"); + aliasTable.put("1097", "Cp1097"); + + // MIBenum: ???? + aliasTable.put("ibm1098", "Cp1098"); + aliasTable.put("ibm-1098", "Cp1098"); + aliasTable.put("cp1098", "Cp1098"); + aliasTable.put("1098", "Cp1098"); + + // MIBenum: ???? + aliasTable.put("ibm1112", "Cp1112"); + aliasTable.put("ibm-1112", "Cp1112"); + aliasTable.put("cp1112", "Cp1112"); + aliasTable.put("1112", "Cp1112"); + + // MIBenum: ???? + aliasTable.put("ibm1122", "Cp1122"); + aliasTable.put("ibm-1122", "Cp1122"); + aliasTable.put("cp1122", "Cp1122"); + aliasTable.put("1122", "Cp1122"); + + // MIBenum: ???? + aliasTable.put("ibm1123", "Cp1123"); + aliasTable.put("ibm-1123", "Cp1123"); + aliasTable.put("cp1123", "Cp1123"); + aliasTable.put("1123", "Cp1123"); + + // MIBenum: ???? + aliasTable.put("ibm1124", "Cp1124"); + aliasTable.put("ibm-1124", "Cp1124"); + aliasTable.put("cp1124", "Cp1124"); + aliasTable.put("1124", "Cp1124"); + + // MIBenum: ???? + aliasTable.put("ibm1381", "Cp1381"); /* MDA */ + aliasTable.put("ibm-1381", "Cp1381"); /* MDA */ + aliasTable.put("cp1381", "Cp1381"); /* MDA */ + aliasTable.put("1381", "Cp1381"); /* MDA */ + + // MIBenum: ???? + aliasTable.put("ibm1383", "Cp1383"); /* MDA */ + aliasTable.put("ibm-1383", "Cp1383"); /* MDA */ + aliasTable.put("cp1383", "Cp1383"); /* MDA */ + aliasTable.put("1383", "Cp1383"); /* MDA */ + + // MIBenum: 16/39 + aliasTable.put("jis", "ISO2022JP"); + aliasTable.put("iso-2022-jp", "ISO2022JP"); + aliasTable.put("csiso2022jp", "ISO2022JP"); + aliasTable.put("jis_encoding", "ISO2022JP"); + aliasTable.put("csjisencoding", "ISO2022JP"); + + // MIBenum: 17/2024 + aliasTable.put("windows-31j", "MS932"); + aliasTable.put("cswindows31j", "MS932"); + + + aliasTable.put("pck", "PCK"); // Case independent PCK alias + + /*if (sjisIsMS932) { + aliasTable.put("shift_jis", "MS932"); // IANA shift jis aliases + aliasTable.put("csshiftjis", "MS932"); // updated per 4556882 + aliasTable.put("x-sjis", "MS932"); + aliasTable.put("ms_kanji", "MS932"); + } else { + */ + aliasTable.put("shift_jis", "SJIS"); // IANA shift jis aliases + aliasTable.put("csshiftjis", "SJIS"); + aliasTable.put("x-sjis", "SJIS"); + aliasTable.put("ms_kanji", "SJIS"); + /* + } + */ + // MIBenum: 18 + // Japanese EUC + aliasTable.put("eucjis", "EUC_JP"); + aliasTable.put("euc-jp", "EUC_JP"); + aliasTable.put("eucjp", "EUC_JP"); + aliasTable.put("extended_unix_code_packed_format_for_japanese", + "EUC_JP"); + aliasTable.put("cseucpkdfmtjapanese", "EUC_JP"); + aliasTable.put("x-euc-jp", "EUC_JP"); + aliasTable.put("x-eucjp", "EUC_JP"); + aliasTable.put("eucjp-open", "EUC_JP_Solaris"); // 1.3.1_x compatibility + + // For handing only JIS0202 and JIS0208 in linux + aliasTable.put("euc-jp-linux", "EUC_JP_LINUX"); + + // MIBenum: 874 + aliasTable.put("windows-874", "MS874"); + + // MIBenum: 2250 + aliasTable.put("windows-1250", "Cp1250"); + + // MIBenum: 2251 + aliasTable.put("windows-1251", "Cp1251"); + aliasTable.put("ansi-1251", "Cp1251"); // Solaris ru_RU.ANSI1251 locale + + // MIBenum: 2252 + aliasTable.put("windows-1252", "Cp1252"); + + // MIBenum: 2253 + aliasTable.put("windows-1253", "Cp1253"); + + // MIBenum: 2254 + aliasTable.put("windows-1254", "Cp1254"); + + // MIBenum: 2255 + aliasTable.put("windows-1255", "Cp1255"); + + // MIBenum: 2256 + aliasTable.put("windows-1256", "Cp1256"); + + // MIBenum: 2257 + aliasTable.put("windows-1257", "Cp1257"); + + // MIBenum: 2258 + aliasTable.put("windows-1258", "Cp1258"); + + // MIBenum: ???? + aliasTable.put("ibm33722", "Cp33722"); /* MDA */ + aliasTable.put("ibm-33722", "Cp33722"); /* MDA */ + aliasTable.put("cp33722", "Cp33722"); /* MDA */ + aliasTable.put("33722", "Cp33722"); /* MDA */ + + // Russian KOI8-R + aliasTable.put("koi8-r", "KOI8_R"); + aliasTable.put("koi8", "KOI8_R"); + aliasTable.put("cskoi8r", "KOI8_R"); + + // Simplified Chinese + aliasTable.put("gb2312", "EUC_CN"); + aliasTable.put("gb2312-80", "EUC_CN"); + aliasTable.put("gb2312-1980", "EUC_CN"); + aliasTable.put("euc-cn", "EUC_CN"); + aliasTable.put("euccn", "EUC_CN"); + + aliasTable.put("big5", "Big5"); + aliasTable.put("big5hk", "Big5_HKSCS"); + aliasTable.put("big5-hkscs", "Big5_HKSCS"); + // Added for future compatibility, explicit mapping to Unicode 3.0 + aliasTable.put("big5-hkscs:unicode3.0", "Big5_HKSCS"); + aliasTable.put("big5_solaris", "Big5_Solaris"); + + // Traditional Chinese + aliasTable.put("cns11643", "EUC_TW"); + aliasTable.put("euc-tw", "EUC_TW"); + aliasTable.put("euctw", "EUC_TW"); + + // Korean + aliasTable.put("ksc5601", "EUC_KR"); + aliasTable.put("euc-kr", "EUC_KR"); + aliasTable.put("euckr", "EUC_KR"); + aliasTable.put("ks_c_5601-1987", "EUC_KR"); + aliasTable.put("ksc5601-1987", "EUC_KR"); + aliasTable.put("ksc5601_1987", "EUC_KR"); + aliasTable.put("ksc_5601", "EUC_KR"); + aliasTable.put("5601", "EUC_KR"); + + aliasTable.put("ksc5601-1992", "Johab"); + aliasTable.put("ksc5601_1992", "Johab"); + aliasTable.put("ms1361", "Johab"); + + aliasTable.put("windows-949", "MS949"); + + //MIBenum: 37 + aliasTable.put("iso-2022-kr", "ISO2022KR"); + aliasTable.put("csiso2022kr", "ISO2022KR"); + + // Thai + aliasTable.put("tis620.2533", "TIS620"); + aliasTable.put("tis-620", "TIS620"); // Linux name + + // Variants + aliasTable.put("cp942c", "Cp942C"); + aliasTable.put("cp943c", "Cp943C"); + aliasTable.put("cp949c", "Cp949C"); + aliasTable.put("iscii", "ISCII91"); + } +} diff --git a/jdk/test/java/nio/charset/RemovingSunIO/TestCOMP.java b/jdk/test/java/nio/charset/RemovingSunIO/TestCOMP.java new file mode 100644 index 0000000000..c3cbf8f279 --- /dev/null +++ b/jdk/test/java/nio/charset/RemovingSunIO/TestCOMP.java @@ -0,0 +1,76 @@ +/* + * 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 6176819 + @summary Check if COMPUND_TEXT charset works as expected + @run main/timeout=1200 TestCOMP + */ + +import java.util.HashMap; +import java.util.Set; +import java.io.UnsupportedEncodingException; +import java.nio.charset.*; +import java.nio.*; + +public class TestCOMP { + public static void main(String[] argv) throws CharacterCodingException { + String osName = System.getProperty("os.name"); + if (osName.startsWith("Windows")) + return; + try { + String src = + "JIS0208\u4eb0" + + "ASCII" + + "JIS0212\u4e74\u4e79" + + "GB2312\u7279\u5b9a" + + "JIS0201\uff67\uff68" + + "Johab\uac00\uac01"; + + byte[] ba = src.getBytes("COMPOUND_TEXT"); + /* + System.out.print("ba="); + for (int i = 0; i < ba.length; i++) { + System.out.printf("<%x> ", ba[i] & 0xff); + } + System.out.println(); + */ + String dst = new String(ba, "COMPOUND_TEXT"); + char[] ca = dst.toCharArray(); + /* + System.out.print("ca="); + for (int i = 0; i < ca.length; i++) { + System.out.printf("<%x> ", ca[i] & 0xffff); + } + System.out.println(); + */ + if (!src.equals(dst)) { + System.out.printf("src=<%s>\n", src); + System.out.printf("dst=<%s>\n", dst); + throw new CharacterCodingException(); + } + } catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/jdk/test/java/nio/charset/RemovingSunIO/TestUnmappableForLength.java b/jdk/test/java/nio/charset/RemovingSunIO/TestUnmappableForLength.java new file mode 100644 index 0000000000..f07984fa77 --- /dev/null +++ b/jdk/test/java/nio/charset/RemovingSunIO/TestUnmappableForLength.java @@ -0,0 +1,59 @@ +/* + * 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 6227339 + @summary Check if returned CoderResult.unmappableForLength has correct + length value. + */ + +import java.nio.charset.*; +import java.nio.*; + +public class TestUnmappableForLength { + public static void main(String[] argv) throws CharacterCodingException { + byte[] ba = {(byte)0xa2, (byte)0xff}; + //EUC_TW has its own decodeArrayLoop() + testDecode("EUC_TW", ba, 2); + + //EUC_CN uses DoubleByteDecoder's decodeArrayLoop() + testDecode("EUC_CN", ba, 2); + } + + static void testDecode(String csName, byte[] ba, int expected) + throws CharacterCodingException + { + try { + CoderResult cr = Charset + .forName(csName) + .newDecoder() + .decode(ByteBuffer.wrap(ba), CharBuffer.allocate(4), true); + if (cr.isUnmappable() && cr.length() != expected) { + throw new CharacterCodingException(); + } + } catch (IllegalArgumentException x){ + x.printStackTrace(); + } + } + +} diff --git a/jdk/test/java/nio/charset/coders/BashCache.java b/jdk/test/java/nio/charset/coders/BashCache.java new file mode 100644 index 0000000000..04988b6252 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/BashCache.java @@ -0,0 +1,89 @@ +/* + * 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 4517279 + * @summary Stochastic test of thread-local coder caches + */ + +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + + +public class BashCache { + + private static final int THREADS = 10; + private static final int TRIALS = 1000; + + private static final Charset[] charsets + = new Charset[] { + Charset.forName("US-ASCII"), + Charset.forName("UTF-8"), + Charset.forName("CP1252"), + Charset.forName("UTF-16BE") }; + + private static volatile boolean failed = false; + + private static class Basher extends Thread { + + Random rnd = new Random(System.identityHashCode(this)); + + public void run() { + for (int i = 0; i < TRIALS; i++) { + Charset cs = charsets[rnd.nextInt(4)]; + try { + if (rnd.nextBoolean()) { + cs.encode("hi mom"); + } else { + cs.decode(ByteBuffer.wrap(new byte[] { + (byte)'x', (byte)'y', + (byte)'z', (byte)'z', + (byte)'y' })); + } + } catch (Exception x) { + x.printStackTrace(); + failed = true; + return; + } + if (rnd.nextBoolean()) + Thread.yield(); + } + } + + } + + public static void main(String[] args) throws Exception { + Charset cs = Charset.forName("us-ascii"); + Basher[] bashers = new Basher[THREADS]; + for (int i = 0; i < THREADS; i++) { + bashers[i] = new Basher(); + bashers[i].start(); + } + for (int i = 0; i < THREADS; i++) + bashers[i].join(); + if (failed) + throw new Exception("Test failed"); + } + +} diff --git a/jdk/test/java/nio/charset/coders/BashStreams.java b/jdk/test/java/nio/charset/coders/BashStreams.java new file mode 100644 index 0000000000..555c339892 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/BashStreams.java @@ -0,0 +1,391 @@ +/* + * 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 Stochastic test of charset-based streams + */ + +import java.io.*; +import java.util.*; +import java.nio.*; +import java.nio.channels.*; +import java.nio.charset.*; + + +public class BashStreams { + + static final PrintStream log = System.err; + + + static class CharacterGenerator { + + private final Random rand; + private final int max; + private final int limit; + private int count = 0; + + CharacterGenerator(long seed, String csn, int limit) { + rand = new Random(seed); + this.max = Surrogate.UCS4_MAX + 1; + this.limit = limit; + } + + private char[] saved = new char[10]; + private int savedCount = 0; + + void push(char c) { + saved[savedCount++] = c; + count--; + } + + int count() { + return count; + } + + boolean hasNext() { + return count < limit; + } + + char next() { + if (count >= limit) + throw new RuntimeException("EOF"); + if (savedCount > 0) { + savedCount--; + count++; + return saved[savedCount]; + } + int c; + for (;;) { + c = rand.nextInt(max); + if (Surrogate.is(c) || (c == 0xfffe) || (c == 0xffff)) + continue; + if (Surrogate.neededFor(c) && (count == limit - 1)) + continue; + break; + } + count++; + if (Surrogate.neededFor(c)) { + count++; + push(Surrogate.low(c)); + return Surrogate.high(c); + } + return (char)c; + } + + } + + + static void mismatch(String csn, int count, char c, char d) { + throw new RuntimeException(csn + ": Mismatch at count " + + count + + ": " + Integer.toHexString(c) + + " != " + + Integer.toHexString(d)); + } + + static void mismatchedEOF(String csn, int count, int cgCount) { + throw new RuntimeException(csn + ": Mismatched EOFs: " + + count + + " != " + + cgCount); + } + + + static class Sink // One abomination... + extends OutputStream + implements WritableByteChannel + { + + private final String csn; + private final CharacterGenerator cg; + private int count = 0; + + Sink(String csn, long seed) { + this.csn = csn; + this.cg = new CharacterGenerator(seed, csn, Integer.MAX_VALUE); + } + + public void write(int b) throws IOException { + write (new byte[] { (byte)b }, 0, 1); + } + + private int check(byte[] ba, int off, int len) throws IOException { + String s = new String(ba, off, len, csn); + int n = s.length(); + for (int i = 0; i < n; i++) { + char c = s.charAt(i); + char d = cg.next(); + if (c != d) { + if (c == '?') { + if (Surrogate.isHigh(d)) + cg.next(); + continue; + } + mismatch(csn, count + i, c, d); + } + } + count += n; + return len; + } + + public void write(byte[] ba, int off, int len) throws IOException { + check(ba, off, len); + } + + public int write(ByteBuffer bb) throws IOException { + int n = check(bb.array(), + bb.arrayOffset() + bb.position(), + bb.remaining()); + bb.position(bb.position() + n); + return n; + } + + public void close() { + count = -1; + } + + public boolean isOpen() { + return count >= 0; + } + + } + + static void testWrite(String csn, int limit, long seed, Writer w) + throws IOException + { + Random rand = new Random(seed); + CharacterGenerator cg = new CharacterGenerator(seed, csn, + Integer.MAX_VALUE); + int count = 0; + char[] ca = new char[16384]; + + int n = 0; + while (count < limit) { + n = rand.nextInt(ca.length); + for (int i = 0; i < n; i++) + ca[i] = cg.next(); + w.write(ca, 0, n); + count += n; + } + if (Surrogate.isHigh(ca[n - 1])) + w.write(cg.next()); + w.close(); + } + + static void testStreamWrite(String csn, int limit, long seed) + throws IOException + { + log.println(" write stream"); + testWrite(csn, limit, seed, + new OutputStreamWriter(new Sink(csn, seed), csn)); + } + + static void testChannelWrite(String csn, int limit, long seed) + throws IOException + { + log.println(" write channel"); + testWrite(csn, limit, seed, + Channels.newWriter(new Sink(csn, seed), + Charset.forName(csn) + .newEncoder() + .onMalformedInput(CodingErrorAction.REPLACE) + .onUnmappableCharacter(CodingErrorAction.REPLACE), + 8192)); + } + + + static class Source // ... and another + extends InputStream + implements ReadableByteChannel + { + + private final String csn; + private final CharsetEncoder enc; + private final CharacterGenerator cg; + private int count = 0; + + Source(String csn, long seed, int limit) { + this.csn = csn.startsWith("\1") ? csn.substring(1) : csn; + this.enc = Charset.forName(this.csn).newEncoder() + .onMalformedInput(CodingErrorAction.REPLACE) + .onUnmappableCharacter(CodingErrorAction.REPLACE); + this.cg = new CharacterGenerator(seed, csn, limit); + } + + public int read() throws IOException { + byte[] b = new byte[1]; + read(b); + return b[0]; + } + + private CharBuffer cb = CharBuffer.allocate(8192); + private ByteBuffer bb = null; + + public int read(byte[] ba, int off, int len) throws IOException { + if (!cg.hasNext()) + return -1; + int end = off + len; + int i = off; + while (i < end) { + if ((bb == null) || !bb.hasRemaining()) { + cb.clear(); + while (cb.hasRemaining()) { + if (!cg.hasNext()) + break; + char c = cg.next(); + if (Surrogate.isHigh(c) && (cb.remaining() == 1)) { + cg.push(c); + break; + } + cb.put(c); + } + cb.flip(); + if (!cb.hasRemaining()) + break; + bb = enc.encode(cb); + } + int d = Math.min(bb.remaining(), end - i); + bb.get(ba, i, d); + i += d; + } + return i - off; + } + + public int read(ByteBuffer bb) throws IOException { + int n = read(bb.array(), + bb.arrayOffset() + bb.position(), + bb.remaining()); + if (n >= 0) + bb.position(bb.position() + n); + return n; + } + + public void close() { + count = -1; + } + + public boolean isOpen() { + return count != -1; + } + + } + + static void testRead(String csn, int limit, long seed, int max, + Reader rd) + throws IOException + { + Random rand = new Random(seed); + CharacterGenerator cg = new CharacterGenerator(seed, csn, limit); + int count = 0; + char[] ca = new char[16384]; + + int n = 0; + while (count < limit) { + int rn = rand.nextInt(ca.length); + n = rd.read(ca, 0, rn); + if (n < 0) + break; + for (int i = 0; i < n; i++) { + char c = ca[i]; + if (!cg.hasNext()) + mismatchedEOF(csn, count + i, cg.count()); + char d = cg.next(); + if (c == '?') { + if (Surrogate.isHigh(d)) { + cg.next(); + continue; + } + if (d > max) + continue; + } + if (c != d) + mismatch(csn, count + i, c, d); + } + count += n; + } + if (cg.hasNext()) + mismatchedEOF(csn, count, cg.count()); + rd.close(); + } + + static void testStreamRead(String csn, int limit, long seed, int max) + throws IOException + { + log.println(" read stream"); + testRead(csn, limit, seed, max, + new InputStreamReader(new Source(csn, seed, limit), csn)); + } + + static void testChannelRead(String csn, int limit, long seed, int max) + throws IOException + { + log.println(" read channel"); + testRead(csn, limit, seed, max, + Channels.newReader(new Source(csn, seed, limit), csn)); + } + + + static final int LIMIT = 1 << 21; + + static void test(String csn, int limit, long seed, int max) + throws Exception + { + log.println(); + log.println(csn); + + testStreamWrite(csn, limit, seed); + testChannelWrite(csn, limit, seed); + testStreamRead(csn, limit, seed, max); + testChannelRead(csn, limit, seed, max); + } + + public static void main(String[] args) throws Exception { + + if (System.getProperty("os.arch").equals("ia64")) { + // This test requires 54 minutes on an Itanium-1 processor + return; + } + + int ai = 0, an = args.length; + + int limit; + if (ai < an) + limit = 1 << Integer.parseInt(args[ai++]); + else + limit = LIMIT; + log.println("limit = " + limit); + + long seed; + if (ai < an) + seed = Long.parseLong(args[ai++]); + else + seed = System.currentTimeMillis(); + log.println("seed = " + seed); + + test("UTF-8", limit, seed, Integer.MAX_VALUE); + test("US-ASCII", limit, seed, 0x7f); + test("ISO-8859-1", limit, seed, 0xff); + + } + +} diff --git a/jdk/test/java/nio/charset/coders/Check.java b/jdk/test/java/nio/charset/coders/Check.java new file mode 100644 index 0000000000..bb01387747 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/Check.java @@ -0,0 +1,152 @@ +/* + * 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 4712786 + * @summary Check charsets against reference files + * + * @build Util + * @run main Check shift_jis ref.shift_jis + * @run main/othervm -Dsun.nio.cs.map=Windows-31J/Shift_JIS Check shift_jis ref.windows-31j + */ + +import java.io.*; +import java.nio.*; +import java.nio.channels.*; +import java.nio.charset.*; +import java.util.*; +import java.util.regex.*; + + +public class Check { + + private static PrintStream log = System.err; + + private static final int UNICODE_SIZE = (1 << 16); + + private final String csName; + private final String refName; + private byte[][] bytes = new byte[UNICODE_SIZE][]; // Indexed by char + + private int errors = 0; + + private Check(String csn, String refn) { + csName = csn; + refName = refn; + } + + private Check load() + throws IOException + { + File fn = new File(System.getProperty("test.src", "."), refName); + FileChannel fc = new FileInputStream(fn).getChannel(); + ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + CharBuffer cb = Charset.forName("US-ASCII").decode(bb); + Pattern p = Pattern.compile("^(\\p{XDigit}+) +(\\p{XDigit}+)$", + Pattern.MULTILINE); + Matcher m = p.matcher(cb); + while (m.find()) { + char c = (char)Integer.parseInt(m.group(1), 16); + String v = m.group(2); + int nb = v.length() >> 1; + byte[] ba = new byte[nb]; + for (int i = 0; i < nb; i++) { + ba[i] = (byte)Integer.parseInt(v.substring(i << 1, (i << 1) + 2), + 16); + } + bytes[c] = ba; + } + return this; + } + + private void error() { + if (++errors >= 100) + throw new RuntimeException("100 errors occurred (there might be more)"); + } + + private void mismatch(String s, byte[] expected, byte[] got) { + log.println("Encoding mismatch on \"" + + Util.toString(s) + + "\": Expected {" + + Util.toString(expected) + + "}, got {" + + Util.toString(got) + + "}"); + error(); + } + + private void mismatch(int i, byte[] ba, String expected, String got) { + log.println("Decoding mismatch on \"" + + Util.toString((char)i) + + "\", input {" + + Util.toString(ba) + + "}: Expected \"" + + Util.toString(expected) + + "\", got \"" + + Util.toString(got) + + "\""); + error(); + } + + private void check() + throws IOException + { + + // String.getBytes(String csn) + for (int i = 0; i < UNICODE_SIZE; i++) { + if (bytes[i] == null) + continue; + String s = new String(new char[]{ (char)i }); + byte[] ba = s.getBytes(csName); + if (Util.cmp(ba, bytes[i]) >= 0) + mismatch(s, bytes[i], ba); + } + log.println("String.getBytes(\"" + csName + "\") okay"); + + // String(byte[] ba, String csn) + for (int i = 0; i < UNICODE_SIZE; i++) { + if (bytes[i] == null) + continue; + String r = new String(new char[]{ (char)i }); + String s = new String(bytes[i], csName); + if (!r.equals(s)) + mismatch(i, bytes[i], r, s); + } + log.println("String(byte[] ba, \"" + csName + "\") okay"); + + // To be really thorough we should test OutputStreamWriter, + // InputStreamReader, and Charset{De,En}Coder here also, + // but the above will do for now. + + if (errors > 0) { + throw new RuntimeException(errors + " error(s) occurred"); + } + + } + + // Usage: Check charsetName referenceFileName + public static void main(String[] args) throws Exception { + new Check(args[0], args[1]).load().check(); + } + +} diff --git a/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh b/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh new file mode 100644 index 0000000000..11a9af46b7 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +# +# 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. +# +# 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 Verify that sun.nio.cs.map property interpreted in ja multibyte locales +# @bug 4879123 +# @build SJISPropTest +# +# @run shell/timeout=300 CheckSJISMappingProp.sh + +# set platform-dependent variables + +OS=`uname -s` +case "$OS" in + SunOS | Linux ) ;; + # Skip locale test for Windows + Windows* ) + echo "Passed"; exit 0 ;; + * ) echo "Unrecognized system!" ; exit 1 ;; +esac + +expectPass() { + if [ $1 -eq 0 ] + then echo "--- passed as expected" + else + echo "--- failed" + exit $1 + fi +} + + +JAVA="${TESTJAVA}/bin/java -cp ${TESTCLASSES}" +runTest() { + echo "Testing:" ${1} + LC_ALL="$1" ; export LC_ALL + locale + # Firstly, test with property set + # (shift_jis should map to windows-31J charset) + ${JAVA} -Dsun.nio.cs.map="Windows-31J/Shift_JIS" SJISPropTest MS932 + expectPass $? + + # Next, test without property set - "shift_jis" follows IANA conventions + # and should map to the sun.nio.cs.ext.Shift_JIS charset + ${JAVA} SJISPropTest Shift_JIS + expectPass $? +} + +# Run the test in the common Solaris/Linux locales +# Tests will simply run in current locale if locale isn't supported +# on the test machine/platform + +for i in "ja" "ja_JP.PCK" "ja_JP.eucJP" ; do + runTest ${i} +done diff --git a/jdk/test/java/nio/charset/coders/Errors.java b/jdk/test/java/nio/charset/coders/Errors.java new file mode 100644 index 0000000000..55aaea1330 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/Errors.java @@ -0,0 +1,220 @@ +/* + * 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 Check that error cases are replaced correctly in String/ISR/OSW + * @bug 4457851 + * + * @build Errors Util + * @run main Errors + */ + +import java.io.*; +import java.nio.*; + + +public class Errors { + + static PrintStream log = System.err; + static int failures = 0; + + static final byte Q = (byte)'?'; + static final byte X = (byte)'x'; + static final byte Y = (byte)'y'; + static final byte Z = (byte)'z'; + + static abstract class Test { + + protected final String csn; + protected final String what; + + Test(String csn, String what) { + this.csn = csn; + this.what = what; + } + + abstract byte[] enc(String s) throws IOException; + + Test test(String s, byte[] ref) { + log.print(" " + Util.toString(s.toCharArray())); + byte[] ba = null; + try { + ba = enc(s); + } catch (IOException x) { + log.println(" -e-> ERROR: " + x.getClass().getName()); + failures++; + return this; + } + log.println(" -e-> " + Util.toString(ba)); + int i = Util.cmp(ba, ref); + if (i >= 0) { + log.println(" ERROR: Mismatch at index " + i + + ", expected: " + Util.toString(ref)); + failures++; + } + return this; + } + + abstract String dec(byte[] ba) throws IOException; + + Test test(byte[] ba, String ref) { + log.print(" " + Util.toString(ba)); + String s = null; + try { + s = dec(ba); + } catch (IOException x) { + log.println(" -d-> ERROR: " + x.getClass().getName()); + failures++; + return this; + } + log.println(" -d-> " + Util.toString(s.toCharArray())); + char[] ca = s.toCharArray(); + char[] refa = ref.toCharArray(); + int i = Util.cmp(ca, refa); + if (i >= 0) { + log.println(" ERROR: Mismatch at index " + i + + ", expected: " + Util.toString(refa)); + failures++; + } + return this; + } + + Test run() { + log.println(csn + ", " + what); + + test("xyzzy", new byte[] { X, Y, Z, Z, Y }); + + // Malformed surrogates + test("\uD800x", new byte[] { Q, X }); + test("\uDC00x", new byte[] { Q, X }); + test("\uD800\uDB00x", new byte[] { Q, Q, X }); + + return this; + } + + } + + static class TestStream extends Test { + + TestStream(String csn) { + super(csn, "I/O streams"); + } + + byte[] enc(String s) throws IOException { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + Writer wr = new OutputStreamWriter(bos, csn); + wr.write(s); + wr.close(); + return bos.toByteArray(); + } + + String dec(byte[] ba) throws IOException { + ByteArrayInputStream bis = new ByteArrayInputStream(ba); + Reader rd = new InputStreamReader(bis, csn); + char[] ca = new char[1024]; + int n = rd.read(ca); + String s = new String(ca, 0, n); + rd.close(); + return s; + } + + } + + static class TestString extends Test { + + TestString(String csn) { + super(csn, "strings"); + } + + byte[] enc(String s) throws IOException { + return s.getBytes(csn); + } + + String dec(byte[] ba) throws IOException { + return new String(ba, 0, ba.length, csn); + } + + } + + static void test_US_ASCII(Test t) { + t.run(); + t.test("\u0080", new byte[] { Q }); + t.test("\u0100", new byte[] { Q }); + t.test("\uD800\uDC00", new byte[] { Q }); + t.test("\uF000", new byte[] { Q }); + t.test("\uFFFE", new byte[] { Q }); + t.test("\uFFFF", new byte[] { Q }); + t.test(new byte[] { X, (byte)0x7f, Y }, "x\u007Fy"); + t.test(new byte[] { X, (byte)0x80, Y }, "x\uFFFDy"); + t.test(new byte[] { (byte)0xf0, (byte)0xf0 }, "\uFFFD\uFFFD"); + } + + static void test_ISO_8859_1(Test t) { + t.run(); + t.test("\u0080", new byte[] { (byte)0x80 }); + t.test("\u0100", new byte[] { Q }); + t.test("\uD800\uDC00x", new byte[] { Q, X }); + t.test("\uF000", new byte[] { Q }); + t.test("\uFFFE", new byte[] { Q }); + t.test("\uFFFF", new byte[] { Q }); + t.test(new byte[] { X, (byte)0x7f, Y }, "x\u007Fy"); + t.test(new byte[] { X, (byte)0x80, Y }, "x\u0080y"); + t.test(new byte[] { (byte)0xf0, (byte)0xf0 }, "\u00F0\u00F0"); + } + + static void test_UTF_8(Test t) { + t.run(); + t.test("\u0080", new byte[] { (byte)0xC2, (byte)0x80 }); + t.test("\u0100", new byte[] { (byte)0xC4, (byte)0x80 }); + t.test("\uD800\uDC00", + new byte[] { (byte)0xF0, (byte)0x90, (byte)0x80, (byte)0x80 }); + t.test("\uF000", new byte[] { (byte)0xEF, (byte)0x80, (byte)0x80 }); + t.test("\uFFFE", new byte[] { (byte)0xEF, (byte)0xBF, (byte)0xBE }); + t.test("\uFFFF", new byte[] { (byte)0xEF, (byte)0xBF, (byte)0xBF }); + t.test(new byte[] { X, (byte)0x7f, Y }, "x\u007Fy"); + t.test(new byte[] { X, (byte)0x80, Y }, "x\uFFFDy"); + t.test(new byte[] { (byte)0xf0, (byte)0xf0 }, "\uFFFD"); + } + + public static void main(String[] args) throws Exception { + + test_US_ASCII(new TestString("US-ASCII")); + test_US_ASCII(new TestStream("US-ASCII")); + + test_ISO_8859_1(new TestString("ISO-8859-1")); + test_ISO_8859_1(new TestStream("ISO-8859-1")); + + test_ISO_8859_1(new TestString("ISO-8859-15")); + test_ISO_8859_1(new TestStream("ISO-8859-15")); + + test_UTF_8(new TestString("UTF-8")); + test_UTF_8(new TestStream("UTF-8")); + + if (failures > 0) { + log.println(); + throw new Exception("Tests failed: " + failures); + } + + } + +} diff --git a/jdk/test/java/nio/charset/coders/FullRead.java b/jdk/test/java/nio/charset/coders/FullRead.java new file mode 100644 index 0000000000..13f876f84f --- /dev/null +++ b/jdk/test/java/nio/charset/coders/FullRead.java @@ -0,0 +1,63 @@ +/* + * 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 Ensure that InputStreamReader reads as many characters as possible + */ + +// InputStreamReader is not required by its spec to read as many characters as +// possible upon each invocation of read(char[], int, int), but many programs +// (e.g., javac) depend upon this behavior. + +import java.io.*; + + +public class FullRead { + + static int MAX_LEN = 1 << 16; + + static void test(File f, int len) throws Exception { + FileOutputStream fo = new FileOutputStream(f); + for (int i = 0; i < len; i++) + fo.write('x'); + fo.close(); + + FileInputStream fi = new FileInputStream(f); + Reader rd = new InputStreamReader(fi, "US-ASCII"); + char[] cb = new char[MAX_LEN + 100]; + int n = rd.read(cb, 0, cb.length); + System.out.println(len + " : " + n); + if (len != n) + throw new Exception("Expected " + len + ", read " + n); + } + + public static void main(String[] args) throws Exception { + File f = File.createTempFile("foo", "bar"); + f.deleteOnExit(); + System.out.println(f); + + for (int i = 4; i <= MAX_LEN; i <<= 1) + test(f, i); + } + +} diff --git a/jdk/test/java/nio/charset/coders/IOCoders.java b/jdk/test/java/nio/charset/coders/IOCoders.java new file mode 100644 index 0000000000..f55eef1ff3 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/IOCoders.java @@ -0,0 +1,103 @@ +/* + * 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 Unit test for ISR/OSW constructors that take coders + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; + + +public class IOCoders { + + static Charset ascii = Charset.forName("US-ASCII"); + + static void isrPositive() throws Exception { + ByteArrayInputStream bis + = new ByteArrayInputStream(new byte[] { (byte)'h', (byte)'i' }); + InputStreamReader isr + = new InputStreamReader(bis, + ascii.newDecoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); + BufferedReader br = new BufferedReader(isr); + if (!br.readLine().equals("hi")) + throw new Exception(); + } + + static void isrNegative() throws Exception { + ByteArrayInputStream bis + = new ByteArrayInputStream(new byte[] { (byte)0xff, (byte)0xff }); + InputStreamReader isr + = new InputStreamReader(bis, + ascii.newDecoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); + BufferedReader br = new BufferedReader(isr); + try { + br.readLine(); + } catch (MalformedInputException x) { + return; + } + throw new Exception(); + } + + static void oswPositive() throws Exception { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + OutputStreamWriter osw + = new OutputStreamWriter(bos, + ascii.newEncoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); + osw.write("hi"); + osw.close(); + if (!ascii.decode(ByteBuffer.wrap(bos.toByteArray())) + .toString().equals("hi")) + throw new Exception(); + } + + static void oswNegative() throws Exception { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + OutputStreamWriter osw + = new OutputStreamWriter(bos, + ascii.newEncoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); + try { + osw.write("\u00A0\u00A1"); + } catch (UnmappableCharacterException x) { + return; + } + throw new Exception(); + } + + public static void main(String[] args) throws Exception { + isrPositive(); + isrNegative(); + oswPositive(); + oswNegative(); + } + +} diff --git a/jdk/test/java/nio/charset/coders/IsLegalReplacement.java b/jdk/test/java/nio/charset/coders/IsLegalReplacement.java new file mode 100644 index 0000000000..430d0fa6d7 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/IsLegalReplacement.java @@ -0,0 +1,93 @@ +/* + * 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 4821286 + * @summary Check correctness of CharsetEncoder.isLegalReplacement(byte[]) + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.util.*; + + +public class IsLegalReplacement { + + static PrintStream out = System.err; + static int errors = 0; + + static String toString(byte[] ba) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < ba.length; i++) { + byte b = ba[i]; + if (i > 0) + sb.append(' '); + sb.append(Integer.toHexString((b >> 4) & 0xf)); + sb.append(Integer.toHexString((b >> 0) & 0xf)); + } + return sb.toString(); + } + + static CoderResult ilr(String csn, byte[] repl) { + CharsetDecoder dec = Charset.forName(csn).newDecoder(); + dec.onMalformedInput(CodingErrorAction.REPORT); + dec.onUnmappableCharacter(CodingErrorAction.REPORT); + ByteBuffer bb = ByteBuffer.wrap(repl); + CharBuffer cb = CharBuffer.allocate((int)(bb.remaining() + * dec.maxCharsPerByte())); + return dec.decode(bb, cb, true); + } + + static void test(String csn, byte[] repl, boolean expected) + throws Exception + { + CharsetEncoder enc = Charset.forName(csn).newEncoder(); + out.print(csn + ": " + toString(repl) + ": "); + if (enc.isLegalReplacement(repl) == expected) { + out.print("Okay"); + } else { + out.print("Wrong: Expected " + expected); + errors++; + } + out.println(" (" + ilr(csn, repl) + ")"); + } + + public static void main(String[] args) throws Exception { + + test("UTF-16", new byte [] { (byte)0xd8, 0, (byte)0xdc, 0 }, true); + test("UTF-16", new byte [] { (byte)0xdc, 0, (byte)0xd8, 0 }, false); + test("UTF-16", new byte [] { (byte)0xd8, 0 }, false); + test("UTF-16BE", new byte [] { (byte)0xd8, 0, (byte)0xdc, 0 }, true); + test("UTF-16BE", new byte [] { (byte)0xdc, 0, (byte)0xd8, 0 }, false); + test("UTF-16BE", new byte [] { (byte)0xd8, 0 }, false); + test("UTF-16LE", new byte [] { 0, (byte)0xd8, 0, (byte)0xdc }, true); + test("UTF-16LE", new byte [] { 0, (byte)0xdc, 0, (byte)0xd8 }, false); + test("UTF-16LE", new byte [] { 0, (byte)0xd8 }, false); + + if (errors > 0) + throw new Exception(errors + " error(s) occurred"); + + } + +} diff --git a/jdk/test/java/nio/charset/coders/ResetISO2022JP.java b/jdk/test/java/nio/charset/coders/ResetISO2022JP.java new file mode 100644 index 0000000000..8bafad526c --- /dev/null +++ b/jdk/test/java/nio/charset/coders/ResetISO2022JP.java @@ -0,0 +1,63 @@ +/* + * 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 6226510 + @summary Check that ISO-2022-JP's encoder correctly resets to ASCII mode + @author Martin Buchholz + */ + +import java.nio.*; +import java.nio.charset.*; + +public class ResetISO2022JP { + + public static void main(String[] args) throws Exception { + if (! (encode(true).equals(encode(false)))) + throw new Exception("Mismatch!"); + } + + static String encode(boolean reuseEncoder) { + String s = "\u3042\u3043\u3044"; + + CharsetEncoder e = Charset.forName("ISO-2022-JP").newEncoder(); + + if (reuseEncoder) { + // I'm turning japanese. Yes I'm turning japanese. Yes I think so! + e.encode(CharBuffer.wrap(s), ByteBuffer.allocate(64), true); + + // Should put encoder back into ASCII mode + e.reset(); + } + + ByteBuffer bb = ByteBuffer.allocate(64); + e.encode(CharBuffer.wrap(s), bb, true); + e.flush(bb); + bb.flip(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < bb.limit(); i++) + sb.append(String.format("%02x ", bb.get(i))); + System.out.println(sb); + return sb.toString(); + } +} diff --git a/jdk/test/java/nio/charset/coders/SJISPropTest.java b/jdk/test/java/nio/charset/coders/SJISPropTest.java new file mode 100644 index 0000000000..4d09c53561 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/SJISPropTest.java @@ -0,0 +1,59 @@ +/* + * 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. + */ + +/* + * + * + * Regression test class run by CheckSJISMappingProp.sh to verify + * that sun.nio.cs.map property is correctly interpreted in + * multibyte Japanese locales + * + */ + +public class SJISPropTest { + public static void main(String[] args) throws Exception { + boolean sjisIsMS932 = false; + + if (args[0].equals("MS932")) + sjisIsMS932 = true; + byte[] testBytes = { (byte)0x81, (byte)0x60 }; + + // JIS X based Shift_JIS and Windows-31J differ + // in a number of mappings including this one. + + String expectedMS932 = new String("\uFF5E"); + String expectedSJIS = new String("\u301C"); + + // Alias "shift_jis" will map to Windows-31J + // if the sun.nio.cs.map system property is defined as + // "Windows-31J/Shift_JIS". This should work in all + // multibyte (especially Japanese) locales. + + String s = new String(testBytes, "shift_jis"); + + if (sjisIsMS932 && !s.equals(expectedMS932)) + throw new Exception("not MS932"); + else if (!sjisIsMS932 && !s.equals(expectedSJIS)) + throw new Exception("not SJIS"); + } +} diff --git a/jdk/test/java/nio/charset/coders/StreamTimeout.java b/jdk/test/java/nio/charset/coders/StreamTimeout.java new file mode 100644 index 0000000000..a0ccfaced2 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/StreamTimeout.java @@ -0,0 +1,137 @@ +/* + * 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 4521942 + * @summary Ensure that InputStreamReaders work properly + * when the underlying byte stream times out + */ + +import java.net.*; +import java.io.*; + + +public class StreamTimeout { + + private static PrintStream log = System.err; + + private static String charset = "US-ASCII"; + + private static Object lock = new Object(); + private static synchronized void waitABit(int millisec) { + synchronized(lock) { + try { + lock.wait(millisec); + } catch (InterruptedException e) { + //ignore + } + } + } + + private static class Client extends Thread { + public void run() { + try { + Socket so = new Socket("127.0.0.1", 22222); + Writer wr = new OutputStreamWriter(so.getOutputStream(), + charset); + wr.write("ab"); + wr.flush(); + } catch (IOException x) { + log.print("Unexpected exception in writer: "); + x.printStackTrace(); + System.exit(1); + } + } + } + + private static void gobble(InputStream is, Reader rd, + int ec, boolean force) + throws Exception + { + int a = is.available(); + boolean r = rd.ready(); + log.print("" + a + " bytes available, " + + "reader " + (r ? "" : "not ") + "ready"); + if (!r && !force) { + log.println(); + return; + } + int c; + try { + c = rd.read(); + } catch (InterruptedIOException x) { + log.println(); + throw x; + } + log.println(", read() ==> " + + (c >= 0 ? ("'" + (char)c + "'" ): "EOF")); + if (c != ec) + throw new Exception("Incorrect value read: Expected " + + ec + ", read " + (char)c); + } + + public static void main(String[] args) throws Exception { + + if (args.length > 0) + charset = args[0]; + + ServerSocket ss = new ServerSocket(22222); + Thread cl = new Client(); + cl.start(); + Socket s = ss.accept(); + s.setSoTimeout(150); + InputStream is = s.getInputStream(); + Reader rd = new InputStreamReader(is, charset); + + while (is.available() <= 0) + Thread.yield(); + + gobble(is, rd, 'a', false); + gobble(is, rd, 'b', false); + gobble(is, rd, -1, false); + + boolean caught = false; + try { + gobble(is, rd, -1, true); + } catch (InterruptedIOException e) { + log.println("Read timed out, as expected"); + caught = true; + } + if (!caught) { + log.println("Read did not time out, test inapplicable"); + return; + } + + caught = false; + try { + gobble(is, rd, -1, true); + } catch (InterruptedIOException x) { + log.println("Second read timed out, as expected"); + caught = true; + } + if (!caught) + throw new Exception("Second read completed"); + + } + +} diff --git a/jdk/test/java/nio/charset/coders/Surrogate.java b/jdk/test/java/nio/charset/coders/Surrogate.java new file mode 100644 index 0000000000..a99828d1d0 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/Surrogate.java @@ -0,0 +1,66 @@ +/* + * 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. + */ + +public class Surrogate { + + public static final int UCS4_SURROGATE_MIN = 0x10000; + public static final int UCS4_MAX = (1 << 20) + UCS4_SURROGATE_MIN - 1; + + // UTF-16 surrogate-character ranges + // + public static final char MIN_HIGH = '\uD800'; + public static final char MAX_HIGH = '\uDBFF'; + public static final char MIN_LOW = '\uDC00'; + public static final char MAX_LOW = '\uDFFF'; + public static final char MIN = MIN_HIGH; + public static final char MAX = MAX_LOW; + + public static boolean neededFor(int uc) { + return (uc >= UCS4_SURROGATE_MIN) && (uc <= UCS4_MAX); + } + + public static boolean isHigh(int c) { + return (MIN_HIGH <= c) && (c <= MAX_HIGH); + } + + static char high(int uc) { + return (char)(0xd800 | (((uc - UCS4_SURROGATE_MIN) >> 10) & 0x3ff)); + } + + public static boolean isLow(int c) { + return (MIN_LOW <= c) && (c <= MAX_LOW); + } + + static char low(int uc) { + return (char)(0xdc00 | ((uc - UCS4_SURROGATE_MIN) & 0x3ff)); + } + + public static boolean is(int c) { + return (MIN <= c) && (c <= MAX); + } + + static int toUCS4(char c, char d) { + return (((c & 0x3ff) << 10) | (d & 0x3ff)) + 0x10000; + } + +} diff --git a/jdk/test/java/nio/charset/coders/Surrogates.java b/jdk/test/java/nio/charset/coders/Surrogates.java new file mode 100644 index 0000000000..ce776fbbab --- /dev/null +++ b/jdk/test/java/nio/charset/coders/Surrogates.java @@ -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 + * @summary Check that array-crossing surrogate pairs are handled properly + */ + +import java.io.*; +import java.nio.*; +import java.nio.charset.*; + + +public class Surrogates { + + static PrintStream log = System.err; + + static char[] input; + static byte[] output; + + static final int LEN = 128; + + static void initData() throws IOException { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < LEN; i++) { + int c = Surrogate.UCS4_SURROGATE_MIN + 1; + sb.append(Surrogate.high(c)); + sb.append(Surrogate.low(c)); + } + input = sb.toString().toCharArray(); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + OutputStreamWriter osw + = new OutputStreamWriter(bos, Charset.forName("UTF-8")); + osw.write(input); + osw.close(); + output = bos.toByteArray(); + } + + static void testLeftovers(boolean doMalformed) + throws Exception + { + log.print("Leftover surrogates, doMalformed = " + doMalformed); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + OutputStreamWriter osw + = new OutputStreamWriter(bos, Charset.forName("UTF-8")); + for (int i = 0; i < input.length; i += 7) + osw.write(input, i, Math.min(input.length - i, 7)); + if (doMalformed) + osw.write(input, 0, 1); + osw.close(); + byte[] result = bos.toByteArray(); + + // Ignore a trailing '?' if we wrote a malformed final surrogate + int rl = result.length + (doMalformed ? -1 : 0); + + if (rl != output.length) + throw new Exception("Incorrect result length " + + rl + ", expected " + output.length); + for (int i = 0; i < output.length; i++) + if (result[i] != output[i]) + throw new Exception("Unexpected result value at index " + i); + log.println(": Passed"); + } + + public static void main(String[] args) throws Exception { + initData(); + testLeftovers(false); + testLeftovers(true); + } + +} diff --git a/jdk/test/java/nio/charset/coders/Util.java b/jdk/test/java/nio/charset/coders/Util.java new file mode 100644 index 0000000000..7e2128ff55 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/Util.java @@ -0,0 +1,114 @@ +/* + * 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. + */ + + +public class Util { + + private Util() { } + + // Returns -1 if equal, o.w. returns index of first difference + // + public static int cmp(byte[] ba, byte[] bb) { + int n = Math.min(ba.length, bb.length); + for (int i = 0; i < n; i++) { + if ((i >= ba.length) || (i >= bb.length)) + return i; + if (ba[i] != bb[i]) + return i; + } + if (ba.length != bb.length) + return 0; + return -1; + } + + // Returns -1 if equal, o.w. returns index of first difference + // + public static int cmp(char[] ca, char[] cb) { + int n = Math.min(ca.length, cb.length); + for (int i = 0; i < n; i++) { + if ((i >= ca.length) || (i >= cb.length)) + return i; + if (ca[i] != cb[i]) + return i; + } + if (ca.length != cb.length) + return 0; + return -1; + } + + public static String toString(byte[] ba, int off, int len) { + StringBuffer sb = new StringBuffer(); + for (int i = off; i < off + len; i++) { + int c = ba[i]; + if (c == '\\') { + sb.append("\\\\"); + continue; + } + if ((c >= ' ') && (c < 0x7f)) { + sb.append((char)c); + continue; + } + sb.append("\\x"); + sb.append(Integer.toHexString(c & 0xff)); + } + return sb.toString(); + } + + public static String toString(byte[] ba) { + return toString(ba, 0, ba.length); + } + + public static String toString(char[] ca, int off, int len) { + StringBuffer sb = new StringBuffer(); + for (int i = off; i < off + len; i++) { + char c = ca[i]; + if (c == '\\') { + sb.append("\\\\"); + continue; + } + if ((c >= ' ') && (c < 0x7f)) { + sb.append(c); + continue; + } + sb.append("\\u"); + String s = Integer.toHexString(c); + while (s.length() < 4) + s = "0" + s; + sb.append(s); + } + return sb.toString(); + } + + public static String toString(char[] ca) { + return toString(ca, 0, ca.length); + } + + public static String toString(String s) { + return toString(s.toCharArray()); + } + + public static String toString(char c) { + return toString(new char[]{ c }); + } + +} diff --git a/jdk/test/java/nio/charset/coders/ref.shift_jis b/jdk/test/java/nio/charset/coders/ref.shift_jis new file mode 100644 index 0000000000..0bca6c5a9f --- /dev/null +++ b/jdk/test/java/nio/charset/coders/ref.shift_jis @@ -0,0 +1,7072 @@ +0 00 +1 01 +2 02 +3 03 +4 04 +5 05 +6 06 +7 07 +8 08 +9 09 +a 0a +b 0b +c 0c +d 0d +e 0e +f 0f +10 10 +11 11 +12 12 +13 13 +14 14 +15 15 +16 16 +17 17 +18 18 +19 19 +1a 1a +1b 1b +1c 1c +1d 1d +1e 1e +1f 1f +20 20 +21 21 +22 22 +23 23 +24 24 +25 25 +26 26 +27 27 +28 28 +29 29 +2a 2a +2b 2b +2c 2c +2d 2d +2e 2e +2f 2f +30 30 +31 31 +32 32 +33 33 +34 34 +35 35 +36 36 +37 37 +38 38 +39 39 +3a 3a +3b 3b +3c 3c +3d 3d +3e 3e +3f 3f +40 40 +41 41 +42 42 +43 43 +44 44 +45 45 +46 46 +47 47 +48 48 +49 49 +4a 4a +4b 4b +4c 4c +4d 4d +4e 4e +4f 4f +50 50 +51 51 +52 52 +53 53 +54 54 +55 55 +56 56 +57 57 +58 58 +59 59 +5a 5a +5b 5b +5c 5c +5d 5d +5e 5e +5f 5f +60 60 +61 61 +62 62 +63 63 +64 64 +65 65 +66 66 +67 67 +68 68 +69 69 +6a 6a +6b 6b +6c 6c +6d 6d +6e 6e +6f 6f +70 70 +71 71 +72 72 +73 73 +74 74 +75 75 +76 76 +77 77 +78 78 +79 79 +7a 7a +7b 7b +7c 7c +7d 7d +7e 7e +7f 7f +a2 8191 +a3 8192 +#a5 5c +a7 8198 +a8 814e +ac 81ca +b0 818b +b1 817d +b4 814c +b6 81f7 +d7 817e +f7 8180 +391 839f +392 83a0 +393 83a1 +394 83a2 +395 83a3 +396 83a4 +397 83a5 +398 83a6 +399 83a7 +39a 83a8 +39b 83a9 +39c 83aa +39d 83ab +39e 83ac +39f 83ad +3a0 83ae +3a1 83af +3a3 83b0 +3a4 83b1 +3a5 83b2 +3a6 83b3 +3a7 83b4 +3a8 83b5 +3a9 83b6 +3b1 83bf +3b2 83c0 +3b3 83c1 +3b4 83c2 +3b5 83c3 +3b6 83c4 +3b7 83c5 +3b8 83c6 +3b9 83c7 +3ba 83c8 +3bb 83c9 +3bc 83ca +3bd 83cb +3be 83cc +3bf 83cd +3c0 83ce +3c1 83cf +3c3 83d0 +3c4 83d1 +3c5 83d2 +3c6 83d3 +3c7 83d4 +3c8 83d5 +3c9 83d6 +401 8446 +410 8440 +411 8441 +412 8442 +413 8443 +414 8444 +415 8445 +416 8447 +417 8448 +418 8449 +419 844a +41a 844b +41b 844c +41c 844d +41d 844e +41e 844f +41f 8450 +420 8451 +421 8452 +422 8453 +423 8454 +424 8455 +425 8456 +426 8457 +427 8458 +428 8459 +429 845a +42a 845b +42b 845c +42c 845d +42d 845e +42e 845f +42f 8460 +430 8470 +431 8471 +432 8472 +433 8473 +434 8474 +435 8475 +436 8477 +437 8478 +438 8479 +439 847a +43a 847b +43b 847c +43c 847d +43d 847e +43e 8480 +43f 8481 +440 8482 +441 8483 +442 8484 +443 8485 +444 8486 +445 8487 +446 8488 +447 8489 +448 848a +449 848b +44a 848c +44b 848d +44c 848e +44d 848f +44e 8490 +44f 8491 +451 8476 +2010 815d +2014 815c +2016 8161 +2018 8165 +2019 8166 +201c 8167 +201d 8168 +2020 81f5 +2021 81f6 +2025 8164 +2026 8163 +2030 81f1 +2032 818c +2033 818d +203b 81a6 +#203e 7e +2103 818e +212b 81f0 +2190 81a9 +2191 81aa +2192 81a8 +2193 81ab +21d2 81cb +21d4 81cc +2200 81cd +2202 81dd +2203 81ce +2207 81de +2208 81b8 +220b 81b9 +2212 817c +221a 81e3 +221d 81e5 +221e 8187 +2220 81da +2227 81c8 +2228 81c9 +2229 81bf +222a 81be +222b 81e7 +222c 81e8 +2234 8188 +2235 81e6 +223d 81e4 +2252 81e0 +2260 8182 +2261 81df +2266 8185 +2267 8186 +226a 81e1 +226b 81e2 +2282 81bc +2283 81bd +2286 81ba +2287 81bb +22a5 81db +2312 81dc +2500 849f +2501 84aa +2502 84a0 +2503 84ab +250c 84a1 +250f 84ac +2510 84a2 +2513 84ad +2514 84a4 +2517 84af +2518 84a3 +251b 84ae +251c 84a5 +251d 84ba +2520 84b5 +2523 84b0 +2524 84a7 +2525 84bc +2528 84b7 +252b 84b2 +252c 84a6 +252f 84b6 +2530 84bb +2533 84b1 +2534 84a8 +2537 84b8 +2538 84bd +253b 84b3 +253c 84a9 +253f 84b9 +2542 84be +254b 84b4 +25a0 81a1 +25a1 81a0 +25b2 81a3 +25b3 81a2 +25bc 81a5 +25bd 81a4 +25c6 819f +25c7 819e +25cb 819b +25ce 819d +25cf 819c +25ef 81fc +2605 819a +2606 8199 +2640 818a +2642 8189 +266a 81f4 +266d 81f3 +266f 81f2 +3000 8140 +3001 8141 +3002 8142 +3003 8156 +3005 8158 +3006 8159 +3007 815a +3008 8171 +3009 8172 +300a 8173 +300b 8174 +300c 8175 +300d 8176 +300e 8177 +300f 8178 +3010 8179 +3011 817a +3012 81a7 +3013 81ac +3014 816b +3015 816c +301c 8160 +3041 829f +3042 82a0 +3043 82a1 +3044 82a2 +3045 82a3 +3046 82a4 +3047 82a5 +3048 82a6 +3049 82a7 +304a 82a8 +304b 82a9 +304c 82aa +304d 82ab +304e 82ac +304f 82ad +3050 82ae +3051 82af +3052 82b0 +3053 82b1 +3054 82b2 +3055 82b3 +3056 82b4 +3057 82b5 +3058 82b6 +3059 82b7 +305a 82b8 +305b 82b9 +305c 82ba +305d 82bb +305e 82bc +305f 82bd +3060 82be +3061 82bf +3062 82c0 +3063 82c1 +3064 82c2 +3065 82c3 +3066 82c4 +3067 82c5 +3068 82c6 +3069 82c7 +306a 82c8 +306b 82c9 +306c 82ca +306d 82cb +306e 82cc +306f 82cd +3070 82ce +3071 82cf +3072 82d0 +3073 82d1 +3074 82d2 +3075 82d3 +3076 82d4 +3077 82d5 +3078 82d6 +3079 82d7 +307a 82d8 +307b 82d9 +307c 82da +307d 82db +307e 82dc +307f 82dd +3080 82de +3081 82df +3082 82e0 +3083 82e1 +3084 82e2 +3085 82e3 +3086 82e4 +3087 82e5 +3088 82e6 +3089 82e7 +308a 82e8 +308b 82e9 +308c 82ea +308d 82eb +308e 82ec +308f 82ed +3090 82ee +3091 82ef +3092 82f0 +3093 82f1 +309b 814a +309c 814b +309d 8154 +309e 8155 +30a1 8340 +30a2 8341 +30a3 8342 +30a4 8343 +30a5 8344 +30a6 8345 +30a7 8346 +30a8 8347 +30a9 8348 +30aa 8349 +30ab 834a +30ac 834b +30ad 834c +30ae 834d +30af 834e +30b0 834f +30b1 8350 +30b2 8351 +30b3 8352 +30b4 8353 +30b5 8354 +30b6 8355 +30b7 8356 +30b8 8357 +30b9 8358 +30ba 8359 +30bb 835a +30bc 835b +30bd 835c +30be 835d +30bf 835e +30c0 835f +30c1 8360 +30c2 8361 +30c3 8362 +30c4 8363 +30c5 8364 +30c6 8365 +30c7 8366 +30c8 8367 +30c9 8368 +30ca 8369 +30cb 836a +30cc 836b +30cd 836c +30ce 836d +30cf 836e +30d0 836f +30d1 8370 +30d2 8371 +30d3 8372 +30d4 8373 +30d5 8374 +30d6 8375 +30d7 8376 +30d8 8377 +30d9 8378 +30da 8379 +30db 837a +30dc 837b +30dd 837c +30de 837d +30df 837e +30e0 8380 +30e1 8381 +30e2 8382 +30e3 8383 +30e4 8384 +30e5 8385 +30e6 8386 +30e7 8387 +30e8 8388 +30e9 8389 +30ea 838a +30eb 838b +30ec 838c +30ed 838d +30ee 838e +30ef 838f +30f0 8390 +30f1 8391 +30f2 8392 +30f3 8393 +30f4 8394 +30f5 8395 +30f6 8396 +30fb 8145 +30fc 815b +30fd 8152 +30fe 8153 +4e00 88ea +4e01 929a +4e03 8eb5 +4e07 969c +4e08 8fe4 +4e09 8e4f +4e0a 8fe3 +4e0b 89ba +4e0d 9573 +4e0e 975e +4e10 98a0 +4e11 894e +4e14 8a8e +4e15 98a1 +4e16 90a2 +4e17 99c0 +4e18 8b75 +4e19 95b8 +4e1e 8fe5 +4e21 97bc +4e26 95c0 +4e2a 98a2 +4e2d 9286 +4e31 98a3 +4e32 8bf8 +4e36 98a4 +4e38 8adb +4e39 924f +4e3b 8ee5 +4e3c 98a5 +4e3f 98a6 +4e42 98a7 +4e43 9454 +4e45 8b76 +4e4b 9456 +4e4d 93e1 +4e4e 8cc1 +4e4f 9652 +4e55 e568 +4e56 98a8 +4e57 8fe6 +4e58 98a9 +4e59 89b3 +4e5d 8be3 +4e5e 8cee +4e5f 96e7 +4e62 9ba4 +4e71 9790 +4e73 93fb +4e7e 8aa3 +4e80 8b54 +4e82 98aa +4e85 98ab +4e86 97b9 +4e88 975c +4e89 9188 +4e8a 98ad +4e8b 8e96 +4e8c 93f1 +4e8e 98b0 +4e91 895d +4e92 8cdd +4e94 8cdc +4e95 88e4 +4e98 986a +4e99 9869 +4e9b 8db1 +4e9c 889f +4e9e 98b1 +4e9f 98b2 +4ea0 98b3 +4ea1 9653 +4ea2 98b4 +4ea4 8cf0 +4ea5 88e5 +4ea6 9692 +4ea8 8b9c +4eab 8b9d +4eac 8b9e +4ead 92e0 +4eae 97ba +4eb0 98b5 +4eb3 98b6 +4eb6 98b7 +4eba 906c +4ec0 8f59 +4ec1 906d +4ec2 98bc +4ec4 98ba +4ec6 98bb +4ec7 8b77 +4eca 8da1 +4ecb 89ee +4ecd 98b9 +4ece 98b8 +4ecf 95a7 +4ed4 8e65 +4ed5 8e64 +4ed6 91bc +4ed7 98bd +4ed8 9574 +4ed9 90e5 +4edd 8157 +4ede 98be +4edf 98c0 +4ee3 91e3 +4ee4 97df +4ee5 88c8 +4eed 98bf +4eee 89bc +4ef0 8bc2 +4ef2 9287 +4ef6 8c8f +4ef7 98c1 +4efb 9443 +4f01 8ae9 +4f09 98c2 +4f0a 88c9 +4f0d 8cde +4f0e 8aea +4f0f 959a +4f10 94b0 +4f11 8b78 +4f1a 89ef +4f1c 98e5 +4f1d 9360 +4f2f 948c +4f30 98c4 +4f34 94ba +4f36 97e0 +4f38 904c +4f3a 8e66 +4f3c 8e97 +4f3d 89be +4f43 92cf +4f46 9241 +4f47 98c8 +4f4d 88ca +4f4e 92e1 +4f4f 8f5a +4f50 8db2 +4f51 9743 +4f53 91cc +4f55 89bd +4f57 98c7 +4f59 975d +4f5a 98c3 +4f5b 98c5 +4f5c 8dec +4f5d 98c6 +4f5e 9b43 +4f69 98ce +4f6f 98d1 +4f70 98cf +4f73 89c0 +4f75 95b9 +4f76 98c9 +4f7b 98cd +4f7c 8cf1 +4f7f 8e67 +4f83 8aa4 +4f86 98d2 +4f88 98ca +4f8b 97e1 +4f8d 8e98 +4f8f 98cb +4f91 98d0 +4f96 98d3 +4f98 98cc +4f9b 8b9f +4f9d 88cb +4fa0 8ba0 +4fa1 89bf +4fab 9b44 +4fad 9699 +4fae 958e +4faf 8cf2 +4fb5 904e +4fb6 97b5 +4fbf 95d6 +4fc2 8c57 +4fc3 91a3 +4fc4 89e2 +4fca 8f72 +4fce 98d7 +4fd0 98dc +4fd1 98da +4fd4 98d5 +4fd7 91ad +4fd8 98d8 +4fda 98db +4fdb 98d9 +4fdd 95db +4fdf 98d6 +4fe1 904d +4fe3 9693 +4fe4 98dd +4fe5 98de +4fee 8f43 +4fef 98eb +4ff3 946f +4ff5 9555 +4ff6 98e6 +4ff8 95ee +4ffa 89b4 +4ffe 98ea +5005 98e4 +5006 98ed +5009 9171 +500b 8cc2 +500d 947b +500f e0c5 +5011 98ec +5012 937c +5014 98e1 +5016 8cf4 +5019 8cf3 +501a 98df +501f 8ed8 +5021 98e7 +5023 95ed +5024 926c +5025 98e3 +5026 8c91 +5028 98e0 +5029 98e8 +502a 98e2 +502b 97cf +502c 98e9 +502d 9860 +5036 8be4 +5039 8c90 +5043 98ee +5047 98ef +5048 98f3 +5049 88cc +504f 95ce +5050 98f2 +5055 98f1 +5056 98f5 +505a 98f4 +505c 92e2 +5065 8c92 +506c 98f6 +5072 8ec3 +5074 91a4 +5075 92e3 +5076 8bf4 +5078 98f7 +507d 8b55 +5080 98f8 +5085 98fa +508d 9654 +5091 8c86 +5098 8e50 +5099 94f5 +509a 98f9 +50ac 8dc3 +50ad 9762 +50b2 98fc +50b3 9942 +50b4 98fb +50b5 8dc2 +50b7 8f9d +50be 8c58 +50c2 9943 +50c5 8bcd +50c9 9940 +50ca 9941 +50cd 93ad +50cf 919c +50d1 8ba1 +50d5 966c +50d6 9944 +50da 97bb +50de 9945 +50e3 9948 +50e5 9946 +50e7 916d +50ed 9947 +50ee 9949 +50f5 994b +50f9 994a +50fb 95c6 +5100 8b56 +5101 994d +5102 994e +5104 89ad +5109 994c +5112 8ef2 +5114 9951 +5115 9950 +5116 994f +5118 98d4 +511a 9952 +511f 8f9e +5121 9953 +512a 9744 +5132 96d7 +5137 9955 +513a 9954 +513b 9957 +513c 9956 +513f 9958 +5140 9959 +5141 88f2 +5143 8cb3 +5144 8c5a +5145 8f5b +5146 929b +5147 8ba2 +5148 90e6 +5149 8cf5 +514b 8d8e +514c 995b +514d 96c6 +514e 9365 +5150 8e99 +5152 995a +5154 995c +515a 937d +515c 8a95 +5162 995d +5165 93fc +5168 9153 +5169 995f +516a 9960 +516b 94aa +516c 8cf6 +516d 985a +516e 9961 +5171 8ba4 +5175 95ba +5176 91b4 +5177 8bef +5178 9354 +517c 8c93 +5180 9962 +5182 9963 +5185 93e0 +5186 897e +5189 9966 +518a 8dfb +518c 9965 +518d 8dc4 +518f 9967 +5190 e3ec +5191 9968 +5192 9660 +5193 9969 +5195 996a +5196 996b +5197 8fe7 +5199 8eca +51a0 8aa5 +51a2 996e +51a4 996c +51a5 96bb +51a6 996d +51a8 9579 +51a9 996f +51aa 9970 +51ab 9971 +51ac 937e +51b0 9975 +51b1 9973 +51b2 9974 +51b3 9972 +51b4 8de1 +51b5 9976 +51b6 96e8 +51b7 97e2 +51bd 9977 +51c4 90a6 +51c5 9978 +51c6 8f79 +51c9 9979 +51cb 929c +51cc 97bd +51cd 9380 +51d6 99c3 +51db 997a +51dc eaa3 +51dd 8bc3 +51e0 997b +51e1 967d +51e6 8f88 +51e7 91fa +51e9 997d +51ea 93e2 +51ed 997e +51f0 9980 +51f1 8a4d +51f5 9981 +51f6 8ba5 +51f8 93ca +51f9 899a +51fa 8f6f +51fd 949f +51fe 9982 +5200 9381 +5203 906e +5204 9983 +5206 95aa +5207 90d8 +5208 8aa0 +520a 8aa7 +520b 9984 +520e 9986 +5211 8c59 +5214 9985 +5217 97f1 +521d 8f89 +5224 94bb +5225 95ca +5227 9987 +5229 9798 +522a 9988 +522e 9989 +5230 939e +5233 998a +5236 90a7 +5237 8dfc +5238 8c94 +5239 998b +523a 8e68 +523b 8d8f +5243 92e4 +5244 998d +5247 91a5 +524a 8ded +524b 998e +524c 998f +524d 914f +524f 998c +5254 9991 +5256 9655 +525b 8d84 +525e 9990 +5263 8c95 +5264 8ddc +5265 948d +5269 9994 +526a 9992 +526f 959b +5270 8fe8 +5271 999b +5272 8a84 +5273 9995 +5274 9993 +5275 916e +527d 9997 +527f 9996 +5283 8a63 +5287 8c80 +5288 999c +5289 97ab +528d 9998 +5291 999d +5292 999a +5294 9999 +529b 97cd +529f 8cf7 +52a0 89c1 +52a3 97f2 +52a9 8f95 +52aa 9377 +52ab 8d85 +52ac 99a0 +52ad 99a1 +52b1 97e3 +52b4 984a +52b5 99a3 +52b9 8cf8 +52bc 99a2 +52be 8a4e +52c1 99a4 +52c3 9675 +52c5 92ba +52c7 9745 +52c9 95d7 +52cd 99a5 +52d2 e8d3 +52d5 93ae +52d7 99a6 +52d8 8aa8 +52d9 96b1 +52dd 8f9f +52de 99a7 +52df 95e5 +52e0 99ab +52e2 90a8 +52e3 99a8 +52e4 8bce +52e6 99a9 +52e7 8aa9 +52f2 8c4d +52f3 99ac +52f5 99ad +52f8 99ae +52f9 99af +52fa 8ed9 +52fe 8cf9 +52ff 96dc +5301 96e6 +5302 93f5 +5305 95ef +5306 99b0 +5308 99b1 +530d 99b3 +530f 99b5 +5310 99b4 +5315 99b6 +5316 89bb +5317 966b +5319 8dfa +531a 99b7 +531d 9178 +5320 8fa0 +5321 8ba7 +5323 99b8 +532a 94d9 +532f 99b9 +5331 99ba +5333 99bb +5338 99bc +5339 9543 +533a 8be6 +533b 88e3 +533f 93bd +5340 99bd +5341 8f5c +5343 90e7 +5345 99bf +5346 99be +5347 8fa1 +5348 8cdf +5349 99c1 +534a 94bc +534d 99c2 +5351 94da +5352 91b2 +5353 91ec +5354 8ba6 +5357 93ec +5358 9250 +535a 948e +535c 966d +535e 99c4 +5360 90e8 +5366 8c54 +5369 99c5 +536e 99c6 +536f 894b +5370 88f3 +5371 8aeb +5373 91a6 +5374 8b70 +5375 9791 +5377 99c9 +5378 89b5 +537b 99c8 +537f 8ba8 +5382 99ca +5384 96ef +5396 99cb +5398 97d0 +539a 8cfa +539f 8cb4 +53a0 99cc +53a5 99ce +53a6 99cd +53a8 907e +53a9 8958 +53ad 897d +53ae 99cf +53b0 99d0 +53b3 8cb5 +53b6 99d1 +53bb 8b8e +53c2 8e51 +53c3 99d2 +53c8 9694 +53c9 8db3 +53ca 8b79 +53cb 9746 +53cc 916f +53cd 94bd +53ce 8efb +53d4 8f66 +53d6 8ee6 +53d7 8ef3 +53d9 8f96 +53db 94be +53df 99d5 +53e1 8962 +53e2 9170 +53e3 8cfb +53e4 8cc3 +53e5 8be5 +53e8 99d9 +53e9 9240 +53ea 91fc +53eb 8ba9 +53ec 8fa2 +53ed 99da +53ee 99d8 +53ef 89c2 +53f0 91e4 +53f1 8eb6 +53f2 8e6a +53f3 8945 +53f6 8a90 +53f7 8d86 +53f8 8e69 +53fa 99db +5401 99dc +5403 8b68 +5404 8a65 +5408 8d87 +5409 8b67 +540a 92dd +540b 8944 +540c 93af +540d 96bc +540e 8d40 +540f 9799 +5410 9366 +5411 8cfc +541b 8c4e +541d 99e5 +541f 8be1 +5420 9669 +5426 94db +5429 99e4 +542b 8adc +542c 99df +542d 99e0 +542e 99e2 +5436 99e3 +5438 8b7a +5439 9081 +543b 95ab +543c 99e1 +543d 99dd +543e 8ce1 +5440 99de +5442 9843 +5446 95f0 +5448 92e6 +5449 8ce0 +544a 8d90 +544e 99e6 +5451 93db +545f 99ea +5468 8efc +546a 8ef4 +5470 99ed +5471 99eb +5473 96a1 +5475 99e8 +5476 99f1 +5477 99ec +547b 99ef +547c 8cc4 +547d 96bd +5480 99f0 +5484 99f2 +5486 99f4 +548b 8dee +548c 9861 +548e 99e9 +548f 99e7 +5490 99f3 +5492 99ee +54a2 99f6 +54a4 9a42 +54a5 99f8 +54a8 99fc +54ab 9a40 +54ac 99f9 +54af 9a5d +54b2 8de7 +54b3 8a50 +54b8 99f7 +54bc 9a44 +54bd 88f4 +54be 9a43 +54c0 88a3 +54c1 9569 +54c2 9a41 +54c4 99fa +54c7 99f5 +54c8 99fb +54c9 8dc6 +54d8 9a45 +54e1 88f5 +54e2 9a4e +54e5 9a46 +54e6 9a47 +54e8 8fa3 +54e9 9689 +54ed 9a4c +54ee 9a4b +54f2 934e +54fa 9a4d +54fd 9a4a +5504 8953 +5506 8db4 +5507 904f +550f 9a48 +5510 9382 +5514 9a49 +5516 88a0 +552e 9a53 +552f 9742 +5531 8fa5 +5533 9a59 +5538 9a58 +5539 9a4f +553e 91c1 +5540 9a50 +5544 91ed +5545 9a55 +5546 8fa4 +554c 9a52 +554f 96e2 +5553 8c5b +5556 9a56 +5557 9a57 +555c 9a54 +555d 9a5a +5563 9a51 +557b 9a60 +557c 9a65 +557e 9a61 +5580 9a5c +5583 9a66 +5584 9150 +5587 9a68 +5589 8d41 +558a 9a5e +558b 929d +5598 9a62 +5599 9a5b +559a 8aab +559c 8aec +559d 8a85 +559e 9a63 +559f 9a5f +55a7 8c96 +55a8 9a69 +55a9 9a67 +55aa 9172 +55ab 8b69 +55ac 8baa +55ae 9a64 +55b0 8bf2 +55b6 8963 +55c4 9a6d +55c5 9a6b +55c7 9aa5 +55d4 9a70 +55da 9a6a +55dc 9a6e +55df 9a6c +55e3 8e6b +55e4 9a6f +55f7 9a72 +55f9 9a77 +55fd 9a75 +55fe 9a74 +5606 9251 +5609 89c3 +5614 9a71 +5616 9a73 +5617 8fa6 +5618 8952 +561b 9a76 +5629 89dc +562f 9a82 +5631 8ffa +5632 9a7d +5634 9a7b +5636 9a7c +5638 9a7e +5642 895c +564c 9158 +564e 9a78 +5650 9a79 +565b 8a9a +5664 9a81 +5668 8aed +566a 9a84 +566b 9a80 +566c 9a83 +5674 95ac +5678 93d3 +567a 94b6 +5680 9a86 +5686 9a85 +5687 8a64 +568a 9a87 +568f 9a8a +5694 9a89 +56a0 9a88 +56a2 9458 +56a5 9a8b +56ae 9a8c +56b4 9a8e +56b6 9a8d +56bc 9a90 +56c0 9a93 +56c1 9a91 +56c2 9a8f +56c3 9a92 +56c8 9a94 +56ce 9a95 +56d1 9a96 +56d3 9a97 +56d7 9a98 +56d8 9964 +56da 8efa +56db 8e6c +56de 89f1 +56e0 88f6 +56e3 9263 +56ee 9a99 +56f0 8da2 +56f2 88cd +56f3 907d +56f9 9a9a +56fa 8cc5 +56fd 8d91 +56ff 9a9c +5700 9a9b +5703 95de +5704 9a9d +5708 9a9f +5709 9a9e +570b 9aa0 +570d 9aa1 +570f 8c97 +5712 8980 +5713 9aa2 +5716 9aa4 +5718 9aa3 +571c 9aa6 +571f 9379 +5726 9aa7 +5727 88b3 +5728 8ddd +572d 8c5c +5730 926e +5737 9aa8 +5738 9aa9 +573b 9aab +5740 9aac +5742 8de2 +5747 8bcf +574a 9656 +574e 9aaa +574f 9aad +5750 8dbf +5751 8d42 +5761 9ab1 +5764 8da3 +5766 9252 +5769 9aae +576a 92d8 +577f 9ab2 +5782 9082 +5788 9ab0 +5789 9ab3 +578b 8c5e +5793 9ab4 +57a0 9ab5 +57a2 8d43 +57a3 8a5f +57a4 9ab7 +57aa 9ab8 +57b0 9ab9 +57b3 9ab6 +57c0 9aaf +57c3 9aba +57c6 9abb +57cb 9684 +57ce 8fe9 +57d2 9abd +57d3 9abe +57d4 9abc +57d6 9ac0 +57dc 9457 +57df 88e6 +57e0 9575 +57e3 9ac1 +57f4 8ffb +57f7 8eb7 +57f9 947c +57fa 8aee +57fc 8de9 +5800 9678 +5802 93b0 +5805 8c98 +5806 91cd +580a 9abf +580b 9ac2 +5815 91c2 +5819 9ac3 +581d 9ac4 +5821 9ac6 +5824 92e7 +582a 8aac +582f ea9f +5830 8981 +5831 95f1 +5834 8fea +5835 9367 +583a 8de4 +583d 9acc +5840 95bb +5841 97db +584a 89f2 +584b 9ac8 +5851 9159 +5852 9acb +5854 9383 +5857 9368 +5858 9384 +5859 94b7 +585a 92cb +585e 8dc7 +5862 9ac7 +5869 8996 +586b 9355 +5870 9ac9 +5872 9ac5 +5875 906f +5879 9acd +587e 8f6d +5883 8bab +5885 9ace +5893 95e6 +5897 919d +589c 92c4 +589f 9ad0 +58a8 966e +58ab 9ad1 +58ae 9ad6 +58b3 95ad +58b8 9ad5 +58b9 9acf +58ba 9ad2 +58bb 9ad4 +58be 8da4 +58c1 95c7 +58c5 9ad7 +58c7 9264 +58ca 89f3 +58cc 8feb +58d1 9ad9 +58d3 9ad8 +58d5 8d88 +58d7 9ada +58d8 9adc +58d9 9adb +58dc 9ade +58de 9ad3 +58df 9ae0 +58e4 9adf +58e5 9add +58eb 8e6d +58ec 9070 +58ee 9173 +58ef 9ae1 +58f0 90ba +58f1 88eb +58f2 9484 +58f7 92d9 +58f9 9ae3 +58fa 9ae2 +58fb 9ae4 +58fc 9ae5 +58fd 9ae6 +5902 9ae7 +5909 95cf +590a 9ae8 +590f 89c4 +5910 9ae9 +5915 975b +5916 8a4f +5918 99c7 +5919 8f67 +591a 91bd +591b 9aea +591c 96e9 +5922 96b2 +5925 9aec +5927 91e5 +5929 9356 +592a 91be +592b 9576 +592c 9aed +592d 9aee +592e 899b +5931 8eb8 +5932 9aef +5937 88ce +5938 9af0 +593e 9af1 +5944 8982 +5947 8aef +5948 93de +5949 95f2 +594e 9af5 +594f 9174 +5950 9af4 +5951 8c5f +5954 967a +5955 9af3 +5957 9385 +5958 9af7 +595a 9af6 +5960 9af9 +5962 9af8 +5965 899c +5967 9afa +5968 8fa7 +5969 9afc +596a 9244 +596c 9afb +596e 95b1 +5973 8f97 +5974 937a +5978 9b40 +597d 8d44 +5981 9b41 +5982 9440 +5983 94dc +5984 96cf +598a 9444 +598d 9b4a +5993 8b57 +5996 9764 +5999 96ad +599b 9baa +599d 9b42 +59a3 9b45 +59a5 91c3 +59a8 9657 +59ac 9369 +59b2 9b46 +59b9 9685 +59bb 8dc8 +59be 8fa8 +59c6 9b47 +59c9 8e6f +59cb 8e6e +59d0 88b7 +59d1 8cc6 +59d3 90a9 +59d4 88cf +59d9 9b4b +59da 9b4c +59dc 9b49 +59e5 8957 +59e6 8aad +59e8 9b48 +59ea 96c3 +59eb 9550 +59f6 88a6 +59fb 88f7 +59ff 8e70 +5a01 88d0 +5a03 88a1 +5a09 9b51 +5a11 9b4f +5a18 96ba +5a1a 9b52 +5a1c 9b50 +5a1f 9b4e +5a20 9050 +5a25 9b4d +5a29 95d8 +5a2f 8ce2 +5a35 9b56 +5a36 9b57 +5a3c 8fa9 +5a40 9b53 +5a41 984b +5a46 946b +5a49 9b55 +5a5a 8da5 +5a62 9b58 +5a66 9577 +5a6a 9b59 +5a6c 9b54 +5a7f 96b9 +5a92 947d +5a9a 9b5a +5a9b 9551 +5abc 9b5b +5abd 9b5f +5abe 9b5c +5ac1 89c5 +5ac2 9b5e +5ac9 8eb9 +5acb 9b5d +5acc 8c99 +5ad0 9b6b +5ad6 9b64 +5ad7 9b61 +5ae1 9284 +5ae3 9b60 +5ae6 9b62 +5ae9 9b63 +5afa 9b65 +5afb 9b66 +5b09 8af0 +5b0b 9b68 +5b0c 9b67 +5b16 9b69 +5b22 8fec +5b2a 9b6c +5b2c 92da +5b30 8964 +5b32 9b6a +5b36 9b6d +5b3e 9b6e +5b40 9b71 +5b43 9b6f +5b45 9b70 +5b50 8e71 +5b51 9b72 +5b54 8d45 +5b55 9b73 +5b57 8e9a +5b58 91b6 +5b5a 9b74 +5b5b 9b75 +5b5c 8e79 +5b5d 8d46 +5b5f 96d0 +5b63 8b47 +5b64 8cc7 +5b65 9b76 +5b66 8a77 +5b69 9b77 +5b6b 91b7 +5b70 9b78 +5b71 9ba1 +5b73 9b79 +5b75 9b7a +5b78 9b7b +5b7a 9b7d +5b80 9b7e +5b83 9b80 +5b85 91ee +5b87 8946 +5b88 8ee7 +5b89 88c0 +5b8b 9176 +5b8c 8aae +5b8d 8eb3 +5b8f 8d47 +5b95 9386 +5b97 8f40 +5b98 8aaf +5b99 9288 +5b9a 92e8 +5b9b 88b6 +5b9c 8b58 +5b9d 95f3 +5b9f 8ec0 +5ba2 8b71 +5ba3 90e9 +5ba4 8eba +5ba5 9747 +5ba6 9b81 +5bae 8b7b +5bb0 8dc9 +5bb3 8a51 +5bb4 8983 +5bb5 8faa +5bb6 89c6 +5bb8 9b82 +5bb9 9765 +5bbf 8f68 +5bc2 8ee2 +5bc3 9b83 +5bc4 8af1 +5bc5 93d0 +5bc6 96a7 +5bc7 9b84 +5bc9 9b85 +5bcc 9578 +5bd0 9b87 +5bd2 8aa6 +5bd3 8bf5 +5bd4 9b86 +5bdb 8ab0 +5bdd 9051 +5bde 9b8b +5bdf 8e40 +5be1 89c7 +5be2 9b8a +5be4 9b88 +5be5 9b8c +5be6 9b89 +5be7 944a +5be8 9ecb +5be9 9052 +5beb 9b8d +5bee 97be +5bf0 9b8e +5bf3 9b90 +5bf5 929e +5bf6 9b8f +5bf8 90a1 +5bfa 8e9b +5bfe 91ce +5bff 8ef5 +5c01 9595 +5c02 90ea +5c04 8ecb +5c05 9b91 +5c06 8fab +5c07 9b92 +5c08 9b93 +5c09 88d1 +5c0a 91b8 +5c0b 9071 +5c0d 9b94 +5c0e 93b1 +5c0f 8fac +5c11 8fad +5c13 9b95 +5c16 90eb +5c1a 8fae +5c20 9b96 +5c22 9b97 +5c24 96de +5c28 9b98 +5c2d 8bc4 +5c31 8f41 +5c38 9b99 +5c39 9b9a +5c3a 8eda +5c3b 904b +5c3c 93f2 +5c3d 9073 +5c3e 94f6 +5c3f 9441 +5c40 8bc7 +5c41 9b9b +5c45 8b8f +5c46 9b9c +5c48 8bfc +5c4a 93cd +5c4b 89ae +5c4d 8e72 +5c4e 9b9d +5c4f 9ba0 +5c50 9b9f +5c51 8bfb +5c53 9b9e +5c55 9357 +5c5e 91ae +5c60 936a +5c61 8ec6 +5c64 9177 +5c65 979a +5c6c 9ba2 +5c6e 9ba3 +5c6f 93d4 +5c71 8e52 +5c76 9ba5 +5c79 9ba6 +5c8c 9ba7 +5c90 8af2 +5c91 9ba8 +5c94 9ba9 +5ca1 89aa +5ca8 915a +5ca9 8ae2 +5cab 9bab +5cac 96a6 +5cb1 91d0 +5cb3 8a78 +5cb6 9bad +5cb7 9baf +5cb8 8add +5cbb 9bac +5cbc 9bae +5cbe 9bb1 +5cc5 9bb0 +5cc7 9bb2 +5cd9 9bb3 +5ce0 93bb +5ce1 8bac +5ce8 89e3 +5ce9 9bb4 +5cea 9bb9 +5ced 9bb7 +5cef 95f5 +5cf0 95f4 +5cf6 9387 +5cfa 9bb6 +5cfb 8f73 +5cfd 9bb5 +5d07 9092 +5d0b 9bba +5d0e 8de8 +5d11 9bc0 +5d14 9bc1 +5d15 9bbb +5d16 8a52 +5d17 9bbc +5d18 9bc5 +5d19 9bc4 +5d1a 9bc3 +5d1b 9bbf +5d1f 9bbe +5d22 9bc2 +5d29 95f6 +5d4b 9bc9 +5d4c 9bc6 +5d4e 9bc8 +5d50 9792 +5d52 9bc7 +5d5c 9bbd +5d69 9093 +5d6c 9bca +5d6f 8db5 +5d73 9bcb +5d76 9bcc +5d82 9bcf +5d84 9bce +5d87 9bcd +5d8b 9388 +5d8c 9bb8 +5d90 9bd5 +5d9d 9bd1 +5da2 9bd0 +5dac 9bd2 +5dae 9bd3 +5db7 9bd6 +5dba 97e4 +5dbc 9bd7 +5dbd 9bd4 +5dc9 9bd8 +5dcc 8ade +5dcd 9bd9 +5dd2 9bdb +5dd3 9bda +5dd6 9bdc +5ddb 9bdd +5ddd 90ec +5dde 8f42 +5de1 8f84 +5de3 9183 +5de5 8d48 +5de6 8db6 +5de7 8d49 +5de8 8b90 +5deb 9bde +5dee 8db7 +5df1 8cc8 +5df2 9bdf +5df3 96a4 +5df4 9462 +5df5 9be0 +5df7 8d4a +5dfb 8aaa +5dfd 9246 +5dfe 8bd0 +5e02 8e73 +5e03 957a +5e06 94bf +5e0b 9be1 +5e0c 8af3 +5e11 9be4 +5e16 929f +5e19 9be3 +5e1a 9be2 +5e1b 9be5 +5e1d 92e9 +5e25 9083 +5e2b 8e74 +5e2d 90c8 +5e2f 91d1 +5e30 8b41 +5e33 92a0 +5e36 9be6 +5e37 9be7 +5e38 8fed +5e3d 9658 +5e40 9bea +5e43 9be9 +5e44 9be8 +5e45 959d +5e47 9bf1 +5e4c 9679 +5e4e 9beb +5e54 9bed +5e55 968b +5e57 9bec +5e5f 9bee +5e61 94a6 +5e62 9bef +5e63 95bc +5e64 9bf0 +5e72 8ab1 +5e73 95bd +5e74 944e +5e75 9bf2 +5e76 9bf3 +5e78 8d4b +5e79 8ab2 +5e7a 9bf4 +5e7b 8cb6 +5e7c 9763 +5e7d 9748 +5e7e 8af4 +5e7f 9bf6 +5e81 92a1 +5e83 8d4c +5e84 8faf +5e87 94dd +5e8a 8fb0 +5e8f 8f98 +5e95 92ea +5e96 95f7 +5e97 9358 +5e9a 8d4d +5e9c 957b +5ea0 9bf7 +5ea6 9378 +5ea7 8dc0 +5eab 8cc9 +5ead 92eb +5eb5 88c1 +5eb6 8f8e +5eb7 8d4e +5eb8 9766 +5ec1 9bf8 +5ec2 9bf9 +5ec3 9470 +5ec8 9bfa +5ec9 97f5 +5eca 984c +5ecf 9bfc +5ed0 9bfb +5ed3 8a66 +5ed6 9c40 +5eda 9c43 +5edb 9c44 +5edd 9c42 +5edf 955f +5ee0 8fb1 +5ee1 9c46 +5ee2 9c45 +5ee3 9c41 +5ee8 9c47 +5ee9 9c48 +5eec 9c49 +5ef0 9c4c +5ef1 9c4a +5ef3 9c4b +5ef4 9c4d +5ef6 8984 +5ef7 92ec +5ef8 9c4e +5efa 8c9a +5efb 89f4 +5efc 9455 +5efe 9c4f +5eff 93f9 +5f01 95d9 +5f03 9c50 +5f04 984d +5f09 9c51 +5f0a 95be +5f0b 9c54 +5f0c 989f +5f0d 98af +5f0f 8eae +5f10 93f3 +5f11 9c55 +5f13 8b7c +5f14 92a2 +5f15 88f8 +5f16 9c56 +5f17 95a4 +5f18 8d4f +5f1b 926f +5f1f 92ed +5f25 96ed +5f26 8cb7 +5f27 8cca +5f29 9c57 +5f2d 9c58 +5f2f 9c5e +5f31 8ee3 +5f35 92a3 +5f37 8bad +5f38 9c59 +5f3c 954a +5f3e 9265 +5f41 9c5a +5f48 9c5b +5f4a 8bae +5f4c 9c5c +5f4e 9c5d +5f51 9c5f +5f53 9396 +5f56 9c60 +5f57 9c61 +5f59 9c62 +5f5c 9c53 +5f5d 9c52 +5f61 9c63 +5f62 8c60 +5f66 9546 +5f69 8dca +5f6a 9556 +5f6b 92a4 +5f6c 956a +5f6d 9c64 +5f70 8fb2 +5f71 8965 +5f73 9c65 +5f77 9c66 +5f79 96f0 +5f7c 94de +5f7f 9c69 +5f80 899d +5f81 90aa +5f82 9c68 +5f83 9c67 +5f84 8c61 +5f85 91d2 +5f87 9c6d +5f88 9c6b +5f8a 9c6a +5f8b 97a5 +5f8c 8ce3 +5f90 8f99 +5f91 9c6c +5f92 936b +5f93 8f5d +5f97 93be +5f98 9c70 +5f99 9c6f +5f9e 9c6e +5fa0 9c71 +5fa1 8ce4 +5fa8 9c72 +5fa9 959c +5faa 8f7a +5fad 9c73 +5fae 94f7 +5fb3 93bf +5fb4 92a5 +5fb9 934f +5fbc 9c74 +5fbd 8b4a +5fc3 9053 +5fc5 954b +5fcc 8af5 +5fcd 9445 +5fd6 9c75 +5fd7 8e75 +5fd8 9659 +5fd9 965a +5fdc 899e +5fdd 9c7a +5fe0 9289 +5fe4 9c77 +5feb 89f5 +5ff0 9cab +5ff1 9c79 +5ff5 944f +5ff8 9c78 +5ffb 9c76 +5ffd 8d9a +5fff 9c7c +600e 9c83 +600f 9c89 +6010 9c81 +6012 937b +6015 9c86 +6016 957c +6019 9c80 +601b 9c85 +601c 97e5 +601d 8e76 +6020 91d3 +6021 9c7d +6025 8b7d +6026 9c88 +6027 90ab +6028 8985 +6029 9c82 +602a 89f6 +602b 9c87 +602f 8baf +6031 9c84 +603a 9c8a +6041 9c8c +6042 9c96 +6043 9c94 +6046 9c91 +604a 9c90 +604b 97f6 +604d 9c92 +6050 8bb0 +6052 8d50 +6055 8f9a +6059 9c99 +605a 9c8b +605f 9c8f +6060 9c7e +6062 89f8 +6063 9c93 +6064 9c95 +6065 9270 +6068 8da6 +6069 89b6 +606a 9c8d +606b 9c98 +606c 9c97 +606d 8bb1 +606f 91a7 +6070 8a86 +6075 8c62 +6077 9c8e +6081 9c9a +6083 9c9d +6084 9c9f +6089 8ebb +608b 9ca5 +608c 92ee +608d 9c9b +6092 9ca3 +6094 89f7 +6096 9ca1 +6097 9ca2 +609a 9c9e +609b 9ca0 +609f 8ce5 +60a0 9749 +60a3 8ab3 +60a6 8978 +60a7 9ca4 +60a9 9459 +60aa 88ab +60b2 94df +60b3 9c7b +60b4 9caa +60b5 9cae +60b6 96e3 +60b8 9ca7 +60bc 9389 +60bd 9cac +60c5 8fee +60c6 9cad +60c7 93d5 +60d1 9866 +60d3 9ca9 +60d8 9caf +60da 8d9b +60dc 90c9 +60df 88d2 +60e0 9ca8 +60e1 9ca6 +60e3 9179 +60e7 9c9c +60e8 8e53 +60f0 91c4 +60f1 9cbb +60f3 917a +60f4 9cb6 +60f6 9cb3 +60f7 9cb4 +60f9 8ee4 +60fa 9cb7 +60fb 9cba +6100 9cb5 +6101 8f44 +6103 9cb8 +6106 9cb2 +6108 96fa +6109 96f9 +610d 9cbc +610e 9cbd +610f 88d3 +6115 9cb1 +611a 8bf0 +611b 88a4 +611f 8ab4 +6121 9cb9 +6127 9cc1 +6128 9cc0 +612c 9cc5 +6134 9cc6 +613c 9cc4 +613d 9cc7 +613e 9cbf +613f 9cc3 +6142 9cc8 +6144 9cc9 +6147 9cbe +6148 8e9c +614a 9cc2 +614b 91d4 +614c 8d51 +614d 9cb0 +614e 9054 +6153 9cd6 +6155 95e7 +6158 9ccc +6159 9ccd +615a 9cce +615d 9cd5 +615f 9cd4 +6162 969d +6163 8ab5 +6165 9cd2 +6167 8c64 +6168 8a53 +616b 9ccf +616e 97b6 +616f 9cd1 +6170 88d4 +6171 9cd3 +6173 9cca +6174 9cd0 +6175 9cd7 +6176 8c63 +6177 9ccb +617e 977c +6182 974a +6187 9cda +618a 9cde +618e 919e +6190 97f7 +6191 9cdf +6194 9cdc +6196 9cd9 +6199 9cd8 +619a 9cdd +61a4 95ae +61a7 93b2 +61a9 8c65 +61ab 9ce0 +61ac 9cdb +61ae 9ce1 +61b2 8c9b +61b6 89af +61ba 9ce9 +61be 8ab6 +61c3 9ce7 +61c6 9ce8 +61c7 8da7 +61c8 9ce6 +61c9 9ce4 +61ca 9ce3 +61cb 9cea +61cc 9ce2 +61cd 9cec +61d0 89f9 +61e3 9cee +61e6 9ced +61f2 92a6 +61f4 9cf1 +61f6 9cef +61f7 9ce5 +61f8 8c9c +61fa 9cf0 +61fc 9cf4 +61fd 9cf3 +61fe 9cf5 +61ff 9cf2 +6200 9cf6 +6208 9cf7 +6209 9cf8 +620a 95e8 +620c 9cfa +620d 9cf9 +620e 8f5e +6210 90ac +6211 89e4 +6212 89fa +6214 9cfb +6216 88bd +621a 90ca +621b 9cfc +621d e6c1 +621e 9d40 +621f 8c81 +6221 9d41 +6226 90ed +622a 9d42 +622e 9d43 +622f 8b59 +6230 9d44 +6232 9d45 +6233 9d46 +6234 91d5 +6238 8ccb +623b 96df +623f 965b +6240 8f8a +6241 9d47 +6247 90ee +6248 e7bb +6249 94e0 +624b 8ee8 +624d 8dcb +624e 9d48 +6253 91c5 +6255 95a5 +6258 91ef +625b 9d4b +625e 9d49 +6260 9d4c +6263 9d4a +6268 9d4d +626e 95af +6271 88b5 +6276 957d +6279 94e1 +627c 9d4e +627e 9d51 +627f 8fb3 +6280 8b5a +6282 9d4f +6283 9d56 +6284 8fb4 +6289 9d50 +628a 9463 +6291 977d +6292 9d52 +6293 9d53 +6294 9d57 +6295 938a +6296 9d54 +6297 8d52 +6298 90dc +629b 9d65 +629c 94b2 +629e 91f0 +62ab 94e2 +62ac 9dab +62b1 95f8 +62b5 92ef +62b9 9695 +62bb 9d5a +62bc 899f +62bd 928a +62c2 9d63 +62c5 9253 +62c6 9d5d +62c7 9d64 +62c8 9d5f +62c9 9d66 +62ca 9d62 +62cc 9d61 +62cd 948f +62cf 9d5b +62d0 89fb +62d1 9d59 +62d2 8b91 +62d3 91f1 +62d4 9d55 +62d7 9d58 +62d8 8d53 +62d9 90d9 +62db 8fb5 +62dc 9d60 +62dd 9471 +62e0 8b92 +62e1 8a67 +62ec 8a87 +62ed 9040 +62ee 9d68 +62ef 9d6d +62f1 9d69 +62f3 8c9d +62f5 9d6e +62f6 8e41 +62f7 8d89 +62fe 8f45 +62ff 9d5c +6301 8e9d +6302 9d6b +6307 8e77 +6308 9d6c +6309 88c2 +630c 9d67 +6311 92a7 +6319 8b93 +631f 8bb2 +6327 9d6a +6328 88a5 +632b 8dc1 +632f 9055 +633a 92f0 +633d 94d2 +633e 9d70 +633f 917d +6349 91a8 +634c 8e4a +634d 9d71 +634f 9d73 +6350 9d6f +6355 95df +6357 92bb +635c 917b +6367 95f9 +6368 8ecc +6369 9d80 +636b 9d7e +636e 9098 +6372 8c9e +6376 9d78 +6377 8fb7 +637a 93e6 +637b 9450 +6380 9d76 +6383 917c +6388 8ef6 +6389 9d7b +638c 8fb6 +638e 9d75 +638f 9d7a +6392 9472 +6396 9d74 +6398 8c40 +639b 8a7c +639f 9d7c +63a0 97a9 +63a1 8dcc +63a2 9254 +63a3 9d79 +63a5 90da +63a7 8d54 +63a8 9084 +63a9 8986 +63aa 915b +63ab 9d77 +63ac 8b64 +63b2 8c66 +63b4 92cd +63b5 9d7d +63bb 917e +63be 9d81 +63c0 9d83 +63c3 91b5 +63c4 9d89 +63c6 9d84 +63c9 9d86 +63cf 9560 +63d0 92f1 +63d2 9d87 +63d6 974b +63da 9767 +63db 8ab7 +63e1 88ac +63e3 9d85 +63e9 9d82 +63ee 8af6 +63f4 8987 +63f6 9d88 +63fa 9768 +6406 9d8c +640d 91b9 +640f 9d93 +6413 9d8d +6416 9d8a +6417 9d91 +641c 9d72 +6426 9d8e +6428 9d92 +642c 94c0 +642d 938b +6434 9d8b +6436 9d8f +643a 8c67 +643e 8def +6442 90db +644e 9d97 +6458 9345 +6467 9d94 +6469 9680 +646f 9d95 +6476 9d96 +6478 96cc +647a 90a0 +6483 8c82 +6488 9d9d +6492 8e54 +6493 9d9a +6495 9d99 +649a 9451 +649e 93b3 +64a4 9350 +64a5 9d9b +64a9 9d9c +64ab 958f +64ad 9464 +64ae 8e42 +64b0 90ef +64b2 966f +64b9 8a68 +64bb 9da3 +64bc 9d9e +64c1 9769 +64c2 9da5 +64c5 9da1 +64c7 9da2 +64cd 9180 +64d2 9da0 +64d4 9d5e +64d8 9da4 +64da 9d9f +64e0 9da9 +64e1 9daa +64e2 9346 +64e3 9dac +64e6 8e43 +64e7 9da7 +64ec 8b5b +64ef 9dad +64f1 9da6 +64f2 9db1 +64f4 9db0 +64f6 9daf +64fa 9db2 +64fd 9db4 +64fe 8fef +6500 9db3 +6505 9db7 +6518 9db5 +651c 9db6 +651d 9d90 +6523 9db9 +6524 9db8 +652a 9d98 +652b 9dba +652c 9dae +652f 8e78 +6534 9dbb +6535 9dbc +6536 9dbe +6537 9dbd +6538 9dbf +6539 89fc +653b 8d55 +653e 95fa +653f 90ad +6545 8ccc +6548 9dc1 +654d 9dc4 +654f 9571 +6551 8b7e +6555 9dc3 +6556 9dc2 +6557 9473 +6558 9dc5 +6559 8bb3 +655d 9dc7 +655e 9dc6 +6562 8ab8 +6563 8e55 +6566 93d6 +656c 8c68 +6570 9094 +6572 9dc8 +6574 90ae +6575 9347 +6577 957e +6578 9dc9 +6582 9dca +6583 9dcb +6587 95b6 +6588 9b7c +6589 90c4 +658c 956b +658e 8dd6 +6590 94e3 +6591 94c1 +6597 936c +6599 97bf +659b 9dcd +659c 8ece +659f 9dce +65a1 88b4 +65a4 8bd2 +65a5 90cb +65a7 9580 +65ab 9dcf +65ac 8e61 +65ad 9266 +65af 8e7a +65b0 9056 +65b7 9dd0 +65b9 95fb +65bc 8997 +65bd 8e7b +65c1 9dd3 +65c3 9dd1 +65c4 9dd4 +65c5 97b7 +65c6 9dd2 +65cb 90f9 +65cc 9dd5 +65cf 91b0 +65d2 9dd6 +65d7 8af8 +65d9 9dd8 +65db 9dd7 +65e0 9dd9 +65e1 9dda +65e2 8af9 +65e5 93fa +65e6 9255 +65e7 8b8c +65e8 8e7c +65e9 9181 +65ec 8f7b +65ed 88ae +65f1 9ddb +65fa 89a0 +65fb 9ddf +6602 8d56 +6603 9dde +6606 8da9 +6607 8fb8 +660a 9ddd +660c 8fb9 +660e 96be +660f 8da8 +6613 88d5 +6614 90cc +661c 9de4 +661f 90af +6620 8966 +6625 8f74 +6627 9686 +6628 8df0 +662d 8fba +662f 90a5 +6634 9de3 +6635 9de1 +6636 9de2 +663c 928b +663f 9e45 +6641 9de8 +6642 8e9e +6643 8d57 +6644 9de6 +6649 9de7 +664b 9057 +664f 9de5 +6652 8e4e +665d 9dea +665e 9de9 +665f 9dee +6662 9def +6664 9deb +6666 8a41 +6667 9dec +6668 9ded +6669 94d3 +666e 9581 +666f 8c69 +6670 9df0 +6674 90b0 +6676 8fbb +667a 9271 +6681 8bc5 +6683 9df1 +6684 9df5 +6687 89c9 +6688 9df2 +6689 9df4 +668e 9df3 +6691 8f8b +6696 9267 +6697 88c3 +6698 9df6 +669d 9df7 +66a2 92a8 +66a6 97ef +66ab 8e62 +66ae 95e9 +66b4 965c +66b8 9e41 +66b9 9df9 +66bc 9dfc +66be 9dfb +66c1 9df8 +66c4 9e40 +66c7 93dc +66c9 9dfa +66d6 9e42 +66d9 8f8c +66da 9e43 +66dc 976a +66dd 9498 +66e0 9e44 +66e6 9e46 +66e9 9e47 +66f0 9e48 +66f2 8bc8 +66f3 8967 +66f4 8d58 +66f5 9e49 +66f7 9e4a +66f8 8f91 +66f9 9182 +66fc 99d6 +66fd 915d +66fe 915c +66ff 91d6 +6700 8dc5 +6703 98f0 +6708 8c8e +6709 974c +670b 95fc +670d 959e +670f 9e4b +6714 8df1 +6715 92bd +6716 9e4c +6717 984e +671b 965d +671d 92a9 +671e 9e4d +671f 8afa +6726 9e4e +6727 9e4f +6728 96d8 +672a 96a2 +672b 9696 +672c 967b +672d 8e44 +672e 9e51 +6731 8ee9 +6734 9670 +6736 9e53 +6737 9e56 +6738 9e55 +673a 8af7 +673d 8b80 +673f 9e52 +6741 9e54 +6746 9e57 +6749 9099 +674e 979b +674f 88c7 +6750 8dde +6751 91ba +6753 8edb +6756 8ff1 +6759 9e5a +675c 936d +675e 9e58 +675f 91a9 +6760 9e59 +6761 8ff0 +6762 96db +6763 9e5b +6764 9e5c +6765 9788 +676a 9e61 +676d 8d59 +676f 9474 +6770 9e5e +6771 938c +6772 9ddc +6773 9de0 +6775 8b6e +6777 9466 +677c 9e60 +677e 8fbc +677f 94c2 +6785 9e66 +6787 94f8 +6789 9e5d +678b 9e63 +678c 9e62 +6790 90cd +6795 968d +6797 97d1 +679a 9687 +679c 89ca +679d 8e7d +67a0 9867 +67a1 9e65 +67a2 9095 +67a6 9e64 +67a9 9e5f +67af 8ccd +67b3 9e6b +67b4 9e69 +67b6 89cb +67b7 9e67 +67b8 9e6d +67b9 9e73 +67c1 91c6 +67c4 95bf +67c6 9e75 +67ca 9541 +67ce 9e74 +67cf 9490 +67d0 965e +67d1 8ab9 +67d3 90f5 +67d4 8f5f +67d8 92d1 +67da 974d +67dd 9e70 +67de 9e6f +67e2 9e71 +67e4 9e6e +67e7 9e76 +67e9 9e6c +67ec 9e6a +67ee 9e72 +67ef 9e68 +67f1 928c +67f3 96f6 +67f4 8ec4 +67f5 8df2 +67fb 8db8 +67fe 968f +67ff 8a60 +6802 92cc +6803 93c8 +6804 8968 +6813 90f0 +6816 90b2 +6817 8c49 +681e 9e78 +6821 8d5a +6822 8a9c +6829 9e7a +682a 8a94 +682b 9e81 +6832 9e7d +6834 90f1 +6838 8a6a +6839 8daa +683c 8a69 +683d 8dcd +6840 9e7b +6841 8c85 +6842 8c6a +6843 938d +6846 9e79 +6848 88c4 +684d 9e7c +684e 9e7e +6850 8bcb +6851 8c4b +6853 8aba +6854 8b6a +6859 9e82 +685c 8df7 +685d 9691 +685f 8e56 +6863 9e83 +6867 954f +6874 9e8f +6876 89b1 +6877 9e84 +687e 9e95 +687f 9e85 +6881 97c0 +6883 9e8c +6885 947e +688d 9e94 +688f 9e87 +6893 88b2 +6894 9e89 +6897 8d5b +689b 9e8b +689d 9e8a +689f 9e86 +68a0 9e91 +68a2 8fbd +68a6 9aeb +68a7 8ce6 +68a8 979c +68ad 9e88 +68af 92f2 +68b0 8a42 +68b1 8dab +68b3 9e80 +68b5 9e90 +68b6 8a81 +68b9 9e8e +68ba 9e92 +68bc 938e +68c4 8afc +68c6 9eb0 +68c9 96c7 +68ca 9e97 +68cb 8afb +68cd 9e9e +68d2 965f +68d4 9e9f +68d5 9ea1 +68d7 9ea5 +68d8 9e99 +68da 9249 +68df 938f +68e0 9ea9 +68e1 9e9c +68e3 9ea6 +68e7 9ea0 +68ee 9058 +68ef 9eaa +68f2 90b1 +68f9 9ea8 +68fa 8abb +6900 986f +6901 9e96 +6904 9ea4 +6905 88d6 +6908 9e98 +690b 96b8 +690c 9e9d +690d 9041 +690e 92c5 +690f 9e93 +6912 9ea3 +6919 909a +691a 9ead +691b 8a91 +691c 8c9f +6921 9eaf +6922 9e9a +6923 9eae +6925 9ea7 +6926 9e9b +6928 9eab +692a 9eac +6930 9ebd +6934 93cc +6936 9ea2 +6939 9eb9 +693d 9ebb +693f 92d6 +694a 976b +6953 9596 +6954 9eb6 +6955 91c8 +6959 9ebc +695a 915e +695c 9eb3 +695d 9ec0 +695e 9ebf +6960 93ed +6961 9ebe +6962 93e8 +696a 9ec2 +696b 9eb5 +696d 8bc6 +696e 9eb8 +696f 8f7c +6973 9480 +6974 9eba +6975 8bc9 +6977 9eb2 +6978 9eb4 +6979 9eb1 +697c 984f +697d 8a79 +697e 9eb7 +6981 9ec1 +6982 8a54 +698a 8de5 +698e 897c +6991 9ed2 +6994 9850 +6995 9ed5 +699b 9059 +699c 9ed4 +69a0 9ed3 +69a7 9ed0 +69ae 9ec4 +69b1 9ee1 +69b2 9ec3 +69b4 9ed6 +69bb 9ece +69be 9ec9 +69bf 9ec6 +69c1 9ec7 +69c3 9ecf +69c7 eaa0 +69ca 9ecc +69cb 8d5c +69cc 92c6 +69cd 9184 +69ce 9eca +69d0 9ec5 +69d3 9ec8 +69d8 976c +69d9 968a +69dd 9ecd +69de 9ed7 +69e7 9edf +69e8 9ed8 +69eb 9ee5 +69ed 9ee3 +69f2 9ede +69f9 9edd +69fb 92ce +69fd 9185 +69ff 9edb +6a02 9ed9 +6a05 9ee0 +6a0a 9ee6 +6a0b 94f3 +6a0c 9eec +6a12 9ee7 +6a13 9eea +6a14 9ee4 +6a17 9294 +6a19 9557 +6a1b 9eda +6a1e 9ee2 +6a1f 8fbe +6a21 96cd +6a22 9ef6 +6a23 9ee9 +6a29 8ca0 +6a2a 89a1 +6a2b 8a7e +6a2e 9ed1 +6a35 8fbf +6a36 9eee +6a38 9ef5 +6a39 8ef7 +6a3a 8a92 +6a3d 924d +6a44 9eeb +6a47 9ef0 +6a48 9ef4 +6a4b 8bb4 +6a58 8b6b +6a59 9ef2 +6a5f 8b40 +6a61 93c9 +6a62 9ef1 +6a66 9ef3 +6a72 9eed +6a78 9eef +6a7f 8a80 +6a80 9268 +6a84 9efa +6a8d 9ef8 +6a8e 8ce7 +6a90 9ef7 +6a97 9f40 +6a9c 9e77 +6aa0 9ef9 +6aa2 9efb +6aa3 9efc +6aaa 9f4b +6aac 9f47 +6aae 9e8d +6ab3 9f46 +6ab8 9f45 +6abb 9f42 +6ac1 9ee8 +6ac2 9f44 +6ac3 9f43 +6ad1 9f49 +6ad3 9845 +6ada 9f4c +6adb 8bf9 +6ade 9f48 +6adf 9f4a +6ae8 94a5 +6aea 9f4d +6afa 9f51 +6afb 9f4e +6b04 9793 +6b05 9f4f +6b0a 9edc +6b12 9f52 +6b16 9f53 +6b1d 8954 +6b1f 9f55 +6b20 8c87 +6b21 8e9f +6b23 8bd3 +6b27 89a2 +6b32 977e +6b37 9f57 +6b38 9f56 +6b39 9f59 +6b3a 8b5c +6b3d 8bd4 +6b3e 8abc +6b43 9f5c +6b47 9f5b +6b49 9f5d +6b4c 89cc +6b4e 9256 +6b50 9f5e +6b53 8abd +6b54 9f60 +6b59 9f5f +6b5b 9f61 +6b5f 9f62 +6b61 9f63 +6b62 8e7e +6b63 90b3 +6b64 8d9f +6b66 9590 +6b69 95e0 +6b6a 9863 +6b6f 8e95 +6b73 8dce +6b74 97f0 +6b78 9f64 +6b79 9f65 +6b7b 8e80 +6b7f 9f66 +6b80 9f67 +6b83 9f69 +6b84 9f68 +6b86 9677 +6b89 8f7d +6b8a 8eea +6b8b 8e63 +6b8d 9f6a +6b95 9f6c +6b96 9042 +6b98 9f6b +6b9e 9f6d +6ba4 9f6e +6baa 9f6f +6bab 9f70 +6baf 9f71 +6bb1 9f73 +6bb2 9f72 +6bb3 9f74 +6bb4 89a3 +6bb5 9269 +6bb7 9f75 +6bba 8e45 +6bbb 8a6b +6bbc 9f76 +6bbf 9361 +6bc0 9aca +6bc5 8b42 +6bc6 9f77 +6bcb 9f78 +6bcd 95ea +6bce 9688 +6bd2 93c5 +6bd3 9f79 +6bd4 94e4 +6bd8 94f9 +6bdb 96d1 +6bdf 9f7a +6beb 9f7c +6bec 9f7b +6bef 9f7e +6bf3 9f7d +6c08 9f81 +6c0f 8e81 +6c11 96af +6c13 9f82 +6c14 9f83 +6c17 8b43 +6c1b 9f84 +6c23 9f86 +6c24 9f85 +6c34 9085 +6c37 9558 +6c38 8969 +6c3e 94c3 +6c40 92f3 +6c41 8f60 +6c42 8b81 +6c4e 94c4 +6c50 8eac +6c55 9f88 +6c57 8abe +6c5a 8998 +6c5d 93f0 +6c5e 9f87 +6c5f 8d5d +6c60 9272 +6c62 9f89 +6c68 9f91 +6c6a 9f8a +6c70 91bf +6c72 8b82 +6c73 9f92 +6c7a 8c88 +6c7d 8b44 +6c7e 9f90 +6c81 9f8e +6c82 9f8b +6c83 9780 +6c88 92be +6c8c 93d7 +6c8d 9f8c +6c90 9f94 +6c92 9f93 +6c93 8c42 +6c96 89ab +6c99 8db9 +6c9a 9f8d +6c9b 9f8f +6ca1 9676 +6ca2 91f2 +6cab 9697 +6cae 9f9c +6cb1 9f9d +6cb3 89cd +6cb8 95a6 +6cb9 96fb +6cba 9f9f +6cbb 8ea1 +6cbc 8fc0 +6cbd 9f98 +6cbe 9f9e +6cbf 8988 +6cc1 8bb5 +6cc4 9f95 +6cc5 9f9a +6cc9 90f2 +6cca 9491 +6ccc 94e5 +6cd3 9f97 +6cd5 9640 +6cd7 9f99 +6cd9 9fa2 +6cdb 9fa0 +6cdd 9f9b +6ce1 9641 +6ce2 9467 +6ce3 8b83 +6ce5 9344 +6ce8 928d +6cea 9fa3 +6cef 9fa1 +6cf0 91d7 +6cf1 9f96 +6cf3 896a +6d0b 976d +6d0c 9fae +6d12 9fad +6d17 90f4 +6d19 9faa +6d1b 978c +6d1e 93b4 +6d1f 9fa4 +6d25 92c3 +6d29 896b +6d2a 8d5e +6d2b 9fa7 +6d32 8f46 +6d33 9fac +6d35 9fab +6d36 9fa6 +6d38 9fa9 +6d3b 8a88 +6d3d 9fa8 +6d3e 9468 +6d41 97ac +6d44 8ff2 +6d45 90f3 +6d59 9fb4 +6d5a 9fb2 +6d5c 956c +6d63 9faf +6d64 9fb1 +6d66 8959 +6d69 8d5f +6d6a 9851 +6d6c 8a5c +6d6e 9582 +6d74 9781 +6d77 8a43 +6d78 905a +6d79 9fb3 +6d85 9fb8 +6d88 8fc1 +6d8c 974f +6d8e 9fb5 +6d93 9fb0 +6d95 9fb6 +6d99 97dc +6d9b 9393 +6d9c 93c0 +6daf 8a55 +6db2 8974 +6db5 9fbc +6db8 9fbf +6dbc 97c1 +6dc0 9784 +6dc5 9fc6 +6dc6 9fc0 +6dc7 9fbd +6dcb 97d2 +6dcc 9fc3 +6dd1 8f69 +6dd2 9fc5 +6dd5 9fca +6dd8 9391 +6dd9 9fc8 +6dde 9fc2 +6de1 9257 +6de4 9fc9 +6de6 9fbe +6de8 9fc4 +6dea 9fcb +6deb 88fa +6dec 9fc1 +6dee 9fcc +6df1 905b +6df3 8f7e +6df5 95a3 +6df7 8dac +6df9 9fb9 +6dfa 9fc7 +6dfb 9359 +6e05 90b4 +6e07 8a89 +6e08 8dcf +6e09 8fc2 +6e0a 9fbb +6e0b 8f61 +6e13 8c6b +6e15 9fba +6e19 9fd0 +6e1a 8f8d +6e1b 8cb8 +6e1d 9fdf +6e1f 9fd9 +6e20 8b94 +6e21 936e +6e23 9fd4 +6e24 9fdd +6e25 88ad +6e26 8951 +6e29 89b7 +6e2b 9fd6 +6e2c 91aa +6e2d 9fcd +6e2e 9fcf +6e2f 8d60 +6e38 9fe0 +6e3a 9fdb +6e3e 9fd3 +6e43 9fda +6e4a 96a9 +6e4d 9fd8 +6e4e 9fdc +6e56 8cce +6e58 8fc3 +6e5b 9258 +6e5f 9fd2 +6e67 974e +6e6b 9fd5 +6e6e 9fce +6e6f 9392 +6e72 9fd1 +6e76 9fd7 +6e7e 9870 +6e7f 8ebc +6e80 969e +6e82 9fe1 +6e8c 94ac +6e8f 9fed +6e90 8cb9 +6e96 8f80 +6e98 9fe3 +6e9c 97ad +6e9d 8d61 +6e9f 9ff0 +6ea2 88ec +6ea5 9fee +6eaa 9fe2 +6eaf 9fe8 +6eb2 9fea +6eb6 976e +6eb7 9fe5 +6eba 934d +6ebd 9fe7 +6ec2 9fef +6ec4 9fe9 +6ec5 96c5 +6ec9 9fe4 +6ecb 8ea0 +6ecc 9ffc +6ed1 8a8a +6ed3 9fe6 +6ed4 9feb +6ed5 9fec +6edd 91ea +6ede 91d8 +6eec 9ff4 +6eef 9ffa +6ef2 9ff8 +6ef4 9348 +6ef7 e042 +6ef8 9ff5 +6efe 9ff6 +6eff 9fde +6f01 8b99 +6f02 9559 +6f06 8ebd +6f09 8d97 +6f0f 9852 +6f11 9ff2 +6f13 e041 +6f14 8989 +6f15 9186 +6f20 9499 +6f22 8abf +6f23 97f8 +6f2b 969f +6f2c 92d0 +6f31 9ff9 +6f32 9ffb +6f38 9151 +6f3e e040 +6f3f 9ff7 +6f41 9ff1 +6f45 8ac1 +6f54 8c89 +6f58 e04e +6f5b e049 +6f5c 90f6 +6f5f 8a83 +6f64 8f81 +6f66 e052 +6f6d e04b +6f6e 92aa +6f6f e048 +6f70 92d7 +6f74 e06b +6f78 e045 +6f7a e044 +6f7c e04d +6f80 e047 +6f81 e046 +6f82 e04c +6f84 909f +6f86 e043 +6f8e e04f +6f91 e050 +6f97 8ac0 +6fa1 e055 +6fa3 e054 +6fa4 e056 +6faa e059 +6fb1 9362 +6fb3 e053 +6fb9 e057 +6fc0 8c83 +6fc1 91f7 +6fc2 e051 +6fc3 945a +6fc6 e058 +6fd4 e05d +6fd5 e05b +6fd8 e05e +6fdb e061 +6fdf e05a +6fe0 8d8a +6fe1 9447 +6fe4 9fb7 +6feb 9794 +6fec e05c +6fee e060 +6fef 91f3 +6ff1 e05f +6ff3 e04a +6ff6 e889 +6ffa e064 +6ffe e068 +7001 e066 +7009 e062 +700b e063 +700f e067 +7011 e065 +7015 956d +7018 e06d +701a e06a +701b e069 +701d e06c +701e 93d2 +701f e06e +7026 9295 +7027 91eb +702c 90a3 +7030 e06f +7032 e071 +703e e070 +704c 9ff3 +7051 e072 +7058 93e5 +7063 e073 +706b 89ce +706f 9394 +7070 8a44 +7078 8b84 +707c 8edc +707d 8dd0 +7089 9846 +708a 9086 +708e 898a +7092 e075 +7099 e074 +70ac e078 +70ad 9259 +70ae e07b +70af e076 +70b3 e07a +70b8 e079 +70b9 935f +70ba 88d7 +70c8 97f3 +70cb e07d +70cf 8947 +70d9 e080 +70dd e07e +70df e07c +70f1 e077 +70f9 9642 +70fd e082 +7109 e081 +7114 898b +7119 e084 +711a 95b0 +711c e083 +7121 96b3 +7126 8fc5 +7136 9152 +713c 8fc4 +7149 97f9 +714c e08a +714e 90f7 +7155 e086 +7156 e08b +7159 898c +7162 e089 +7164 9481 +7165 e085 +7166 e088 +7167 8fc6 +7169 94cf +716c e08c +716e 8ecf +717d 90f8 +7184 e08f +7188 e087 +718a 8c46 +718f e08d +7194 976f +7195 e090 +7199 eaa4 +719f 8f6e +71a8 e091 +71ac e092 +71b1 944d +71b9 e094 +71be e095 +71c3 9452 +71c8 9395 +71c9 e097 +71ce e099 +71d0 97d3 +71d2 e096 +71d4 e098 +71d5 898d +71d7 e093 +71df 9a7a +71e0 e09a +71e5 9187 +71e6 8e57 +71e7 e09c +71ec e09b +71ed 9043 +71ee 99d7 +71f5 e09d +71f9 e09f +71fb e08e +71fc e09e +71ff e0a0 +7206 949a +720d e0a1 +7210 e0a2 +721b e0a3 +7228 e0a4 +722a 92dc +722c e0a6 +722d e0a5 +7230 e0a7 +7232 e0a8 +7235 8edd +7236 9583 +723a 96ea +723b e0a9 +723c e0aa +723d 9175 +723e 8ea2 +723f e0ab +7240 e0ac +7246 e0ad +7247 95d0 +7248 94c5 +724b e0ae +724c 9476 +7252 92ab +7258 e0af +7259 89e5 +725b 8b8d +725d 96c4 +725f 96b4 +7261 89b2 +7262 9853 +7267 9671 +7269 95a8 +7272 90b5 +7274 e0b0 +7279 93c1 +727d 8ca1 +727e e0b1 +7280 8dd2 +7281 e0b3 +7282 e0b2 +7287 e0b4 +7292 e0b5 +7296 e0b6 +72a0 8b5d +72a2 e0b7 +72a7 e0b8 +72ac 8ca2 +72af 94c6 +72b2 e0ba +72b6 8ff3 +72b9 e0b9 +72c2 8bb6 +72c3 e0bb +72c4 e0bd +72c6 e0bc +72ce e0be +72d0 8ccf +72d2 e0bf +72d7 8be7 +72d9 915f +72db 8d9d +72e0 e0c1 +72e1 e0c2 +72e2 e0c0 +72e9 8eeb +72ec 93c6 +72ed 8bb7 +72f7 e0c4 +72f8 924b +72f9 e0c3 +72fc 9854 +72fd 9482 +730a e0c7 +7316 e0c9 +7317 e0c6 +731b 96d2 +731c e0c8 +731d e0ca +731f 97c2 +7325 e0ce +7329 e0cd +732a 9296 +732b 944c +732e 8ca3 +732f e0cc +7334 e0cb +7336 9750 +7337 9751 +733e e0cf +733f 898e +7344 8d96 +7345 8e82 +734e e0d0 +734f e0d1 +7357 e0d3 +7363 8f62 +7368 e0d5 +736a e0d4 +7370 e0d6 +7372 8a6c +7375 e0d8 +7378 e0d7 +737a e0da +737b e0d9 +7384 8cba +7387 97a6 +7389 8bca +738b 89a4 +7396 8be8 +73a9 8adf +73b2 97e6 +73b3 e0dc +73bb e0de +73c0 e0df +73c2 89cf +73c8 e0db +73ca 8e58 +73cd 92bf +73ce e0dd +73de e0e2 +73e0 8eec +73e5 e0e0 +73ea 8c5d +73ed 94c7 +73ee e0e1 +73f1 e0fc +73f8 e0e7 +73fe 8cbb +7403 8b85 +7405 e0e4 +7406 979d +7409 97ae +7422 91f4 +7425 e0e6 +7432 e0e8 +7433 97d4 +7434 8bd5 +7435 94fa +7436 9469 +743a e0e9 +743f e0eb +7441 e0ee +7455 e0ea +7459 e0ed +745a 8ce8 +745b 896c +745c e0ef +745e 9090 +745f e0ec +7460 97da +7463 e0f2 +7464 eaa2 +7469 e0f0 +746a e0f3 +746f e0e5 +7470 e0f1 +7473 8dba +7476 e0f4 +747e e0f5 +7483 979e +748b e0f6 +749e e0f7 +74a2 e0e3 +74a7 e0f8 +74b0 8ac2 +74bd 8ea3 +74ca e0f9 +74cf e0fa +74d4 e0fb +74dc 895a +74e0 e140 +74e2 955a +74e3 e141 +74e6 8aa2 +74e7 e142 +74e9 e143 +74ee e144 +74f0 e146 +74f1 e147 +74f2 e145 +74f6 9572 +74f7 e149 +74f8 e148 +7503 e14b +7504 e14a +7505 e14c +750c e14d +750d e14f +750e e14e +7511 8d99 +7513 e151 +7515 e150 +7518 8ac3 +751a 9072 +751c 935b +751e e152 +751f 90b6 +7523 8e59 +7525 8999 +7526 e153 +7528 9770 +752b 95e1 +752c e154 +7530 9363 +7531 9752 +7532 8d62 +7533 905c +7537 926a +7538 99b2 +753a 92ac +753b 89e6 +753c e155 +7544 e156 +7546 e15b +7549 e159 +754a e158 +754b 9dc0 +754c 8a45 +754d e157 +754f 88d8 +7551 94a8 +7554 94c8 +7559 97af +755a e15c +755b e15a +755c 927b +755d 90a4 +7560 94a9 +7562 954c +7564 e15e +7565 97aa +7566 8c6c +7567 e15f +7569 e15d +756a 94d4 +756b e160 +756d e161 +7570 88d9 +7573 8ff4 +7574 e166 +7576 e163 +7577 93eb +7578 e162 +757f 8b45 +7582 e169 +7586 e164 +7587 e165 +7589 e168 +758a e167 +758b 9544 +758e 9161 +758f 9160 +7591 8b5e +7594 e16a +759a e16b +759d e16c +75a3 e16e +75a5 e16d +75ab 8975 +75b1 e176 +75b2 94e6 +75b3 e170 +75b5 e172 +75b8 e174 +75b9 905d +75bc e175 +75bd e173 +75be 8ebe +75c2 e16f +75c3 e171 +75c5 9561 +75c7 8fc7 +75ca e178 +75cd e177 +75d2 e179 +75d4 8ea4 +75d5 8dad +75d8 9397 +75d9 e17a +75db 92c9 +75de e17c +75e2 979f +75e3 e17b +75e9 9189 +75f0 e182 +75f2 e184 +75f3 e185 +75f4 9273 +75fa e183 +75fc e180 +75fe e17d +75ff e17e +7601 e181 +7609 e188 +760b e186 +760d e187 +761f e189 +7620 e18b +7621 e18c +7622 e18d +7624 e18e +7627 e18a +7630 e190 +7634 e18f +763b e191 +7642 97c3 +7646 e194 +7647 e192 +7648 e193 +764c 8ae0 +7652 96fc +7656 95c8 +7658 e196 +765c e195 +7661 e197 +7662 e198 +7667 e19c +7668 e199 +7669 e19a +766a e19b +766c e19d +7670 e19e +7672 e19f +7676 e1a0 +7678 e1a1 +767a 94ad +767b 936f +767c e1a2 +767d 9492 +767e 9553 +7680 e1a3 +7683 e1a4 +7684 9349 +7686 8a46 +7687 8d63 +7688 e1a5 +768b e1a6 +768e e1a7 +7690 8e48 +7693 e1a9 +7696 e1a8 +7699 e1aa +769a e1ab +76ae 94e7 +76b0 e1ac +76b4 e1ad +76b7 ea89 +76b8 e1ae +76b9 e1af +76ba e1b0 +76bf 8e4d +76c2 e1b1 +76c3 9475 +76c6 967e +76c8 896d +76ca 8976 +76cd e1b2 +76d2 e1b4 +76d6 e1b3 +76d7 9390 +76db 90b7 +76dc 9f58 +76de e1b5 +76df 96bf +76e1 e1b6 +76e3 8ac4 +76e4 94d5 +76e5 e1b7 +76e7 e1b8 +76ea e1b9 +76ee 96da +76f2 96d3 +76f4 92bc +76f8 918a +76fb e1bb +76fe 8f82 +7701 8fc8 +7704 e1be +7707 e1bd +7708 e1bc +7709 94fb +770b 8ac5 +770c 8ca7 +771b e1c4 +771e e1c1 +771f 905e +7720 96b0 +7724 e1c0 +7725 e1c2 +7726 e1c3 +7729 e1bf +7737 e1c5 +7738 e1c6 +773a 92ad +773c 8ae1 +7740 9285 +7747 e1c7 +775a e1c8 +775b e1cb +7761 9087 +7763 93c2 +7765 e1cc +7766 9672 +7768 e1c9 +776b e1ca +7779 e1cf +777e e1ce +777f e1cd +778b e1d1 +778e e1d0 +7791 e1d2 +779e e1d4 +77a0 e1d3 +77a5 95cb +77ac 8f75 +77ad 97c4 +77b0 e1d5 +77b3 93b5 +77b6 e1d6 +77b9 e1d7 +77bb e1db +77bc e1d9 +77bd e1da +77bf e1d8 +77c7 e1dc +77cd e1dd +77d7 e1de +77da e1df +77db 96b5 +77dc e1e0 +77e2 96ee +77e3 e1e1 +77e5 926d +77e7 948a +77e9 8be9 +77ed 925a +77ee e1e2 +77ef 8bb8 +77f3 90ce +77fc e1e3 +7802 8dbb +780c e1e4 +7812 e1e5 +7814 8ca4 +7815 8dd3 +7820 e1e7 +7825 9375 +7826 8dd4 +7827 8b6d +7832 9643 +7834 946a +783a 9376 +783f 8d7b +7845 e1e9 +785d 8fc9 +786b 97b0 +786c 8d64 +786f 8ca5 +7872 94a1 +7874 e1eb +787c e1ed +7881 8ce9 +7886 e1ec +7887 92f4 +788c e1ef +788d 8a56 +788e e1ea +7891 94e8 +7893 894f +7895 8dea +7897 9871 +789a e1ee +78a3 e1f0 +78a7 95c9 +78a9 90d7 +78aa e1f2 +78af e1f3 +78b5 e1f1 +78ba 8a6d +78bc e1f9 +78be e1f8 +78c1 8ea5 +78c5 e1fa +78c6 e1f5 +78ca e1fb +78cb e1f6 +78d0 94d6 +78d1 e1f4 +78d4 e1f7 +78da e241 +78e7 e240 +78e8 9681 +78ec e1fc +78ef 88e9 +78f4 e243 +78fd e242 +7901 8fca +7907 e244 +790e 9162 +7911 e246 +7912 e245 +7919 e247 +7926 e1e6 +792a e1e8 +792b e249 +792c e248 +793a 8ea6 +793c 97e7 +793e 8ed0 +7940 e24a +7941 8c56 +7947 8b5f +7948 8b46 +7949 8e83 +7950 9753 +7953 e250 +7955 e24f +7956 9163 +7957 e24c +795a e24e +795d 8f6a +795e 905f +795f e24d +7960 e24b +7962 9449 +7965 8fcb +7968 955b +796d 8dd5 +7977 9398 +797a e251 +797f e252 +7980 e268 +7981 8bd6 +7984 985c +7985 9154 +798a e253 +798d 89d0 +798e 92f5 +798f 959f +799d e254 +79a6 8b9a +79a7 e255 +79aa e257 +79ae e258 +79b0 9448 +79b3 e259 +79b9 e25a +79ba e25b +79bd 8bd7 +79be 89d1 +79bf 93c3 +79c0 8f47 +79c1 8e84 +79c9 e25c +79cb 8f48 +79d1 89c8 +79d2 9562 +79d5 e25d +79d8 94e9 +79df 9164 +79e1 e260 +79e3 e261 +79e4 9489 +79e6 9060 +79e7 e25e +79e9 9281 +79ec e25f +79f0 8fcc +79fb 88da +7a00 8b48 +7a08 e262 +7a0b 92f6 +7a0d e263 +7a0e 90c5 +7a14 96ab +7a17 9542 +7a18 e264 +7a19 e265 +7a1a 9274 +7a1c 97c5 +7a1f e267 +7a20 e266 +7a2e 8eed +7a31 e269 +7a32 88ee +7a37 e26c +7a3b e26a +7a3c 89d2 +7a3d 8c6d +7a3e e26b +7a3f 8d65 +7a40 8d92 +7a42 95e4 +7a43 e26d +7a46 9673 +7a49 e26f +7a4d 90cf +7a4e 896e +7a4f 89b8 +7a50 88aa +7a57 e26e +7a61 e270 +7a62 e271 +7a63 8ff5 +7a69 e272 +7a6b 8a6e +7a70 e274 +7a74 8c8a +7a76 8b86 +7a79 e275 +7a7a 8bf3 +7a7d e276 +7a7f 90fa +7a81 93cb +7a83 90de +7a84 8df3 +7a88 e277 +7a92 9282 +7a93 918b +7a95 e279 +7a96 e27b +7a97 e278 +7a98 e27a +7a9f 8c41 +7aa9 e27c +7aaa 8c45 +7aae 8b87 +7aaf 9771 +7ab0 e27e +7ab6 e280 +7aba 894d +7abf e283 +7ac3 8a96 +7ac4 e282 +7ac5 e281 +7ac7 e285 +7ac8 e27d +7aca e286 +7acb 97a7 +7acd e287 +7acf e288 +7ad2 9af2 +7ad3 e28a +7ad5 e289 +7ad9 e28b +7ada e28c +7adc 97b3 +7add e28d +7adf e8ed +7ae0 8fcd +7ae1 e28e +7ae2 e28f +7ae3 8f76 +7ae5 93b6 +7ae6 e290 +7aea 9247 +7aed e291 +7aef 925b +7af0 e292 +7af6 8ba3 +7af8 995e +7af9 927c +7afa 8eb1 +7aff 8ac6 +7b02 e293 +7b04 e2a0 +7b06 e296 +7b08 8b88 +7b0a e295 +7b0b e2a2 +7b0f e294 +7b11 8fce +7b18 e298 +7b19 e299 +7b1b 934a +7b1e e29a +7b20 8a7d +7b25 9079 +7b26 9584 +7b28 e29c +7b2c 91e6 +7b33 e297 +7b35 e29b +7b36 e29d +7b39 8df9 +7b45 e2a4 +7b46 954d +7b48 94a4 +7b49 9399 +7b4b 8bd8 +7b4c e2a3 +7b4d e2a1 +7b4f 94b3 +7b50 e29e +7b51 927d +7b52 939b +7b54 939a +7b56 8df4 +7b5d e2b6 +7b65 e2a6 +7b67 e2a8 +7b6c e2ab +7b6e e2ac +7b70 e2a9 +7b71 e2aa +7b74 e2a7 +7b75 e2a5 +7b7a e29f +7b86 95cd +7b87 89d3 +7b8b e2b3 +7b8d e2b0 +7b8f e2b5 +7b92 e2b4 +7b94 9493 +7b95 96a5 +7b97 8e5a +7b98 e2ae +7b99 e2b7 +7b9a e2b2 +7b9c e2b1 +7b9d e2ad +7b9f e2af +7ba1 8ac7 +7baa 925c +7bad 90fb +7bb1 94a0 +7bb4 e2bc +7bb8 94a2 +7bc0 90df +7bc1 e2b9 +7bc4 94cd +7bc6 e2bd +7bc7 95d1 +7bc9 927a +7bcb e2b8 +7bcc e2ba +7bcf e2bb +7bdd e2be +7be0 8ec2 +7be4 93c4 +7be5 e2c3 +7be6 e2c2 +7be9 e2bf +7bed 9855 +7bf3 e2c8 +7bf6 e2cc +7bf7 e2c9 +7c00 e2c5 +7c07 e2c6 +7c0d e2cb +7c11 e2c0 +7c12 99d3 +7c13 e2c7 +7c14 e2c1 +7c17 e2ca +7c1f e2d0 +7c21 8ac8 +7c23 e2cd +7c27 e2ce +7c2a e2cf +7c2b e2d2 +7c37 e2d1 +7c38 94f4 +7c3d e2d3 +7c3e 97fa +7c3f 95eb +7c40 e2d8 +7c43 e2d5 +7c4c e2d4 +7c4d 90d0 +7c4f e2d7 +7c50 e2d9 +7c54 e2d6 +7c56 e2dd +7c58 e2da +7c5f e2db +7c60 e2c4 +7c64 e2dc +7c65 e2de +7c6c e2df +7c73 95c4 +7c75 e2e0 +7c7e 96e0 +7c81 8bcc +7c82 8c48 +7c83 e2e1 +7c89 95b2 +7c8b 9088 +7c8d 96ae +7c90 e2e2 +7c92 97b1 +7c95 9494 +7c97 9165 +7c98 9453 +7c9b 8f6c +7c9f 88be +7ca1 e2e7 +7ca2 e2e5 +7ca4 e2e3 +7ca5 8a9f +7ca7 8fcf +7ca8 e2e8 +7cab e2e6 +7cad e2e4 +7cae e2ec +7cb1 e2eb +7cb2 e2ea +7cb3 e2e9 +7cb9 e2ed +7cbd e2ee +7cbe 90b8 +7cc0 e2ef +7cc2 e2f1 +7cc5 e2f0 +7cca 8cd0 +7cce 9157 +7cd2 e2f3 +7cd6 939c +7cd8 e2f2 +7cdc e2f4 +7cde 95b3 +7cdf 918c +7ce0 8d66 +7ce2 e2f5 +7ce7 97c6 +7cef e2f7 +7cf2 e2f8 +7cf4 e2f9 +7cf6 e2fa +7cf8 8e85 +7cfa e2fb +7cfb 8c6e +7cfe 8b8a +7d00 8b49 +7d02 e340 +7d04 96f1 +7d05 8d67 +7d06 e2fc +7d0a e343 +7d0b 96e4 +7d0d 945b +7d10 9552 +7d14 8f83 +7d15 e342 +7d17 8ed1 +7d18 8d68 +7d19 8e86 +7d1a 8b89 +7d1b 95b4 +7d1c e341 +7d20 9166 +7d21 9661 +7d22 8df5 +7d2b 8e87 +7d2c 92db +7d2e e346 +7d2f 97dd +7d30 8dd7 +7d32 e347 +7d33 9061 +7d35 e349 +7d39 8fd0 +7d3a 8dae +7d3f e348 +7d42 8f49 +7d43 8cbc +7d44 9167 +7d45 e344 +7d46 e34a +7d4b e345 +7d4c 8c6f +7d4e e34d +7d4f e351 +7d50 8c8b +7d56 e34c +7d5b e355 +7d5e 8d69 +7d61 978d +7d62 88ba +7d63 e352 +7d66 8b8b +7d68 e34f +7d6e e350 +7d71 939d +7d72 e34e +7d73 e34b +7d75 8a47 +7d76 90e2 +7d79 8ca6 +7d7d e357 +7d89 e354 +7d8f e356 +7d93 e353 +7d99 8c70 +7d9a 91b1 +7d9b e358 +7d9c 918e +7d9f e365 +7da2 e361 +7da3 e35b +7dab e35f +7dac 8ef8 +7dad 88db +7dae e35a +7daf e362 +7db0 e366 +7db1 8d6a +7db2 96d4 +7db4 92d4 +7db5 e35c +7db8 e364 +7dba e359 +7dbb 925d +7dbd e35e +7dbe 88bb +7dbf 96c8 +7dc7 e35d +7dca 8bd9 +7dcb 94ea +7dcf 918d +7dd1 97ce +7dd2 8f8f +7dd5 e38e +7dd8 e367 +7dda 90fc +7ddc e363 +7ddd e368 +7dde e36a +7de0 92f7 +7de1 e36d +7de4 e369 +7de8 95d2 +7de9 8ac9 +7dec 96c9 +7def 88dc +7df2 e36c +7df4 97fb +7dfb e36b +7e01 898f +7e04 93ea +7e05 e36e +7e09 e375 +7e0a e36f +7e0b e376 +7e12 e372 +7e1b 949b +7e1e 8ec8 +7e1f e374 +7e21 e371 +7e22 e377 +7e23 e370 +7e26 8f63 +7e2b 9644 +7e2e 8f6b +7e31 e373 +7e32 e380 +7e35 e37b +7e37 e37e +7e39 e37c +7e3a e381 +7e3b e37a +7e3d e360 +7e3e 90d1 +7e41 94c9 +7e43 e37d +7e46 e378 +7e4a 9140 +7e4b 8c71 +7e4d 8f4a +7e54 9044 +7e55 9155 +7e56 e384 +7e59 e386 +7e5a e387 +7e5d e383 +7e5e e385 +7e66 e379 +7e67 e382 +7e69 e38a +7e6a e389 +7e6d 969a +7e70 8c4a +7e79 e388 +7e7b e38c +7e7c e38b +7e7d e38f +7e7f e391 +7e82 8e5b +7e83 e38d +7e88 e392 +7e89 e393 +7e8c e394 +7e8e e39a +7e8f 935a +7e90 e396 +7e92 e395 +7e93 e397 +7e94 e398 +7e96 e399 +7e9b e39b +7e9c e39c +7f36 8aca +7f38 e39d +7f3a e39e +7f45 e39f +7f4c e3a0 +7f4d e3a1 +7f4e e3a2 +7f50 e3a3 +7f51 e3a4 +7f54 e3a6 +7f55 e3a5 +7f58 e3a7 +7f5f e3a8 +7f60 e3a9 +7f67 e3ac +7f68 e3aa +7f69 e3ab +7f6a 8ddf +7f6b 8c72 +7f6e 9275 +7f70 94b1 +7f72 8f90 +7f75 946c +7f77 94eb +7f78 e3ad +7f79 9ceb +7f82 e3ae +7f83 e3b0 +7f85 9785 +7f86 e3af +7f87 e3b2 +7f88 e3b1 +7f8a 9772 +7f8c e3b3 +7f8e 94fc +7f94 e3b4 +7f9a e3b7 +7f9d e3b6 +7f9e e3b5 +7fa3 e3b8 +7fa4 8c51 +7fa8 9141 +7fa9 8b60 +7fae e3bc +7faf e3b9 +7fb2 e3ba +7fb6 e3bd +7fb8 e3be +7fb9 e3bb +7fbd 8948 +7fc1 89a5 +7fc5 e3c0 +7fc6 e3c1 +7fca e3c2 +7fcc 9782 +7fd2 8f4b +7fd4 e3c4 +7fd5 e3c3 +7fe0 9089 +7fe1 e3c5 +7fe6 e3c6 +7fe9 e3c7 +7feb 8ae3 +7ff0 8acb +7ff3 e3c8 +7ff9 e3c9 +7ffb 967c +7ffc 9783 +8000 9773 +8001 9856 +8003 8d6c +8004 e3cc +8005 8ed2 +8006 e3cb +800b e3cd +800c 8ea7 +8010 91cf +8012 e3ce +8015 8d6b +8017 96d5 +8018 e3cf +8019 e3d0 +801c e3d1 +8021 e3d2 +8028 e3d3 +8033 8ea8 +8036 96eb +803b e3d5 +803d 925e +803f e3d4 +8046 e3d7 +804a e3d6 +8052 e3d8 +8056 90b9 +8058 e3d9 +805a e3da +805e 95b7 +805f e3db +8061 918f +8062 e3dc +8068 e3dd +806f 97fc +8070 e3e0 +8072 e3df +8073 e3de +8074 92ae +8076 e3e1 +8077 9045 +8079 e3e2 +807d e3e3 +807e 9857 +807f e3e4 +8084 e3e5 +8085 e3e7 +8086 e3e6 +8087 94a3 +8089 93f7 +808b 985d +808c 94a7 +8093 e3e9 +8096 8fd1 +8098 9549 +809a e3ea +809b e3e8 +809d 8acc +80a1 8cd2 +80a2 8e88 +80a5 94ec +80a9 8ca8 +80aa 9662 +80ac e3ed +80ad e3eb +80af 8d6d +80b1 8d6e +80b2 88e7 +80b4 8de6 +80ba 9478 +80c3 88dd +80c4 e3f2 +80c6 925f +80cc 9477 +80ce 91d9 +80d6 e3f4 +80d9 e3f0 +80da e3f3 +80db e3ee +80dd e3f1 +80de 9645 +80e1 8cd3 +80e4 88fb +80e5 e3ef +80ef e3f6 +80f1 e3f7 +80f4 93b7 +80f8 8bb9 +80fc e445 +80fd 945c +8102 8e89 +8105 8bba +8106 90c6 +8107 9865 +8108 96ac +8109 e3f5 +810a 90d2 +811a 8b72 +811b e3f8 +8123 e3fa +8129 e3f9 +812f e3fb +8131 9245 +8133 945d +8139 92af +813e e442 +8146 e441 +814b e3fc +814e 9074 +8150 9585 +8151 e444 +8153 e443 +8154 8d6f +8155 9872 +815f e454 +8165 e448 +8166 e449 +816b 8eee +816e e447 +8170 8d98 +8171 e446 +8174 e44a +8178 92b0 +8179 95a0 +817a 9142 +817f 91da +8180 e44e +8182 e44f +8183 e44b +8188 e44c +818a e44d +818f 8d70 +8193 e455 +8195 e451 +819a 9586 +819c 968c +819d 9547 +81a0 e450 +81a3 e453 +81a4 e452 +81a8 9663 +81a9 e456 +81b0 e457 +81b3 9156 +81b5 e458 +81b8 e45a +81ba e45e +81bd e45b +81be e459 +81bf 945e +81c0 e45c +81c2 e45d +81c6 89b0 +81c8 e464 +81c9 e45f +81cd e460 +81d1 e461 +81d3 919f +81d8 e463 +81d9 e462 +81da e465 +81df e466 +81e0 e467 +81e3 9062 +81e5 89e7 +81e7 e468 +81e8 97d5 +81ea 8ea9 +81ed 8f4c +81f3 8e8a +81f4 9276 +81fa e469 +81fb e46a +81fc 8950 +81fe e46b +8201 e46c +8202 e46d +8205 e46e +8207 e46f +8208 8bbb +8209 9da8 +820a e470 +820c 90e3 +820d e471 +820e 8ec9 +8210 e472 +8212 98ae +8216 e473 +8217 95dc +8218 8ada +821b 9143 +821c 8f77 +821e 9591 +821f 8f4d +8229 e474 +822a 8d71 +822b e475 +822c 94ca +822e e484 +8233 e477 +8235 91c7 +8236 9495 +8237 8cbd +8238 e476 +8239 9144 +8240 e478 +8247 92f8 +8258 e47a +8259 e479 +825a e47c +825d e47b +825f e47d +8262 e480 +8264 e47e +8266 8acd +8268 e481 +826a e482 +826b e483 +826e 8daf +826f 97c7 +8271 e485 +8272 9046 +8276 8990 +8277 e486 +8278 e487 +827e e488 +828b 88f0 +828d e489 +8292 e48a +8299 9587 +829d 8ec5 +829f e48c +82a5 8a48 +82a6 88b0 +82ab e48b +82ac e48e +82ad 946d +82af 9063 +82b1 89d4 +82b3 9646 +82b8 8c7c +82b9 8bda +82bb e48d +82bd 89e8 +82c5 8aa1 +82d1 8991 +82d2 e492 +82d3 97e8 +82d4 91db +82d7 9563 +82d9 e49e +82db 89d5 +82dc e49c +82de e49a +82df e491 +82e1 e48f +82e3 e490 +82e5 8ee1 +82e6 8bea +82e7 9297 +82eb 93cf +82f1 8970 +82f3 e494 +82f4 e493 +82f9 e499 +82fa e495 +82fb e498 +8302 96ce +8303 e497 +8304 89d6 +8305 8a9d +8306 e49b +8309 e49d +830e 8c73 +8316 e4a1 +8317 e4aa +8318 e4ab +831c 88a9 +8323 e4b2 +8328 88ef +832b e4a9 +832f e4a8 +8331 e4a3 +8332 e4a2 +8334 e4a0 +8335 e49f +8336 9283 +8338 91f9 +8339 e4a5 +8340 e4a4 +8345 e4a7 +8349 9190 +834a 8c74 +834f 8960 +8350 e4a6 +8352 8d72 +8358 9191 +8373 e4b8 +8375 e4b9 +8377 89d7 +837b 89ac +837c e4b6 +8385 e4ac +8387 e4b4 +8389 e4bb +838a e4b5 +838e e4b3 +8393 e496 +8396 e4b1 +839a e4ad +839e 8ace +839f e4af +83a0 e4ba +83a2 e4b0 +83a8 e4bc +83aa e4ae +83ab 949c +83b1 9789 +83b5 e4b7 +83bd e4cd +83c1 e4c5 +83c5 909b +83ca 8b65 +83cc 8bdb +83ce e4c0 +83d3 89d9 +83d6 8fd2 +83d8 e4c3 +83dc 8dd8 +83df 9370 +83e0 e4c8 +83e9 95ec +83eb e4bf +83ef 89d8 +83f0 8cd4 +83f1 9548 +83f2 e4c9 +83f4 e4bd +83f7 e4c6 +83fb e4d0 +83fd e4c1 +8403 e4c2 +8404 93b8 +8407 e4c7 +840b e4c4 +840c 9647 +840d e4ca +840e 88de +8413 e4be +8420 e4cc +8422 e4cb +8429 948b +842a e4d2 +842c e4dd +8431 8a9e +8435 e4e0 +8438 e4ce +843c e4d3 +843d 978e +8446 e4dc +8449 9774 +844e 97a8 +8457 9298 +845b 8a8b +8461 9592 +8462 e4e2 +8463 939f +8466 88af +8469 e4db +846b e4d7 +846c 9192 +846d e4d1 +846e e4d9 +846f e4de +8471 944b +8475 88a8 +8477 e4d6 +8479 e4df +847a 9598 +8482 e4da +8484 e4d5 +848b 8fd3 +8490 8f4e +8494 8eaa +8499 96d6 +849c 9566 +849f e4e5 +84a1 e4ee +84ad e4d8 +84b2 8a97 +84b8 8ff6 +84b9 e4e3 +84bb e4e8 +84bc 9193 +84bf e4e4 +84c1 e4eb +84c4 927e +84c6 e4ec +84c9 9775 +84ca e4e1 +84cb 8a57 +84cd e4e7 +84d0 e4ea +84d1 96aa +84d6 e4ed +84d9 e4e6 +84da e4e9 +84ec 9648 +84ee 9840 +84f4 e4f1 +84fc e4f8 +84ff e4f0 +8500 8ec1 +8506 e4cf +8511 95cc +8513 96a0 +8514 e4f7 +8515 e4f6 +8517 e4f2 +8518 e4f3 +851a 8955 +851f e4f5 +8521 e4ef +8526 92d3 +852c e4f4 +852d 88fc +8535 91a0 +853d 95c1 +8540 e4f9 +8541 e540 +8543 94d7 +8548 e4fc +8549 8fd4 +854a 8ec7 +854b e542 +854e 8bbc +8555 e543 +8557 9599 +8558 e4fb +855a e4d4 +8563 e4fa +8568 986e +8569 93a0 +856a 9593 +856d e54a +8577 e550 +857e e551 +8580 e544 +8584 9496 +8587 e54e +8588 e546 +858a e548 +8590 e552 +8591 e547 +8594 e54b +8597 8992 +8599 93e3 +859b e54c +859c e54f +85a4 e545 +85a6 9145 +85a8 e549 +85a9 8e46 +85aa 9064 +85ab 8c4f +85ac 96f2 +85ae 96f7 +85af 8f92 +85b9 e556 +85ba e554 +85c1 986d +85c9 e553 +85cd 9795 +85cf e555 +85d0 e557 +85d5 e558 +85dc e55b +85dd e559 +85e4 93a1 +85e5 e55a +85e9 94cb +85ea e54d +85f7 8f93 +85f9 e55c +85fa e561 +85fb 9194 +85fe e560 +8602 e541 +8606 e562 +8607 9168 +860a e55d +860b e55f +8613 e55e +8616 9f50 +8617 9f41 +861a e564 +8622 e563 +862d 9796 +862f e1ba +8630 e565 +863f e566 +864d e567 +864e 8cd5 +8650 8b73 +8654 e569 +8655 997c +865a 8b95 +865c 97b8 +865e 8bf1 +865f e56a +8667 e56b +866b 928e +8671 e56c +8679 93f8 +867b 88b8 +868a 89e1 +868b e571 +868c e572 +8693 e56d +8695 8e5c +86a3 e56e +86a4 9461 +86a9 e56f +86aa e570 +86ab e57a +86af e574 +86b0 e577 +86b6 e573 +86c4 e575 +86c6 e576 +86c7 8ed6 +86c9 e578 +86cb 9260 +86cd 8c75 +86ce 8a61 +86d4 e57b +86d9 8a5e +86db e581 +86de e57c +86df e580 +86e4 94b8 +86e9 e57d +86ec e57e +86ed 9567 +86ee 94d8 +86ef e582 +86f8 91fb +86f9 e58c +86fb e588 +86fe 89e9 +8700 e586 +8702 9649 +8703 e587 +8706 e584 +8708 e585 +8709 e58a +870a e58d +870d e58b +8711 e589 +8712 e583 +8718 9277 +871a e594 +871c 96a8 +8725 e592 +8729 e593 +8734 e58e +8737 e590 +873b e591 +873f e58f +8749 90e4 +874b 9858 +874c e598 +874e e599 +8753 e59f +8755 9049 +8757 e59b +8759 e59e +875f e596 +8760 e595 +8763 e5a0 +8766 89da +8768 e59c +876a e5a1 +876e e59d +8774 e59a +8776 92b1 +8778 e597 +877f 9488 +8782 e5a5 +878d 975a +879f e5a4 +87a2 e5a3 +87ab e5ac +87af e5a6 +87b3 e5ae +87ba 9786 +87bb e5b1 +87bd e5a8 +87c0 e5a9 +87c4 e5ad +87c6 e5b0 +87c7 e5af +87cb e5a7 +87d0 e5aa +87d2 e5bb +87e0 e5b4 +87ef e5b2 +87f2 e5b3 +87f6 e5b8 +87f7 e5b9 +87f9 8a49 +87fb 8b61 +87fe e5b7 +8805 e5a2 +880d e5b6 +880e e5ba +880f e5b5 +8811 e5bc +8815 e5be +8816 e5bd +8821 e5c0 +8822 e5bf +8823 e579 +8827 e5c4 +8831 e5c1 +8836 e5c2 +8839 e5c3 +883b e5c5 +8840 8c8c +8842 e5c7 +8844 e5c6 +8846 8f4f +884c 8d73 +884d 9fa5 +8852 e5c8 +8853 8f70 +8857 8a58 +8859 e5c9 +885b 8971 +885d 8fd5 +885e e5ca +8861 8d74 +8862 e5cb +8863 88df +8868 955c +886b e5cc +8870 908a +8872 e5d3 +8875 e5d0 +8877 928f +887d e5d1 +887e e5ce +887f 8bdc +8881 e5cd +8882 e5d4 +8888 8c55 +888b 91dc +888d e5da +8892 e5d6 +8896 91b3 +8897 e5d5 +8899 e5d8 +889e e5cf +88a2 e5d9 +88a4 e5db +88ab 94ed +88ae e5d7 +88b0 e5dc +88b1 e5de +88b4 8cd1 +88b5 e5d2 +88b7 88bf +88bf e5dd +88c1 8dd9 +88c2 97f4 +88c3 e5df +88c4 e5e0 +88c5 9195 +88cf 97a0 +88d4 e5e1 +88d5 9754 +88d8 e5e2 +88d9 e5e3 +88dc 95e2 +88dd e5e4 +88df 8dbe +88e1 97a1 +88e8 e5e9 +88f2 e5ea +88f3 8fd6 +88f4 e5e8 +88f8 9787 +88f9 e5e5 +88fc e5e7 +88fd 90bb +88fe 909e +8902 e5e6 +8904 e5eb +8907 95a1 +890a e5ed +890c e5ec +8910 8a8c +8912 964a +8913 e5ee +891d e5fa +891e e5f0 +8925 e5f1 +892a e5f2 +892b e5f3 +8936 e5f7 +8938 e5f8 +893b e5f6 +8941 e5f4 +8943 e5ef +8944 e5f5 +894c e5f9 +894d e8b5 +8956 89a6 +895e e5fc +895f 8bdd +8960 e5fb +8964 e641 +8966 e640 +896a e643 +896d e642 +896f e644 +8972 8f50 +8974 e645 +8977 e646 +897e e647 +897f 90bc +8981 9776 +8983 e648 +8986 95a2 +8987 9465 +8988 e649 +898a e64a +898b 8ca9 +898f 8b4b +8993 e64b +8996 8e8b +8997 9460 +8998 e64c +899a 8a6f +89a1 e64d +89a6 e64f +89a7 9797 +89a9 e64e +89aa 9065 +89ac e650 +89af e651 +89b2 e652 +89b3 8acf +89ba e653 +89bd e654 +89bf e655 +89c0 e656 +89d2 8a70 +89da e657 +89dc e658 +89dd e659 +89e3 89f0 +89e6 9047 +89e7 e65a +89f4 e65b +89f8 e65c +8a00 8cbe +8a02 92f9 +8a03 e65d +8a08 8c76 +8a0a 9075 +8a0c e660 +8a0e 93a2 +8a10 e65f +8a13 8c50 +8a16 e65e +8a17 91f5 +8a18 8b4c +8a1b e661 +8a1d e662 +8a1f 8fd7 +8a23 8c8d +8a25 e663 +8a2a 964b +8a2d 90dd +8a31 8b96 +8a33 96f3 +8a34 9169 +8a36 e664 +8a3a 9066 +8a3b 9290 +8a3c 8fd8 +8a41 e665 +8a46 e668 +8a48 e669 +8a50 8dbc +8a51 91c0 +8a52 e667 +8a54 8fd9 +8a55 955d +8a5b e666 +8a5e 8e8c +8a60 8972 +8a62 e66d +8a63 8c77 +8a66 8e8e +8a69 8e8d +8a6b 986c +8a6c e66c +8a6d e66b +8a6e 9146 +8a70 8b6c +8a71 9862 +8a72 8a59 +8a73 8fda +8a7c e66a +8a82 e66f +8a84 e670 +8a85 e66e +8a87 8cd6 +8a89 975f +8a8c 8e8f +8a8d 9446 +8a91 e673 +8a93 90be +8a95 9261 +8a98 9755 +8a9a e676 +8a9e 8cea +8aa0 90bd +8aa1 e672 +8aa3 e677 +8aa4 8ceb +8aa5 e674 +8aa6 e675 +8aa8 e671 +8aac 90e0 +8aad 93c7 +8ab0 924e +8ab2 89db +8ab9 94ee +8abc 8b62 +8abf 92b2 +8ac2 e67a +8ac4 e678 +8ac7 926b +8acb 90bf +8acc 8ad0 +8acd e679 +8acf 907a +8ad2 97c8 +8ad6 985f +8ada e67b +8adb e687 +8adc 92b3 +8ade e686 +8ae0 e683 +8ae1 e68b +8ae2 e684 +8ae4 e680 +8ae6 92fa +8ae7 e67e +8aeb e67c +8aed 9740 +8aee 8e90 +8af1 e681 +8af3 e67d +8af7 e685 +8af8 8f94 +8afa 8cbf +8afe 91f8 +8b00 9664 +8b01 8979 +8b02 88e0 +8b04 93a3 +8b07 e689 +8b0c e688 +8b0e 93e4 +8b10 e68d +8b14 e682 +8b16 e68c +8b17 e68e +8b19 8caa +8b1a e68a +8b1b 8d75 +8b1d 8ed3 +8b20 e68f +8b21 9777 +8b26 e692 +8b28 e695 +8b2b e693 +8b2c 9554 +8b33 e690 +8b39 8bde +8b3e e694 +8b41 e696 +8b49 e69a +8b4c e697 +8b4e e699 +8b4f e698 +8b56 e69b +8b58 8eaf +8b5a e69d +8b5b e69c +8b5c 9588 +8b5f e69f +8b66 8c78 +8b6b e69e +8b6c e6a0 +8b6f e6a1 +8b70 8b63 +8b71 e3bf +8b72 8ff7 +8b74 e6a2 +8b77 8cec +8b7d e6a3 +8b80 e6a4 +8b83 8e5d +8b8a 9dcc +8b8c e6a5 +8b8e e6a6 +8b90 8f51 +8b92 e6a7 +8b93 e6a8 +8b96 e6a9 +8b99 e6aa +8b9a e6ab +8c37 924a +8c3a e6ac +8c3f e6ae +8c41 e6ad +8c46 93a4 +8c48 e6af +8c4a 964c +8c4c e6b0 +8c4e e6b1 +8c50 e6b2 +8c55 e6b3 +8c5a 93d8 +8c61 8fdb +8c62 e6b4 +8c6a 8d8b +8c6b 98ac +8c6c e6b5 +8c78 e6b6 +8c79 955e +8c7a e6b7 +8c7c e6bf +8c82 e6b8 +8c85 e6ba +8c89 e6b9 +8c8a e6bb +8c8c 9665 +8c8d e6bc +8c8e e6bd +8c94 e6be +8c98 e6c0 +8c9d 8a4c +8c9e 92e5 +8ca0 9589 +8ca1 8de0 +8ca2 8d76 +8ca7 956e +8ca8 89dd +8ca9 94cc +8caa e6c3 +8cab 8ad1 +8cac 90d3 +8cad e6c2 +8cae e6c7 +8caf 9299 +8cb0 96e1 +8cb2 e6c5 +8cb3 e6c6 +8cb4 8b4d +8cb6 e6c8 +8cb7 9483 +8cb8 91dd +8cbb 94ef +8cbc 935c +8cbd e6c4 +8cbf 9666 +8cc0 89ea +8cc1 e6ca +8cc2 9847 +8cc3 92c0 +8cc4 9864 +8cc7 8e91 +8cc8 e6c9 +8cca 91af +8ccd e6da +8cce 9147 +8cd1 93f6 +8cd3 956f +8cda e6cd +8cdb 8e5e +8cdc 8e92 +8cde 8fdc +8ce0 9485 +8ce2 8cab +8ce3 e6cc +8ce4 e6cb +8ce6 958a +8cea 8ebf +8ced 9371 +8cfa e6cf +8cfb e6d0 +8cfc 8d77 +8cfd e6ce +8d04 e6d1 +8d05 e6d2 +8d07 e6d4 +8d08 91a1 +8d0a e6d3 +8d0b 8ae4 +8d0d e6d6 +8d0f e6d5 +8d10 e6d7 +8d13 e6d9 +8d14 e6db +8d16 e6dc +8d64 90d4 +8d66 8ecd +8d67 e6dd +8d6b 8a71 +8d6d e6de +8d70 9196 +8d71 e6df +8d73 e6e0 +8d74 958b +8d77 8b4e +8d81 e6e1 +8d85 92b4 +8d8a 897a +8d99 e6e2 +8da3 8eef +8da8 9096 +8db3 91ab +8dba e6e5 +8dbe e6e4 +8dc2 e6e3 +8dcb e6eb +8dcc e6e9 +8dcf e6e6 +8dd6 e6e8 +8dda e6e7 +8ddb e6ea +8ddd 8b97 +8ddf e6ee +8de1 90d5 +8de3 e6ef +8de8 8cd7 +8dea e6ec +8deb e6ed +8def 9848 +8df3 92b5 +8df5 9148 +8dfc e6f0 +8dff e6f3 +8e08 e6f1 +8e09 e6f2 +8e0a 9778 +8e0f 93a5 +8e10 e6f6 +8e1d e6f4 +8e1e e6f5 +8e1f e6f7 +8e2a e748 +8e30 e6fa +8e34 e6fb +8e35 e6f9 +8e42 e6f8 +8e44 92fb +8e47 e740 +8e48 e744 +8e49 e741 +8e4a e6fc +8e4c e742 +8e50 e743 +8e55 e74a +8e59 e745 +8e5f 90d6 +8e60 e747 +8e63 e749 +8e64 e746 +8e72 e74c +8e74 8f52 +8e76 e74b +8e7c e74d +8e81 e74e +8e84 e751 +8e85 e750 +8e87 e74f +8e8a e753 +8e8b e752 +8e8d 96f4 +8e91 e755 +8e93 e754 +8e94 e756 +8e99 e757 +8ea1 e759 +8eaa e758 +8eab 9067 +8eac e75a +8eaf 8beb +8eb0 e75b +8eb1 e75d +8ebe e75e +8ec5 e75f +8ec6 e75c +8ec8 e760 +8eca 8ed4 +8ecb e761 +8ecc 8b4f +8ecd 8c52 +8ed2 8cac +8edb e762 +8edf 93ee +8ee2 935d +8ee3 e763 +8eeb e766 +8ef8 8eb2 +8efb e765 +8efc e764 +8efd 8c79 +8efe e767 +8f03 8a72 +8f05 e769 +8f09 8dda +8f0a e768 +8f0c e771 +8f12 e76b +8f13 e76d +8f14 95e3 +8f15 e76a +8f19 e76c +8f1b e770 +8f1c e76e +8f1d 8b50 +8f1f e76f +8f26 e772 +8f29 9479 +8f2a 97d6 +8f2f 8f53 +8f33 e773 +8f38 9741 +8f39 e775 +8f3b e774 +8f3e e778 +8f3f 9760 +8f42 e777 +8f44 8a8d +8f45 e776 +8f46 e77b +8f49 e77a +8f4c e779 +8f4d 9351 +8f4e e77c +8f57 e77d +8f5c e77e +8f5f 8d8c +8f61 8c44 +8f62 e780 +8f63 e781 +8f64 e782 +8f9b 9068 +8f9c e783 +8f9e 8eab +8f9f e784 +8fa3 e785 +8fa7 999f +8fa8 999e +8fad e786 +8fae e390 +8faf e787 +8fb0 9243 +8fb1 904a +8fb2 945f +8fb7 e788 +8fba 95d3 +8fbb 92d2 +8fbc 8d9e +8fbf 9248 +8fc2 8949 +8fc4 9698 +8fc5 9076 +8fce 8c7d +8fd1 8bdf +8fd4 95d4 +8fda e789 +8fe2 e78b +8fe5 e78a +8fe6 89de +8fe9 93f4 +8fea e78c +8feb 9497 +8fed 9352 +8fef e78d +8ff0 8f71 +8ff4 e78f +8ff7 96c0 +8ff8 e79e +8ff9 e791 +8ffa e792 +8ffd 92c7 +9000 91de +9001 9197 +9003 93a6 +9005 e790 +9006 8b74 +900b e799 +900d e796 +900e e7a3 +900f 93a7 +9010 9280 +9011 e793 +9013 92fc +9014 9372 +9015 e794 +9016 e798 +9017 9080 +9019 9487 +901a 92ca +901d 90c0 +901e e797 +901f 91ac +9020 91a2 +9021 e795 +9022 88a7 +9023 9841 +9027 e79a +902e 91df +9031 8f54 +9032 9069 +9035 e79c +9036 e79b +9038 88ed +9039 e79d +903c 954e +903e e7a5 +9041 93d9 +9042 908b +9045 9278 +9047 8bf6 +9049 e7a4 +904a 9756 +904b 895e +904d 95d5 +904e 89df +904f e79f +9050 e7a0 +9051 e7a1 +9052 e7a2 +9053 93b9 +9054 9242 +9055 88e1 +9056 e7a6 +9058 e7a7 +9059 eaa1 +905c 91bb +905e e7a8 +9060 8993 +9061 916b +9063 8cad +9065 9779 +9068 e7a9 +9069 934b +906d 9198 +906e 8ed5 +906f e7aa +9072 e7ad +9075 8f85 +9076 e7ab +9077 914a +9078 9149 +907a 88e2 +907c 97c9 +907d e7af +907f 94f0 +9080 e7b1 +9081 e7b0 +9082 e7ae +9083 e284 +9084 8ad2 +9087 e78e +9089 e7b3 +908a e7b2 +908f e7b4 +9091 9757 +90a3 93df +90a6 964d +90a8 e7b5 +90aa 8ed7 +90af e7b6 +90b1 e7b7 +90b5 e7b8 +90b8 9340 +90c1 88e8 +90ca 8d78 +90ce 9859 +90db e7bc +90e1 8c53 +90e2 e7b9 +90e4 e7ba +90e8 9594 +90ed 8a73 +90f5 9758 +90f7 8bbd +90fd 9373 +9102 e7bd +9112 e7be +9119 e7bf +912d 9341 +9130 e7c1 +9132 e7c0 +9149 93d1 +914a e7c2 +914b 8f55 +914c 8ede +914d 947a +914e 9291 +9152 8ef0 +9154 908c +9156 e7c3 +9158 e7c4 +9162 907c +9163 e7c5 +9165 e7c6 +9169 e7c7 +916a 978f +916c 8f56 +9172 e7c9 +9173 e7c8 +9175 8d79 +9177 8d93 +9178 8e5f +9182 e7cc +9187 8f86 +9189 e7cb +918b e7ca +918d 91e7 +9190 8ced +9192 90c1 +9197 94ae +919c 8f58 +91a2 e7cd +91a4 8fdd +91aa e7d0 +91ab e7ce +91af e7cf +91b4 e7d2 +91b5 e7d1 +91b8 8ff8 +91ba e7d3 +91c0 e7d4 +91c1 e7d5 +91c6 94ce +91c7 8dd1 +91c8 8edf +91c9 e7d6 +91cb e7d7 +91cc 97a2 +91cd 8f64 +91ce 96ec +91cf 97ca +91d0 e7d8 +91d1 8be0 +91d6 e7d9 +91d8 9342 +91db e7dc +91dc 8a98 +91dd 906a +91df e7da +91e1 e7db +91e3 92de +91e6 9674 +91e7 8bfa +91f5 e7de +91f6 e7df +91fc e7dd +91ff e7e1 +920d 93dd +920e 8a62 +9211 e7e5 +9214 e7e2 +9215 e7e4 +921e e7e0 +9229 e86e +922c e7e3 +9234 97e9 +9237 8cd8 +923f e7ed +9244 9353 +9245 e7e8 +9248 e7eb +9249 e7e9 +924b e7ee +9250 e7ef +9257 e7e7 +925a e7f4 +925b 8994 +925e e7e6 +9262 94ab +9264 e7ea +9266 8fde +9271 8d7a +927e 9667 +9280 8be2 +9283 8f65 +9285 93ba +9291 914c +9293 e7f2 +9295 e7ec +9296 e7f1 +9298 96c1 +929a 92b6 +929b e7f3 +929c e7f0 +92ad 914b +92b7 e7f7 +92b9 e7f6 +92cf e7f5 +92d2 964e +92e4 8f9b +92e9 e7f8 +92ea 95dd +92ed 8973 +92f2 9565 +92f3 9292 +92f8 8b98 +92fa e7fa +92fc 8d7c +9306 8e4b +930f e7f9 +9310 908d +9318 908e +9319 e840 +931a e842 +9320 8ff9 +9322 e841 +9323 e843 +9326 8bd1 +9328 9564 +932b 8ee0 +932c 9842 +932e e7fc +932f 8df6 +9332 985e +9335 e845 +933a e844 +933b e846 +9344 e7fb +934b 93e7 +934d 9374 +9354 92d5 +9356 e84b +935b 9262 +935c e847 +9360 e848 +936c 8c4c +936e e84a +9375 8cae +937c e849 +937e 8fdf +938c 8a99 +9394 e84f +9396 8dbd +9397 9199 +939a 92c8 +93a7 8a5a +93ac e84d +93ad e84e +93ae 92c1 +93b0 e84c +93b9 e850 +93c3 e856 +93c8 e859 +93d0 e858 +93d1 934c +93d6 e851 +93d7 e852 +93d8 e855 +93dd e857 +93e1 8bbe +93e4 e85a +93e5 e854 +93e8 e853 +9403 e85e +9407 e85f +9410 e860 +9413 e85d +9414 e85c +9418 8fe0 +9419 93a8 +941a e85b +9421 e864 +942b e862 +9435 e863 +9436 e861 +9438 91f6 +943a e865 +9441 e866 +9444 e868 +9451 8ad3 +9452 e867 +9453 96f8 +945a e873 +945b e869 +945e e86c +9460 e86a +9462 e86b +946a e86d +9470 e86f +9475 e870 +9477 e871 +947c e874 +947d e872 +947e e875 +947f e877 +9481 e876 +9577 92b7 +9580 96e5 +9582 e878 +9583 914d +9587 e879 +9589 95c2 +958a e87a +958b 8a4a +958f 895b +9591 8ad5 +9593 8ad4 +9594 e87b +9596 e87c +9598 e87d +9599 e87e +95a0 e880 +95a2 8ad6 +95a3 8a74 +95a4 8d7d +95a5 94b4 +95a7 e882 +95a8 e881 +95ad e883 +95b2 897b +95b9 e886 +95bb e885 +95bc e884 +95be e887 +95c3 e88a +95c7 88c5 +95ca e888 +95cc e88c +95cd e88b +95d4 e88e +95d5 e88d +95d6 e88f +95d8 93ac +95dc e890 +95e1 e891 +95e2 e893 +95e5 e892 +961c 958c +9621 e894 +9628 e895 +962a 8de3 +962e e896 +962f e897 +9632 9668 +963b 916a +963f 88a2 +9640 91c9 +9642 e898 +9644 958d +964b e89b +964c e899 +964d 8d7e +964f e89a +9650 8cc0 +965b 95c3 +965c e89d +965d e89f +965e e89e +965f e8a0 +9662 8940 +9663 9077 +9664 8f9c +9665 8ad7 +9666 e8a1 +966a 9486 +966c e8a3 +9670 8941 +9672 e8a2 +9673 92c2 +9675 97cb +9676 93a9 +9677 e89c +9678 97a4 +967a 8caf +967d 977a +9685 8bf7 +9686 97b2 +9688 8c47 +968a 91e0 +968b e440 +968d e8a4 +968e 8a4b +968f 908f +9694 8a75 +9695 e8a6 +9697 e8a7 +9698 e8a5 +9699 8c84 +969b 8ddb +969c 8fe1 +96a0 8942 +96a3 97d7 +96a7 e8a9 +96a8 e7ac +96aa e8a8 +96b0 e8ac +96b1 e8aa +96b2 e8ab +96b4 e8ad +96b6 e8ae +96b7 97ea +96b8 e8af +96b9 e8b0 +96bb 90c7 +96bc 94b9 +96c0 909d +96c1 8ae5 +96c4 9759 +96c5 89eb +96c6 8f57 +96c7 8cd9 +96c9 e8b3 +96cb e8b2 +96cc 8e93 +96cd e8b4 +96ce e8b1 +96d1 8e47 +96d5 e8b8 +96d6 e5ab +96d9 99d4 +96db 9097 +96dc e8b6 +96e2 97a3 +96e3 93ef +96e8 894a +96ea 90e1 +96eb 8eb4 +96f0 95b5 +96f2 895f +96f6 97eb +96f7 978b +96f9 e8b9 +96fb 9364 +9700 8ef9 +9704 e8ba +9706 e8bb +9707 906b +9708 e8bc +970a 97ec +970d e8b7 +970e e8be +970f e8c0 +9711 e8bf +9713 e8bd +9716 e8c1 +9719 e8c2 +971c 919a +971e 89e0 +9724 e8c3 +9727 96b6 +972a e8c4 +9730 e8c5 +9732 9849 +9738 9e50 +9739 e8c6 +973d e8c7 +973e e8c8 +9742 e8cc +9744 e8c9 +9746 e8ca +9748 e8cb +9749 e8cd +9752 90c2 +9756 96f5 +9759 90c3 +975c e8ce +975e 94f1 +9760 e8cf +9761 ea72 +9762 96ca +9764 e8d0 +9766 e8d1 +9768 e8d2 +9769 8a76 +976b e8d4 +976d 9078 +9771 e8d5 +9774 8c43 +9779 e8d6 +977a e8da +977c e8d8 +9781 e8d9 +9784 8a93 +9785 e8d7 +9786 e8db +978b e8dc +978d 88c6 +978f e8dd +9790 e8de +9798 8fe2 +979c e8df +97a0 8b66 +97a3 e8e2 +97a6 e8e1 +97a8 e8e0 +97ab e691 +97ad 95da +97b3 e8e3 +97b4 e8e4 +97c3 e8e5 +97c6 e8e6 +97c8 e8e7 +97cb e8e8 +97d3 8ad8 +97dc e8e9 +97ed e8ea +97ee 9442 +97f2 e8ec +97f3 89b9 +97f5 e8ef +97f6 e8ee +97fb 8943 +97ff 8bbf +9801 95c5 +9802 92b8 +9803 8da0 +9805 8d80 +9806 8f87 +9808 907b +980c e8f1 +980f e8f0 +9810 9761 +9811 8ae6 +9812 94d0 +9813 93da +9817 909c +9818 97cc +981a 8c7a +9821 e8f4 +9824 e8f3 +982c 966a +982d 93aa +9834 896f +9837 e8f5 +9838 e8f2 +983b 9570 +983c 978a +983d e8f6 +9846 e8f7 +984b e8f9 +984c 91e8 +984d 8a7a +984e 8a7b +984f e8f8 +9854 8ae7 +9855 8cb0 +9858 8ae8 +985b 935e +985e 97de +9867 8cda +986b e8fa +986f e8fb +9870 e8fc +9871 e940 +9873 e942 +9874 e941 +98a8 9597 +98aa e943 +98af e944 +98b1 e945 +98b6 e946 +98c3 e948 +98c4 e947 +98c6 e949 +98db 94f2 +98dc e3ca +98df 9048 +98e2 8b51 +98e9 e94a +98eb e94b +98ed 99aa +98ee 9f5a +98ef 94d1 +98f2 88f9 +98f4 88b9 +98fc 8e94 +98fd 964f +98fe 8ffc +9903 e94c +9905 96dd +9909 e94d +990a 977b +990c 8961 +9910 8e60 +9912 e94e +9913 89ec +9914 e94f +9918 e950 +991d e952 +991e e953 +9920 e955 +9921 e951 +9924 e954 +9928 8ad9 +992c e956 +992e e957 +993d e958 +993e e959 +9942 e95a +9945 e95c +9949 e95b +994b e95e +994c e961 +9950 e95d +9951 e95f +9952 e960 +9955 e962 +9957 8bc0 +9996 8ef1 +9997 e963 +9998 e964 +9999 8d81 +99a5 e965 +99a8 8a5d +99ac 946e +99ad e966 +99ae e967 +99b3 9279 +99b4 93e9 +99bc e968 +99c1 949d +99c4 91ca +99c5 8977 +99c6 8bec +99c8 8bed +99d0 9293 +99d1 e96d +99d2 8bee +99d5 89ed +99d8 e96c +99db e96a +99dd e96b +99df e969 +99e2 e977 +99ed e96e +99ee e96f +99f1 e970 +99f2 e971 +99f8 e973 +99fb e972 +99ff 8f78 +9a01 e974 +9a05 e976 +9a0e 8b52 +9a0f e975 +9a12 919b +9a13 8cb1 +9a19 e978 +9a28 91cb +9a2b e979 +9a30 93ab +9a37 e97a +9a3e e980 +9a40 e97d +9a42 e97c +9a43 e97e +9a45 e97b +9a4d e982 +9a55 e981 +9a57 e984 +9a5a 8bc1 +9a5b e983 +9a5f e985 +9a62 e986 +9a64 e988 +9a65 e987 +9a69 e989 +9a6a e98b +9a6b e98a +9aa8 8d9c +9aad e98c +9ab0 e98d +9ab8 8a5b +9abc e98e +9ac0 e98f +9ac4 9091 +9acf e990 +9ad1 e991 +9ad3 e992 +9ad4 e993 +9ad8 8d82 +9ade e994 +9adf e995 +9ae2 e996 +9ae3 e997 +9ae6 e998 +9aea 94af +9aeb e99a +9aed 9545 +9aee e99b +9aef e999 +9af1 e99d +9af4 e99c +9af7 e99e +9afb e99f +9b06 e9a0 +9b18 e9a1 +9b1a e9a2 +9b1f e9a3 +9b22 e9a4 +9b23 e9a5 +9b25 e9a6 +9b27 e9a7 +9b28 e9a8 +9b29 e9a9 +9b2a e9aa +9b2e e9ab +9b2f e9ac +9b31 9f54 +9b32 e9ad +9b3b e2f6 +9b3c 8b53 +9b41 8a40 +9b42 8db0 +9b43 e9af +9b44 e9ae +9b45 96a3 +9b4d e9b1 +9b4e e9b2 +9b4f e9b0 +9b51 e9b3 +9b54 9682 +9b58 e9b4 +9b5a 8b9b +9b6f 9844 +9b74 e9b5 +9b83 e9b7 +9b8e 88bc +9b91 e9b8 +9b92 95a9 +9b93 e9b6 +9b96 e9b9 +9b97 e9ba +9b9f e9bb +9ba0 e9bc +9ba8 e9bd +9baa 968e +9bab 8e4c +9bad 8df8 +9bae 914e +9bb4 e9be +9bb9 e9c1 +9bc0 e9bf +9bc6 e9c2 +9bc9 8cef +9bca e9c0 +9bcf e9c3 +9bd1 e9c4 +9bd2 e9c5 +9bd4 e9c9 +9bd6 8e49 +9bdb 91e2 +9be1 e9ca +9be2 e9c7 +9be3 e9c6 +9be4 e9c8 +9be8 8c7e +9bf0 e9ce +9bf1 e9cd +9bf2 e9cc +9bf5 88b1 +9c04 e9d8 +9c06 e9d4 +9c08 e9d5 +9c09 e9d1 +9c0a e9d7 +9c0c e9d3 +9c0d 8a82 +9c10 986b +9c12 e9d6 +9c13 e9d2 +9c14 e9d0 +9c15 e9cf +9c1b e9da +9c21 e9dd +9c24 e9dc +9c25 e9db +9c2d 9568 +9c2e e9d9 +9c2f 88f1 +9c30 e9de +9c32 e9e0 +9c39 8a8f +9c3a e9cb +9c3b 8956 +9c3e e9e2 +9c46 e9e1 +9c47 e9df +9c48 924c +9c52 9690 +9c57 97d8 +9c5a e9e3 +9c60 e9e4 +9c67 e9e5 +9c76 e9e6 +9c78 e9e7 +9ce5 92b9 +9ce7 e9e8 +9ce9 94b5 +9ceb e9ed +9cec e9e9 +9cf0 e9ea +9cf3 9650 +9cf4 96c2 +9cf6 93ce +9d03 e9ee +9d06 e9ef +9d07 93bc +9d08 e9ec +9d09 e9eb +9d0e 89a8 +9d12 e9f7 +9d15 e9f6 +9d1b 8995 +9d1f e9f4 +9d23 e9f3 +9d26 e9f1 +9d28 8a9b +9d2a e9f0 +9d2b 8eb0 +9d2c 89a7 +9d3b 8d83 +9d3e e9fa +9d3f e9f9 +9d41 e9f8 +9d44 e9f5 +9d46 e9fb +9d48 e9fc +9d50 ea44 +9d51 ea43 +9d59 ea45 +9d5c 894c +9d5d ea40 +9d5e ea41 +9d60 8d94 +9d61 96b7 +9d64 ea42 +9d6c 9651 +9d6f ea4a +9d72 ea46 +9d7a ea4b +9d87 ea48 +9d89 ea47 +9d8f 8c7b +9d9a ea4c +9da4 ea4d +9da9 ea4e +9dab ea49 +9daf e9f2 +9db2 ea4f +9db4 92df +9db8 ea53 +9dba ea54 +9dbb ea52 +9dc1 ea51 +9dc2 ea57 +9dc4 ea50 +9dc6 ea55 +9dcf ea56 +9dd3 ea59 +9dd9 ea58 +9de6 ea5b +9ded ea5c +9def ea5d +9df2 9868 +9df8 ea5a +9df9 91e9 +9dfa 8deb +9dfd ea5e +9e1a ea5f +9e1b ea60 +9e1e ea61 +9e75 ea62 +9e78 8cb2 +9e79 ea63 +9e7d ea64 +9e7f 8ead +9e81 ea65 +9e88 ea66 +9e8b ea67 +9e8c ea68 +9e91 ea6b +9e92 ea69 +9e93 985b +9e95 ea6a +9e97 97ed +9e9d ea6c +9e9f 97d9 +9ea5 ea6d +9ea6 949e +9ea9 ea6e +9eaa ea70 +9ead ea71 +9eb8 ea6f +9eb9 8d8d +9eba 96cb +9ebb 9683 +9ebc 9bf5 +9ebe 9f80 +9ebf 969b +9ec4 89a9 +9ecc ea73 +9ecd 8b6f +9ece ea74 +9ecf ea75 +9ed0 ea76 +9ed2 8d95 +9ed4 ea77 +9ed8 e0d2 +9ed9 96d9 +9edb 91e1 +9edc ea78 +9edd ea7a +9ede ea79 +9ee0 ea7b +9ee5 ea7c +9ee8 ea7d +9eef ea7e +9ef4 ea80 +9ef6 ea81 +9ef7 ea82 +9ef9 ea83 +9efb ea84 +9efc ea85 +9efd ea86 +9f07 ea87 +9f08 ea88 +9f0e 9343 +9f13 8cdb +9f15 ea8a +9f20 916c +9f21 ea8b +9f2c ea8c +9f3b 9540 +9f3e ea8d +9f4a ea8e +9f4b e256 +9f4e e6d8 +9f4f e8eb +9f52 ea8f +9f54 ea90 +9f5f ea92 +9f60 ea93 +9f61 ea94 +9f62 97ee +9f63 ea91 +9f66 ea95 +9f67 ea96 +9f6a ea98 +9f6c ea97 +9f72 ea9a +9f76 ea9b +9f77 ea99 +9f8d 97b4 +9f95 ea9c +9f9c ea9d +9f9d e273 +9fa0 ea9e +ff01 8149 +ff03 8194 +ff04 8190 +ff05 8193 +ff06 8195 +ff08 8169 +ff09 816a +ff0a 8196 +ff0b 817b +ff0c 8143 +ff0e 8144 +ff0f 815e +ff10 824f +ff11 8250 +ff12 8251 +ff13 8252 +ff14 8253 +ff15 8254 +ff16 8255 +ff17 8256 +ff18 8257 +ff19 8258 +ff1a 8146 +ff1b 8147 +ff1c 8183 +ff1d 8181 +ff1e 8184 +ff1f 8148 +ff20 8197 +ff21 8260 +ff22 8261 +ff23 8262 +ff24 8263 +ff25 8264 +ff26 8265 +ff27 8266 +ff28 8267 +ff29 8268 +ff2a 8269 +ff2b 826a +ff2c 826b +ff2d 826c +ff2e 826d +ff2f 826e +ff30 826f +ff31 8270 +ff32 8271 +ff33 8272 +ff34 8273 +ff35 8274 +ff36 8275 +ff37 8276 +ff38 8277 +ff39 8278 +ff3a 8279 +ff3b 816d +ff3c 815f +ff3d 816e +ff3e 814f +ff3f 8151 +ff40 814d +ff41 8281 +ff42 8282 +ff43 8283 +ff44 8284 +ff45 8285 +ff46 8286 +ff47 8287 +ff48 8288 +ff49 8289 +ff4a 828a +ff4b 828b +ff4c 828c +ff4d 828d +ff4e 828e +ff4f 828f +ff50 8290 +ff51 8291 +ff52 8292 +ff53 8293 +ff54 8294 +ff55 8295 +ff56 8296 +ff57 8297 +ff58 8298 +ff59 8299 +ff5a 829a +ff5b 816f +ff5c 8162 +ff5d 8170 +ff61 a1 +ff62 a2 +ff63 a3 +ff64 a4 +ff65 a5 +ff66 a6 +ff67 a7 +ff68 a8 +ff69 a9 +ff6a aa +ff6b ab +ff6c ac +ff6d ad +ff6e ae +ff6f af +ff70 b0 +ff71 b1 +ff72 b2 +ff73 b3 +ff74 b4 +ff75 b5 +ff76 b6 +ff77 b7 +ff78 b8 +ff79 b9 +ff7a ba +ff7b bb +ff7c bc +ff7d bd +ff7e be +ff7f bf +ff80 c0 +ff81 c1 +ff82 c2 +ff83 c3 +ff84 c4 +ff85 c5 +ff86 c6 +ff87 c7 +ff88 c8 +ff89 c9 +ff8a ca +ff8b cb +ff8c cc +ff8d cd +ff8e ce +ff8f cf +ff90 d0 +ff91 d1 +ff92 d2 +ff93 d3 +ff94 d4 +ff95 d5 +ff96 d6 +ff97 d7 +ff98 d8 +ff99 d9 +ff9a da +ff9b db +ff9c dc +ff9d dd +ff9e de +ff9f df +ffe3 8150 +ffe5 818f diff --git a/jdk/test/java/nio/charset/coders/ref.windows-31j b/jdk/test/java/nio/charset/coders/ref.windows-31j new file mode 100644 index 0000000000..0766c319a8 --- /dev/null +++ b/jdk/test/java/nio/charset/coders/ref.windows-31j @@ -0,0 +1,9409 @@ +0 00 +1 01 +2 02 +3 03 +4 04 +5 05 +6 06 +7 07 +8 08 +9 09 +a 0a +b 0b +c 0c +d 0d +e 0e +f 0f +10 10 +11 11 +12 12 +13 13 +14 14 +15 15 +16 16 +17 17 +18 18 +19 19 +1a 1a +1b 1b +1c 1c +1d 1d +1e 1e +1f 1f +20 20 +21 21 +22 22 +23 23 +24 24 +25 25 +26 26 +27 27 +28 28 +29 29 +2a 2a +2b 2b +2c 2c +2d 2d +2e 2e +2f 2f +30 30 +31 31 +32 32 +33 33 +34 34 +35 35 +36 36 +37 37 +38 38 +39 39 +3a 3a +3b 3b +3c 3c +3d 3d +3e 3e +3f 3f +40 40 +41 41 +42 42 +43 43 +44 44 +45 45 +46 46 +47 47 +48 48 +49 49 +4a 4a +4b 4b +4c 4c +4d 4d +4e 4e +4f 4f +50 50 +51 51 +52 52 +53 53 +54 54 +55 55 +56 56 +57 57 +58 58 +59 59 +5a 5a +5b 5b +5c 5c +5d 5d +5e 5e +5f 5f +60 60 +61 61 +62 62 +63 63 +64 64 +65 65 +66 66 +67 67 +68 68 +69 69 +6a 6a +6b 6b +6c 6c +6d 6d +6e 6e +6f 6f +70 70 +71 71 +72 72 +73 73 +74 74 +75 75 +76 76 +77 77 +78 78 +79 79 +7a 7a +7b 7b +7c 7c +7d 7d +7e 7e +7f 7f +#a2 8191 +#a3 8192 +#a5 5c +a7 8198 +a8 814e +#ab 81e1 +#ac 81ca +#af 8150 +b0 818b +b1 817d +b4 814c +#b5 83ca +b6 81f7 +#b7 8145 +#b8 8143 +#bb 81e2 +d7 817e +f7 8180 +391 839f +392 83a0 +393 83a1 +394 83a2 +395 83a3 +396 83a4 +397 83a5 +398 83a6 +399 83a7 +39a 83a8 +39b 83a9 +39c 83aa +39d 83ab +39e 83ac +39f 83ad +3a0 83ae +3a1 83af +3a3 83b0 +3a4 83b1 +3a5 83b2 +3a6 83b3 +3a7 83b4 +3a8 83b5 +3a9 83b6 +3b1 83bf +3b2 83c0 +3b3 83c1 +3b4 83c2 +3b5 83c3 +3b6 83c4 +3b7 83c5 +3b8 83c6 +3b9 83c7 +3ba 83c8 +3bb 83c9 +3bc 83ca +3bd 83cb +3be 83cc +3bf 83cd +3c0 83ce +3c1 83cf +3c3 83d0 +3c4 83d1 +3c5 83d2 +3c6 83d3 +3c7 83d4 +3c8 83d5 +3c9 83d6 +401 8446 +410 8440 +411 8441 +412 8442 +413 8443 +414 8444 +415 8445 +416 8447 +417 8448 +418 8449 +419 844a +41a 844b +41b 844c +41c 844d +41d 844e +41e 844f +41f 8450 +420 8451 +421 8452 +422 8453 +423 8454 +424 8455 +425 8456 +426 8457 +427 8458 +428 8459 +429 845a +42a 845b +42b 845c +42c 845d +42d 845e +42e 845f +42f 8460 +430 8470 +431 8471 +432 8472 +433 8473 +434 8474 +435 8475 +436 8477 +437 8478 +438 8479 +439 847a +43a 847b +43b 847c +43c 847d +43d 847e +43e 8480 +43f 8481 +440 8482 +441 8483 +442 8484 +443 8485 +444 8486 +445 8487 +446 8488 +447 8489 +448 848a +449 848b +44a 848c +44b 848d +44c 848e +44d 848f +44e 8490 +44f 8491 +451 8476 +2010 815d +2015 815c +2018 8165 +2019 8166 +201c 8167 +201d 8168 +2020 81f5 +2021 81f6 +2025 8164 +2026 8163 +2030 81f1 +2032 818c +2033 818d +203b 81a6 +#203e 7e +2103 818e +2116 8782 +2121 8784 +212b 81f0 +2160 8754 +2161 8755 +2162 8756 +2163 8757 +2164 8758 +2165 8759 +2166 875a +2167 875b +2168 875c +2169 875d +2170 fa40 +2171 fa41 +2172 fa42 +2173 fa43 +2174 fa44 +2175 fa45 +2176 fa46 +2177 fa47 +2178 fa48 +2179 fa49 +2190 81a9 +2191 81aa +2192 81a8 +2193 81ab +21d2 81cb +21d4 81cc +2200 81cd +2202 81dd +2203 81ce +2207 81de +2208 81b8 +220b 81b9 +2211 8794 +221a 81e3 +221d 81e5 +221e 8187 +221f 8798 +2220 81da +2225 8161 +2227 81c8 +2228 81c9 +2229 81bf +222a 81be +222b 81e7 +222c 81e8 +222e 8793 +2234 8188 +2235 81e6 +223d 81e4 +2252 81e0 +2260 8182 +2261 81df +2266 8185 +2267 8186 +226a 81e1 +226b 81e2 +2282 81bc +2283 81bd +2286 81ba +2287 81bb +22a5 81db +22bf 8799 +2312 81dc +2460 8740 +2461 8741 +2462 8742 +2463 8743 +2464 8744 +2465 8745 +2466 8746 +2467 8747 +2468 8748 +2469 8749 +246a 874a +246b 874b +246c 874c +246d 874d +246e 874e +246f 874f +2470 8750 +2471 8751 +2472 8752 +2473 8753 +2500 849f +2501 84aa +2502 84a0 +2503 84ab +250c 84a1 +250f 84ac +2510 84a2 +2513 84ad +2514 84a4 +2517 84af +2518 84a3 +251b 84ae +251c 84a5 +251d 84ba +2520 84b5 +2523 84b0 +2524 84a7 +2525 84bc +2528 84b7 +252b 84b2 +252c 84a6 +252f 84b6 +2530 84bb +2533 84b1 +2534 84a8 +2537 84b8 +2538 84bd +253b 84b3 +253c 84a9 +253f 84b9 +2542 84be +254b 84b4 +25a0 81a1 +25a1 81a0 +25b2 81a3 +25b3 81a2 +25bc 81a5 +25bd 81a4 +25c6 819f +25c7 819e +25cb 819b +25ce 819d +25cf 819c +25ef 81fc +2605 819a +2606 8199 +2640 818a +2642 8189 +266a 81f4 +266d 81f3 +266f 81f2 +3000 8140 +3001 8141 +3002 8142 +3003 8156 +3005 8158 +3006 8159 +3007 815a +3008 8171 +3009 8172 +300a 8173 +300b 8174 +300c 8175 +300d 8176 +300e 8177 +300f 8178 +3010 8179 +3011 817a +3012 81a7 +3013 81ac +3014 816b +3015 816c +301d 8780 +301f 8781 +3041 829f +3042 82a0 +3043 82a1 +3044 82a2 +3045 82a3 +3046 82a4 +3047 82a5 +3048 82a6 +3049 82a7 +304a 82a8 +304b 82a9 +304c 82aa +304d 82ab +304e 82ac +304f 82ad +3050 82ae +3051 82af +3052 82b0 +3053 82b1 +3054 82b2 +3055 82b3 +3056 82b4 +3057 82b5 +3058 82b6 +3059 82b7 +305a 82b8 +305b 82b9 +305c 82ba +305d 82bb +305e 82bc +305f 82bd +3060 82be +3061 82bf +3062 82c0 +3063 82c1 +3064 82c2 +3065 82c3 +3066 82c4 +3067 82c5 +3068 82c6 +3069 82c7 +306a 82c8 +306b 82c9 +306c 82ca +306d 82cb +306e 82cc +306f 82cd +3070 82ce +3071 82cf +3072 82d0 +3073 82d1 +3074 82d2 +3075 82d3 +3076 82d4 +3077 82d5 +3078 82d6 +3079 82d7 +307a 82d8 +307b 82d9 +307c 82da +307d 82db +307e 82dc +307f 82dd +3080 82de +3081 82df +3082 82e0 +3083 82e1 +3084 82e2 +3085 82e3 +3086 82e4 +3087 82e5 +3088 82e6 +3089 82e7 +308a 82e8 +308b 82e9 +308c 82ea +308d 82eb +308e 82ec +308f 82ed +3090 82ee +3091 82ef +3092 82f0 +3093 82f1 +#3094 8394 +309b 814a +309c 814b +309d 8154 +309e 8155 +30a1 8340 +30a2 8341 +30a3 8342 +30a4 8343 +30a5 8344 +30a6 8345 +30a7 8346 +30a8 8347 +30a9 8348 +30aa 8349 +30ab 834a +30ac 834b +30ad 834c +30ae 834d +30af 834e +30b0 834f +30b1 8350 +30b2 8351 +30b3 8352 +30b4 8353 +30b5 8354 +30b6 8355 +30b7 8356 +30b8 8357 +30b9 8358 +30ba 8359 +30bb 835a +30bc 835b +30bd 835c +30be 835d +30bf 835e +30c0 835f +30c1 8360 +30c2 8361 +30c3 8362 +30c4 8363 +30c5 8364 +30c6 8365 +30c7 8366 +30c8 8367 +30c9 8368 +30ca 8369 +30cb 836a +30cc 836b +30cd 836c +30ce 836d +30cf 836e +30d0 836f +30d1 8370 +30d2 8371 +30d3 8372 +30d4 8373 +30d5 8374 +30d6 8375 +30d7 8376 +30d8 8377 +30d9 8378 +30da 8379 +30db 837a +30dc 837b +30dd 837c +30de 837d +30df 837e +30e0 8380 +30e1 8381 +30e2 8382 +30e3 8383 +30e4 8384 +30e5 8385 +30e6 8386 +30e7 8387 +30e8 8388 +30e9 8389 +30ea 838a +30eb 838b +30ec 838c +30ed 838d +30ee 838e +30ef 838f +30f0 8390 +30f1 8391 +30f2 8392 +30f3 8393 +30f4 8394 +30f5 8395 +30f6 8396 +30fb 8145 +30fc 815b +30fd 8152 +30fe 8153 +3231 878a +3232 878b +3239 878c +32a4 8785 +32a5 8786 +32a6 8787 +32a7 8788 +32a8 8789 +3303 8765 +330d 8769 +3314 8760 +3318 8763 +3322 8761 +3323 876b +3326 876a +3327 8764 +332b 876c +3336 8766 +333b 876e +3349 875f +334a 876d +334d 8762 +3351 8767 +3357 8768 +337b 877e +337c 878f +337d 878e +337e 878d +338e 8772 +338f 8773 +339c 876f +339d 8770 +339e 8771 +33a1 8775 +33c4 8774 +33cd 8783 +4e00 88ea +4e01 929a +4e03 8eb5 +4e07 969c +4e08 8fe4 +4e09 8e4f +4e0a 8fe3 +4e0b 89ba +4e0d 9573 +4e0e 975e +4e10 98a0 +4e11 894e +4e14 8a8e +4e15 98a1 +4e16 90a2 +4e17 99c0 +4e18 8b75 +4e19 95b8 +4e1e 8fe5 +4e21 97bc +4e26 95c0 +4e28 fa68 +4e2a 98a2 +4e2d 9286 +4e31 98a3 +4e32 8bf8 +4e36 98a4 +4e38 8adb +4e39 924f +4e3b 8ee5 +4e3c 98a5 +4e3f 98a6 +4e42 98a7 +4e43 9454 +4e45 8b76 +4e4b 9456 +4e4d 93e1 +4e4e 8cc1 +4e4f 9652 +4e55 e568 +4e56 98a8 +4e57 8fe6 +4e58 98a9 +4e59 89b3 +4e5d 8be3 +4e5e 8cee +4e5f 96e7 +4e62 9ba4 +4e71 9790 +4e73 93fb +4e7e 8aa3 +4e80 8b54 +4e82 98aa +4e85 98ab +4e86 97b9 +4e88 975c +4e89 9188 +4e8a 98ad +4e8b 8e96 +4e8c 93f1 +4e8e 98b0 +4e91 895d +4e92 8cdd +4e94 8cdc +4e95 88e4 +4e98 986a +4e99 9869 +4e9b 8db1 +4e9c 889f +4e9e 98b1 +4e9f 98b2 +4ea0 98b3 +4ea1 9653 +4ea2 98b4 +4ea4 8cf0 +4ea5 88e5 +4ea6 9692 +4ea8 8b9c +4eab 8b9d +4eac 8b9e +4ead 92e0 +4eae 97ba +4eb0 98b5 +4eb3 98b6 +4eb6 98b7 +4eba 906c +4ec0 8f59 +4ec1 906d +4ec2 98bc +4ec4 98ba +4ec6 98bb +4ec7 8b77 +4eca 8da1 +4ecb 89ee +4ecd 98b9 +4ece 98b8 +4ecf 95a7 +4ed4 8e65 +4ed5 8e64 +4ed6 91bc +4ed7 98bd +4ed8 9574 +4ed9 90e5 +4edd 8157 +4ede 98be +4edf 98c0 +4ee1 fa69 +4ee3 91e3 +4ee4 97df +4ee5 88c8 +4eed 98bf +4eee 89bc +4ef0 8bc2 +4ef2 9287 +4ef6 8c8f +4ef7 98c1 +4efb 9443 +4efc fa6a +4f00 fa6b +4f01 8ae9 +4f03 fa6c +4f09 98c2 +4f0a 88c9 +4f0d 8cde +4f0e 8aea +4f0f 959a +4f10 94b0 +4f11 8b78 +4f1a 89ef +4f1c 98e5 +4f1d 9360 +4f2f 948c +4f30 98c4 +4f34 94ba +4f36 97e0 +4f38 904c +4f39 fa6d +4f3a 8e66 +4f3c 8e97 +4f3d 89be +4f43 92cf +4f46 9241 +4f47 98c8 +4f4d 88ca +4f4e 92e1 +4f4f 8f5a +4f50 8db2 +4f51 9743 +4f53 91cc +4f55 89bd +4f56 fa6e +4f57 98c7 +4f59 975d +4f5a 98c3 +4f5b 98c5 +4f5c 8dec +4f5d 98c6 +4f5e 9b43 +4f69 98ce +4f6f 98d1 +4f70 98cf +4f73 89c0 +4f75 95b9 +4f76 98c9 +4f7b 98cd +4f7c 8cf1 +4f7f 8e67 +4f83 8aa4 +4f86 98d2 +4f88 98ca +4f8a fa70 +4f8b 97e1 +4f8d 8e98 +4f8f 98cb +4f91 98d0 +4f92 fa6f +4f94 fa72 +4f96 98d3 +4f98 98cc +4f9a fa71 +4f9b 8b9f +4f9d 88cb +4fa0 8ba0 +4fa1 89bf +4fab 9b44 +4fad 9699 +4fae 958e +4faf 8cf2 +4fb5 904e +4fb6 97b5 +4fbf 95d6 +4fc2 8c57 +4fc3 91a3 +4fc4 89e2 +4fc9 fa61 +4fca 8f72 +4fcd fa73 +4fce 98d7 +4fd0 98dc +4fd1 98da +4fd4 98d5 +4fd7 91ad +4fd8 98d8 +4fda 98db +4fdb 98d9 +4fdd 95db +4fdf 98d6 +4fe1 904d +4fe3 9693 +4fe4 98dd +4fe5 98de +4fee 8f43 +4fef 98eb +4ff3 946f +4ff5 9555 +4ff6 98e6 +4ff8 95ee +4ffa 89b4 +4ffe 98ea +4fff fa76 +5005 98e4 +5006 98ed +5009 9171 +500b 8cc2 +500d 947b +500f e0c5 +5011 98ec +5012 937c +5014 98e1 +5016 8cf4 +5019 8cf3 +501a 98df +501e fa77 +501f 8ed8 +5021 98e7 +5022 fa75 +5023 95ed +5024 926c +5025 98e3 +5026 8c91 +5028 98e0 +5029 98e8 +502a 98e2 +502b 97cf +502c 98e9 +502d 9860 +5036 8be4 +5039 8c90 +5040 fa74 +5042 fa7a +5043 98ee +5046 fa78 +5047 98ef +5048 98f3 +5049 88cc +504f 95ce +5050 98f2 +5055 98f1 +5056 98f5 +505a 98f4 +505c 92e2 +5065 8c92 +506c 98f6 +5070 fa79 +5072 8ec3 +5074 91a4 +5075 92e3 +5076 8bf4 +5078 98f7 +507d 8b55 +5080 98f8 +5085 98fa +508d 9654 +5091 8c86 +5094 fa7b +5098 8e50 +5099 94f5 +509a 98f9 +50ac 8dc3 +50ad 9762 +50b2 98fc +50b3 9942 +50b4 98fb +50b5 8dc2 +50b7 8f9d +50be 8c58 +50c2 9943 +50c5 8bcd +50c9 9940 +50ca 9941 +50cd 93ad +50cf 919c +50d1 8ba1 +50d5 966c +50d6 9944 +50d8 fa7d +50da 97bb +50de 9945 +50e3 9948 +50e5 9946 +50e7 916d +50ed 9947 +50ee 9949 +50f4 fa7c +50f5 994b +50f9 994a +50fb 95c6 +5100 8b56 +5101 994d +5102 994e +5104 89ad +5109 994c +5112 8ef2 +5114 9951 +5115 9950 +5116 994f +5118 98d4 +511a 9952 +511f 8f9e +5121 9953 +512a 9744 +5132 96d7 +5137 9955 +513a 9954 +513b 9957 +513c 9956 +513f 9958 +5140 9959 +5141 88f2 +5143 8cb3 +5144 8c5a +5145 8f5b +5146 929b +5147 8ba2 +5148 90e6 +5149 8cf5 +514a fa7e +514b 8d8e +514c 995b +514d 96c6 +514e 9365 +5150 8e99 +5152 995a +5154 995c +515a 937d +515c 8a95 +5162 995d +5164 fa80 +5165 93fc +5168 9153 +5169 995f +516a 9960 +516b 94aa +516c 8cf6 +516d 985a +516e 9961 +5171 8ba4 +5175 95ba +5176 91b4 +5177 8bef +5178 9354 +517c 8c93 +5180 9962 +5182 9963 +5185 93e0 +5186 897e +5189 9966 +518a 8dfb +518c 9965 +518d 8dc4 +518f 9967 +5190 e3ec +5191 9968 +5192 9660 +5193 9969 +5195 996a +5196 996b +5197 8fe7 +5199 8eca +519d fa81 +51a0 8aa5 +51a2 996e +51a4 996c +51a5 96bb +51a6 996d +51a8 9579 +51a9 996f +51aa 9970 +51ab 9971 +51ac 937e +51b0 9975 +51b1 9973 +51b2 9974 +51b3 9972 +51b4 8de1 +51b5 9976 +51b6 96e8 +51b7 97e2 +51bd 9977 +51be fa82 +51c4 90a6 +51c5 9978 +51c6 8f79 +51c9 9979 +51cb 929c +51cc 97bd +51cd 9380 +51d6 99c3 +51db 997a +51dc eaa3 +51dd 8bc3 +51e0 997b +51e1 967d +51e6 8f88 +51e7 91fa +51e9 997d +51ea 93e2 +51ec fa83 +51ed 997e +51f0 9980 +51f1 8a4d +51f5 9981 +51f6 8ba5 +51f8 93ca +51f9 899a +51fa 8f6f +51fd 949f +51fe 9982 +5200 9381 +5203 906e +5204 9983 +5206 95aa +5207 90d8 +5208 8aa0 +520a 8aa7 +520b 9984 +520e 9986 +5211 8c59 +5214 9985 +5215 fa84 +5217 97f1 +521d 8f89 +5224 94bb +5225 95ca +5227 9987 +5229 9798 +522a 9988 +522e 9989 +5230 939e +5233 998a +5236 90a7 +5237 8dfc +5238 8c94 +5239 998b +523a 8e68 +523b 8d8f +5243 92e4 +5244 998d +5247 91a5 +524a 8ded +524b 998e +524c 998f +524d 914f +524f 998c +5254 9991 +5256 9655 +525b 8d84 +525e 9990 +5263 8c95 +5264 8ddc +5265 948d +5269 9994 +526a 9992 +526f 959b +5270 8fe8 +5271 999b +5272 8a84 +5273 9995 +5274 9993 +5275 916e +527d 9997 +527f 9996 +5283 8a63 +5287 8c80 +5288 999c +5289 97ab +528d 9998 +5291 999d +5292 999a +5294 9999 +529b 97cd +529c fa85 +529f 8cf7 +52a0 89c1 +52a3 97f2 +52a6 fa86 +52a9 8f95 +52aa 9377 +52ab 8d85 +52ac 99a0 +52ad 99a1 +52af fb77 +52b1 97e3 +52b4 984a +52b5 99a3 +52b9 8cf8 +52bc 99a2 +52be 8a4e +52c0 fa87 +52c1 99a4 +52c3 9675 +52c5 92ba +52c7 9745 +52c9 95d7 +52cd 99a5 +52d2 e8d3 +52d5 93ae +52d7 99a6 +52d8 8aa8 +52d9 96b1 +52db fa88 +52dd 8f9f +52de 99a7 +52df 95e5 +52e0 99ab +52e2 90a8 +52e3 99a8 +52e4 8bce +52e6 99a9 +52e7 8aa9 +52f2 8c4d +52f3 99ac +52f5 99ad +52f8 99ae +52f9 99af +52fa 8ed9 +52fe 8cf9 +52ff 96dc +5300 fa89 +5301 96e6 +5302 93f5 +5305 95ef +5306 99b0 +5307 fa8a +5308 99b1 +530d 99b3 +530f 99b5 +5310 99b4 +5315 99b6 +5316 89bb +5317 966b +5319 8dfa +531a 99b7 +531d 9178 +5320 8fa0 +5321 8ba7 +5323 99b8 +5324 fa8b +532a 94d9 +532f 99b9 +5331 99ba +5333 99bb +5338 99bc +5339 9543 +533a 8be6 +533b 88e3 +533f 93bd +5340 99bd +5341 8f5c +5343 90e7 +5345 99bf +5346 99be +5347 8fa1 +5348 8cdf +5349 99c1 +534a 94bc +534d 99c2 +5351 94da +5352 91b2 +5353 91ec +5354 8ba6 +5357 93ec +5358 9250 +535a 948e +535c 966d +535e 99c4 +5360 90e8 +5366 8c54 +5369 99c5 +536e 99c6 +536f 894b +5370 88f3 +5371 8aeb +5372 fa8c +5373 91a6 +5374 8b70 +5375 9791 +5377 99c9 +5378 89b5 +537b 99c8 +537f 8ba8 +5382 99ca +5384 96ef +5393 fa8d +5396 99cb +5398 97d0 +539a 8cfa +539f 8cb4 +53a0 99cc +53a5 99ce +53a6 99cd +53a8 907e +53a9 8958 +53ad 897d +53ae 99cf +53b0 99d0 +53b2 fa8e +53b3 8cb5 +53b6 99d1 +53bb 8b8e +53c2 8e51 +53c3 99d2 +53c8 9694 +53c9 8db3 +53ca 8b79 +53cb 9746 +53cc 916f +53cd 94bd +53ce 8efb +53d4 8f66 +53d6 8ee6 +53d7 8ef3 +53d9 8f96 +53db 94be +53dd fa8f +53df 99d5 +53e1 8962 +53e2 9170 +53e3 8cfb +53e4 8cc3 +53e5 8be5 +53e8 99d9 +53e9 9240 +53ea 91fc +53eb 8ba9 +53ec 8fa2 +53ed 99da +53ee 99d8 +53ef 89c2 +53f0 91e4 +53f1 8eb6 +53f2 8e6a +53f3 8945 +53f6 8a90 +53f7 8d86 +53f8 8e69 +53fa 99db +5401 99dc +5403 8b68 +5404 8a65 +5408 8d87 +5409 8b67 +540a 92dd +540b 8944 +540c 93af +540d 96bc +540e 8d40 +540f 9799 +5410 9366 +5411 8cfc +541b 8c4e +541d 99e5 +541f 8be1 +5420 9669 +5426 94db +5429 99e4 +542b 8adc +542c 99df +542d 99e0 +542e 99e2 +5436 99e3 +5438 8b7a +5439 9081 +543b 95ab +543c 99e1 +543d 99dd +543e 8ce1 +5440 99de +5442 9843 +5446 95f0 +5448 92e6 +5449 8ce0 +544a 8d90 +544e 99e6 +5451 93db +545f 99ea +5468 8efc +546a 8ef4 +5470 99ed +5471 99eb +5473 96a1 +5475 99e8 +5476 99f1 +5477 99ec +547b 99ef +547c 8cc4 +547d 96bd +5480 99f0 +5484 99f2 +5486 99f4 +548a fa92 +548b 8dee +548c 9861 +548e 99e9 +548f 99e7 +5490 99f3 +5492 99ee +549c fa91 +54a2 99f6 +54a4 9a42 +54a5 99f8 +54a8 99fc +54a9 fa93 +54ab 9a40 +54ac 99f9 +54af 9a5d +54b2 8de7 +54b3 8a50 +54b8 99f7 +54bc 9a44 +54bd 88f4 +54be 9a43 +54c0 88a3 +54c1 9569 +54c2 9a41 +54c4 99fa +54c7 99f5 +54c8 99fb +54c9 8dc6 +54d8 9a45 +54e1 88f5 +54e2 9a4e +54e5 9a46 +54e6 9a47 +54e8 8fa3 +54e9 9689 +54ed 9a4c +54ee 9a4b +54f2 934e +54fa 9a4d +54fd 9a4a +54ff fa94 +5504 8953 +5506 8db4 +5507 904f +550f 9a48 +5510 9382 +5514 9a49 +5516 88a0 +552e 9a53 +552f 9742 +5531 8fa5 +5533 9a59 +5538 9a58 +5539 9a4f +553e 91c1 +5540 9a50 +5544 91ed +5545 9a55 +5546 8fa4 +554c 9a52 +554f 96e2 +5553 8c5b +5556 9a56 +5557 9a57 +555c 9a54 +555d 9a5a +5563 9a51 +557b 9a60 +557c 9a65 +557e 9a61 +5580 9a5c +5583 9a66 +5584 9150 +5586 fa95 +5587 9a68 +5589 8d41 +558a 9a5e +558b 929d +5598 9a62 +5599 9a5b +559a 8aab +559c 8aec +559d 8a85 +559e 9a63 +559f 9a5f +55a7 8c96 +55a8 9a69 +55a9 9a67 +55aa 9172 +55ab 8b69 +55ac 8baa +55ae 9a64 +55b0 8bf2 +55b6 8963 +55c4 9a6d +55c5 9a6b +55c7 9aa5 +55d4 9a70 +55da 9a6a +55dc 9a6e +55df 9a6c +55e3 8e6b +55e4 9a6f +55f7 9a72 +55f9 9a77 +55fd 9a75 +55fe 9a74 +5606 9251 +5609 89c3 +5614 9a71 +5616 9a73 +5617 8fa6 +5618 8952 +561b 9a76 +5629 89dc +562f 9a82 +5631 8ffa +5632 9a7d +5634 9a7b +5636 9a7c +5638 9a7e +5642 895c +564c 9158 +564e 9a78 +5650 9a79 +565b 8a9a +5664 9a81 +5668 8aed +566a 9a84 +566b 9a80 +566c 9a83 +5674 95ac +5678 93d3 +567a 94b6 +5680 9a86 +5686 9a85 +5687 8a64 +568a 9a87 +568f 9a8a +5694 9a89 +56a0 9a88 +56a2 9458 +56a5 9a8b +56ae 9a8c +56b4 9a8e +56b6 9a8d +56bc 9a90 +56c0 9a93 +56c1 9a91 +56c2 9a8f +56c3 9a92 +56c8 9a94 +56ce 9a95 +56d1 9a96 +56d3 9a97 +56d7 9a98 +56d8 9964 +56da 8efa +56db 8e6c +56de 89f1 +56e0 88f6 +56e3 9263 +56ee 9a99 +56f0 8da2 +56f2 88cd +56f3 907d +56f9 9a9a +56fa 8cc5 +56fd 8d91 +56ff 9a9c +5700 9a9b +5703 95de +5704 9a9d +5708 9a9f +5709 9a9e +570b 9aa0 +570d 9aa1 +570f 8c97 +5712 8980 +5713 9aa2 +5716 9aa4 +5718 9aa3 +571c 9aa6 +571f 9379 +5726 9aa7 +5727 88b3 +5728 8ddd +572d 8c5c +5730 926e +5737 9aa8 +5738 9aa9 +573b 9aab +5740 9aac +5742 8de2 +5747 8bcf +574a 9656 +574e 9aaa +574f 9aad +5750 8dbf +5751 8d42 +5759 fa96 +5761 9ab1 +5764 8da3 +5765 fa97 +5766 9252 +5769 9aae +576a 92d8 +577f 9ab2 +5782 9082 +5788 9ab0 +5789 9ab3 +578b 8c5e +5793 9ab4 +57a0 9ab5 +57a2 8d43 +57a3 8a5f +57a4 9ab7 +57aa 9ab8 +57ac fa98 +57b0 9ab9 +57b3 9ab6 +57c0 9aaf +57c3 9aba +57c6 9abb +57c7 fa9a +57c8 fa99 +57cb 9684 +57ce 8fe9 +57d2 9abd +57d3 9abe +57d4 9abc +57d6 9ac0 +57dc 9457 +57df 88e6 +57e0 9575 +57e3 9ac1 +57f4 8ffb +57f7 8eb7 +57f9 947c +57fa 8aee +57fc 8de9 +5800 9678 +5802 93b0 +5805 8c98 +5806 91cd +580a 9abf +580b 9ac2 +5815 91c2 +5819 9ac3 +581d 9ac4 +5821 9ac6 +5824 92e7 +582a 8aac +582f ea9f +5830 8981 +5831 95f1 +5834 8fea +5835 9367 +583a 8de4 +583d 9acc +5840 95bb +5841 97db +584a 89f2 +584b 9ac8 +5851 9159 +5852 9acb +5854 9383 +5857 9368 +5858 9384 +5859 94b7 +585a 92cb +585e 8dc7 +5862 9ac7 +5869 8996 +586b 9355 +5870 9ac9 +5872 9ac5 +5875 906f +5879 9acd +587e 8f6d +5883 8bab +5885 9ace +5893 95e6 +5897 919d +589c 92c4 +589e fa9d +589f 9ad0 +58a8 966e +58ab 9ad1 +58ae 9ad6 +58b2 fa9e +58b3 95ad +58b8 9ad5 +58b9 9acf +58ba 9ad2 +58bb 9ad4 +58be 8da4 +58c1 95c7 +58c5 9ad7 +58c7 9264 +58ca 89f3 +58cc 8feb +58d1 9ad9 +58d3 9ad8 +58d5 8d88 +58d7 9ada +58d8 9adc +58d9 9adb +58dc 9ade +58de 9ad3 +58df 9ae0 +58e4 9adf +58e5 9add +58eb 8e6d +58ec 9070 +58ee 9173 +58ef 9ae1 +58f0 90ba +58f1 88eb +58f2 9484 +58f7 92d9 +58f9 9ae3 +58fa 9ae2 +58fb 9ae4 +58fc 9ae5 +58fd 9ae6 +5902 9ae7 +5909 95cf +590a 9ae8 +590b fa9f +590f 89c4 +5910 9ae9 +5915 975b +5916 8a4f +5918 99c7 +5919 8f67 +591a 91bd +591b 9aea +591c 96e9 +5922 96b2 +5925 9aec +5927 91e5 +5929 9356 +592a 91be +592b 9576 +592c 9aed +592d 9aee +592e 899b +5931 8eb8 +5932 9aef +5937 88ce +5938 9af0 +593e 9af1 +5944 8982 +5947 8aef +5948 93de +5949 95f2 +594e 9af5 +594f 9174 +5950 9af4 +5951 8c5f +5953 faa0 +5954 967a +5955 9af3 +5957 9385 +5958 9af7 +595a 9af6 +595b faa1 +595d faa2 +5960 9af9 +5962 9af8 +5963 faa3 +5965 899c +5967 9afa +5968 8fa7 +5969 9afc +596a 9244 +596c 9afb +596e 95b1 +5973 8f97 +5974 937a +5978 9b40 +597d 8d44 +5981 9b41 +5982 9440 +5983 94dc +5984 96cf +598a 9444 +598d 9b4a +5993 8b57 +5996 9764 +5999 96ad +599b 9baa +599d 9b42 +59a3 9b45 +59a4 faa4 +59a5 91c3 +59a8 9657 +59ac 9369 +59b2 9b46 +59b9 9685 +59ba faa5 +59bb 8dc8 +59be 8fa8 +59c6 9b47 +59c9 8e6f +59cb 8e6e +59d0 88b7 +59d1 8cc6 +59d3 90a9 +59d4 88cf +59d9 9b4b +59da 9b4c +59dc 9b49 +59e5 8957 +59e6 8aad +59e8 9b48 +59ea 96c3 +59eb 9550 +59f6 88a6 +59fb 88f7 +59ff 8e70 +5a01 88d0 +5a03 88a1 +5a09 9b51 +5a11 9b4f +5a18 96ba +5a1a 9b52 +5a1c 9b50 +5a1f 9b4e +5a20 9050 +5a25 9b4d +5a29 95d8 +5a2f 8ce2 +5a35 9b56 +5a36 9b57 +5a3c 8fa9 +5a40 9b53 +5a41 984b +5a46 946b +5a49 9b55 +5a5a 8da5 +5a62 9b58 +5a66 9577 +5a6a 9b59 +5a6c 9b54 +5a7f 96b9 +5a92 947d +5a9a 9b5a +5a9b 9551 +5abc 9b5b +5abd 9b5f +5abe 9b5c +5ac1 89c5 +5ac2 9b5e +5ac9 8eb9 +5acb 9b5d +5acc 8c99 +5ad0 9b6b +5ad6 9b64 +5ad7 9b61 +5ae1 9284 +5ae3 9b60 +5ae6 9b62 +5ae9 9b63 +5afa 9b65 +5afb 9b66 +5b09 8af0 +5b0b 9b68 +5b0c 9b67 +5b16 9b69 +5b22 8fec +5b2a 9b6c +5b2c 92da +5b30 8964 +5b32 9b6a +5b36 9b6d +5b3e 9b6e +5b40 9b71 +5b43 9b6f +5b45 9b70 +5b50 8e71 +5b51 9b72 +5b54 8d45 +5b55 9b73 +5b56 faa6 +5b57 8e9a +5b58 91b6 +5b5a 9b74 +5b5b 9b75 +5b5c 8e79 +5b5d 8d46 +5b5f 96d0 +5b63 8b47 +5b64 8cc7 +5b65 9b76 +5b66 8a77 +5b69 9b77 +5b6b 91b7 +5b70 9b78 +5b71 9ba1 +5b73 9b79 +5b75 9b7a +5b78 9b7b +5b7a 9b7d +5b80 9b7e +5b83 9b80 +5b85 91ee +5b87 8946 +5b88 8ee7 +5b89 88c0 +5b8b 9176 +5b8c 8aae +5b8d 8eb3 +5b8f 8d47 +5b95 9386 +5b97 8f40 +5b98 8aaf +5b99 9288 +5b9a 92e8 +5b9b 88b6 +5b9c 8b58 +5b9d 95f3 +5b9f 8ec0 +5ba2 8b71 +5ba3 90e9 +5ba4 8eba +5ba5 9747 +5ba6 9b81 +5bae 8b7b +5bb0 8dc9 +5bb3 8a51 +5bb4 8983 +5bb5 8faa +5bb6 89c6 +5bb8 9b82 +5bb9 9765 +5bbf 8f68 +5bc0 faa7 +5bc2 8ee2 +5bc3 9b83 +5bc4 8af1 +5bc5 93d0 +5bc6 96a7 +5bc7 9b84 +5bc9 9b85 +5bcc 9578 +5bd0 9b87 +5bd2 8aa6 +5bd3 8bf5 +5bd4 9b86 +5bd8 faa9 +5bdb 8ab0 +5bdd 9051 +5bde 9b8b +5bdf 8e40 +5be1 89c7 +5be2 9b8a +5be4 9b88 +5be5 9b8c +5be6 9b89 +5be7 944a +5be8 9ecb +5be9 9052 +5beb 9b8d +5bec faaa +5bee 97be +5bf0 9b8e +5bf3 9b90 +5bf5 929e +5bf6 9b8f +5bf8 90a1 +5bfa 8e9b +5bfe 91ce +5bff 8ef5 +5c01 9595 +5c02 90ea +5c04 8ecb +5c05 9b91 +5c06 8fab +5c07 9b92 +5c08 9b93 +5c09 88d1 +5c0a 91b8 +5c0b 9071 +5c0d 9b94 +5c0e 93b1 +5c0f 8fac +5c11 8fad +5c13 9b95 +5c16 90eb +5c1a 8fae +5c1e faab +5c20 9b96 +5c22 9b97 +5c24 96de +5c28 9b98 +5c2d 8bc4 +5c31 8f41 +5c38 9b99 +5c39 9b9a +5c3a 8eda +5c3b 904b +5c3c 93f2 +5c3d 9073 +5c3e 94f6 +5c3f 9441 +5c40 8bc7 +5c41 9b9b +5c45 8b8f +5c46 9b9c +5c48 8bfc +5c4a 93cd +5c4b 89ae +5c4d 8e72 +5c4e 9b9d +5c4f 9ba0 +5c50 9b9f +5c51 8bfb +5c53 9b9e +5c55 9357 +5c5e 91ae +5c60 936a +5c61 8ec6 +5c64 9177 +5c65 979a +5c6c 9ba2 +5c6e 9ba3 +5c6f 93d4 +5c71 8e52 +5c76 9ba5 +5c79 9ba6 +5c8c 9ba7 +5c90 8af2 +5c91 9ba8 +5c94 9ba9 +5ca1 89aa +5ca6 faac +5ca8 915a +5ca9 8ae2 +5cab 9bab +5cac 96a6 +5cb1 91d0 +5cb3 8a78 +5cb6 9bad +5cb7 9baf +5cb8 8add +5cba faad +5cbb 9bac +5cbc 9bae +5cbe 9bb1 +5cc5 9bb0 +5cc7 9bb2 +5cd9 9bb3 +5ce0 93bb +5ce1 8bac +5ce8 89e3 +5ce9 9bb4 +5cea 9bb9 +5ced 9bb7 +5cef 95f5 +5cf0 95f4 +5cf5 faae +5cf6 9387 +5cfa 9bb6 +5cfb 8f73 +5cfd 9bb5 +5d07 9092 +5d0b 9bba +5d0e 8de8 +5d11 9bc0 +5d14 9bc1 +5d15 9bbb +5d16 8a52 +5d17 9bbc +5d18 9bc5 +5d19 9bc4 +5d1a 9bc3 +5d1b 9bbf +5d1f 9bbe +5d22 9bc2 +5d27 faaf +5d29 95f6 +5d42 fab2 +5d4b 9bc9 +5d4c 9bc6 +5d4e 9bc8 +5d50 9792 +5d52 9bc7 +5d53 fab0 +5d5c 9bbd +5d69 9093 +5d6c 9bca +5d6d fab3 +5d6f 8db5 +5d73 9bcb +5d76 9bcc +5d82 9bcf +5d84 9bce +5d87 9bcd +5d8b 9388 +5d8c 9bb8 +5d90 9bd5 +5d9d 9bd1 +5da2 9bd0 +5dac 9bd2 +5dae 9bd3 +5db7 9bd6 +5db8 fab4 +5db9 fab5 +5dba 97e4 +5dbc 9bd7 +5dbd 9bd4 +5dc9 9bd8 +5dcc 8ade +5dcd 9bd9 +5dd0 fab6 +5dd2 9bdb +5dd3 9bda +5dd6 9bdc +5ddb 9bdd +5ddd 90ec +5dde 8f42 +5de1 8f84 +5de3 9183 +5de5 8d48 +5de6 8db6 +5de7 8d49 +5de8 8b90 +5deb 9bde +5dee 8db7 +5df1 8cc8 +5df2 9bdf +5df3 96a4 +5df4 9462 +5df5 9be0 +5df7 8d4a +5dfb 8aaa +5dfd 9246 +5dfe 8bd0 +5e02 8e73 +5e03 957a +5e06 94bf +5e0b 9be1 +5e0c 8af3 +5e11 9be4 +5e16 929f +5e19 9be3 +5e1a 9be2 +5e1b 9be5 +5e1d 92e9 +5e25 9083 +5e2b 8e74 +5e2d 90c8 +5e2f 91d1 +5e30 8b41 +5e33 92a0 +5e36 9be6 +5e37 9be7 +5e38 8fed +5e3d 9658 +5e40 9bea +5e43 9be9 +5e44 9be8 +5e45 959d +5e47 9bf1 +5e4c 9679 +5e4e 9beb +5e54 9bed +5e55 968b +5e57 9bec +5e5f 9bee +5e61 94a6 +5e62 9bef +5e63 95bc +5e64 9bf0 +5e72 8ab1 +5e73 95bd +5e74 944e +5e75 9bf2 +5e76 9bf3 +5e78 8d4b +5e79 8ab2 +5e7a 9bf4 +5e7b 8cb6 +5e7c 9763 +5e7d 9748 +5e7e 8af4 +5e7f 9bf6 +5e81 92a1 +5e83 8d4c +5e84 8faf +5e87 94dd +5e8a 8fb0 +5e8f 8f98 +5e95 92ea +5e96 95f7 +5e97 9358 +5e9a 8d4d +5e9c 957b +5ea0 9bf7 +5ea6 9378 +5ea7 8dc0 +5eab 8cc9 +5ead 92eb +5eb5 88c1 +5eb6 8f8e +5eb7 8d4e +5eb8 9766 +5ec1 9bf8 +5ec2 9bf9 +5ec3 9470 +5ec8 9bfa +5ec9 97f5 +5eca 984c +5ecf 9bfc +5ed0 9bfb +5ed3 8a66 +5ed6 9c40 +5eda 9c43 +5edb 9c44 +5edd 9c42 +5edf 955f +5ee0 8fb1 +5ee1 9c46 +5ee2 9c45 +5ee3 9c41 +5ee8 9c47 +5ee9 9c48 +5eec 9c49 +5ef0 9c4c +5ef1 9c4a +5ef3 9c4b +5ef4 9c4d +5ef6 8984 +5ef7 92ec +5ef8 9c4e +5efa 8c9a +5efb 89f4 +5efc 9455 +5efe 9c4f +5eff 93f9 +5f01 95d9 +5f03 9c50 +5f04 984d +5f09 9c51 +5f0a 95be +5f0b 9c54 +5f0c 989f +5f0d 98af +5f0f 8eae +5f10 93f3 +5f11 9c55 +5f13 8b7c +5f14 92a2 +5f15 88f8 +5f16 9c56 +5f17 95a4 +5f18 8d4f +5f1b 926f +5f1f 92ed +5f21 fab7 +5f25 96ed +5f26 8cb7 +5f27 8cca +5f29 9c57 +5f2d 9c58 +5f2f 9c5e +5f31 8ee3 +5f34 fab8 +5f35 92a3 +5f37 8bad +5f38 9c59 +5f3c 954a +5f3e 9265 +5f41 9c5a +5f45 fa67 +5f48 9c5b +5f4a 8bae +5f4c 9c5c +5f4e 9c5d +5f51 9c5f +5f53 9396 +5f56 9c60 +5f57 9c61 +5f59 9c62 +5f5c 9c53 +5f5d 9c52 +5f61 9c63 +5f62 8c60 +5f66 9546 +5f67 fab9 +5f69 8dca +5f6a 9556 +5f6b 92a4 +5f6c 956a +5f6d 9c64 +5f70 8fb2 +5f71 8965 +5f73 9c65 +5f77 9c66 +5f79 96f0 +5f7c 94de +5f7f 9c69 +5f80 899d +5f81 90aa +5f82 9c68 +5f83 9c67 +5f84 8c61 +5f85 91d2 +5f87 9c6d +5f88 9c6b +5f8a 9c6a +5f8b 97a5 +5f8c 8ce3 +5f90 8f99 +5f91 9c6c +5f92 936b +5f93 8f5d +5f97 93be +5f98 9c70 +5f99 9c6f +5f9e 9c6e +5fa0 9c71 +5fa1 8ce4 +5fa8 9c72 +5fa9 959c +5faa 8f7a +5fad 9c73 +5fae 94f7 +5fb3 93bf +5fb4 92a5 +5fb7 faba +5fb9 934f +5fbc 9c74 +5fbd 8b4a +5fc3 9053 +5fc5 954b +5fcc 8af5 +5fcd 9445 +5fd6 9c75 +5fd7 8e75 +5fd8 9659 +5fd9 965a +5fdc 899e +5fdd 9c7a +5fde fabb +5fe0 9289 +5fe4 9c77 +5feb 89f5 +5ff0 9cab +5ff1 9c79 +5ff5 944f +5ff8 9c78 +5ffb 9c76 +5ffd 8d9a +5fff 9c7c +600e 9c83 +600f 9c89 +6010 9c81 +6012 937b +6015 9c86 +6016 957c +6019 9c80 +601b 9c85 +601c 97e5 +601d 8e76 +6020 91d3 +6021 9c7d +6025 8b7d +6026 9c88 +6027 90ab +6028 8985 +6029 9c82 +602a 89f6 +602b 9c87 +602f 8baf +6031 9c84 +603a 9c8a +6041 9c8c +6042 9c96 +6043 9c94 +6046 9c91 +604a 9c90 +604b 97f6 +604d 9c92 +6050 8bb0 +6052 8d50 +6055 8f9a +6059 9c99 +605a 9c8b +605d fabc +605f 9c8f +6060 9c7e +6062 89f8 +6063 9c93 +6064 9c95 +6065 9270 +6068 8da6 +6069 89b6 +606a 9c8d +606b 9c98 +606c 9c97 +606d 8bb1 +606f 91a7 +6070 8a86 +6075 8c62 +6077 9c8e +6081 9c9a +6083 9c9d +6084 9c9f +6085 fabd +6089 8ebb +608a fabe +608b 9ca5 +608c 92ee +608d 9c9b +6092 9ca3 +6094 89f7 +6096 9ca1 +6097 9ca2 +609a 9c9e +609b 9ca0 +609f 8ce5 +60a0 9749 +60a3 8ab3 +60a6 8978 +60a7 9ca4 +60a9 9459 +60aa 88ab +60b2 94df +60b3 9c7b +60b4 9caa +60b5 9cae +60b6 96e3 +60b8 9ca7 +60bc 9389 +60bd 9cac +60c5 8fee +60c6 9cad +60c7 93d5 +60d1 9866 +60d3 9ca9 +60d5 fac0 +60d8 9caf +60da 8d9b +60dc 90c9 +60de fabf +60df 88d2 +60e0 9ca8 +60e1 9ca6 +60e3 9179 +60e7 9c9c +60e8 8e53 +60f0 91c4 +60f1 9cbb +60f2 fac2 +60f3 917a +60f4 9cb6 +60f6 9cb3 +60f7 9cb4 +60f9 8ee4 +60fa 9cb7 +60fb 9cba +6100 9cb5 +6101 8f44 +6103 9cb8 +6106 9cb2 +6108 96fa +6109 96f9 +610d 9cbc +610e 9cbd +610f 88d3 +6111 fac3 +6115 9cb1 +611a 8bf0 +611b 88a4 +611f 8ab4 +6120 fac1 +6121 9cb9 +6127 9cc1 +6128 9cc0 +612c 9cc5 +6130 fac5 +6134 9cc6 +6137 fac4 +613c 9cc4 +613d 9cc7 +613e 9cbf +613f 9cc3 +6142 9cc8 +6144 9cc9 +6147 9cbe +6148 8e9c +614a 9cc2 +614b 91d4 +614c 8d51 +614d 9cb0 +614e 9054 +6153 9cd6 +6155 95e7 +6158 9ccc +6159 9ccd +615a 9cce +615d 9cd5 +615f 9cd4 +6162 969d +6163 8ab5 +6165 9cd2 +6167 8c64 +6168 8a53 +616b 9ccf +616e 97b6 +616f 9cd1 +6170 88d4 +6171 9cd3 +6173 9cca +6174 9cd0 +6175 9cd7 +6176 8c63 +6177 9ccb +617e 977c +6182 974a +6187 9cda +618a 9cde +618e 919e +6190 97f7 +6191 9cdf +6194 9cdc +6196 9cd9 +6198 fac6 +6199 9cd8 +619a 9cdd +61a4 95ae +61a7 93b2 +61a9 8c65 +61ab 9ce0 +61ac 9cdb +61ae 9ce1 +61b2 8c9b +61b6 89af +61ba 9ce9 +61be 8ab6 +61c3 9ce7 +61c6 9ce8 +61c7 8da7 +61c8 9ce6 +61c9 9ce4 +61ca 9ce3 +61cb 9cea +61cc 9ce2 +61cd 9cec +61d0 89f9 +61e3 9cee +61e6 9ced +61f2 92a6 +61f4 9cf1 +61f6 9cef +61f7 9ce5 +61f8 8c9c +61fa 9cf0 +61fc 9cf4 +61fd 9cf3 +61fe 9cf5 +61ff 9cf2 +6200 9cf6 +6208 9cf7 +6209 9cf8 +620a 95e8 +620c 9cfa +620d 9cf9 +620e 8f5e +6210 90ac +6211 89e4 +6212 89fa +6213 fac7 +6214 9cfb +6216 88bd +621a 90ca +621b 9cfc +621d e6c1 +621e 9d40 +621f 8c81 +6221 9d41 +6226 90ed +622a 9d42 +622e 9d43 +622f 8b59 +6230 9d44 +6232 9d45 +6233 9d46 +6234 91d5 +6238 8ccb +623b 96df +623f 965b +6240 8f8a +6241 9d47 +6247 90ee +6248 e7bb +6249 94e0 +624b 8ee8 +624d 8dcb +624e 9d48 +6253 91c5 +6255 95a5 +6258 91ef +625b 9d4b +625e 9d49 +6260 9d4c +6263 9d4a +6268 9d4d +626e 95af +6271 88b5 +6276 957d +6279 94e1 +627c 9d4e +627e 9d51 +627f 8fb3 +6280 8b5a +6282 9d4f +6283 9d56 +6284 8fb4 +6289 9d50 +628a 9463 +6291 977d +6292 9d52 +6293 9d53 +6294 9d57 +6295 938a +6296 9d54 +6297 8d52 +6298 90dc +629b 9d65 +629c 94b2 +629e 91f0 +62a6 fac8 +62ab 94e2 +62ac 9dab +62b1 95f8 +62b5 92ef +62b9 9695 +62bb 9d5a +62bc 899f +62bd 928a +62c2 9d63 +62c5 9253 +62c6 9d5d +62c7 9d64 +62c8 9d5f +62c9 9d66 +62ca 9d62 +62cc 9d61 +62cd 948f +62cf 9d5b +62d0 89fb +62d1 9d59 +62d2 8b91 +62d3 91f1 +62d4 9d55 +62d7 9d58 +62d8 8d53 +62d9 90d9 +62db 8fb5 +62dc 9d60 +62dd 9471 +62e0 8b92 +62e1 8a67 +62ec 8a87 +62ed 9040 +62ee 9d68 +62ef 9d6d +62f1 9d69 +62f3 8c9d +62f5 9d6e +62f6 8e41 +62f7 8d89 +62fe 8f45 +62ff 9d5c +6301 8e9d +6302 9d6b +6307 8e77 +6308 9d6c +6309 88c2 +630c 9d67 +6311 92a7 +6319 8b93 +631f 8bb2 +6327 9d6a +6328 88a5 +632b 8dc1 +632f 9055 +633a 92f0 +633d 94d2 +633e 9d70 +633f 917d +6349 91a8 +634c 8e4a +634d 9d71 +634f 9d73 +6350 9d6f +6355 95df +6357 92bb +635c 917b +6367 95f9 +6368 8ecc +6369 9d80 +636b 9d7e +636e 9098 +6372 8c9e +6376 9d78 +6377 8fb7 +637a 93e6 +637b 9450 +6380 9d76 +6383 917c +6388 8ef6 +6389 9d7b +638c 8fb6 +638e 9d75 +638f 9d7a +6392 9472 +6396 9d74 +6398 8c40 +639b 8a7c +639f 9d7c +63a0 97a9 +63a1 8dcc +63a2 9254 +63a3 9d79 +63a5 90da +63a7 8d54 +63a8 9084 +63a9 8986 +63aa 915b +63ab 9d77 +63ac 8b64 +63b2 8c66 +63b4 92cd +63b5 9d7d +63bb 917e +63be 9d81 +63c0 9d83 +63c3 91b5 +63c4 9d89 +63c6 9d84 +63c9 9d86 +63cf 9560 +63d0 92f1 +63d2 9d87 +63d6 974b +63da 9767 +63db 8ab7 +63e1 88ac +63e3 9d85 +63e9 9d82 +63ee 8af6 +63f4 8987 +63f5 fac9 +63f6 9d88 +63fa 9768 +6406 9d8c +640d 91b9 +640f 9d93 +6413 9d8d +6416 9d8a +6417 9d91 +641c 9d72 +6426 9d8e +6428 9d92 +642c 94c0 +642d 938b +6434 9d8b +6436 9d8f +643a 8c67 +643e 8def +6442 90db +644e 9d97 +6458 9345 +6460 faca +6467 9d94 +6469 9680 +646f 9d95 +6476 9d96 +6478 96cc +647a 90a0 +6483 8c82 +6488 9d9d +6492 8e54 +6493 9d9a +6495 9d99 +649a 9451 +649d facb +649e 93b3 +64a4 9350 +64a5 9d9b +64a9 9d9c +64ab 958f +64ad 9464 +64ae 8e42 +64b0 90ef +64b2 966f +64b9 8a68 +64bb 9da3 +64bc 9d9e +64c1 9769 +64c2 9da5 +64c5 9da1 +64c7 9da2 +64cd 9180 +64ce facc +64d2 9da0 +64d4 9d5e +64d8 9da4 +64da 9d9f +64e0 9da9 +64e1 9daa +64e2 9346 +64e3 9dac +64e6 8e43 +64e7 9da7 +64ec 8b5b +64ef 9dad +64f1 9da6 +64f2 9db1 +64f4 9db0 +64f6 9daf +64fa 9db2 +64fd 9db4 +64fe 8fef +6500 9db3 +6505 9db7 +6518 9db5 +651c 9db6 +651d 9d90 +6523 9db9 +6524 9db8 +652a 9d98 +652b 9dba +652c 9dae +652f 8e78 +6534 9dbb +6535 9dbc +6536 9dbe +6537 9dbd +6538 9dbf +6539 89fc +653b 8d55 +653e 95fa +653f 90ad +6545 8ccc +6548 9dc1 +654d 9dc4 +654e facd +654f 9571 +6551 8b7e +6555 9dc3 +6556 9dc2 +6557 9473 +6558 9dc5 +6559 8bb3 +655d 9dc7 +655e 9dc6 +6562 8ab8 +6563 8e55 +6566 93d6 +656c 8c68 +6570 9094 +6572 9dc8 +6574 90ae +6575 9347 +6577 957e +6578 9dc9 +6582 9dca +6583 9dcb +6587 95b6 +6588 9b7c +6589 90c4 +658c 956b +658e 8dd6 +6590 94e3 +6591 94c1 +6597 936c +6599 97bf +659b 9dcd +659c 8ece +659f 9dce +65a1 88b4 +65a4 8bd2 +65a5 90cb +65a7 9580 +65ab 9dcf +65ac 8e61 +65ad 9266 +65af 8e7a +65b0 9056 +65b7 9dd0 +65b9 95fb +65bc 8997 +65bd 8e7b +65c1 9dd3 +65c3 9dd1 +65c4 9dd4 +65c5 97b7 +65c6 9dd2 +65cb 90f9 +65cc 9dd5 +65cf 91b0 +65d2 9dd6 +65d7 8af8 +65d9 9dd8 +65db 9dd7 +65e0 9dd9 +65e1 9dda +65e2 8af9 +65e5 93fa +65e6 9255 +65e7 8b8c +65e8 8e7c +65e9 9181 +65ec 8f7b +65ed 88ae +65f1 9ddb +65fa 89a0 +65fb 9ddf +6600 face +6602 8d56 +6603 9dde +6606 8da9 +6607 8fb8 +6609 fad1 +660a 9ddd +660c 8fb9 +660e 96be +660f 8da8 +6613 88d5 +6614 90cc +6615 facf +661c 9de4 +661e fad3 +661f 90af +6620 8966 +6624 fad4 +6625 8f74 +6627 9686 +6628 8df0 +662d 8fba +662e fad2 +662f 90a5 +6631 fa63 +6634 9de3 +6635 9de1 +6636 9de2 +663b fad0 +663c 928b +663f 9e45 +6641 9de8 +6642 8e9e +6643 8d57 +6644 9de6 +6649 9de7 +664b 9057 +664f 9de5 +6652 8e4e +6657 fad6 +6659 fad7 +665d 9dea +665e 9de9 +665f 9dee +6662 9def +6664 9deb +6665 fad5 +6666 8a41 +6667 9dec +6668 9ded +6669 94d3 +666e 9581 +666f 8c69 +6670 9df0 +6673 fad9 +6674 90b0 +6676 8fbb +667a 9271 +6681 8bc5 +6683 9df1 +6684 9df5 +6687 89c9 +6688 9df2 +6689 9df4 +668e 9df3 +6691 8f8b +6696 9267 +6697 88c3 +6698 9df6 +6699 fada +669d 9df7 +66a0 fadb +66a2 92a8 +66a6 97ef +66ab 8e62 +66ae 95e9 +66b2 fadc +66b4 965c +66b8 9e41 +66b9 9df9 +66bc 9dfc +66be 9dfb +66bf fadd +66c1 9df8 +66c4 9e40 +66c7 93dc +66c9 9dfa +66d6 9e42 +66d9 8f8c +66da 9e43 +66dc 976a +66dd 9498 +66e0 9e44 +66e6 9e46 +66e9 9e47 +66f0 9e48 +66f2 8bc8 +66f3 8967 +66f4 8d58 +66f5 9e49 +66f7 9e4a +66f8 8f91 +66f9 9182 +66fa fade +66fb fa66 +66fc 99d6 +66fd 915d +66fe 915c +66ff 91d6 +6700 8dc5 +6703 98f0 +6708 8c8e +6709 974c +670b 95fc +670d 959e +670e fadf +670f 9e4b +6714 8df1 +6715 92bd +6716 9e4c +6717 984e +671b 965d +671d 92a9 +671e 9e4d +671f 8afa +6726 9e4e +6727 9e4f +6728 96d8 +672a 96a2 +672b 9696 +672c 967b +672d 8e44 +672e 9e51 +6731 8ee9 +6734 9670 +6736 9e53 +6737 9e56 +6738 9e55 +673a 8af7 +673d 8b80 +673f 9e52 +6741 9e54 +6746 9e57 +6749 9099 +674e 979b +674f 88c7 +6750 8dde +6751 91ba +6753 8edb +6756 8ff1 +6759 9e5a +675c 936d +675e 9e58 +675f 91a9 +6760 9e59 +6761 8ff0 +6762 96db +6763 9e5b +6764 9e5c +6765 9788 +6766 fae1 +676a 9e61 +676d 8d59 +676f 9474 +6770 9e5e +6771 938c +6772 9ddc +6773 9de0 +6775 8b6e +6777 9466 +677c 9e60 +677e 8fbc +677f 94c2 +6785 9e66 +6787 94f8 +6789 9e5d +678b 9e63 +678c 9e62 +6790 90cd +6795 968d +6797 97d1 +679a 9687 +679c 89ca +679d 8e7d +67a0 9867 +67a1 9e65 +67a2 9095 +67a6 9e64 +67a9 9e5f +67af 8ccd +67b3 9e6b +67b4 9e69 +67b6 89cb +67b7 9e67 +67b8 9e6d +67b9 9e73 +67bb fae2 +67c0 fae4 +67c1 91c6 +67c4 95bf +67c6 9e75 +67ca 9541 +67ce 9e74 +67cf 9490 +67d0 965e +67d1 8ab9 +67d3 90f5 +67d4 8f5f +67d8 92d1 +67da 974d +67dd 9e70 +67de 9e6f +67e2 9e71 +67e4 9e6e +67e7 9e76 +67e9 9e6c +67ec 9e6a +67ee 9e72 +67ef 9e68 +67f1 928c +67f3 96f6 +67f4 8ec4 +67f5 8df2 +67fb 8db8 +67fe 968f +67ff 8a60 +6801 fae5 +6802 92cc +6803 93c8 +6804 8968 +6813 90f0 +6816 90b2 +6817 8c49 +681e 9e78 +6821 8d5a +6822 8a9c +6829 9e7a +682a 8a94 +682b 9e81 +6832 9e7d +6834 90f1 +6838 8a6a +6839 8daa +683c 8a69 +683d 8dcd +6840 9e7b +6841 8c85 +6842 8c6a +6843 938d +6844 fae6 +6846 9e79 +6848 88c4 +684d 9e7c +684e 9e7e +6850 8bcb +6851 8c4b +6852 fae3 +6853 8aba +6854 8b6a +6859 9e82 +685c 8df7 +685d 9691 +685f 8e56 +6863 9e83 +6867 954f +6874 9e8f +6876 89b1 +6877 9e84 +687e 9e95 +687f 9e85 +6881 97c0 +6883 9e8c +6885 947e +688d 9e94 +688f 9e87 +6893 88b2 +6894 9e89 +6897 8d5b +689b 9e8b +689d 9e8a +689f 9e86 +68a0 9e91 +68a2 8fbd +68a6 9aeb +68a7 8ce6 +68a8 979c +68ad 9e88 +68af 92f2 +68b0 8a42 +68b1 8dab +68b3 9e80 +68b5 9e90 +68b6 8a81 +68b9 9e8e +68ba 9e92 +68bc 938e +68c4 8afc +68c6 9eb0 +68c8 fa64 +68c9 96c7 +68ca 9e97 +68cb 8afb +68cd 9e9e +68cf fae7 +68d2 965f +68d4 9e9f +68d5 9ea1 +68d7 9ea5 +68d8 9e99 +68da 9249 +68df 938f +68e0 9ea9 +68e1 9e9c +68e3 9ea6 +68e7 9ea0 +68ee 9058 +68ef 9eaa +68f2 90b1 +68f9 9ea8 +68fa 8abb +6900 986f +6901 9e96 +6904 9ea4 +6905 88d6 +6908 9e98 +690b 96b8 +690c 9e9d +690d 9041 +690e 92c5 +690f 9e93 +6912 9ea3 +6919 909a +691a 9ead +691b 8a91 +691c 8c9f +6921 9eaf +6922 9e9a +6923 9eae +6925 9ea7 +6926 9e9b +6928 9eab +692a 9eac +6930 9ebd +6934 93cc +6936 9ea2 +6939 9eb9 +693d 9ebb +693f 92d6 +694a 976b +6953 9596 +6954 9eb6 +6955 91c8 +6959 9ebc +695a 915e +695c 9eb3 +695d 9ec0 +695e 9ebf +6960 93ed +6961 9ebe +6962 93e8 +6968 fae9 +696a 9ec2 +696b 9eb5 +696d 8bc6 +696e 9eb8 +696f 8f7c +6973 9480 +6974 9eba +6975 8bc9 +6977 9eb2 +6978 9eb4 +6979 9eb1 +697c 984f +697d 8a79 +697e 9eb7 +6981 9ec1 +6982 8a54 +698a 8de5 +698e 897c +6991 9ed2 +6994 9850 +6995 9ed5 +6998 faeb +699b 9059 +699c 9ed4 +69a0 9ed3 +69a7 9ed0 +69ae 9ec4 +69b1 9ee1 +69b2 9ec3 +69b4 9ed6 +69bb 9ece +69be 9ec9 +69bf 9ec6 +69c1 9ec7 +69c3 9ecf +69c7 eaa0 +69ca 9ecc +69cb 8d5c +69cc 92c6 +69cd 9184 +69ce 9eca +69d0 9ec5 +69d3 9ec8 +69d8 976c +69d9 968a +69dd 9ecd +69de 9ed7 +69e2 faec +69e7 9edf +69e8 9ed8 +69eb 9ee5 +69ed 9ee3 +69f2 9ede +69f9 9edd +69fb 92ce +69fd 9185 +69ff 9edb +6a02 9ed9 +6a05 9ee0 +6a0a 9ee6 +6a0b 94f3 +6a0c 9eec +6a12 9ee7 +6a13 9eea +6a14 9ee4 +6a17 9294 +6a19 9557 +6a1b 9eda +6a1e 9ee2 +6a1f 8fbe +6a21 96cd +6a22 9ef6 +6a23 9ee9 +6a29 8ca0 +6a2a 89a1 +6a2b 8a7e +6a2e 9ed1 +6a30 faed +6a35 8fbf +6a36 9eee +6a38 9ef5 +6a39 8ef7 +6a3a 8a92 +6a3d 924d +6a44 9eeb +6a46 faef +6a47 9ef0 +6a48 9ef4 +6a4b 8bb4 +6a58 8b6b +6a59 9ef2 +6a5f 8b40 +6a61 93c9 +6a62 9ef1 +6a66 9ef3 +6a6b faee +6a72 9eed +6a73 faf0 +6a78 9eef +6a7e faf1 +6a7f 8a80 +6a80 9268 +6a84 9efa +6a8d 9ef8 +6a8e 8ce7 +6a90 9ef7 +6a97 9f40 +6a9c 9e77 +6aa0 9ef9 +6aa2 9efb +6aa3 9efc +6aaa 9f4b +6aac 9f47 +6aae 9e8d +6ab3 9f46 +6ab8 9f45 +6abb 9f42 +6ac1 9ee8 +6ac2 9f44 +6ac3 9f43 +6ad1 9f49 +6ad3 9845 +6ada 9f4c +6adb 8bf9 +6ade 9f48 +6adf 9f4a +6ae2 faf2 +6ae4 faf3 +6ae8 94a5 +6aea 9f4d +6afa 9f51 +6afb 9f4e +6b04 9793 +6b05 9f4f +6b0a 9edc +6b12 9f52 +6b16 9f53 +6b1d 8954 +6b1f 9f55 +6b20 8c87 +6b21 8e9f +6b23 8bd3 +6b27 89a2 +6b32 977e +6b37 9f57 +6b38 9f56 +6b39 9f59 +6b3a 8b5c +6b3d 8bd4 +6b3e 8abc +6b43 9f5c +6b47 9f5b +6b49 9f5d +6b4c 89cc +6b4e 9256 +6b50 9f5e +6b53 8abd +6b54 9f60 +6b59 9f5f +6b5b 9f61 +6b5f 9f62 +6b61 9f63 +6b62 8e7e +6b63 90b3 +6b64 8d9f +6b66 9590 +6b69 95e0 +6b6a 9863 +6b6f 8e95 +6b73 8dce +6b74 97f0 +6b78 9f64 +6b79 9f65 +6b7b 8e80 +6b7f 9f66 +6b80 9f67 +6b83 9f69 +6b84 9f68 +6b86 9677 +6b89 8f7d +6b8a 8eea +6b8b 8e63 +6b8d 9f6a +6b95 9f6c +6b96 9042 +6b98 9f6b +6b9e 9f6d +6ba4 9f6e +6baa 9f6f +6bab 9f70 +6baf 9f71 +6bb1 9f73 +6bb2 9f72 +6bb3 9f74 +6bb4 89a3 +6bb5 9269 +6bb7 9f75 +6bba 8e45 +6bbb 8a6b +6bbc 9f76 +6bbf 9361 +6bc0 9aca +6bc5 8b42 +6bc6 9f77 +6bcb 9f78 +6bcd 95ea +6bce 9688 +6bd2 93c5 +6bd3 9f79 +6bd4 94e4 +6bd6 faf4 +6bd8 94f9 +6bdb 96d1 +6bdf 9f7a +6beb 9f7c +6bec 9f7b +6bef 9f7e +6bf3 9f7d +6c08 9f81 +6c0f 8e81 +6c11 96af +6c13 9f82 +6c14 9f83 +6c17 8b43 +6c1b 9f84 +6c23 9f86 +6c24 9f85 +6c34 9085 +6c37 9558 +6c38 8969 +6c3e 94c3 +6c3f faf5 +6c40 92f3 +6c41 8f60 +6c42 8b81 +6c4e 94c4 +6c50 8eac +6c55 9f88 +6c57 8abe +6c5a 8998 +6c5c faf6 +6c5d 93f0 +6c5e 9f87 +6c5f 8d5d +6c60 9272 +6c62 9f89 +6c68 9f91 +6c6a 9f8a +6c6f faf8 +6c70 91bf +6c72 8b82 +6c73 9f92 +6c7a 8c88 +6c7d 8b44 +6c7e 9f90 +6c81 9f8e +6c82 9f8b +6c83 9780 +6c86 faf7 +6c88 92be +6c8c 93d7 +6c8d 9f8c +6c90 9f94 +6c92 9f93 +6c93 8c42 +6c96 89ab +6c99 8db9 +6c9a 9f8d +6c9b 9f8f +6ca1 9676 +6ca2 91f2 +6cab 9697 +6cae 9f9c +6cb1 9f9d +6cb3 89cd +6cb8 95a6 +6cb9 96fb +6cba 9f9f +6cbb 8ea1 +6cbc 8fc0 +6cbd 9f98 +6cbe 9f9e +6cbf 8988 +6cc1 8bb5 +6cc4 9f95 +6cc5 9f9a +6cc9 90f2 +6cca 9491 +6ccc 94e5 +6cd3 9f97 +6cd5 9640 +6cd7 9f99 +6cd9 9fa2 +6cda faf9 +6cdb 9fa0 +6cdd 9f9b +6ce1 9641 +6ce2 9467 +6ce3 8b83 +6ce5 9344 +6ce8 928d +6cea 9fa3 +6cef 9fa1 +6cf0 91d7 +6cf1 9f96 +6cf3 896a +6d04 fafa +6d0b 976d +6d0c 9fae +6d12 9fad +6d17 90f4 +6d19 9faa +6d1b 978c +6d1e 93b4 +6d1f 9fa4 +6d25 92c3 +6d29 896b +6d2a 8d5e +6d2b 9fa7 +6d32 8f46 +6d33 9fac +6d35 9fab +6d36 9fa6 +6d38 9fa9 +6d3b 8a88 +6d3d 9fa8 +6d3e 9468 +6d41 97ac +6d44 8ff2 +6d45 90f3 +6d59 9fb4 +6d5a 9fb2 +6d5c 956c +6d63 9faf +6d64 9fb1 +6d66 8959 +6d69 8d5f +6d6a 9851 +6d6c 8a5c +6d6e 9582 +6d6f fafc +6d74 9781 +6d77 8a43 +6d78 905a +6d79 9fb3 +6d85 9fb8 +6d87 fafb +6d88 8fc1 +6d8c 974f +6d8e 9fb5 +6d93 9fb0 +6d95 9fb6 +6d96 fb40 +6d99 97dc +6d9b 9393 +6d9c 93c0 +6dac fb41 +6daf 8a55 +6db2 8974 +6db5 9fbc +6db8 9fbf +6dbc 97c1 +6dc0 9784 +6dc5 9fc6 +6dc6 9fc0 +6dc7 9fbd +6dcb 97d2 +6dcc 9fc3 +6dcf fb42 +6dd1 8f69 +6dd2 9fc5 +6dd5 9fca +6dd8 9391 +6dd9 9fc8 +6dde 9fc2 +6de1 9257 +6de4 9fc9 +6de6 9fbe +6de8 9fc4 +6dea 9fcb +6deb 88fa +6dec 9fc1 +6dee 9fcc +6df1 905b +6df2 fb44 +6df3 8f7e +6df5 95a3 +6df7 8dac +6df8 fb43 +6df9 9fb9 +6dfa 9fc7 +6dfb 9359 +6dfc fb45 +6e05 90b4 +6e07 8a89 +6e08 8dcf +6e09 8fc2 +6e0a 9fbb +6e0b 8f61 +6e13 8c6b +6e15 9fba +6e19 9fd0 +6e1a 8f8d +6e1b 8cb8 +6e1d 9fdf +6e1f 9fd9 +6e20 8b94 +6e21 936e +6e23 9fd4 +6e24 9fdd +6e25 88ad +6e26 8951 +6e27 fb48 +6e29 89b7 +6e2b 9fd6 +6e2c 91aa +6e2d 9fcd +6e2e 9fcf +6e2f 8d60 +6e38 9fe0 +6e39 fb46 +6e3a 9fdb +6e3c fb49 +6e3e 9fd3 +6e43 9fda +6e4a 96a9 +6e4d 9fd8 +6e4e 9fdc +6e56 8cce +6e58 8fc3 +6e5b 9258 +6e5c fb47 +6e5f 9fd2 +6e67 974e +6e6b 9fd5 +6e6e 9fce +6e6f 9392 +6e72 9fd1 +6e76 9fd7 +6e7e 9870 +6e7f 8ebc +6e80 969e +6e82 9fe1 +6e8c 94ac +6e8f 9fed +6e90 8cb9 +6e96 8f80 +6e98 9fe3 +6e9c 97ad +6e9d 8d61 +6e9f 9ff0 +6ea2 88ec +6ea5 9fee +6eaa 9fe2 +6eaf 9fe8 +6eb2 9fea +6eb6 976e +6eb7 9fe5 +6eba 934d +6ebd 9fe7 +6ebf fb4a +6ec2 9fef +6ec4 9fe9 +6ec5 96c5 +6ec9 9fe4 +6ecb 8ea0 +6ecc 9ffc +6ed1 8a8a +6ed3 9fe6 +6ed4 9feb +6ed5 9fec +6edd 91ea +6ede 91d8 +6eec 9ff4 +6eef 9ffa +6ef2 9ff8 +6ef4 9348 +6ef7 e042 +6ef8 9ff5 +6efe 9ff6 +6eff 9fde +6f01 8b99 +6f02 9559 +6f06 8ebd +6f09 8d97 +6f0f 9852 +6f11 9ff2 +6f13 e041 +6f14 8989 +6f15 9186 +6f20 9499 +6f22 8abf +6f23 97f8 +6f2b 969f +6f2c 92d0 +6f31 9ff9 +6f32 9ffb +6f38 9151 +6f3e e040 +6f3f 9ff7 +6f41 9ff1 +6f45 8ac1 +6f54 8c89 +6f58 e04e +6f5b e049 +6f5c 90f6 +6f5f 8a83 +6f64 8f81 +6f66 e052 +6f6d e04b +6f6e 92aa +6f6f e048 +6f70 92d7 +6f74 e06b +6f78 e045 +6f7a e044 +6f7c e04d +6f80 e047 +6f81 e046 +6f82 e04c +6f84 909f +6f86 e043 +6f88 fb4b +6f8e e04f +6f91 e050 +6f97 8ac0 +6fa1 e055 +6fa3 e054 +6fa4 e056 +6faa e059 +6fb1 9362 +6fb3 e053 +6fb5 fb4c +6fb9 e057 +6fc0 8c83 +6fc1 91f7 +6fc2 e051 +6fc3 945a +6fc6 e058 +6fd4 e05d +6fd5 e05b +6fd8 e05e +6fdb e061 +6fdf e05a +6fe0 8d8a +6fe1 9447 +6fe4 9fb7 +6feb 9794 +6fec e05c +6fee e060 +6fef 91f3 +6ff1 e05f +6ff3 e04a +6ff5 fb4d +6ff6 e889 +6ffa e064 +6ffe e068 +7001 e066 +7005 fb4e +7007 fb4f +7009 e062 +700b e063 +700f e067 +7011 e065 +7015 956d +7018 e06d +701a e06a +701b e069 +701d e06c +701e 93d2 +701f e06e +7026 9295 +7027 91eb +7028 fb50 +702c 90a3 +7030 e06f +7032 e071 +703e e070 +704c 9ff3 +7051 e072 +7058 93e5 +7063 e073 +706b 89ce +706f 9394 +7070 8a44 +7078 8b84 +707c 8edc +707d 8dd0 +7085 fb51 +7089 9846 +708a 9086 +708e 898a +7092 e075 +7099 e074 +70ab fb52 +70ac e078 +70ad 9259 +70ae e07b +70af e076 +70b3 e07a +70b8 e079 +70b9 935f +70ba 88d7 +70bb fa62 +70c8 97f3 +70cb e07d +70cf 8947 +70d9 e080 +70dd e07e +70df e07c +70f1 e077 +70f9 9642 +70fd e082 +7104 fb54 +7109 e081 +710f fb53 +7114 898b +7119 e084 +711a 95b0 +711c e083 +7121 96b3 +7126 8fc5 +7136 9152 +713c 8fc4 +7146 fb56 +7147 fb57 +7149 97f9 +714c e08a +714e 90f7 +7155 e086 +7156 e08b +7159 898c +715c fb55 +7162 e089 +7164 9481 +7165 e085 +7166 e088 +7167 8fc6 +7169 94cf +716c e08c +716e 8ecf +717d 90f8 +7184 e08f +7188 e087 +718a 8c46 +718f e08d +7194 976f +7195 e090 +7199 eaa4 +719f 8f6e +71a8 e091 +71ac e092 +71b1 944d +71b9 e094 +71be e095 +71c1 fb59 +71c3 9452 +71c8 9395 +71c9 e097 +71ce e099 +71d0 97d3 +71d2 e096 +71d4 e098 +71d5 898d +71d7 e093 +71df 9a7a +71e0 e09a +71e5 9187 +71e6 8e57 +71e7 e09c +71ec e09b +71ed 9043 +71ee 99d7 +71f5 e09d +71f9 e09f +71fb e08e +71fc e09e +71fe fb5a +71ff e0a0 +7206 949a +720d e0a1 +7210 e0a2 +721b e0a3 +7228 e0a4 +722a 92dc +722c e0a6 +722d e0a5 +7230 e0a7 +7232 e0a8 +7235 8edd +7236 9583 +723a 96ea +723b e0a9 +723c e0aa +723d 9175 +723e 8ea2 +723f e0ab +7240 e0ac +7246 e0ad +7247 95d0 +7248 94c5 +724b e0ae +724c 9476 +7252 92ab +7258 e0af +7259 89e5 +725b 8b8d +725d 96c4 +725f 96b4 +7261 89b2 +7262 9853 +7267 9671 +7269 95a8 +7272 90b5 +7274 e0b0 +7279 93c1 +727d 8ca1 +727e e0b1 +7280 8dd2 +7281 e0b3 +7282 e0b2 +7287 e0b4 +7292 e0b5 +7296 e0b6 +72a0 8b5d +72a2 e0b7 +72a7 e0b8 +72ac 8ca2 +72af 94c6 +72b1 fb5b +72b2 e0ba +72b6 8ff3 +72b9 e0b9 +72be fb5c +72c2 8bb6 +72c3 e0bb +72c4 e0bd +72c6 e0bc +72ce e0be +72d0 8ccf +72d2 e0bf +72d7 8be7 +72d9 915f +72db 8d9d +72e0 e0c1 +72e1 e0c2 +72e2 e0c0 +72e9 8eeb +72ec 93c6 +72ed 8bb7 +72f7 e0c4 +72f8 924b +72f9 e0c3 +72fc 9854 +72fd 9482 +730a e0c7 +7316 e0c9 +7317 e0c6 +731b 96d2 +731c e0c8 +731d e0ca +731f 97c2 +7324 fb5d +7325 e0ce +7329 e0cd +732a 9296 +732b 944c +732e 8ca3 +732f e0cc +7334 e0cb +7336 9750 +7337 9751 +733e e0cf +733f 898e +7344 8d96 +7345 8e82 +734e e0d0 +734f e0d1 +7357 e0d3 +7363 8f62 +7368 e0d5 +736a e0d4 +7370 e0d6 +7372 8a6c +7375 e0d8 +7377 fb5f +7378 e0d7 +737a e0da +737b e0d9 +7384 8cba +7387 97a6 +7389 8bca +738b 89a4 +7396 8be8 +73a9 8adf +73b2 97e6 +73b3 e0dc +73bb e0de +73bd fb60 +73c0 e0df +73c2 89cf +73c8 e0db +73c9 fb61 +73ca 8e58 +73cd 92bf +73ce e0dd +73d2 fb64 +73d6 fb62 +73de e0e2 +73e0 8eec +73e3 fb63 +73e5 e0e0 +73ea 8c5d +73ed 94c7 +73ee e0e1 +73f1 e0fc +73f5 fb66 +73f8 e0e7 +73fe 8cbb +7403 8b85 +7405 e0e4 +7406 979d +7407 fb65 +7409 97ae +7422 91f4 +7425 e0e6 +7426 fb67 +7429 fb69 +742a fb68 +742e fb6a +7432 e0e8 +7433 97d4 +7434 8bd5 +7435 94fa +7436 9469 +743a e0e9 +743f e0eb +7441 e0ee +7455 e0ea +7459 e0ed +745a 8ce8 +745b 896c +745c e0ef +745e 9090 +745f e0ec +7460 97da +7462 fb6b +7463 e0f2 +7464 eaa2 +7469 e0f0 +746a e0f3 +746f e0e5 +7470 e0f1 +7473 8dba +7476 e0f4 +747e e0f5 +7483 979e +7489 fb6c +748b e0f6 +749e e0f7 +749f fb6d +74a2 e0e3 +74a7 e0f8 +74b0 8ac2 +74bd 8ea3 +74ca e0f9 +74cf e0fa +74d4 e0fb +74dc 895a +74e0 e140 +74e2 955a +74e3 e141 +74e6 8aa2 +74e7 e142 +74e9 e143 +74ee e144 +74f0 e146 +74f1 e147 +74f2 e145 +74f6 9572 +74f7 e149 +74f8 e148 +7501 fb6e +7503 e14b +7504 e14a +7505 e14c +750c e14d +750d e14f +750e e14e +7511 8d99 +7513 e151 +7515 e150 +7518 8ac3 +751a 9072 +751c 935b +751e e152 +751f 90b6 +7523 8e59 +7525 8999 +7526 e153 +7528 9770 +752b 95e1 +752c e154 +752f faa8 +7530 9363 +7531 9752 +7532 8d62 +7533 905c +7537 926a +7538 99b2 +753a 92ac +753b 89e6 +753c e155 +7544 e156 +7546 e15b +7549 e159 +754a e158 +754b 9dc0 +754c 8a45 +754d e157 +754f 88d8 +7551 94a8 +7554 94c8 +7559 97af +755a e15c +755b e15a +755c 927b +755d 90a4 +7560 94a9 +7562 954c +7564 e15e +7565 97aa +7566 8c6c +7567 e15f +7569 e15d +756a 94d4 +756b e160 +756d e161 +756f fb6f +7570 88d9 +7573 8ff4 +7574 e166 +7576 e163 +7577 93eb +7578 e162 +757f 8b45 +7582 e169 +7586 e164 +7587 e165 +7589 e168 +758a e167 +758b 9544 +758e 9161 +758f 9160 +7591 8b5e +7594 e16a +759a e16b +759d e16c +75a3 e16e +75a5 e16d +75ab 8975 +75b1 e176 +75b2 94e6 +75b3 e170 +75b5 e172 +75b8 e174 +75b9 905d +75bc e175 +75bd e173 +75be 8ebe +75c2 e16f +75c3 e171 +75c5 9561 +75c7 8fc7 +75ca e178 +75cd e177 +75d2 e179 +75d4 8ea4 +75d5 8dad +75d8 9397 +75d9 e17a +75db 92c9 +75de e17c +75e2 979f +75e3 e17b +75e9 9189 +75f0 e182 +75f2 e184 +75f3 e185 +75f4 9273 +75fa e183 +75fc e180 +75fe e17d +75ff e17e +7601 e181 +7609 e188 +760b e186 +760d e187 +761f e189 +7620 e18b +7621 e18c +7622 e18d +7624 e18e +7627 e18a +7630 e190 +7634 e18f +763b e191 +7642 97c3 +7646 e194 +7647 e192 +7648 e193 +764c 8ae0 +7652 96fc +7656 95c8 +7658 e196 +765c e195 +7661 e197 +7662 e198 +7667 e19c +7668 e199 +7669 e19a +766a e19b +766c e19d +7670 e19e +7672 e19f +7676 e1a0 +7678 e1a1 +767a 94ad +767b 936f +767c e1a2 +767d 9492 +767e 9553 +7680 e1a3 +7682 fb70 +7683 e1a4 +7684 9349 +7686 8a46 +7687 8d63 +7688 e1a5 +768b e1a6 +768e e1a7 +7690 8e48 +7693 e1a9 +7696 e1a8 +7699 e1aa +769a e1ab +769b fb73 +769c fb71 +769e fb72 +76a6 fb74 +76ae 94e7 +76b0 e1ac +76b4 e1ad +76b7 ea89 +76b8 e1ae +76b9 e1af +76ba e1b0 +76bf 8e4d +76c2 e1b1 +76c3 9475 +76c6 967e +76c8 896d +76ca 8976 +76cd e1b2 +76d2 e1b4 +76d6 e1b3 +76d7 9390 +76db 90b7 +76dc 9f58 +76de e1b5 +76df 96bf +76e1 e1b6 +76e3 8ac4 +76e4 94d5 +76e5 e1b7 +76e7 e1b8 +76ea e1b9 +76ee 96da +76f2 96d3 +76f4 92bc +76f8 918a +76fb e1bb +76fe 8f82 +7701 8fc8 +7704 e1be +7707 e1bd +7708 e1bc +7709 94fb +770b 8ac5 +770c 8ca7 +771b e1c4 +771e e1c1 +771f 905e +7720 96b0 +7724 e1c0 +7725 e1c2 +7726 e1c3 +7729 e1bf +7737 e1c5 +7738 e1c6 +773a 92ad +773c 8ae1 +7740 9285 +7746 fb76 +7747 e1c7 +775a e1c8 +775b e1cb +7761 9087 +7763 93c2 +7765 e1cc +7766 9672 +7768 e1c9 +776b e1ca +7779 e1cf +777e e1ce +777f e1cd +778b e1d1 +778e e1d0 +7791 e1d2 +779e e1d4 +77a0 e1d3 +77a5 95cb +77ac 8f75 +77ad 97c4 +77b0 e1d5 +77b3 93b5 +77b6 e1d6 +77b9 e1d7 +77bb e1db +77bc e1d9 +77bd e1da +77bf e1d8 +77c7 e1dc +77cd e1dd +77d7 e1de +77da e1df +77db 96b5 +77dc e1e0 +77e2 96ee +77e3 e1e1 +77e5 926d +77e7 948a +77e9 8be9 +77ed 925a +77ee e1e2 +77ef 8bb8 +77f3 90ce +77fc e1e3 +7802 8dbb +780c e1e4 +7812 e1e5 +7814 8ca4 +7815 8dd3 +7820 e1e7 +7821 fb78 +7825 9375 +7826 8dd4 +7827 8b6d +7832 9643 +7834 946a +783a 9376 +783f 8d7b +7845 e1e9 +784e fb79 +785d 8fc9 +7864 fb7a +786b 97b0 +786c 8d64 +786f 8ca5 +7872 94a1 +7874 e1eb +787a fb7b +787c e1ed +7881 8ce9 +7886 e1ec +7887 92f4 +788c e1ef +788d 8a56 +788e e1ea +7891 94e8 +7893 894f +7895 8dea +7897 9871 +789a e1ee +78a3 e1f0 +78a7 95c9 +78a9 90d7 +78aa e1f2 +78af e1f3 +78b5 e1f1 +78ba 8a6d +78bc e1f9 +78be e1f8 +78c1 8ea5 +78c5 e1fa +78c6 e1f5 +78ca e1fb +78cb e1f6 +78d0 94d6 +78d1 e1f4 +78d4 e1f7 +78da e241 +78e7 e240 +78e8 9681 +78ec e1fc +78ef 88e9 +78f4 e243 +78fd e242 +7901 8fca +7907 e244 +790e 9162 +7911 e246 +7912 e245 +7919 e247 +7926 e1e6 +792a e1e8 +792b e249 +792c e248 +7930 fb7c +793a 8ea6 +793c 97e7 +793e 8ed0 +7940 e24a +7941 8c56 +7947 8b5f +7948 8b46 +7949 8e83 +7950 9753 +7953 e250 +7955 e24f +7956 9163 +7957 e24c +795a e24e +795d 8f6a +795e 905f +795f e24d +7960 e24b +7962 9449 +7965 8fcb +7968 955b +796d 8dd5 +7977 9398 +797a e251 +797f e252 +7980 e268 +7981 8bd6 +7984 985c +7985 9154 +798a e253 +798d 89d0 +798e 92f5 +798f 959f +7994 fb81 +799b fb83 +799d e254 +79a6 8b9a +79a7 e255 +79aa e257 +79ae e258 +79b0 9448 +79b3 e259 +79b9 e25a +79ba e25b +79bd 8bd7 +79be 89d1 +79bf 93c3 +79c0 8f47 +79c1 8e84 +79c9 e25c +79cb 8f48 +79d1 89c8 +79d2 9562 +79d5 e25d +79d8 94e9 +79df 9164 +79e1 e260 +79e3 e261 +79e4 9489 +79e6 9060 +79e7 e25e +79e9 9281 +79ec e25f +79f0 8fcc +79fb 88da +7a00 8b48 +7a08 e262 +7a0b 92f6 +7a0d e263 +7a0e 90c5 +7a14 96ab +7a17 9542 +7a18 e264 +7a19 e265 +7a1a 9274 +7a1c 97c5 +7a1f e267 +7a20 e266 +7a2e 8eed +7a31 e269 +7a32 88ee +7a37 e26c +7a3b e26a +7a3c 89d2 +7a3d 8c6d +7a3e e26b +7a3f 8d65 +7a40 8d92 +7a42 95e4 +7a43 e26d +7a46 9673 +7a49 e26f +7a4d 90cf +7a4e 896e +7a4f 89b8 +7a50 88aa +7a57 e26e +7a61 e270 +7a62 e271 +7a63 8ff5 +7a69 e272 +7a6b 8a6e +7a70 e274 +7a74 8c8a +7a76 8b86 +7a79 e275 +7a7a 8bf3 +7a7d e276 +7a7f 90fa +7a81 93cb +7a83 90de +7a84 8df3 +7a88 e277 +7a92 9282 +7a93 918b +7a95 e279 +7a96 e27b +7a97 e278 +7a98 e27a +7a9f 8c41 +7aa9 e27c +7aaa 8c45 +7aae 8b87 +7aaf 9771 +7ab0 e27e +7ab6 e280 +7aba 894d +7abf e283 +7ac3 8a96 +7ac4 e282 +7ac5 e281 +7ac7 e285 +7ac8 e27d +7aca e286 +7acb 97a7 +7acd e287 +7acf e288 +7ad1 fb84 +7ad2 9af2 +7ad3 e28a +7ad5 e289 +7ad9 e28b +7ada e28c +7adc 97b3 +7add e28d +7adf e8ed +7ae0 8fcd +7ae1 e28e +7ae2 e28f +7ae3 8f76 +7ae5 93b6 +7ae6 e290 +7ae7 fb85 +7aea 9247 +7aeb fb87 +7aed e291 +7aef 925b +7af0 e292 +7af6 8ba3 +7af8 995e +7af9 927c +7afa 8eb1 +7aff 8ac6 +7b02 e293 +7b04 e2a0 +7b06 e296 +7b08 8b88 +7b0a e295 +7b0b e2a2 +7b0f e294 +7b11 8fce +7b18 e298 +7b19 e299 +7b1b 934a +7b1e e29a +7b20 8a7d +7b25 9079 +7b26 9584 +7b28 e29c +7b2c 91e6 +7b33 e297 +7b35 e29b +7b36 e29d +7b39 8df9 +7b45 e2a4 +7b46 954d +7b48 94a4 +7b49 9399 +7b4b 8bd8 +7b4c e2a3 +7b4d e2a1 +7b4f 94b3 +7b50 e29e +7b51 927d +7b52 939b +7b54 939a +7b56 8df4 +7b5d e2b6 +7b65 e2a6 +7b67 e2a8 +7b6c e2ab +7b6e e2ac +7b70 e2a9 +7b71 e2aa +7b74 e2a7 +7b75 e2a5 +7b7a e29f +7b86 95cd +7b87 89d3 +7b8b e2b3 +7b8d e2b0 +7b8f e2b5 +7b92 e2b4 +7b94 9493 +7b95 96a5 +7b97 8e5a +7b98 e2ae +7b99 e2b7 +7b9a e2b2 +7b9c e2b1 +7b9d e2ad +7b9e fb88 +7b9f e2af +7ba1 8ac7 +7baa 925c +7bad 90fb +7bb1 94a0 +7bb4 e2bc +7bb8 94a2 +7bc0 90df +7bc1 e2b9 +7bc4 94cd +7bc6 e2bd +7bc7 95d1 +7bc9 927a +7bcb e2b8 +7bcc e2ba +7bcf e2bb +7bdd e2be +7be0 8ec2 +7be4 93c4 +7be5 e2c3 +7be6 e2c2 +7be9 e2bf +7bed 9855 +7bf3 e2c8 +7bf6 e2cc +7bf7 e2c9 +7c00 e2c5 +7c07 e2c6 +7c0d e2cb +7c11 e2c0 +7c12 99d3 +7c13 e2c7 +7c14 e2c1 +7c17 e2ca +7c1f e2d0 +7c21 8ac8 +7c23 e2cd +7c27 e2ce +7c2a e2cf +7c2b e2d2 +7c37 e2d1 +7c38 94f4 +7c3d e2d3 +7c3e 97fa +7c3f 95eb +7c40 e2d8 +7c43 e2d5 +7c4c e2d4 +7c4d 90d0 +7c4f e2d7 +7c50 e2d9 +7c54 e2d6 +7c56 e2dd +7c58 e2da +7c5f e2db +7c60 e2c4 +7c64 e2dc +7c65 e2de +7c6c e2df +7c73 95c4 +7c75 e2e0 +7c7e 96e0 +7c81 8bcc +7c82 8c48 +7c83 e2e1 +7c89 95b2 +7c8b 9088 +7c8d 96ae +7c90 e2e2 +7c92 97b1 +7c95 9494 +7c97 9165 +7c98 9453 +7c9b 8f6c +7c9f 88be +7ca1 e2e7 +7ca2 e2e5 +7ca4 e2e3 +7ca5 8a9f +7ca7 8fcf +7ca8 e2e8 +7cab e2e6 +7cad e2e4 +7cae e2ec +7cb1 e2eb +7cb2 e2ea +7cb3 e2e9 +7cb9 e2ed +7cbd e2ee +7cbe 90b8 +7cc0 e2ef +7cc2 e2f1 +7cc5 e2f0 +7cca 8cd0 +7cce 9157 +7cd2 e2f3 +7cd6 939c +7cd8 e2f2 +7cdc e2f4 +7cde 95b3 +7cdf 918c +7ce0 8d66 +7ce2 e2f5 +7ce7 97c6 +7cef e2f7 +7cf2 e2f8 +7cf4 e2f9 +7cf6 e2fa +7cf8 8e85 +7cfa e2fb +7cfb 8c6e +7cfe 8b8a +7d00 8b49 +7d02 e340 +7d04 96f1 +7d05 8d67 +7d06 e2fc +7d0a e343 +7d0b 96e4 +7d0d 945b +7d10 9552 +7d14 8f83 +7d15 e342 +7d17 8ed1 +7d18 8d68 +7d19 8e86 +7d1a 8b89 +7d1b 95b4 +7d1c e341 +7d20 9166 +7d21 9661 +7d22 8df5 +7d2b 8e87 +7d2c 92db +7d2e e346 +7d2f 97dd +7d30 8dd7 +7d32 e347 +7d33 9061 +7d35 e349 +7d39 8fd0 +7d3a 8dae +7d3f e348 +7d42 8f49 +7d43 8cbc +7d44 9167 +7d45 e344 +7d46 e34a +7d48 fb8a +7d4b e345 +7d4c 8c6f +7d4e e34d +7d4f e351 +7d50 8c8b +7d56 e34c +7d5b e355 +7d5c fb8b +7d5e 8d69 +7d61 978d +7d62 88ba +7d63 e352 +7d66 8b8b +7d68 e34f +7d6e e350 +7d71 939d +7d72 e34e +7d73 e34b +7d75 8a47 +7d76 90e2 +7d79 8ca6 +7d7d e357 +7d89 e354 +7d8f e356 +7d93 e353 +7d99 8c70 +7d9a 91b1 +7d9b e358 +7d9c 918e +7d9f e365 +7da0 fb8d +7da2 e361 +7da3 e35b +7dab e35f +7dac 8ef8 +7dad 88db +7dae e35a +7daf e362 +7db0 e366 +7db1 8d6a +7db2 96d4 +7db4 92d4 +7db5 e35c +7db7 fb8c +7db8 e364 +7dba e359 +7dbb 925d +7dbd e35e +7dbe 88bb +7dbf 96c8 +7dc7 e35d +7dca 8bd9 +7dcb 94ea +7dcf 918d +7dd1 97ce +7dd2 8f8f +7dd5 e38e +7dd6 fb8e +7dd8 e367 +7dda 90fc +7ddc e363 +7ddd e368 +7dde e36a +7de0 92f7 +7de1 e36d +7de4 e369 +7de8 95d2 +7de9 8ac9 +7dec 96c9 +7def 88dc +7df2 e36c +7df4 97fb +7dfb e36b +7e01 898f +7e04 93ea +7e05 e36e +7e09 e375 +7e0a e36f +7e0b e376 +7e12 e372 +7e1b 949b +7e1e 8ec8 +7e1f e374 +7e21 e371 +7e22 e377 +7e23 e370 +7e26 8f63 +7e2b 9644 +7e2e 8f6b +7e31 e373 +7e32 e380 +7e35 e37b +7e37 e37e +7e39 e37c +7e3a e381 +7e3b e37a +7e3d e360 +7e3e 90d1 +7e41 94c9 +7e43 e37d +7e46 e378 +7e4a 9140 +7e4b 8c71 +7e4d 8f4a +7e52 fb8f +7e54 9044 +7e55 9155 +7e56 e384 +7e59 e386 +7e5a e387 +7e5d e383 +7e5e e385 +7e66 e379 +7e67 e382 +7e69 e38a +7e6a e389 +7e6d 969a +7e70 8c4a +7e79 e388 +7e7b e38c +7e7c e38b +7e7d e38f +7e7f e391 +7e82 8e5b +7e83 e38d +7e88 e392 +7e89 e393 +7e8a fa5c +7e8c e394 +7e8e e39a +7e8f 935a +7e90 e396 +7e92 e395 +7e93 e397 +7e94 e398 +7e96 e399 +7e9b e39b +7e9c e39c +7f36 8aca +7f38 e39d +7f3a e39e +7f45 e39f +7f47 fb90 +7f4c e3a0 +7f4d e3a1 +7f4e e3a2 +7f50 e3a3 +7f51 e3a4 +7f54 e3a6 +7f55 e3a5 +7f58 e3a7 +7f5f e3a8 +7f60 e3a9 +7f67 e3ac +7f68 e3aa +7f69 e3ab +7f6a 8ddf +7f6b 8c72 +7f6e 9275 +7f70 94b1 +7f72 8f90 +7f75 946c +7f77 94eb +7f78 e3ad +7f79 9ceb +7f82 e3ae +7f83 e3b0 +7f85 9785 +7f86 e3af +7f87 e3b2 +7f88 e3b1 +7f8a 9772 +7f8c e3b3 +7f8e 94fc +7f94 e3b4 +7f9a e3b7 +7f9d e3b6 +7f9e e3b5 +7fa1 fb91 +7fa3 e3b8 +7fa4 8c51 +7fa8 9141 +7fa9 8b60 +7fae e3bc +7faf e3b9 +7fb2 e3ba +7fb6 e3bd +7fb8 e3be +7fb9 e3bb +7fbd 8948 +7fc1 89a5 +7fc5 e3c0 +7fc6 e3c1 +7fca e3c2 +7fcc 9782 +7fd2 8f4b +7fd4 e3c4 +7fd5 e3c3 +7fe0 9089 +7fe1 e3c5 +7fe6 e3c6 +7fe9 e3c7 +7feb 8ae3 +7ff0 8acb +7ff3 e3c8 +7ff9 e3c9 +7ffb 967c +7ffc 9783 +8000 9773 +8001 9856 +8003 8d6c +8004 e3cc +8005 8ed2 +8006 e3cb +800b e3cd +800c 8ea7 +8010 91cf +8012 e3ce +8015 8d6b +8017 96d5 +8018 e3cf +8019 e3d0 +801c e3d1 +8021 e3d2 +8028 e3d3 +8033 8ea8 +8036 96eb +803b e3d5 +803d 925e +803f e3d4 +8046 e3d7 +804a e3d6 +8052 e3d8 +8056 90b9 +8058 e3d9 +805a e3da +805e 95b7 +805f e3db +8061 918f +8062 e3dc +8068 e3dd +806f 97fc +8070 e3e0 +8072 e3df +8073 e3de +8074 92ae +8076 e3e1 +8077 9045 +8079 e3e2 +807d e3e3 +807e 9857 +807f e3e4 +8084 e3e5 +8085 e3e7 +8086 e3e6 +8087 94a3 +8089 93f7 +808b 985d +808c 94a7 +8093 e3e9 +8096 8fd1 +8098 9549 +809a e3ea +809b e3e8 +809d 8acc +80a1 8cd2 +80a2 8e88 +80a5 94ec +80a9 8ca8 +80aa 9662 +80ac e3ed +80ad e3eb +80af 8d6d +80b1 8d6e +80b2 88e7 +80b4 8de6 +80ba 9478 +80c3 88dd +80c4 e3f2 +80c6 925f +80cc 9477 +80ce 91d9 +80d6 e3f4 +80d9 e3f0 +80da e3f3 +80db e3ee +80dd e3f1 +80de 9645 +80e1 8cd3 +80e4 88fb +80e5 e3ef +80ef e3f6 +80f1 e3f7 +80f4 93b7 +80f8 8bb9 +80fc e445 +80fd 945c +8102 8e89 +8105 8bba +8106 90c6 +8107 9865 +8108 96ac +8109 e3f5 +810a 90d2 +811a 8b72 +811b e3f8 +8123 e3fa +8129 e3f9 +812f e3fb +8131 9245 +8133 945d +8139 92af +813e e442 +8146 e441 +814b e3fc +814e 9074 +8150 9585 +8151 e444 +8153 e443 +8154 8d6f +8155 9872 +815f e454 +8165 e448 +8166 e449 +816b 8eee +816e e447 +8170 8d98 +8171 e446 +8174 e44a +8178 92b0 +8179 95a0 +817a 9142 +817f 91da +8180 e44e +8182 e44f +8183 e44b +8188 e44c +818a e44d +818f 8d70 +8193 e455 +8195 e451 +819a 9586 +819c 968c +819d 9547 +81a0 e450 +81a3 e453 +81a4 e452 +81a8 9663 +81a9 e456 +81b0 e457 +81b3 9156 +81b5 e458 +81b8 e45a +81ba e45e +81bd e45b +81be e459 +81bf 945e +81c0 e45c +81c2 e45d +81c6 89b0 +81c8 e464 +81c9 e45f +81cd e460 +81d1 e461 +81d3 919f +81d8 e463 +81d9 e462 +81da e465 +81df e466 +81e0 e467 +81e3 9062 +81e5 89e7 +81e7 e468 +81e8 97d5 +81ea 8ea9 +81ed 8f4c +81f3 8e8a +81f4 9276 +81fa e469 +81fb e46a +81fc 8950 +81fe e46b +8201 e46c +8202 e46d +8205 e46e +8207 e46f +8208 8bbb +8209 9da8 +820a e470 +820c 90e3 +820d e471 +820e 8ec9 +8210 e472 +8212 98ae +8216 e473 +8217 95dc +8218 8ada +821b 9143 +821c 8f77 +821e 9591 +821f 8f4d +8229 e474 +822a 8d71 +822b e475 +822c 94ca +822e e484 +8233 e477 +8235 91c7 +8236 9495 +8237 8cbd +8238 e476 +8239 9144 +8240 e478 +8247 92f8 +8258 e47a +8259 e479 +825a e47c +825d e47b +825f e47d +8262 e480 +8264 e47e +8266 8acd +8268 e481 +826a e482 +826b e483 +826e 8daf +826f 97c7 +8271 e485 +8272 9046 +8276 8990 +8277 e486 +8278 e487 +827e e488 +828b 88f0 +828d e489 +8292 e48a +8299 9587 +829d 8ec5 +829f e48c +82a5 8a48 +82a6 88b0 +82ab e48b +82ac e48e +82ad 946d +82af 9063 +82b1 89d4 +82b3 9646 +82b8 8c7c +82b9 8bda +82bb e48d +82bd 89e8 +82c5 8aa1 +82d1 8991 +82d2 e492 +82d3 97e8 +82d4 91db +82d7 9563 +82d9 e49e +82db 89d5 +82dc e49c +82de e49a +82df e491 +82e1 e48f +82e3 e490 +82e5 8ee1 +82e6 8bea +82e7 9297 +82eb 93cf +82f1 8970 +82f3 e494 +82f4 e493 +82f9 e499 +82fa e495 +82fb e498 +8301 fb93 +8302 96ce +8303 e497 +8304 89d6 +8305 8a9d +8306 e49b +8309 e49d +830e 8c73 +8316 e4a1 +8317 e4aa +8318 e4ab +831c 88a9 +8323 e4b2 +8328 88ef +832b e4a9 +832f e4a8 +8331 e4a3 +8332 e4a2 +8334 e4a0 +8335 e49f +8336 9283 +8338 91f9 +8339 e4a5 +8340 e4a4 +8345 e4a7 +8349 9190 +834a 8c74 +834f 8960 +8350 e4a6 +8352 8d72 +8358 9191 +8362 fb94 +8373 e4b8 +8375 e4b9 +8377 89d7 +837b 89ac +837c e4b6 +837f fb95 +8385 e4ac +8387 e4b4 +8389 e4bb +838a e4b5 +838e e4b3 +8393 e496 +8396 e4b1 +839a e4ad +839e 8ace +839f e4af +83a0 e4ba +83a2 e4b0 +83a8 e4bc +83aa e4ae +83ab 949c +83b1 9789 +83b5 e4b7 +83bd e4cd +83c1 e4c5 +83c5 909b +83c7 fb96 +83ca 8b65 +83cc 8bdb +83ce e4c0 +83d3 89d9 +83d6 8fd2 +83d8 e4c3 +83dc 8dd8 +83df 9370 +83e0 e4c8 +83e9 95ec +83eb e4bf +83ef 89d8 +83f0 8cd4 +83f1 9548 +83f2 e4c9 +83f4 e4bd +83f6 fb97 +83f7 e4c6 +83fb e4d0 +83fd e4c1 +8403 e4c2 +8404 93b8 +8407 e4c7 +840b e4c4 +840c 9647 +840d e4ca +840e 88de +8413 e4be +8420 e4cc +8422 e4cb +8429 948b +842a e4d2 +842c e4dd +8431 8a9e +8435 e4e0 +8438 e4ce +843c e4d3 +843d 978e +8446 e4dc +8448 fb98 +8449 9774 +844e 97a8 +8457 9298 +845b 8a8b +8461 9592 +8462 e4e2 +8463 939f +8466 88af +8469 e4db +846b e4d7 +846c 9192 +846d e4d1 +846e e4d9 +846f e4de +8471 944b +8475 88a8 +8477 e4d6 +8479 e4df +847a 9598 +8482 e4da +8484 e4d5 +848b 8fd3 +8490 8f4e +8494 8eaa +8499 96d6 +849c 9566 +849f e4e5 +84a1 e4ee +84ad e4d8 +84b2 8a97 +84b4 fb99 +84b8 8ff6 +84b9 e4e3 +84bb e4e8 +84bc 9193 +84bf e4e4 +84c1 e4eb +84c4 927e +84c6 e4ec +84c9 9775 +84ca e4e1 +84cb 8a57 +84cd e4e7 +84d0 e4ea +84d1 96aa +84d6 e4ed +84d9 e4e6 +84da e4e9 +84dc fa60 +84ec 9648 +84ee 9840 +84f4 e4f1 +84fc e4f8 +84ff e4f0 +8500 8ec1 +8506 e4cf +8511 95cc +8513 96a0 +8514 e4f7 +8515 e4f6 +8517 e4f2 +8518 e4f3 +851a 8955 +851f e4f5 +8521 e4ef +8526 92d3 +852c e4f4 +852d 88fc +8535 91a0 +853d 95c1 +8540 e4f9 +8541 e540 +8543 94d7 +8548 e4fc +8549 8fd4 +854a 8ec7 +854b e542 +854e 8bbc +8553 fb9a +8555 e543 +8557 9599 +8558 e4fb +8559 fb9b +855a e4d4 +8563 e4fa +8568 986e +8569 93a0 +856a 9593 +856b fb9c +856d e54a +8577 e550 +857e e551 +8580 e544 +8584 9496 +8587 e54e +8588 e546 +858a e548 +8590 e552 +8591 e547 +8594 e54b +8597 8992 +8599 93e3 +859b e54c +859c e54f +85a4 e545 +85a6 9145 +85a8 e549 +85a9 8e46 +85aa 9064 +85ab 8c4f +85ac 96f2 +85ae 96f7 +85af 8f92 +85b0 fb9e +85b9 e556 +85ba e554 +85c1 986d +85c9 e553 +85cd 9795 +85cf e555 +85d0 e557 +85d5 e558 +85dc e55b +85dd e559 +85e4 93a1 +85e5 e55a +85e9 94cb +85ea e54d +85f7 8f93 +85f9 e55c +85fa e561 +85fb 9194 +85fe e560 +8602 e541 +8606 e562 +8607 9168 +860a e55d +860b e55f +8613 e55e +8616 9f50 +8617 9f41 +861a e564 +8622 e563 +862d 9796 +862f e1ba +8630 e565 +863f e566 +864d e567 +864e 8cd5 +8650 8b73 +8654 e569 +8655 997c +865a 8b95 +865c 97b8 +865e 8bf1 +865f e56a +8667 e56b +866b 928e +8671 e56c +8679 93f8 +867b 88b8 +868a 89e1 +868b e571 +868c e572 +8693 e56d +8695 8e5c +86a3 e56e +86a4 9461 +86a9 e56f +86aa e570 +86ab e57a +86af e574 +86b0 e577 +86b6 e573 +86c4 e575 +86c6 e576 +86c7 8ed6 +86c9 e578 +86cb 9260 +86cd 8c75 +86ce 8a61 +86d4 e57b +86d9 8a5e +86db e581 +86de e57c +86df e580 +86e4 94b8 +86e9 e57d +86ec e57e +86ed 9567 +86ee 94d8 +86ef e582 +86f8 91fb +86f9 e58c +86fb e588 +86fe 89e9 +8700 e586 +8702 9649 +8703 e587 +8706 e584 +8708 e585 +8709 e58a +870a e58d +870d e58b +8711 e589 +8712 e583 +8718 9277 +871a e594 +871c 96a8 +8725 e592 +8729 e593 +8734 e58e +8737 e590 +873b e591 +873f e58f +8749 90e4 +874b 9858 +874c e598 +874e e599 +8753 e59f +8755 9049 +8757 e59b +8759 e59e +875f e596 +8760 e595 +8763 e5a0 +8766 89da +8768 e59c +876a e5a1 +876e e59d +8774 e59a +8776 92b1 +8778 e597 +877f 9488 +8782 e5a5 +878d 975a +879f e5a4 +87a2 e5a3 +87ab e5ac +87af e5a6 +87b3 e5ae +87ba 9786 +87bb e5b1 +87bd e5a8 +87c0 e5a9 +87c4 e5ad +87c6 e5b0 +87c7 e5af +87cb e5a7 +87d0 e5aa +87d2 e5bb +87e0 e5b4 +87ef e5b2 +87f2 e5b3 +87f6 e5b8 +87f7 e5b9 +87f9 8a49 +87fb 8b61 +87fe e5b7 +8805 e5a2 +8807 fba1 +880d e5b6 +880e e5ba +880f e5b5 +8811 e5bc +8815 e5be +8816 e5bd +8821 e5c0 +8822 e5bf +8823 e579 +8827 e5c4 +8831 e5c1 +8836 e5c2 +8839 e5c3 +883b e5c5 +8840 8c8c +8842 e5c7 +8844 e5c6 +8846 8f4f +884c 8d73 +884d 9fa5 +8852 e5c8 +8853 8f70 +8857 8a58 +8859 e5c9 +885b 8971 +885d 8fd5 +885e e5ca +8861 8d74 +8862 e5cb +8863 88df +8868 955c +886b e5cc +8870 908a +8872 e5d3 +8875 e5d0 +8877 928f +887d e5d1 +887e e5ce +887f 8bdc +8881 e5cd +8882 e5d4 +8888 8c55 +888b 91dc +888d e5da +8892 e5d6 +8896 91b3 +8897 e5d5 +8899 e5d8 +889e e5cf +88a2 e5d9 +88a4 e5db +88ab 94ed +88ae e5d7 +88b0 e5dc +88b1 e5de +88b4 8cd1 +88b5 e5d2 +88b7 88bf +88bf e5dd +88c1 8dd9 +88c2 97f4 +88c3 e5df +88c4 e5e0 +88c5 9195 +88cf 97a0 +88d4 e5e1 +88d5 9754 +88d8 e5e2 +88d9 e5e3 +88dc 95e2 +88dd e5e4 +88df 8dbe +88e1 97a1 +88e8 e5e9 +88f2 e5ea +88f3 8fd6 +88f4 e5e8 +88f5 fba2 +88f8 9787 +88f9 e5e5 +88fc e5e7 +88fd 90bb +88fe 909e +8902 e5e6 +8904 e5eb +8907 95a1 +890a e5ed +890c e5ec +8910 8a8c +8912 964a +8913 e5ee +891c fa5d +891d e5fa +891e e5f0 +8925 e5f1 +892a e5f2 +892b e5f3 +8936 e5f7 +8938 e5f8 +893b e5f6 +8941 e5f4 +8943 e5ef +8944 e5f5 +894c e5f9 +894d e8b5 +8956 89a6 +895e e5fc +895f 8bdd +8960 e5fb +8964 e641 +8966 e640 +896a e643 +896d e642 +896f e644 +8972 8f50 +8974 e645 +8977 e646 +897e e647 +897f 90bc +8981 9776 +8983 e648 +8986 95a2 +8987 9465 +8988 e649 +898a e64a +898b 8ca9 +898f 8b4b +8993 e64b +8996 8e8b +8997 9460 +8998 e64c +899a 8a6f +89a1 e64d +89a6 e64f +89a7 9797 +89a9 e64e +89aa 9065 +89ac e650 +89af e651 +89b2 e652 +89b3 8acf +89ba e653 +89bd e654 +89bf e655 +89c0 e656 +89d2 8a70 +89da e657 +89dc e658 +89dd e659 +89e3 89f0 +89e6 9047 +89e7 e65a +89f4 e65b +89f8 e65c +8a00 8cbe +8a02 92f9 +8a03 e65d +8a08 8c76 +8a0a 9075 +8a0c e660 +8a0e 93a2 +8a10 e65f +8a12 fba3 +8a13 8c50 +8a16 e65e +8a17 91f5 +8a18 8b4c +8a1b e661 +8a1d e662 +8a1f 8fd7 +8a23 8c8d +8a25 e663 +8a2a 964b +8a2d 90dd +8a31 8b96 +8a33 96f3 +8a34 9169 +8a36 e664 +8a37 fba4 +8a3a 9066 +8a3b 9290 +8a3c 8fd8 +8a41 e665 +8a46 e668 +8a48 e669 +8a50 8dbc +8a51 91c0 +8a52 e667 +8a54 8fd9 +8a55 955d +8a5b e666 +8a5e 8e8c +8a60 8972 +8a62 e66d +8a63 8c77 +8a66 8e8e +8a69 8e8d +8a6b 986c +8a6c e66c +8a6d e66b +8a6e 9146 +8a70 8b6c +8a71 9862 +8a72 8a59 +8a73 8fda +8a79 fba5 +8a7c e66a +8a82 e66f +8a84 e670 +8a85 e66e +8a87 8cd6 +8a89 975f +8a8c 8e8f +8a8d 9446 +8a91 e673 +8a93 90be +8a95 9261 +8a98 9755 +8a9a e676 +8a9e 8cea +8aa0 90bd +8aa1 e672 +8aa3 e677 +8aa4 8ceb +8aa5 e674 +8aa6 e675 +8aa7 fba6 +8aa8 e671 +8aac 90e0 +8aad 93c7 +8ab0 924e +8ab2 89db +8ab9 94ee +8abc 8b62 +8abe fba7 +8abf 92b2 +8ac2 e67a +8ac4 e678 +8ac7 926b +8acb 90bf +8acc 8ad0 +8acd e679 +8acf 907a +8ad2 97c8 +8ad6 985f +8ada e67b +8adb e687 +8adc 92b3 +8ade e686 +8adf fba8 +8ae0 e683 +8ae1 e68b +8ae2 e684 +8ae4 e680 +8ae6 92fa +8ae7 e67e +8aeb e67c +8aed 9740 +8aee 8e90 +8af1 e681 +8af3 e67d +8af6 fbaa +8af7 e685 +8af8 8f94 +8afa 8cbf +8afe 91f8 +8b00 9664 +8b01 8979 +8b02 88e0 +8b04 93a3 +8b07 e689 +8b0c e688 +8b0e 93e4 +8b10 e68d +8b14 e682 +8b16 e68c +8b17 e68e +8b19 8caa +8b1a e68a +8b1b 8d75 +8b1d 8ed3 +8b20 e68f +8b21 9777 +8b26 e692 +8b28 e695 +8b2b e693 +8b2c 9554 +8b33 e690 +8b39 8bde +8b3e e694 +8b41 e696 +8b49 e69a +8b4c e697 +8b4e e699 +8b4f e698 +8b53 fbab +8b56 e69b +8b58 8eaf +8b5a e69d +8b5b e69c +8b5c 9588 +8b5f e69f +8b66 8c78 +8b6b e69e +8b6c e6a0 +8b6f e6a1 +8b70 8b63 +8b71 e3bf +8b72 8ff7 +8b74 e6a2 +8b77 8cec +8b7d e6a3 +8b7f fbac +8b80 e6a4 +8b83 8e5d +8b8a 9dcc +8b8c e6a5 +8b8e e6a6 +8b90 8f51 +8b92 e6a7 +8b93 e6a8 +8b96 e6a9 +8b99 e6aa +8b9a e6ab +8c37 924a +8c3a e6ac +8c3f e6ae +8c41 e6ad +8c46 93a4 +8c48 e6af +8c4a 964c +8c4c e6b0 +8c4e e6b1 +8c50 e6b2 +8c55 e6b3 +8c5a 93d8 +8c61 8fdb +8c62 e6b4 +8c6a 8d8b +8c6b 98ac +8c6c e6b5 +8c78 e6b6 +8c79 955e +8c7a e6b7 +8c7c e6bf +8c82 e6b8 +8c85 e6ba +8c89 e6b9 +8c8a e6bb +8c8c 9665 +8c8d e6bc +8c8e e6bd +8c94 e6be +8c98 e6c0 +8c9d 8a4c +8c9e 92e5 +8ca0 9589 +8ca1 8de0 +8ca2 8d76 +8ca7 956e +8ca8 89dd +8ca9 94cc +8caa e6c3 +8cab 8ad1 +8cac 90d3 +8cad e6c2 +8cae e6c7 +8caf 9299 +8cb0 96e1 +8cb2 e6c5 +8cb3 e6c6 +8cb4 8b4d +8cb6 e6c8 +8cb7 9483 +8cb8 91dd +8cbb 94ef +8cbc 935c +8cbd e6c4 +8cbf 9666 +8cc0 89ea +8cc1 e6ca +8cc2 9847 +8cc3 92c0 +8cc4 9864 +8cc7 8e91 +8cc8 e6c9 +8cca 91af +8ccd e6da +8cce 9147 +8cd1 93f6 +8cd3 956f +8cda e6cd +8cdb 8e5e +8cdc 8e92 +8cde 8fdc +8ce0 9485 +8ce2 8cab +8ce3 e6cc +8ce4 e6cb +8ce6 958a +8cea 8ebf +8ced 9371 +8cf0 fbad +8cf4 fbae +8cfa e6cf +8cfb e6d0 +8cfc 8d77 +8cfd e6ce +8d04 e6d1 +8d05 e6d2 +8d07 e6d4 +8d08 91a1 +8d0a e6d3 +8d0b 8ae4 +8d0d e6d6 +8d0f e6d5 +8d10 e6d7 +8d12 fbaf +8d13 e6d9 +8d14 e6db +8d16 e6dc +8d64 90d4 +8d66 8ecd +8d67 e6dd +8d6b 8a71 +8d6d e6de +8d70 9196 +8d71 e6df +8d73 e6e0 +8d74 958b +8d76 fbb0 +8d77 8b4e +8d81 e6e1 +8d85 92b4 +8d8a 897a +8d99 e6e2 +8da3 8eef +8da8 9096 +8db3 91ab +8dba e6e5 +8dbe e6e4 +8dc2 e6e3 +8dcb e6eb +8dcc e6e9 +8dcf e6e6 +8dd6 e6e8 +8dda e6e7 +8ddb e6ea +8ddd 8b97 +8ddf e6ee +8de1 90d5 +8de3 e6ef +8de8 8cd7 +8dea e6ec +8deb e6ed +8def 9848 +8df3 92b5 +8df5 9148 +8dfc e6f0 +8dff e6f3 +8e08 e6f1 +8e09 e6f2 +8e0a 9778 +8e0f 93a5 +8e10 e6f6 +8e1d e6f4 +8e1e e6f5 +8e1f e6f7 +8e2a e748 +8e30 e6fa +8e34 e6fb +8e35 e6f9 +8e42 e6f8 +8e44 92fb +8e47 e740 +8e48 e744 +8e49 e741 +8e4a e6fc +8e4c e742 +8e50 e743 +8e55 e74a +8e59 e745 +8e5f 90d6 +8e60 e747 +8e63 e749 +8e64 e746 +8e72 e74c +8e74 8f52 +8e76 e74b +8e7c e74d +8e81 e74e +8e84 e751 +8e85 e750 +8e87 e74f +8e8a e753 +8e8b e752 +8e8d 96f4 +8e91 e755 +8e93 e754 +8e94 e756 +8e99 e757 +8ea1 e759 +8eaa e758 +8eab 9067 +8eac e75a +8eaf 8beb +8eb0 e75b +8eb1 e75d +8ebe e75e +8ec5 e75f +8ec6 e75c +8ec8 e760 +8eca 8ed4 +8ecb e761 +8ecc 8b4f +8ecd 8c52 +8ecf fbb2 +8ed2 8cac +8edb e762 +8edf 93ee +8ee2 935d +8ee3 e763 +8eeb e766 +8ef8 8eb2 +8efb e765 +8efc e764 +8efd 8c79 +8efe e767 +8f03 8a72 +8f05 e769 +8f09 8dda +8f0a e768 +8f0c e771 +8f12 e76b +8f13 e76d +8f14 95e3 +8f15 e76a +8f19 e76c +8f1b e770 +8f1c e76e +8f1d 8b50 +8f1f e76f +8f26 e772 +8f29 9479 +8f2a 97d6 +8f2f 8f53 +8f33 e773 +8f38 9741 +8f39 e775 +8f3b e774 +8f3e e778 +8f3f 9760 +8f42 e777 +8f44 8a8d +8f45 e776 +8f46 e77b +8f49 e77a +8f4c e779 +8f4d 9351 +8f4e e77c +8f57 e77d +8f5c e77e +8f5f 8d8c +8f61 8c44 +8f62 e780 +8f63 e781 +8f64 e782 +8f9b 9068 +8f9c e783 +8f9e 8eab +8f9f e784 +8fa3 e785 +8fa7 999f +8fa8 999e +8fad e786 +8fae e390 +8faf e787 +8fb0 9243 +8fb1 904a +8fb2 945f +8fb7 e788 +8fba 95d3 +8fbb 92d2 +8fbc 8d9e +8fbf 9248 +8fc2 8949 +8fc4 9698 +8fc5 9076 +8fce 8c7d +8fd1 8bdf +8fd4 95d4 +8fda e789 +8fe2 e78b +8fe5 e78a +8fe6 89de +8fe9 93f4 +8fea e78c +8feb 9497 +8fed 9352 +8fef e78d +8ff0 8f71 +8ff4 e78f +8ff7 96c0 +8ff8 e79e +8ff9 e791 +8ffa e792 +8ffd 92c7 +9000 91de +9001 9197 +9003 93a6 +9005 e790 +9006 8b74 +900b e799 +900d e796 +900e e7a3 +900f 93a7 +9010 9280 +9011 e793 +9013 92fc +9014 9372 +9015 e794 +9016 e798 +9017 9080 +9019 9487 +901a 92ca +901d 90c0 +901e e797 +901f 91ac +9020 91a2 +9021 e795 +9022 88a7 +9023 9841 +9027 e79a +902e 91df +9031 8f54 +9032 9069 +9035 e79c +9036 e79b +9038 88ed +9039 e79d +903c 954e +903e e7a5 +9041 93d9 +9042 908b +9045 9278 +9047 8bf6 +9049 e7a4 +904a 9756 +904b 895e +904d 95d5 +904e 89df +904f e79f +9050 e7a0 +9051 e7a1 +9052 e7a2 +9053 93b9 +9054 9242 +9055 88e1 +9056 e7a6 +9058 e7a7 +9059 eaa1 +905c 91bb +905e e7a8 +9060 8993 +9061 916b +9063 8cad +9065 9779 +9067 fbb5 +9068 e7a9 +9069 934b +906d 9198 +906e 8ed5 +906f e7aa +9072 e7ad +9075 8f85 +9076 e7ab +9077 914a +9078 9149 +907a 88e2 +907c 97c9 +907d e7af +907f 94f0 +9080 e7b1 +9081 e7b0 +9082 e7ae +9083 e284 +9084 8ad2 +9087 e78e +9089 e7b3 +908a e7b2 +908f e7b4 +9091 9757 +90a3 93df +90a6 964d +90a8 e7b5 +90aa 8ed7 +90af e7b6 +90b1 e7b7 +90b5 e7b8 +90b8 9340 +90c1 88e8 +90ca 8d78 +90ce 9859 +90db e7bc +90de fbb6 +90e1 8c53 +90e2 e7b9 +90e4 e7ba +90e8 9594 +90ed 8a73 +90f5 9758 +90f7 8bbd +90fd 9373 +9102 e7bd +9112 e7be +9115 fbb8 +9119 e7bf +9127 fbb9 +912d 9341 +9130 e7c1 +9132 e7c0 +9149 93d1 +914a e7c2 +914b 8f55 +914c 8ede +914d 947a +914e 9291 +9152 8ef0 +9154 908c +9156 e7c3 +9158 e7c4 +9162 907c +9163 e7c5 +9165 e7c6 +9169 e7c7 +916a 978f +916c 8f56 +9172 e7c9 +9173 e7c8 +9175 8d79 +9177 8d93 +9178 8e5f +9182 e7cc +9187 8f86 +9189 e7cb +918b e7ca +918d 91e7 +9190 8ced +9192 90c1 +9197 94ae +919c 8f58 +91a2 e7cd +91a4 8fdd +91aa e7d0 +91ab e7ce +91af e7cf +91b4 e7d2 +91b5 e7d1 +91b8 8ff8 +91ba e7d3 +91c0 e7d4 +91c1 e7d5 +91c6 94ce +91c7 8dd1 +91c8 8edf +91c9 e7d6 +91cb e7d7 +91cc 97a2 +91cd 8f64 +91ce 96ec +91cf 97ca +91d0 e7d8 +91d1 8be0 +91d6 e7d9 +91d7 fbbb +91d8 9342 +91da fbba +91db e7dc +91dc 8a98 +91dd 906a +91de fbbc +91df e7da +91e1 e7db +91e3 92de +91e4 fbbf +91e5 fbc0 +91e6 9674 +91e7 8bfa +91ed fbbd +91ee fbbe +91f5 e7de +91f6 e7df +91fc e7dd +91ff e7e1 +9206 fbc1 +920a fbc3 +920d 93dd +920e 8a62 +9210 fbc2 +9211 e7e5 +9214 e7e2 +9215 e7e4 +921e e7e0 +9229 e86e +922c e7e3 +9234 97e9 +9237 8cd8 +9239 fbca +923a fbc4 +923c fbc6 +923f e7ed +9240 fbc5 +9244 9353 +9245 e7e8 +9248 e7eb +9249 e7e9 +924b e7ee +924e fbc7 +9250 e7ef +9251 fbc9 +9257 e7e7 +9259 fbc8 +925a e7f4 +925b 8994 +925e e7e6 +9262 94ab +9264 e7ea +9266 8fde +9267 fbcb +9271 8d7a +9277 fbcd +9278 fbce +927e 9667 +9280 8be2 +9283 8f65 +9285 93ba +9288 fa5f +9291 914c +9293 e7f2 +9295 e7ec +9296 e7f1 +9298 96c1 +929a 92b6 +929b e7f3 +929c e7f0 +92a7 fbcc +92ad 914b +92b7 e7f7 +92b9 e7f6 +92cf e7f5 +92d0 fbd2 +92d2 964e +92d3 fbd6 +92d5 fbd4 +92d7 fbd0 +92d9 fbd1 +92e0 fbd5 +92e4 8f9b +92e7 fbcf +92e9 e7f8 +92ea 95dd +92ed 8973 +92f2 9565 +92f3 9292 +92f8 8b98 +92f9 fa65 +92fa e7fa +92fb fbd9 +92fc 8d7c +92ff fbdc +9302 fbde +9306 8e4b +930f e7f9 +9310 908d +9318 908e +9319 e840 +931a e842 +931d fbdd +931e fbdb +9320 8ff9 +9321 fbd8 +9322 e841 +9323 e843 +9325 fbd7 +9326 8bd1 +9328 9564 +932b 8ee0 +932c 9842 +932e e7fc +932f 8df6 +9332 985e +9335 e845 +933a e844 +933b e846 +9344 e7fb +9348 fa5e +934b 93e7 +934d 9374 +9354 92d5 +9356 e84b +9357 fbe0 +935b 9262 +935c e847 +9360 e848 +936c 8c4c +936e e84a +9370 fbdf +9375 8cae +937c e849 +937e 8fdf +938c 8a99 +9394 e84f +9396 8dbd +9397 9199 +939a 92c8 +93a4 fbe1 +93a7 8a5a +93ac e84d +93ad e84e +93ae 92c1 +93b0 e84c +93b9 e850 +93c3 e856 +93c6 fbe2 +93c8 e859 +93d0 e858 +93d1 934c +93d6 e851 +93d7 e852 +93d8 e855 +93dd e857 +93de fbe3 +93e1 8bbe +93e4 e85a +93e5 e854 +93e8 e853 +93f8 fbe4 +9403 e85e +9407 e85f +9410 e860 +9413 e85d +9414 e85c +9418 8fe0 +9419 93a8 +941a e85b +9421 e864 +942b e862 +9431 fbe5 +9435 e863 +9436 e861 +9438 91f6 +943a e865 +9441 e866 +9444 e868 +9445 fbe6 +9448 fbe7 +9451 8ad3 +9452 e867 +9453 96f8 +945a e873 +945b e869 +945e e86c +9460 e86a +9462 e86b +946a e86d +9470 e86f +9475 e870 +9477 e871 +947c e874 +947d e872 +947e e875 +947f e877 +9481 e876 +9577 92b7 +9580 96e5 +9582 e878 +9583 914d +9587 e879 +9589 95c2 +958a e87a +958b 8a4a +958f 895b +9591 8ad5 +9592 fbe8 +9593 8ad4 +9594 e87b +9596 e87c +9598 e87d +9599 e87e +95a0 e880 +95a2 8ad6 +95a3 8a74 +95a4 8d7d +95a5 94b4 +95a7 e882 +95a8 e881 +95ad e883 +95b2 897b +95b9 e886 +95bb e885 +95bc e884 +95be e887 +95c3 e88a +95c7 88c5 +95ca e888 +95cc e88c +95cd e88b +95d4 e88e +95d5 e88d +95d6 e88f +95d8 93ac +95dc e890 +95e1 e891 +95e2 e893 +95e5 e892 +961c 958c +9621 e894 +9628 e895 +962a 8de3 +962e e896 +962f e897 +9632 9668 +963b 916a +963f 88a2 +9640 91c9 +9642 e898 +9644 958d +964b e89b +964c e899 +964d 8d7e +964f e89a +9650 8cc0 +965b 95c3 +965c e89d +965d e89f +965e e89e +965f e8a0 +9662 8940 +9663 9077 +9664 8f9c +9665 8ad7 +9666 e8a1 +966a 9486 +966c e8a3 +9670 8941 +9672 e8a2 +9673 92c2 +9675 97cb +9676 93a9 +9677 e89c +9678 97a4 +967a 8caf +967d 977a +9685 8bf7 +9686 97b2 +9688 8c47 +968a 91e0 +968b e440 +968d e8a4 +968e 8a4b +968f 908f +9694 8a75 +9695 e8a6 +9697 e8a7 +9698 e8a5 +9699 8c84 +969b 8ddb +969c 8fe1 +969d fbeb +96a0 8942 +96a3 97d7 +96a7 e8a9 +96a8 e7ac +96aa e8a8 +96af fbec +96b0 e8ac +96b1 e8aa +96b2 e8ab +96b4 e8ad +96b6 e8ae +96b7 97ea +96b8 e8af +96b9 e8b0 +96bb 90c7 +96bc 94b9 +96c0 909d +96c1 8ae5 +96c4 9759 +96c5 89eb +96c6 8f57 +96c7 8cd9 +96c9 e8b3 +96cb e8b2 +96cc 8e93 +96cd e8b4 +96ce e8b1 +96d1 8e47 +96d5 e8b8 +96d6 e5ab +96d9 99d4 +96db 9097 +96dc e8b6 +96e2 97a3 +96e3 93ef +96e8 894a +96ea 90e1 +96eb 8eb4 +96f0 95b5 +96f2 895f +96f6 97eb +96f7 978b +96f9 e8b9 +96fb 9364 +9700 8ef9 +9704 e8ba +9706 e8bb +9707 906b +9708 e8bc +970a 97ec +970d e8b7 +970e e8be +970f e8c0 +9711 e8bf +9713 e8bd +9716 e8c1 +9719 e8c2 +971c 919a +971e 89e0 +9724 e8c3 +9727 96b6 +972a e8c4 +9730 e8c5 +9732 9849 +9733 fbed +9738 9e50 +9739 e8c6 +973b fbee +973d e8c7 +973e e8c8 +9742 e8cc +9743 fbef +9744 e8c9 +9746 e8ca +9748 e8cb +9749 e8cd +974d fbf0 +974f fbf1 +9751 fbf2 +9752 90c2 +9755 fbf3 +9756 96f5 +9759 90c3 +975c e8ce +975e 94f1 +9760 e8cf +9761 ea72 +9762 96ca +9764 e8d0 +9766 e8d1 +9768 e8d2 +9769 8a76 +976b e8d4 +976d 9078 +9771 e8d5 +9774 8c43 +9779 e8d6 +977a e8da +977c e8d8 +9781 e8d9 +9784 8a93 +9785 e8d7 +9786 e8db +978b e8dc +978d 88c6 +978f e8dd +9790 e8de +9798 8fe2 +979c e8df +97a0 8b66 +97a3 e8e2 +97a6 e8e1 +97a8 e8e0 +97ab e691 +97ad 95da +97b3 e8e3 +97b4 e8e4 +97c3 e8e5 +97c6 e8e6 +97c8 e8e7 +97cb e8e8 +97d3 8ad8 +97dc e8e9 +97ed e8ea +97ee 9442 +97f2 e8ec +97f3 89b9 +97f5 e8ef +97f6 e8ee +97fb 8943 +97ff 8bbf +9801 95c5 +9802 92b8 +9803 8da0 +9805 8d80 +9806 8f87 +9808 907b +980c e8f1 +980f e8f0 +9810 9761 +9811 8ae6 +9812 94d0 +9813 93da +9817 909c +9818 97cc +981a 8c7a +9821 e8f4 +9824 e8f3 +982c 966a +982d 93aa +9834 896f +9837 e8f5 +9838 e8f2 +983b 9570 +983c 978a +983d e8f6 +9846 e8f7 +984b e8f9 +984c 91e8 +984d 8a7a +984e 8a7b +984f e8f8 +9854 8ae7 +9855 8cb0 +9857 fbf4 +9858 8ae8 +985b 935e +985e 97de +9865 fbf5 +9867 8cda +986b e8fa +986f e8fb +9870 e8fc +9871 e940 +9873 e942 +9874 e941 +98a8 9597 +98aa e943 +98af e944 +98b1 e945 +98b6 e946 +98c3 e948 +98c4 e947 +98c6 e949 +98db 94f2 +98dc e3ca +98df 9048 +98e2 8b51 +98e9 e94a +98eb e94b +98ed 99aa +98ee 9f5a +98ef 94d1 +98f2 88f9 +98f4 88b9 +98fc 8e94 +98fd 964f +98fe 8ffc +9903 e94c +9905 96dd +9909 e94d +990a 977b +990c 8961 +9910 8e60 +9912 e94e +9913 89ec +9914 e94f +9918 e950 +991d e952 +991e e953 +9920 e955 +9921 e951 +9924 e954 +9927 fbf8 +9928 8ad9 +992c e956 +992e e957 +993d e958 +993e e959 +9942 e95a +9945 e95c +9949 e95b +994b e95e +994c e961 +9950 e95d +9951 e95f +9952 e960 +9955 e962 +9957 8bc0 +9996 8ef1 +9997 e963 +9998 e964 +9999 8d81 +999e fbfa +99a5 e965 +99a8 8a5d +99ac 946e +99ad e966 +99ae e967 +99b3 9279 +99b4 93e9 +99bc e968 +99c1 949d +99c4 91ca +99c5 8977 +99c6 8bec +99c8 8bed +99d0 9293 +99d1 e96d +99d2 8bee +99d5 89ed +99d8 e96c +99db e96a +99dd e96b +99df e969 +99e2 e977 +99ed e96e +99ee e96f +99f1 e970 +99f2 e971 +99f8 e973 +99fb e972 +99ff 8f78 +9a01 e974 +9a05 e976 +9a0e 8b52 +9a0f e975 +9a12 919b +9a13 8cb1 +9a19 e978 +9a28 91cb +9a2b e979 +9a30 93ab +9a37 e97a +9a3e e980 +9a40 e97d +9a42 e97c +9a43 e97e +9a45 e97b +9a4d e982 +9a4e fbfb +9a55 e981 +9a57 e984 +9a5a 8bc1 +9a5b e983 +9a5f e985 +9a62 e986 +9a64 e988 +9a65 e987 +9a69 e989 +9a6a e98b +9a6b e98a +9aa8 8d9c +9aad e98c +9ab0 e98d +9ab8 8a5b +9abc e98e +9ac0 e98f +9ac4 9091 +9acf e990 +9ad1 e991 +9ad3 e992 +9ad4 e993 +9ad8 8d82 +9ad9 fbfc +9adc fc40 +9ade e994 +9adf e995 +9ae2 e996 +9ae3 e997 +9ae6 e998 +9aea 94af +9aeb e99a +9aed 9545 +9aee e99b +9aef e999 +9af1 e99d +9af4 e99c +9af7 e99e +9afb e99f +9b06 e9a0 +9b18 e9a1 +9b1a e9a2 +9b1f e9a3 +9b22 e9a4 +9b23 e9a5 +9b25 e9a6 +9b27 e9a7 +9b28 e9a8 +9b29 e9a9 +9b2a e9aa +9b2e e9ab +9b2f e9ac +9b31 9f54 +9b32 e9ad +9b3b e2f6 +9b3c 8b53 +9b41 8a40 +9b42 8db0 +9b43 e9af +9b44 e9ae +9b45 96a3 +9b4d e9b1 +9b4e e9b2 +9b4f e9b0 +9b51 e9b3 +9b54 9682 +9b58 e9b4 +9b5a 8b9b +9b6f 9844 +9b72 fc42 +9b74 e9b5 +9b75 fc41 +9b83 e9b7 +9b8e 88bc +9b8f fc43 +9b91 e9b8 +9b92 95a9 +9b93 e9b6 +9b96 e9b9 +9b97 e9ba +9b9f e9bb +9ba0 e9bc +9ba8 e9bd +9baa 968e +9bab 8e4c +9bad 8df8 +9bae 914e +9bb1 fc44 +9bb4 e9be +9bb9 e9c1 +9bbb fc45 +9bc0 e9bf +9bc6 e9c2 +9bc9 8cef +9bca e9c0 +9bcf e9c3 +9bd1 e9c4 +9bd2 e9c5 +9bd4 e9c9 +9bd6 8e49 +9bdb 91e2 +9be1 e9ca +9be2 e9c7 +9be3 e9c6 +9be4 e9c8 +9be8 8c7e +9bf0 e9ce +9bf1 e9cd +9bf2 e9cc +9bf5 88b1 +9c00 fc46 +9c04 e9d8 +9c06 e9d4 +9c08 e9d5 +9c09 e9d1 +9c0a e9d7 +9c0c e9d3 +9c0d 8a82 +9c10 986b +9c12 e9d6 +9c13 e9d2 +9c14 e9d0 +9c15 e9cf +9c1b e9da +9c21 e9dd +9c24 e9dc +9c25 e9db +9c2d 9568 +9c2e e9d9 +9c2f 88f1 +9c30 e9de +9c32 e9e0 +9c39 8a8f +9c3a e9cb +9c3b 8956 +9c3e e9e2 +9c46 e9e1 +9c47 e9df +9c48 924c +9c52 9690 +9c57 97d8 +9c5a e9e3 +9c60 e9e4 +9c67 e9e5 +9c76 e9e6 +9c78 e9e7 +9ce5 92b9 +9ce7 e9e8 +9ce9 94b5 +9ceb e9ed +9cec e9e9 +9cf0 e9ea +9cf3 9650 +9cf4 96c2 +9cf6 93ce +9d03 e9ee +9d06 e9ef +9d07 93bc +9d08 e9ec +9d09 e9eb +9d0e 89a8 +9d12 e9f7 +9d15 e9f6 +9d1b 8995 +9d1f e9f4 +9d23 e9f3 +9d26 e9f1 +9d28 8a9b +9d2a e9f0 +9d2b 8eb0 +9d2c 89a7 +9d3b 8d83 +9d3e e9fa +9d3f e9f9 +9d41 e9f8 +9d44 e9f5 +9d46 e9fb +9d48 e9fc +9d50 ea44 +9d51 ea43 +9d59 ea45 +9d5c 894c +9d5d ea40 +9d5e ea41 +9d60 8d94 +9d61 96b7 +9d64 ea42 +9d6b fc48 +9d6c 9651 +9d6f ea4a +9d70 fc47 +9d72 ea46 +9d7a ea4b +9d87 ea48 +9d89 ea47 +9d8f 8c7b +9d9a ea4c +9da4 ea4d +9da9 ea4e +9dab ea49 +9daf e9f2 +9db2 ea4f +9db4 92df +9db8 ea53 +9dba ea54 +9dbb ea52 +9dc1 ea51 +9dc2 ea57 +9dc4 ea50 +9dc6 ea55 +9dcf ea56 +9dd3 ea59 +9dd9 ea58 +9de6 ea5b +9ded ea5c +9def ea5d +9df2 9868 +9df8 ea5a +9df9 91e9 +9dfa 8deb +9dfd ea5e +9e19 fc4a +9e1a ea5f +9e1b ea60 +9e1e ea61 +9e75 ea62 +9e78 8cb2 +9e79 ea63 +9e7d ea64 +9e7f 8ead +9e81 ea65 +9e88 ea66 +9e8b ea67 +9e8c ea68 +9e91 ea6b +9e92 ea69 +9e93 985b +9e95 ea6a +9e97 97ed +9e9d ea6c +9e9f 97d9 +9ea5 ea6d +9ea6 949e +9ea9 ea6e +9eaa ea70 +9ead ea71 +9eb8 ea6f +9eb9 8d8d +9eba 96cb +9ebb 9683 +9ebc 9bf5 +9ebe 9f80 +9ebf 969b +9ec4 89a9 +9ecc ea73 +9ecd 8b6f +9ece ea74 +9ecf ea75 +9ed0 ea76 +9ed1 fc4b +9ed2 8d95 +9ed4 ea77 +9ed8 e0d2 +9ed9 96d9 +9edb 91e1 +9edc ea78 +9edd ea7a +9ede ea79 +9ee0 ea7b +9ee5 ea7c +9ee8 ea7d +9eef ea7e +9ef4 ea80 +9ef6 ea81 +9ef7 ea82 +9ef9 ea83 +9efb ea84 +9efc ea85 +9efd ea86 +9f07 ea87 +9f08 ea88 +9f0e 9343 +9f13 8cdb +9f15 ea8a +9f20 916c +9f21 ea8b +9f2c ea8c +9f3b 9540 +9f3e ea8d +9f4a ea8e +9f4b e256 +9f4e e6d8 +9f4f e8eb +9f52 ea8f +9f54 ea90 +9f5f ea92 +9f60 ea93 +9f61 ea94 +9f62 97ee +9f63 ea91 +9f66 ea95 +9f67 ea96 +9f6a ea98 +9f6c ea97 +9f72 ea9a +9f76 ea9b +9f77 ea99 +9f8d 97b4 +9f95 ea9c +9f9c ea9d +9f9d e273 +9fa0 ea9e +e000 f040 +e001 f041 +e002 f042 +e003 f043 +e004 f044 +e005 f045 +e006 f046 +e007 f047 +e008 f048 +e009 f049 +e00a f04a +e00b f04b +e00c f04c +e00d f04d +e00e f04e +e00f f04f +e010 f050 +e011 f051 +e012 f052 +e013 f053 +e014 f054 +e015 f055 +e016 f056 +e017 f057 +e018 f058 +e019 f059 +e01a f05a +e01b f05b +e01c f05c +e01d f05d +e01e f05e +e01f f05f +e020 f060 +e021 f061 +e022 f062 +e023 f063 +e024 f064 +e025 f065 +e026 f066 +e027 f067 +e028 f068 +e029 f069 +e02a f06a +e02b f06b +e02c f06c +e02d f06d +e02e f06e +e02f f06f +e030 f070 +e031 f071 +e032 f072 +e033 f073 +e034 f074 +e035 f075 +e036 f076 +e037 f077 +e038 f078 +e039 f079 +e03a f07a +e03b f07b +e03c f07c +e03d f07d +e03e f07e +e03f f080 +e040 f081 +e041 f082 +e042 f083 +e043 f084 +e044 f085 +e045 f086 +e046 f087 +e047 f088 +e048 f089 +e049 f08a +e04a f08b +e04b f08c +e04c f08d +e04d f08e +e04e f08f +e04f f090 +e050 f091 +e051 f092 +e052 f093 +e053 f094 +e054 f095 +e055 f096 +e056 f097 +e057 f098 +e058 f099 +e059 f09a +e05a f09b +e05b f09c +e05c f09d +e05d f09e +e05e f09f +e05f f0a0 +e060 f0a1 +e061 f0a2 +e062 f0a3 +e063 f0a4 +e064 f0a5 +e065 f0a6 +e066 f0a7 +e067 f0a8 +e068 f0a9 +e069 f0aa +e06a f0ab +e06b f0ac +e06c f0ad +e06d f0ae +e06e f0af +e06f f0b0 +e070 f0b1 +e071 f0b2 +e072 f0b3 +e073 f0b4 +e074 f0b5 +e075 f0b6 +e076 f0b7 +e077 f0b8 +e078 f0b9 +e079 f0ba +e07a f0bb +e07b f0bc +e07c f0bd +e07d f0be +e07e f0bf +e07f f0c0 +e080 f0c1 +e081 f0c2 +e082 f0c3 +e083 f0c4 +e084 f0c5 +e085 f0c6 +e086 f0c7 +e087 f0c8 +e088 f0c9 +e089 f0ca +e08a f0cb +e08b f0cc +e08c f0cd +e08d f0ce +e08e f0cf +e08f f0d0 +e090 f0d1 +e091 f0d2 +e092 f0d3 +e093 f0d4 +e094 f0d5 +e095 f0d6 +e096 f0d7 +e097 f0d8 +e098 f0d9 +e099 f0da +e09a f0db +e09b f0dc +e09c f0dd +e09d f0de +e09e f0df +e09f f0e0 +e0a0 f0e1 +e0a1 f0e2 +e0a2 f0e3 +e0a3 f0e4 +e0a4 f0e5 +e0a5 f0e6 +e0a6 f0e7 +e0a7 f0e8 +e0a8 f0e9 +e0a9 f0ea +e0aa f0eb +e0ab f0ec +e0ac f0ed +e0ad f0ee +e0ae f0ef +e0af f0f0 +e0b0 f0f1 +e0b1 f0f2 +e0b2 f0f3 +e0b3 f0f4 +e0b4 f0f5 +e0b5 f0f6 +e0b6 f0f7 +e0b7 f0f8 +e0b8 f0f9 +e0b9 f0fa +e0ba f0fb +e0bb f0fc +e0bc f140 +e0bd f141 +e0be f142 +e0bf f143 +e0c0 f144 +e0c1 f145 +e0c2 f146 +e0c3 f147 +e0c4 f148 +e0c5 f149 +e0c6 f14a +e0c7 f14b +e0c8 f14c +e0c9 f14d +e0ca f14e +e0cb f14f +e0cc f150 +e0cd f151 +e0ce f152 +e0cf f153 +e0d0 f154 +e0d1 f155 +e0d2 f156 +e0d3 f157 +e0d4 f158 +e0d5 f159 +e0d6 f15a +e0d7 f15b +e0d8 f15c +e0d9 f15d +e0da f15e +e0db f15f +e0dc f160 +e0dd f161 +e0de f162 +e0df f163 +e0e0 f164 +e0e1 f165 +e0e2 f166 +e0e3 f167 +e0e4 f168 +e0e5 f169 +e0e6 f16a +e0e7 f16b +e0e8 f16c +e0e9 f16d +e0ea f16e +e0eb f16f +e0ec f170 +e0ed f171 +e0ee f172 +e0ef f173 +e0f0 f174 +e0f1 f175 +e0f2 f176 +e0f3 f177 +e0f4 f178 +e0f5 f179 +e0f6 f17a +e0f7 f17b +e0f8 f17c +e0f9 f17d +e0fa f17e +e0fb f180 +e0fc f181 +e0fd f182 +e0fe f183 +e0ff f184 +e100 f185 +e101 f186 +e102 f187 +e103 f188 +e104 f189 +e105 f18a +e106 f18b +e107 f18c +e108 f18d +e109 f18e +e10a f18f +e10b f190 +e10c f191 +e10d f192 +e10e f193 +e10f f194 +e110 f195 +e111 f196 +e112 f197 +e113 f198 +e114 f199 +e115 f19a +e116 f19b +e117 f19c +e118 f19d +e119 f19e +e11a f19f +e11b f1a0 +e11c f1a1 +e11d f1a2 +e11e f1a3 +e11f f1a4 +e120 f1a5 +e121 f1a6 +e122 f1a7 +e123 f1a8 +e124 f1a9 +e125 f1aa +e126 f1ab +e127 f1ac +e128 f1ad +e129 f1ae +e12a f1af +e12b f1b0 +e12c f1b1 +e12d f1b2 +e12e f1b3 +e12f f1b4 +e130 f1b5 +e131 f1b6 +e132 f1b7 +e133 f1b8 +e134 f1b9 +e135 f1ba +e136 f1bb +e137 f1bc +e138 f1bd +e139 f1be +e13a f1bf +e13b f1c0 +e13c f1c1 +e13d f1c2 +e13e f1c3 +e13f f1c4 +e140 f1c5 +e141 f1c6 +e142 f1c7 +e143 f1c8 +e144 f1c9 +e145 f1ca +e146 f1cb +e147 f1cc +e148 f1cd +e149 f1ce +e14a f1cf +e14b f1d0 +e14c f1d1 +e14d f1d2 +e14e f1d3 +e14f f1d4 +e150 f1d5 +e151 f1d6 +e152 f1d7 +e153 f1d8 +e154 f1d9 +e155 f1da +e156 f1db +e157 f1dc +e158 f1dd +e159 f1de +e15a f1df +e15b f1e0 +e15c f1e1 +e15d f1e2 +e15e f1e3 +e15f f1e4 +e160 f1e5 +e161 f1e6 +e162 f1e7 +e163 f1e8 +e164 f1e9 +e165 f1ea +e166 f1eb +e167 f1ec +e168 f1ed +e169 f1ee +e16a f1ef +e16b f1f0 +e16c f1f1 +e16d f1f2 +e16e f1f3 +e16f f1f4 +e170 f1f5 +e171 f1f6 +e172 f1f7 +e173 f1f8 +e174 f1f9 +e175 f1fa +e176 f1fb +e177 f1fc +e178 f240 +e179 f241 +e17a f242 +e17b f243 +e17c f244 +e17d f245 +e17e f246 +e17f f247 +e180 f248 +e181 f249 +e182 f24a +e183 f24b +e184 f24c +e185 f24d +e186 f24e +e187 f24f +e188 f250 +e189 f251 +e18a f252 +e18b f253 +e18c f254 +e18d f255 +e18e f256 +e18f f257 +e190 f258 +e191 f259 +e192 f25a +e193 f25b +e194 f25c +e195 f25d +e196 f25e +e197 f25f +e198 f260 +e199 f261 +e19a f262 +e19b f263 +e19c f264 +e19d f265 +e19e f266 +e19f f267 +e1a0 f268 +e1a1 f269 +e1a2 f26a +e1a3 f26b +e1a4 f26c +e1a5 f26d +e1a6 f26e +e1a7 f26f +e1a8 f270 +e1a9 f271 +e1aa f272 +e1ab f273 +e1ac f274 +e1ad f275 +e1ae f276 +e1af f277 +e1b0 f278 +e1b1 f279 +e1b2 f27a +e1b3 f27b +e1b4 f27c +e1b5 f27d +e1b6 f27e +e1b7 f280 +e1b8 f281 +e1b9 f282 +e1ba f283 +e1bb f284 +e1bc f285 +e1bd f286 +e1be f287 +e1bf f288 +e1c0 f289 +e1c1 f28a +e1c2 f28b +e1c3 f28c +e1c4 f28d +e1c5 f28e +e1c6 f28f +e1c7 f290 +e1c8 f291 +e1c9 f292 +e1ca f293 +e1cb f294 +e1cc f295 +e1cd f296 +e1ce f297 +e1cf f298 +e1d0 f299 +e1d1 f29a +e1d2 f29b +e1d3 f29c +e1d4 f29d +e1d5 f29e +e1d6 f29f +e1d7 f2a0 +e1d8 f2a1 +e1d9 f2a2 +e1da f2a3 +e1db f2a4 +e1dc f2a5 +e1dd f2a6 +e1de f2a7 +e1df f2a8 +e1e0 f2a9 +e1e1 f2aa +e1e2 f2ab +e1e3 f2ac +e1e4 f2ad +e1e5 f2ae +e1e6 f2af +e1e7 f2b0 +e1e8 f2b1 +e1e9 f2b2 +e1ea f2b3 +e1eb f2b4 +e1ec f2b5 +e1ed f2b6 +e1ee f2b7 +e1ef f2b8 +e1f0 f2b9 +e1f1 f2ba +e1f2 f2bb +e1f3 f2bc +e1f4 f2bd +e1f5 f2be +e1f6 f2bf +e1f7 f2c0 +e1f8 f2c1 +e1f9 f2c2 +e1fa f2c3 +e1fb f2c4 +e1fc f2c5 +e1fd f2c6 +e1fe f2c7 +e1ff f2c8 +e200 f2c9 +e201 f2ca +e202 f2cb +e203 f2cc +e204 f2cd +e205 f2ce +e206 f2cf +e207 f2d0 +e208 f2d1 +e209 f2d2 +e20a f2d3 +e20b f2d4 +e20c f2d5 +e20d f2d6 +e20e f2d7 +e20f f2d8 +e210 f2d9 +e211 f2da +e212 f2db +e213 f2dc +e214 f2dd +e215 f2de +e216 f2df +e217 f2e0 +e218 f2e1 +e219 f2e2 +e21a f2e3 +e21b f2e4 +e21c f2e5 +e21d f2e6 +e21e f2e7 +e21f f2e8 +e220 f2e9 +e221 f2ea +e222 f2eb +e223 f2ec +e224 f2ed +e225 f2ee +e226 f2ef +e227 f2f0 +e228 f2f1 +e229 f2f2 +e22a f2f3 +e22b f2f4 +e22c f2f5 +e22d f2f6 +e22e f2f7 +e22f f2f8 +e230 f2f9 +e231 f2fa +e232 f2fb +e233 f2fc +e234 f340 +e235 f341 +e236 f342 +e237 f343 +e238 f344 +e239 f345 +e23a f346 +e23b f347 +e23c f348 +e23d f349 +e23e f34a +e23f f34b +e240 f34c +e241 f34d +e242 f34e +e243 f34f +e244 f350 +e245 f351 +e246 f352 +e247 f353 +e248 f354 +e249 f355 +e24a f356 +e24b f357 +e24c f358 +e24d f359 +e24e f35a +e24f f35b +e250 f35c +e251 f35d +e252 f35e +e253 f35f +e254 f360 +e255 f361 +e256 f362 +e257 f363 +e258 f364 +e259 f365 +e25a f366 +e25b f367 +e25c f368 +e25d f369 +e25e f36a +e25f f36b +e260 f36c +e261 f36d +e262 f36e +e263 f36f +e264 f370 +e265 f371 +e266 f372 +e267 f373 +e268 f374 +e269 f375 +e26a f376 +e26b f377 +e26c f378 +e26d f379 +e26e f37a +e26f f37b +e270 f37c +e271 f37d +e272 f37e +e273 f380 +e274 f381 +e275 f382 +e276 f383 +e277 f384 +e278 f385 +e279 f386 +e27a f387 +e27b f388 +e27c f389 +e27d f38a +e27e f38b +e27f f38c +e280 f38d +e281 f38e +e282 f38f +e283 f390 +e284 f391 +e285 f392 +e286 f393 +e287 f394 +e288 f395 +e289 f396 +e28a f397 +e28b f398 +e28c f399 +e28d f39a +e28e f39b +e28f f39c +e290 f39d +e291 f39e +e292 f39f +e293 f3a0 +e294 f3a1 +e295 f3a2 +e296 f3a3 +e297 f3a4 +e298 f3a5 +e299 f3a6 +e29a f3a7 +e29b f3a8 +e29c f3a9 +e29d f3aa +e29e f3ab +e29f f3ac +e2a0 f3ad +e2a1 f3ae +e2a2 f3af +e2a3 f3b0 +e2a4 f3b1 +e2a5 f3b2 +e2a6 f3b3 +e2a7 f3b4 +e2a8 f3b5 +e2a9 f3b6 +e2aa f3b7 +e2ab f3b8 +e2ac f3b9 +e2ad f3ba +e2ae f3bb +e2af f3bc +e2b0 f3bd +e2b1 f3be +e2b2 f3bf +e2b3 f3c0 +e2b4 f3c1 +e2b5 f3c2 +e2b6 f3c3 +e2b7 f3c4 +e2b8 f3c5 +e2b9 f3c6 +e2ba f3c7 +e2bb f3c8 +e2bc f3c9 +e2bd f3ca +e2be f3cb +e2bf f3cc +e2c0 f3cd +e2c1 f3ce +e2c2 f3cf +e2c3 f3d0 +e2c4 f3d1 +e2c5 f3d2 +e2c6 f3d3 +e2c7 f3d4 +e2c8 f3d5 +e2c9 f3d6 +e2ca f3d7 +e2cb f3d8 +e2cc f3d9 +e2cd f3da +e2ce f3db +e2cf f3dc +e2d0 f3dd +e2d1 f3de +e2d2 f3df +e2d3 f3e0 +e2d4 f3e1 +e2d5 f3e2 +e2d6 f3e3 +e2d7 f3e4 +e2d8 f3e5 +e2d9 f3e6 +e2da f3e7 +e2db f3e8 +e2dc f3e9 +e2dd f3ea +e2de f3eb +e2df f3ec +e2e0 f3ed +e2e1 f3ee +e2e2 f3ef +e2e3 f3f0 +e2e4 f3f1 +e2e5 f3f2 +e2e6 f3f3 +e2e7 f3f4 +e2e8 f3f5 +e2e9 f3f6 +e2ea f3f7 +e2eb f3f8 +e2ec f3f9 +e2ed f3fa +e2ee f3fb +e2ef f3fc +e2f0 f440 +e2f1 f441 +e2f2 f442 +e2f3 f443 +e2f4 f444 +e2f5 f445 +e2f6 f446 +e2f7 f447 +e2f8 f448 +e2f9 f449 +e2fa f44a +e2fb f44b +e2fc f44c +e2fd f44d +e2fe f44e +e2ff f44f +e300 f450 +e301 f451 +e302 f452 +e303 f453 +e304 f454 +e305 f455 +e306 f456 +e307 f457 +e308 f458 +e309 f459 +e30a f45a +e30b f45b +e30c f45c +e30d f45d +e30e f45e +e30f f45f +e310 f460 +e311 f461 +e312 f462 +e313 f463 +e314 f464 +e315 f465 +e316 f466 +e317 f467 +e318 f468 +e319 f469 +e31a f46a +e31b f46b +e31c f46c +e31d f46d +e31e f46e +e31f f46f +e320 f470 +e321 f471 +e322 f472 +e323 f473 +e324 f474 +e325 f475 +e326 f476 +e327 f477 +e328 f478 +e329 f479 +e32a f47a +e32b f47b +e32c f47c +e32d f47d +e32e f47e +e32f f480 +e330 f481 +e331 f482 +e332 f483 +e333 f484 +e334 f485 +e335 f486 +e336 f487 +e337 f488 +e338 f489 +e339 f48a +e33a f48b +e33b f48c +e33c f48d +e33d f48e +e33e f48f +e33f f490 +e340 f491 +e341 f492 +e342 f493 +e343 f494 +e344 f495 +e345 f496 +e346 f497 +e347 f498 +e348 f499 +e349 f49a +e34a f49b +e34b f49c +e34c f49d +e34d f49e +e34e f49f +e34f f4a0 +e350 f4a1 +e351 f4a2 +e352 f4a3 +e353 f4a4 +e354 f4a5 +e355 f4a6 +e356 f4a7 +e357 f4a8 +e358 f4a9 +e359 f4aa +e35a f4ab +e35b f4ac +e35c f4ad +e35d f4ae +e35e f4af +e35f f4b0 +e360 f4b1 +e361 f4b2 +e362 f4b3 +e363 f4b4 +e364 f4b5 +e365 f4b6 +e366 f4b7 +e367 f4b8 +e368 f4b9 +e369 f4ba +e36a f4bb +e36b f4bc +e36c f4bd +e36d f4be +e36e f4bf +e36f f4c0 +e370 f4c1 +e371 f4c2 +e372 f4c3 +e373 f4c4 +e374 f4c5 +e375 f4c6 +e376 f4c7 +e377 f4c8 +e378 f4c9 +e379 f4ca +e37a f4cb +e37b f4cc +e37c f4cd +e37d f4ce +e37e f4cf +e37f f4d0 +e380 f4d1 +e381 f4d2 +e382 f4d3 +e383 f4d4 +e384 f4d5 +e385 f4d6 +e386 f4d7 +e387 f4d8 +e388 f4d9 +e389 f4da +e38a f4db +e38b f4dc +e38c f4dd +e38d f4de +e38e f4df +e38f f4e0 +e390 f4e1 +e391 f4e2 +e392 f4e3 +e393 f4e4 +e394 f4e5 +e395 f4e6 +e396 f4e7 +e397 f4e8 +e398 f4e9 +e399 f4ea +e39a f4eb +e39b f4ec +e39c f4ed +e39d f4ee +e39e f4ef +e39f f4f0 +e3a0 f4f1 +e3a1 f4f2 +e3a2 f4f3 +e3a3 f4f4 +e3a4 f4f5 +e3a5 f4f6 +e3a6 f4f7 +e3a7 f4f8 +e3a8 f4f9 +e3a9 f4fa +e3aa f4fb +e3ab f4fc +e3ac f540 +e3ad f541 +e3ae f542 +e3af f543 +e3b0 f544 +e3b1 f545 +e3b2 f546 +e3b3 f547 +e3b4 f548 +e3b5 f549 +e3b6 f54a +e3b7 f54b +e3b8 f54c +e3b9 f54d +e3ba f54e +e3bb f54f +e3bc f550 +e3bd f551 +e3be f552 +e3bf f553 +e3c0 f554 +e3c1 f555 +e3c2 f556 +e3c3 f557 +e3c4 f558 +e3c5 f559 +e3c6 f55a +e3c7 f55b +e3c8 f55c +e3c9 f55d +e3ca f55e +e3cb f55f +e3cc f560 +e3cd f561 +e3ce f562 +e3cf f563 +e3d0 f564 +e3d1 f565 +e3d2 f566 +e3d3 f567 +e3d4 f568 +e3d5 f569 +e3d6 f56a +e3d7 f56b +e3d8 f56c +e3d9 f56d +e3da f56e +e3db f56f +e3dc f570 +e3dd f571 +e3de f572 +e3df f573 +e3e0 f574 +e3e1 f575 +e3e2 f576 +e3e3 f577 +e3e4 f578 +e3e5 f579 +e3e6 f57a +e3e7 f57b +e3e8 f57c +e3e9 f57d +e3ea f57e +e3eb f580 +e3ec f581 +e3ed f582 +e3ee f583 +e3ef f584 +e3f0 f585 +e3f1 f586 +e3f2 f587 +e3f3 f588 +e3f4 f589 +e3f5 f58a +e3f6 f58b +e3f7 f58c +e3f8 f58d +e3f9 f58e +e3fa f58f +e3fb f590 +e3fc f591 +e3fd f592 +e3fe f593 +e3ff f594 +e400 f595 +e401 f596 +e402 f597 +e403 f598 +e404 f599 +e405 f59a +e406 f59b +e407 f59c +e408 f59d +e409 f59e +e40a f59f +e40b f5a0 +e40c f5a1 +e40d f5a2 +e40e f5a3 +e40f f5a4 +e410 f5a5 +e411 f5a6 +e412 f5a7 +e413 f5a8 +e414 f5a9 +e415 f5aa +e416 f5ab +e417 f5ac +e418 f5ad +e419 f5ae +e41a f5af +e41b f5b0 +e41c f5b1 +e41d f5b2 +e41e f5b3 +e41f f5b4 +e420 f5b5 +e421 f5b6 +e422 f5b7 +e423 f5b8 +e424 f5b9 +e425 f5ba +e426 f5bb +e427 f5bc +e428 f5bd +e429 f5be +e42a f5bf +e42b f5c0 +e42c f5c1 +e42d f5c2 +e42e f5c3 +e42f f5c4 +e430 f5c5 +e431 f5c6 +e432 f5c7 +e433 f5c8 +e434 f5c9 +e435 f5ca +e436 f5cb +e437 f5cc +e438 f5cd +e439 f5ce +e43a f5cf +e43b f5d0 +e43c f5d1 +e43d f5d2 +e43e f5d3 +e43f f5d4 +e440 f5d5 +e441 f5d6 +e442 f5d7 +e443 f5d8 +e444 f5d9 +e445 f5da +e446 f5db +e447 f5dc +e448 f5dd +e449 f5de +e44a f5df +e44b f5e0 +e44c f5e1 +e44d f5e2 +e44e f5e3 +e44f f5e4 +e450 f5e5 +e451 f5e6 +e452 f5e7 +e453 f5e8 +e454 f5e9 +e455 f5ea +e456 f5eb +e457 f5ec +e458 f5ed +e459 f5ee +e45a f5ef +e45b f5f0 +e45c f5f1 +e45d f5f2 +e45e f5f3 +e45f f5f4 +e460 f5f5 +e461 f5f6 +e462 f5f7 +e463 f5f8 +e464 f5f9 +e465 f5fa +e466 f5fb +e467 f5fc +e468 f640 +e469 f641 +e46a f642 +e46b f643 +e46c f644 +e46d f645 +e46e f646 +e46f f647 +e470 f648 +e471 f649 +e472 f64a +e473 f64b +e474 f64c +e475 f64d +e476 f64e +e477 f64f +e478 f650 +e479 f651 +e47a f652 +e47b f653 +e47c f654 +e47d f655 +e47e f656 +e47f f657 +e480 f658 +e481 f659 +e482 f65a +e483 f65b +e484 f65c +e485 f65d +e486 f65e +e487 f65f +e488 f660 +e489 f661 +e48a f662 +e48b f663 +e48c f664 +e48d f665 +e48e f666 +e48f f667 +e490 f668 +e491 f669 +e492 f66a +e493 f66b +e494 f66c +e495 f66d +e496 f66e +e497 f66f +e498 f670 +e499 f671 +e49a f672 +e49b f673 +e49c f674 +e49d f675 +e49e f676 +e49f f677 +e4a0 f678 +e4a1 f679 +e4a2 f67a +e4a3 f67b +e4a4 f67c +e4a5 f67d +e4a6 f67e +e4a7 f680 +e4a8 f681 +e4a9 f682 +e4aa f683 +e4ab f684 +e4ac f685 +e4ad f686 +e4ae f687 +e4af f688 +e4b0 f689 +e4b1 f68a +e4b2 f68b +e4b3 f68c +e4b4 f68d +e4b5 f68e +e4b6 f68f +e4b7 f690 +e4b8 f691 +e4b9 f692 +e4ba f693 +e4bb f694 +e4bc f695 +e4bd f696 +e4be f697 +e4bf f698 +e4c0 f699 +e4c1 f69a +e4c2 f69b +e4c3 f69c +e4c4 f69d +e4c5 f69e +e4c6 f69f +e4c7 f6a0 +e4c8 f6a1 +e4c9 f6a2 +e4ca f6a3 +e4cb f6a4 +e4cc f6a5 +e4cd f6a6 +e4ce f6a7 +e4cf f6a8 +e4d0 f6a9 +e4d1 f6aa +e4d2 f6ab +e4d3 f6ac +e4d4 f6ad +e4d5 f6ae +e4d6 f6af +e4d7 f6b0 +e4d8 f6b1 +e4d9 f6b2 +e4da f6b3 +e4db f6b4 +e4dc f6b5 +e4dd f6b6 +e4de f6b7 +e4df f6b8 +e4e0 f6b9 +e4e1 f6ba +e4e2 f6bb +e4e3 f6bc +e4e4 f6bd +e4e5 f6be +e4e6 f6bf +e4e7 f6c0 +e4e8 f6c1 +e4e9 f6c2 +e4ea f6c3 +e4eb f6c4 +e4ec f6c5 +e4ed f6c6 +e4ee f6c7 +e4ef f6c8 +e4f0 f6c9 +e4f1 f6ca +e4f2 f6cb +e4f3 f6cc +e4f4 f6cd +e4f5 f6ce +e4f6 f6cf +e4f7 f6d0 +e4f8 f6d1 +e4f9 f6d2 +e4fa f6d3 +e4fb f6d4 +e4fc f6d5 +e4fd f6d6 +e4fe f6d7 +e4ff f6d8 +e500 f6d9 +e501 f6da +e502 f6db +e503 f6dc +e504 f6dd +e505 f6de +e506 f6df +e507 f6e0 +e508 f6e1 +e509 f6e2 +e50a f6e3 +e50b f6e4 +e50c f6e5 +e50d f6e6 +e50e f6e7 +e50f f6e8 +e510 f6e9 +e511 f6ea +e512 f6eb +e513 f6ec +e514 f6ed +e515 f6ee +e516 f6ef +e517 f6f0 +e518 f6f1 +e519 f6f2 +e51a f6f3 +e51b f6f4 +e51c f6f5 +e51d f6f6 +e51e f6f7 +e51f f6f8 +e520 f6f9 +e521 f6fa +e522 f6fb +e523 f6fc +e524 f740 +e525 f741 +e526 f742 +e527 f743 +e528 f744 +e529 f745 +e52a f746 +e52b f747 +e52c f748 +e52d f749 +e52e f74a +e52f f74b +e530 f74c +e531 f74d +e532 f74e +e533 f74f +e534 f750 +e535 f751 +e536 f752 +e537 f753 +e538 f754 +e539 f755 +e53a f756 +e53b f757 +e53c f758 +e53d f759 +e53e f75a +e53f f75b +e540 f75c +e541 f75d +e542 f75e +e543 f75f +e544 f760 +e545 f761 +e546 f762 +e547 f763 +e548 f764 +e549 f765 +e54a f766 +e54b f767 +e54c f768 +e54d f769 +e54e f76a +e54f f76b +e550 f76c +e551 f76d +e552 f76e +e553 f76f +e554 f770 +e555 f771 +e556 f772 +e557 f773 +e558 f774 +e559 f775 +e55a f776 +e55b f777 +e55c f778 +e55d f779 +e55e f77a +e55f f77b +e560 f77c +e561 f77d +e562 f77e +e563 f780 +e564 f781 +e565 f782 +e566 f783 +e567 f784 +e568 f785 +e569 f786 +e56a f787 +e56b f788 +e56c f789 +e56d f78a +e56e f78b +e56f f78c +e570 f78d +e571 f78e +e572 f78f +e573 f790 +e574 f791 +e575 f792 +e576 f793 +e577 f794 +e578 f795 +e579 f796 +e57a f797 +e57b f798 +e57c f799 +e57d f79a +e57e f79b +e57f f79c +e580 f79d +e581 f79e +e582 f79f +e583 f7a0 +e584 f7a1 +e585 f7a2 +e586 f7a3 +e587 f7a4 +e588 f7a5 +e589 f7a6 +e58a f7a7 +e58b f7a8 +e58c f7a9 +e58d f7aa +e58e f7ab +e58f f7ac +e590 f7ad +e591 f7ae +e592 f7af +e593 f7b0 +e594 f7b1 +e595 f7b2 +e596 f7b3 +e597 f7b4 +e598 f7b5 +e599 f7b6 +e59a f7b7 +e59b f7b8 +e59c f7b9 +e59d f7ba +e59e f7bb +e59f f7bc +e5a0 f7bd +e5a1 f7be +e5a2 f7bf +e5a3 f7c0 +e5a4 f7c1 +e5a5 f7c2 +e5a6 f7c3 +e5a7 f7c4 +e5a8 f7c5 +e5a9 f7c6 +e5aa f7c7 +e5ab f7c8 +e5ac f7c9 +e5ad f7ca +e5ae f7cb +e5af f7cc +e5b0 f7cd +e5b1 f7ce +e5b2 f7cf +e5b3 f7d0 +e5b4 f7d1 +e5b5 f7d2 +e5b6 f7d3 +e5b7 f7d4 +e5b8 f7d5 +e5b9 f7d6 +e5ba f7d7 +e5bb f7d8 +e5bc f7d9 +e5bd f7da +e5be f7db +e5bf f7dc +e5c0 f7dd +e5c1 f7de +e5c2 f7df +e5c3 f7e0 +e5c4 f7e1 +e5c5 f7e2 +e5c6 f7e3 +e5c7 f7e4 +e5c8 f7e5 +e5c9 f7e6 +e5ca f7e7 +e5cb f7e8 +e5cc f7e9 +e5cd f7ea +e5ce f7eb +e5cf f7ec +e5d0 f7ed +e5d1 f7ee +e5d2 f7ef +e5d3 f7f0 +e5d4 f7f1 +e5d5 f7f2 +e5d6 f7f3 +e5d7 f7f4 +e5d8 f7f5 +e5d9 f7f6 +e5da f7f7 +e5db f7f8 +e5dc f7f9 +e5dd f7fa +e5de f7fb +e5df f7fc +e5e0 f840 +e5e1 f841 +e5e2 f842 +e5e3 f843 +e5e4 f844 +e5e5 f845 +e5e6 f846 +e5e7 f847 +e5e8 f848 +e5e9 f849 +e5ea f84a +e5eb f84b +e5ec f84c +e5ed f84d +e5ee f84e +e5ef f84f +e5f0 f850 +e5f1 f851 +e5f2 f852 +e5f3 f853 +e5f4 f854 +e5f5 f855 +e5f6 f856 +e5f7 f857 +e5f8 f858 +e5f9 f859 +e5fa f85a +e5fb f85b +e5fc f85c +e5fd f85d +e5fe f85e +e5ff f85f +e600 f860 +e601 f861 +e602 f862 +e603 f863 +e604 f864 +e605 f865 +e606 f866 +e607 f867 +e608 f868 +e609 f869 +e60a f86a +e60b f86b +e60c f86c +e60d f86d +e60e f86e +e60f f86f +e610 f870 +e611 f871 +e612 f872 +e613 f873 +e614 f874 +e615 f875 +e616 f876 +e617 f877 +e618 f878 +e619 f879 +e61a f87a +e61b f87b +e61c f87c +e61d f87d +e61e f87e +e61f f880 +e620 f881 +e621 f882 +e622 f883 +e623 f884 +e624 f885 +e625 f886 +e626 f887 +e627 f888 +e628 f889 +e629 f88a +e62a f88b +e62b f88c +e62c f88d +e62d f88e +e62e f88f +e62f f890 +e630 f891 +e631 f892 +e632 f893 +e633 f894 +e634 f895 +e635 f896 +e636 f897 +e637 f898 +e638 f899 +e639 f89a +e63a f89b +e63b f89c +e63c f89d +e63d f89e +e63e f89f +e63f f8a0 +e640 f8a1 +e641 f8a2 +e642 f8a3 +e643 f8a4 +e644 f8a5 +e645 f8a6 +e646 f8a7 +e647 f8a8 +e648 f8a9 +e649 f8aa +e64a f8ab +e64b f8ac +e64c f8ad +e64d f8ae +e64e f8af +e64f f8b0 +e650 f8b1 +e651 f8b2 +e652 f8b3 +e653 f8b4 +e654 f8b5 +e655 f8b6 +e656 f8b7 +e657 f8b8 +e658 f8b9 +e659 f8ba +e65a f8bb +e65b f8bc +e65c f8bd +e65d f8be +e65e f8bf +e65f f8c0 +e660 f8c1 +e661 f8c2 +e662 f8c3 +e663 f8c4 +e664 f8c5 +e665 f8c6 +e666 f8c7 +e667 f8c8 +e668 f8c9 +e669 f8ca +e66a f8cb +e66b f8cc +e66c f8cd +e66d f8ce +e66e f8cf +e66f f8d0 +e670 f8d1 +e671 f8d2 +e672 f8d3 +e673 f8d4 +e674 f8d5 +e675 f8d6 +e676 f8d7 +e677 f8d8 +e678 f8d9 +e679 f8da +e67a f8db +e67b f8dc +e67c f8dd +e67d f8de +e67e f8df +e67f f8e0 +e680 f8e1 +e681 f8e2 +e682 f8e3 +e683 f8e4 +e684 f8e5 +e685 f8e6 +e686 f8e7 +e687 f8e8 +e688 f8e9 +e689 f8ea +e68a f8eb +e68b f8ec +e68c f8ed +e68d f8ee +e68e f8ef +e68f f8f0 +e690 f8f1 +e691 f8f2 +e692 f8f3 +e693 f8f4 +e694 f8f5 +e695 f8f6 +e696 f8f7 +e697 f8f8 +e698 f8f9 +e699 f8fa +e69a f8fb +e69b f8fc +e69c f940 +e69d f941 +e69e f942 +e69f f943 +e6a0 f944 +e6a1 f945 +e6a2 f946 +e6a3 f947 +e6a4 f948 +e6a5 f949 +e6a6 f94a +e6a7 f94b +e6a8 f94c +e6a9 f94d +e6aa f94e +e6ab f94f +e6ac f950 +e6ad f951 +e6ae f952 +e6af f953 +e6b0 f954 +e6b1 f955 +e6b2 f956 +e6b3 f957 +e6b4 f958 +e6b5 f959 +e6b6 f95a +e6b7 f95b +e6b8 f95c +e6b9 f95d +e6ba f95e +e6bb f95f +e6bc f960 +e6bd f961 +e6be f962 +e6bf f963 +e6c0 f964 +e6c1 f965 +e6c2 f966 +e6c3 f967 +e6c4 f968 +e6c5 f969 +e6c6 f96a +e6c7 f96b +e6c8 f96c +e6c9 f96d +e6ca f96e +e6cb f96f +e6cc f970 +e6cd f971 +e6ce f972 +e6cf f973 +e6d0 f974 +e6d1 f975 +e6d2 f976 +e6d3 f977 +e6d4 f978 +e6d5 f979 +e6d6 f97a +e6d7 f97b +e6d8 f97c +e6d9 f97d +e6da f97e +e6db f980 +e6dc f981 +e6dd f982 +e6de f983 +e6df f984 +e6e0 f985 +e6e1 f986 +e6e2 f987 +e6e3 f988 +e6e4 f989 +e6e5 f98a +e6e6 f98b +e6e7 f98c +e6e8 f98d +e6e9 f98e +e6ea f98f +e6eb f990 +e6ec f991 +e6ed f992 +e6ee f993 +e6ef f994 +e6f0 f995 +e6f1 f996 +e6f2 f997 +e6f3 f998 +e6f4 f999 +e6f5 f99a +e6f6 f99b +e6f7 f99c +e6f8 f99d +e6f9 f99e +e6fa f99f +e6fb f9a0 +e6fc f9a1 +e6fd f9a2 +e6fe f9a3 +e6ff f9a4 +e700 f9a5 +e701 f9a6 +e702 f9a7 +e703 f9a8 +e704 f9a9 +e705 f9aa +e706 f9ab +e707 f9ac +e708 f9ad +e709 f9ae +e70a f9af +e70b f9b0 +e70c f9b1 +e70d f9b2 +e70e f9b3 +e70f f9b4 +e710 f9b5 +e711 f9b6 +e712 f9b7 +e713 f9b8 +e714 f9b9 +e715 f9ba +e716 f9bb +e717 f9bc +e718 f9bd +e719 f9be +e71a f9bf +e71b f9c0 +e71c f9c1 +e71d f9c2 +e71e f9c3 +e71f f9c4 +e720 f9c5 +e721 f9c6 +e722 f9c7 +e723 f9c8 +e724 f9c9 +e725 f9ca +e726 f9cb +e727 f9cc +e728 f9cd +e729 f9ce +e72a f9cf +e72b f9d0 +e72c f9d1 +e72d f9d2 +e72e f9d3 +e72f f9d4 +e730 f9d5 +e731 f9d6 +e732 f9d7 +e733 f9d8 +e734 f9d9 +e735 f9da +e736 f9db +e737 f9dc +e738 f9dd +e739 f9de +e73a f9df +e73b f9e0 +e73c f9e1 +e73d f9e2 +e73e f9e3 +e73f f9e4 +e740 f9e5 +e741 f9e6 +e742 f9e7 +e743 f9e8 +e744 f9e9 +e745 f9ea +e746 f9eb +e747 f9ec +e748 f9ed +e749 f9ee +e74a f9ef +e74b f9f0 +e74c f9f1 +e74d f9f2 +e74e f9f3 +e74f f9f4 +e750 f9f5 +e751 f9f6 +e752 f9f7 +e753 f9f8 +e754 f9f9 +e755 f9fa +e756 f9fb +e757 f9fc +f929 fae0 +f9dc fbe9 +fa0e fa90 +fa0f fa9b +fa10 fa9c +fa11 fab1 +fa12 fad8 +fa13 fae8 +fa14 faea +fa15 fb58 +fa16 fb5e +fa17 fb75 +fa18 fb7d +fa19 fb7e +fa1a fb80 +fa1b fb82 +fa1c fb86 +fa1d fb89 +fa1e fb92 +fa1f fb9d +fa20 fb9f +fa21 fba0 +fa22 fba9 +fa23 fbb1 +fa24 fbb3 +fa25 fbb4 +fa26 fbb7 +fa27 fbd3 +fa28 fbda +fa29 fbea +fa2a fbf6 +fa2b fbf7 +fa2c fbf9 +fa2d fc49 +ff01 8149 +ff02 fa57 +ff03 8194 +ff04 8190 +ff05 8193 +ff06 8195 +ff07 fa56 +ff08 8169 +ff09 816a +ff0a 8196 +ff0b 817b +ff0c 8143 +ff0d 817c +ff0e 8144 +ff0f 815e +ff10 824f +ff11 8250 +ff12 8251 +ff13 8252 +ff14 8253 +ff15 8254 +ff16 8255 +ff17 8256 +ff18 8257 +ff19 8258 +ff1a 8146 +ff1b 8147 +ff1c 8183 +ff1d 8181 +ff1e 8184 +ff1f 8148 +ff20 8197 +ff21 8260 +ff22 8261 +ff23 8262 +ff24 8263 +ff25 8264 +ff26 8265 +ff27 8266 +ff28 8267 +ff29 8268 +ff2a 8269 +ff2b 826a +ff2c 826b +ff2d 826c +ff2e 826d +ff2f 826e +ff30 826f +ff31 8270 +ff32 8271 +ff33 8272 +ff34 8273 +ff35 8274 +ff36 8275 +ff37 8276 +ff38 8277 +ff39 8278 +ff3a 8279 +ff3b 816d +ff3c 815f +ff3d 816e +ff3e 814f +ff3f 8151 +ff40 814d +ff41 8281 +ff42 8282 +ff43 8283 +ff44 8284 +ff45 8285 +ff46 8286 +ff47 8287 +ff48 8288 +ff49 8289 +ff4a 828a +ff4b 828b +ff4c 828c +ff4d 828d +ff4e 828e +ff4f 828f +ff50 8290 +ff51 8291 +ff52 8292 +ff53 8293 +ff54 8294 +ff55 8295 +ff56 8296 +ff57 8297 +ff58 8298 +ff59 8299 +ff5a 829a +ff5b 816f +ff5c 8162 +ff5d 8170 +ff5e 8160 +ff61 a1 +ff62 a2 +ff63 a3 +ff64 a4 +ff65 a5 +ff66 a6 +ff67 a7 +ff68 a8 +ff69 a9 +ff6a aa +ff6b ab +ff6c ac +ff6d ad +ff6e ae +ff6f af +ff70 b0 +ff71 b1 +ff72 b2 +ff73 b3 +ff74 b4 +ff75 b5 +ff76 b6 +ff77 b7 +ff78 b8 +ff79 b9 +ff7a ba +ff7b bb +ff7c bc +ff7d bd +ff7e be +ff7f bf +ff80 c0 +ff81 c1 +ff82 c2 +ff83 c3 +ff84 c4 +ff85 c5 +ff86 c6 +ff87 c7 +ff88 c8 +ff89 c9 +ff8a ca +ff8b cb +ff8c cc +ff8d cd +ff8e ce +ff8f cf +ff90 d0 +ff91 d1 +ff92 d2 +ff93 d3 +ff94 d4 +ff95 d5 +ff96 d6 +ff97 d7 +ff98 d8 +ff99 d9 +ff9a da +ff9b db +ff9c dc +ff9d dd +ff9e de +ff9f df +ffe0 8191 +ffe1 8192 +ffe2 81ca +ffe3 8150 +ffe4 fa55 +ffe5 818f diff --git a/jdk/test/java/nio/charset/spi/FooCharset.java b/jdk/test/java/nio/charset/spi/FooCharset.java new file mode 100644 index 0000000000..6206f6e731 --- /dev/null +++ b/jdk/test/java/nio/charset/spi/FooCharset.java @@ -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. + */ + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; + + +public class FooCharset + extends Charset +{ + + public FooCharset() { + super("FOO", + new String[] { "FOO-1", "FOO-2" }); + } + + public boolean contains(Charset cs) { + return (cs instanceof FooCharset); + } + + public CharsetDecoder newDecoder() { return null; } + public CharsetEncoder newEncoder() { return null; } + +} diff --git a/jdk/test/java/nio/charset/spi/FooProvider.java b/jdk/test/java/nio/charset/spi/FooProvider.java new file mode 100644 index 0000000000..e40f30b237 --- /dev/null +++ b/jdk/test/java/nio/charset/spi/FooProvider.java @@ -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. + */ + +import java.util.*; +import java.nio.charset.*; +import java.nio.charset.spi.*; + + +public class FooProvider + extends CharsetProvider +{ + + public FooProvider() {} + + public Iterator charsets() { + return Collections.singleton(new FooCharset()).iterator(); + } + + public Charset charsetForName(String charsetName) { + if (charsetName.equalsIgnoreCase("FOO")) + return new FooCharset(); + return null; + } + +} diff --git a/jdk/test/java/nio/charset/spi/Test.java b/jdk/test/java/nio/charset/spi/Test.java new file mode 100644 index 0000000000..d3a4ed21bb --- /dev/null +++ b/jdk/test/java/nio/charset/spi/Test.java @@ -0,0 +1,92 @@ +/* + * 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. + */ + +import java.io.*; +import java.nio.charset.*; +import java.util.*; + + +public class Test { + + private static PrintStream out = System.err; + private static final SortedMap available = Charset.availableCharsets(); + + private static void fail(String csn, String msg) { + throw new RuntimeException(csn + ": " + msg); + } + + private static void testPositive(String csn) { + if (!Charset.isSupported(csn)) + fail(csn, "Not supported"); + + Charset cs = Charset.forName(csn); + out.println(csn + " --> " + cs.getClass().getName()); + out.println(" " + cs.name() + " " + cs.aliases()); + + if (!available.containsKey(cs.name())) + fail(csn, "Not in available charsets: " + available.keySet()); + if (!((Charset)available.get(cs.name())).equals(cs)) + fail(csn, "Available charset != looked-up charset"); + + if (csn.equalsIgnoreCase("FOO")) { + if (!(cs instanceof FooCharset)) + fail(csn, "instanceof failed"); + } + } + + private static void testNegative(String csn) { + if (Charset.isSupported(csn)) + fail(csn, "Supported"); + if (available.containsKey(csn)) + fail(csn, "Available"); + try { + Charset.forName(csn); + } catch (UnsupportedCharsetException x) { + out.println(csn + " not supported, as expected"); + return; + } + fail(csn, "Lookup succeeded"); + } + + public static void main(String [] args) { + + out.println("Default: " + + new InputStreamReader(System.in).getEncoding()); + + out.print("Available:"); + for (Iterator i = available.keySet().iterator(); i.hasNext();) + out.print(" " + (String)i.next()); + out.println(); + + for (int i = 0; i < args.length; i++) { + String a = args[i]; + boolean not = a.startsWith("!"); + String csn = (not ? a.substring(1) : a); + if (not) + testNegative(csn); + else + testPositive(csn); + } + } + +} diff --git a/jdk/test/java/nio/charset/spi/basic.sh b/jdk/test/java/nio/charset/spi/basic.sh new file mode 100644 index 0000000000..972ed02fee --- /dev/null +++ b/jdk/test/java/nio/charset/spi/basic.sh @@ -0,0 +1,127 @@ +#!/bin/sh + +# +# 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 4429040 4591027 4814743 +# @summary Unit test for charset providers +# +# @build Test FooCharset FooProvider +# @run shell basic.sh +# @run shell basic.sh ja_JP.eucJP +# @run shell basic.sh tr_TR +# + +# Command-line usage: sh basic.sh /path/to/build [locale] + +if [ -z "$TESTJAVA" ]; then + if [ $# -lt 1 ]; then exit 1; fi + TESTJAVA=$1; shift + TESTSRC=`pwd` + TESTCLASSES=`pwd` +fi + +JAVA=$TESTJAVA/bin/java +JAR=$TESTJAVA/bin/jar + +JARD=`pwd`/x.jar +EXTD=`pwd`/x.ext +TESTD=`pwd`/x.test + +CSS='US-ASCII 8859_1 iso-ir-6 UTF-16 windows-1252 !BAR cp1252' + + +if [ \! -d $EXTD ]; then + # Initialize + echo Initializing... + rm -rf $JARD $EXTD $TESTD + mkdir -p $JARD/META-INF/services x.ext + echo FooProvider \ + >$JARD/META-INF/services/java.nio.charset.spi.CharsetProvider + cp $TESTCLASSES/FooProvider.class $TESTCLASSES/FooCharset.class $JARD + mkdir $TESTD + cp $TESTCLASSES/Test.class $TESTD + (cd $JARD; $JAR -cf $EXTD/test.jar *) +fi + +if [ $# -gt 0 ]; then + # Use locale specified on command line, if it's supported + L="$1" + shift + s=`uname -s` + if [ $s != Linux -a $s != SunOS ]; then + echo "$L: Locales not supported on this system, skipping..." + exit 0 + fi + if [ "x`locale -a | grep $L`" != "x$L" ]; then + echo "$L: Locale not supported, skipping..." + exit 0 + fi + LC_ALL=$L; export LC_ALL +fi + +TMP=${TMP:-$TEMP}; TMP=${TMP:-/tmp} +cd $TMP + +case `uname` in + SunOS | Linux ) CPS=':' ;; + Windows* ) CPS=';' ;; + *) echo "Unknown platform: `uname`"; exit 1 ;; +esac + +failures=0 +for where in ext app; do + for security in none minimal-policy cp-policy; do + echo ''; + echo "LC_ALL=$LC_ALL where=$where security=$security" + av='' + if [ $where = ext ]; then + av="$av -cp $TESTD -Djava.ext.dirs=$EXTD"; + else + av="$av -cp $TESTD$CPS$EXTD/test.jar"; + fi + case $security in + none) css="$CSS FOO";; + # Minimal policy in this case is more or less carbon copy of jre default + # security policy and doesn't give explicit runtime permission + # for user provided runtime loadable charsets + minimal-policy) css="$CSS !FOO"; + av="$av -Djava.security.manager -Djava.security.policy==$TESTSRC/default-pol";; + cp-policy) css="$CSS FOO"; + av="$av -Djava.security.manager + -Djava.security.policy==$TESTSRC/charsetProvider.sp";; + esac + if (set -x; $JAVA $av Test $css) 2>&1; then + continue; + else + failures=`expr $failures + 1` + fi + done +done + +echo '' +if [ $failures -gt 0 ]; + then echo "$failures cases failed"; + else echo "All cases passed"; fi +exit $failures diff --git a/jdk/test/java/nio/charset/spi/charsetProvider.sp b/jdk/test/java/nio/charset/spi/charsetProvider.sp new file mode 100644 index 0000000000..a50c8a463a --- /dev/null +++ b/jdk/test/java/nio/charset/spi/charsetProvider.sp @@ -0,0 +1,5 @@ +// + +grant { + permission java.lang.RuntimePermission "charsetProvider"; +}; diff --git a/jdk/test/java/nio/charset/spi/default-pol b/jdk/test/java/nio/charset/spi/default-pol new file mode 100644 index 0000000000..557979ef93 --- /dev/null +++ b/jdk/test/java/nio/charset/spi/default-pol @@ -0,0 +1,48 @@ + +// Standard extensions get all permissions by default + +grant codeBase "file:${java.home}/lib/ext/*" { + permission java.security.AllPermission; +}; + +// default permissions granted to all domains + +grant { + // Allows any thread to stop itself using the java.lang.Thread.stop() + // method that takes no argument. + // Note that this permission is granted by default only to remain + // backwards compatible. + // It is strongly recommended that you either remove this permission + // from this policy file or further restrict it to code sources + // that you specify, because Thread.stop() is potentially unsafe. + // See "http://java.sun.com/notes" for more information. + permission java.lang.RuntimePermission "stopThread"; + + // allows anyone to listen on un-privileged ports + permission java.net.SocketPermission "localhost:1024-", "listen"; + + // "standard" properies that can be read by anyone + + permission java.util.PropertyPermission "java.version", "read"; + permission java.util.PropertyPermission "java.vendor", "read"; + permission java.util.PropertyPermission "java.vendor.url", "read"; + permission java.util.PropertyPermission "java.class.version", "read"; + permission java.util.PropertyPermission "os.name", "read"; + permission java.util.PropertyPermission "os.version", "read"; + permission java.util.PropertyPermission "os.arch", "read"; + permission java.util.PropertyPermission "file.separator", "read"; + permission java.util.PropertyPermission "path.separator", "read"; + permission java.util.PropertyPermission "line.separator", "read"; + + permission java.util.PropertyPermission "java.specification.version", "read"; + permission java.util.PropertyPermission "java.specification.vendor", "read"; + permission java.util.PropertyPermission "java.specification.name", "read"; + + permission java.util.PropertyPermission "java.vm.specification.version", "read"; + permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; + permission java.util.PropertyPermission "java.vm.specification.name", "read"; + permission java.util.PropertyPermission "java.vm.version", "read"; + permission java.util.PropertyPermission "java.vm.vendor", "read"; + permission java.util.PropertyPermission "java.vm.name", "read"; +}; + -- GitLab