Signed-off-by: Huw Davies huw@codeweavers.com --- dlls/kernel32/tests/locale.c | 12 +- libs/port/decompose.c | 1308 +++++++++++++++++++++++++++++++++- tools/make_unicode | 150 +++- 3 files changed, 1452 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 851da7febf..1e25122c23 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -5703,16 +5703,16 @@ static void test_NormalizeString(void) { part0_str10, { part0_str10, part0_nfd10, part0_str10, part0_nfd10 }, { 1, 0, 1, 0 } }, { part0_str11, { part0_str11, part0_nfd11, part0_str11, part0_nfd11 }, { 1, 0, 1, 0 } }, { part0_str12, { part0_nfc12, part0_nfd12, part0_nfc12, part0_nfd12 }, { 1, 0, 1, 0 } }, - { part1_str1, { part1_str1, part1_str1, part1_nfkc1, part1_nfkc1 }, { 1, 0, 1, 1 } }, - { part1_str2, { part1_str2, part1_str2, part1_nfkc2, part1_nfkc2 }, { 1, 0, 1, 1 } }, + { part1_str1, { part1_str1, part1_str1, part1_nfkc1, part1_nfkc1 }, { 1, 0, 1, 0 } }, + { part1_str2, { part1_str2, part1_str2, part1_nfkc2, part1_nfkc2 }, { 1, 0, 1, 0 } }, { part1_str3, { part1_str3, part1_nfd3, part1_str3, part1_nfd3 }, { 1, 0, 1, 0 } }, - { part1_str4, { part1_str4, part1_str4, part1_nfkc4, part1_nfkc4 }, { 1, 0, 1, 1 } }, + { part1_str4, { part1_str4, part1_str4, part1_nfkc4, part1_nfkc4 }, { 1, 0, 1, 0 } }, { part1_str5, { part1_str5, part1_nfd5, part1_str5, part1_nfd5 }, { 1, 0, 1, 0 } }, { part1_str6, { part1_str6, part1_nfd6, part1_str6, part1_nfd6 }, { 1, 0, 1, 0 } }, - { part1_str7, { part1_str7, part1_str7, part1_nfkc7, part1_nfkc7 }, { 1, 0, 1, 1 } }, + { part1_str7, { part1_str7, part1_str7, part1_nfkc7, part1_nfkc7 }, { 1, 0, 1, 0 } }, { part1_str8, { part1_str8, part1_nfd8, part1_str8, part1_nfd8 }, { 1, 0, 1, 0 } }, - { part1_str9, { part1_str9, part1_str9, part1_nfkc9, part1_nfkc9 }, { 1, 0, 1, 1 } }, - { part1_str10, { part1_str10, part1_str10, part1_nfkc10, part1_nfkc10 }, { 1, 0, 1, 1 } }, + { part1_str9, { part1_str9, part1_str9, part1_nfkc9, part1_nfkc9 }, { 1, 0, 1, 0 } }, + { part1_str10, { part1_str10, part1_str10, part1_nfkc10, part1_nfkc10 }, { 1, 0, 1, 0 } }, { 0 } }; const struct test_data_normal *ptest = test_arr; diff --git a/libs/port/decompose.c b/libs/port/decompose.c index c7568a01ea..c46906921a 100644 --- a/libs/port/decompose.c +++ b/libs/port/decompose.c @@ -747,15 +747,1311 @@ static const WCHAR table[4704] = 0x05d1, 0x05bf, 0x05db, 0x05bf, 0x05e4, 0x05bf, 0x0000, 0x0000 };
+static const WCHAR compatmap_table[8152] = +{ + /* index */ + 0x0110, 0x0120, 0x0130, 0x0140, 0x0100, 0x0150, 0x0160, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0170, 0x0180, + 0x0190, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x01a0, 0x01b0, 0x01c0, + 0x01d0, 0x01e0, 0x01f0, 0x0100, 0x0200, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0210, 0x0100, 0x0220, 0x0230, 0x0240, 0x0250, + 0x0260, 0x0270, 0x0280, 0x0290, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x02a0, 0x02b0, + 0x0100, 0x0100, 0x0100, 0x02c0, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x02d0, 0x02e0, 0x02f0, 0x0300, 0x0310, + /* null sub-index */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 00 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0330, 0x0340, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 01 */ + 0x0320, 0x0320, 0x0320, 0x0350, 0x0360, 0x0320, 0x0320, 0x0370, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0380, 0x0320, 0x0320, 0x0390, + /* sub-index 02 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x03a0, 0x0320, 0x03b0, 0x03c0, 0x0320, + /* sub-index 03 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x03d0, + 0x03e0, 0x0320, 0x0320, 0x0320, 0x0320, 0x03f0, 0x0320, 0x0400, + /* sub-index 05 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0410, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 06 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0420, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 0e */ + 0x0320, 0x0320, 0x0320, 0x0430, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0440, 0x0320, 0x0450, 0x0320, 0x0320, + /* sub-index 0f */ + 0x0460, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0470, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 10 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0480, + /* sub-index 1d */ + 0x0320, 0x0320, 0x0490, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, + 0x0320, 0x04f0, 0x0500, 0x0510, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 1e */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0520, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 1f */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0530, 0x0540, 0x0320, 0x0320, 0x0550, + /* sub-index 20 */ + 0x0560, 0x0570, 0x0580, 0x0590, 0x05a0, 0x05b0, 0x0320, 0x05c0, + 0x05d0, 0x05e0, 0x05f0, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 21 */ + 0x0600, 0x0610, 0x0620, 0x0630, 0x0640, 0x0650, 0x0660, 0x0670, + 0x0680, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 22 */ + 0x0320, 0x0320, 0x0690, 0x06a0, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 24 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x06b0, 0x06c0, + 0x06d0, 0x06e0, 0x06f0, 0x0700, 0x0710, 0x0720, 0x0730, 0x0320, + /* sub-index 2a */ + 0x0740, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0750, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 2c */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0760, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 2d */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0770, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 2e */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0780, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0790, + /* sub-index 2f */ + 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0, 0x0800, 0x0810, + 0x0820, 0x0830, 0x0840, 0x0850, 0x0860, 0x0870, 0x0320, 0x0320, + /* sub-index 30 */ + 0x0880, 0x0320, 0x0320, 0x0890, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x08a0, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x08b0, + /* sub-index 31 */ + 0x0320, 0x0320, 0x0320, 0x08c0, 0x08d0, 0x08e0, 0x08f0, 0x0900, + 0x0910, 0x0920, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index 32 */ + 0x0930, 0x0940, 0x0950, 0x0960, 0x0970, 0x0980, 0x0990, 0x09a0, + 0x09b0, 0x09c0, 0x09d0, 0x09e0, 0x09f0, 0x0a00, 0x0a10, 0x0a20, + /* sub-index 33 */ + 0x0a30, 0x0a40, 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, + 0x0ab0, 0x0ac0, 0x0ad0, 0x0ae0, 0x0af0, 0x0b00, 0x0b10, 0x0b20, + /* sub-index a6 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + 0x0320, 0x0b30, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index a7 */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b40, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b50, + /* sub-index ab */ + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0b60, 0x0320, 0x0320, + 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, + /* sub-index fb */ + 0x0b70, 0x0b80, 0x0b90, 0x0320, 0x0ba0, 0x0bb0, 0x0bc0, 0x0bd0, + 0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0320, 0x0c20, 0x0c30, 0x0c40, + /* sub-index fc */ + 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0cc0, + 0x0cd0, 0x0ce0, 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x0d40, + /* sub-index fd */ + 0x0d50, 0x0d60, 0x0d70, 0x0d80, 0x0320, 0x0d90, 0x0da0, 0x0db0, + 0x0dc0, 0x0dd0, 0x0de0, 0x0df0, 0x0e00, 0x0320, 0x0320, 0x0e10, + /* sub-index fe */ + 0x0320, 0x0e20, 0x0320, 0x0e30, 0x0e40, 0x0e50, 0x0e60, 0x0e70, + 0x0e80, 0x0e90, 0x0ea0, 0x0eb0, 0x0ec0, 0x0ed0, 0x0ee0, 0x0ef0, + /* sub-index ff */ + 0x0f00, 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70, + 0x0f80, 0x0f90, 0x0fa0, 0x0fb0, 0x0fc0, 0x0fd0, 0x0fe0, 0x0320, + /* null offsets */ + 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, + 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, + /* offsets 0x00a0 .. 0x00af */ + 0x0ff1, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, + 0x0ff2, 0x0ff4, 0x0ff4, 0x0ff5, 0x0ff5, 0x0ff5, 0x0ff5, 0x0ff5, + /* offsets 0x00b0 .. 0x00bf */ + 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff8, 0x0ff9, 0x0ffb, 0x0ffc, 0x0ffc, + 0x0ffc, 0x0ffe, 0x0fff, 0x1000, 0x1000, 0x1003, 0x1006, 0x1009, + /* offsets 0x0130 .. 0x013f */ + 0x1009, 0x1009, 0x1009, 0x100b, 0x100d, 0x100d, 0x100d, 0x100d, + 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, 0x100d, + /* offsets 0x0140 .. 0x014f */ + 0x100f, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011, 0x1011, + 0x1011, 0x1011, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, + /* offsets 0x0170 .. 0x017f */ + 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, + 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, 0x1013, + /* offsets 0x01c0 .. 0x01cf */ + 0x1014, 0x1014, 0x1014, 0x1014, 0x1014, 0x1016, 0x1018, 0x101a, + 0x101c, 0x101e, 0x1020, 0x1022, 0x1024, 0x1026, 0x1026, 0x1026, + /* offsets 0x01f0 .. 0x01ff */ + 0x1026, 0x1026, 0x1028, 0x102a, 0x102c, 0x102c, 0x102c, 0x102c, + 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, + /* offsets 0x02b0 .. 0x02bf */ + 0x102c, 0x102d, 0x102e, 0x102f, 0x1030, 0x1031, 0x1032, 0x1033, + 0x1034, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, + /* offsets 0x02d0 .. 0x02df */ + 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, + 0x1035, 0x1037, 0x1039, 0x103b, 0x103d, 0x103f, 0x1041, 0x1041, + /* offsets 0x02e0 .. 0x02ef */ + 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1046, 0x1046, + 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, + /* offsets 0x0370 .. 0x037f */ + 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, 0x1046, + 0x1046, 0x1046, 0x1046, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, + /* offsets 0x0380 .. 0x038f */ + 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x104a, 0x104a, 0x104a, + 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, 0x104a, + /* offsets 0x03d0 .. 0x03df */ + 0x104a, 0x104b, 0x104c, 0x104d, 0x104d, 0x104d, 0x104e, 0x104f, + 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, 0x104f, + /* offsets 0x03f0 .. 0x03ff */ + 0x104f, 0x1050, 0x1051, 0x1052, 0x1052, 0x1053, 0x1054, 0x1054, + 0x1054, 0x1054, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, + /* offsets 0x0580 .. 0x058f */ + 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x1055, + 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, + /* offsets 0x0670 .. 0x067f */ + 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1057, 0x1059, 0x105b, + 0x105d, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f, 0x105f, + /* offsets 0x0e30 .. 0x0e3f */ + 0x105f, 0x105f, 0x105f, 0x105f, 0x1061, 0x1061, 0x1061, 0x1061, + 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, 0x1061, + /* offsets 0x0eb0 .. 0x0ebf */ + 0x1061, 0x1061, 0x1061, 0x1061, 0x1063, 0x1063, 0x1063, 0x1063, + 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, + /* offsets 0x0ed0 .. 0x0edf */ + 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, + 0x1063, 0x1063, 0x1063, 0x1063, 0x1063, 0x1065, 0x1067, 0x1067, + /* offsets 0x0f00 .. 0x0f0f */ + 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, + 0x1067, 0x1067, 0x1067, 0x1067, 0x1067, 0x1068, 0x1068, 0x1068, + /* offsets 0x0f70 .. 0x0f7f */ + 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, + 0x106a, 0x106a, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, + /* offsets 0x10f0 .. 0x10ff */ + 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, + 0x106c, 0x106c, 0x106c, 0x106c, 0x106c, 0x106d, 0x106d, 0x106d, + /* offsets 0x1d20 .. 0x1d2f */ + 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, + 0x106d, 0x106d, 0x106d, 0x106d, 0x106d, 0x106e, 0x106f, 0x1070, + /* offsets 0x1d30 .. 0x1d3f */ + 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077, + 0x1078, 0x1079, 0x107a, 0x107b, 0x107b, 0x107c, 0x107d, 0x107e, + /* offsets 0x1d40 .. 0x1d4f */ + 0x107f, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, + 0x1087, 0x1088, 0x1089, 0x108a, 0x108b, 0x108c, 0x108d, 0x108d, + /* offsets 0x1d50 .. 0x1d5f */ + 0x108e, 0x108f, 0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095, + 0x1096, 0x1097, 0x1098, 0x1099, 0x109a, 0x109b, 0x109c, 0x109d, + /* offsets 0x1d60 .. 0x1d6f */ + 0x109e, 0x109f, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, + 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, + /* offsets 0x1d70 .. 0x1d7f */ + 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, + 0x10a9, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, + /* offsets 0x1d90 .. 0x1d9f */ + 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10aa, + 0x10aa, 0x10aa, 0x10aa, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, + /* offsets 0x1da0 .. 0x1daf */ + 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, + 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, + /* offsets 0x1db0 .. 0x1dbf */ + 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c6, + 0x10c7, 0x10c8, 0x10c9, 0x10ca, 0x10cb, 0x10cc, 0x10cd, 0x10ce, + /* offsets 0x1e90 .. 0x1e9f */ + 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, 0x10cf, + 0x10cf, 0x10cf, 0x10cf, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, + /* offsets 0x1fb0 .. 0x1fbf */ + 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, + 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d1, 0x10d3, 0x10d3, + /* offsets 0x1fc0 .. 0x1fcf */ + 0x10d5, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, + 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, + /* offsets 0x1ff0 .. 0x1fff */ + 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, + 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d7, 0x10d9, + /* offsets 0x2000 .. 0x200f */ + 0x10d9, 0x10d9, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, + 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, + /* offsets 0x2010 .. 0x201f */ + 0x10e2, 0x10e2, 0x10e3, 0x10e3, 0x10e3, 0x10e3, 0x10e3, 0x10e3, + 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, + /* offsets 0x2020 .. 0x202f */ + 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e5, 0x10e6, 0x10e8, 0x10eb, + 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, 0x10eb, + /* offsets 0x2030 .. 0x203f */ + 0x10ec, 0x10ec, 0x10ec, 0x10ec, 0x10ee, 0x10f1, 0x10f1, 0x10f3, + 0x10f6, 0x10f6, 0x10f6, 0x10f6, 0x10f6, 0x10f8, 0x10f8, 0x10fa, + /* offsets 0x2040 .. 0x204f */ + 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, 0x10fa, + 0x10fc, 0x10fe, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, + /* offsets 0x2050 .. 0x205f */ + 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, + 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, 0x1104, + /* offsets 0x2070 .. 0x207f */ + 0x1105, 0x1106, 0x1107, 0x1107, 0x1107, 0x1108, 0x1109, 0x110a, + 0x110b, 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, + /* offsets 0x2080 .. 0x208f */ + 0x1113, 0x1114, 0x1115, 0x1116, 0x1117, 0x1118, 0x1119, 0x111a, + 0x111b, 0x111c, 0x111d, 0x111e, 0x111f, 0x1120, 0x1121, 0x1122, + /* offsets 0x2090 .. 0x209f */ + 0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127, 0x1128, 0x1129, + 0x112a, 0x112b, 0x112c, 0x112d, 0x112e, 0x112f, 0x112f, 0x112f, + /* offsets 0x20a0 .. 0x20af */ + 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, 0x112f, + 0x112f, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131, 0x1131, + /* offsets 0x2100 .. 0x210f */ + 0x1131, 0x1134, 0x1137, 0x1138, 0x113a, 0x113a, 0x113d, 0x1140, + 0x1141, 0x1141, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, 0x1148, + /* offsets 0x2110 .. 0x211f */ + 0x1149, 0x114a, 0x114b, 0x114c, 0x114d, 0x114d, 0x114e, 0x1150, + 0x1150, 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1155, + /* offsets 0x2120 .. 0x212f */ + 0x1155, 0x1157, 0x115a, 0x115c, 0x115c, 0x115d, 0x115d, 0x115d, + 0x115d, 0x115e, 0x115e, 0x115e, 0x115e, 0x115f, 0x1160, 0x1160, + /* offsets 0x2130 .. 0x213f */ + 0x1161, 0x1162, 0x1163, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, + 0x1168, 0x1169, 0x116a, 0x116a, 0x116d, 0x116e, 0x116f, 0x1170, + /* offsets 0x2140 .. 0x214f */ + 0x1171, 0x1172, 0x1172, 0x1172, 0x1172, 0x1172, 0x1173, 0x1174, + 0x1175, 0x1176, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, + /* offsets 0x2150 .. 0x215f */ + 0x1177, 0x117a, 0x117d, 0x1181, 0x1184, 0x1187, 0x118a, 0x118d, + 0x1190, 0x1193, 0x1196, 0x1199, 0x119c, 0x119f, 0x11a2, 0x11a5, + /* offsets 0x2160 .. 0x216f */ + 0x11a7, 0x11a8, 0x11aa, 0x11ad, 0x11af, 0x11b0, 0x11b2, 0x11b5, + 0x11b9, 0x11bb, 0x11bc, 0x11be, 0x11c1, 0x11c2, 0x11c3, 0x11c4, + /* offsets 0x2170 .. 0x217f */ + 0x11c5, 0x11c6, 0x11c8, 0x11cb, 0x11cd, 0x11ce, 0x11d0, 0x11d3, + 0x11d7, 0x11d9, 0x11da, 0x11dc, 0x11df, 0x11e0, 0x11e1, 0x11e2, + /* offsets 0x2180 .. 0x218f */ + 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11e3, + 0x11e3, 0x11e3, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, + /* offsets 0x2220 .. 0x222f */ + 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, + 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e6, 0x11e8, 0x11eb, 0x11eb, + /* offsets 0x2230 .. 0x223f */ + 0x11ed, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, + 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, 0x11f0, + /* offsets 0x2460 .. 0x246f */ + 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, 0x11f7, + 0x11f8, 0x11f9, 0x11fb, 0x11fd, 0x11ff, 0x1201, 0x1203, 0x1205, + /* offsets 0x2470 .. 0x247f */ + 0x1207, 0x1209, 0x120b, 0x120d, 0x120f, 0x1212, 0x1215, 0x1218, + 0x121b, 0x121e, 0x1221, 0x1224, 0x1227, 0x122a, 0x122e, 0x1232, + /* offsets 0x2480 .. 0x248f */ + 0x1236, 0x123a, 0x123e, 0x1242, 0x1246, 0x124a, 0x124e, 0x1252, + 0x1256, 0x1258, 0x125a, 0x125c, 0x125e, 0x1260, 0x1262, 0x1264, + /* offsets 0x2490 .. 0x249f */ + 0x1266, 0x1268, 0x126b, 0x126e, 0x1271, 0x1274, 0x1277, 0x127a, + 0x127d, 0x1280, 0x1283, 0x1286, 0x1289, 0x128c, 0x128f, 0x1292, + /* offsets 0x24a0 .. 0x24af */ + 0x1295, 0x1298, 0x129b, 0x129e, 0x12a1, 0x12a4, 0x12a7, 0x12aa, + 0x12ad, 0x12b0, 0x12b3, 0x12b6, 0x12b9, 0x12bc, 0x12bf, 0x12c2, + /* offsets 0x24b0 .. 0x24bf */ + 0x12c5, 0x12c8, 0x12cb, 0x12ce, 0x12d1, 0x12d4, 0x12d7, 0x12d8, + 0x12d9, 0x12da, 0x12db, 0x12dc, 0x12dd, 0x12de, 0x12df, 0x12e0, + /* offsets 0x24c0 .. 0x24cf */ + 0x12e1, 0x12e2, 0x12e3, 0x12e4, 0x12e5, 0x12e6, 0x12e7, 0x12e8, + 0x12e9, 0x12ea, 0x12eb, 0x12ec, 0x12ed, 0x12ee, 0x12ef, 0x12f0, + /* offsets 0x24d0 .. 0x24df */ + 0x12f1, 0x12f2, 0x12f3, 0x12f4, 0x12f5, 0x12f6, 0x12f7, 0x12f8, + 0x12f9, 0x12fa, 0x12fb, 0x12fc, 0x12fd, 0x12fe, 0x12ff, 0x1300, + /* offsets 0x24e0 .. 0x24ef */ + 0x1301, 0x1302, 0x1303, 0x1304, 0x1305, 0x1306, 0x1307, 0x1308, + 0x1309, 0x130a, 0x130b, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, + /* offsets 0x2a00 .. 0x2a0f */ + 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, + 0x130c, 0x130c, 0x130c, 0x130c, 0x130c, 0x1310, 0x1310, 0x1310, + /* offsets 0x2a70 .. 0x2a7f */ + 0x1310, 0x1310, 0x1310, 0x1310, 0x1310, 0x1313, 0x1315, 0x1318, + 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, + /* offsets 0x2c70 .. 0x2c7f */ + 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, + 0x1318, 0x1318, 0x1318, 0x1318, 0x1318, 0x1319, 0x131a, 0x131a, + /* offsets 0x2d60 .. 0x2d6f */ + 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, + 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, 0x131a, + /* offsets 0x2e90 .. 0x2e9f */ + 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, + 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, 0x131b, + /* offsets 0x2ef0 .. 0x2eff */ + 0x131c, 0x131c, 0x131c, 0x131c, 0x131d, 0x131d, 0x131d, 0x131d, + 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, 0x131d, + /* offsets 0x2f00 .. 0x2f0f */ + 0x131d, 0x131e, 0x131f, 0x1320, 0x1321, 0x1322, 0x1323, 0x1324, + 0x1325, 0x1326, 0x1327, 0x1328, 0x1329, 0x132a, 0x132b, 0x132c, + /* offsets 0x2f10 .. 0x2f1f */ + 0x132d, 0x132e, 0x132f, 0x1330, 0x1331, 0x1332, 0x1333, 0x1334, + 0x1335, 0x1336, 0x1337, 0x1338, 0x1339, 0x133a, 0x133b, 0x133c, + /* offsets 0x2f20 .. 0x2f2f */ + 0x133d, 0x133e, 0x133f, 0x1340, 0x1341, 0x1342, 0x1343, 0x1344, + 0x1345, 0x1346, 0x1347, 0x1348, 0x1349, 0x134a, 0x134b, 0x134c, + /* offsets 0x2f30 .. 0x2f3f */ + 0x134d, 0x134e, 0x134f, 0x1350, 0x1351, 0x1352, 0x1353, 0x1354, + 0x1355, 0x1356, 0x1357, 0x1358, 0x1359, 0x135a, 0x135b, 0x135c, + /* offsets 0x2f40 .. 0x2f4f */ + 0x135d, 0x135e, 0x135f, 0x1360, 0x1361, 0x1362, 0x1363, 0x1364, + 0x1365, 0x1366, 0x1367, 0x1368, 0x1369, 0x136a, 0x136b, 0x136c, + /* offsets 0x2f50 .. 0x2f5f */ + 0x136d, 0x136e, 0x136f, 0x1370, 0x1371, 0x1372, 0x1373, 0x1374, + 0x1375, 0x1376, 0x1377, 0x1378, 0x1379, 0x137a, 0x137b, 0x137c, + /* offsets 0x2f60 .. 0x2f6f */ + 0x137d, 0x137e, 0x137f, 0x1380, 0x1381, 0x1382, 0x1383, 0x1384, + 0x1385, 0x1386, 0x1387, 0x1388, 0x1389, 0x138a, 0x138b, 0x138c, + /* offsets 0x2f70 .. 0x2f7f */ + 0x138d, 0x138e, 0x138f, 0x1390, 0x1391, 0x1392, 0x1393, 0x1394, + 0x1395, 0x1396, 0x1397, 0x1398, 0x1399, 0x139a, 0x139b, 0x139c, + /* offsets 0x2f80 .. 0x2f8f */ + 0x139d, 0x139e, 0x139f, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, + 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, + /* offsets 0x2f90 .. 0x2f9f */ + 0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, + 0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, + /* offsets 0x2fa0 .. 0x2faf */ + 0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, + 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, + /* offsets 0x2fb0 .. 0x2fbf */ + 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, + 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, + /* offsets 0x2fc0 .. 0x2fcf */ + 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, + 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, + /* offsets 0x2fd0 .. 0x2fdf */ + 0x13ed, 0x13ee, 0x13ef, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f3, + 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, + /* offsets 0x3000 .. 0x300f */ + 0x13f3, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, + 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, + /* offsets 0x3030 .. 0x303f */ + 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f4, 0x13f5, + 0x13f5, 0x13f6, 0x13f7, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, + /* offsets 0x3090 .. 0x309f */ + 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13f8, + 0x13f8, 0x13f8, 0x13f8, 0x13f8, 0x13fa, 0x13fc, 0x13fc, 0x13fc, + /* offsets 0x30f0 .. 0x30ff */ + 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, + 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, 0x13fe, + /* offsets 0x3130 .. 0x313f */ + 0x1400, 0x1400, 0x1401, 0x1402, 0x1403, 0x1404, 0x1405, 0x1406, + 0x1407, 0x1408, 0x1409, 0x140a, 0x140b, 0x140c, 0x140d, 0x140e, + /* offsets 0x3140 .. 0x314f */ + 0x140f, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416, + 0x1417, 0x1418, 0x1419, 0x141a, 0x141b, 0x141c, 0x141d, 0x141e, + /* offsets 0x3150 .. 0x315f */ + 0x141f, 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426, + 0x1427, 0x1428, 0x1429, 0x142a, 0x142b, 0x142c, 0x142d, 0x142e, + /* offsets 0x3160 .. 0x316f */ + 0x142f, 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436, + 0x1437, 0x1438, 0x1439, 0x143a, 0x143b, 0x143c, 0x143d, 0x143e, + /* offsets 0x3170 .. 0x317f */ + 0x143f, 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0x1445, 0x1446, + 0x1447, 0x1448, 0x1449, 0x144a, 0x144b, 0x144c, 0x144d, 0x144e, + /* offsets 0x3180 .. 0x318f */ + 0x144f, 0x1450, 0x1451, 0x1452, 0x1453, 0x1454, 0x1455, 0x1456, + 0x1457, 0x1458, 0x1459, 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, + /* offsets 0x3190 .. 0x319f */ + 0x145e, 0x145e, 0x145e, 0x145f, 0x1460, 0x1461, 0x1462, 0x1463, + 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469, 0x146a, 0x146b, + /* offsets 0x3200 .. 0x320f */ + 0x146c, 0x146f, 0x1472, 0x1475, 0x1478, 0x147b, 0x147e, 0x1481, + 0x1484, 0x1487, 0x148a, 0x148d, 0x1490, 0x1493, 0x1496, 0x149a, + /* offsets 0x3210 .. 0x321f */ + 0x149e, 0x14a2, 0x14a6, 0x14aa, 0x14ae, 0x14b2, 0x14b6, 0x14ba, + 0x14be, 0x14c2, 0x14c6, 0x14ca, 0x14ce, 0x14d2, 0x14d9, 0x14df, + /* offsets 0x3220 .. 0x322f */ + 0x14df, 0x14e2, 0x14e5, 0x14e8, 0x14eb, 0x14ee, 0x14f1, 0x14f4, + 0x14f7, 0x14fa, 0x14fd, 0x1500, 0x1503, 0x1506, 0x1509, 0x150c, + /* offsets 0x3230 .. 0x323f */ + 0x150f, 0x1512, 0x1515, 0x1518, 0x151b, 0x151e, 0x1521, 0x1524, + 0x1527, 0x152a, 0x152d, 0x1530, 0x1533, 0x1536, 0x1539, 0x153c, + /* offsets 0x3240 .. 0x324f */ + 0x153f, 0x1542, 0x1545, 0x1548, 0x154b, 0x154c, 0x154d, 0x154e, + 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, 0x154f, + /* offsets 0x3250 .. 0x325f */ + 0x154f, 0x1552, 0x1554, 0x1556, 0x1558, 0x155a, 0x155c, 0x155e, + 0x1560, 0x1562, 0x1564, 0x1566, 0x1568, 0x156a, 0x156c, 0x156e, + /* offsets 0x3260 .. 0x326f */ + 0x1570, 0x1571, 0x1572, 0x1573, 0x1574, 0x1575, 0x1576, 0x1577, + 0x1578, 0x1579, 0x157a, 0x157b, 0x157c, 0x157d, 0x157e, 0x1580, + /* offsets 0x3270 .. 0x327f */ + 0x1582, 0x1584, 0x1586, 0x1588, 0x158a, 0x158c, 0x158e, 0x1590, + 0x1592, 0x1594, 0x1596, 0x1598, 0x159a, 0x159f, 0x15a3, 0x15a5, + /* offsets 0x3280 .. 0x328f */ + 0x15a5, 0x15a6, 0x15a7, 0x15a8, 0x15a9, 0x15aa, 0x15ab, 0x15ac, + 0x15ad, 0x15ae, 0x15af, 0x15b0, 0x15b1, 0x15b2, 0x15b3, 0x15b4, + /* offsets 0x3290 .. 0x329f */ + 0x15b5, 0x15b6, 0x15b7, 0x15b8, 0x15b9, 0x15ba, 0x15bb, 0x15bc, + 0x15bd, 0x15be, 0x15bf, 0x15c0, 0x15c1, 0x15c2, 0x15c3, 0x15c4, + /* offsets 0x32a0 .. 0x32af */ + 0x15c5, 0x15c6, 0x15c7, 0x15c8, 0x15c9, 0x15ca, 0x15cb, 0x15cc, + 0x15cd, 0x15ce, 0x15cf, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4, + /* offsets 0x32b0 .. 0x32bf */ + 0x15d5, 0x15d6, 0x15d8, 0x15da, 0x15dc, 0x15de, 0x15e0, 0x15e2, + 0x15e4, 0x15e6, 0x15e8, 0x15ea, 0x15ec, 0x15ee, 0x15f0, 0x15f2, + /* offsets 0x32c0 .. 0x32cf */ + 0x15f4, 0x15f6, 0x15f8, 0x15fa, 0x15fc, 0x15fe, 0x1600, 0x1602, + 0x1604, 0x1606, 0x1609, 0x160c, 0x160f, 0x1611, 0x1614, 0x1616, + /* offsets 0x32d0 .. 0x32df */ + 0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f, 0x1620, + 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628, + /* offsets 0x32e0 .. 0x32ef */ + 0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f, 0x1630, + 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, 0x1638, + /* offsets 0x32f0 .. 0x32ff */ + 0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f, 0x1640, + 0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, 0x1648, + /* offsets 0x3300 .. 0x330f */ + 0x1648, 0x164c, 0x1650, 0x1654, 0x1657, 0x165b, 0x165e, 0x1661, + 0x1666, 0x166a, 0x166d, 0x1670, 0x1673, 0x1677, 0x167b, 0x167e, + /* offsets 0x3310 .. 0x331f */ + 0x1681, 0x1683, 0x1686, 0x168a, 0x168e, 0x1690, 0x1695, 0x169b, + 0x16a0, 0x16a3, 0x16a8, 0x16ad, 0x16b1, 0x16b4, 0x16b7, 0x16ba, + /* offsets 0x3320 .. 0x332f */ + 0x16be, 0x16c3, 0x16c7, 0x16ca, 0x16cd, 0x16d0, 0x16d2, 0x16d4, + 0x16d6, 0x16d8, 0x16db, 0x16de, 0x16e3, 0x16e6, 0x16ea, 0x16ef, + /* offsets 0x3330 .. 0x333f */ + 0x16f2, 0x16f4, 0x16f6, 0x16fb, 0x16ff, 0x1704, 0x1707, 0x170c, + 0x170e, 0x1711, 0x1714, 0x1717, 0x171a, 0x171d, 0x1721, 0x1724, + /* offsets 0x3340 .. 0x334f */ + 0x1726, 0x1729, 0x172c, 0x172f, 0x1733, 0x1736, 0x1739, 0x173c, + 0x1741, 0x1745, 0x1747, 0x174c, 0x174e, 0x1752, 0x1756, 0x1759, + /* offsets 0x3350 .. 0x335f */ + 0x175c, 0x175f, 0x1763, 0x1765, 0x1768, 0x176c, 0x176e, 0x1773, + 0x1776, 0x1778, 0x177a, 0x177c, 0x177e, 0x1780, 0x1782, 0x1784, + /* offsets 0x3360 .. 0x336f */ + 0x1786, 0x1788, 0x178a, 0x178d, 0x1790, 0x1793, 0x1796, 0x1799, + 0x179c, 0x179f, 0x17a2, 0x17a5, 0x17a8, 0x17ab, 0x17ae, 0x17b1, + /* offsets 0x3370 .. 0x337f */ + 0x17b4, 0x17b7, 0x17ba, 0x17bc, 0x17be, 0x17c1, 0x17c3, 0x17c5, + 0x17c7, 0x17ca, 0x17cd, 0x17cf, 0x17d1, 0x17d3, 0x17d5, 0x17d7, + /* offsets 0x3380 .. 0x338f */ + 0x17db, 0x17dd, 0x17df, 0x17e1, 0x17e3, 0x17e5, 0x17e7, 0x17e9, + 0x17eb, 0x17ee, 0x17f2, 0x17f4, 0x17f6, 0x17f8, 0x17fa, 0x17fc, + /* offsets 0x3390 .. 0x339f */ + 0x17fe, 0x1800, 0x1803, 0x1806, 0x1809, 0x180c, 0x180e, 0x1810, + 0x1812, 0x1814, 0x1816, 0x1818, 0x181a, 0x181c, 0x181e, 0x1820, + /* offsets 0x33a0 .. 0x33af */ + 0x1823, 0x1826, 0x1828, 0x182b, 0x182e, 0x1831, 0x1833, 0x1836, + 0x1839, 0x183d, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b, 0x1850, + /* offsets 0x33b0 .. 0x33bf */ + 0x1856, 0x1858, 0x185a, 0x185c, 0x185e, 0x1860, 0x1862, 0x1864, + 0x1866, 0x1868, 0x186a, 0x186c, 0x186e, 0x1870, 0x1872, 0x1874, + /* offsets 0x33c0 .. 0x33cf */ + 0x1876, 0x1878, 0x187a, 0x187e, 0x1880, 0x1882, 0x1884, 0x1888, + 0x188b, 0x188d, 0x188f, 0x1891, 0x1893, 0x1895, 0x1897, 0x1899, + /* offsets 0x33d0 .. 0x33df */ + 0x189b, 0x189d, 0x189f, 0x18a2, 0x18a4, 0x18a6, 0x18a9, 0x18ac, + 0x18ae, 0x18b2, 0x18b5, 0x18b7, 0x18b9, 0x18bb, 0x18bd, 0x18c0, + /* offsets 0x33e0 .. 0x33ef */ + 0x18c3, 0x18c5, 0x18c7, 0x18c9, 0x18cb, 0x18cd, 0x18cf, 0x18d1, + 0x18d3, 0x18d5, 0x18d8, 0x18db, 0x18de, 0x18e1, 0x18e4, 0x18e7, + /* offsets 0x33f0 .. 0x33ff */ + 0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6, 0x18f9, 0x18fc, 0x18ff, + 0x1902, 0x1905, 0x1908, 0x190b, 0x190e, 0x1911, 0x1914, 0x1917, + /* offsets 0xa690 .. 0xa69f */ + 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, + 0x191a, 0x191a, 0x191a, 0x191a, 0x191a, 0x191b, 0x191c, 0x191c, + /* offsets 0xa770 .. 0xa77f */ + 0x191c, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, + 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, + /* offsets 0xa7f0 .. 0xa7ff */ + 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, 0x191d, + 0x191d, 0x191e, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, + /* offsets 0xab50 .. 0xab5f */ + 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, + 0x191f, 0x191f, 0x191f, 0x191f, 0x191f, 0x1920, 0x1921, 0x1922, + /* offsets 0xfb00 .. 0xfb0f */ + 0x1923, 0x1925, 0x1927, 0x1929, 0x192c, 0x192f, 0x1931, 0x1933, + 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, 0x1933, + /* offsets 0xfb10 .. 0xfb1f */ + 0x1933, 0x1933, 0x1933, 0x1933, 0x1935, 0x1937, 0x1939, 0x193b, + 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, + /* offsets 0xfb20 .. 0xfb2f */ + 0x193d, 0x193e, 0x193f, 0x1940, 0x1941, 0x1942, 0x1943, 0x1944, + 0x1945, 0x1946, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, + /* offsets 0xfb40 .. 0xfb4f */ + 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, + 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, 0x1947, + /* offsets 0xfb50 .. 0xfb5f */ + 0x1949, 0x194a, 0x194b, 0x194c, 0x194d, 0x194e, 0x194f, 0x1950, + 0x1951, 0x1952, 0x1953, 0x1954, 0x1955, 0x1956, 0x1957, 0x1958, + /* offsets 0xfb60 .. 0xfb6f */ + 0x1959, 0x195a, 0x195b, 0x195c, 0x195d, 0x195e, 0x195f, 0x1960, + 0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x1967, 0x1968, + /* offsets 0xfb70 .. 0xfb7f */ + 0x1969, 0x196a, 0x196b, 0x196c, 0x196d, 0x196e, 0x196f, 0x1970, + 0x1971, 0x1972, 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, + /* offsets 0xfb80 .. 0xfb8f */ + 0x1979, 0x197a, 0x197b, 0x197c, 0x197d, 0x197e, 0x197f, 0x1980, + 0x1981, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, 0x1988, + /* offsets 0xfb90 .. 0xfb9f */ + 0x1989, 0x198a, 0x198b, 0x198c, 0x198d, 0x198e, 0x198f, 0x1990, + 0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997, 0x1998, + /* offsets 0xfba0 .. 0xfbaf */ + 0x1999, 0x199a, 0x199b, 0x199c, 0x199d, 0x199e, 0x199f, 0x19a0, + 0x19a1, 0x19a2, 0x19a3, 0x19a4, 0x19a5, 0x19a6, 0x19a7, 0x19a8, + /* offsets 0xfbb0 .. 0xfbbf */ + 0x19a9, 0x19aa, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, + 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ab, + /* offsets 0xfbd0 .. 0xfbdf */ + 0x19ab, 0x19ab, 0x19ab, 0x19ab, 0x19ac, 0x19ad, 0x19ae, 0x19af, + 0x19b0, 0x19b1, 0x19b2, 0x19b3, 0x19b4, 0x19b5, 0x19b6, 0x19b7, + /* offsets 0xfbe0 .. 0xfbef */ + 0x19b8, 0x19b9, 0x19ba, 0x19bb, 0x19bc, 0x19bd, 0x19be, 0x19bf, + 0x19c0, 0x19c1, 0x19c2, 0x19c4, 0x19c6, 0x19c8, 0x19ca, 0x19cc, + /* offsets 0xfbf0 .. 0xfbff */ + 0x19ce, 0x19d0, 0x19d2, 0x19d4, 0x19d6, 0x19d8, 0x19da, 0x19dc, + 0x19de, 0x19e0, 0x19e2, 0x19e4, 0x19e6, 0x19e7, 0x19e8, 0x19e9, + /* offsets 0xfc00 .. 0xfc0f */ + 0x19ea, 0x19ec, 0x19ee, 0x19f0, 0x19f2, 0x19f4, 0x19f6, 0x19f8, + 0x19fa, 0x19fc, 0x19fe, 0x1a00, 0x1a02, 0x1a04, 0x1a06, 0x1a08, + /* offsets 0xfc10 .. 0xfc1f */ + 0x1a0a, 0x1a0c, 0x1a0e, 0x1a10, 0x1a12, 0x1a14, 0x1a16, 0x1a18, + 0x1a1a, 0x1a1c, 0x1a1e, 0x1a20, 0x1a22, 0x1a24, 0x1a26, 0x1a28, + /* offsets 0xfc20 .. 0xfc2f */ + 0x1a2a, 0x1a2c, 0x1a2e, 0x1a30, 0x1a32, 0x1a34, 0x1a36, 0x1a38, + 0x1a3a, 0x1a3c, 0x1a3e, 0x1a40, 0x1a42, 0x1a44, 0x1a46, 0x1a48, + /* offsets 0xfc30 .. 0xfc3f */ + 0x1a4a, 0x1a4c, 0x1a4e, 0x1a50, 0x1a52, 0x1a54, 0x1a56, 0x1a58, + 0x1a5a, 0x1a5c, 0x1a5e, 0x1a60, 0x1a62, 0x1a64, 0x1a66, 0x1a68, + /* offsets 0xfc40 .. 0xfc4f */ + 0x1a6a, 0x1a6c, 0x1a6e, 0x1a70, 0x1a72, 0x1a74, 0x1a76, 0x1a78, + 0x1a7a, 0x1a7c, 0x1a7e, 0x1a80, 0x1a82, 0x1a84, 0x1a86, 0x1a88, + /* offsets 0xfc50 .. 0xfc5f */ + 0x1a8a, 0x1a8c, 0x1a8e, 0x1a90, 0x1a92, 0x1a94, 0x1a96, 0x1a98, + 0x1a9a, 0x1a9c, 0x1a9e, 0x1aa0, 0x1aa2, 0x1aa4, 0x1aa6, 0x1aa9, + /* offsets 0xfc60 .. 0xfc6f */ + 0x1aac, 0x1aaf, 0x1ab2, 0x1ab5, 0x1ab8, 0x1aba, 0x1abc, 0x1abe, + 0x1ac0, 0x1ac2, 0x1ac4, 0x1ac6, 0x1ac8, 0x1aca, 0x1acc, 0x1ace, + /* offsets 0xfc70 .. 0xfc7f */ + 0x1ad0, 0x1ad2, 0x1ad4, 0x1ad6, 0x1ad8, 0x1ada, 0x1adc, 0x1ade, + 0x1ae0, 0x1ae2, 0x1ae4, 0x1ae6, 0x1ae8, 0x1aea, 0x1aec, 0x1aee, + /* offsets 0xfc80 .. 0xfc8f */ + 0x1af0, 0x1af2, 0x1af4, 0x1af6, 0x1af8, 0x1afa, 0x1afc, 0x1afe, + 0x1b00, 0x1b02, 0x1b04, 0x1b06, 0x1b08, 0x1b0a, 0x1b0c, 0x1b0e, + /* offsets 0xfc90 .. 0xfc9f */ + 0x1b10, 0x1b12, 0x1b14, 0x1b16, 0x1b18, 0x1b1a, 0x1b1c, 0x1b1e, + 0x1b20, 0x1b22, 0x1b24, 0x1b26, 0x1b28, 0x1b2a, 0x1b2c, 0x1b2e, + /* offsets 0xfca0 .. 0xfcaf */ + 0x1b30, 0x1b32, 0x1b34, 0x1b36, 0x1b38, 0x1b3a, 0x1b3c, 0x1b3e, + 0x1b40, 0x1b42, 0x1b44, 0x1b46, 0x1b48, 0x1b4a, 0x1b4c, 0x1b4e, + /* offsets 0xfcb0 .. 0xfcbf */ + 0x1b50, 0x1b52, 0x1b54, 0x1b56, 0x1b58, 0x1b5a, 0x1b5c, 0x1b5e, + 0x1b60, 0x1b62, 0x1b64, 0x1b66, 0x1b68, 0x1b6a, 0x1b6c, 0x1b6e, + /* offsets 0xfcc0 .. 0xfccf */ + 0x1b70, 0x1b72, 0x1b74, 0x1b76, 0x1b78, 0x1b7a, 0x1b7c, 0x1b7e, + 0x1b80, 0x1b82, 0x1b84, 0x1b86, 0x1b88, 0x1b8a, 0x1b8c, 0x1b8e, + /* offsets 0xfcd0 .. 0xfcdf */ + 0x1b90, 0x1b92, 0x1b94, 0x1b96, 0x1b98, 0x1b9a, 0x1b9c, 0x1b9e, + 0x1ba0, 0x1ba2, 0x1ba4, 0x1ba6, 0x1ba8, 0x1baa, 0x1bac, 0x1bae, + /* offsets 0xfce0 .. 0xfcef */ + 0x1bb0, 0x1bb2, 0x1bb4, 0x1bb6, 0x1bb8, 0x1bba, 0x1bbc, 0x1bbe, + 0x1bc0, 0x1bc2, 0x1bc4, 0x1bc6, 0x1bc8, 0x1bca, 0x1bcc, 0x1bce, + /* offsets 0xfcf0 .. 0xfcff */ + 0x1bd0, 0x1bd2, 0x1bd4, 0x1bd7, 0x1bda, 0x1bdd, 0x1bdf, 0x1be1, + 0x1be3, 0x1be5, 0x1be7, 0x1be9, 0x1beb, 0x1bed, 0x1bef, 0x1bf1, + /* offsets 0xfd00 .. 0xfd0f */ + 0x1bf3, 0x1bf5, 0x1bf7, 0x1bf9, 0x1bfb, 0x1bfd, 0x1bff, 0x1c01, + 0x1c03, 0x1c05, 0x1c07, 0x1c09, 0x1c0b, 0x1c0d, 0x1c0f, 0x1c11, + /* offsets 0xfd10 .. 0xfd1f */ + 0x1c13, 0x1c15, 0x1c17, 0x1c19, 0x1c1b, 0x1c1d, 0x1c1f, 0x1c21, + 0x1c23, 0x1c25, 0x1c27, 0x1c29, 0x1c2b, 0x1c2d, 0x1c2f, 0x1c31, + /* offsets 0xfd20 .. 0xfd2f */ + 0x1c33, 0x1c35, 0x1c37, 0x1c39, 0x1c3b, 0x1c3d, 0x1c3f, 0x1c41, + 0x1c43, 0x1c45, 0x1c47, 0x1c49, 0x1c4b, 0x1c4d, 0x1c4f, 0x1c51, + /* offsets 0xfd30 .. 0xfd3f */ + 0x1c53, 0x1c55, 0x1c57, 0x1c59, 0x1c5b, 0x1c5d, 0x1c5f, 0x1c61, + 0x1c63, 0x1c65, 0x1c67, 0x1c69, 0x1c6b, 0x1c6d, 0x1c6f, 0x1c6f, + /* offsets 0xfd50 .. 0xfd5f */ + 0x1c6f, 0x1c72, 0x1c75, 0x1c78, 0x1c7b, 0x1c7e, 0x1c81, 0x1c84, + 0x1c87, 0x1c8a, 0x1c8d, 0x1c90, 0x1c93, 0x1c96, 0x1c99, 0x1c9c, + /* offsets 0xfd60 .. 0xfd6f */ + 0x1c9f, 0x1ca2, 0x1ca5, 0x1ca8, 0x1cab, 0x1cae, 0x1cb1, 0x1cb4, + 0x1cb7, 0x1cba, 0x1cbd, 0x1cc0, 0x1cc3, 0x1cc6, 0x1cc9, 0x1ccc, + /* offsets 0xfd70 .. 0xfd7f */ + 0x1ccf, 0x1cd2, 0x1cd5, 0x1cd8, 0x1cdb, 0x1cde, 0x1ce1, 0x1ce4, + 0x1ce7, 0x1cea, 0x1ced, 0x1cf0, 0x1cf3, 0x1cf6, 0x1cf9, 0x1cfc, + /* offsets 0xfd80 .. 0xfd8f */ + 0x1cff, 0x1d02, 0x1d05, 0x1d08, 0x1d0b, 0x1d0e, 0x1d11, 0x1d14, + 0x1d17, 0x1d1a, 0x1d1d, 0x1d20, 0x1d23, 0x1d26, 0x1d29, 0x1d2c, + /* offsets 0xfd90 .. 0xfd9f */ + 0x1d2f, 0x1d2f, 0x1d2f, 0x1d32, 0x1d35, 0x1d38, 0x1d3b, 0x1d3e, + 0x1d41, 0x1d44, 0x1d47, 0x1d4a, 0x1d4d, 0x1d50, 0x1d53, 0x1d56, + /* offsets 0xfda0 .. 0xfdaf */ + 0x1d59, 0x1d5c, 0x1d5f, 0x1d62, 0x1d65, 0x1d68, 0x1d6b, 0x1d6e, + 0x1d71, 0x1d74, 0x1d77, 0x1d7a, 0x1d7d, 0x1d80, 0x1d83, 0x1d86, + /* offsets 0xfdb0 .. 0xfdbf */ + 0x1d89, 0x1d8c, 0x1d8f, 0x1d92, 0x1d95, 0x1d98, 0x1d9b, 0x1d9e, + 0x1da1, 0x1da4, 0x1da7, 0x1daa, 0x1dad, 0x1db0, 0x1db3, 0x1db6, + /* offsets 0xfdc0 .. 0xfdcf */ + 0x1db9, 0x1dbc, 0x1dbf, 0x1dc2, 0x1dc5, 0x1dc8, 0x1dcb, 0x1dce, + 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, 0x1dd1, + /* offsets 0xfdf0 .. 0xfdff */ + 0x1dd1, 0x1dd4, 0x1dd7, 0x1ddb, 0x1ddf, 0x1de3, 0x1de7, 0x1deb, + 0x1def, 0x1df3, 0x1df6, 0x1e08, 0x1e10, 0x1e14, 0x1e14, 0x1e14, + /* offsets 0xfe10 .. 0xfe1f */ + 0x1e14, 0x1e15, 0x1e16, 0x1e17, 0x1e18, 0x1e19, 0x1e1a, 0x1e1b, + 0x1e1c, 0x1e1d, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e, 0x1e1e, + /* offsets 0xfe30 .. 0xfe3f */ + 0x1e1e, 0x1e1f, 0x1e20, 0x1e21, 0x1e22, 0x1e23, 0x1e24, 0x1e25, + 0x1e26, 0x1e27, 0x1e28, 0x1e29, 0x1e2a, 0x1e2b, 0x1e2c, 0x1e2d, + /* offsets 0xfe40 .. 0xfe4f */ + 0x1e2e, 0x1e2f, 0x1e30, 0x1e31, 0x1e32, 0x1e33, 0x1e33, 0x1e33, + 0x1e34, 0x1e35, 0x1e36, 0x1e37, 0x1e38, 0x1e39, 0x1e3a, 0x1e3b, + /* offsets 0xfe50 .. 0xfe5f */ + 0x1e3c, 0x1e3d, 0x1e3e, 0x1e3f, 0x1e3f, 0x1e40, 0x1e41, 0x1e42, + 0x1e43, 0x1e44, 0x1e45, 0x1e46, 0x1e47, 0x1e48, 0x1e49, 0x1e4a, + /* offsets 0xfe60 .. 0xfe6f */ + 0x1e4b, 0x1e4c, 0x1e4d, 0x1e4e, 0x1e4f, 0x1e50, 0x1e51, 0x1e52, + 0x1e52, 0x1e53, 0x1e54, 0x1e55, 0x1e56, 0x1e56, 0x1e56, 0x1e56, + /* offsets 0xfe70 .. 0xfe7f */ + 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5c, 0x1e5e, 0x1e5e, 0x1e60, + 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, + /* offsets 0xfe80 .. 0xfe8f */ + 0x1e72, 0x1e73, 0x1e74, 0x1e75, 0x1e76, 0x1e77, 0x1e78, 0x1e79, + 0x1e7a, 0x1e7b, 0x1e7c, 0x1e7d, 0x1e7e, 0x1e7f, 0x1e80, 0x1e81, + /* offsets 0xfe90 .. 0xfe9f */ + 0x1e82, 0x1e83, 0x1e84, 0x1e85, 0x1e86, 0x1e87, 0x1e88, 0x1e89, + 0x1e8a, 0x1e8b, 0x1e8c, 0x1e8d, 0x1e8e, 0x1e8f, 0x1e90, 0x1e91, + /* offsets 0xfea0 .. 0xfeaf */ + 0x1e92, 0x1e93, 0x1e94, 0x1e95, 0x1e96, 0x1e97, 0x1e98, 0x1e99, + 0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x1e9e, 0x1e9f, 0x1ea0, 0x1ea1, + /* offsets 0xfeb0 .. 0xfebf */ + 0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, 0x1ea8, 0x1ea9, + 0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, 0x1eb0, 0x1eb1, + /* offsets 0xfec0 .. 0xfecf */ + 0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, 0x1eb8, 0x1eb9, + 0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, 0x1ec0, 0x1ec1, + /* offsets 0xfed0 .. 0xfedf */ + 0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, 0x1ec8, 0x1ec9, + 0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, 0x1ed0, 0x1ed1, + /* offsets 0xfee0 .. 0xfeef */ + 0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, 0x1ed8, 0x1ed9, + 0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, 0x1ee0, 0x1ee1, + /* offsets 0xfef0 .. 0xfeff */ + 0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, 0x1ee9, 0x1eeb, + 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef7, 0x1ef7, + /* offsets 0xff00 .. 0xff0f */ + 0x1ef7, 0x1ef7, 0x1ef8, 0x1ef9, 0x1efa, 0x1efb, 0x1efc, 0x1efd, + 0x1efe, 0x1eff, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, + /* offsets 0xff10 .. 0xff1f */ + 0x1f06, 0x1f07, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, + 0x1f0e, 0x1f0f, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, + /* offsets 0xff20 .. 0xff2f */ + 0x1f16, 0x1f17, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, + 0x1f1e, 0x1f1f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, + /* offsets 0xff30 .. 0xff3f */ + 0x1f26, 0x1f27, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, + 0x1f2e, 0x1f2f, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, + /* offsets 0xff40 .. 0xff4f */ + 0x1f36, 0x1f37, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, + 0x1f3e, 0x1f3f, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, + /* offsets 0xff50 .. 0xff5f */ + 0x1f46, 0x1f47, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, + 0x1f4e, 0x1f4f, 0x1f50, 0x1f51, 0x1f52, 0x1f53, 0x1f54, 0x1f55, + /* offsets 0xff60 .. 0xff6f */ + 0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, 0x1f5d, + 0x1f5e, 0x1f5f, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, + /* offsets 0xff70 .. 0xff7f */ + 0x1f66, 0x1f67, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, + 0x1f6e, 0x1f6f, 0x1f70, 0x1f71, 0x1f72, 0x1f73, 0x1f74, 0x1f75, + /* offsets 0xff80 .. 0xff8f */ + 0x1f76, 0x1f77, 0x1f78, 0x1f79, 0x1f7a, 0x1f7b, 0x1f7c, 0x1f7d, + 0x1f7e, 0x1f7f, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, + /* offsets 0xff90 .. 0xff9f */ + 0x1f86, 0x1f87, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, + 0x1f8e, 0x1f8f, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, + /* offsets 0xffa0 .. 0xffaf */ + 0x1f96, 0x1f97, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, + 0x1f9e, 0x1f9f, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, + /* offsets 0xffb0 .. 0xffbf */ + 0x1fa6, 0x1fa7, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, + 0x1fae, 0x1faf, 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb5, + /* offsets 0xffc0 .. 0xffcf */ + 0x1fb5, 0x1fb5, 0x1fb5, 0x1fb6, 0x1fb7, 0x1fb8, 0x1fb9, 0x1fba, + 0x1fbb, 0x1fbb, 0x1fbb, 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc0, + /* offsets 0xffd0 .. 0xffdf */ + 0x1fc1, 0x1fc1, 0x1fc1, 0x1fc2, 0x1fc3, 0x1fc4, 0x1fc5, 0x1fc6, + 0x1fc7, 0x1fc7, 0x1fc7, 0x1fc8, 0x1fc9, 0x1fca, 0x1fca, 0x1fca, + /* offsets 0xffe0 .. 0xffef */ + 0x1fca, 0x1fcb, 0x1fcc, 0x1fcd, 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1, + 0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, 0x1fd6, 0x1fd7, 0x1fd8, + /* offset sentinel */ + 0x1fd8, + /* data */ + 0x0020, 0x0020, 0x0308, 0x0061, 0x0020, 0x0304, 0x0032, 0x0033, + 0x0020, 0x0301, 0x03bc, 0x0020, 0x0327, 0x0031, 0x006f, 0x0031, + 0x2044, 0x0034, 0x0031, 0x2044, 0x0032, 0x0033, 0x2044, 0x0034, + 0x0049, 0x004a, 0x0069, 0x006a, 0x004c, 0x00b7, 0x006c, 0x00b7, + 0x02bc, 0x006e, 0x0073, 0x0044, 0x017d, 0x0044, 0x017e, 0x0064, + 0x017e, 0x004c, 0x004a, 0x004c, 0x006a, 0x006c, 0x006a, 0x004e, + 0x004a, 0x004e, 0x006a, 0x006e, 0x006a, 0x0044, 0x005a, 0x0044, + 0x007a, 0x0064, 0x007a, 0x0068, 0x0266, 0x006a, 0x0072, 0x0279, + 0x027b, 0x0281, 0x0077, 0x0079, 0x0020, 0x0306, 0x0020, 0x0307, + 0x0020, 0x030a, 0x0020, 0x0328, 0x0020, 0x0303, 0x0020, 0x030b, + 0x0263, 0x006c, 0x0073, 0x0078, 0x0295, 0x0020, 0x0345, 0x0020, + 0x0301, 0x03b2, 0x03b8, 0x03a5, 0x03c6, 0x03c0, 0x03ba, 0x03c1, + 0x03c2, 0x0398, 0x03b5, 0x03a3, 0x0565, 0x0582, 0x0627, 0x0674, + 0x0648, 0x0674, 0x06c7, 0x0674, 0x064a, 0x0674, 0x0e4d, 0x0e32, + 0x0ecd, 0x0eb2, 0x0eab, 0x0e99, 0x0eab, 0x0ea1, 0x0f0b, 0x0fb2, + 0x0f81, 0x0fb3, 0x0f81, 0x10dc, 0x0041, 0x00c6, 0x0042, 0x0044, + 0x0045, 0x018e, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, + 0x004d, 0x004e, 0x004f, 0x0222, 0x0050, 0x0052, 0x0054, 0x0055, + 0x0057, 0x0061, 0x0250, 0x0251, 0x1d02, 0x0062, 0x0064, 0x0065, + 0x0259, 0x025b, 0x025c, 0x0067, 0x006b, 0x006d, 0x014b, 0x006f, + 0x0254, 0x1d16, 0x1d17, 0x0070, 0x0074, 0x0075, 0x1d1d, 0x026f, + 0x0076, 0x1d25, 0x03b2, 0x03b3, 0x03b4, 0x03c6, 0x03c7, 0x0069, + 0x0072, 0x0075, 0x0076, 0x03b2, 0x03b3, 0x03c1, 0x03c6, 0x03c7, + 0x043d, 0x0252, 0x0063, 0x0255, 0x00f0, 0x025c, 0x0066, 0x025f, + 0x0261, 0x0265, 0x0268, 0x0269, 0x026a, 0x1d7b, 0x029d, 0x026d, + 0x1d85, 0x029f, 0x0271, 0x0270, 0x0272, 0x0273, 0x0274, 0x0275, + 0x0278, 0x0282, 0x0283, 0x01ab, 0x0289, 0x028a, 0x1d1c, 0x028b, + 0x028c, 0x007a, 0x0290, 0x0291, 0x0292, 0x03b8, 0x0061, 0x02be, + 0x0020, 0x0313, 0x0020, 0x0313, 0x0020, 0x0342, 0x0020, 0x0314, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0020, 0x2010, 0x0020, 0x0333, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x0020, 0x2032, 0x2032, 0x2032, 0x2032, 0x2032, + 0x2035, 0x2035, 0x2035, 0x2035, 0x2035, 0x0021, 0x0021, 0x0020, + 0x0305, 0x003f, 0x003f, 0x003f, 0x0021, 0x0021, 0x003f, 0x2032, + 0x2032, 0x2032, 0x2032, 0x0020, 0x0030, 0x0069, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x002b, 0x2212, 0x003d, 0x0028, + 0x0029, 0x006e, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x002b, 0x2212, 0x003d, 0x0028, + 0x0029, 0x0061, 0x0065, 0x006f, 0x0078, 0x0259, 0x0068, 0x006b, + 0x006c, 0x006d, 0x006e, 0x0070, 0x0073, 0x0074, 0x0052, 0x0073, + 0x0061, 0x002f, 0x0063, 0x0061, 0x002f, 0x0073, 0x0043, 0x00b0, + 0x0043, 0x0063, 0x002f, 0x006f, 0x0063, 0x002f, 0x0075, 0x0190, + 0x00b0, 0x0046, 0x0067, 0x0048, 0x0048, 0x0048, 0x0068, 0x0127, + 0x0049, 0x0049, 0x004c, 0x006c, 0x004e, 0x004e, 0x006f, 0x0050, + 0x0051, 0x0052, 0x0052, 0x0052, 0x0053, 0x004d, 0x0054, 0x0045, + 0x004c, 0x0054, 0x004d, 0x005a, 0x005a, 0x0042, 0x0043, 0x0065, + 0x0045, 0x0046, 0x004d, 0x006f, 0x05d0, 0x05d1, 0x05d2, 0x05d3, + 0x0069, 0x0046, 0x0041, 0x0058, 0x03c0, 0x03b3, 0x0393, 0x03a0, + 0x2211, 0x0044, 0x0064, 0x0065, 0x0069, 0x006a, 0x0031, 0x2044, + 0x0037, 0x0031, 0x2044, 0x0039, 0x0031, 0x2044, 0x0031, 0x0030, + 0x0031, 0x2044, 0x0033, 0x0032, 0x2044, 0x0033, 0x0031, 0x2044, + 0x0035, 0x0032, 0x2044, 0x0035, 0x0033, 0x2044, 0x0035, 0x0034, + 0x2044, 0x0035, 0x0031, 0x2044, 0x0036, 0x0035, 0x2044, 0x0036, + 0x0031, 0x2044, 0x0038, 0x0033, 0x2044, 0x0038, 0x0035, 0x2044, + 0x0038, 0x0037, 0x2044, 0x0038, 0x0031, 0x2044, 0x0049, 0x0049, + 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0056, 0x0056, 0x0056, + 0x0049, 0x0056, 0x0049, 0x0049, 0x0056, 0x0049, 0x0049, 0x0049, + 0x0049, 0x0058, 0x0058, 0x0058, 0x0049, 0x0058, 0x0049, 0x0049, + 0x004c, 0x0043, 0x0044, 0x004d, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0076, 0x0076, 0x0076, 0x0069, 0x0076, + 0x0069, 0x0069, 0x0076, 0x0069, 0x0069, 0x0069, 0x0069, 0x0078, + 0x0078, 0x0078, 0x0069, 0x0078, 0x0069, 0x0069, 0x006c, 0x0063, + 0x0064, 0x006d, 0x0030, 0x2044, 0x0033, 0x222b, 0x222b, 0x222b, + 0x222b, 0x222b, 0x222e, 0x222e, 0x222e, 0x222e, 0x222e, 0x0031, + 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x0031, 0x0030, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, 0x0033, + 0x0031, 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037, + 0x0031, 0x0038, 0x0031, 0x0039, 0x0032, 0x0030, 0x0028, 0x0031, + 0x0029, 0x0028, 0x0032, 0x0029, 0x0028, 0x0033, 0x0029, 0x0028, + 0x0034, 0x0029, 0x0028, 0x0035, 0x0029, 0x0028, 0x0036, 0x0029, + 0x0028, 0x0037, 0x0029, 0x0028, 0x0038, 0x0029, 0x0028, 0x0039, + 0x0029, 0x0028, 0x0031, 0x0030, 0x0029, 0x0028, 0x0031, 0x0031, + 0x0029, 0x0028, 0x0031, 0x0032, 0x0029, 0x0028, 0x0031, 0x0033, + 0x0029, 0x0028, 0x0031, 0x0034, 0x0029, 0x0028, 0x0031, 0x0035, + 0x0029, 0x0028, 0x0031, 0x0036, 0x0029, 0x0028, 0x0031, 0x0037, + 0x0029, 0x0028, 0x0031, 0x0038, 0x0029, 0x0028, 0x0031, 0x0039, + 0x0029, 0x0028, 0x0032, 0x0030, 0x0029, 0x0031, 0x002e, 0x0032, + 0x002e, 0x0033, 0x002e, 0x0034, 0x002e, 0x0035, 0x002e, 0x0036, + 0x002e, 0x0037, 0x002e, 0x0038, 0x002e, 0x0039, 0x002e, 0x0031, + 0x0030, 0x002e, 0x0031, 0x0031, 0x002e, 0x0031, 0x0032, 0x002e, + 0x0031, 0x0033, 0x002e, 0x0031, 0x0034, 0x002e, 0x0031, 0x0035, + 0x002e, 0x0031, 0x0036, 0x002e, 0x0031, 0x0037, 0x002e, 0x0031, + 0x0038, 0x002e, 0x0031, 0x0039, 0x002e, 0x0032, 0x0030, 0x002e, + 0x0028, 0x0061, 0x0029, 0x0028, 0x0062, 0x0029, 0x0028, 0x0063, + 0x0029, 0x0028, 0x0064, 0x0029, 0x0028, 0x0065, 0x0029, 0x0028, + 0x0066, 0x0029, 0x0028, 0x0067, 0x0029, 0x0028, 0x0068, 0x0029, + 0x0028, 0x0069, 0x0029, 0x0028, 0x006a, 0x0029, 0x0028, 0x006b, + 0x0029, 0x0028, 0x006c, 0x0029, 0x0028, 0x006d, 0x0029, 0x0028, + 0x006e, 0x0029, 0x0028, 0x006f, 0x0029, 0x0028, 0x0070, 0x0029, + 0x0028, 0x0071, 0x0029, 0x0028, 0x0072, 0x0029, 0x0028, 0x0073, + 0x0029, 0x0028, 0x0074, 0x0029, 0x0028, 0x0075, 0x0029, 0x0028, + 0x0076, 0x0029, 0x0028, 0x0077, 0x0029, 0x0028, 0x0078, 0x0029, + 0x0028, 0x0079, 0x0029, 0x0028, 0x007a, 0x0029, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, + 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, + 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, + 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, + 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007a, 0x0030, 0x222b, 0x222b, 0x222b, 0x222b, 0x003a, + 0x003a, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x006a, + 0x0056, 0x2d61, 0x6bcd, 0x9f9f, 0x4e00, 0x4e28, 0x4e36, 0x4e3f, + 0x4e59, 0x4e85, 0x4e8c, 0x4ea0, 0x4eba, 0x513f, 0x5165, 0x516b, + 0x5182, 0x5196, 0x51ab, 0x51e0, 0x51f5, 0x5200, 0x529b, 0x52f9, + 0x5315, 0x531a, 0x5338, 0x5341, 0x535c, 0x5369, 0x5382, 0x53b6, + 0x53c8, 0x53e3, 0x56d7, 0x571f, 0x58eb, 0x5902, 0x590a, 0x5915, + 0x5927, 0x5973, 0x5b50, 0x5b80, 0x5bf8, 0x5c0f, 0x5c22, 0x5c38, + 0x5c6e, 0x5c71, 0x5ddb, 0x5de5, 0x5df1, 0x5dfe, 0x5e72, 0x5e7a, + 0x5e7f, 0x5ef4, 0x5efe, 0x5f0b, 0x5f13, 0x5f50, 0x5f61, 0x5f73, + 0x5fc3, 0x6208, 0x6236, 0x624b, 0x652f, 0x6534, 0x6587, 0x6597, + 0x65a4, 0x65b9, 0x65e0, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, + 0x6b62, 0x6b79, 0x6bb3, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c14, + 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x723f, 0x7247, 0x7259, + 0x725b, 0x72ac, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, + 0x7528, 0x7530, 0x758b, 0x7592, 0x7676, 0x767d, 0x76ae, 0x76bf, + 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79b8, 0x79be, 0x7a74, + 0x7acb, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f51, 0x7f8a, 0x7fbd, + 0x8001, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x81e3, 0x81ea, + 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x8278, + 0x864d, 0x866b, 0x8840, 0x884c, 0x8863, 0x897e, 0x898b, 0x89d2, + 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c78, 0x8c9d, 0x8d64, 0x8d70, + 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fb5, 0x9091, 0x9149, + 0x91c6, 0x91cc, 0x91d1, 0x9577, 0x9580, 0x961c, 0x96b6, 0x96b9, + 0x96e8, 0x9751, 0x975e, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, + 0x9801, 0x98a8, 0x98db, 0x98df, 0x9996, 0x9999, 0x99ac, 0x9aa8, + 0x9ad8, 0x9adf, 0x9b25, 0x9b2f, 0x9b32, 0x9b3c, 0x9b5a, 0x9ce5, + 0x9e75, 0x9e7f, 0x9ea5, 0x9ebb, 0x9ec3, 0x9ecd, 0x9ed1, 0x9ef9, + 0x9efd, 0x9f0e, 0x9f13, 0x9f20, 0x9f3b, 0x9f4a, 0x9f52, 0x9f8d, + 0x9f9c, 0x9fa0, 0x0020, 0x3012, 0x5341, 0x5344, 0x5345, 0x0020, + 0x3099, 0x0020, 0x309a, 0x3088, 0x308a, 0x30b3, 0x30c8, 0x1100, + 0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, 0x1104, 0x1105, + 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x111a, 0x1106, + 0x1107, 0x1108, 0x1121, 0x1109, 0x110a, 0x110b, 0x110c, 0x110d, + 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, 0x1162, 0x1163, + 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, 0x116a, 0x116b, + 0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, 0x1172, 0x1173, + 0x1174, 0x1175, 0x1160, 0x1114, 0x1115, 0x11c7, 0x11c8, 0x11cc, + 0x11ce, 0x11d3, 0x11d7, 0x11d9, 0x111c, 0x11dd, 0x11df, 0x111d, + 0x111e, 0x1120, 0x1122, 0x1123, 0x1127, 0x1129, 0x112b, 0x112c, + 0x112d, 0x112e, 0x112f, 0x1132, 0x1136, 0x1140, 0x1147, 0x114c, + 0x11f1, 0x11f2, 0x1157, 0x1158, 0x1159, 0x1184, 0x1185, 0x1188, + 0x1191, 0x1192, 0x1194, 0x119e, 0x11a1, 0x4e00, 0x4e8c, 0x4e09, + 0x56db, 0x4e0a, 0x4e2d, 0x4e0b, 0x7532, 0x4e59, 0x4e19, 0x4e01, + 0x5929, 0x5730, 0x4eba, 0x0028, 0x1100, 0x0029, 0x0028, 0x1102, + 0x0029, 0x0028, 0x1103, 0x0029, 0x0028, 0x1105, 0x0029, 0x0028, + 0x1106, 0x0029, 0x0028, 0x1107, 0x0029, 0x0028, 0x1109, 0x0029, + 0x0028, 0x110b, 0x0029, 0x0028, 0x110c, 0x0029, 0x0028, 0x110e, + 0x0029, 0x0028, 0x110f, 0x0029, 0x0028, 0x1110, 0x0029, 0x0028, + 0x1111, 0x0029, 0x0028, 0x1112, 0x0029, 0x0028, 0x1100, 0x1161, + 0x0029, 0x0028, 0x1102, 0x1161, 0x0029, 0x0028, 0x1103, 0x1161, + 0x0029, 0x0028, 0x1105, 0x1161, 0x0029, 0x0028, 0x1106, 0x1161, + 0x0029, 0x0028, 0x1107, 0x1161, 0x0029, 0x0028, 0x1109, 0x1161, + 0x0029, 0x0028, 0x110b, 0x1161, 0x0029, 0x0028, 0x110c, 0x1161, + 0x0029, 0x0028, 0x110e, 0x1161, 0x0029, 0x0028, 0x110f, 0x1161, + 0x0029, 0x0028, 0x1110, 0x1161, 0x0029, 0x0028, 0x1111, 0x1161, + 0x0029, 0x0028, 0x1112, 0x1161, 0x0029, 0x0028, 0x110c, 0x116e, + 0x0029, 0x0028, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x0029, + 0x0028, 0x110b, 0x1169, 0x1112, 0x116e, 0x0029, 0x0028, 0x4e00, + 0x0029, 0x0028, 0x4e8c, 0x0029, 0x0028, 0x4e09, 0x0029, 0x0028, + 0x56db, 0x0029, 0x0028, 0x4e94, 0x0029, 0x0028, 0x516d, 0x0029, + 0x0028, 0x4e03, 0x0029, 0x0028, 0x516b, 0x0029, 0x0028, 0x4e5d, + 0x0029, 0x0028, 0x5341, 0x0029, 0x0028, 0x6708, 0x0029, 0x0028, + 0x706b, 0x0029, 0x0028, 0x6c34, 0x0029, 0x0028, 0x6728, 0x0029, + 0x0028, 0x91d1, 0x0029, 0x0028, 0x571f, 0x0029, 0x0028, 0x65e5, + 0x0029, 0x0028, 0x682a, 0x0029, 0x0028, 0x6709, 0x0029, 0x0028, + 0x793e, 0x0029, 0x0028, 0x540d, 0x0029, 0x0028, 0x7279, 0x0029, + 0x0028, 0x8ca1, 0x0029, 0x0028, 0x795d, 0x0029, 0x0028, 0x52b4, + 0x0029, 0x0028, 0x4ee3, 0x0029, 0x0028, 0x547c, 0x0029, 0x0028, + 0x5b66, 0x0029, 0x0028, 0x76e3, 0x0029, 0x0028, 0x4f01, 0x0029, + 0x0028, 0x8cc7, 0x0029, 0x0028, 0x5354, 0x0029, 0x0028, 0x796d, + 0x0029, 0x0028, 0x4f11, 0x0029, 0x0028, 0x81ea, 0x0029, 0x0028, + 0x81f3, 0x0029, 0x554f, 0x5e7c, 0x6587, 0x7b8f, 0x0050, 0x0054, + 0x0045, 0x0032, 0x0031, 0x0032, 0x0032, 0x0032, 0x0033, 0x0032, + 0x0034, 0x0032, 0x0035, 0x0032, 0x0036, 0x0032, 0x0037, 0x0032, + 0x0038, 0x0032, 0x0039, 0x0033, 0x0030, 0x0033, 0x0031, 0x0033, + 0x0032, 0x0033, 0x0033, 0x0033, 0x0034, 0x0033, 0x0035, 0x1100, + 0x1102, 0x1103, 0x1105, 0x1106, 0x1107, 0x1109, 0x110b, 0x110c, + 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1100, 0x1161, 0x1102, + 0x1161, 0x1103, 0x1161, 0x1105, 0x1161, 0x1106, 0x1161, 0x1107, + 0x1161, 0x1109, 0x1161, 0x110b, 0x1161, 0x110c, 0x1161, 0x110e, + 0x1161, 0x110f, 0x1161, 0x1110, 0x1161, 0x1111, 0x1161, 0x1112, + 0x1161, 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x110c, 0x116e, + 0x110b, 0x1174, 0x110b, 0x116e, 0x4e00, 0x4e8c, 0x4e09, 0x56db, + 0x4e94, 0x516d, 0x4e03, 0x516b, 0x4e5d, 0x5341, 0x6708, 0x706b, + 0x6c34, 0x6728, 0x91d1, 0x571f, 0x65e5, 0x682a, 0x6709, 0x793e, + 0x540d, 0x7279, 0x8ca1, 0x795d, 0x52b4, 0x79d8, 0x7537, 0x5973, + 0x9069, 0x512a, 0x5370, 0x6ce8, 0x9805, 0x4f11, 0x5199, 0x6b63, + 0x4e0a, 0x4e2d, 0x4e0b, 0x5de6, 0x53f3, 0x533b, 0x5b97, 0x5b66, + 0x76e3, 0x4f01, 0x8cc7, 0x5354, 0x591c, 0x0033, 0x0036, 0x0033, + 0x0037, 0x0033, 0x0038, 0x0033, 0x0039, 0x0034, 0x0030, 0x0034, + 0x0031, 0x0034, 0x0032, 0x0034, 0x0033, 0x0034, 0x0034, 0x0034, + 0x0035, 0x0034, 0x0036, 0x0034, 0x0037, 0x0034, 0x0038, 0x0034, + 0x0039, 0x0035, 0x0030, 0x0031, 0x6708, 0x0032, 0x6708, 0x0033, + 0x6708, 0x0034, 0x6708, 0x0035, 0x6708, 0x0036, 0x6708, 0x0037, + 0x6708, 0x0038, 0x6708, 0x0039, 0x6708, 0x0031, 0x0030, 0x6708, + 0x0031, 0x0031, 0x6708, 0x0031, 0x0032, 0x6708, 0x0048, 0x0067, + 0x0065, 0x0072, 0x0067, 0x0065, 0x0056, 0x004c, 0x0054, 0x0044, + 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af, + 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf, + 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd, + 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, 0x30df, + 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, 0x30ea, + 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30a2, + 0x30d1, 0x30fc, 0x30c8, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x30a2, + 0x30f3, 0x30da, 0x30a2, 0x30a2, 0x30fc, 0x30eb, 0x30a4, 0x30cb, + 0x30f3, 0x30b0, 0x30a4, 0x30f3, 0x30c1, 0x30a6, 0x30a9, 0x30f3, + 0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c9, 0x30a8, 0x30fc, 0x30ab, + 0x30fc, 0x30aa, 0x30f3, 0x30b9, 0x30aa, 0x30fc, 0x30e0, 0x30ab, + 0x30a4, 0x30ea, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x30ab, 0x30ed, + 0x30ea, 0x30fc, 0x30ac, 0x30ed, 0x30f3, 0x30ac, 0x30f3, 0x30de, + 0x30ae, 0x30ac, 0x30ae, 0x30cb, 0x30fc, 0x30ad, 0x30e5, 0x30ea, + 0x30fc, 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0x30ad, 0x30ed, 0x30ad, + 0x30ed, 0x30b0, 0x30e9, 0x30e0, 0x30ad, 0x30ed, 0x30e1, 0x30fc, + 0x30c8, 0x30eb, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x30b0, + 0x30e9, 0x30e0, 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x30af, + 0x30eb, 0x30bc, 0x30a4, 0x30ed, 0x30af, 0x30ed, 0x30fc, 0x30cd, + 0x30b1, 0x30fc, 0x30b9, 0x30b3, 0x30eb, 0x30ca, 0x30b3, 0x30fc, + 0x30dd, 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x30b5, 0x30f3, 0x30c1, + 0x30fc, 0x30e0, 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30bb, 0x30f3, + 0x30c1, 0x30bb, 0x30f3, 0x30c8, 0x30c0, 0x30fc, 0x30b9, 0x30c7, + 0x30b7, 0x30c9, 0x30eb, 0x30c8, 0x30f3, 0x30ca, 0x30ce, 0x30ce, + 0x30c3, 0x30c8, 0x30cf, 0x30a4, 0x30c4, 0x30d1, 0x30fc, 0x30bb, + 0x30f3, 0x30c8, 0x30d1, 0x30fc, 0x30c4, 0x30d0, 0x30fc, 0x30ec, + 0x30eb, 0x30d4, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x30d4, 0x30af, + 0x30eb, 0x30d4, 0x30b3, 0x30d3, 0x30eb, 0x30d5, 0x30a1, 0x30e9, + 0x30c3, 0x30c9, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x30d6, 0x30c3, + 0x30b7, 0x30a7, 0x30eb, 0x30d5, 0x30e9, 0x30f3, 0x30d8, 0x30af, + 0x30bf, 0x30fc, 0x30eb, 0x30da, 0x30bd, 0x30da, 0x30cb, 0x30d2, + 0x30d8, 0x30eb, 0x30c4, 0x30da, 0x30f3, 0x30b9, 0x30da, 0x30fc, + 0x30b8, 0x30d9, 0x30fc, 0x30bf, 0x30dd, 0x30a4, 0x30f3, 0x30c8, + 0x30dc, 0x30eb, 0x30c8, 0x30db, 0x30f3, 0x30dd, 0x30f3, 0x30c9, + 0x30db, 0x30fc, 0x30eb, 0x30db, 0x30fc, 0x30f3, 0x30de, 0x30a4, + 0x30af, 0x30ed, 0x30de, 0x30a4, 0x30eb, 0x30de, 0x30c3, 0x30cf, + 0x30de, 0x30eb, 0x30af, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, + 0x30df, 0x30af, 0x30ed, 0x30f3, 0x30df, 0x30ea, 0x30df, 0x30ea, + 0x30d0, 0x30fc, 0x30eb, 0x30e1, 0x30ac, 0x30e1, 0x30ac, 0x30c8, + 0x30f3, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x30e4, 0x30fc, 0x30c9, + 0x30e4, 0x30fc, 0x30eb, 0x30e6, 0x30a2, 0x30f3, 0x30ea, 0x30c3, + 0x30c8, 0x30eb, 0x30ea, 0x30e9, 0x30eb, 0x30d4, 0x30fc, 0x30eb, + 0x30fc, 0x30d6, 0x30eb, 0x30ec, 0x30e0, 0x30ec, 0x30f3, 0x30c8, + 0x30b2, 0x30f3, 0x30ef, 0x30c3, 0x30c8, 0x0030, 0x70b9, 0x0031, + 0x70b9, 0x0032, 0x70b9, 0x0033, 0x70b9, 0x0034, 0x70b9, 0x0035, + 0x70b9, 0x0036, 0x70b9, 0x0037, 0x70b9, 0x0038, 0x70b9, 0x0039, + 0x70b9, 0x0031, 0x0030, 0x70b9, 0x0031, 0x0031, 0x70b9, 0x0031, + 0x0032, 0x70b9, 0x0031, 0x0033, 0x70b9, 0x0031, 0x0034, 0x70b9, + 0x0031, 0x0035, 0x70b9, 0x0031, 0x0036, 0x70b9, 0x0031, 0x0037, + 0x70b9, 0x0031, 0x0038, 0x70b9, 0x0031, 0x0039, 0x70b9, 0x0032, + 0x0030, 0x70b9, 0x0032, 0x0031, 0x70b9, 0x0032, 0x0032, 0x70b9, + 0x0032, 0x0033, 0x70b9, 0x0032, 0x0034, 0x70b9, 0x0068, 0x0050, + 0x0061, 0x0064, 0x0061, 0x0041, 0x0055, 0x0062, 0x0061, 0x0072, + 0x006f, 0x0056, 0x0070, 0x0063, 0x0064, 0x006d, 0x0064, 0x006d, + 0x00b2, 0x0064, 0x006d, 0x00b3, 0x0049, 0x0055, 0x5e73, 0x6210, + 0x662d, 0x548c, 0x5927, 0x6b63, 0x660e, 0x6cbb, 0x682a, 0x5f0f, + 0x4f1a, 0x793e, 0x0070, 0x0041, 0x006e, 0x0041, 0x03bc, 0x0041, + 0x006d, 0x0041, 0x006b, 0x0041, 0x004b, 0x0042, 0x004d, 0x0042, + 0x0047, 0x0042, 0x0063, 0x0061, 0x006c, 0x006b, 0x0063, 0x0061, + 0x006c, 0x0070, 0x0046, 0x006e, 0x0046, 0x03bc, 0x0046, 0x03bc, + 0x0067, 0x006d, 0x0067, 0x006b, 0x0067, 0x0048, 0x007a, 0x006b, + 0x0048, 0x007a, 0x004d, 0x0048, 0x007a, 0x0047, 0x0048, 0x007a, + 0x0054, 0x0048, 0x007a, 0x03bc, 0x2113, 0x006d, 0x2113, 0x0064, + 0x2113, 0x006b, 0x2113, 0x0066, 0x006d, 0x006e, 0x006d, 0x03bc, + 0x006d, 0x006d, 0x006d, 0x0063, 0x006d, 0x006b, 0x006d, 0x006d, + 0x006d, 0x00b2, 0x0063, 0x006d, 0x00b2, 0x006d, 0x00b2, 0x006b, + 0x006d, 0x00b2, 0x006d, 0x006d, 0x00b3, 0x0063, 0x006d, 0x00b3, + 0x006d, 0x00b3, 0x006b, 0x006d, 0x00b3, 0x006d, 0x2215, 0x0073, + 0x006d, 0x2215, 0x0073, 0x00b2, 0x0050, 0x0061, 0x006b, 0x0050, + 0x0061, 0x004d, 0x0050, 0x0061, 0x0047, 0x0050, 0x0061, 0x0072, + 0x0061, 0x0064, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x0072, + 0x0061, 0x0064, 0x2215, 0x0073, 0x00b2, 0x0070, 0x0073, 0x006e, + 0x0073, 0x03bc, 0x0073, 0x006d, 0x0073, 0x0070, 0x0056, 0x006e, + 0x0056, 0x03bc, 0x0056, 0x006d, 0x0056, 0x006b, 0x0056, 0x004d, + 0x0056, 0x0070, 0x0057, 0x006e, 0x0057, 0x03bc, 0x0057, 0x006d, + 0x0057, 0x006b, 0x0057, 0x004d, 0x0057, 0x006b, 0x03a9, 0x004d, + 0x03a9, 0x0061, 0x002e, 0x006d, 0x002e, 0x0042, 0x0071, 0x0063, + 0x0063, 0x0063, 0x0064, 0x0043, 0x2215, 0x006b, 0x0067, 0x0043, + 0x006f, 0x002e, 0x0064, 0x0042, 0x0047, 0x0079, 0x0068, 0x0061, + 0x0048, 0x0050, 0x0069, 0x006e, 0x004b, 0x004b, 0x004b, 0x004d, + 0x006b, 0x0074, 0x006c, 0x006d, 0x006c, 0x006e, 0x006c, 0x006f, + 0x0067, 0x006c, 0x0078, 0x006d, 0x0062, 0x006d, 0x0069, 0x006c, + 0x006d, 0x006f, 0x006c, 0x0050, 0x0048, 0x0070, 0x002e, 0x006d, + 0x002e, 0x0050, 0x0050, 0x004d, 0x0050, 0x0052, 0x0073, 0x0072, + 0x0053, 0x0076, 0x0057, 0x0062, 0x0056, 0x2215, 0x006d, 0x0041, + 0x2215, 0x006d, 0x0031, 0x65e5, 0x0032, 0x65e5, 0x0033, 0x65e5, + 0x0034, 0x65e5, 0x0035, 0x65e5, 0x0036, 0x65e5, 0x0037, 0x65e5, + 0x0038, 0x65e5, 0x0039, 0x65e5, 0x0031, 0x0030, 0x65e5, 0x0031, + 0x0031, 0x65e5, 0x0031, 0x0032, 0x65e5, 0x0031, 0x0033, 0x65e5, + 0x0031, 0x0034, 0x65e5, 0x0031, 0x0035, 0x65e5, 0x0031, 0x0036, + 0x65e5, 0x0031, 0x0037, 0x65e5, 0x0031, 0x0038, 0x65e5, 0x0031, + 0x0039, 0x65e5, 0x0032, 0x0030, 0x65e5, 0x0032, 0x0031, 0x65e5, + 0x0032, 0x0032, 0x65e5, 0x0032, 0x0033, 0x65e5, 0x0032, 0x0034, + 0x65e5, 0x0032, 0x0035, 0x65e5, 0x0032, 0x0036, 0x65e5, 0x0032, + 0x0037, 0x65e5, 0x0032, 0x0038, 0x65e5, 0x0032, 0x0039, 0x65e5, + 0x0033, 0x0030, 0x65e5, 0x0033, 0x0031, 0x65e5, 0x0067, 0x0061, + 0x006c, 0x044a, 0x044c, 0xa76f, 0x0126, 0x0153, 0xa727, 0xab37, + 0x026b, 0xab52, 0x0066, 0x0066, 0x0066, 0x0069, 0x0066, 0x006c, + 0x0066, 0x0066, 0x0069, 0x0066, 0x0066, 0x006c, 0x017f, 0x0074, + 0x0073, 0x0074, 0x0574, 0x0576, 0x0574, 0x0565, 0x0574, 0x056b, + 0x057e, 0x0576, 0x0574, 0x056d, 0x05e2, 0x05d0, 0x05d3, 0x05d4, + 0x05db, 0x05dc, 0x05dd, 0x05e8, 0x05ea, 0x002b, 0x05d0, 0x05dc, + 0x0671, 0x0671, 0x067b, 0x067b, 0x067b, 0x067b, 0x067e, 0x067e, + 0x067e, 0x067e, 0x0680, 0x0680, 0x0680, 0x0680, 0x067a, 0x067a, + 0x067a, 0x067a, 0x067f, 0x067f, 0x067f, 0x067f, 0x0679, 0x0679, + 0x0679, 0x0679, 0x06a4, 0x06a4, 0x06a4, 0x06a4, 0x06a6, 0x06a6, + 0x06a6, 0x06a6, 0x0684, 0x0684, 0x0684, 0x0684, 0x0683, 0x0683, + 0x0683, 0x0683, 0x0686, 0x0686, 0x0686, 0x0686, 0x0687, 0x0687, + 0x0687, 0x0687, 0x068d, 0x068d, 0x068c, 0x068c, 0x068e, 0x068e, + 0x0688, 0x0688, 0x0698, 0x0698, 0x0691, 0x0691, 0x06a9, 0x06a9, + 0x06a9, 0x06a9, 0x06af, 0x06af, 0x06af, 0x06af, 0x06b3, 0x06b3, + 0x06b3, 0x06b3, 0x06b1, 0x06b1, 0x06b1, 0x06b1, 0x06ba, 0x06ba, + 0x06bb, 0x06bb, 0x06bb, 0x06bb, 0x06c0, 0x06c0, 0x06c1, 0x06c1, + 0x06c1, 0x06c1, 0x06be, 0x06be, 0x06be, 0x06be, 0x06d2, 0x06d2, + 0x06d3, 0x06d3, 0x06ad, 0x06ad, 0x06ad, 0x06ad, 0x06c7, 0x06c7, + 0x06c6, 0x06c6, 0x06c8, 0x06c8, 0x0677, 0x06cb, 0x06cb, 0x06c5, + 0x06c5, 0x06c9, 0x06c9, 0x06d0, 0x06d0, 0x06d0, 0x06d0, 0x0649, + 0x0649, 0x0626, 0x0627, 0x0626, 0x0627, 0x0626, 0x06d5, 0x0626, + 0x06d5, 0x0626, 0x0648, 0x0626, 0x0648, 0x0626, 0x06c7, 0x0626, + 0x06c7, 0x0626, 0x06c6, 0x0626, 0x06c6, 0x0626, 0x06c8, 0x0626, + 0x06c8, 0x0626, 0x06d0, 0x0626, 0x06d0, 0x0626, 0x06d0, 0x0626, + 0x0649, 0x0626, 0x0649, 0x0626, 0x0649, 0x06cc, 0x06cc, 0x06cc, + 0x06cc, 0x0626, 0x062c, 0x0626, 0x062d, 0x0626, 0x0645, 0x0626, + 0x0649, 0x0626, 0x064a, 0x0628, 0x062c, 0x0628, 0x062d, 0x0628, + 0x062e, 0x0628, 0x0645, 0x0628, 0x0649, 0x0628, 0x064a, 0x062a, + 0x062c, 0x062a, 0x062d, 0x062a, 0x062e, 0x062a, 0x0645, 0x062a, + 0x0649, 0x062a, 0x064a, 0x062b, 0x062c, 0x062b, 0x0645, 0x062b, + 0x0649, 0x062b, 0x064a, 0x062c, 0x062d, 0x062c, 0x0645, 0x062d, + 0x062c, 0x062d, 0x0645, 0x062e, 0x062c, 0x062e, 0x062d, 0x062e, + 0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e, 0x0633, + 0x0645, 0x0635, 0x062d, 0x0635, 0x0645, 0x0636, 0x062c, 0x0636, + 0x062d, 0x0636, 0x062e, 0x0636, 0x0645, 0x0637, 0x062d, 0x0637, + 0x0645, 0x0638, 0x0645, 0x0639, 0x062c, 0x0639, 0x0645, 0x063a, + 0x062c, 0x063a, 0x0645, 0x0641, 0x062c, 0x0641, 0x062d, 0x0641, + 0x062e, 0x0641, 0x0645, 0x0641, 0x0649, 0x0641, 0x064a, 0x0642, + 0x062d, 0x0642, 0x0645, 0x0642, 0x0649, 0x0642, 0x064a, 0x0643, + 0x0627, 0x0643, 0x062c, 0x0643, 0x062d, 0x0643, 0x062e, 0x0643, + 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, 0x064a, 0x0644, + 0x062c, 0x0644, 0x062d, 0x0644, 0x062e, 0x0644, 0x0645, 0x0644, + 0x0649, 0x0644, 0x064a, 0x0645, 0x062c, 0x0645, 0x062d, 0x0645, + 0x062e, 0x0645, 0x0645, 0x0645, 0x0649, 0x0645, 0x064a, 0x0646, + 0x062c, 0x0646, 0x062d, 0x0646, 0x062e, 0x0646, 0x0645, 0x0646, + 0x0649, 0x0646, 0x064a, 0x0647, 0x062c, 0x0647, 0x0645, 0x0647, + 0x0649, 0x0647, 0x064a, 0x064a, 0x062c, 0x064a, 0x062d, 0x064a, + 0x062e, 0x064a, 0x0645, 0x064a, 0x0649, 0x064a, 0x064a, 0x0630, + 0x0670, 0x0631, 0x0670, 0x0649, 0x0670, 0x0020, 0x064c, 0x0651, + 0x0020, 0x064d, 0x0651, 0x0020, 0x064e, 0x0651, 0x0020, 0x064f, + 0x0651, 0x0020, 0x0650, 0x0651, 0x0020, 0x0651, 0x0670, 0x0626, + 0x0631, 0x0626, 0x0632, 0x0626, 0x0645, 0x0626, 0x0646, 0x0626, + 0x0649, 0x0626, 0x064a, 0x0628, 0x0631, 0x0628, 0x0632, 0x0628, + 0x0645, 0x0628, 0x0646, 0x0628, 0x0649, 0x0628, 0x064a, 0x062a, + 0x0631, 0x062a, 0x0632, 0x062a, 0x0645, 0x062a, 0x0646, 0x062a, + 0x0649, 0x062a, 0x064a, 0x062b, 0x0631, 0x062b, 0x0632, 0x062b, + 0x0645, 0x062b, 0x0646, 0x062b, 0x0649, 0x062b, 0x064a, 0x0641, + 0x0649, 0x0641, 0x064a, 0x0642, 0x0649, 0x0642, 0x064a, 0x0643, + 0x0627, 0x0643, 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, + 0x064a, 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064a, 0x0645, + 0x0627, 0x0645, 0x0645, 0x0646, 0x0631, 0x0646, 0x0632, 0x0646, + 0x0645, 0x0646, 0x0646, 0x0646, 0x0649, 0x0646, 0x064a, 0x0649, + 0x0670, 0x064a, 0x0631, 0x064a, 0x0632, 0x064a, 0x0645, 0x064a, + 0x0646, 0x064a, 0x0649, 0x064a, 0x064a, 0x0626, 0x062c, 0x0626, + 0x062d, 0x0626, 0x062e, 0x0626, 0x0645, 0x0626, 0x0647, 0x0628, + 0x062c, 0x0628, 0x062d, 0x0628, 0x062e, 0x0628, 0x0645, 0x0628, + 0x0647, 0x062a, 0x062c, 0x062a, 0x062d, 0x062a, 0x062e, 0x062a, + 0x0645, 0x062a, 0x0647, 0x062b, 0x0645, 0x062c, 0x062d, 0x062c, + 0x0645, 0x062d, 0x062c, 0x062d, 0x0645, 0x062e, 0x062c, 0x062e, + 0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e, 0x0633, + 0x0645, 0x0635, 0x062d, 0x0635, 0x062e, 0x0635, 0x0645, 0x0636, + 0x062c, 0x0636, 0x062d, 0x0636, 0x062e, 0x0636, 0x0645, 0x0637, + 0x062d, 0x0638, 0x0645, 0x0639, 0x062c, 0x0639, 0x0645, 0x063a, + 0x062c, 0x063a, 0x0645, 0x0641, 0x062c, 0x0641, 0x062d, 0x0641, + 0x062e, 0x0641, 0x0645, 0x0642, 0x062d, 0x0642, 0x0645, 0x0643, + 0x062c, 0x0643, 0x062d, 0x0643, 0x062e, 0x0643, 0x0644, 0x0643, + 0x0645, 0x0644, 0x062c, 0x0644, 0x062d, 0x0644, 0x062e, 0x0644, + 0x0645, 0x0644, 0x0647, 0x0645, 0x062c, 0x0645, 0x062d, 0x0645, + 0x062e, 0x0645, 0x0645, 0x0646, 0x062c, 0x0646, 0x062d, 0x0646, + 0x062e, 0x0646, 0x0645, 0x0646, 0x0647, 0x0647, 0x062c, 0x0647, + 0x0645, 0x0647, 0x0670, 0x064a, 0x062c, 0x064a, 0x062d, 0x064a, + 0x062e, 0x064a, 0x0645, 0x064a, 0x0647, 0x0626, 0x0645, 0x0626, + 0x0647, 0x0628, 0x0645, 0x0628, 0x0647, 0x062a, 0x0645, 0x062a, + 0x0647, 0x062b, 0x0645, 0x062b, 0x0647, 0x0633, 0x0645, 0x0633, + 0x0647, 0x0634, 0x0645, 0x0634, 0x0647, 0x0643, 0x0644, 0x0643, + 0x0645, 0x0644, 0x0645, 0x0646, 0x0645, 0x0646, 0x0647, 0x064a, + 0x0645, 0x064a, 0x0647, 0x0640, 0x064e, 0x0651, 0x0640, 0x064f, + 0x0651, 0x0640, 0x0650, 0x0651, 0x0637, 0x0649, 0x0637, 0x064a, + 0x0639, 0x0649, 0x0639, 0x064a, 0x063a, 0x0649, 0x063a, 0x064a, + 0x0633, 0x0649, 0x0633, 0x064a, 0x0634, 0x0649, 0x0634, 0x064a, + 0x062d, 0x0649, 0x062d, 0x064a, 0x062c, 0x0649, 0x062c, 0x064a, + 0x062e, 0x0649, 0x062e, 0x064a, 0x0635, 0x0649, 0x0635, 0x064a, + 0x0636, 0x0649, 0x0636, 0x064a, 0x0634, 0x062c, 0x0634, 0x062d, + 0x0634, 0x062e, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631, + 0x0635, 0x0631, 0x0636, 0x0631, 0x0637, 0x0649, 0x0637, 0x064a, + 0x0639, 0x0649, 0x0639, 0x064a, 0x063a, 0x0649, 0x063a, 0x064a, + 0x0633, 0x0649, 0x0633, 0x064a, 0x0634, 0x0649, 0x0634, 0x064a, + 0x062d, 0x0649, 0x062d, 0x064a, 0x062c, 0x0649, 0x062c, 0x064a, + 0x062e, 0x0649, 0x062e, 0x064a, 0x0635, 0x0649, 0x0635, 0x064a, + 0x0636, 0x0649, 0x0636, 0x064a, 0x0634, 0x062c, 0x0634, 0x062d, + 0x0634, 0x062e, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631, + 0x0635, 0x0631, 0x0636, 0x0631, 0x0634, 0x062c, 0x0634, 0x062d, + 0x0634, 0x062e, 0x0634, 0x0645, 0x0633, 0x0647, 0x0634, 0x0647, + 0x0637, 0x0645, 0x0633, 0x062c, 0x0633, 0x062d, 0x0633, 0x062e, + 0x0634, 0x062c, 0x0634, 0x062d, 0x0634, 0x062e, 0x0637, 0x0645, + 0x0638, 0x0645, 0x0627, 0x064b, 0x0627, 0x064b, 0x062a, 0x062c, + 0x0645, 0x062a, 0x062d, 0x062c, 0x062a, 0x062d, 0x062c, 0x062a, + 0x062d, 0x0645, 0x062a, 0x062e, 0x0645, 0x062a, 0x0645, 0x062c, + 0x062a, 0x0645, 0x062d, 0x062a, 0x0645, 0x062e, 0x062c, 0x0645, + 0x062d, 0x062c, 0x0645, 0x062d, 0x062d, 0x0645, 0x064a, 0x062d, + 0x0645, 0x0649, 0x0633, 0x062d, 0x062c, 0x0633, 0x062c, 0x062d, + 0x0633, 0x062c, 0x0649, 0x0633, 0x0645, 0x062d, 0x0633, 0x0645, + 0x062d, 0x0633, 0x0645, 0x062c, 0x0633, 0x0645, 0x0645, 0x0633, + 0x0645, 0x0645, 0x0635, 0x062d, 0x062d, 0x0635, 0x062d, 0x062d, + 0x0635, 0x0645, 0x0645, 0x0634, 0x062d, 0x0645, 0x0634, 0x062d, + 0x0645, 0x0634, 0x062c, 0x064a, 0x0634, 0x0645, 0x062e, 0x0634, + 0x0645, 0x062e, 0x0634, 0x0645, 0x0645, 0x0634, 0x0645, 0x0645, + 0x0636, 0x062d, 0x0649, 0x0636, 0x062e, 0x0645, 0x0636, 0x062e, + 0x0645, 0x0637, 0x0645, 0x062d, 0x0637, 0x0645, 0x062d, 0x0637, + 0x0645, 0x0645, 0x0637, 0x0645, 0x064a, 0x0639, 0x062c, 0x0645, + 0x0639, 0x0645, 0x0645, 0x0639, 0x0645, 0x0645, 0x0639, 0x0645, + 0x0649, 0x063a, 0x0645, 0x0645, 0x063a, 0x0645, 0x064a, 0x063a, + 0x0645, 0x0649, 0x0641, 0x062e, 0x0645, 0x0641, 0x062e, 0x0645, + 0x0642, 0x0645, 0x062d, 0x0642, 0x0645, 0x0645, 0x0644, 0x062d, + 0x0645, 0x0644, 0x062d, 0x064a, 0x0644, 0x062d, 0x0649, 0x0644, + 0x062c, 0x062c, 0x0644, 0x062c, 0x062c, 0x0644, 0x062e, 0x0645, + 0x0644, 0x062e, 0x0645, 0x0644, 0x0645, 0x062d, 0x0644, 0x0645, + 0x062d, 0x0645, 0x062d, 0x062c, 0x0645, 0x062d, 0x0645, 0x0645, + 0x062d, 0x064a, 0x0645, 0x062c, 0x062d, 0x0645, 0x062c, 0x0645, + 0x0645, 0x062e, 0x062c, 0x0645, 0x062e, 0x0645, 0x0645, 0x062c, + 0x062e, 0x0647, 0x0645, 0x062c, 0x0647, 0x0645, 0x0645, 0x0646, + 0x062d, 0x0645, 0x0646, 0x062d, 0x0649, 0x0646, 0x062c, 0x0645, + 0x0646, 0x062c, 0x0645, 0x0646, 0x062c, 0x0649, 0x0646, 0x0645, + 0x064a, 0x0646, 0x0645, 0x0649, 0x064a, 0x0645, 0x0645, 0x064a, + 0x0645, 0x0645, 0x0628, 0x062e, 0x064a, 0x062a, 0x062c, 0x064a, + 0x062a, 0x062c, 0x0649, 0x062a, 0x062e, 0x064a, 0x062a, 0x062e, + 0x0649, 0x062a, 0x0645, 0x064a, 0x062a, 0x0645, 0x0649, 0x062c, + 0x0645, 0x064a, 0x062c, 0x062d, 0x0649, 0x062c, 0x0645, 0x0649, + 0x0633, 0x062e, 0x0649, 0x0635, 0x062d, 0x064a, 0x0634, 0x062d, + 0x064a, 0x0636, 0x062d, 0x064a, 0x0644, 0x062c, 0x064a, 0x0644, + 0x0645, 0x064a, 0x064a, 0x062d, 0x064a, 0x064a, 0x062c, 0x064a, + 0x064a, 0x0645, 0x064a, 0x0645, 0x0645, 0x064a, 0x0642, 0x0645, + 0x064a, 0x0646, 0x062d, 0x064a, 0x0642, 0x0645, 0x062d, 0x0644, + 0x062d, 0x0645, 0x0639, 0x0645, 0x064a, 0x0643, 0x0645, 0x064a, + 0x0646, 0x062c, 0x062d, 0x0645, 0x062e, 0x064a, 0x0644, 0x062c, + 0x0645, 0x0643, 0x0645, 0x0645, 0x0644, 0x062c, 0x0645, 0x0646, + 0x062c, 0x062d, 0x062c, 0x062d, 0x064a, 0x062d, 0x062c, 0x064a, + 0x0645, 0x062c, 0x064a, 0x0641, 0x0645, 0x064a, 0x0628, 0x062d, + 0x064a, 0x0643, 0x0645, 0x0645, 0x0639, 0x062c, 0x0645, 0x0635, + 0x0645, 0x0645, 0x0633, 0x062e, 0x064a, 0x0646, 0x062c, 0x064a, + 0x0635, 0x0644, 0x06d2, 0x0642, 0x0644, 0x06d2, 0x0627, 0x0644, + 0x0644, 0x0647, 0x0627, 0x0643, 0x0628, 0x0631, 0x0645, 0x062d, + 0x0645, 0x062f, 0x0635, 0x0644, 0x0639, 0x0645, 0x0631, 0x0633, + 0x0648, 0x0644, 0x0639, 0x0644, 0x064a, 0x0647, 0x0648, 0x0633, + 0x0644, 0x0645, 0x0635, 0x0644, 0x0649, 0x0635, 0x0644, 0x0649, + 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, + 0x064a, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0x062c, + 0x0644, 0x0020, 0x062c, 0x0644, 0x0627, 0x0644, 0x0647, 0x0631, + 0x06cc, 0x0627, 0x0644, 0x002c, 0x3001, 0x3002, 0x003a, 0x003b, + 0x0021, 0x003f, 0x3016, 0x3017, 0x2026, 0x2025, 0x2014, 0x2013, + 0x005f, 0x005f, 0x0028, 0x0029, 0x007b, 0x007d, 0x3014, 0x3015, + 0x3010, 0x3011, 0x300a, 0x300b, 0x3008, 0x3009, 0x300c, 0x300d, + 0x300e, 0x300f, 0x005b, 0x005d, 0x203e, 0x203e, 0x203e, 0x203e, + 0x005f, 0x005f, 0x005f, 0x002c, 0x3001, 0x002e, 0x003b, 0x003a, + 0x003f, 0x0021, 0x2014, 0x0028, 0x0029, 0x007b, 0x007d, 0x3014, + 0x3015, 0x0023, 0x0026, 0x002a, 0x002b, 0x002d, 0x003c, 0x003e, + 0x003d, 0x005c, 0x0024, 0x0025, 0x0040, 0x0020, 0x064b, 0x0640, + 0x064b, 0x0020, 0x064c, 0x0020, 0x064d, 0x0020, 0x064e, 0x0640, + 0x064e, 0x0020, 0x064f, 0x0640, 0x064f, 0x0020, 0x0650, 0x0640, + 0x0650, 0x0020, 0x0651, 0x0640, 0x0651, 0x0020, 0x0652, 0x0640, + 0x0652, 0x0621, 0x0622, 0x0622, 0x0623, 0x0623, 0x0624, 0x0624, + 0x0625, 0x0625, 0x0626, 0x0626, 0x0626, 0x0626, 0x0627, 0x0627, + 0x0628, 0x0628, 0x0628, 0x0628, 0x0629, 0x0629, 0x062a, 0x062a, + 0x062a, 0x062a, 0x062b, 0x062b, 0x062b, 0x062b, 0x062c, 0x062c, + 0x062c, 0x062c, 0x062d, 0x062d, 0x062d, 0x062d, 0x062e, 0x062e, + 0x062e, 0x062e, 0x062f, 0x062f, 0x0630, 0x0630, 0x0631, 0x0631, + 0x0632, 0x0632, 0x0633, 0x0633, 0x0633, 0x0633, 0x0634, 0x0634, + 0x0634, 0x0634, 0x0635, 0x0635, 0x0635, 0x0635, 0x0636, 0x0636, + 0x0636, 0x0636, 0x0637, 0x0637, 0x0637, 0x0637, 0x0638, 0x0638, + 0x0638, 0x0638, 0x0639, 0x0639, 0x0639, 0x0639, 0x063a, 0x063a, + 0x063a, 0x063a, 0x0641, 0x0641, 0x0641, 0x0641, 0x0642, 0x0642, + 0x0642, 0x0642, 0x0643, 0x0643, 0x0643, 0x0643, 0x0644, 0x0644, + 0x0644, 0x0644, 0x0645, 0x0645, 0x0645, 0x0645, 0x0646, 0x0646, + 0x0646, 0x0646, 0x0647, 0x0647, 0x0647, 0x0647, 0x0648, 0x0648, + 0x0649, 0x0649, 0x064a, 0x064a, 0x064a, 0x064a, 0x0644, 0x0622, + 0x0644, 0x0622, 0x0644, 0x0623, 0x0644, 0x0623, 0x0644, 0x0625, + 0x0644, 0x0625, 0x0644, 0x0627, 0x0644, 0x0627, 0x0021, 0x0022, + 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, + 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, + 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, + 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, + 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, + 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, + 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, + 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, + 0x007b, 0x007c, 0x007d, 0x007e, 0x2985, 0x2986, 0x3002, 0x300c, + 0x300d, 0x3001, 0x30fb, 0x30f2, 0x30a1, 0x30a3, 0x30a5, 0x30a7, + 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, 0x30fc, 0x30a2, 0x30a4, + 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af, 0x30b1, 0x30b3, + 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c4, + 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, + 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, 0x30df, 0x30e0, 0x30e1, + 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, + 0x30ed, 0x30ef, 0x30f3, 0x3099, 0x309a, 0x3164, 0x3131, 0x3132, + 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a, + 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, + 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, + 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152, + 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, + 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, + 0x3163, 0x00a2, 0x00a3, 0x00ac, 0x00af, 0x00a6, 0x00a5, 0x20a9, + 0x2502, 0x2190, 0x2191, 0x2192, 0x2193, 0x25a0, 0x25cb +}; + +static const WCHAR *get_compatmap_entry( WCHAR ch, unsigned int *len ) +{ + unsigned short offset_offs = compatmap_table[compatmap_table[ch >> 8] + ((ch >> 4) & 0xf)] + (ch & 0xf); + unsigned short start = compatmap_table[offset_offs]; + unsigned short end = compatmap_table[offset_offs + 1]; + + if (end > start) + { + *len = end - start; + return compatmap_table + start; + } + + return NULL; +} + unsigned int DECLSPEC_HIDDEN wine_decompose( int flags, WCHAR ch, WCHAR *dst, unsigned int dstlen ) { - const WCHAR *ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf); - unsigned int res; + const WCHAR *ptr = NULL; + unsigned int res, len, dst_pos = 0;
*dst = ch; + + if (flags & WINE_DECOMPOSE_COMPAT) + ptr = get_compatmap_entry( ch, &len ); + + if (!ptr) + { + ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf); + len = 2; + } + if (!*ptr) return 1; - if (dstlen <= 1) return 0; - /* apply the decomposition recursively to the first char */ - if ((res = wine_decompose( flags, *ptr, dst, dstlen-1 ))) dst[res++] = ptr[1]; - return res; + if (dstlen < len) return 0; + /* apply the decomposition recursively */ + while (len--) + { + if (!(res = wine_decompose( flags, *ptr++, dst + dst_pos, dstlen - dst_pos - len ))) return 0; + dst_pos += res; + } + + return dst_pos; } diff --git a/tools/make_unicode b/tools/make_unicode index f0056d09f3..3a9fefe474 100755 --- a/tools/make_unicode +++ b/tools/make_unicode @@ -361,6 +361,7 @@ my @direction_table = (); my @decomp_table = (); my @compose_table = (); my @combining_class_table = (); +my @full_compatmap_table = (); my $default_char; my $default_wchar;
@@ -477,6 +478,16 @@ sub READ_DEFAULTS($)
next if $decomp eq ""; # no decomposition, skip it
+ if ($decomp =~ /^<([a-zA-Z]+)>\s+([0-9a-fA-F]+)/) + { + my @seq = (); + for my $ch (split /\s+/, (split /\s+/, $decomp, 2)[1]) + { + push @seq, (hex $ch); + } + $full_compatmap_table[$src] = @seq; + } + if ($decomp =~ /^<([a-zA-Z]+)>\s+([0-9a-fA-F]+)$/) { # decomposition of the form "<foo> 1234" -> use char if type is known @@ -2269,6 +2280,100 @@ EOF save_file($filename); }
+sub dump_full_compat_table() +{ + # first determine all the 16-char subsets that contain something + + my @filled = (0) x 4096; + my $pos = 16; # for the null subset + my $data_total = 0; + for (my $i = 0; $i < 65536; $i++) + { + next unless defined $full_compatmap_table[$i]; + if ($filled[$i >> 4] == 0) + { + $filled[$i >> 4] = $pos; + $pos += 16; + } + $data_total += $#{$full_compatmap_table[$i]} + 1; + } + my $total = $pos; + + # now count the 256-char subsets that contain something + + my @filled_idx = (256) x 256; + $pos = 256 + 16; + for (my $i = 0; $i < 4096; $i++) + { + next unless $filled[$i]; + $filled_idx[$i >> 4] = $pos; + $pos += 16; + $i |= 15; + } + my $null_offset = $pos; # null mapping + $total += $pos + 1; # add the offset sentinel + + # add the index offsets to the subsets positions + + for (my $i = 0; $i < 4096; $i++) + { + next unless $filled[$i]; + $filled[$i] += $null_offset; + } + + # dump the main index + + printf OUTPUT "static const WCHAR compatmap_table[%d] =\n", $total + $data_total; + printf OUTPUT "{\n /* index */\n"; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @filled_idx ); + printf OUTPUT ",\n /* null sub-index */\n%s", DUMP_ARRAY( "0x%04x", 0, ($null_offset) x 16 ); + + # dump the second-level indexes + + for (my $i = 0; $i < 256; $i++) + { + next unless ($filled_idx[$i] > 256); + my @table = @filled[($i<<4)..($i<<4)+15]; + for (my $j = 0; $j < 16; $j++) { $table[$j] ||= $null_offset; } + printf OUTPUT ",\n /* sub-index %02x */\n", $i; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table ); + } + + # dump the 16-char offsets + + printf OUTPUT ",\n /* null offsets */\n"; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, ($total) x (16) ); + + $pos = $total; + + my @data; + for (my $i = 0; $i < 4096; $i++) + { + next unless $filled[$i]; + my @table = (0) x (16); + for (my $j = 0; $j < 16; $j++) + { + $table[$j] = $pos; + if (defined $full_compatmap_table[($i<<4) + $j]) + { + $pos += $#{$full_compatmap_table[($i<<4) + $j]} + 1; + push @data, @{$full_compatmap_table[($i<<4) + $j]}; + } + } + printf OUTPUT ",\n /* offsets 0x%03x0 .. 0x%03xf */\n", $i, $i; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @table ); + } + + my @sentinel = $pos; + printf OUTPUT ",\n /* offset sentinel */\n"; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @sentinel ); + + printf OUTPUT ",\n /* data */\n"; + printf OUTPUT "%s", DUMP_ARRAY( "0x%04x", 0, @data ); + + printf OUTPUT "\n};\n\n"; +} + ################################################################ # dump the char decomposition table sub dump_decompose_table($) @@ -2357,18 +2462,51 @@ sub dump_decompose_table($) }
printf OUTPUT "\n};\n\n"; + + dump_full_compat_table(); + print OUTPUT <<"EOF"; +static const WCHAR *get_compatmap_entry( WCHAR ch, unsigned int *len ) +{ + unsigned short offset_offs = compatmap_table[compatmap_table[ch >> 8] + ((ch >> 4) & 0xf)] + (ch & 0xf); + unsigned short start = compatmap_table[offset_offs]; + unsigned short end = compatmap_table[offset_offs + 1]; + + if (end > start) + { + *len = end - start; + return compatmap_table + start; + } + + return NULL; +} + unsigned int DECLSPEC_HIDDEN wine_decompose( int flags, WCHAR ch, WCHAR *dst, unsigned int dstlen ) { - const WCHAR *ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf); - unsigned int res; + const WCHAR *ptr = NULL; + unsigned int res, len, dst_pos = 0;
*dst = ch; + + if (flags & WINE_DECOMPOSE_COMPAT) + ptr = get_compatmap_entry( ch, &len ); + + if (!ptr) + { + ptr = table + table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + 2 * (ch & 0xf); + len = 2; + } + if (!*ptr) return 1; - if (dstlen <= 1) return 0; - /* apply the decomposition recursively to the first char */ - if ((res = wine_decompose( flags, *ptr, dst, dstlen-1 ))) dst[res++] = ptr[1]; - return res; + if (dstlen < len) return 0; + /* apply the decomposition recursively */ + while (len--) + { + if (!(res = wine_decompose( flags, *ptr++, dst + dst_pos, dstlen - dst_pos - len ))) return 0; + dst_pos += res; + } + + return dst_pos; } EOF close OUTPUT;
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=47323
Your paranoid android.
=== debian9 (32 bit report) ===
kernel32: change.c:318: Test failed: should be ready