Dirkjan Ochtman 5 жил өмнө
parent
commit
d56b36dac8

+ 6 - 11
idna/src/make_uts46_mapping_table.py

@@ -148,27 +148,22 @@ def merge_single_char_ranges(ranges):
 
 optimized_ranges = list(merge_single_char_ranges(optimized_ranges))
 
-
-print("static TABLE: &[char] = &[")
-
-for ranges in optimized_ranges:
-    print("    '%s'," % escape_char(char(ranges[0][0])))
-
-print("];\n")
-
-print("static INDEX_TABLE: &[u16] = &[")
-
 SINGLE_MARKER = 1 << 15
 
+print("static TABLE: &[(char, u16)] = &[")
+
 offset = 0
 for ranges in optimized_ranges:
     assert offset < SINGLE_MARKER
 
     block_len = len(ranges)
     single = SINGLE_MARKER if block_len == 1 else 0
-    print("    %s," % (offset | single))
+    index = offset | single
     offset += block_len
 
+    start = escape_char(char(ranges[0][0]))
+    print("    ('%s', %s)," % (start, index))
+
 print("];\n")
 
 print("static MAPPING_TABLE: &[Mapping] = &[")

+ 3 - 3
idna/src/uts46.rs

@@ -50,21 +50,21 @@ enum Mapping {
 }
 
 fn find_char(codepoint: char) -> &'static Mapping {
-    let idx = match TABLE.binary_search(&codepoint) {
+    let idx = match TABLE.binary_search_by_key(&codepoint, |&val| val.0) {
         Ok(idx) => idx,
         Err(idx) => idx - 1,
     };
 
     const SINGLE_MARKER: u16 = 1 << 15;
 
-    let x = INDEX_TABLE[idx];
+    let (base, x) = TABLE[idx];
     let single = (x & SINGLE_MARKER) != 0;
     let offset = !SINGLE_MARKER & x;
 
     if single {
         &MAPPING_TABLE[offset as usize]
     } else {
-        &MAPPING_TABLE[(offset + (codepoint as u16 - TABLE[idx] as u16)) as usize]
+        &MAPPING_TABLE[(offset + (codepoint as u16 - base as u16)) as usize]
     }
 }
 

+ 1651 - 3304
idna/src/uts46_mapping_table.rs

@@ -8,3310 +8,1657 @@
 
 // Generated by make_idna_table.py
 
-static TABLE: &[char] = &[
-    '\u{0}',
-    '\u{2d}',
-    '\u{2f}',
-    '\u{30}',
-    '\u{3a}',
-    '\u{41}',
-    '\u{5b}',
-    '\u{61}',
-    '\u{7b}',
-    '\u{80}',
-    '\u{a0}',
-    '\u{a1}',
-    '\u{a8}',
-    '\u{ab}',
-    '\u{ad}',
-    '\u{b0}',
-    '\u{b2}',
-    '\u{b6}',
-    '\u{b8}',
-    '\u{e0}',
-    '\u{100}',
-    '\u{132}',
-    '\u{134}',
-    '\u{137}',
-    '\u{139}',
-    '\u{13f}',
-    '\u{141}',
-    '\u{18c}',
-    '\u{18e}',
-    '\u{199}',
-    '\u{19c}',
-    '\u{1aa}',
-    '\u{1ac}',
-    '\u{1b9}',
-    '\u{1bc}',
-    '\u{1bd}',
-    '\u{1c4}',
-    '\u{1c7}',
-    '\u{1ca}',
-    '\u{1cd}',
-    '\u{1dc}',
-    '\u{1de}',
-    '\u{1ef}',
-    '\u{1f1}',
-    '\u{1f4}',
-    '\u{233}',
-    '\u{23a}',
-    '\u{23f}',
-    '\u{241}',
-    '\u{24f}',
-    '\u{2b0}',
-    '\u{2b9}',
-    '\u{2d8}',
-    '\u{2de}',
-    '\u{2e0}',
-    '\u{2e5}',
-    '\u{340}',
-    '\u{346}',
-    '\u{34f}',
-    '\u{350}',
-    '\u{370}',
-    '\u{378}',
-    '\u{37a}',
-    '\u{37b}',
-    '\u{37e}',
-    '\u{380}',
-    '\u{384}',
-    '\u{3ac}',
-    '\u{3c2}',
-    '\u{3c3}',
-    '\u{3cf}',
-    '\u{3fb}',
-    '\u{3fd}',
-    '\u{430}',
-    '\u{460}',
-    '\u{481}',
-    '\u{48a}',
-    '\u{4ce}',
-    '\u{4d0}',
-    '\u{557}',
-    '\u{559}',
-    '\u{587}',
-    '\u{588}',
-    '\u{58b}',
-    '\u{58d}',
-    '\u{590}',
-    '\u{591}',
-    '\u{5c8}',
-    '\u{5d0}',
-    '\u{5eb}',
-    '\u{5ef}',
-    '\u{5f5}',
-    '\u{606}',
-    '\u{61c}',
-    '\u{61e}',
-    '\u{675}',
-    '\u{679}',
-    '\u{6dd}',
-    '\u{6de}',
-    '\u{70e}',
-    '\u{710}',
-    '\u{74b}',
-    '\u{74d}',
-    '\u{7b2}',
-    '\u{7c0}',
-    '\u{7fb}',
-    '\u{7fd}',
-    '\u{82e}',
-    '\u{830}',
-    '\u{83f}',
-    '\u{840}',
-    '\u{85c}',
-    '\u{85e}',
-    '\u{860}',
-    '\u{86b}',
-    '\u{8a0}',
-    '\u{8b5}',
-    '\u{8b6}',
-    '\u{8c8}',
-    '\u{8d3}',
-    '\u{8e2}',
-    '\u{8e3}',
-    '\u{958}',
-    '\u{960}',
-    '\u{984}',
-    '\u{985}',
-    '\u{98d}',
-    '\u{98f}',
-    '\u{991}',
-    '\u{993}',
-    '\u{9a9}',
-    '\u{9aa}',
-    '\u{9b1}',
-    '\u{9b3}',
-    '\u{9b6}',
-    '\u{9ba}',
-    '\u{9bc}',
-    '\u{9c5}',
-    '\u{9c7}',
-    '\u{9c9}',
-    '\u{9cb}',
-    '\u{9cf}',
-    '\u{9d7}',
-    '\u{9d8}',
-    '\u{9dc}',
-    '\u{9e0}',
-    '\u{9e4}',
-    '\u{9e6}',
-    '\u{9ff}',
-    '\u{a01}',
-    '\u{a04}',
-    '\u{a05}',
-    '\u{a0b}',
-    '\u{a0f}',
-    '\u{a11}',
-    '\u{a13}',
-    '\u{a29}',
-    '\u{a2a}',
-    '\u{a31}',
-    '\u{a38}',
-    '\u{a3a}',
-    '\u{a3c}',
-    '\u{a3e}',
-    '\u{a43}',
-    '\u{a47}',
-    '\u{a49}',
-    '\u{a4b}',
-    '\u{a4e}',
-    '\u{a51}',
-    '\u{a52}',
-    '\u{a59}',
-    '\u{a5f}',
-    '\u{a66}',
-    '\u{a77}',
-    '\u{a81}',
-    '\u{a84}',
-    '\u{a85}',
-    '\u{a8e}',
-    '\u{a8f}',
-    '\u{a92}',
-    '\u{a93}',
-    '\u{aa9}',
-    '\u{aaa}',
-    '\u{ab1}',
-    '\u{ab2}',
-    '\u{ab4}',
-    '\u{ab5}',
-    '\u{aba}',
-    '\u{abc}',
-    '\u{ac6}',
-    '\u{ac7}',
-    '\u{aca}',
-    '\u{acb}',
-    '\u{ace}',
-    '\u{ad0}',
-    '\u{ad1}',
-    '\u{ae0}',
-    '\u{ae4}',
-    '\u{ae6}',
-    '\u{af2}',
-    '\u{af9}',
-    '\u{b00}',
-    '\u{b01}',
-    '\u{b04}',
-    '\u{b05}',
-    '\u{b0d}',
-    '\u{b0f}',
-    '\u{b11}',
-    '\u{b13}',
-    '\u{b29}',
-    '\u{b2a}',
-    '\u{b31}',
-    '\u{b32}',
-    '\u{b34}',
-    '\u{b35}',
-    '\u{b3a}',
-    '\u{b3c}',
-    '\u{b45}',
-    '\u{b47}',
-    '\u{b49}',
-    '\u{b4b}',
-    '\u{b4e}',
-    '\u{b55}',
-    '\u{b58}',
-    '\u{b5c}',
-    '\u{b5f}',
-    '\u{b64}',
-    '\u{b66}',
-    '\u{b78}',
-    '\u{b82}',
-    '\u{b84}',
-    '\u{b85}',
-    '\u{b8b}',
-    '\u{b8e}',
-    '\u{b91}',
-    '\u{b92}',
-    '\u{b96}',
-    '\u{b99}',
-    '\u{b9b}',
-    '\u{b9e}',
-    '\u{ba0}',
-    '\u{ba3}',
-    '\u{ba5}',
-    '\u{ba8}',
-    '\u{bab}',
-    '\u{bae}',
-    '\u{bba}',
-    '\u{bbe}',
-    '\u{bc3}',
-    '\u{bc6}',
-    '\u{bc9}',
-    '\u{bca}',
-    '\u{bce}',
-    '\u{bd0}',
-    '\u{bd1}',
-    '\u{bd7}',
-    '\u{bd8}',
-    '\u{be6}',
-    '\u{bfb}',
-    '\u{c00}',
-    '\u{c0d}',
-    '\u{c0e}',
-    '\u{c11}',
-    '\u{c12}',
-    '\u{c29}',
-    '\u{c2a}',
-    '\u{c3a}',
-    '\u{c3d}',
-    '\u{c45}',
-    '\u{c46}',
-    '\u{c49}',
-    '\u{c4a}',
-    '\u{c4e}',
-    '\u{c55}',
-    '\u{c57}',
-    '\u{c58}',
-    '\u{c5b}',
-    '\u{c60}',
-    '\u{c64}',
-    '\u{c66}',
-    '\u{c70}',
-    '\u{c77}',
-    '\u{c8d}',
-    '\u{c8e}',
-    '\u{c91}',
-    '\u{c92}',
-    '\u{ca9}',
-    '\u{caa}',
-    '\u{cb4}',
-    '\u{cb5}',
-    '\u{cba}',
-    '\u{cbc}',
-    '\u{cc5}',
-    '\u{cc6}',
-    '\u{cc9}',
-    '\u{cca}',
-    '\u{cce}',
-    '\u{cd5}',
-    '\u{cd7}',
-    '\u{cde}',
-    '\u{ce0}',
-    '\u{ce4}',
-    '\u{ce6}',
-    '\u{cf0}',
-    '\u{cf1}',
-    '\u{cf3}',
-    '\u{d00}',
-    '\u{d0d}',
-    '\u{d0e}',
-    '\u{d11}',
-    '\u{d12}',
-    '\u{d45}',
-    '\u{d46}',
-    '\u{d49}',
-    '\u{d4a}',
-    '\u{d50}',
-    '\u{d54}',
-    '\u{d64}',
-    '\u{d66}',
-    '\u{d80}',
-    '\u{d81}',
-    '\u{d84}',
-    '\u{d85}',
-    '\u{d97}',
-    '\u{d9a}',
-    '\u{db2}',
-    '\u{db3}',
-    '\u{dbc}',
-    '\u{dbe}',
-    '\u{dc0}',
-    '\u{dc7}',
-    '\u{dca}',
-    '\u{dcb}',
-    '\u{dcf}',
-    '\u{dd5}',
-    '\u{dd8}',
-    '\u{de0}',
-    '\u{de6}',
-    '\u{df0}',
-    '\u{df2}',
-    '\u{df5}',
-    '\u{e01}',
-    '\u{e33}',
-    '\u{e34}',
-    '\u{e3b}',
-    '\u{e3f}',
-    '\u{e5c}',
-    '\u{e81}',
-    '\u{e83}',
-    '\u{e86}',
-    '\u{e8b}',
-    '\u{e8c}',
-    '\u{ea4}',
-    '\u{ea7}',
-    '\u{eb3}',
-    '\u{eb4}',
-    '\u{ebe}',
-    '\u{ec0}',
-    '\u{ec5}',
-    '\u{ec8}',
-    '\u{ece}',
-    '\u{ed0}',
-    '\u{eda}',
-    '\u{edc}',
-    '\u{ede}',
-    '\u{ee0}',
-    '\u{f00}',
-    '\u{f0c}',
-    '\u{f0d}',
-    '\u{f43}',
-    '\u{f44}',
-    '\u{f48}',
-    '\u{f49}',
-    '\u{f4d}',
-    '\u{f4e}',
-    '\u{f52}',
-    '\u{f53}',
-    '\u{f57}',
-    '\u{f58}',
-    '\u{f5c}',
-    '\u{f5d}',
-    '\u{f69}',
-    '\u{f6a}',
-    '\u{f6d}',
-    '\u{f71}',
-    '\u{f73}',
-    '\u{f7a}',
-    '\u{f81}',
-    '\u{f82}',
-    '\u{f93}',
-    '\u{f94}',
-    '\u{f98}',
-    '\u{f99}',
-    '\u{f9d}',
-    '\u{f9e}',
-    '\u{fa2}',
-    '\u{fa3}',
-    '\u{fa7}',
-    '\u{fa8}',
-    '\u{fac}',
-    '\u{fad}',
-    '\u{fb9}',
-    '\u{fba}',
-    '\u{fbd}',
-    '\u{fbe}',
-    '\u{fcd}',
-    '\u{fce}',
-    '\u{fdb}',
-    '\u{1000}',
-    '\u{10a0}',
-    '\u{10c7}',
-    '\u{10c8}',
-    '\u{10cd}',
-    '\u{10ce}',
-    '\u{10d0}',
-    '\u{10fc}',
-    '\u{10fd}',
-    '\u{115f}',
-    '\u{1161}',
-    '\u{1249}',
-    '\u{124a}',
-    '\u{124e}',
-    '\u{1250}',
-    '\u{1257}',
-    '\u{125a}',
-    '\u{125e}',
-    '\u{1260}',
-    '\u{1289}',
-    '\u{128a}',
-    '\u{128e}',
-    '\u{1290}',
-    '\u{12b1}',
-    '\u{12b2}',
-    '\u{12b6}',
-    '\u{12b8}',
-    '\u{12bf}',
-    '\u{12c2}',
-    '\u{12c6}',
-    '\u{12c8}',
-    '\u{12d7}',
-    '\u{12d8}',
-    '\u{1311}',
-    '\u{1312}',
-    '\u{1316}',
-    '\u{1318}',
-    '\u{135b}',
-    '\u{135d}',
-    '\u{137d}',
-    '\u{1380}',
-    '\u{139a}',
-    '\u{13a0}',
-    '\u{13f6}',
-    '\u{13f8}',
-    '\u{13fe}',
-    '\u{1400}',
-    '\u{1680}',
-    '\u{1681}',
-    '\u{169d}',
-    '\u{16a0}',
-    '\u{16f9}',
-    '\u{1700}',
-    '\u{170d}',
-    '\u{170e}',
-    '\u{1715}',
-    '\u{1720}',
-    '\u{1737}',
-    '\u{1740}',
-    '\u{1754}',
-    '\u{1760}',
-    '\u{176d}',
-    '\u{176e}',
-    '\u{1771}',
-    '\u{1772}',
-    '\u{1774}',
-    '\u{1780}',
-    '\u{17b4}',
-    '\u{17b6}',
-    '\u{17de}',
-    '\u{17e0}',
-    '\u{17ea}',
-    '\u{17f0}',
-    '\u{17fa}',
-    '\u{1800}',
-    '\u{1806}',
-    '\u{1807}',
-    '\u{180b}',
-    '\u{180e}',
-    '\u{1810}',
-    '\u{181a}',
-    '\u{1820}',
-    '\u{1879}',
-    '\u{1880}',
-    '\u{18ab}',
-    '\u{18b0}',
-    '\u{18f6}',
-    '\u{1900}',
-    '\u{191f}',
-    '\u{1920}',
-    '\u{192c}',
-    '\u{1930}',
-    '\u{193c}',
-    '\u{1940}',
-    '\u{1941}',
-    '\u{1944}',
-    '\u{196e}',
-    '\u{1970}',
-    '\u{1975}',
-    '\u{1980}',
-    '\u{19ac}',
-    '\u{19b0}',
-    '\u{19ca}',
-    '\u{19d0}',
-    '\u{19db}',
-    '\u{19de}',
-    '\u{1a1c}',
-    '\u{1a1e}',
-    '\u{1a5f}',
-    '\u{1a60}',
-    '\u{1a7d}',
-    '\u{1a7f}',
-    '\u{1a8a}',
-    '\u{1a90}',
-    '\u{1a9a}',
-    '\u{1aa0}',
-    '\u{1aae}',
-    '\u{1ab0}',
-    '\u{1ac1}',
-    '\u{1b00}',
-    '\u{1b4c}',
-    '\u{1b50}',
-    '\u{1b7d}',
-    '\u{1b80}',
-    '\u{1bf4}',
-    '\u{1bfc}',
-    '\u{1c38}',
-    '\u{1c3b}',
-    '\u{1c4a}',
-    '\u{1c4d}',
-    '\u{1c80}',
-    '\u{1c84}',
-    '\u{1c86}',
-    '\u{1c89}',
-    '\u{1c90}',
-    '\u{1cbb}',
-    '\u{1cbd}',
-    '\u{1cc0}',
-    '\u{1cc8}',
-    '\u{1cd0}',
-    '\u{1cfb}',
-    '\u{1d00}',
-    '\u{1d2c}',
-    '\u{1d6b}',
-    '\u{1d78}',
-    '\u{1d79}',
-    '\u{1d9b}',
-    '\u{1dc0}',
-    '\u{1dfa}',
-    '\u{1dfb}',
-    '\u{1e00}',
-    '\u{1e95}',
-    '\u{1e9a}',
-    '\u{1e9c}',
-    '\u{1e9e}',
-    '\u{1eff}',
-    '\u{1f08}',
-    '\u{1f10}',
-    '\u{1f16}',
-    '\u{1f18}',
-    '\u{1f1e}',
-    '\u{1f20}',
-    '\u{1f28}',
-    '\u{1f30}',
-    '\u{1f38}',
-    '\u{1f40}',
-    '\u{1f46}',
-    '\u{1f48}',
-    '\u{1f4e}',
-    '\u{1f50}',
-    '\u{1f58}',
-    '\u{1f60}',
-    '\u{1f68}',
-    '\u{1f7e}',
-    '\u{1f80}',
-    '\u{1fb0}',
-    '\u{1fb2}',
-    '\u{1fd0}',
-    '\u{1fd3}',
-    '\u{1fd4}',
-    '\u{1fd6}',
-    '\u{1fd8}',
-    '\u{1fe0}',
-    '\u{1fe3}',
-    '\u{1fe4}',
-    '\u{1fe8}',
-    '\u{1ff0}',
-    '\u{1ff2}',
-    '\u{2000}',
-    '\u{200b}',
-    '\u{200c}',
-    '\u{200e}',
-    '\u{2010}',
-    '\u{2012}',
-    '\u{2017}',
-    '\u{2018}',
-    '\u{2024}',
-    '\u{2027}',
-    '\u{2028}',
-    '\u{202f}',
-    '\u{2030}',
-    '\u{2033}',
-    '\u{2038}',
-    '\u{203c}',
-    '\u{203f}',
-    '\u{2047}',
-    '\u{204a}',
-    '\u{2057}',
-    '\u{2058}',
-    '\u{205f}',
-    '\u{2061}',
-    '\u{2064}',
-    '\u{2065}',
-    '\u{2070}',
-    '\u{2072}',
-    '\u{2074}',
-    '\u{209d}',
-    '\u{20a0}',
-    '\u{20a8}',
-    '\u{20a9}',
-    '\u{20c0}',
-    '\u{20d0}',
-    '\u{20f1}',
-    '\u{2100}',
-    '\u{210b}',
-    '\u{210f}',
-    '\u{2110}',
-    '\u{2112}',
-    '\u{2114}',
-    '\u{2117}',
-    '\u{2119}',
-    '\u{211b}',
-    '\u{211e}',
-    '\u{2120}',
-    '\u{212f}',
-    '\u{2131}',
-    '\u{213d}',
-    '\u{213f}',
-    '\u{2141}',
-    '\u{2145}',
-    '\u{2147}',
-    '\u{214a}',
-    '\u{2150}',
-    '\u{2180}',
-    '\u{2183}',
-    '\u{2184}',
-    '\u{2189}',
-    '\u{218a}',
-    '\u{218c}',
-    '\u{2190}',
-    '\u{222c}',
-    '\u{2231}',
-    '\u{2260}',
-    '\u{2261}',
-    '\u{226e}',
-    '\u{2270}',
-    '\u{2329}',
-    '\u{232b}',
-    '\u{2427}',
-    '\u{2440}',
-    '\u{244b}',
-    '\u{2460}',
-    '\u{2488}',
-    '\u{249c}',
-    '\u{24eb}',
-    '\u{2a0c}',
-    '\u{2a0d}',
-    '\u{2a74}',
-    '\u{2a77}',
-    '\u{2adc}',
-    '\u{2add}',
-    '\u{2b74}',
-    '\u{2b76}',
-    '\u{2b96}',
-    '\u{2b97}',
-    '\u{2c00}',
-    '\u{2c30}',
-    '\u{2c5f}',
-    '\u{2c65}',
-    '\u{2c67}',
-    '\u{2c73}',
-    '\u{2c75}',
-    '\u{2c76}',
-    '\u{2c7c}',
-    '\u{2ce3}',
-    '\u{2ceb}',
-    '\u{2cee}',
-    '\u{2cf2}',
-    '\u{2cf4}',
-    '\u{2cf9}',
-    '\u{2d26}',
-    '\u{2d28}',
-    '\u{2d2d}',
-    '\u{2d2e}',
-    '\u{2d30}',
-    '\u{2d68}',
-    '\u{2d6f}',
-    '\u{2d71}',
-    '\u{2d7f}',
-    '\u{2d97}',
-    '\u{2da0}',
-    '\u{2da7}',
-    '\u{2da8}',
-    '\u{2daf}',
-    '\u{2db0}',
-    '\u{2db7}',
-    '\u{2db8}',
-    '\u{2dbf}',
-    '\u{2dc0}',
-    '\u{2dc7}',
-    '\u{2dc8}',
-    '\u{2dcf}',
-    '\u{2dd0}',
-    '\u{2dd7}',
-    '\u{2dd8}',
-    '\u{2ddf}',
-    '\u{2de0}',
-    '\u{2e53}',
-    '\u{2e80}',
-    '\u{2e9a}',
-    '\u{2e9b}',
-    '\u{2e9f}',
-    '\u{2ea0}',
-    '\u{2ef3}',
-    '\u{2ef4}',
-    '\u{2f00}',
-    '\u{2fd6}',
-    '\u{3000}',
-    '\u{3003}',
-    '\u{3036}',
-    '\u{303b}',
-    '\u{3040}',
-    '\u{3041}',
-    '\u{3097}',
-    '\u{3099}',
-    '\u{309b}',
-    '\u{309d}',
-    '\u{309f}',
-    '\u{30a0}',
-    '\u{30ff}',
-    '\u{3100}',
-    '\u{3105}',
-    '\u{3130}',
-    '\u{3190}',
-    '\u{3192}',
-    '\u{31a0}',
-    '\u{31e4}',
-    '\u{31f0}',
-    '\u{3200}',
-    '\u{3248}',
-    '\u{3250}',
-    '\u{3400}',
-    '\u{9ffd}',
-    '\u{a000}',
-    '\u{a48d}',
-    '\u{a490}',
-    '\u{a4c7}',
-    '\u{a4d0}',
-    '\u{a62c}',
-    '\u{a640}',
-    '\u{a66d}',
-    '\u{a680}',
-    '\u{a69e}',
-    '\u{a6f8}',
-    '\u{a700}',
-    '\u{a722}',
-    '\u{a72f}',
-    '\u{a732}',
-    '\u{a771}',
-    '\u{a779}',
-    '\u{a787}',
-    '\u{a78b}',
-    '\u{a78e}',
-    '\u{a790}',
-    '\u{a793}',
-    '\u{a796}',
-    '\u{a7c0}',
-    '\u{a7c2}',
-    '\u{a7cb}',
-    '\u{a7f5}',
-    '\u{a7f6}',
-    '\u{a7f8}',
-    '\u{a7fa}',
-    '\u{a82d}',
-    '\u{a830}',
-    '\u{a83a}',
-    '\u{a840}',
-    '\u{a878}',
-    '\u{a880}',
-    '\u{a8c6}',
-    '\u{a8ce}',
-    '\u{a8da}',
-    '\u{a8e0}',
-    '\u{a954}',
-    '\u{a95f}',
-    '\u{a97d}',
-    '\u{a980}',
-    '\u{a9ce}',
-    '\u{a9cf}',
-    '\u{a9da}',
-    '\u{a9de}',
-    '\u{a9ff}',
-    '\u{aa00}',
-    '\u{aa37}',
-    '\u{aa40}',
-    '\u{aa4e}',
-    '\u{aa50}',
-    '\u{aa5a}',
-    '\u{aa5c}',
-    '\u{aac3}',
-    '\u{aadb}',
-    '\u{aaf7}',
-    '\u{ab01}',
-    '\u{ab07}',
-    '\u{ab09}',
-    '\u{ab0f}',
-    '\u{ab11}',
-    '\u{ab17}',
-    '\u{ab20}',
-    '\u{ab27}',
-    '\u{ab28}',
-    '\u{ab2f}',
-    '\u{ab30}',
-    '\u{ab5c}',
-    '\u{ab60}',
-    '\u{ab69}',
-    '\u{ab6a}',
-    '\u{ab6c}',
-    '\u{ab70}',
-    '\u{abc0}',
-    '\u{abee}',
-    '\u{abf0}',
-    '\u{abfa}',
-    '\u{ac00}',
-    '\u{d7a4}',
-    '\u{d7b0}',
-    '\u{d7c7}',
-    '\u{d7cb}',
-    '\u{d7fc}',
-    '\u{f900}',
-    '\u{f907}',
-    '\u{f909}',
-    '\u{fa0e}',
-    '\u{fa10}',
-    '\u{fa13}',
-    '\u{fa15}',
-    '\u{fa23}',
-    '\u{fa25}',
-    '\u{fa27}',
-    '\u{fa2a}',
-    '\u{fa5d}',
-    '\u{fa5f}',
-    '\u{fa6e}',
-    '\u{fa70}',
-    '\u{fada}',
-    '\u{fb00}',
-    '\u{fb05}',
-    '\u{fb07}',
-    '\u{fb13}',
-    '\u{fb18}',
-    '\u{fb1d}',
-    '\u{fb50}',
-    '\u{fb52}',
-    '\u{fb56}',
-    '\u{fb5a}',
-    '\u{fb5e}',
-    '\u{fb62}',
-    '\u{fb66}',
-    '\u{fb6a}',
-    '\u{fb6e}',
-    '\u{fb72}',
-    '\u{fb76}',
-    '\u{fb7a}',
-    '\u{fb7e}',
-    '\u{fb82}',
-    '\u{fb84}',
-    '\u{fb86}',
-    '\u{fb88}',
-    '\u{fb8a}',
-    '\u{fb8c}',
-    '\u{fb8e}',
-    '\u{fb92}',
-    '\u{fb96}',
-    '\u{fb9a}',
-    '\u{fb9e}',
-    '\u{fba0}',
-    '\u{fba4}',
-    '\u{fba6}',
-    '\u{fbaa}',
-    '\u{fbae}',
-    '\u{fbb0}',
-    '\u{fbb2}',
-    '\u{fbc2}',
-    '\u{fbd3}',
-    '\u{fbd7}',
-    '\u{fbd9}',
-    '\u{fbdb}',
-    '\u{fbdd}',
-    '\u{fbde}',
-    '\u{fbe0}',
-    '\u{fbe2}',
-    '\u{fbe4}',
-    '\u{fbe8}',
-    '\u{fbea}',
-    '\u{fbec}',
-    '\u{fbee}',
-    '\u{fbf0}',
-    '\u{fbf2}',
-    '\u{fbf4}',
-    '\u{fbf6}',
-    '\u{fbf9}',
-    '\u{fbfc}',
-    '\u{fc00}',
-    '\u{fd3c}',
-    '\u{fd3e}',
-    '\u{fd40}',
-    '\u{fd50}',
-    '\u{fd51}',
-    '\u{fd53}',
-    '\u{fd58}',
-    '\u{fd5a}',
-    '\u{fd5f}',
-    '\u{fd61}',
-    '\u{fd62}',
-    '\u{fd64}',
-    '\u{fd66}',
-    '\u{fd67}',
-    '\u{fd69}',
-    '\u{fd6a}',
-    '\u{fd6c}',
-    '\u{fd6e}',
-    '\u{fd6f}',
-    '\u{fd71}',
-    '\u{fd73}',
-    '\u{fd76}',
-    '\u{fd78}',
-    '\u{fd7c}',
-    '\u{fd7e}',
-    '\u{fd83}',
-    '\u{fd85}',
-    '\u{fd87}',
-    '\u{fd89}',
-    '\u{fd90}',
-    '\u{fd92}',
-    '\u{fd97}',
-    '\u{fd99}',
-    '\u{fd9c}',
-    '\u{fd9e}',
-    '\u{fdc8}',
-    '\u{fdf0}',
-    '\u{fdfe}',
-    '\u{fe00}',
-    '\u{fe10}',
-    '\u{fe19}',
-    '\u{fe20}',
-    '\u{fe30}',
-    '\u{fe33}',
-    '\u{fe35}',
-    '\u{fe45}',
-    '\u{fe47}',
-    '\u{fe49}',
-    '\u{fe4d}',
-    '\u{fe50}',
-    '\u{fe52}',
-    '\u{fe54}',
-    '\u{fe6c}',
-    '\u{fe70}',
-    '\u{fe81}',
-    '\u{fe83}',
-    '\u{fe85}',
-    '\u{fe87}',
-    '\u{fe89}',
-    '\u{fe8d}',
-    '\u{fe8f}',
-    '\u{fe93}',
-    '\u{fe95}',
-    '\u{fe99}',
-    '\u{fe9d}',
-    '\u{fea1}',
-    '\u{fea5}',
-    '\u{fea9}',
-    '\u{feab}',
-    '\u{fead}',
-    '\u{feaf}',
-    '\u{feb1}',
-    '\u{feb5}',
-    '\u{feb9}',
-    '\u{febd}',
-    '\u{fec1}',
-    '\u{fec5}',
-    '\u{fec9}',
-    '\u{fecd}',
-    '\u{fed1}',
-    '\u{fed5}',
-    '\u{fed9}',
-    '\u{fedd}',
-    '\u{fee1}',
-    '\u{fee5}',
-    '\u{fee9}',
-    '\u{feed}',
-    '\u{feef}',
-    '\u{fef1}',
-    '\u{fef5}',
-    '\u{fef7}',
-    '\u{fef9}',
-    '\u{fefb}',
-    '\u{fefd}',
-    '\u{feff}',
-    '\u{ffbf}',
-    '\u{ffc2}',
-    '\u{ffc8}',
-    '\u{ffca}',
-    '\u{ffd0}',
-    '\u{ffd2}',
-    '\u{ffd8}',
-    '\u{ffda}',
-    '\u{ffdd}',
-    '\u{ffe0}',
-    '\u{ffef}',
-    '\u{10000}',
-    '\u{1000c}',
-    '\u{1000d}',
-    '\u{10027}',
-    '\u{10028}',
-    '\u{1003b}',
-    '\u{1003c}',
-    '\u{1003e}',
-    '\u{1003f}',
-    '\u{1004e}',
-    '\u{10050}',
-    '\u{1005e}',
-    '\u{10080}',
-    '\u{100fb}',
-    '\u{10100}',
-    '\u{10103}',
-    '\u{10107}',
-    '\u{10134}',
-    '\u{10137}',
-    '\u{1018f}',
-    '\u{10190}',
-    '\u{1019d}',
-    '\u{101a0}',
-    '\u{101a1}',
-    '\u{101d0}',
-    '\u{101fe}',
-    '\u{10280}',
-    '\u{1029d}',
-    '\u{102a0}',
-    '\u{102d1}',
-    '\u{102e0}',
-    '\u{102fc}',
-    '\u{10300}',
-    '\u{10324}',
-    '\u{1032d}',
-    '\u{1034b}',
-    '\u{10350}',
-    '\u{1037b}',
-    '\u{10380}',
-    '\u{1039e}',
-    '\u{1039f}',
-    '\u{103c4}',
-    '\u{103c8}',
-    '\u{103d6}',
-    '\u{10400}',
-    '\u{10428}',
-    '\u{1049e}',
-    '\u{104a0}',
-    '\u{104aa}',
-    '\u{104b0}',
-    '\u{104d4}',
-    '\u{104d8}',
-    '\u{104fc}',
-    '\u{10500}',
-    '\u{10528}',
-    '\u{10530}',
-    '\u{10564}',
-    '\u{1056f}',
-    '\u{10570}',
-    '\u{10600}',
-    '\u{10737}',
-    '\u{10740}',
-    '\u{10756}',
-    '\u{10760}',
-    '\u{10768}',
-    '\u{10800}',
-    '\u{10806}',
-    '\u{10808}',
-    '\u{1080a}',
-    '\u{10836}',
-    '\u{10837}',
-    '\u{10839}',
-    '\u{1083c}',
-    '\u{1083d}',
-    '\u{1083f}',
-    '\u{10856}',
-    '\u{10857}',
-    '\u{1089f}',
-    '\u{108a7}',
-    '\u{108b0}',
-    '\u{108e0}',
-    '\u{108f3}',
-    '\u{108f4}',
-    '\u{108f6}',
-    '\u{108fb}',
-    '\u{1091c}',
-    '\u{1091f}',
-    '\u{1093a}',
-    '\u{1093f}',
-    '\u{10940}',
-    '\u{10980}',
-    '\u{109b8}',
-    '\u{109bc}',
-    '\u{109d0}',
-    '\u{109d2}',
-    '\u{10a04}',
-    '\u{10a05}',
-    '\u{10a07}',
-    '\u{10a0c}',
-    '\u{10a14}',
-    '\u{10a15}',
-    '\u{10a18}',
-    '\u{10a19}',
-    '\u{10a36}',
-    '\u{10a38}',
-    '\u{10a3b}',
-    '\u{10a3f}',
-    '\u{10a49}',
-    '\u{10a50}',
-    '\u{10a59}',
-    '\u{10a60}',
-    '\u{10aa0}',
-    '\u{10ac0}',
-    '\u{10ae7}',
-    '\u{10aeb}',
-    '\u{10af7}',
-    '\u{10b00}',
-    '\u{10b36}',
-    '\u{10b39}',
-    '\u{10b56}',
-    '\u{10b58}',
-    '\u{10b73}',
-    '\u{10b78}',
-    '\u{10b92}',
-    '\u{10b99}',
-    '\u{10b9d}',
-    '\u{10ba9}',
-    '\u{10bb0}',
-    '\u{10c00}',
-    '\u{10c49}',
-    '\u{10c80}',
-    '\u{10cb3}',
-    '\u{10cc0}',
-    '\u{10cf3}',
-    '\u{10cfa}',
-    '\u{10d28}',
-    '\u{10d30}',
-    '\u{10d3a}',
-    '\u{10e60}',
-    '\u{10e7f}',
-    '\u{10e80}',
-    '\u{10eaa}',
-    '\u{10eab}',
-    '\u{10eae}',
-    '\u{10eb0}',
-    '\u{10eb2}',
-    '\u{10f00}',
-    '\u{10f28}',
-    '\u{10f30}',
-    '\u{10f5a}',
-    '\u{10fb0}',
-    '\u{10fcc}',
-    '\u{10fe0}',
-    '\u{10ff7}',
-    '\u{11000}',
-    '\u{1104e}',
-    '\u{11052}',
-    '\u{11070}',
-    '\u{1107f}',
-    '\u{110bd}',
-    '\u{110be}',
-    '\u{110c2}',
-    '\u{110d0}',
-    '\u{110e9}',
-    '\u{110f0}',
-    '\u{110fa}',
-    '\u{11100}',
-    '\u{11135}',
-    '\u{11136}',
-    '\u{11148}',
-    '\u{11150}',
-    '\u{11177}',
-    '\u{11180}',
-    '\u{111e0}',
-    '\u{111e1}',
-    '\u{111f5}',
-    '\u{11200}',
-    '\u{11212}',
-    '\u{11213}',
-    '\u{1123f}',
-    '\u{11280}',
-    '\u{11287}',
-    '\u{1128a}',
-    '\u{1128e}',
-    '\u{1128f}',
-    '\u{1129e}',
-    '\u{1129f}',
-    '\u{112aa}',
-    '\u{112b0}',
-    '\u{112eb}',
-    '\u{112f0}',
-    '\u{112fa}',
-    '\u{11300}',
-    '\u{11304}',
-    '\u{11305}',
-    '\u{1130d}',
-    '\u{1130f}',
-    '\u{11311}',
-    '\u{11313}',
-    '\u{11329}',
-    '\u{1132a}',
-    '\u{11331}',
-    '\u{11332}',
-    '\u{11334}',
-    '\u{11335}',
-    '\u{1133a}',
-    '\u{1133b}',
-    '\u{11345}',
-    '\u{11347}',
-    '\u{11349}',
-    '\u{1134b}',
-    '\u{1134e}',
-    '\u{11350}',
-    '\u{11351}',
-    '\u{11357}',
-    '\u{11358}',
-    '\u{1135d}',
-    '\u{11364}',
-    '\u{11366}',
-    '\u{1136d}',
-    '\u{11370}',
-    '\u{11375}',
-    '\u{11400}',
-    '\u{1145c}',
-    '\u{1145d}',
-    '\u{11462}',
-    '\u{11480}',
-    '\u{114c8}',
-    '\u{114d0}',
-    '\u{114da}',
-    '\u{11580}',
-    '\u{115b6}',
-    '\u{115b8}',
-    '\u{115de}',
-    '\u{11600}',
-    '\u{11645}',
-    '\u{11650}',
-    '\u{1165a}',
-    '\u{11660}',
-    '\u{1166d}',
-    '\u{11680}',
-    '\u{116b9}',
-    '\u{116c0}',
-    '\u{116ca}',
-    '\u{11700}',
-    '\u{1171b}',
-    '\u{1171d}',
-    '\u{1172c}',
-    '\u{11730}',
-    '\u{11740}',
-    '\u{11800}',
-    '\u{1183c}',
-    '\u{118a0}',
-    '\u{118c0}',
-    '\u{118f3}',
-    '\u{118ff}',
-    '\u{11907}',
-    '\u{11909}',
-    '\u{1190a}',
-    '\u{1190c}',
-    '\u{11914}',
-    '\u{11915}',
-    '\u{11917}',
-    '\u{11918}',
-    '\u{11936}',
-    '\u{11937}',
-    '\u{11939}',
-    '\u{1193b}',
-    '\u{11947}',
-    '\u{11950}',
-    '\u{1195a}',
-    '\u{119a0}',
-    '\u{119a8}',
-    '\u{119aa}',
-    '\u{119d8}',
-    '\u{119da}',
-    '\u{119e5}',
-    '\u{11a00}',
-    '\u{11a48}',
-    '\u{11a50}',
-    '\u{11aa3}',
-    '\u{11ac0}',
-    '\u{11af9}',
-    '\u{11c00}',
-    '\u{11c09}',
-    '\u{11c0a}',
-    '\u{11c37}',
-    '\u{11c38}',
-    '\u{11c46}',
-    '\u{11c50}',
-    '\u{11c6d}',
-    '\u{11c70}',
-    '\u{11c90}',
-    '\u{11c92}',
-    '\u{11ca8}',
-    '\u{11ca9}',
-    '\u{11cb7}',
-    '\u{11d00}',
-    '\u{11d07}',
-    '\u{11d08}',
-    '\u{11d0a}',
-    '\u{11d0b}',
-    '\u{11d37}',
-    '\u{11d3a}',
-    '\u{11d3c}',
-    '\u{11d3e}',
-    '\u{11d3f}',
-    '\u{11d48}',
-    '\u{11d50}',
-    '\u{11d5a}',
-    '\u{11d60}',
-    '\u{11d66}',
-    '\u{11d67}',
-    '\u{11d69}',
-    '\u{11d6a}',
-    '\u{11d8f}',
-    '\u{11d90}',
-    '\u{11d92}',
-    '\u{11d93}',
-    '\u{11d99}',
-    '\u{11da0}',
-    '\u{11daa}',
-    '\u{11ee0}',
-    '\u{11ef9}',
-    '\u{11fb0}',
-    '\u{11fb1}',
-    '\u{11fc0}',
-    '\u{11ff2}',
-    '\u{11fff}',
-    '\u{1239a}',
-    '\u{12400}',
-    '\u{1246f}',
-    '\u{12470}',
-    '\u{12475}',
-    '\u{12480}',
-    '\u{12544}',
-    '\u{13000}',
-    '\u{1342f}',
-    '\u{14400}',
-    '\u{14647}',
-    '\u{16800}',
-    '\u{16a39}',
-    '\u{16a40}',
-    '\u{16a5f}',
-    '\u{16a60}',
-    '\u{16a6a}',
-    '\u{16a6e}',
-    '\u{16a70}',
-    '\u{16ad0}',
-    '\u{16aee}',
-    '\u{16af0}',
-    '\u{16af6}',
-    '\u{16b00}',
-    '\u{16b46}',
-    '\u{16b50}',
-    '\u{16b5a}',
-    '\u{16b5b}',
-    '\u{16b62}',
-    '\u{16b63}',
-    '\u{16b78}',
-    '\u{16b7d}',
-    '\u{16b90}',
-    '\u{16e40}',
-    '\u{16e60}',
-    '\u{16e9b}',
-    '\u{16f00}',
-    '\u{16f4b}',
-    '\u{16f4f}',
-    '\u{16f88}',
-    '\u{16f8f}',
-    '\u{16fa0}',
-    '\u{16fe0}',
-    '\u{16fe5}',
-    '\u{16ff0}',
-    '\u{16ff2}',
-    '\u{17000}',
-    '\u{187f8}',
-    '\u{18800}',
-    '\u{18cd6}',
-    '\u{18d00}',
-    '\u{18d09}',
-    '\u{1b000}',
-    '\u{1b11f}',
-    '\u{1b150}',
-    '\u{1b153}',
-    '\u{1b164}',
-    '\u{1b168}',
-    '\u{1b170}',
-    '\u{1b2fc}',
-    '\u{1bc00}',
-    '\u{1bc6b}',
-    '\u{1bc70}',
-    '\u{1bc7d}',
-    '\u{1bc80}',
-    '\u{1bc89}',
-    '\u{1bc90}',
-    '\u{1bc9a}',
-    '\u{1bc9c}',
-    '\u{1bca0}',
-    '\u{1bca4}',
-    '\u{1d000}',
-    '\u{1d0f6}',
-    '\u{1d100}',
-    '\u{1d127}',
-    '\u{1d129}',
-    '\u{1d15e}',
-    '\u{1d165}',
-    '\u{1d173}',
-    '\u{1d17b}',
-    '\u{1d1bb}',
-    '\u{1d1c1}',
-    '\u{1d1e9}',
-    '\u{1d200}',
-    '\u{1d246}',
-    '\u{1d2e0}',
-    '\u{1d2f4}',
-    '\u{1d300}',
-    '\u{1d357}',
-    '\u{1d360}',
-    '\u{1d379}',
-    '\u{1d400}',
-    '\u{1d4a0}',
-    '\u{1d4a2}',
-    '\u{1d4a3}',
-    '\u{1d4a5}',
-    '\u{1d4a7}',
-    '\u{1d4a9}',
-    '\u{1d50b}',
-    '\u{1d50d}',
-    '\u{1d547}',
-    '\u{1d54a}',
-    '\u{1d6a6}',
-    '\u{1d6a8}',
-    '\u{1d6d3}',
-    '\u{1d6d5}',
-    '\u{1d70d}',
-    '\u{1d70f}',
-    '\u{1d747}',
-    '\u{1d749}',
-    '\u{1d781}',
-    '\u{1d783}',
-    '\u{1d7bb}',
-    '\u{1d7bd}',
-    '\u{1d7ca}',
-    '\u{1d7cc}',
-    '\u{1d7ce}',
-    '\u{1d800}',
-    '\u{1da8c}',
-    '\u{1da9b}',
-    '\u{1daa0}',
-    '\u{1daa1}',
-    '\u{1dab0}',
-    '\u{1e000}',
-    '\u{1e007}',
-    '\u{1e008}',
-    '\u{1e019}',
-    '\u{1e01b}',
-    '\u{1e022}',
-    '\u{1e023}',
-    '\u{1e025}',
-    '\u{1e026}',
-    '\u{1e02b}',
-    '\u{1e100}',
-    '\u{1e12d}',
-    '\u{1e130}',
-    '\u{1e13e}',
-    '\u{1e140}',
-    '\u{1e14a}',
-    '\u{1e14e}',
-    '\u{1e150}',
-    '\u{1e2c0}',
-    '\u{1e2fa}',
-    '\u{1e2ff}',
-    '\u{1e300}',
-    '\u{1e800}',
-    '\u{1e8c5}',
-    '\u{1e8c7}',
-    '\u{1e8d7}',
-    '\u{1e900}',
-    '\u{1e922}',
-    '\u{1e94c}',
-    '\u{1e950}',
-    '\u{1e95a}',
-    '\u{1e95e}',
-    '\u{1e960}',
-    '\u{1ec71}',
-    '\u{1ecb5}',
-    '\u{1ed01}',
-    '\u{1ed3e}',
-    '\u{1ee00}',
-    '\u{1ee25}',
-    '\u{1ee27}',
-    '\u{1ee3c}',
-    '\u{1ee42}',
-    '\u{1ee43}',
-    '\u{1ee47}',
-    '\u{1ee55}',
-    '\u{1ee57}',
-    '\u{1ee65}',
-    '\u{1ee67}',
-    '\u{1ee9c}',
-    '\u{1eea1}',
-    '\u{1eebc}',
-    '\u{1eef0}',
-    '\u{1eef2}',
-    '\u{1f000}',
-    '\u{1f02c}',
-    '\u{1f030}',
-    '\u{1f094}',
-    '\u{1f0a0}',
-    '\u{1f0af}',
-    '\u{1f0b1}',
-    '\u{1f0c0}',
-    '\u{1f0c1}',
-    '\u{1f0d0}',
-    '\u{1f0d1}',
-    '\u{1f0f6}',
-    '\u{1f101}',
-    '\u{1f10b}',
-    '\u{1f110}',
-    '\u{1f150}',
-    '\u{1f16a}',
-    '\u{1f16d}',
-    '\u{1f190}',
-    '\u{1f191}',
-    '\u{1f1ae}',
-    '\u{1f1e6}',
-    '\u{1f200}',
-    '\u{1f203}',
-    '\u{1f210}',
-    '\u{1f23c}',
-    '\u{1f240}',
-    '\u{1f249}',
-    '\u{1f250}',
-    '\u{1f252}',
-    '\u{1f260}',
-    '\u{1f266}',
-    '\u{1f300}',
-    '\u{1f6d8}',
-    '\u{1f6e0}',
-    '\u{1f6ed}',
-    '\u{1f6f0}',
-    '\u{1f6fd}',
-    '\u{1f700}',
-    '\u{1f774}',
-    '\u{1f780}',
-    '\u{1f7d9}',
-    '\u{1f7e0}',
-    '\u{1f7ec}',
-    '\u{1f800}',
-    '\u{1f80c}',
-    '\u{1f810}',
-    '\u{1f848}',
-    '\u{1f850}',
-    '\u{1f85a}',
-    '\u{1f860}',
-    '\u{1f888}',
-    '\u{1f890}',
-    '\u{1f8ae}',
-    '\u{1f8b0}',
-    '\u{1f8b2}',
-    '\u{1f900}',
-    '\u{1f979}',
-    '\u{1f97a}',
-    '\u{1f9cc}',
-    '\u{1f9cd}',
-    '\u{1fa54}',
-    '\u{1fa60}',
-    '\u{1fa6e}',
-    '\u{1fa70}',
-    '\u{1fa75}',
-    '\u{1fa78}',
-    '\u{1fa7b}',
-    '\u{1fa80}',
-    '\u{1fa87}',
-    '\u{1fa90}',
-    '\u{1faa9}',
-    '\u{1fab0}',
-    '\u{1fab7}',
-    '\u{1fac0}',
-    '\u{1fac3}',
-    '\u{1fad0}',
-    '\u{1fad7}',
-    '\u{1fb00}',
-    '\u{1fb93}',
-    '\u{1fb94}',
-    '\u{1fbcb}',
-    '\u{1fbf0}',
-    '\u{1fbfa}',
-    '\u{20000}',
-    '\u{2a6de}',
-    '\u{2a700}',
-    '\u{2b735}',
-    '\u{2b740}',
-    '\u{2b81e}',
-    '\u{2b820}',
-    '\u{2cea2}',
-    '\u{2ceb0}',
-    '\u{2ebe1}',
-    '\u{2f800}',
-    '\u{2f831}',
-    '\u{2f834}',
-    '\u{2f845}',
-    '\u{2f847}',
-    '\u{2f86a}',
-    '\u{2f86c}',
-    '\u{2f891}',
-    '\u{2f893}',
-    '\u{2f894}',
-    '\u{2f896}',
-    '\u{2f92c}',
-    '\u{2f92e}',
-    '\u{2f946}',
-    '\u{2f948}',
-    '\u{2f95d}',
-    '\u{2f95f}',
-    '\u{2f9fe}',
-    '\u{2fa00}',
-    '\u{2fa1e}',
-    '\u{30000}',
-    '\u{3134b}',
-    '\u{e0100}',
-    '\u{e01f0}',
-];
-
-static INDEX_TABLE: &[u16] = &[
-    32768,
-    32769,
-    32770,
-    32771,
-    32772,
-    5,
-    32799,
-    32800,
-    32801,
-    32802,
-    32803,
-    32804,
-    37,
-    32808,
-    41,
-    32812,
-    45,
-    32817,
-    50,
-    32858,
-    91,
-    32909,
-    142,
-    32913,
-    146,
-    32920,
-    153,
-    32996,
-    229,
-    33008,
-    241,
-    33023,
-    256,
-    33037,
-    33038,
-    33039,
-    33040,
-    33041,
-    33042,
-    275,
-    33058,
-    291,
-    33076,
-    33077,
-    310,
-    33141,
-    374,
-    33147,
-    380,
-    33162,
-    395,
-    33172,
-    405,
-    33179,
-    412,
-    33185,
-    418,
-    33192,
-    33193,
-    33194,
-    427,
-    33203,
-    33204,
-    33205,
-    438,
-    33208,
-    441,
-    33249,
-    33250,
-    33251,
-    484,
-    33296,
-    529,
-    33348,
-    581,
-    33382,
-    615,
-    33451,
-    684,
-    33587,
-    33588,
-    33589,
-    33590,
-    33591,
-    33592,
-    33593,
-    33594,
-    33595,
-    33596,
-    33597,
-    33598,
-    33599,
-    33600,
-    33601,
-    33602,
-    835,
-    33607,
-    33608,
-    33609,
-    33610,
-    33611,
-    33612,
-    33613,
-    33614,
-    33615,
-    33616,
-    33617,
-    33618,
-    33619,
-    33620,
-    33621,
-    33622,
-    855,
-    33625,
-    33626,
-    33627,
-    33628,
-    33629,
-    33630,
-    33631,
-    33632,
-    33633,
-    866,
-    33642,
-    33643,
-    33644,
-    33645,
-    33646,
-    33647,
-    33648,
-    33649,
-    33650,
-    883,
-    33653,
-    33654,
-    33655,
-    33656,
-    33657,
-    33658,
-    33659,
-    33660,
-    33661,
-    33662,
-    33663,
-    896,
-    33668,
-    33669,
-    33670,
-    33671,
-    33672,
-    33673,
-    33674,
-    33675,
-    33676,
-    33677,
-    33678,
-    33679,
-    33680,
-    913,
-    33688,
-    33689,
-    922,
-    33692,
-    33693,
-    33694,
-    33695,
-    33696,
-    33697,
-    33698,
-    33699,
-    932,
-    33706,
-    33707,
-    33708,
-    33709,
-    33710,
-    33711,
-    33712,
-    33713,
-    33714,
-    33715,
-    33716,
-    33717,
-    33718,
-    33719,
-    33720,
-    33721,
-    33722,
-    33723,
-    33724,
-    33725,
-    33726,
-    33727,
-    33728,
-    33729,
-    33730,
-    33731,
-    33732,
-    33733,
-    33734,
-    33735,
-    33736,
-    33737,
-    33738,
-    33739,
-    33740,
-    33741,
-    33742,
-    33743,
-    33744,
-    33745,
-    33746,
-    33747,
-    33748,
-    33749,
-    33750,
-    33751,
-    33752,
-    33753,
-    33754,
-    33755,
-    33756,
-    33757,
-    33758,
-    991,
-    33762,
-    33763,
-    33764,
-    33765,
-    33766,
-    33767,
-    33768,
-    33769,
-    33770,
-    33771,
-    33772,
-    33773,
-    33774,
-    1007,
-    33778,
-    33779,
-    33780,
-    33781,
-    33782,
-    33783,
-    33784,
-    33785,
-    33786,
-    33787,
-    33788,
-    33789,
-    33790,
-    33791,
-    33792,
-    33793,
-    33794,
-    33795,
-    33796,
-    33797,
-    33798,
-    33799,
-    33800,
-    33801,
-    33802,
-    33803,
-    33804,
-    33805,
-    33806,
-    33807,
-    33808,
-    33809,
-    33810,
-    33811,
-    33812,
-    33813,
-    33814,
-    33815,
-    33816,
-    33817,
-    33818,
-    33819,
-    33820,
-    33821,
-    33822,
-    33823,
-    33824,
-    33825,
-    33826,
-    33827,
-    33828,
-    33829,
-    33830,
-    33831,
-    33832,
-    33833,
-    33834,
-    33835,
-    33836,
-    33837,
-    1070,
-    33840,
-    33841,
-    33842,
-    33843,
-    33844,
-    33845,
-    33846,
-    33847,
-    33848,
-    33849,
-    33850,
-    33851,
-    33852,
-    33853,
-    33854,
-    33855,
-    33856,
-    33857,
-    33858,
-    33859,
-    33860,
-    33861,
-    33862,
-    33863,
-    33864,
-    33865,
-    33866,
-    1099,
-    33869,
-    33870,
-    33871,
-    33872,
-    33873,
-    33874,
-    1107,
-    33878,
-    33879,
-    33880,
-    33881,
-    33882,
-    33883,
-    33884,
-    33885,
-    33886,
-    33887,
-    33888,
-    33889,
-    33890,
-    1123,
-    33894,
-    33895,
-    33896,
-    1129,
-    33900,
-    33901,
-    33902,
-    33903,
-    33904,
-    1137,
-    33908,
-    33909,
-    33910,
-    33911,
-    1144,
-    33914,
-    33915,
-    33916,
-    33917,
-    33918,
-    33919,
-    33920,
-    33921,
-    33922,
-    33923,
-    33924,
-    33925,
-    33926,
-    33927,
-    33928,
-    33929,
-    33930,
-    33931,
-    33932,
-    33933,
-    33934,
-    1167,
-    33942,
-    33943,
-    33944,
-    33945,
-    33946,
-    33947,
-    33948,
-    33949,
-    33950,
-    33951,
-    33952,
-    33953,
-    33954,
-    33955,
-    33956,
-    33957,
-    33958,
-    33959,
-    33960,
-    33961,
-    33962,
-    33963,
-    33964,
-    33965,
-    33966,
-    33967,
-    33968,
-    33969,
-    33970,
-    33971,
-    33972,
-    33973,
-    33974,
-    33975,
-    33976,
-    33977,
-    33978,
-    1211,
-    33982,
-    33983,
-    33984,
-    33985,
-    33986,
-    33987,
-    33988,
-    33989,
-    33990,
-    33991,
-    33992,
-    1225,
-    33996,
-    33997,
-    33998,
-    33999,
-    34000,
-    34001,
-    34002,
-    34003,
-    34004,
-    34005,
-    34006,
-    34007,
-    34008,
-    34009,
-    34010,
-    34011,
-    1244,
-    34018,
-    34019,
-    34020,
-    34021,
-    34022,
-    34023,
-    34024,
-    34025,
-    34026,
-    34027,
-    34028,
-    34029,
-    34030,
-    34031,
-    34032,
-    34033,
-    34034,
-    34035,
-    34036,
-    34037,
-    34038,
-    34039,
-    34040,
-    34041,
-    34042,
-    34043,
-    34044,
-    34045,
-    34046,
-    34047,
-    34048,
-    34049,
-    34050,
-    34051,
-    34052,
-    34053,
-    34054,
-    34055,
-    34056,
-    34057,
-    34058,
-    34059,
-    34060,
-    34061,
-    34062,
-    34063,
-    34064,
-    34065,
-    34066,
-    34067,
-    34068,
-    34069,
-    34070,
-    34071,
-    34072,
-    34073,
-    34074,
-    34075,
-    34076,
-    34077,
-    34078,
-    34079,
-    34080,
-    34081,
-    34082,
-    34083,
-    34084,
-    34085,
-    34086,
-    34087,
-    34088,
-    34089,
-    34090,
-    34091,
-    34092,
-    34093,
-    34094,
-    34095,
-    34096,
-    34097,
-    34098,
-    34099,
-    34100,
-    34101,
-    34102,
-    1335,
-    34107,
-    1340,
-    34111,
-    1344,
-    34155,
-    1388,
-    34159,
-    34160,
-    34161,
-    34162,
-    34163,
-    1396,
-    34227,
-    34228,
-    34229,
-    1462,
-    34267,
-    34268,
-    34269,
-    1502,
-    34419,
-    1652,
-    34422,
-    1655,
-    34520,
-    1753,
-    34529,
-    34530,
-    1763,
-    34537,
-    34538,
-    1771,
-    34547,
-    1780,
-    34556,
-    34557,
-    1790,
-    34564,
-    34565,
-    1798,
-    34574,
-    1807,
-    34597,
-    1830,
-    34646,
-    1879,
-    34677,
-    34678,
-    34679,
-    34680,
-    1913,
-    34689,
-    34690,
-    34691,
-    1924,
-    34700,
-    1933,
-    34715,
-    34716,
-    34717,
-    34718,
-    1951,
-    34721,
-    34722,
-    34723,
-    34724,
-    34725,
-    34726,
-    34727,
-    34728,
-    1961,
-    34734,
-    1967,
-    34738,
-    1971,
-    34742,
-    34743,
-    34744,
-    1977,
-    34747,
-    34748,
-    34749,
-    1982,
-    34752,
-    1985,
-    34794,
-    34795,
-    34796,
-    34797,
-    34798,
-    34799,
-    34800,
-    2033,
-    34812,
-    34813,
-    34814,
-    34815,
-    2048,
-    34819,
-    2052,
-    34822,
-    34823,
-    2056,
-    34839,
-    2072,
-    34852,
-    2085,
-    34855,
-    34856,
-    2089,
-    34860,
-    2093,
-    34909,
-    34910,
-    34911,
-    34912,
-    34913,
-    34914,
-    34915,
-    2148,
-    34921,
-    34922,
-    34923,
-    34924,
-    34925,
-    2158,
-    34928,
-    34929,
-    34930,
-    34931,
-    2164,
-    34972,
-    2205,
-    35052,
-    35053,
-    35054,
-    2287,
-    35058,
-    35059,
-    35060,
-    35061,
-    35062,
-    35063,
-    35064,
-    2297,
-    35113,
-    2346,
-    35120,
-    2353,
-    35133,
-    35134,
-    35135,
-    2368,
-    35239,
-    2472,
-    35243,
-    2476,
-    35246,
-    35247,
-    2480,
-    35250,
-    35251,
-    35252,
-    35253,
-    35254,
-    2487,
-    35257,
-    35258,
-    35259,
-    35260,
-    35261,
-    35262,
-    35263,
-    35264,
-    35265,
-    35266,
-    35267,
-    35268,
-    35269,
-    35270,
-    35271,
-    35272,
-    35273,
-    35274,
-    35275,
-    35276,
-    35277,
-    35278,
-    35279,
-    35280,
-    35281,
-    35282,
-    35283,
-    35284,
-    2517,
-    35499,
-    2732,
-    35503,
-    2736,
-    35509,
-    35510,
-    35511,
-    35512,
-    35513,
-    2746,
-    35516,
-    35517,
-    35518,
-    35519,
-    35520,
-    35521,
-    2754,
-    35618,
-    2851,
-    35633,
-    35634,
-    35635,
-    2868,
-    35708,
-    2941,
-    36141,
-    36142,
-    36143,
-    36144,
-    36145,
-    36146,
-    36147,
-    36148,
-    3381,
-    36194,
-    3427,
-    36225,
-    36226,
-    36227,
-    3460,
-    36241,
-    3474,
-    36305,
-    3538,
-    36320,
-    3553,
-    36324,
-    3557,
-    36328,
-    3561,
-    36371,
-    3604,
-    36381,
-    36382,
-    36383,
-    3616,
-    36386,
-    36387,
-    36388,
-    36389,
-    36390,
-    36391,
-    36392,
-    36393,
-    36394,
-    36395,
-    36396,
-    36397,
-    36398,
-    36399,
-    36400,
-    36401,
-    36402,
-    36403,
-    36404,
-    36405,
-    36406,
-    36407,
-    36408,
-    36409,
-    36410,
-    36411,
-    36412,
-    36413,
-    36414,
-    36415,
-    36416,
-    36417,
-    36418,
-    36419,
-    36420,
-    36421,
-    36422,
-    36423,
-    36424,
-    36425,
-    36426,
-    3659,
-    36431,
-    36432,
-    36433,
-    36434,
-    3667,
-    36515,
-    36516,
-    36517,
-    36518,
-    36519,
-    36520,
-    36521,
-    36522,
-    36523,
-    36524,
-    3757,
-    36532,
-    3765,
-    36794,
-    4027,
-    36798,
-    4031,
-    36813,
-    4046,
-    36816,
-    4049,
-    36868,
-    4101,
-    36884,
-    4117,
-    36991,
-    4224,
-    36997,
-    36998,
-    4231,
-    37004,
-    4237,
-    37056,
-    37057,
-    37058,
-    37059,
-    37060,
-    37061,
-    37062,
-    37063,
-    37064,
-    37065,
-    37066,
-    37067,
-    37068,
-    37069,
-    37070,
-    37071,
-    37072,
-    37073,
-    37074,
-    37075,
-    37076,
-    37077,
-    37078,
-    37079,
-    37080,
-    37081,
-    37082,
-    37083,
-    37084,
-    37085,
-    37086,
-    37087,
-    37088,
-    37089,
-    37090,
-    37091,
-    37092,
-    37093,
-    37094,
-    37095,
-    37096,
-    37097,
-    37098,
-    37099,
-    37100,
-    37101,
-    37102,
-    37103,
-    37104,
-    37105,
-    37106,
-    4339,
-    37423,
-    37424,
-    37425,
-    37426,
-    37427,
-    4660,
-    37433,
-    4666,
-    37439,
-    37440,
-    37441,
-    37442,
-    37443,
-    37444,
-    37445,
-    37446,
-    37447,
-    37448,
-    37449,
-    37450,
-    4683,
-    37454,
-    4687,
-    37459,
-    4692,
-    37465,
-    37466,
-    37467,
-    4700,
-    37475,
-    4708,
-    37481,
-    4714,
-    37485,
-    4718,
-    37528,
-    4761,
-    37543,
-    37544,
-    4777,
-    37554,
-    37555,
-    4788,
-    37559,
-    4792,
-    37576,
-    4809,
-    37579,
-    37580,
-    4813,
-    37583,
-    4816,
-    37608,
-    4841,
-    37626,
-    37627,
-    37628,
-    37629,
-    37630,
-    37631,
-    37632,
-    37633,
-    37634,
-    37635,
-    37636,
-    37637,
-    37638,
-    37639,
-    37640,
-    37641,
-    37642,
-    37643,
-    37644,
-    37645,
-    37646,
-    37647,
-    37648,
-    37649,
-    37650,
-    37651,
-    37652,
-    37653,
-    37654,
-    37655,
-    37656,
-    37657,
-    37658,
-    37659,
-    37660,
-    37661,
-    37662,
-    37663,
-    37664,
-    37665,
-    4898,
-    37858,
-    5091,
-    37865,
-    5098,
-    37872,
-    5105,
-    37879,
-    5112,
-    37883,
-    5116,
-    37899,
-    37900,
-    37901,
-    37902,
-    37903,
-    37904,
-    37905,
-    37906,
-    37907,
-    37908,
-    37909,
-    37910,
-    37911,
-    37912,
-    37913,
-    37914,
-    37915,
-    37916,
-    37917,
-    37918,
-    37919,
-    37920,
-    37921,
-    37922,
-    37923,
-    37924,
-    37925,
-    37926,
-    37927,
-    37928,
-    37929,
-    37930,
-    37931,
-    37932,
-    37933,
-    37934,
-    37935,
-    37936,
-    37937,
-    37938,
-    37939,
-    37940,
-    37941,
-    37942,
-    37943,
-    5176,
-    37984,
-    37985,
-    37986,
-    37987,
-    5220,
-    38024,
-    38025,
-    38026,
-    38027,
-    38028,
-    38029,
-    38030,
-    38031,
-    38032,
-    38033,
-    38034,
-    38035,
-    38036,
-    38037,
-    38038,
-    38039,
-    38040,
-    5273,
-    38043,
-    38044,
-    38045,
-    38046,
-    38047,
-    38048,
-    38049,
-    38050,
-    38051,
-    38052,
-    38053,
-    38054,
-    38055,
-    38056,
-    38057,
-    38058,
-    38059,
-    38060,
-    38061,
-    38062,
-    38063,
-    38064,
-    38065,
-    38066,
-    38067,
-    38068,
-    38069,
-    38070,
-    38071,
-    38072,
-    38073,
-    38074,
-    38075,
-    38076,
-    38077,
-    38078,
-    38079,
-    38080,
-    38081,
-    38082,
-    38083,
-    38084,
-    38085,
-    38086,
-    38087,
-    38088,
-    38089,
-    38090,
-    38091,
-    38092,
-    38093,
-    38094,
-    38095,
-    38096,
-    38097,
-    38098,
-    38099,
-    38100,
-    38101,
-    38102,
-    38103,
-    38104,
-    5337,
-    38156,
-    38157,
-    38158,
-    38159,
-    38160,
-    38161,
-    38162,
-    38163,
-    38164,
-    38165,
-    38166,
-    38167,
-    38168,
-    38169,
-    38170,
-    38171,
-    38172,
-    38173,
-    38174,
-    38175,
-    38176,
-    38177,
-    38178,
-    38179,
-    38180,
-    38181,
-    38182,
-    38183,
-    38184,
-    38185,
-    38186,
-    38187,
-    38188,
-    38189,
-    38190,
-    38191,
-    38192,
-    38193,
-    38194,
-    38195,
-    38196,
-    38197,
-    38198,
-    38199,
-    38200,
-    38201,
-    38202,
-    38203,
-    38204,
-    38205,
-    5438,
-    38209,
-    38210,
-    38211,
-    38212,
-    38213,
-    38214,
-    38215,
-    38216,
-    38217,
-    38218,
-    38219,
-    38220,
-    38221,
-    38222,
-    38223,
-    38224,
-    38225,
-    38226,
-    38227,
-    38228,
-    38229,
-    38230,
-    38231,
-    38232,
-    38233,
-    38234,
-    38235,
-    38236,
-    38237,
-    38238,
-    38239,
-    38240,
-    38241,
-    38242,
-    38243,
-    38244,
-    38245,
-    38246,
-    38247,
-    38248,
-    38249,
-    38250,
-    38251,
-    38252,
-    38253,
-    38254,
-    38255,
-    38256,
-    38257,
-    38258,
-    38259,
-    38260,
-    38261,
-    38262,
-    38263,
-    38264,
-    38265,
-    38266,
-    38267,
-    38268,
-    38269,
-    38270,
-    38271,
-    38272,
-    38273,
-    38274,
-    38275,
-    38276,
-    38277,
-    38278,
-    5511,
-    38311,
-    38312,
-    38313,
-    38314,
-    38315,
-    38316,
-    38317,
-    38318,
-    38319,
-    38320,
-    38321,
-    38322,
-    38323,
-    38324,
-    38325,
-    38326,
-    38327,
-    38328,
-    38329,
-    38330,
-    38331,
-    38332,
-    38333,
-    38334,
-    38335,
-    38336,
-    38337,
-    38338,
-    38339,
-    38340,
-    38341,
-    38342,
-    38343,
-    38344,
-    38345,
-    38346,
-    38347,
-    38348,
-    38349,
-    38350,
-    38351,
-    38352,
-    38353,
-    38354,
-    38355,
-    38356,
-    38357,
-    38358,
-    38359,
-    38360,
-    5593,
-    38363,
-    38364,
-    38365,
-    38366,
-    38367,
-    38368,
-    38369,
-    38370,
-    38371,
-    38372,
-    38373,
-    38374,
-    38375,
-    38376,
-    38377,
-    38378,
-    38379,
-    38380,
-    38381,
-    38382,
-    38383,
-    38384,
-    38385,
-    38386,
-    38387,
-    38388,
-    38389,
-    38390,
-    38391,
-    38392,
-    38393,
-    38394,
-    38395,
-    38396,
-    38397,
-    38398,
-    38399,
-    38400,
-    38401,
-    38402,
-    38403,
-    38404,
-    38405,
-    38406,
-    38407,
-    38408,
-    38409,
-    38410,
-    38411,
-    38412,
-    38413,
-    38414,
-    38415,
-    38416,
-    38417,
-    38418,
-    38419,
-    38420,
-    5653,
-    38453,
-    38454,
-    38455,
-    38456,
-    38457,
-    38458,
-    38459,
-    38460,
-    38461,
-    38462,
-    38463,
-    38464,
-    38465,
-    38466,
-    38467,
-    38468,
-    38469,
-    38470,
-    38471,
-    38472,
-    38473,
-    38474,
-    38475,
-    38476,
-    38477,
-    38478,
-    38479,
-    38480,
-    38481,
-    38482,
-    38483,
-    38484,
-    38485,
-    38486,
-    38487,
-    38488,
-    38489,
-    38490,
-    38491,
-    38492,
-    38493,
-    38494,
-    5727,
-    38502,
-    38503,
-    38504,
-    5737,
-    38511,
-    38512,
-    38513,
-    38514,
-    38515,
-    38516,
-    38517,
-    38518,
-    38519,
-    38520,
-    5753,
-    38681,
-    38682,
-    38683,
-    5916,
-    38686,
-    5919,
-    38785,
-    6018,
-    38844,
-    6077,
-    39193,
-    6426,
-    39237,
-    6470,
-    39294,
-    6527,
-    39351,
-    6584,
-    39408,
-    6641,
-    39465,
-    6698,
-    39479,
-    39480,
-    6713,
-    39531,
-    39532,
-    39533,
-    39534,
-    39535,
-    39536,
-    39537,
-    39538,
-    39539,
-    39540,
-    39541,
-    39542,
-    39543,
-    39544,
-    39545,
-    39546,
-    39547,
-    39548,
-    39549,
-    39550,
-    39551,
-    39552,
-    39553,
-    39554,
-    39555,
-    39556,
-    39557,
-    39558,
-    39559,
-    39560,
-    39561,
-    39562,
-    6795,
-    39597,
-    39598,
-    39599,
-    39600,
-    39601,
-    39602,
-    39603,
-    39604,
-    39605,
-    39606,
-    6839,
-    39644,
-    6877,
-    39666,
-    39667,
-    39668,
-    6901,
-    39683,
-    6916,
-    39698,
-    6931,
-    39752,
-    6985,
-    39780,
-    39781,
-    39782,
-    39783,
-    39784,
-    39785,
-    39786,
-    39787,
-    39788,
-    39789,
-    39790,
-    39791,
-    39792,
-    39793,
-    39794,
-    7027,
-    39805,
-    7038,
-    39870,
-    7103,
-    39874,
-    39875,
-    39876,
-    39877,
-    39878,
-    7111,
-    39882,
-    7115,
-    39927,
-    7160,
-    39937,
-    7170,
-    39940,
-    39941,
-    39942,
-    39943,
-    39944,
-    39945,
-    39946,
-    39947,
-    39948,
-    39949,
-    39950,
-    39951,
-    39952,
-    39953,
-    39954,
-    39955,
-    39956,
-    39957,
-    39958,
-    39959,
-    39960,
-    39961,
-    39962,
-    39963,
-    39964,
-    39965,
-    39966,
-    39967,
-    39968,
-    39969,
-    39970,
-    39971,
-    39972,
-    39973,
-    39974,
-    39975,
-    39976,
-    39977,
-    39978,
-    39979,
-    39980,
-    39981,
-    39982,
-    39983,
-    39984,
-    39985,
-    39986,
-    39987,
-    39988,
-    39989,
-    39990,
-    39991,
-    39992,
-    7225,
-    40003,
-    40004,
-    40005,
-    40006,
-    40007,
-    40008,
-    40009,
-    40010,
-    40011,
-    40012,
-    40013,
-    7246,
-    40063,
-    7296,
-    40081,
-    7314,
-    40117,
-    7350,
-    40155,
-    40156,
-    40157,
-    7390,
-    40308,
-    7541,
-    40333,
-    7566,
-    40355,
-    7588,
-    40515,
-    7748,
-    40546,
-    40547,
-    40548,
-    40549,
-    40550,
+static TABLE: &[(char, u16)] = &[
+    ('\u{0}', 32768),
+    ('\u{2d}', 32769),
+    ('\u{2f}', 32770),
+    ('\u{30}', 32771),
+    ('\u{3a}', 32772),
+    ('\u{41}', 5),
+    ('\u{5b}', 32799),
+    ('\u{61}', 32800),
+    ('\u{7b}', 32801),
+    ('\u{80}', 32802),
+    ('\u{a0}', 32803),
+    ('\u{a1}', 32804),
+    ('\u{a8}', 37),
+    ('\u{ab}', 32808),
+    ('\u{ad}', 41),
+    ('\u{b0}', 32812),
+    ('\u{b2}', 45),
+    ('\u{b6}', 32817),
+    ('\u{b8}', 50),
+    ('\u{e0}', 32858),
+    ('\u{100}', 91),
+    ('\u{132}', 32909),
+    ('\u{134}', 142),
+    ('\u{137}', 32913),
+    ('\u{139}', 146),
+    ('\u{13f}', 32920),
+    ('\u{141}', 153),
+    ('\u{18c}', 32996),
+    ('\u{18e}', 229),
+    ('\u{199}', 33008),
+    ('\u{19c}', 241),
+    ('\u{1aa}', 33023),
+    ('\u{1ac}', 256),
+    ('\u{1b9}', 33037),
+    ('\u{1bc}', 33038),
+    ('\u{1bd}', 33039),
+    ('\u{1c4}', 33040),
+    ('\u{1c7}', 33041),
+    ('\u{1ca}', 33042),
+    ('\u{1cd}', 275),
+    ('\u{1dc}', 33058),
+    ('\u{1de}', 291),
+    ('\u{1ef}', 33076),
+    ('\u{1f1}', 33077),
+    ('\u{1f4}', 310),
+    ('\u{233}', 33141),
+    ('\u{23a}', 374),
+    ('\u{23f}', 33147),
+    ('\u{241}', 380),
+    ('\u{24f}', 33162),
+    ('\u{2b0}', 395),
+    ('\u{2b9}', 33172),
+    ('\u{2d8}', 405),
+    ('\u{2de}', 33179),
+    ('\u{2e0}', 412),
+    ('\u{2e5}', 33185),
+    ('\u{340}', 418),
+    ('\u{346}', 33192),
+    ('\u{34f}', 33193),
+    ('\u{350}', 33194),
+    ('\u{370}', 427),
+    ('\u{378}', 33203),
+    ('\u{37a}', 33204),
+    ('\u{37b}', 33205),
+    ('\u{37e}', 438),
+    ('\u{380}', 33208),
+    ('\u{384}', 441),
+    ('\u{3ac}', 33249),
+    ('\u{3c2}', 33250),
+    ('\u{3c3}', 33251),
+    ('\u{3cf}', 484),
+    ('\u{3fb}', 33296),
+    ('\u{3fd}', 529),
+    ('\u{430}', 33348),
+    ('\u{460}', 581),
+    ('\u{481}', 33382),
+    ('\u{48a}', 615),
+    ('\u{4ce}', 33451),
+    ('\u{4d0}', 684),
+    ('\u{557}', 33587),
+    ('\u{559}', 33588),
+    ('\u{587}', 33589),
+    ('\u{588}', 33590),
+    ('\u{58b}', 33591),
+    ('\u{58d}', 33592),
+    ('\u{590}', 33593),
+    ('\u{591}', 33594),
+    ('\u{5c8}', 33595),
+    ('\u{5d0}', 33596),
+    ('\u{5eb}', 33597),
+    ('\u{5ef}', 33598),
+    ('\u{5f5}', 33599),
+    ('\u{606}', 33600),
+    ('\u{61c}', 33601),
+    ('\u{61e}', 33602),
+    ('\u{675}', 835),
+    ('\u{679}', 33607),
+    ('\u{6dd}', 33608),
+    ('\u{6de}', 33609),
+    ('\u{70e}', 33610),
+    ('\u{710}', 33611),
+    ('\u{74b}', 33612),
+    ('\u{74d}', 33613),
+    ('\u{7b2}', 33614),
+    ('\u{7c0}', 33615),
+    ('\u{7fb}', 33616),
+    ('\u{7fd}', 33617),
+    ('\u{82e}', 33618),
+    ('\u{830}', 33619),
+    ('\u{83f}', 33620),
+    ('\u{840}', 33621),
+    ('\u{85c}', 33622),
+    ('\u{85e}', 855),
+    ('\u{860}', 33625),
+    ('\u{86b}', 33626),
+    ('\u{8a0}', 33627),
+    ('\u{8b5}', 33628),
+    ('\u{8b6}', 33629),
+    ('\u{8c8}', 33630),
+    ('\u{8d3}', 33631),
+    ('\u{8e2}', 33632),
+    ('\u{8e3}', 33633),
+    ('\u{958}', 866),
+    ('\u{960}', 33642),
+    ('\u{984}', 33643),
+    ('\u{985}', 33644),
+    ('\u{98d}', 33645),
+    ('\u{98f}', 33646),
+    ('\u{991}', 33647),
+    ('\u{993}', 33648),
+    ('\u{9a9}', 33649),
+    ('\u{9aa}', 33650),
+    ('\u{9b1}', 883),
+    ('\u{9b3}', 33653),
+    ('\u{9b6}', 33654),
+    ('\u{9ba}', 33655),
+    ('\u{9bc}', 33656),
+    ('\u{9c5}', 33657),
+    ('\u{9c7}', 33658),
+    ('\u{9c9}', 33659),
+    ('\u{9cb}', 33660),
+    ('\u{9cf}', 33661),
+    ('\u{9d7}', 33662),
+    ('\u{9d8}', 33663),
+    ('\u{9dc}', 896),
+    ('\u{9e0}', 33668),
+    ('\u{9e4}', 33669),
+    ('\u{9e6}', 33670),
+    ('\u{9ff}', 33671),
+    ('\u{a01}', 33672),
+    ('\u{a04}', 33673),
+    ('\u{a05}', 33674),
+    ('\u{a0b}', 33675),
+    ('\u{a0f}', 33676),
+    ('\u{a11}', 33677),
+    ('\u{a13}', 33678),
+    ('\u{a29}', 33679),
+    ('\u{a2a}', 33680),
+    ('\u{a31}', 913),
+    ('\u{a38}', 33688),
+    ('\u{a3a}', 33689),
+    ('\u{a3c}', 922),
+    ('\u{a3e}', 33692),
+    ('\u{a43}', 33693),
+    ('\u{a47}', 33694),
+    ('\u{a49}', 33695),
+    ('\u{a4b}', 33696),
+    ('\u{a4e}', 33697),
+    ('\u{a51}', 33698),
+    ('\u{a52}', 33699),
+    ('\u{a59}', 932),
+    ('\u{a5f}', 33706),
+    ('\u{a66}', 33707),
+    ('\u{a77}', 33708),
+    ('\u{a81}', 33709),
+    ('\u{a84}', 33710),
+    ('\u{a85}', 33711),
+    ('\u{a8e}', 33712),
+    ('\u{a8f}', 33713),
+    ('\u{a92}', 33714),
+    ('\u{a93}', 33715),
+    ('\u{aa9}', 33716),
+    ('\u{aaa}', 33717),
+    ('\u{ab1}', 33718),
+    ('\u{ab2}', 33719),
+    ('\u{ab4}', 33720),
+    ('\u{ab5}', 33721),
+    ('\u{aba}', 33722),
+    ('\u{abc}', 33723),
+    ('\u{ac6}', 33724),
+    ('\u{ac7}', 33725),
+    ('\u{aca}', 33726),
+    ('\u{acb}', 33727),
+    ('\u{ace}', 33728),
+    ('\u{ad0}', 33729),
+    ('\u{ad1}', 33730),
+    ('\u{ae0}', 33731),
+    ('\u{ae4}', 33732),
+    ('\u{ae6}', 33733),
+    ('\u{af2}', 33734),
+    ('\u{af9}', 33735),
+    ('\u{b00}', 33736),
+    ('\u{b01}', 33737),
+    ('\u{b04}', 33738),
+    ('\u{b05}', 33739),
+    ('\u{b0d}', 33740),
+    ('\u{b0f}', 33741),
+    ('\u{b11}', 33742),
+    ('\u{b13}', 33743),
+    ('\u{b29}', 33744),
+    ('\u{b2a}', 33745),
+    ('\u{b31}', 33746),
+    ('\u{b32}', 33747),
+    ('\u{b34}', 33748),
+    ('\u{b35}', 33749),
+    ('\u{b3a}', 33750),
+    ('\u{b3c}', 33751),
+    ('\u{b45}', 33752),
+    ('\u{b47}', 33753),
+    ('\u{b49}', 33754),
+    ('\u{b4b}', 33755),
+    ('\u{b4e}', 33756),
+    ('\u{b55}', 33757),
+    ('\u{b58}', 33758),
+    ('\u{b5c}', 991),
+    ('\u{b5f}', 33762),
+    ('\u{b64}', 33763),
+    ('\u{b66}', 33764),
+    ('\u{b78}', 33765),
+    ('\u{b82}', 33766),
+    ('\u{b84}', 33767),
+    ('\u{b85}', 33768),
+    ('\u{b8b}', 33769),
+    ('\u{b8e}', 33770),
+    ('\u{b91}', 33771),
+    ('\u{b92}', 33772),
+    ('\u{b96}', 33773),
+    ('\u{b99}', 33774),
+    ('\u{b9b}', 1007),
+    ('\u{b9e}', 33778),
+    ('\u{ba0}', 33779),
+    ('\u{ba3}', 33780),
+    ('\u{ba5}', 33781),
+    ('\u{ba8}', 33782),
+    ('\u{bab}', 33783),
+    ('\u{bae}', 33784),
+    ('\u{bba}', 33785),
+    ('\u{bbe}', 33786),
+    ('\u{bc3}', 33787),
+    ('\u{bc6}', 33788),
+    ('\u{bc9}', 33789),
+    ('\u{bca}', 33790),
+    ('\u{bce}', 33791),
+    ('\u{bd0}', 33792),
+    ('\u{bd1}', 33793),
+    ('\u{bd7}', 33794),
+    ('\u{bd8}', 33795),
+    ('\u{be6}', 33796),
+    ('\u{bfb}', 33797),
+    ('\u{c00}', 33798),
+    ('\u{c0d}', 33799),
+    ('\u{c0e}', 33800),
+    ('\u{c11}', 33801),
+    ('\u{c12}', 33802),
+    ('\u{c29}', 33803),
+    ('\u{c2a}', 33804),
+    ('\u{c3a}', 33805),
+    ('\u{c3d}', 33806),
+    ('\u{c45}', 33807),
+    ('\u{c46}', 33808),
+    ('\u{c49}', 33809),
+    ('\u{c4a}', 33810),
+    ('\u{c4e}', 33811),
+    ('\u{c55}', 33812),
+    ('\u{c57}', 33813),
+    ('\u{c58}', 33814),
+    ('\u{c5b}', 33815),
+    ('\u{c60}', 33816),
+    ('\u{c64}', 33817),
+    ('\u{c66}', 33818),
+    ('\u{c70}', 33819),
+    ('\u{c77}', 33820),
+    ('\u{c8d}', 33821),
+    ('\u{c8e}', 33822),
+    ('\u{c91}', 33823),
+    ('\u{c92}', 33824),
+    ('\u{ca9}', 33825),
+    ('\u{caa}', 33826),
+    ('\u{cb4}', 33827),
+    ('\u{cb5}', 33828),
+    ('\u{cba}', 33829),
+    ('\u{cbc}', 33830),
+    ('\u{cc5}', 33831),
+    ('\u{cc6}', 33832),
+    ('\u{cc9}', 33833),
+    ('\u{cca}', 33834),
+    ('\u{cce}', 33835),
+    ('\u{cd5}', 33836),
+    ('\u{cd7}', 33837),
+    ('\u{cde}', 1070),
+    ('\u{ce0}', 33840),
+    ('\u{ce4}', 33841),
+    ('\u{ce6}', 33842),
+    ('\u{cf0}', 33843),
+    ('\u{cf1}', 33844),
+    ('\u{cf3}', 33845),
+    ('\u{d00}', 33846),
+    ('\u{d0d}', 33847),
+    ('\u{d0e}', 33848),
+    ('\u{d11}', 33849),
+    ('\u{d12}', 33850),
+    ('\u{d45}', 33851),
+    ('\u{d46}', 33852),
+    ('\u{d49}', 33853),
+    ('\u{d4a}', 33854),
+    ('\u{d50}', 33855),
+    ('\u{d54}', 33856),
+    ('\u{d64}', 33857),
+    ('\u{d66}', 33858),
+    ('\u{d80}', 33859),
+    ('\u{d81}', 33860),
+    ('\u{d84}', 33861),
+    ('\u{d85}', 33862),
+    ('\u{d97}', 33863),
+    ('\u{d9a}', 33864),
+    ('\u{db2}', 33865),
+    ('\u{db3}', 33866),
+    ('\u{dbc}', 1099),
+    ('\u{dbe}', 33869),
+    ('\u{dc0}', 33870),
+    ('\u{dc7}', 33871),
+    ('\u{dca}', 33872),
+    ('\u{dcb}', 33873),
+    ('\u{dcf}', 33874),
+    ('\u{dd5}', 1107),
+    ('\u{dd8}', 33878),
+    ('\u{de0}', 33879),
+    ('\u{de6}', 33880),
+    ('\u{df0}', 33881),
+    ('\u{df2}', 33882),
+    ('\u{df5}', 33883),
+    ('\u{e01}', 33884),
+    ('\u{e33}', 33885),
+    ('\u{e34}', 33886),
+    ('\u{e3b}', 33887),
+    ('\u{e3f}', 33888),
+    ('\u{e5c}', 33889),
+    ('\u{e81}', 33890),
+    ('\u{e83}', 1123),
+    ('\u{e86}', 33894),
+    ('\u{e8b}', 33895),
+    ('\u{e8c}', 33896),
+    ('\u{ea4}', 1129),
+    ('\u{ea7}', 33900),
+    ('\u{eb3}', 33901),
+    ('\u{eb4}', 33902),
+    ('\u{ebe}', 33903),
+    ('\u{ec0}', 33904),
+    ('\u{ec5}', 1137),
+    ('\u{ec8}', 33908),
+    ('\u{ece}', 33909),
+    ('\u{ed0}', 33910),
+    ('\u{eda}', 33911),
+    ('\u{edc}', 1144),
+    ('\u{ede}', 33914),
+    ('\u{ee0}', 33915),
+    ('\u{f00}', 33916),
+    ('\u{f0c}', 33917),
+    ('\u{f0d}', 33918),
+    ('\u{f43}', 33919),
+    ('\u{f44}', 33920),
+    ('\u{f48}', 33921),
+    ('\u{f49}', 33922),
+    ('\u{f4d}', 33923),
+    ('\u{f4e}', 33924),
+    ('\u{f52}', 33925),
+    ('\u{f53}', 33926),
+    ('\u{f57}', 33927),
+    ('\u{f58}', 33928),
+    ('\u{f5c}', 33929),
+    ('\u{f5d}', 33930),
+    ('\u{f69}', 33931),
+    ('\u{f6a}', 33932),
+    ('\u{f6d}', 33933),
+    ('\u{f71}', 33934),
+    ('\u{f73}', 1167),
+    ('\u{f7a}', 33942),
+    ('\u{f81}', 33943),
+    ('\u{f82}', 33944),
+    ('\u{f93}', 33945),
+    ('\u{f94}', 33946),
+    ('\u{f98}', 33947),
+    ('\u{f99}', 33948),
+    ('\u{f9d}', 33949),
+    ('\u{f9e}', 33950),
+    ('\u{fa2}', 33951),
+    ('\u{fa3}', 33952),
+    ('\u{fa7}', 33953),
+    ('\u{fa8}', 33954),
+    ('\u{fac}', 33955),
+    ('\u{fad}', 33956),
+    ('\u{fb9}', 33957),
+    ('\u{fba}', 33958),
+    ('\u{fbd}', 33959),
+    ('\u{fbe}', 33960),
+    ('\u{fcd}', 33961),
+    ('\u{fce}', 33962),
+    ('\u{fdb}', 33963),
+    ('\u{1000}', 33964),
+    ('\u{10a0}', 33965),
+    ('\u{10c7}', 33966),
+    ('\u{10c8}', 33967),
+    ('\u{10cd}', 33968),
+    ('\u{10ce}', 33969),
+    ('\u{10d0}', 33970),
+    ('\u{10fc}', 33971),
+    ('\u{10fd}', 33972),
+    ('\u{115f}', 33973),
+    ('\u{1161}', 33974),
+    ('\u{1249}', 33975),
+    ('\u{124a}', 33976),
+    ('\u{124e}', 33977),
+    ('\u{1250}', 33978),
+    ('\u{1257}', 1211),
+    ('\u{125a}', 33982),
+    ('\u{125e}', 33983),
+    ('\u{1260}', 33984),
+    ('\u{1289}', 33985),
+    ('\u{128a}', 33986),
+    ('\u{128e}', 33987),
+    ('\u{1290}', 33988),
+    ('\u{12b1}', 33989),
+    ('\u{12b2}', 33990),
+    ('\u{12b6}', 33991),
+    ('\u{12b8}', 33992),
+    ('\u{12bf}', 1225),
+    ('\u{12c2}', 33996),
+    ('\u{12c6}', 33997),
+    ('\u{12c8}', 33998),
+    ('\u{12d7}', 33999),
+    ('\u{12d8}', 34000),
+    ('\u{1311}', 34001),
+    ('\u{1312}', 34002),
+    ('\u{1316}', 34003),
+    ('\u{1318}', 34004),
+    ('\u{135b}', 34005),
+    ('\u{135d}', 34006),
+    ('\u{137d}', 34007),
+    ('\u{1380}', 34008),
+    ('\u{139a}', 34009),
+    ('\u{13a0}', 34010),
+    ('\u{13f6}', 34011),
+    ('\u{13f8}', 1244),
+    ('\u{13fe}', 34018),
+    ('\u{1400}', 34019),
+    ('\u{1680}', 34020),
+    ('\u{1681}', 34021),
+    ('\u{169d}', 34022),
+    ('\u{16a0}', 34023),
+    ('\u{16f9}', 34024),
+    ('\u{1700}', 34025),
+    ('\u{170d}', 34026),
+    ('\u{170e}', 34027),
+    ('\u{1715}', 34028),
+    ('\u{1720}', 34029),
+    ('\u{1737}', 34030),
+    ('\u{1740}', 34031),
+    ('\u{1754}', 34032),
+    ('\u{1760}', 34033),
+    ('\u{176d}', 34034),
+    ('\u{176e}', 34035),
+    ('\u{1771}', 34036),
+    ('\u{1772}', 34037),
+    ('\u{1774}', 34038),
+    ('\u{1780}', 34039),
+    ('\u{17b4}', 34040),
+    ('\u{17b6}', 34041),
+    ('\u{17de}', 34042),
+    ('\u{17e0}', 34043),
+    ('\u{17ea}', 34044),
+    ('\u{17f0}', 34045),
+    ('\u{17fa}', 34046),
+    ('\u{1800}', 34047),
+    ('\u{1806}', 34048),
+    ('\u{1807}', 34049),
+    ('\u{180b}', 34050),
+    ('\u{180e}', 34051),
+    ('\u{1810}', 34052),
+    ('\u{181a}', 34053),
+    ('\u{1820}', 34054),
+    ('\u{1879}', 34055),
+    ('\u{1880}', 34056),
+    ('\u{18ab}', 34057),
+    ('\u{18b0}', 34058),
+    ('\u{18f6}', 34059),
+    ('\u{1900}', 34060),
+    ('\u{191f}', 34061),
+    ('\u{1920}', 34062),
+    ('\u{192c}', 34063),
+    ('\u{1930}', 34064),
+    ('\u{193c}', 34065),
+    ('\u{1940}', 34066),
+    ('\u{1941}', 34067),
+    ('\u{1944}', 34068),
+    ('\u{196e}', 34069),
+    ('\u{1970}', 34070),
+    ('\u{1975}', 34071),
+    ('\u{1980}', 34072),
+    ('\u{19ac}', 34073),
+    ('\u{19b0}', 34074),
+    ('\u{19ca}', 34075),
+    ('\u{19d0}', 34076),
+    ('\u{19db}', 34077),
+    ('\u{19de}', 34078),
+    ('\u{1a1c}', 34079),
+    ('\u{1a1e}', 34080),
+    ('\u{1a5f}', 34081),
+    ('\u{1a60}', 34082),
+    ('\u{1a7d}', 34083),
+    ('\u{1a7f}', 34084),
+    ('\u{1a8a}', 34085),
+    ('\u{1a90}', 34086),
+    ('\u{1a9a}', 34087),
+    ('\u{1aa0}', 34088),
+    ('\u{1aae}', 34089),
+    ('\u{1ab0}', 34090),
+    ('\u{1ac1}', 34091),
+    ('\u{1b00}', 34092),
+    ('\u{1b4c}', 34093),
+    ('\u{1b50}', 34094),
+    ('\u{1b7d}', 34095),
+    ('\u{1b80}', 34096),
+    ('\u{1bf4}', 34097),
+    ('\u{1bfc}', 34098),
+    ('\u{1c38}', 34099),
+    ('\u{1c3b}', 34100),
+    ('\u{1c4a}', 34101),
+    ('\u{1c4d}', 34102),
+    ('\u{1c80}', 1335),
+    ('\u{1c84}', 34107),
+    ('\u{1c86}', 1340),
+    ('\u{1c89}', 34111),
+    ('\u{1c90}', 1344),
+    ('\u{1cbb}', 34155),
+    ('\u{1cbd}', 1388),
+    ('\u{1cc0}', 34159),
+    ('\u{1cc8}', 34160),
+    ('\u{1cd0}', 34161),
+    ('\u{1cfb}', 34162),
+    ('\u{1d00}', 34163),
+    ('\u{1d2c}', 1396),
+    ('\u{1d6b}', 34227),
+    ('\u{1d78}', 34228),
+    ('\u{1d79}', 34229),
+    ('\u{1d9b}', 1462),
+    ('\u{1dc0}', 34267),
+    ('\u{1dfa}', 34268),
+    ('\u{1dfb}', 34269),
+    ('\u{1e00}', 1502),
+    ('\u{1e95}', 34419),
+    ('\u{1e9a}', 1652),
+    ('\u{1e9c}', 34422),
+    ('\u{1e9e}', 1655),
+    ('\u{1eff}', 34520),
+    ('\u{1f08}', 1753),
+    ('\u{1f10}', 34529),
+    ('\u{1f16}', 34530),
+    ('\u{1f18}', 1763),
+    ('\u{1f1e}', 34537),
+    ('\u{1f20}', 34538),
+    ('\u{1f28}', 1771),
+    ('\u{1f30}', 34547),
+    ('\u{1f38}', 1780),
+    ('\u{1f40}', 34556),
+    ('\u{1f46}', 34557),
+    ('\u{1f48}', 1790),
+    ('\u{1f4e}', 34564),
+    ('\u{1f50}', 34565),
+    ('\u{1f58}', 1798),
+    ('\u{1f60}', 34574),
+    ('\u{1f68}', 1807),
+    ('\u{1f7e}', 34597),
+    ('\u{1f80}', 1830),
+    ('\u{1fb0}', 34646),
+    ('\u{1fb2}', 1879),
+    ('\u{1fd0}', 34677),
+    ('\u{1fd3}', 34678),
+    ('\u{1fd4}', 34679),
+    ('\u{1fd6}', 34680),
+    ('\u{1fd8}', 1913),
+    ('\u{1fe0}', 34689),
+    ('\u{1fe3}', 34690),
+    ('\u{1fe4}', 34691),
+    ('\u{1fe8}', 1924),
+    ('\u{1ff0}', 34700),
+    ('\u{1ff2}', 1933),
+    ('\u{2000}', 34715),
+    ('\u{200b}', 34716),
+    ('\u{200c}', 34717),
+    ('\u{200e}', 34718),
+    ('\u{2010}', 1951),
+    ('\u{2012}', 34721),
+    ('\u{2017}', 34722),
+    ('\u{2018}', 34723),
+    ('\u{2024}', 34724),
+    ('\u{2027}', 34725),
+    ('\u{2028}', 34726),
+    ('\u{202f}', 34727),
+    ('\u{2030}', 34728),
+    ('\u{2033}', 1961),
+    ('\u{2038}', 34734),
+    ('\u{203c}', 1967),
+    ('\u{203f}', 34738),
+    ('\u{2047}', 1971),
+    ('\u{204a}', 34742),
+    ('\u{2057}', 34743),
+    ('\u{2058}', 34744),
+    ('\u{205f}', 1977),
+    ('\u{2061}', 34747),
+    ('\u{2064}', 34748),
+    ('\u{2065}', 34749),
+    ('\u{2070}', 1982),
+    ('\u{2072}', 34752),
+    ('\u{2074}', 1985),
+    ('\u{209d}', 34794),
+    ('\u{20a0}', 34795),
+    ('\u{20a8}', 34796),
+    ('\u{20a9}', 34797),
+    ('\u{20c0}', 34798),
+    ('\u{20d0}', 34799),
+    ('\u{20f1}', 34800),
+    ('\u{2100}', 2033),
+    ('\u{210b}', 34812),
+    ('\u{210f}', 34813),
+    ('\u{2110}', 34814),
+    ('\u{2112}', 34815),
+    ('\u{2114}', 2048),
+    ('\u{2117}', 34819),
+    ('\u{2119}', 2052),
+    ('\u{211b}', 34822),
+    ('\u{211e}', 34823),
+    ('\u{2120}', 2056),
+    ('\u{212f}', 34839),
+    ('\u{2131}', 2072),
+    ('\u{213d}', 34852),
+    ('\u{213f}', 2085),
+    ('\u{2141}', 34855),
+    ('\u{2145}', 34856),
+    ('\u{2147}', 2089),
+    ('\u{214a}', 34860),
+    ('\u{2150}', 2093),
+    ('\u{2180}', 34909),
+    ('\u{2183}', 34910),
+    ('\u{2184}', 34911),
+    ('\u{2189}', 34912),
+    ('\u{218a}', 34913),
+    ('\u{218c}', 34914),
+    ('\u{2190}', 34915),
+    ('\u{222c}', 2148),
+    ('\u{2231}', 34921),
+    ('\u{2260}', 34922),
+    ('\u{2261}', 34923),
+    ('\u{226e}', 34924),
+    ('\u{2270}', 34925),
+    ('\u{2329}', 2158),
+    ('\u{232b}', 34928),
+    ('\u{2427}', 34929),
+    ('\u{2440}', 34930),
+    ('\u{244b}', 34931),
+    ('\u{2460}', 2164),
+    ('\u{2488}', 34972),
+    ('\u{249c}', 2205),
+    ('\u{24eb}', 35052),
+    ('\u{2a0c}', 35053),
+    ('\u{2a0d}', 35054),
+    ('\u{2a74}', 2287),
+    ('\u{2a77}', 35058),
+    ('\u{2adc}', 35059),
+    ('\u{2add}', 35060),
+    ('\u{2b74}', 35061),
+    ('\u{2b76}', 35062),
+    ('\u{2b96}', 35063),
+    ('\u{2b97}', 35064),
+    ('\u{2c00}', 2297),
+    ('\u{2c30}', 35113),
+    ('\u{2c5f}', 2346),
+    ('\u{2c65}', 35120),
+    ('\u{2c67}', 2353),
+    ('\u{2c73}', 35133),
+    ('\u{2c75}', 35134),
+    ('\u{2c76}', 35135),
+    ('\u{2c7c}', 2368),
+    ('\u{2ce3}', 35239),
+    ('\u{2ceb}', 2472),
+    ('\u{2cee}', 35243),
+    ('\u{2cf2}', 2476),
+    ('\u{2cf4}', 35246),
+    ('\u{2cf9}', 35247),
+    ('\u{2d26}', 2480),
+    ('\u{2d28}', 35250),
+    ('\u{2d2d}', 35251),
+    ('\u{2d2e}', 35252),
+    ('\u{2d30}', 35253),
+    ('\u{2d68}', 35254),
+    ('\u{2d6f}', 2487),
+    ('\u{2d71}', 35257),
+    ('\u{2d7f}', 35258),
+    ('\u{2d97}', 35259),
+    ('\u{2da0}', 35260),
+    ('\u{2da7}', 35261),
+    ('\u{2da8}', 35262),
+    ('\u{2daf}', 35263),
+    ('\u{2db0}', 35264),
+    ('\u{2db7}', 35265),
+    ('\u{2db8}', 35266),
+    ('\u{2dbf}', 35267),
+    ('\u{2dc0}', 35268),
+    ('\u{2dc7}', 35269),
+    ('\u{2dc8}', 35270),
+    ('\u{2dcf}', 35271),
+    ('\u{2dd0}', 35272),
+    ('\u{2dd7}', 35273),
+    ('\u{2dd8}', 35274),
+    ('\u{2ddf}', 35275),
+    ('\u{2de0}', 35276),
+    ('\u{2e53}', 35277),
+    ('\u{2e80}', 35278),
+    ('\u{2e9a}', 35279),
+    ('\u{2e9b}', 35280),
+    ('\u{2e9f}', 35281),
+    ('\u{2ea0}', 35282),
+    ('\u{2ef3}', 35283),
+    ('\u{2ef4}', 35284),
+    ('\u{2f00}', 2517),
+    ('\u{2fd6}', 35499),
+    ('\u{3000}', 2732),
+    ('\u{3003}', 35503),
+    ('\u{3036}', 2736),
+    ('\u{303b}', 35509),
+    ('\u{3040}', 35510),
+    ('\u{3041}', 35511),
+    ('\u{3097}', 35512),
+    ('\u{3099}', 35513),
+    ('\u{309b}', 2746),
+    ('\u{309d}', 35516),
+    ('\u{309f}', 35517),
+    ('\u{30a0}', 35518),
+    ('\u{30ff}', 35519),
+    ('\u{3100}', 35520),
+    ('\u{3105}', 35521),
+    ('\u{3130}', 2754),
+    ('\u{3190}', 35618),
+    ('\u{3192}', 2851),
+    ('\u{31a0}', 35633),
+    ('\u{31e4}', 35634),
+    ('\u{31f0}', 35635),
+    ('\u{3200}', 2868),
+    ('\u{3248}', 35708),
+    ('\u{3250}', 2941),
+    ('\u{3400}', 36141),
+    ('\u{9ffd}', 36142),
+    ('\u{a000}', 36143),
+    ('\u{a48d}', 36144),
+    ('\u{a490}', 36145),
+    ('\u{a4c7}', 36146),
+    ('\u{a4d0}', 36147),
+    ('\u{a62c}', 36148),
+    ('\u{a640}', 3381),
+    ('\u{a66d}', 36194),
+    ('\u{a680}', 3427),
+    ('\u{a69e}', 36225),
+    ('\u{a6f8}', 36226),
+    ('\u{a700}', 36227),
+    ('\u{a722}', 3460),
+    ('\u{a72f}', 36241),
+    ('\u{a732}', 3474),
+    ('\u{a771}', 36305),
+    ('\u{a779}', 3538),
+    ('\u{a787}', 36320),
+    ('\u{a78b}', 3553),
+    ('\u{a78e}', 36324),
+    ('\u{a790}', 3557),
+    ('\u{a793}', 36328),
+    ('\u{a796}', 3561),
+    ('\u{a7c0}', 36371),
+    ('\u{a7c2}', 3604),
+    ('\u{a7cb}', 36381),
+    ('\u{a7f5}', 36382),
+    ('\u{a7f6}', 36383),
+    ('\u{a7f8}', 3616),
+    ('\u{a7fa}', 36386),
+    ('\u{a82d}', 36387),
+    ('\u{a830}', 36388),
+    ('\u{a83a}', 36389),
+    ('\u{a840}', 36390),
+    ('\u{a878}', 36391),
+    ('\u{a880}', 36392),
+    ('\u{a8c6}', 36393),
+    ('\u{a8ce}', 36394),
+    ('\u{a8da}', 36395),
+    ('\u{a8e0}', 36396),
+    ('\u{a954}', 36397),
+    ('\u{a95f}', 36398),
+    ('\u{a97d}', 36399),
+    ('\u{a980}', 36400),
+    ('\u{a9ce}', 36401),
+    ('\u{a9cf}', 36402),
+    ('\u{a9da}', 36403),
+    ('\u{a9de}', 36404),
+    ('\u{a9ff}', 36405),
+    ('\u{aa00}', 36406),
+    ('\u{aa37}', 36407),
+    ('\u{aa40}', 36408),
+    ('\u{aa4e}', 36409),
+    ('\u{aa50}', 36410),
+    ('\u{aa5a}', 36411),
+    ('\u{aa5c}', 36412),
+    ('\u{aac3}', 36413),
+    ('\u{aadb}', 36414),
+    ('\u{aaf7}', 36415),
+    ('\u{ab01}', 36416),
+    ('\u{ab07}', 36417),
+    ('\u{ab09}', 36418),
+    ('\u{ab0f}', 36419),
+    ('\u{ab11}', 36420),
+    ('\u{ab17}', 36421),
+    ('\u{ab20}', 36422),
+    ('\u{ab27}', 36423),
+    ('\u{ab28}', 36424),
+    ('\u{ab2f}', 36425),
+    ('\u{ab30}', 36426),
+    ('\u{ab5c}', 3659),
+    ('\u{ab60}', 36431),
+    ('\u{ab69}', 36432),
+    ('\u{ab6a}', 36433),
+    ('\u{ab6c}', 36434),
+    ('\u{ab70}', 3667),
+    ('\u{abc0}', 36515),
+    ('\u{abee}', 36516),
+    ('\u{abf0}', 36517),
+    ('\u{abfa}', 36518),
+    ('\u{ac00}', 36519),
+    ('\u{d7a4}', 36520),
+    ('\u{d7b0}', 36521),
+    ('\u{d7c7}', 36522),
+    ('\u{d7cb}', 36523),
+    ('\u{d7fc}', 36524),
+    ('\u{f900}', 3757),
+    ('\u{f907}', 36532),
+    ('\u{f909}', 3765),
+    ('\u{fa0e}', 36794),
+    ('\u{fa10}', 4027),
+    ('\u{fa13}', 36798),
+    ('\u{fa15}', 4031),
+    ('\u{fa23}', 36813),
+    ('\u{fa25}', 4046),
+    ('\u{fa27}', 36816),
+    ('\u{fa2a}', 4049),
+    ('\u{fa5d}', 36868),
+    ('\u{fa5f}', 4101),
+    ('\u{fa6e}', 36884),
+    ('\u{fa70}', 4117),
+    ('\u{fada}', 36991),
+    ('\u{fb00}', 4224),
+    ('\u{fb05}', 36997),
+    ('\u{fb07}', 36998),
+    ('\u{fb13}', 4231),
+    ('\u{fb18}', 37004),
+    ('\u{fb1d}', 4237),
+    ('\u{fb50}', 37056),
+    ('\u{fb52}', 37057),
+    ('\u{fb56}', 37058),
+    ('\u{fb5a}', 37059),
+    ('\u{fb5e}', 37060),
+    ('\u{fb62}', 37061),
+    ('\u{fb66}', 37062),
+    ('\u{fb6a}', 37063),
+    ('\u{fb6e}', 37064),
+    ('\u{fb72}', 37065),
+    ('\u{fb76}', 37066),
+    ('\u{fb7a}', 37067),
+    ('\u{fb7e}', 37068),
+    ('\u{fb82}', 37069),
+    ('\u{fb84}', 37070),
+    ('\u{fb86}', 37071),
+    ('\u{fb88}', 37072),
+    ('\u{fb8a}', 37073),
+    ('\u{fb8c}', 37074),
+    ('\u{fb8e}', 37075),
+    ('\u{fb92}', 37076),
+    ('\u{fb96}', 37077),
+    ('\u{fb9a}', 37078),
+    ('\u{fb9e}', 37079),
+    ('\u{fba0}', 37080),
+    ('\u{fba4}', 37081),
+    ('\u{fba6}', 37082),
+    ('\u{fbaa}', 37083),
+    ('\u{fbae}', 37084),
+    ('\u{fbb0}', 37085),
+    ('\u{fbb2}', 37086),
+    ('\u{fbc2}', 37087),
+    ('\u{fbd3}', 37088),
+    ('\u{fbd7}', 37089),
+    ('\u{fbd9}', 37090),
+    ('\u{fbdb}', 37091),
+    ('\u{fbdd}', 37092),
+    ('\u{fbde}', 37093),
+    ('\u{fbe0}', 37094),
+    ('\u{fbe2}', 37095),
+    ('\u{fbe4}', 37096),
+    ('\u{fbe8}', 37097),
+    ('\u{fbea}', 37098),
+    ('\u{fbec}', 37099),
+    ('\u{fbee}', 37100),
+    ('\u{fbf0}', 37101),
+    ('\u{fbf2}', 37102),
+    ('\u{fbf4}', 37103),
+    ('\u{fbf6}', 37104),
+    ('\u{fbf9}', 37105),
+    ('\u{fbfc}', 37106),
+    ('\u{fc00}', 4339),
+    ('\u{fd3c}', 37423),
+    ('\u{fd3e}', 37424),
+    ('\u{fd40}', 37425),
+    ('\u{fd50}', 37426),
+    ('\u{fd51}', 37427),
+    ('\u{fd53}', 4660),
+    ('\u{fd58}', 37433),
+    ('\u{fd5a}', 4666),
+    ('\u{fd5f}', 37439),
+    ('\u{fd61}', 37440),
+    ('\u{fd62}', 37441),
+    ('\u{fd64}', 37442),
+    ('\u{fd66}', 37443),
+    ('\u{fd67}', 37444),
+    ('\u{fd69}', 37445),
+    ('\u{fd6a}', 37446),
+    ('\u{fd6c}', 37447),
+    ('\u{fd6e}', 37448),
+    ('\u{fd6f}', 37449),
+    ('\u{fd71}', 37450),
+    ('\u{fd73}', 4683),
+    ('\u{fd76}', 37454),
+    ('\u{fd78}', 4687),
+    ('\u{fd7c}', 37459),
+    ('\u{fd7e}', 4692),
+    ('\u{fd83}', 37465),
+    ('\u{fd85}', 37466),
+    ('\u{fd87}', 37467),
+    ('\u{fd89}', 4700),
+    ('\u{fd90}', 37475),
+    ('\u{fd92}', 4708),
+    ('\u{fd97}', 37481),
+    ('\u{fd99}', 4714),
+    ('\u{fd9c}', 37485),
+    ('\u{fd9e}', 4718),
+    ('\u{fdc8}', 37528),
+    ('\u{fdf0}', 4761),
+    ('\u{fdfe}', 37543),
+    ('\u{fe00}', 37544),
+    ('\u{fe10}', 4777),
+    ('\u{fe19}', 37554),
+    ('\u{fe20}', 37555),
+    ('\u{fe30}', 4788),
+    ('\u{fe33}', 37559),
+    ('\u{fe35}', 4792),
+    ('\u{fe45}', 37576),
+    ('\u{fe47}', 4809),
+    ('\u{fe49}', 37579),
+    ('\u{fe4d}', 37580),
+    ('\u{fe50}', 4813),
+    ('\u{fe52}', 37583),
+    ('\u{fe54}', 4816),
+    ('\u{fe6c}', 37608),
+    ('\u{fe70}', 4841),
+    ('\u{fe81}', 37626),
+    ('\u{fe83}', 37627),
+    ('\u{fe85}', 37628),
+    ('\u{fe87}', 37629),
+    ('\u{fe89}', 37630),
+    ('\u{fe8d}', 37631),
+    ('\u{fe8f}', 37632),
+    ('\u{fe93}', 37633),
+    ('\u{fe95}', 37634),
+    ('\u{fe99}', 37635),
+    ('\u{fe9d}', 37636),
+    ('\u{fea1}', 37637),
+    ('\u{fea5}', 37638),
+    ('\u{fea9}', 37639),
+    ('\u{feab}', 37640),
+    ('\u{fead}', 37641),
+    ('\u{feaf}', 37642),
+    ('\u{feb1}', 37643),
+    ('\u{feb5}', 37644),
+    ('\u{feb9}', 37645),
+    ('\u{febd}', 37646),
+    ('\u{fec1}', 37647),
+    ('\u{fec5}', 37648),
+    ('\u{fec9}', 37649),
+    ('\u{fecd}', 37650),
+    ('\u{fed1}', 37651),
+    ('\u{fed5}', 37652),
+    ('\u{fed9}', 37653),
+    ('\u{fedd}', 37654),
+    ('\u{fee1}', 37655),
+    ('\u{fee5}', 37656),
+    ('\u{fee9}', 37657),
+    ('\u{feed}', 37658),
+    ('\u{feef}', 37659),
+    ('\u{fef1}', 37660),
+    ('\u{fef5}', 37661),
+    ('\u{fef7}', 37662),
+    ('\u{fef9}', 37663),
+    ('\u{fefb}', 37664),
+    ('\u{fefd}', 37665),
+    ('\u{feff}', 4898),
+    ('\u{ffbf}', 37858),
+    ('\u{ffc2}', 5091),
+    ('\u{ffc8}', 37865),
+    ('\u{ffca}', 5098),
+    ('\u{ffd0}', 37872),
+    ('\u{ffd2}', 5105),
+    ('\u{ffd8}', 37879),
+    ('\u{ffda}', 5112),
+    ('\u{ffdd}', 37883),
+    ('\u{ffe0}', 5116),
+    ('\u{ffef}', 37899),
+    ('\u{10000}', 37900),
+    ('\u{1000c}', 37901),
+    ('\u{1000d}', 37902),
+    ('\u{10027}', 37903),
+    ('\u{10028}', 37904),
+    ('\u{1003b}', 37905),
+    ('\u{1003c}', 37906),
+    ('\u{1003e}', 37907),
+    ('\u{1003f}', 37908),
+    ('\u{1004e}', 37909),
+    ('\u{10050}', 37910),
+    ('\u{1005e}', 37911),
+    ('\u{10080}', 37912),
+    ('\u{100fb}', 37913),
+    ('\u{10100}', 37914),
+    ('\u{10103}', 37915),
+    ('\u{10107}', 37916),
+    ('\u{10134}', 37917),
+    ('\u{10137}', 37918),
+    ('\u{1018f}', 37919),
+    ('\u{10190}', 37920),
+    ('\u{1019d}', 37921),
+    ('\u{101a0}', 37922),
+    ('\u{101a1}', 37923),
+    ('\u{101d0}', 37924),
+    ('\u{101fe}', 37925),
+    ('\u{10280}', 37926),
+    ('\u{1029d}', 37927),
+    ('\u{102a0}', 37928),
+    ('\u{102d1}', 37929),
+    ('\u{102e0}', 37930),
+    ('\u{102fc}', 37931),
+    ('\u{10300}', 37932),
+    ('\u{10324}', 37933),
+    ('\u{1032d}', 37934),
+    ('\u{1034b}', 37935),
+    ('\u{10350}', 37936),
+    ('\u{1037b}', 37937),
+    ('\u{10380}', 37938),
+    ('\u{1039e}', 37939),
+    ('\u{1039f}', 37940),
+    ('\u{103c4}', 37941),
+    ('\u{103c8}', 37942),
+    ('\u{103d6}', 37943),
+    ('\u{10400}', 5176),
+    ('\u{10428}', 37984),
+    ('\u{1049e}', 37985),
+    ('\u{104a0}', 37986),
+    ('\u{104aa}', 37987),
+    ('\u{104b0}', 5220),
+    ('\u{104d4}', 38024),
+    ('\u{104d8}', 38025),
+    ('\u{104fc}', 38026),
+    ('\u{10500}', 38027),
+    ('\u{10528}', 38028),
+    ('\u{10530}', 38029),
+    ('\u{10564}', 38030),
+    ('\u{1056f}', 38031),
+    ('\u{10570}', 38032),
+    ('\u{10600}', 38033),
+    ('\u{10737}', 38034),
+    ('\u{10740}', 38035),
+    ('\u{10756}', 38036),
+    ('\u{10760}', 38037),
+    ('\u{10768}', 38038),
+    ('\u{10800}', 38039),
+    ('\u{10806}', 38040),
+    ('\u{10808}', 5273),
+    ('\u{1080a}', 38043),
+    ('\u{10836}', 38044),
+    ('\u{10837}', 38045),
+    ('\u{10839}', 38046),
+    ('\u{1083c}', 38047),
+    ('\u{1083d}', 38048),
+    ('\u{1083f}', 38049),
+    ('\u{10856}', 38050),
+    ('\u{10857}', 38051),
+    ('\u{1089f}', 38052),
+    ('\u{108a7}', 38053),
+    ('\u{108b0}', 38054),
+    ('\u{108e0}', 38055),
+    ('\u{108f3}', 38056),
+    ('\u{108f4}', 38057),
+    ('\u{108f6}', 38058),
+    ('\u{108fb}', 38059),
+    ('\u{1091c}', 38060),
+    ('\u{1091f}', 38061),
+    ('\u{1093a}', 38062),
+    ('\u{1093f}', 38063),
+    ('\u{10940}', 38064),
+    ('\u{10980}', 38065),
+    ('\u{109b8}', 38066),
+    ('\u{109bc}', 38067),
+    ('\u{109d0}', 38068),
+    ('\u{109d2}', 38069),
+    ('\u{10a04}', 38070),
+    ('\u{10a05}', 38071),
+    ('\u{10a07}', 38072),
+    ('\u{10a0c}', 38073),
+    ('\u{10a14}', 38074),
+    ('\u{10a15}', 38075),
+    ('\u{10a18}', 38076),
+    ('\u{10a19}', 38077),
+    ('\u{10a36}', 38078),
+    ('\u{10a38}', 38079),
+    ('\u{10a3b}', 38080),
+    ('\u{10a3f}', 38081),
+    ('\u{10a49}', 38082),
+    ('\u{10a50}', 38083),
+    ('\u{10a59}', 38084),
+    ('\u{10a60}', 38085),
+    ('\u{10aa0}', 38086),
+    ('\u{10ac0}', 38087),
+    ('\u{10ae7}', 38088),
+    ('\u{10aeb}', 38089),
+    ('\u{10af7}', 38090),
+    ('\u{10b00}', 38091),
+    ('\u{10b36}', 38092),
+    ('\u{10b39}', 38093),
+    ('\u{10b56}', 38094),
+    ('\u{10b58}', 38095),
+    ('\u{10b73}', 38096),
+    ('\u{10b78}', 38097),
+    ('\u{10b92}', 38098),
+    ('\u{10b99}', 38099),
+    ('\u{10b9d}', 38100),
+    ('\u{10ba9}', 38101),
+    ('\u{10bb0}', 38102),
+    ('\u{10c00}', 38103),
+    ('\u{10c49}', 38104),
+    ('\u{10c80}', 5337),
+    ('\u{10cb3}', 38156),
+    ('\u{10cc0}', 38157),
+    ('\u{10cf3}', 38158),
+    ('\u{10cfa}', 38159),
+    ('\u{10d28}', 38160),
+    ('\u{10d30}', 38161),
+    ('\u{10d3a}', 38162),
+    ('\u{10e60}', 38163),
+    ('\u{10e7f}', 38164),
+    ('\u{10e80}', 38165),
+    ('\u{10eaa}', 38166),
+    ('\u{10eab}', 38167),
+    ('\u{10eae}', 38168),
+    ('\u{10eb0}', 38169),
+    ('\u{10eb2}', 38170),
+    ('\u{10f00}', 38171),
+    ('\u{10f28}', 38172),
+    ('\u{10f30}', 38173),
+    ('\u{10f5a}', 38174),
+    ('\u{10fb0}', 38175),
+    ('\u{10fcc}', 38176),
+    ('\u{10fe0}', 38177),
+    ('\u{10ff7}', 38178),
+    ('\u{11000}', 38179),
+    ('\u{1104e}', 38180),
+    ('\u{11052}', 38181),
+    ('\u{11070}', 38182),
+    ('\u{1107f}', 38183),
+    ('\u{110bd}', 38184),
+    ('\u{110be}', 38185),
+    ('\u{110c2}', 38186),
+    ('\u{110d0}', 38187),
+    ('\u{110e9}', 38188),
+    ('\u{110f0}', 38189),
+    ('\u{110fa}', 38190),
+    ('\u{11100}', 38191),
+    ('\u{11135}', 38192),
+    ('\u{11136}', 38193),
+    ('\u{11148}', 38194),
+    ('\u{11150}', 38195),
+    ('\u{11177}', 38196),
+    ('\u{11180}', 38197),
+    ('\u{111e0}', 38198),
+    ('\u{111e1}', 38199),
+    ('\u{111f5}', 38200),
+    ('\u{11200}', 38201),
+    ('\u{11212}', 38202),
+    ('\u{11213}', 38203),
+    ('\u{1123f}', 38204),
+    ('\u{11280}', 38205),
+    ('\u{11287}', 5438),
+    ('\u{1128a}', 38209),
+    ('\u{1128e}', 38210),
+    ('\u{1128f}', 38211),
+    ('\u{1129e}', 38212),
+    ('\u{1129f}', 38213),
+    ('\u{112aa}', 38214),
+    ('\u{112b0}', 38215),
+    ('\u{112eb}', 38216),
+    ('\u{112f0}', 38217),
+    ('\u{112fa}', 38218),
+    ('\u{11300}', 38219),
+    ('\u{11304}', 38220),
+    ('\u{11305}', 38221),
+    ('\u{1130d}', 38222),
+    ('\u{1130f}', 38223),
+    ('\u{11311}', 38224),
+    ('\u{11313}', 38225),
+    ('\u{11329}', 38226),
+    ('\u{1132a}', 38227),
+    ('\u{11331}', 38228),
+    ('\u{11332}', 38229),
+    ('\u{11334}', 38230),
+    ('\u{11335}', 38231),
+    ('\u{1133a}', 38232),
+    ('\u{1133b}', 38233),
+    ('\u{11345}', 38234),
+    ('\u{11347}', 38235),
+    ('\u{11349}', 38236),
+    ('\u{1134b}', 38237),
+    ('\u{1134e}', 38238),
+    ('\u{11350}', 38239),
+    ('\u{11351}', 38240),
+    ('\u{11357}', 38241),
+    ('\u{11358}', 38242),
+    ('\u{1135d}', 38243),
+    ('\u{11364}', 38244),
+    ('\u{11366}', 38245),
+    ('\u{1136d}', 38246),
+    ('\u{11370}', 38247),
+    ('\u{11375}', 38248),
+    ('\u{11400}', 38249),
+    ('\u{1145c}', 38250),
+    ('\u{1145d}', 38251),
+    ('\u{11462}', 38252),
+    ('\u{11480}', 38253),
+    ('\u{114c8}', 38254),
+    ('\u{114d0}', 38255),
+    ('\u{114da}', 38256),
+    ('\u{11580}', 38257),
+    ('\u{115b6}', 38258),
+    ('\u{115b8}', 38259),
+    ('\u{115de}', 38260),
+    ('\u{11600}', 38261),
+    ('\u{11645}', 38262),
+    ('\u{11650}', 38263),
+    ('\u{1165a}', 38264),
+    ('\u{11660}', 38265),
+    ('\u{1166d}', 38266),
+    ('\u{11680}', 38267),
+    ('\u{116b9}', 38268),
+    ('\u{116c0}', 38269),
+    ('\u{116ca}', 38270),
+    ('\u{11700}', 38271),
+    ('\u{1171b}', 38272),
+    ('\u{1171d}', 38273),
+    ('\u{1172c}', 38274),
+    ('\u{11730}', 38275),
+    ('\u{11740}', 38276),
+    ('\u{11800}', 38277),
+    ('\u{1183c}', 38278),
+    ('\u{118a0}', 5511),
+    ('\u{118c0}', 38311),
+    ('\u{118f3}', 38312),
+    ('\u{118ff}', 38313),
+    ('\u{11907}', 38314),
+    ('\u{11909}', 38315),
+    ('\u{1190a}', 38316),
+    ('\u{1190c}', 38317),
+    ('\u{11914}', 38318),
+    ('\u{11915}', 38319),
+    ('\u{11917}', 38320),
+    ('\u{11918}', 38321),
+    ('\u{11936}', 38322),
+    ('\u{11937}', 38323),
+    ('\u{11939}', 38324),
+    ('\u{1193b}', 38325),
+    ('\u{11947}', 38326),
+    ('\u{11950}', 38327),
+    ('\u{1195a}', 38328),
+    ('\u{119a0}', 38329),
+    ('\u{119a8}', 38330),
+    ('\u{119aa}', 38331),
+    ('\u{119d8}', 38332),
+    ('\u{119da}', 38333),
+    ('\u{119e5}', 38334),
+    ('\u{11a00}', 38335),
+    ('\u{11a48}', 38336),
+    ('\u{11a50}', 38337),
+    ('\u{11aa3}', 38338),
+    ('\u{11ac0}', 38339),
+    ('\u{11af9}', 38340),
+    ('\u{11c00}', 38341),
+    ('\u{11c09}', 38342),
+    ('\u{11c0a}', 38343),
+    ('\u{11c37}', 38344),
+    ('\u{11c38}', 38345),
+    ('\u{11c46}', 38346),
+    ('\u{11c50}', 38347),
+    ('\u{11c6d}', 38348),
+    ('\u{11c70}', 38349),
+    ('\u{11c90}', 38350),
+    ('\u{11c92}', 38351),
+    ('\u{11ca8}', 38352),
+    ('\u{11ca9}', 38353),
+    ('\u{11cb7}', 38354),
+    ('\u{11d00}', 38355),
+    ('\u{11d07}', 38356),
+    ('\u{11d08}', 38357),
+    ('\u{11d0a}', 38358),
+    ('\u{11d0b}', 38359),
+    ('\u{11d37}', 38360),
+    ('\u{11d3a}', 5593),
+    ('\u{11d3c}', 38363),
+    ('\u{11d3e}', 38364),
+    ('\u{11d3f}', 38365),
+    ('\u{11d48}', 38366),
+    ('\u{11d50}', 38367),
+    ('\u{11d5a}', 38368),
+    ('\u{11d60}', 38369),
+    ('\u{11d66}', 38370),
+    ('\u{11d67}', 38371),
+    ('\u{11d69}', 38372),
+    ('\u{11d6a}', 38373),
+    ('\u{11d8f}', 38374),
+    ('\u{11d90}', 38375),
+    ('\u{11d92}', 38376),
+    ('\u{11d93}', 38377),
+    ('\u{11d99}', 38378),
+    ('\u{11da0}', 38379),
+    ('\u{11daa}', 38380),
+    ('\u{11ee0}', 38381),
+    ('\u{11ef9}', 38382),
+    ('\u{11fb0}', 38383),
+    ('\u{11fb1}', 38384),
+    ('\u{11fc0}', 38385),
+    ('\u{11ff2}', 38386),
+    ('\u{11fff}', 38387),
+    ('\u{1239a}', 38388),
+    ('\u{12400}', 38389),
+    ('\u{1246f}', 38390),
+    ('\u{12470}', 38391),
+    ('\u{12475}', 38392),
+    ('\u{12480}', 38393),
+    ('\u{12544}', 38394),
+    ('\u{13000}', 38395),
+    ('\u{1342f}', 38396),
+    ('\u{14400}', 38397),
+    ('\u{14647}', 38398),
+    ('\u{16800}', 38399),
+    ('\u{16a39}', 38400),
+    ('\u{16a40}', 38401),
+    ('\u{16a5f}', 38402),
+    ('\u{16a60}', 38403),
+    ('\u{16a6a}', 38404),
+    ('\u{16a6e}', 38405),
+    ('\u{16a70}', 38406),
+    ('\u{16ad0}', 38407),
+    ('\u{16aee}', 38408),
+    ('\u{16af0}', 38409),
+    ('\u{16af6}', 38410),
+    ('\u{16b00}', 38411),
+    ('\u{16b46}', 38412),
+    ('\u{16b50}', 38413),
+    ('\u{16b5a}', 38414),
+    ('\u{16b5b}', 38415),
+    ('\u{16b62}', 38416),
+    ('\u{16b63}', 38417),
+    ('\u{16b78}', 38418),
+    ('\u{16b7d}', 38419),
+    ('\u{16b90}', 38420),
+    ('\u{16e40}', 5653),
+    ('\u{16e60}', 38453),
+    ('\u{16e9b}', 38454),
+    ('\u{16f00}', 38455),
+    ('\u{16f4b}', 38456),
+    ('\u{16f4f}', 38457),
+    ('\u{16f88}', 38458),
+    ('\u{16f8f}', 38459),
+    ('\u{16fa0}', 38460),
+    ('\u{16fe0}', 38461),
+    ('\u{16fe5}', 38462),
+    ('\u{16ff0}', 38463),
+    ('\u{16ff2}', 38464),
+    ('\u{17000}', 38465),
+    ('\u{187f8}', 38466),
+    ('\u{18800}', 38467),
+    ('\u{18cd6}', 38468),
+    ('\u{18d00}', 38469),
+    ('\u{18d09}', 38470),
+    ('\u{1b000}', 38471),
+    ('\u{1b11f}', 38472),
+    ('\u{1b150}', 38473),
+    ('\u{1b153}', 38474),
+    ('\u{1b164}', 38475),
+    ('\u{1b168}', 38476),
+    ('\u{1b170}', 38477),
+    ('\u{1b2fc}', 38478),
+    ('\u{1bc00}', 38479),
+    ('\u{1bc6b}', 38480),
+    ('\u{1bc70}', 38481),
+    ('\u{1bc7d}', 38482),
+    ('\u{1bc80}', 38483),
+    ('\u{1bc89}', 38484),
+    ('\u{1bc90}', 38485),
+    ('\u{1bc9a}', 38486),
+    ('\u{1bc9c}', 38487),
+    ('\u{1bca0}', 38488),
+    ('\u{1bca4}', 38489),
+    ('\u{1d000}', 38490),
+    ('\u{1d0f6}', 38491),
+    ('\u{1d100}', 38492),
+    ('\u{1d127}', 38493),
+    ('\u{1d129}', 38494),
+    ('\u{1d15e}', 5727),
+    ('\u{1d165}', 38502),
+    ('\u{1d173}', 38503),
+    ('\u{1d17b}', 38504),
+    ('\u{1d1bb}', 5737),
+    ('\u{1d1c1}', 38511),
+    ('\u{1d1e9}', 38512),
+    ('\u{1d200}', 38513),
+    ('\u{1d246}', 38514),
+    ('\u{1d2e0}', 38515),
+    ('\u{1d2f4}', 38516),
+    ('\u{1d300}', 38517),
+    ('\u{1d357}', 38518),
+    ('\u{1d360}', 38519),
+    ('\u{1d379}', 38520),
+    ('\u{1d400}', 5753),
+    ('\u{1d4a0}', 38681),
+    ('\u{1d4a2}', 38682),
+    ('\u{1d4a3}', 38683),
+    ('\u{1d4a5}', 5916),
+    ('\u{1d4a7}', 38686),
+    ('\u{1d4a9}', 5919),
+    ('\u{1d50b}', 38785),
+    ('\u{1d50d}', 6018),
+    ('\u{1d547}', 38844),
+    ('\u{1d54a}', 6077),
+    ('\u{1d6a6}', 39193),
+    ('\u{1d6a8}', 6426),
+    ('\u{1d6d3}', 39237),
+    ('\u{1d6d5}', 6470),
+    ('\u{1d70d}', 39294),
+    ('\u{1d70f}', 6527),
+    ('\u{1d747}', 39351),
+    ('\u{1d749}', 6584),
+    ('\u{1d781}', 39408),
+    ('\u{1d783}', 6641),
+    ('\u{1d7bb}', 39465),
+    ('\u{1d7bd}', 6698),
+    ('\u{1d7ca}', 39479),
+    ('\u{1d7cc}', 39480),
+    ('\u{1d7ce}', 6713),
+    ('\u{1d800}', 39531),
+    ('\u{1da8c}', 39532),
+    ('\u{1da9b}', 39533),
+    ('\u{1daa0}', 39534),
+    ('\u{1daa1}', 39535),
+    ('\u{1dab0}', 39536),
+    ('\u{1e000}', 39537),
+    ('\u{1e007}', 39538),
+    ('\u{1e008}', 39539),
+    ('\u{1e019}', 39540),
+    ('\u{1e01b}', 39541),
+    ('\u{1e022}', 39542),
+    ('\u{1e023}', 39543),
+    ('\u{1e025}', 39544),
+    ('\u{1e026}', 39545),
+    ('\u{1e02b}', 39546),
+    ('\u{1e100}', 39547),
+    ('\u{1e12d}', 39548),
+    ('\u{1e130}', 39549),
+    ('\u{1e13e}', 39550),
+    ('\u{1e140}', 39551),
+    ('\u{1e14a}', 39552),
+    ('\u{1e14e}', 39553),
+    ('\u{1e150}', 39554),
+    ('\u{1e2c0}', 39555),
+    ('\u{1e2fa}', 39556),
+    ('\u{1e2ff}', 39557),
+    ('\u{1e300}', 39558),
+    ('\u{1e800}', 39559),
+    ('\u{1e8c5}', 39560),
+    ('\u{1e8c7}', 39561),
+    ('\u{1e8d7}', 39562),
+    ('\u{1e900}', 6795),
+    ('\u{1e922}', 39597),
+    ('\u{1e94c}', 39598),
+    ('\u{1e950}', 39599),
+    ('\u{1e95a}', 39600),
+    ('\u{1e95e}', 39601),
+    ('\u{1e960}', 39602),
+    ('\u{1ec71}', 39603),
+    ('\u{1ecb5}', 39604),
+    ('\u{1ed01}', 39605),
+    ('\u{1ed3e}', 39606),
+    ('\u{1ee00}', 6839),
+    ('\u{1ee25}', 39644),
+    ('\u{1ee27}', 6877),
+    ('\u{1ee3c}', 39666),
+    ('\u{1ee42}', 39667),
+    ('\u{1ee43}', 39668),
+    ('\u{1ee47}', 6901),
+    ('\u{1ee55}', 39683),
+    ('\u{1ee57}', 6916),
+    ('\u{1ee65}', 39698),
+    ('\u{1ee67}', 6931),
+    ('\u{1ee9c}', 39752),
+    ('\u{1eea1}', 6985),
+    ('\u{1eebc}', 39780),
+    ('\u{1eef0}', 39781),
+    ('\u{1eef2}', 39782),
+    ('\u{1f000}', 39783),
+    ('\u{1f02c}', 39784),
+    ('\u{1f030}', 39785),
+    ('\u{1f094}', 39786),
+    ('\u{1f0a0}', 39787),
+    ('\u{1f0af}', 39788),
+    ('\u{1f0b1}', 39789),
+    ('\u{1f0c0}', 39790),
+    ('\u{1f0c1}', 39791),
+    ('\u{1f0d0}', 39792),
+    ('\u{1f0d1}', 39793),
+    ('\u{1f0f6}', 39794),
+    ('\u{1f101}', 7027),
+    ('\u{1f10b}', 39805),
+    ('\u{1f110}', 7038),
+    ('\u{1f150}', 39870),
+    ('\u{1f16a}', 7103),
+    ('\u{1f16d}', 39874),
+    ('\u{1f190}', 39875),
+    ('\u{1f191}', 39876),
+    ('\u{1f1ae}', 39877),
+    ('\u{1f1e6}', 39878),
+    ('\u{1f200}', 7111),
+    ('\u{1f203}', 39882),
+    ('\u{1f210}', 7115),
+    ('\u{1f23c}', 39927),
+    ('\u{1f240}', 7160),
+    ('\u{1f249}', 39937),
+    ('\u{1f250}', 7170),
+    ('\u{1f252}', 39940),
+    ('\u{1f260}', 39941),
+    ('\u{1f266}', 39942),
+    ('\u{1f300}', 39943),
+    ('\u{1f6d8}', 39944),
+    ('\u{1f6e0}', 39945),
+    ('\u{1f6ed}', 39946),
+    ('\u{1f6f0}', 39947),
+    ('\u{1f6fd}', 39948),
+    ('\u{1f700}', 39949),
+    ('\u{1f774}', 39950),
+    ('\u{1f780}', 39951),
+    ('\u{1f7d9}', 39952),
+    ('\u{1f7e0}', 39953),
+    ('\u{1f7ec}', 39954),
+    ('\u{1f800}', 39955),
+    ('\u{1f80c}', 39956),
+    ('\u{1f810}', 39957),
+    ('\u{1f848}', 39958),
+    ('\u{1f850}', 39959),
+    ('\u{1f85a}', 39960),
+    ('\u{1f860}', 39961),
+    ('\u{1f888}', 39962),
+    ('\u{1f890}', 39963),
+    ('\u{1f8ae}', 39964),
+    ('\u{1f8b0}', 39965),
+    ('\u{1f8b2}', 39966),
+    ('\u{1f900}', 39967),
+    ('\u{1f979}', 39968),
+    ('\u{1f97a}', 39969),
+    ('\u{1f9cc}', 39970),
+    ('\u{1f9cd}', 39971),
+    ('\u{1fa54}', 39972),
+    ('\u{1fa60}', 39973),
+    ('\u{1fa6e}', 39974),
+    ('\u{1fa70}', 39975),
+    ('\u{1fa75}', 39976),
+    ('\u{1fa78}', 39977),
+    ('\u{1fa7b}', 39978),
+    ('\u{1fa80}', 39979),
+    ('\u{1fa87}', 39980),
+    ('\u{1fa90}', 39981),
+    ('\u{1faa9}', 39982),
+    ('\u{1fab0}', 39983),
+    ('\u{1fab7}', 39984),
+    ('\u{1fac0}', 39985),
+    ('\u{1fac3}', 39986),
+    ('\u{1fad0}', 39987),
+    ('\u{1fad7}', 39988),
+    ('\u{1fb00}', 39989),
+    ('\u{1fb93}', 39990),
+    ('\u{1fb94}', 39991),
+    ('\u{1fbcb}', 39992),
+    ('\u{1fbf0}', 7225),
+    ('\u{1fbfa}', 40003),
+    ('\u{20000}', 40004),
+    ('\u{2a6de}', 40005),
+    ('\u{2a700}', 40006),
+    ('\u{2b735}', 40007),
+    ('\u{2b740}', 40008),
+    ('\u{2b81e}', 40009),
+    ('\u{2b820}', 40010),
+    ('\u{2cea2}', 40011),
+    ('\u{2ceb0}', 40012),
+    ('\u{2ebe1}', 40013),
+    ('\u{2f800}', 7246),
+    ('\u{2f831}', 40063),
+    ('\u{2f834}', 7296),
+    ('\u{2f845}', 40081),
+    ('\u{2f847}', 7314),
+    ('\u{2f86a}', 40117),
+    ('\u{2f86c}', 7350),
+    ('\u{2f891}', 40155),
+    ('\u{2f893}', 40156),
+    ('\u{2f894}', 40157),
+    ('\u{2f896}', 7390),
+    ('\u{2f92c}', 40308),
+    ('\u{2f92e}', 7541),
+    ('\u{2f946}', 40333),
+    ('\u{2f948}', 7566),
+    ('\u{2f95d}', 40355),
+    ('\u{2f95f}', 7588),
+    ('\u{2f9fe}', 40515),
+    ('\u{2fa00}', 7748),
+    ('\u{2fa1e}', 40546),
+    ('\u{30000}', 40547),
+    ('\u{3134b}', 40548),
+    ('\u{e0100}', 40549),
+    ('\u{e01f0}', 40550),
 ];
 
 static MAPPING_TABLE: &[Mapping] = &[