personal web client for Bluesky
typescript solidjs bluesky atcute

refactor: remove unicode-segmenter

intl.segmenter is widely supported, so no need.

mary.my.id 2b408a4f 7da7bb17

verified
Changed files
+11 -1875
src
api
+11 -20
src/api/richtext/intl.ts
··· 1 - var _graphemeLen: (text: string) => number; 1 + const segmenter = new Intl.Segmenter(); 2 2 3 3 export const textEncoder = new TextEncoder(); 4 4 export const textDecoder = new TextDecoder(); 5 5 6 - export const graphemeLen = (text: string) => { 6 + export const graphemeLen = (text: string): number => { 7 7 var length = asciiLen(text); 8 8 9 9 if (length === undefined) { ··· 13 13 return length; 14 14 }; 15 15 16 - export const asciiLen = (str: string) => { 16 + export const asciiLen = (str: string): number | undefined => { 17 17 for (var idx = 0, len = str.length; idx < len; idx++) { 18 18 const char = str.charCodeAt(idx); 19 19 ··· 29 29 return asciiLen(str) ?? textEncoder.encode(str).byteLength; 30 30 }; 31 31 32 - if (Intl.Segmenter) { 33 - var segmenter = new Intl.Segmenter(); 32 + const _graphemeLen = (text: string): number => { 33 + var iterator = segmenter.segment(text)[Symbol.iterator](); 34 + var count = 0; 34 35 35 - _graphemeLen = (text) => { 36 - var iterator = segmenter.segment(text)[Symbol.iterator](); 37 - var count = 0; 36 + while (!iterator.next().done) { 37 + count++; 38 + } 38 39 39 - while (!iterator.next().done) { 40 - count++; 41 - } 42 - 43 - return count; 44 - }; 45 - } else { 46 - console.log('Intl.Segmenter API not available, falling back to polyfill...'); 47 - 48 - var { countGraphemes } = await import('./lib/unicode-segmenter.ts'); 49 - _graphemeLen = countGraphemes; 50 - } 40 + return count; 41 + };
-1855
src/api/richtext/lib/unicode-segmenter.ts
··· 1 - const enum GraphemeCategory { 2 - Any = 0, 3 - CR = 1, 4 - Control = 2, 5 - Extend = 3, 6 - Extended_Pictographic = 4, 7 - L = 5, 8 - LF = 6, 9 - LV = 7, 10 - LVT = 8, 11 - Prepend = 9, 12 - Regional_Indicator = 10, 13 - SpacingMark = 11, 14 - T = 12, 15 - V = 13, 16 - ZWJ = 14, 17 - } 18 - 19 - type CategorizedUnicodeRange<T> = [from: number, to: number, category: T]; 20 - type GraphemeCategoryRange = CategorizedUnicodeRange<GraphemeCategory>; 21 - 22 - const CONSONANT_TABLE: [l: number, h: number][] = [ 23 - [2325, 2361], 24 - [2392, 2399], 25 - [2424, 2431], 26 - [2453, 2472], 27 - [2474, 2480], 28 - [2482, 2482], 29 - [2486, 2489], 30 - [2524, 2525], 31 - [2527, 2527], 32 - [2544, 2545], 33 - [2709, 2728], 34 - [2730, 2736], 35 - [2738, 2739], 36 - [2741, 2745], 37 - [2809, 2809], 38 - [2837, 2856], 39 - [2858, 2864], 40 - [2866, 2867], 41 - [2869, 2873], 42 - [2908, 2909], 43 - [2911, 2911], 44 - [2929, 2929], 45 - [3093, 3112], 46 - [3114, 3129], 47 - [3160, 3162], 48 - [3349, 3386], 49 - ]; 50 - 51 - const GRAPHEME_CATEGORY_LOOKUP: number[] = [ 52 - 0, 5, 9, 9, 9, 9, 9, 10, 10, 10, 11, 11, 16, 21, 26, 29, 32, 37, 41, 53, 65, 75, 86, 97, 106, 116, 131, 143, 53 - 153, 157, 161, 168, 173, 183, 188, 189, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 198, 206, 54 - 209, 211, 219, 219, 232, 233, 242, 258, 262, 270, 270, 271, 271, 271, 271, 271, 279, 280, 282, 284, 284, 55 - 284, 286, 290, 290, 291, 291, 295, 297, 298, 313, 317, 317, 317, 318, 318, 318, 318, 322, 322, 322, 323, 56 - 324, 325, 325, 325, 325, 325, 328, 329, 329, 329, 329, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 57 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 58 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 59 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 60 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 61 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 62 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 63 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 64 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 65 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 66 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 67 - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 333, 335, 335, 335, 342, 347, 351, 360, 369, 379, 68 - 379, 386, 395, 405, 413, 423, 431, 441, 450, 459, 469, 477, 487, 495, 505, 514, 523, 533, 541, 551, 559, 69 - 569, 578, 587, 597, 605, 615, 623, 633, 642, 651, 661, 669, 679, 687, 697, 706, 715, 725, 733, 743, 751, 70 - 761, 770, 779, 789, 797, 807, 815, 825, 834, 843, 853, 861, 871, 879, 889, 898, 907, 917, 925, 935, 943, 71 - 953, 962, 971, 981, 989, 999, 1007, 1017, 1026, 1035, 1045, 1053, 1063, 1071, 1081, 1090, 1099, 1109, 1117, 72 - 1127, 1135, 1145, 1154, 1163, 1173, 1181, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 73 - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 74 - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 75 - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 76 - 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1189, 1190, 1190, 1192, 1192, 1192, 77 - 1192, 1193, 1193, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 78 - 1200, 1201, 1201, 1201, 1201, 1201, 1202, 1202, 1202, 1204, 1205, 1206, 1212, 1221, 1227, 1236, 1244, 1247, 79 - 1260, 1260, 1267, 1278, 1278, 1286, 1292, 1299, 1303, 1303, 1307, 1307, 1318, 1324, 1333, 1337, 1337, 1337, 80 - 1342, 1349, 1355, 1361, 1361, 1363, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 81 - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 82 - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1375, 1375, 1375, 1375, 1375, 1375, 83 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 84 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 85 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 86 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 87 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 88 - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1376, 1377, 1377, 1377, 1377, 89 - 1377, 1377, 1377, 1377, 1378, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 90 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 91 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 92 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 93 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 94 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 95 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 96 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 97 - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1384, 1384, 1384, 98 - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 99 - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1386, 1386, 100 - 1386, 1386, 1392, 1395, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 101 - 1396, 1396, 1399, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1407, 1408, 1409, 1409, 102 - 1409, 1411, 1411, 1411, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1413, 1414, 1414, 1414, 1414, 103 - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1415, 1419, 1423, 1428, 1428, 1428, 1430, 104 - 1430, 1430, 1431, 1431, 1432, 1433, 1434, 1435, 1438, 1440, 1442, 1442, 1442, 1443, 1443, 1443, 1443, 1443, 105 - 1443, 1443, 1443, 1443, 1443, 106 - ]; 107 - 108 - const GRAPHEME_CATEGORY_TABLE: GraphemeCategoryRange[] = [ 109 - [0, 9, GraphemeCategory.Control], 110 - [10, 10, GraphemeCategory.LF], 111 - [11, 12, GraphemeCategory.Control], 112 - [13, 13, GraphemeCategory.CR], 113 - [14, 31, GraphemeCategory.Control], 114 - [127, 159, GraphemeCategory.Control], 115 - [169, 169, GraphemeCategory.Extended_Pictographic], 116 - [173, 173, GraphemeCategory.Control], 117 - [174, 174, GraphemeCategory.Extended_Pictographic], 118 - [768, 879, GraphemeCategory.Extend], 119 - [1155, 1161, GraphemeCategory.Extend], 120 - [1425, 1469, GraphemeCategory.Extend], 121 - [1471, 1471, GraphemeCategory.Extend], 122 - [1473, 1474, GraphemeCategory.Extend], 123 - [1476, 1477, GraphemeCategory.Extend], 124 - [1479, 1479, GraphemeCategory.Extend], 125 - [1536, 1541, GraphemeCategory.Prepend], 126 - [1552, 1562, GraphemeCategory.Extend], 127 - [1564, 1564, GraphemeCategory.Control], 128 - [1611, 1631, GraphemeCategory.Extend], 129 - [1648, 1648, GraphemeCategory.Extend], 130 - [1750, 1756, GraphemeCategory.Extend], 131 - [1757, 1757, GraphemeCategory.Prepend], 132 - [1759, 1764, GraphemeCategory.Extend], 133 - [1767, 1768, GraphemeCategory.Extend], 134 - [1770, 1773, GraphemeCategory.Extend], 135 - [1807, 1807, GraphemeCategory.Prepend], 136 - [1809, 1809, GraphemeCategory.Extend], 137 - [1840, 1866, GraphemeCategory.Extend], 138 - [1958, 1968, GraphemeCategory.Extend], 139 - [2027, 2035, GraphemeCategory.Extend], 140 - [2045, 2045, GraphemeCategory.Extend], 141 - [2070, 2073, GraphemeCategory.Extend], 142 - [2075, 2083, GraphemeCategory.Extend], 143 - [2085, 2087, GraphemeCategory.Extend], 144 - [2089, 2093, GraphemeCategory.Extend], 145 - [2137, 2139, GraphemeCategory.Extend], 146 - [2192, 2193, GraphemeCategory.Prepend], 147 - [2200, 2207, GraphemeCategory.Extend], 148 - [2250, 2273, GraphemeCategory.Extend], 149 - [2274, 2274, GraphemeCategory.Prepend], 150 - [2275, 2306, GraphemeCategory.Extend], 151 - [2307, 2307, GraphemeCategory.SpacingMark], 152 - [2362, 2362, GraphemeCategory.Extend], 153 - [2363, 2363, GraphemeCategory.SpacingMark], 154 - [2364, 2364, GraphemeCategory.Extend], 155 - [2366, 2368, GraphemeCategory.SpacingMark], 156 - [2369, 2376, GraphemeCategory.Extend], 157 - [2377, 2380, GraphemeCategory.SpacingMark], 158 - [2381, 2381, GraphemeCategory.Extend], 159 - [2382, 2383, GraphemeCategory.SpacingMark], 160 - [2385, 2391, GraphemeCategory.Extend], 161 - [2402, 2403, GraphemeCategory.Extend], 162 - [2433, 2433, GraphemeCategory.Extend], 163 - [2434, 2435, GraphemeCategory.SpacingMark], 164 - [2492, 2492, GraphemeCategory.Extend], 165 - [2494, 2494, GraphemeCategory.Extend], 166 - [2495, 2496, GraphemeCategory.SpacingMark], 167 - [2497, 2500, GraphemeCategory.Extend], 168 - [2503, 2504, GraphemeCategory.SpacingMark], 169 - [2507, 2508, GraphemeCategory.SpacingMark], 170 - [2509, 2509, GraphemeCategory.Extend], 171 - [2519, 2519, GraphemeCategory.Extend], 172 - [2530, 2531, GraphemeCategory.Extend], 173 - [2558, 2558, GraphemeCategory.Extend], 174 - [2561, 2562, GraphemeCategory.Extend], 175 - [2563, 2563, GraphemeCategory.SpacingMark], 176 - [2620, 2620, GraphemeCategory.Extend], 177 - [2622, 2624, GraphemeCategory.SpacingMark], 178 - [2625, 2626, GraphemeCategory.Extend], 179 - [2631, 2632, GraphemeCategory.Extend], 180 - [2635, 2637, GraphemeCategory.Extend], 181 - [2641, 2641, GraphemeCategory.Extend], 182 - [2672, 2673, GraphemeCategory.Extend], 183 - [2677, 2677, GraphemeCategory.Extend], 184 - [2689, 2690, GraphemeCategory.Extend], 185 - [2691, 2691, GraphemeCategory.SpacingMark], 186 - [2748, 2748, GraphemeCategory.Extend], 187 - [2750, 2752, GraphemeCategory.SpacingMark], 188 - [2753, 2757, GraphemeCategory.Extend], 189 - [2759, 2760, GraphemeCategory.Extend], 190 - [2761, 2761, GraphemeCategory.SpacingMark], 191 - [2763, 2764, GraphemeCategory.SpacingMark], 192 - [2765, 2765, GraphemeCategory.Extend], 193 - [2786, 2787, GraphemeCategory.Extend], 194 - [2810, 2815, GraphemeCategory.Extend], 195 - [2817, 2817, GraphemeCategory.Extend], 196 - [2818, 2819, GraphemeCategory.SpacingMark], 197 - [2876, 2876, GraphemeCategory.Extend], 198 - [2878, 2879, GraphemeCategory.Extend], 199 - [2880, 2880, GraphemeCategory.SpacingMark], 200 - [2881, 2884, GraphemeCategory.Extend], 201 - [2887, 2888, GraphemeCategory.SpacingMark], 202 - [2891, 2892, GraphemeCategory.SpacingMark], 203 - [2893, 2893, GraphemeCategory.Extend], 204 - [2901, 2903, GraphemeCategory.Extend], 205 - [2914, 2915, GraphemeCategory.Extend], 206 - [2946, 2946, GraphemeCategory.Extend], 207 - [3006, 3006, GraphemeCategory.Extend], 208 - [3007, 3007, GraphemeCategory.SpacingMark], 209 - [3008, 3008, GraphemeCategory.Extend], 210 - [3009, 3010, GraphemeCategory.SpacingMark], 211 - [3014, 3016, GraphemeCategory.SpacingMark], 212 - [3018, 3020, GraphemeCategory.SpacingMark], 213 - [3021, 3021, GraphemeCategory.Extend], 214 - [3031, 3031, GraphemeCategory.Extend], 215 - [3072, 3072, GraphemeCategory.Extend], 216 - [3073, 3075, GraphemeCategory.SpacingMark], 217 - [3076, 3076, GraphemeCategory.Extend], 218 - [3132, 3132, GraphemeCategory.Extend], 219 - [3134, 3136, GraphemeCategory.Extend], 220 - [3137, 3140, GraphemeCategory.SpacingMark], 221 - [3142, 3144, GraphemeCategory.Extend], 222 - [3146, 3149, GraphemeCategory.Extend], 223 - [3157, 3158, GraphemeCategory.Extend], 224 - [3170, 3171, GraphemeCategory.Extend], 225 - [3201, 3201, GraphemeCategory.Extend], 226 - [3202, 3203, GraphemeCategory.SpacingMark], 227 - [3260, 3260, GraphemeCategory.Extend], 228 - [3262, 3262, GraphemeCategory.SpacingMark], 229 - [3263, 3263, GraphemeCategory.Extend], 230 - [3264, 3265, GraphemeCategory.SpacingMark], 231 - [3266, 3266, GraphemeCategory.Extend], 232 - [3267, 3268, GraphemeCategory.SpacingMark], 233 - [3270, 3270, GraphemeCategory.Extend], 234 - [3271, 3272, GraphemeCategory.SpacingMark], 235 - [3274, 3275, GraphemeCategory.SpacingMark], 236 - [3276, 3277, GraphemeCategory.Extend], 237 - [3285, 3286, GraphemeCategory.Extend], 238 - [3298, 3299, GraphemeCategory.Extend], 239 - [3315, 3315, GraphemeCategory.SpacingMark], 240 - [3328, 3329, GraphemeCategory.Extend], 241 - [3330, 3331, GraphemeCategory.SpacingMark], 242 - [3387, 3388, GraphemeCategory.Extend], 243 - [3390, 3390, GraphemeCategory.Extend], 244 - [3391, 3392, GraphemeCategory.SpacingMark], 245 - [3393, 3396, GraphemeCategory.Extend], 246 - [3398, 3400, GraphemeCategory.SpacingMark], 247 - [3402, 3404, GraphemeCategory.SpacingMark], 248 - [3405, 3405, GraphemeCategory.Extend], 249 - [3406, 3406, GraphemeCategory.Prepend], 250 - [3415, 3415, GraphemeCategory.Extend], 251 - [3426, 3427, GraphemeCategory.Extend], 252 - [3457, 3457, GraphemeCategory.Extend], 253 - [3458, 3459, GraphemeCategory.SpacingMark], 254 - [3530, 3530, GraphemeCategory.Extend], 255 - [3535, 3535, GraphemeCategory.Extend], 256 - [3536, 3537, GraphemeCategory.SpacingMark], 257 - [3538, 3540, GraphemeCategory.Extend], 258 - [3542, 3542, GraphemeCategory.Extend], 259 - [3544, 3550, GraphemeCategory.SpacingMark], 260 - [3551, 3551, GraphemeCategory.Extend], 261 - [3570, 3571, GraphemeCategory.SpacingMark], 262 - [3633, 3633, GraphemeCategory.Extend], 263 - [3635, 3635, GraphemeCategory.SpacingMark], 264 - [3636, 3642, GraphemeCategory.Extend], 265 - [3655, 3662, GraphemeCategory.Extend], 266 - [3761, 3761, GraphemeCategory.Extend], 267 - [3763, 3763, GraphemeCategory.SpacingMark], 268 - [3764, 3772, GraphemeCategory.Extend], 269 - [3784, 3790, GraphemeCategory.Extend], 270 - [3864, 3865, GraphemeCategory.Extend], 271 - [3893, 3893, GraphemeCategory.Extend], 272 - [3895, 3895, GraphemeCategory.Extend], 273 - [3897, 3897, GraphemeCategory.Extend], 274 - [3902, 3903, GraphemeCategory.SpacingMark], 275 - [3953, 3966, GraphemeCategory.Extend], 276 - [3967, 3967, GraphemeCategory.SpacingMark], 277 - [3968, 3972, GraphemeCategory.Extend], 278 - [3974, 3975, GraphemeCategory.Extend], 279 - [3981, 3991, GraphemeCategory.Extend], 280 - [3993, 4028, GraphemeCategory.Extend], 281 - [4038, 4038, GraphemeCategory.Extend], 282 - [4141, 4144, GraphemeCategory.Extend], 283 - [4145, 4145, GraphemeCategory.SpacingMark], 284 - [4146, 4151, GraphemeCategory.Extend], 285 - [4153, 4154, GraphemeCategory.Extend], 286 - [4155, 4156, GraphemeCategory.SpacingMark], 287 - [4157, 4158, GraphemeCategory.Extend], 288 - [4182, 4183, GraphemeCategory.SpacingMark], 289 - [4184, 4185, GraphemeCategory.Extend], 290 - [4190, 4192, GraphemeCategory.Extend], 291 - [4209, 4212, GraphemeCategory.Extend], 292 - [4226, 4226, GraphemeCategory.Extend], 293 - [4228, 4228, GraphemeCategory.SpacingMark], 294 - [4229, 4230, GraphemeCategory.Extend], 295 - [4237, 4237, GraphemeCategory.Extend], 296 - [4253, 4253, GraphemeCategory.Extend], 297 - [4352, 4447, GraphemeCategory.L], 298 - [4448, 4519, GraphemeCategory.V], 299 - [4520, 4607, GraphemeCategory.T], 300 - [4957, 4959, GraphemeCategory.Extend], 301 - [5906, 5908, GraphemeCategory.Extend], 302 - [5909, 5909, GraphemeCategory.SpacingMark], 303 - [5938, 5939, GraphemeCategory.Extend], 304 - [5940, 5940, GraphemeCategory.SpacingMark], 305 - [5970, 5971, GraphemeCategory.Extend], 306 - [6002, 6003, GraphemeCategory.Extend], 307 - [6068, 6069, GraphemeCategory.Extend], 308 - [6070, 6070, GraphemeCategory.SpacingMark], 309 - [6071, 6077, GraphemeCategory.Extend], 310 - [6078, 6085, GraphemeCategory.SpacingMark], 311 - [6086, 6086, GraphemeCategory.Extend], 312 - [6087, 6088, GraphemeCategory.SpacingMark], 313 - [6089, 6099, GraphemeCategory.Extend], 314 - [6109, 6109, GraphemeCategory.Extend], 315 - [6155, 6157, GraphemeCategory.Extend], 316 - [6158, 6158, GraphemeCategory.Control], 317 - [6159, 6159, GraphemeCategory.Extend], 318 - [6277, 6278, GraphemeCategory.Extend], 319 - [6313, 6313, GraphemeCategory.Extend], 320 - [6432, 6434, GraphemeCategory.Extend], 321 - [6435, 6438, GraphemeCategory.SpacingMark], 322 - [6439, 6440, GraphemeCategory.Extend], 323 - [6441, 6443, GraphemeCategory.SpacingMark], 324 - [6448, 6449, GraphemeCategory.SpacingMark], 325 - [6450, 6450, GraphemeCategory.Extend], 326 - [6451, 6456, GraphemeCategory.SpacingMark], 327 - [6457, 6459, GraphemeCategory.Extend], 328 - [6679, 6680, GraphemeCategory.Extend], 329 - [6681, 6682, GraphemeCategory.SpacingMark], 330 - [6683, 6683, GraphemeCategory.Extend], 331 - [6741, 6741, GraphemeCategory.SpacingMark], 332 - [6742, 6742, GraphemeCategory.Extend], 333 - [6743, 6743, GraphemeCategory.SpacingMark], 334 - [6744, 6750, GraphemeCategory.Extend], 335 - [6752, 6752, GraphemeCategory.Extend], 336 - [6754, 6754, GraphemeCategory.Extend], 337 - [6757, 6764, GraphemeCategory.Extend], 338 - [6765, 6770, GraphemeCategory.SpacingMark], 339 - [6771, 6780, GraphemeCategory.Extend], 340 - [6783, 6783, GraphemeCategory.Extend], 341 - [6832, 6862, GraphemeCategory.Extend], 342 - [6912, 6915, GraphemeCategory.Extend], 343 - [6916, 6916, GraphemeCategory.SpacingMark], 344 - [6964, 6970, GraphemeCategory.Extend], 345 - [6971, 6971, GraphemeCategory.SpacingMark], 346 - [6972, 6972, GraphemeCategory.Extend], 347 - [6973, 6977, GraphemeCategory.SpacingMark], 348 - [6978, 6978, GraphemeCategory.Extend], 349 - [6979, 6980, GraphemeCategory.SpacingMark], 350 - [7019, 7027, GraphemeCategory.Extend], 351 - [7040, 7041, GraphemeCategory.Extend], 352 - [7042, 7042, GraphemeCategory.SpacingMark], 353 - [7073, 7073, GraphemeCategory.SpacingMark], 354 - [7074, 7077, GraphemeCategory.Extend], 355 - [7078, 7079, GraphemeCategory.SpacingMark], 356 - [7080, 7081, GraphemeCategory.Extend], 357 - [7082, 7082, GraphemeCategory.SpacingMark], 358 - [7083, 7085, GraphemeCategory.Extend], 359 - [7142, 7142, GraphemeCategory.Extend], 360 - [7143, 7143, GraphemeCategory.SpacingMark], 361 - [7144, 7145, GraphemeCategory.Extend], 362 - [7146, 7148, GraphemeCategory.SpacingMark], 363 - [7149, 7149, GraphemeCategory.Extend], 364 - [7150, 7150, GraphemeCategory.SpacingMark], 365 - [7151, 7153, GraphemeCategory.Extend], 366 - [7154, 7155, GraphemeCategory.SpacingMark], 367 - [7204, 7211, GraphemeCategory.SpacingMark], 368 - [7212, 7219, GraphemeCategory.Extend], 369 - [7220, 7221, GraphemeCategory.SpacingMark], 370 - [7222, 7223, GraphemeCategory.Extend], 371 - [7376, 7378, GraphemeCategory.Extend], 372 - [7380, 7392, GraphemeCategory.Extend], 373 - [7393, 7393, GraphemeCategory.SpacingMark], 374 - [7394, 7400, GraphemeCategory.Extend], 375 - [7405, 7405, GraphemeCategory.Extend], 376 - [7412, 7412, GraphemeCategory.Extend], 377 - [7415, 7415, GraphemeCategory.SpacingMark], 378 - [7416, 7417, GraphemeCategory.Extend], 379 - [7616, 7679, GraphemeCategory.Extend], 380 - [8203, 8203, GraphemeCategory.Control], 381 - [8204, 8204, GraphemeCategory.Extend], 382 - [8205, 8205, GraphemeCategory.ZWJ], 383 - [8206, 8207, GraphemeCategory.Control], 384 - [8232, 8238, GraphemeCategory.Control], 385 - [8252, 8252, GraphemeCategory.Extended_Pictographic], 386 - [8265, 8265, GraphemeCategory.Extended_Pictographic], 387 - [8288, 8303, GraphemeCategory.Control], 388 - [8400, 8432, GraphemeCategory.Extend], 389 - [8482, 8482, GraphemeCategory.Extended_Pictographic], 390 - [8505, 8505, GraphemeCategory.Extended_Pictographic], 391 - [8596, 8601, GraphemeCategory.Extended_Pictographic], 392 - [8617, 8618, GraphemeCategory.Extended_Pictographic], 393 - [8986, 8987, GraphemeCategory.Extended_Pictographic], 394 - [9000, 9000, GraphemeCategory.Extended_Pictographic], 395 - [9096, 9096, GraphemeCategory.Extended_Pictographic], 396 - [9167, 9167, GraphemeCategory.Extended_Pictographic], 397 - [9193, 9203, GraphemeCategory.Extended_Pictographic], 398 - [9208, 9210, GraphemeCategory.Extended_Pictographic], 399 - [9410, 9410, GraphemeCategory.Extended_Pictographic], 400 - [9642, 9643, GraphemeCategory.Extended_Pictographic], 401 - [9654, 9654, GraphemeCategory.Extended_Pictographic], 402 - [9664, 9664, GraphemeCategory.Extended_Pictographic], 403 - [9723, 9726, GraphemeCategory.Extended_Pictographic], 404 - [9728, 9733, GraphemeCategory.Extended_Pictographic], 405 - [9735, 9746, GraphemeCategory.Extended_Pictographic], 406 - [9748, 9861, GraphemeCategory.Extended_Pictographic], 407 - [9872, 9989, GraphemeCategory.Extended_Pictographic], 408 - [9992, 10002, GraphemeCategory.Extended_Pictographic], 409 - [10004, 10004, GraphemeCategory.Extended_Pictographic], 410 - [10006, 10006, GraphemeCategory.Extended_Pictographic], 411 - [10013, 10013, GraphemeCategory.Extended_Pictographic], 412 - [10017, 10017, GraphemeCategory.Extended_Pictographic], 413 - [10024, 10024, GraphemeCategory.Extended_Pictographic], 414 - [10035, 10036, GraphemeCategory.Extended_Pictographic], 415 - [10052, 10052, GraphemeCategory.Extended_Pictographic], 416 - [10055, 10055, GraphemeCategory.Extended_Pictographic], 417 - [10060, 10060, GraphemeCategory.Extended_Pictographic], 418 - [10062, 10062, GraphemeCategory.Extended_Pictographic], 419 - [10067, 10069, GraphemeCategory.Extended_Pictographic], 420 - [10071, 10071, GraphemeCategory.Extended_Pictographic], 421 - [10083, 10087, GraphemeCategory.Extended_Pictographic], 422 - [10133, 10135, GraphemeCategory.Extended_Pictographic], 423 - [10145, 10145, GraphemeCategory.Extended_Pictographic], 424 - [10160, 10160, GraphemeCategory.Extended_Pictographic], 425 - [10175, 10175, GraphemeCategory.Extended_Pictographic], 426 - [10548, 10549, GraphemeCategory.Extended_Pictographic], 427 - [11013, 11015, GraphemeCategory.Extended_Pictographic], 428 - [11035, 11036, GraphemeCategory.Extended_Pictographic], 429 - [11088, 11088, GraphemeCategory.Extended_Pictographic], 430 - [11093, 11093, GraphemeCategory.Extended_Pictographic], 431 - [11503, 11505, GraphemeCategory.Extend], 432 - [11647, 11647, GraphemeCategory.Extend], 433 - [11744, 11775, GraphemeCategory.Extend], 434 - [12330, 12335, GraphemeCategory.Extend], 435 - [12336, 12336, GraphemeCategory.Extended_Pictographic], 436 - [12349, 12349, GraphemeCategory.Extended_Pictographic], 437 - [12441, 12442, GraphemeCategory.Extend], 438 - [12951, 12951, GraphemeCategory.Extended_Pictographic], 439 - [12953, 12953, GraphemeCategory.Extended_Pictographic], 440 - [42607, 42610, GraphemeCategory.Extend], 441 - [42612, 42621, GraphemeCategory.Extend], 442 - [42654, 42655, GraphemeCategory.Extend], 443 - [42736, 42737, GraphemeCategory.Extend], 444 - [43010, 43010, GraphemeCategory.Extend], 445 - [43014, 43014, GraphemeCategory.Extend], 446 - [43019, 43019, GraphemeCategory.Extend], 447 - [43043, 43044, GraphemeCategory.SpacingMark], 448 - [43045, 43046, GraphemeCategory.Extend], 449 - [43047, 43047, GraphemeCategory.SpacingMark], 450 - [43052, 43052, GraphemeCategory.Extend], 451 - [43136, 43137, GraphemeCategory.SpacingMark], 452 - [43188, 43203, GraphemeCategory.SpacingMark], 453 - [43204, 43205, GraphemeCategory.Extend], 454 - [43232, 43249, GraphemeCategory.Extend], 455 - [43263, 43263, GraphemeCategory.Extend], 456 - [43302, 43309, GraphemeCategory.Extend], 457 - [43335, 43345, GraphemeCategory.Extend], 458 - [43346, 43347, GraphemeCategory.SpacingMark], 459 - [43360, 43388, GraphemeCategory.L], 460 - [43392, 43394, GraphemeCategory.Extend], 461 - [43395, 43395, GraphemeCategory.SpacingMark], 462 - [43443, 43443, GraphemeCategory.Extend], 463 - [43444, 43445, GraphemeCategory.SpacingMark], 464 - [43446, 43449, GraphemeCategory.Extend], 465 - [43450, 43451, GraphemeCategory.SpacingMark], 466 - [43452, 43453, GraphemeCategory.Extend], 467 - [43454, 43456, GraphemeCategory.SpacingMark], 468 - [43493, 43493, GraphemeCategory.Extend], 469 - [43561, 43566, GraphemeCategory.Extend], 470 - [43567, 43568, GraphemeCategory.SpacingMark], 471 - [43569, 43570, GraphemeCategory.Extend], 472 - [43571, 43572, GraphemeCategory.SpacingMark], 473 - [43573, 43574, GraphemeCategory.Extend], 474 - [43587, 43587, GraphemeCategory.Extend], 475 - [43596, 43596, GraphemeCategory.Extend], 476 - [43597, 43597, GraphemeCategory.SpacingMark], 477 - [43644, 43644, GraphemeCategory.Extend], 478 - [43696, 43696, GraphemeCategory.Extend], 479 - [43698, 43700, GraphemeCategory.Extend], 480 - [43703, 43704, GraphemeCategory.Extend], 481 - [43710, 43711, GraphemeCategory.Extend], 482 - [43713, 43713, GraphemeCategory.Extend], 483 - [43755, 43755, GraphemeCategory.SpacingMark], 484 - [43756, 43757, GraphemeCategory.Extend], 485 - [43758, 43759, GraphemeCategory.SpacingMark], 486 - [43765, 43765, GraphemeCategory.SpacingMark], 487 - [43766, 43766, GraphemeCategory.Extend], 488 - [44003, 44004, GraphemeCategory.SpacingMark], 489 - [44005, 44005, GraphemeCategory.Extend], 490 - [44006, 44007, GraphemeCategory.SpacingMark], 491 - [44008, 44008, GraphemeCategory.Extend], 492 - [44009, 44010, GraphemeCategory.SpacingMark], 493 - [44012, 44012, GraphemeCategory.SpacingMark], 494 - [44013, 44013, GraphemeCategory.Extend], 495 - [44032, 44032, GraphemeCategory.LV], 496 - [44033, 44059, GraphemeCategory.LVT], 497 - [44060, 44060, GraphemeCategory.LV], 498 - [44061, 44087, GraphemeCategory.LVT], 499 - [44088, 44088, GraphemeCategory.LV], 500 - [44089, 44115, GraphemeCategory.LVT], 501 - [44116, 44116, GraphemeCategory.LV], 502 - [44117, 44143, GraphemeCategory.LVT], 503 - [44144, 44144, GraphemeCategory.LV], 504 - [44145, 44171, GraphemeCategory.LVT], 505 - [44172, 44172, GraphemeCategory.LV], 506 - [44173, 44199, GraphemeCategory.LVT], 507 - [44200, 44200, GraphemeCategory.LV], 508 - [44201, 44227, GraphemeCategory.LVT], 509 - [44228, 44228, GraphemeCategory.LV], 510 - [44229, 44255, GraphemeCategory.LVT], 511 - [44256, 44256, GraphemeCategory.LV], 512 - [44257, 44283, GraphemeCategory.LVT], 513 - [44284, 44284, GraphemeCategory.LV], 514 - [44285, 44311, GraphemeCategory.LVT], 515 - [44312, 44312, GraphemeCategory.LV], 516 - [44313, 44339, GraphemeCategory.LVT], 517 - [44340, 44340, GraphemeCategory.LV], 518 - [44341, 44367, GraphemeCategory.LVT], 519 - [44368, 44368, GraphemeCategory.LV], 520 - [44369, 44395, GraphemeCategory.LVT], 521 - [44396, 44396, GraphemeCategory.LV], 522 - [44397, 44423, GraphemeCategory.LVT], 523 - [44424, 44424, GraphemeCategory.LV], 524 - [44425, 44451, GraphemeCategory.LVT], 525 - [44452, 44452, GraphemeCategory.LV], 526 - [44453, 44479, GraphemeCategory.LVT], 527 - [44480, 44480, GraphemeCategory.LV], 528 - [44481, 44507, GraphemeCategory.LVT], 529 - [44508, 44508, GraphemeCategory.LV], 530 - [44509, 44535, GraphemeCategory.LVT], 531 - [44536, 44536, GraphemeCategory.LV], 532 - [44537, 44563, GraphemeCategory.LVT], 533 - [44564, 44564, GraphemeCategory.LV], 534 - [44565, 44591, GraphemeCategory.LVT], 535 - [44592, 44592, GraphemeCategory.LV], 536 - [44593, 44619, GraphemeCategory.LVT], 537 - [44620, 44620, GraphemeCategory.LV], 538 - [44621, 44647, GraphemeCategory.LVT], 539 - [44648, 44648, GraphemeCategory.LV], 540 - [44649, 44675, GraphemeCategory.LVT], 541 - [44676, 44676, GraphemeCategory.LV], 542 - [44677, 44703, GraphemeCategory.LVT], 543 - [44704, 44704, GraphemeCategory.LV], 544 - [44705, 44731, GraphemeCategory.LVT], 545 - [44732, 44732, GraphemeCategory.LV], 546 - [44733, 44759, GraphemeCategory.LVT], 547 - [44760, 44760, GraphemeCategory.LV], 548 - [44761, 44787, GraphemeCategory.LVT], 549 - [44788, 44788, GraphemeCategory.LV], 550 - [44789, 44815, GraphemeCategory.LVT], 551 - [44816, 44816, GraphemeCategory.LV], 552 - [44817, 44843, GraphemeCategory.LVT], 553 - [44844, 44844, GraphemeCategory.LV], 554 - [44845, 44871, GraphemeCategory.LVT], 555 - [44872, 44872, GraphemeCategory.LV], 556 - [44873, 44899, GraphemeCategory.LVT], 557 - [44900, 44900, GraphemeCategory.LV], 558 - [44901, 44927, GraphemeCategory.LVT], 559 - [44928, 44928, GraphemeCategory.LV], 560 - [44929, 44955, GraphemeCategory.LVT], 561 - [44956, 44956, GraphemeCategory.LV], 562 - [44957, 44983, GraphemeCategory.LVT], 563 - [44984, 44984, GraphemeCategory.LV], 564 - [44985, 45011, GraphemeCategory.LVT], 565 - [45012, 45012, GraphemeCategory.LV], 566 - [45013, 45039, GraphemeCategory.LVT], 567 - [45040, 45040, GraphemeCategory.LV], 568 - [45041, 45067, GraphemeCategory.LVT], 569 - [45068, 45068, GraphemeCategory.LV], 570 - [45069, 45095, GraphemeCategory.LVT], 571 - [45096, 45096, GraphemeCategory.LV], 572 - [45097, 45123, GraphemeCategory.LVT], 573 - [45124, 45124, GraphemeCategory.LV], 574 - [45125, 45151, GraphemeCategory.LVT], 575 - [45152, 45152, GraphemeCategory.LV], 576 - [45153, 45179, GraphemeCategory.LVT], 577 - [45180, 45180, GraphemeCategory.LV], 578 - [45181, 45207, GraphemeCategory.LVT], 579 - [45208, 45208, GraphemeCategory.LV], 580 - [45209, 45235, GraphemeCategory.LVT], 581 - [45236, 45236, GraphemeCategory.LV], 582 - [45237, 45263, GraphemeCategory.LVT], 583 - [45264, 45264, GraphemeCategory.LV], 584 - [45265, 45291, GraphemeCategory.LVT], 585 - [45292, 45292, GraphemeCategory.LV], 586 - [45293, 45319, GraphemeCategory.LVT], 587 - [45320, 45320, GraphemeCategory.LV], 588 - [45321, 45347, GraphemeCategory.LVT], 589 - [45348, 45348, GraphemeCategory.LV], 590 - [45349, 45375, GraphemeCategory.LVT], 591 - [45376, 45376, GraphemeCategory.LV], 592 - [45377, 45403, GraphemeCategory.LVT], 593 - [45404, 45404, GraphemeCategory.LV], 594 - [45405, 45431, GraphemeCategory.LVT], 595 - [45432, 45432, GraphemeCategory.LV], 596 - [45433, 45459, GraphemeCategory.LVT], 597 - [45460, 45460, GraphemeCategory.LV], 598 - [45461, 45487, GraphemeCategory.LVT], 599 - [45488, 45488, GraphemeCategory.LV], 600 - [45489, 45515, GraphemeCategory.LVT], 601 - [45516, 45516, GraphemeCategory.LV], 602 - [45517, 45543, GraphemeCategory.LVT], 603 - [45544, 45544, GraphemeCategory.LV], 604 - [45545, 45571, GraphemeCategory.LVT], 605 - [45572, 45572, GraphemeCategory.LV], 606 - [45573, 45599, GraphemeCategory.LVT], 607 - [45600, 45600, GraphemeCategory.LV], 608 - [45601, 45627, GraphemeCategory.LVT], 609 - [45628, 45628, GraphemeCategory.LV], 610 - [45629, 45655, GraphemeCategory.LVT], 611 - [45656, 45656, GraphemeCategory.LV], 612 - [45657, 45683, GraphemeCategory.LVT], 613 - [45684, 45684, GraphemeCategory.LV], 614 - [45685, 45711, GraphemeCategory.LVT], 615 - [45712, 45712, GraphemeCategory.LV], 616 - [45713, 45739, GraphemeCategory.LVT], 617 - [45740, 45740, GraphemeCategory.LV], 618 - [45741, 45767, GraphemeCategory.LVT], 619 - [45768, 45768, GraphemeCategory.LV], 620 - [45769, 45795, GraphemeCategory.LVT], 621 - [45796, 45796, GraphemeCategory.LV], 622 - [45797, 45823, GraphemeCategory.LVT], 623 - [45824, 45824, GraphemeCategory.LV], 624 - [45825, 45851, GraphemeCategory.LVT], 625 - [45852, 45852, GraphemeCategory.LV], 626 - [45853, 45879, GraphemeCategory.LVT], 627 - [45880, 45880, GraphemeCategory.LV], 628 - [45881, 45907, GraphemeCategory.LVT], 629 - [45908, 45908, GraphemeCategory.LV], 630 - [45909, 45935, GraphemeCategory.LVT], 631 - [45936, 45936, GraphemeCategory.LV], 632 - [45937, 45963, GraphemeCategory.LVT], 633 - [45964, 45964, GraphemeCategory.LV], 634 - [45965, 45991, GraphemeCategory.LVT], 635 - [45992, 45992, GraphemeCategory.LV], 636 - [45993, 46019, GraphemeCategory.LVT], 637 - [46020, 46020, GraphemeCategory.LV], 638 - [46021, 46047, GraphemeCategory.LVT], 639 - [46048, 46048, GraphemeCategory.LV], 640 - [46049, 46075, GraphemeCategory.LVT], 641 - [46076, 46076, GraphemeCategory.LV], 642 - [46077, 46103, GraphemeCategory.LVT], 643 - [46104, 46104, GraphemeCategory.LV], 644 - [46105, 46131, GraphemeCategory.LVT], 645 - [46132, 46132, GraphemeCategory.LV], 646 - [46133, 46159, GraphemeCategory.LVT], 647 - [46160, 46160, GraphemeCategory.LV], 648 - [46161, 46187, GraphemeCategory.LVT], 649 - [46188, 46188, GraphemeCategory.LV], 650 - [46189, 46215, GraphemeCategory.LVT], 651 - [46216, 46216, GraphemeCategory.LV], 652 - [46217, 46243, GraphemeCategory.LVT], 653 - [46244, 46244, GraphemeCategory.LV], 654 - [46245, 46271, GraphemeCategory.LVT], 655 - [46272, 46272, GraphemeCategory.LV], 656 - [46273, 46299, GraphemeCategory.LVT], 657 - [46300, 46300, GraphemeCategory.LV], 658 - [46301, 46327, GraphemeCategory.LVT], 659 - [46328, 46328, GraphemeCategory.LV], 660 - [46329, 46355, GraphemeCategory.LVT], 661 - [46356, 46356, GraphemeCategory.LV], 662 - [46357, 46383, GraphemeCategory.LVT], 663 - [46384, 46384, GraphemeCategory.LV], 664 - [46385, 46411, GraphemeCategory.LVT], 665 - [46412, 46412, GraphemeCategory.LV], 666 - [46413, 46439, GraphemeCategory.LVT], 667 - [46440, 46440, GraphemeCategory.LV], 668 - [46441, 46467, GraphemeCategory.LVT], 669 - [46468, 46468, GraphemeCategory.LV], 670 - [46469, 46495, GraphemeCategory.LVT], 671 - [46496, 46496, GraphemeCategory.LV], 672 - [46497, 46523, GraphemeCategory.LVT], 673 - [46524, 46524, GraphemeCategory.LV], 674 - [46525, 46551, GraphemeCategory.LVT], 675 - [46552, 46552, GraphemeCategory.LV], 676 - [46553, 46579, GraphemeCategory.LVT], 677 - [46580, 46580, GraphemeCategory.LV], 678 - [46581, 46607, GraphemeCategory.LVT], 679 - [46608, 46608, GraphemeCategory.LV], 680 - [46609, 46635, GraphemeCategory.LVT], 681 - [46636, 46636, GraphemeCategory.LV], 682 - [46637, 46663, GraphemeCategory.LVT], 683 - [46664, 46664, GraphemeCategory.LV], 684 - [46665, 46691, GraphemeCategory.LVT], 685 - [46692, 46692, GraphemeCategory.LV], 686 - [46693, 46719, GraphemeCategory.LVT], 687 - [46720, 46720, GraphemeCategory.LV], 688 - [46721, 46747, GraphemeCategory.LVT], 689 - [46748, 46748, GraphemeCategory.LV], 690 - [46749, 46775, GraphemeCategory.LVT], 691 - [46776, 46776, GraphemeCategory.LV], 692 - [46777, 46803, GraphemeCategory.LVT], 693 - [46804, 46804, GraphemeCategory.LV], 694 - [46805, 46831, GraphemeCategory.LVT], 695 - [46832, 46832, GraphemeCategory.LV], 696 - [46833, 46859, GraphemeCategory.LVT], 697 - [46860, 46860, GraphemeCategory.LV], 698 - [46861, 46887, GraphemeCategory.LVT], 699 - [46888, 46888, GraphemeCategory.LV], 700 - [46889, 46915, GraphemeCategory.LVT], 701 - [46916, 46916, GraphemeCategory.LV], 702 - [46917, 46943, GraphemeCategory.LVT], 703 - [46944, 46944, GraphemeCategory.LV], 704 - [46945, 46971, GraphemeCategory.LVT], 705 - [46972, 46972, GraphemeCategory.LV], 706 - [46973, 46999, GraphemeCategory.LVT], 707 - [47000, 47000, GraphemeCategory.LV], 708 - [47001, 47027, GraphemeCategory.LVT], 709 - [47028, 47028, GraphemeCategory.LV], 710 - [47029, 47055, GraphemeCategory.LVT], 711 - [47056, 47056, GraphemeCategory.LV], 712 - [47057, 47083, GraphemeCategory.LVT], 713 - [47084, 47084, GraphemeCategory.LV], 714 - [47085, 47111, GraphemeCategory.LVT], 715 - [47112, 47112, GraphemeCategory.LV], 716 - [47113, 47139, GraphemeCategory.LVT], 717 - [47140, 47140, GraphemeCategory.LV], 718 - [47141, 47167, GraphemeCategory.LVT], 719 - [47168, 47168, GraphemeCategory.LV], 720 - [47169, 47195, GraphemeCategory.LVT], 721 - [47196, 47196, GraphemeCategory.LV], 722 - [47197, 47223, GraphemeCategory.LVT], 723 - [47224, 47224, GraphemeCategory.LV], 724 - [47225, 47251, GraphemeCategory.LVT], 725 - [47252, 47252, GraphemeCategory.LV], 726 - [47253, 47279, GraphemeCategory.LVT], 727 - [47280, 47280, GraphemeCategory.LV], 728 - [47281, 47307, GraphemeCategory.LVT], 729 - [47308, 47308, GraphemeCategory.LV], 730 - [47309, 47335, GraphemeCategory.LVT], 731 - [47336, 47336, GraphemeCategory.LV], 732 - [47337, 47363, GraphemeCategory.LVT], 733 - [47364, 47364, GraphemeCategory.LV], 734 - [47365, 47391, GraphemeCategory.LVT], 735 - [47392, 47392, GraphemeCategory.LV], 736 - [47393, 47419, GraphemeCategory.LVT], 737 - [47420, 47420, GraphemeCategory.LV], 738 - [47421, 47447, GraphemeCategory.LVT], 739 - [47448, 47448, GraphemeCategory.LV], 740 - [47449, 47475, GraphemeCategory.LVT], 741 - [47476, 47476, GraphemeCategory.LV], 742 - [47477, 47503, GraphemeCategory.LVT], 743 - [47504, 47504, GraphemeCategory.LV], 744 - [47505, 47531, GraphemeCategory.LVT], 745 - [47532, 47532, GraphemeCategory.LV], 746 - [47533, 47559, GraphemeCategory.LVT], 747 - [47560, 47560, GraphemeCategory.LV], 748 - [47561, 47587, GraphemeCategory.LVT], 749 - [47588, 47588, GraphemeCategory.LV], 750 - [47589, 47615, GraphemeCategory.LVT], 751 - [47616, 47616, GraphemeCategory.LV], 752 - [47617, 47643, GraphemeCategory.LVT], 753 - [47644, 47644, GraphemeCategory.LV], 754 - [47645, 47671, GraphemeCategory.LVT], 755 - [47672, 47672, GraphemeCategory.LV], 756 - [47673, 47699, GraphemeCategory.LVT], 757 - [47700, 47700, GraphemeCategory.LV], 758 - [47701, 47727, GraphemeCategory.LVT], 759 - [47728, 47728, GraphemeCategory.LV], 760 - [47729, 47755, GraphemeCategory.LVT], 761 - [47756, 47756, GraphemeCategory.LV], 762 - [47757, 47783, GraphemeCategory.LVT], 763 - [47784, 47784, GraphemeCategory.LV], 764 - [47785, 47811, GraphemeCategory.LVT], 765 - [47812, 47812, GraphemeCategory.LV], 766 - [47813, 47839, GraphemeCategory.LVT], 767 - [47840, 47840, GraphemeCategory.LV], 768 - [47841, 47867, GraphemeCategory.LVT], 769 - [47868, 47868, GraphemeCategory.LV], 770 - [47869, 47895, GraphemeCategory.LVT], 771 - [47896, 47896, GraphemeCategory.LV], 772 - [47897, 47923, GraphemeCategory.LVT], 773 - [47924, 47924, GraphemeCategory.LV], 774 - [47925, 47951, GraphemeCategory.LVT], 775 - [47952, 47952, GraphemeCategory.LV], 776 - [47953, 47979, GraphemeCategory.LVT], 777 - [47980, 47980, GraphemeCategory.LV], 778 - [47981, 48007, GraphemeCategory.LVT], 779 - [48008, 48008, GraphemeCategory.LV], 780 - [48009, 48035, GraphemeCategory.LVT], 781 - [48036, 48036, GraphemeCategory.LV], 782 - [48037, 48063, GraphemeCategory.LVT], 783 - [48064, 48064, GraphemeCategory.LV], 784 - [48065, 48091, GraphemeCategory.LVT], 785 - [48092, 48092, GraphemeCategory.LV], 786 - [48093, 48119, GraphemeCategory.LVT], 787 - [48120, 48120, GraphemeCategory.LV], 788 - [48121, 48147, GraphemeCategory.LVT], 789 - [48148, 48148, GraphemeCategory.LV], 790 - [48149, 48175, GraphemeCategory.LVT], 791 - [48176, 48176, GraphemeCategory.LV], 792 - [48177, 48203, GraphemeCategory.LVT], 793 - [48204, 48204, GraphemeCategory.LV], 794 - [48205, 48231, GraphemeCategory.LVT], 795 - [48232, 48232, GraphemeCategory.LV], 796 - [48233, 48259, GraphemeCategory.LVT], 797 - [48260, 48260, GraphemeCategory.LV], 798 - [48261, 48287, GraphemeCategory.LVT], 799 - [48288, 48288, GraphemeCategory.LV], 800 - [48289, 48315, GraphemeCategory.LVT], 801 - [48316, 48316, GraphemeCategory.LV], 802 - [48317, 48343, GraphemeCategory.LVT], 803 - [48344, 48344, GraphemeCategory.LV], 804 - [48345, 48371, GraphemeCategory.LVT], 805 - [48372, 48372, GraphemeCategory.LV], 806 - [48373, 48399, GraphemeCategory.LVT], 807 - [48400, 48400, GraphemeCategory.LV], 808 - [48401, 48427, GraphemeCategory.LVT], 809 - [48428, 48428, GraphemeCategory.LV], 810 - [48429, 48455, GraphemeCategory.LVT], 811 - [48456, 48456, GraphemeCategory.LV], 812 - [48457, 48483, GraphemeCategory.LVT], 813 - [48484, 48484, GraphemeCategory.LV], 814 - [48485, 48511, GraphemeCategory.LVT], 815 - [48512, 48512, GraphemeCategory.LV], 816 - [48513, 48539, GraphemeCategory.LVT], 817 - [48540, 48540, GraphemeCategory.LV], 818 - [48541, 48567, GraphemeCategory.LVT], 819 - [48568, 48568, GraphemeCategory.LV], 820 - [48569, 48595, GraphemeCategory.LVT], 821 - [48596, 48596, GraphemeCategory.LV], 822 - [48597, 48623, GraphemeCategory.LVT], 823 - [48624, 48624, GraphemeCategory.LV], 824 - [48625, 48651, GraphemeCategory.LVT], 825 - [48652, 48652, GraphemeCategory.LV], 826 - [48653, 48679, GraphemeCategory.LVT], 827 - [48680, 48680, GraphemeCategory.LV], 828 - [48681, 48707, GraphemeCategory.LVT], 829 - [48708, 48708, GraphemeCategory.LV], 830 - [48709, 48735, GraphemeCategory.LVT], 831 - [48736, 48736, GraphemeCategory.LV], 832 - [48737, 48763, GraphemeCategory.LVT], 833 - [48764, 48764, GraphemeCategory.LV], 834 - [48765, 48791, GraphemeCategory.LVT], 835 - [48792, 48792, GraphemeCategory.LV], 836 - [48793, 48819, GraphemeCategory.LVT], 837 - [48820, 48820, GraphemeCategory.LV], 838 - [48821, 48847, GraphemeCategory.LVT], 839 - [48848, 48848, GraphemeCategory.LV], 840 - [48849, 48875, GraphemeCategory.LVT], 841 - [48876, 48876, GraphemeCategory.LV], 842 - [48877, 48903, GraphemeCategory.LVT], 843 - [48904, 48904, GraphemeCategory.LV], 844 - [48905, 48931, GraphemeCategory.LVT], 845 - [48932, 48932, GraphemeCategory.LV], 846 - [48933, 48959, GraphemeCategory.LVT], 847 - [48960, 48960, GraphemeCategory.LV], 848 - [48961, 48987, GraphemeCategory.LVT], 849 - [48988, 48988, GraphemeCategory.LV], 850 - [48989, 49015, GraphemeCategory.LVT], 851 - [49016, 49016, GraphemeCategory.LV], 852 - [49017, 49043, GraphemeCategory.LVT], 853 - [49044, 49044, GraphemeCategory.LV], 854 - [49045, 49071, GraphemeCategory.LVT], 855 - [49072, 49072, GraphemeCategory.LV], 856 - [49073, 49099, GraphemeCategory.LVT], 857 - [49100, 49100, GraphemeCategory.LV], 858 - [49101, 49127, GraphemeCategory.LVT], 859 - [49128, 49128, GraphemeCategory.LV], 860 - [49129, 49155, GraphemeCategory.LVT], 861 - [49156, 49156, GraphemeCategory.LV], 862 - [49157, 49183, GraphemeCategory.LVT], 863 - [49184, 49184, GraphemeCategory.LV], 864 - [49185, 49211, GraphemeCategory.LVT], 865 - [49212, 49212, GraphemeCategory.LV], 866 - [49213, 49239, GraphemeCategory.LVT], 867 - [49240, 49240, GraphemeCategory.LV], 868 - [49241, 49267, GraphemeCategory.LVT], 869 - [49268, 49268, GraphemeCategory.LV], 870 - [49269, 49295, GraphemeCategory.LVT], 871 - [49296, 49296, GraphemeCategory.LV], 872 - [49297, 49323, GraphemeCategory.LVT], 873 - [49324, 49324, GraphemeCategory.LV], 874 - [49325, 49351, GraphemeCategory.LVT], 875 - [49352, 49352, GraphemeCategory.LV], 876 - [49353, 49379, GraphemeCategory.LVT], 877 - [49380, 49380, GraphemeCategory.LV], 878 - [49381, 49407, GraphemeCategory.LVT], 879 - [49408, 49408, GraphemeCategory.LV], 880 - [49409, 49435, GraphemeCategory.LVT], 881 - [49436, 49436, GraphemeCategory.LV], 882 - [49437, 49463, GraphemeCategory.LVT], 883 - [49464, 49464, GraphemeCategory.LV], 884 - [49465, 49491, GraphemeCategory.LVT], 885 - [49492, 49492, GraphemeCategory.LV], 886 - [49493, 49519, GraphemeCategory.LVT], 887 - [49520, 49520, GraphemeCategory.LV], 888 - [49521, 49547, GraphemeCategory.LVT], 889 - [49548, 49548, GraphemeCategory.LV], 890 - [49549, 49575, GraphemeCategory.LVT], 891 - [49576, 49576, GraphemeCategory.LV], 892 - [49577, 49603, GraphemeCategory.LVT], 893 - [49604, 49604, GraphemeCategory.LV], 894 - [49605, 49631, GraphemeCategory.LVT], 895 - [49632, 49632, GraphemeCategory.LV], 896 - [49633, 49659, GraphemeCategory.LVT], 897 - [49660, 49660, GraphemeCategory.LV], 898 - [49661, 49687, GraphemeCategory.LVT], 899 - [49688, 49688, GraphemeCategory.LV], 900 - [49689, 49715, GraphemeCategory.LVT], 901 - [49716, 49716, GraphemeCategory.LV], 902 - [49717, 49743, GraphemeCategory.LVT], 903 - [49744, 49744, GraphemeCategory.LV], 904 - [49745, 49771, GraphemeCategory.LVT], 905 - [49772, 49772, GraphemeCategory.LV], 906 - [49773, 49799, GraphemeCategory.LVT], 907 - [49800, 49800, GraphemeCategory.LV], 908 - [49801, 49827, GraphemeCategory.LVT], 909 - [49828, 49828, GraphemeCategory.LV], 910 - [49829, 49855, GraphemeCategory.LVT], 911 - [49856, 49856, GraphemeCategory.LV], 912 - [49857, 49883, GraphemeCategory.LVT], 913 - [49884, 49884, GraphemeCategory.LV], 914 - [49885, 49911, GraphemeCategory.LVT], 915 - [49912, 49912, GraphemeCategory.LV], 916 - [49913, 49939, GraphemeCategory.LVT], 917 - [49940, 49940, GraphemeCategory.LV], 918 - [49941, 49967, GraphemeCategory.LVT], 919 - [49968, 49968, GraphemeCategory.LV], 920 - [49969, 49995, GraphemeCategory.LVT], 921 - [49996, 49996, GraphemeCategory.LV], 922 - [49997, 50023, GraphemeCategory.LVT], 923 - [50024, 50024, GraphemeCategory.LV], 924 - [50025, 50051, GraphemeCategory.LVT], 925 - [50052, 50052, GraphemeCategory.LV], 926 - [50053, 50079, GraphemeCategory.LVT], 927 - [50080, 50080, GraphemeCategory.LV], 928 - [50081, 50107, GraphemeCategory.LVT], 929 - [50108, 50108, GraphemeCategory.LV], 930 - [50109, 50135, GraphemeCategory.LVT], 931 - [50136, 50136, GraphemeCategory.LV], 932 - [50137, 50163, GraphemeCategory.LVT], 933 - [50164, 50164, GraphemeCategory.LV], 934 - [50165, 50191, GraphemeCategory.LVT], 935 - [50192, 50192, GraphemeCategory.LV], 936 - [50193, 50219, GraphemeCategory.LVT], 937 - [50220, 50220, GraphemeCategory.LV], 938 - [50221, 50247, GraphemeCategory.LVT], 939 - [50248, 50248, GraphemeCategory.LV], 940 - [50249, 50275, GraphemeCategory.LVT], 941 - [50276, 50276, GraphemeCategory.LV], 942 - [50277, 50303, GraphemeCategory.LVT], 943 - [50304, 50304, GraphemeCategory.LV], 944 - [50305, 50331, GraphemeCategory.LVT], 945 - [50332, 50332, GraphemeCategory.LV], 946 - [50333, 50359, GraphemeCategory.LVT], 947 - [50360, 50360, GraphemeCategory.LV], 948 - [50361, 50387, GraphemeCategory.LVT], 949 - [50388, 50388, GraphemeCategory.LV], 950 - [50389, 50415, GraphemeCategory.LVT], 951 - [50416, 50416, GraphemeCategory.LV], 952 - [50417, 50443, GraphemeCategory.LVT], 953 - [50444, 50444, GraphemeCategory.LV], 954 - [50445, 50471, GraphemeCategory.LVT], 955 - [50472, 50472, GraphemeCategory.LV], 956 - [50473, 50499, GraphemeCategory.LVT], 957 - [50500, 50500, GraphemeCategory.LV], 958 - [50501, 50527, GraphemeCategory.LVT], 959 - [50528, 50528, GraphemeCategory.LV], 960 - [50529, 50555, GraphemeCategory.LVT], 961 - [50556, 50556, GraphemeCategory.LV], 962 - [50557, 50583, GraphemeCategory.LVT], 963 - [50584, 50584, GraphemeCategory.LV], 964 - [50585, 50611, GraphemeCategory.LVT], 965 - [50612, 50612, GraphemeCategory.LV], 966 - [50613, 50639, GraphemeCategory.LVT], 967 - [50640, 50640, GraphemeCategory.LV], 968 - [50641, 50667, GraphemeCategory.LVT], 969 - [50668, 50668, GraphemeCategory.LV], 970 - [50669, 50695, GraphemeCategory.LVT], 971 - [50696, 50696, GraphemeCategory.LV], 972 - [50697, 50723, GraphemeCategory.LVT], 973 - [50724, 50724, GraphemeCategory.LV], 974 - [50725, 50751, GraphemeCategory.LVT], 975 - [50752, 50752, GraphemeCategory.LV], 976 - [50753, 50779, GraphemeCategory.LVT], 977 - [50780, 50780, GraphemeCategory.LV], 978 - [50781, 50807, GraphemeCategory.LVT], 979 - [50808, 50808, GraphemeCategory.LV], 980 - [50809, 50835, GraphemeCategory.LVT], 981 - [50836, 50836, GraphemeCategory.LV], 982 - [50837, 50863, GraphemeCategory.LVT], 983 - [50864, 50864, GraphemeCategory.LV], 984 - [50865, 50891, GraphemeCategory.LVT], 985 - [50892, 50892, GraphemeCategory.LV], 986 - [50893, 50919, GraphemeCategory.LVT], 987 - [50920, 50920, GraphemeCategory.LV], 988 - [50921, 50947, GraphemeCategory.LVT], 989 - [50948, 50948, GraphemeCategory.LV], 990 - [50949, 50975, GraphemeCategory.LVT], 991 - [50976, 50976, GraphemeCategory.LV], 992 - [50977, 51003, GraphemeCategory.LVT], 993 - [51004, 51004, GraphemeCategory.LV], 994 - [51005, 51031, GraphemeCategory.LVT], 995 - [51032, 51032, GraphemeCategory.LV], 996 - [51033, 51059, GraphemeCategory.LVT], 997 - [51060, 51060, GraphemeCategory.LV], 998 - [51061, 51087, GraphemeCategory.LVT], 999 - [51088, 51088, GraphemeCategory.LV], 1000 - [51089, 51115, GraphemeCategory.LVT], 1001 - [51116, 51116, GraphemeCategory.LV], 1002 - [51117, 51143, GraphemeCategory.LVT], 1003 - [51144, 51144, GraphemeCategory.LV], 1004 - [51145, 51171, GraphemeCategory.LVT], 1005 - [51172, 51172, GraphemeCategory.LV], 1006 - [51173, 51199, GraphemeCategory.LVT], 1007 - [51200, 51200, GraphemeCategory.LV], 1008 - [51201, 51227, GraphemeCategory.LVT], 1009 - [51228, 51228, GraphemeCategory.LV], 1010 - [51229, 51255, GraphemeCategory.LVT], 1011 - [51256, 51256, GraphemeCategory.LV], 1012 - [51257, 51283, GraphemeCategory.LVT], 1013 - [51284, 51284, GraphemeCategory.LV], 1014 - [51285, 51311, GraphemeCategory.LVT], 1015 - [51312, 51312, GraphemeCategory.LV], 1016 - [51313, 51339, GraphemeCategory.LVT], 1017 - [51340, 51340, GraphemeCategory.LV], 1018 - [51341, 51367, GraphemeCategory.LVT], 1019 - [51368, 51368, GraphemeCategory.LV], 1020 - [51369, 51395, GraphemeCategory.LVT], 1021 - [51396, 51396, GraphemeCategory.LV], 1022 - [51397, 51423, GraphemeCategory.LVT], 1023 - [51424, 51424, GraphemeCategory.LV], 1024 - [51425, 51451, GraphemeCategory.LVT], 1025 - [51452, 51452, GraphemeCategory.LV], 1026 - [51453, 51479, GraphemeCategory.LVT], 1027 - [51480, 51480, GraphemeCategory.LV], 1028 - [51481, 51507, GraphemeCategory.LVT], 1029 - [51508, 51508, GraphemeCategory.LV], 1030 - [51509, 51535, GraphemeCategory.LVT], 1031 - [51536, 51536, GraphemeCategory.LV], 1032 - [51537, 51563, GraphemeCategory.LVT], 1033 - [51564, 51564, GraphemeCategory.LV], 1034 - [51565, 51591, GraphemeCategory.LVT], 1035 - [51592, 51592, GraphemeCategory.LV], 1036 - [51593, 51619, GraphemeCategory.LVT], 1037 - [51620, 51620, GraphemeCategory.LV], 1038 - [51621, 51647, GraphemeCategory.LVT], 1039 - [51648, 51648, GraphemeCategory.LV], 1040 - [51649, 51675, GraphemeCategory.LVT], 1041 - [51676, 51676, GraphemeCategory.LV], 1042 - [51677, 51703, GraphemeCategory.LVT], 1043 - [51704, 51704, GraphemeCategory.LV], 1044 - [51705, 51731, GraphemeCategory.LVT], 1045 - [51732, 51732, GraphemeCategory.LV], 1046 - [51733, 51759, GraphemeCategory.LVT], 1047 - [51760, 51760, GraphemeCategory.LV], 1048 - [51761, 51787, GraphemeCategory.LVT], 1049 - [51788, 51788, GraphemeCategory.LV], 1050 - [51789, 51815, GraphemeCategory.LVT], 1051 - [51816, 51816, GraphemeCategory.LV], 1052 - [51817, 51843, GraphemeCategory.LVT], 1053 - [51844, 51844, GraphemeCategory.LV], 1054 - [51845, 51871, GraphemeCategory.LVT], 1055 - [51872, 51872, GraphemeCategory.LV], 1056 - [51873, 51899, GraphemeCategory.LVT], 1057 - [51900, 51900, GraphemeCategory.LV], 1058 - [51901, 51927, GraphemeCategory.LVT], 1059 - [51928, 51928, GraphemeCategory.LV], 1060 - [51929, 51955, GraphemeCategory.LVT], 1061 - [51956, 51956, GraphemeCategory.LV], 1062 - [51957, 51983, GraphemeCategory.LVT], 1063 - [51984, 51984, GraphemeCategory.LV], 1064 - [51985, 52011, GraphemeCategory.LVT], 1065 - [52012, 52012, GraphemeCategory.LV], 1066 - [52013, 52039, GraphemeCategory.LVT], 1067 - [52040, 52040, GraphemeCategory.LV], 1068 - [52041, 52067, GraphemeCategory.LVT], 1069 - [52068, 52068, GraphemeCategory.LV], 1070 - [52069, 52095, GraphemeCategory.LVT], 1071 - [52096, 52096, GraphemeCategory.LV], 1072 - [52097, 52123, GraphemeCategory.LVT], 1073 - [52124, 52124, GraphemeCategory.LV], 1074 - [52125, 52151, GraphemeCategory.LVT], 1075 - [52152, 52152, GraphemeCategory.LV], 1076 - [52153, 52179, GraphemeCategory.LVT], 1077 - [52180, 52180, GraphemeCategory.LV], 1078 - [52181, 52207, GraphemeCategory.LVT], 1079 - [52208, 52208, GraphemeCategory.LV], 1080 - [52209, 52235, GraphemeCategory.LVT], 1081 - [52236, 52236, GraphemeCategory.LV], 1082 - [52237, 52263, GraphemeCategory.LVT], 1083 - [52264, 52264, GraphemeCategory.LV], 1084 - [52265, 52291, GraphemeCategory.LVT], 1085 - [52292, 52292, GraphemeCategory.LV], 1086 - [52293, 52319, GraphemeCategory.LVT], 1087 - [52320, 52320, GraphemeCategory.LV], 1088 - [52321, 52347, GraphemeCategory.LVT], 1089 - [52348, 52348, GraphemeCategory.LV], 1090 - [52349, 52375, GraphemeCategory.LVT], 1091 - [52376, 52376, GraphemeCategory.LV], 1092 - [52377, 52403, GraphemeCategory.LVT], 1093 - [52404, 52404, GraphemeCategory.LV], 1094 - [52405, 52431, GraphemeCategory.LVT], 1095 - [52432, 52432, GraphemeCategory.LV], 1096 - [52433, 52459, GraphemeCategory.LVT], 1097 - [52460, 52460, GraphemeCategory.LV], 1098 - [52461, 52487, GraphemeCategory.LVT], 1099 - [52488, 52488, GraphemeCategory.LV], 1100 - [52489, 52515, GraphemeCategory.LVT], 1101 - [52516, 52516, GraphemeCategory.LV], 1102 - [52517, 52543, GraphemeCategory.LVT], 1103 - [52544, 52544, GraphemeCategory.LV], 1104 - [52545, 52571, GraphemeCategory.LVT], 1105 - [52572, 52572, GraphemeCategory.LV], 1106 - [52573, 52599, GraphemeCategory.LVT], 1107 - [52600, 52600, GraphemeCategory.LV], 1108 - [52601, 52627, GraphemeCategory.LVT], 1109 - [52628, 52628, GraphemeCategory.LV], 1110 - [52629, 52655, GraphemeCategory.LVT], 1111 - [52656, 52656, GraphemeCategory.LV], 1112 - [52657, 52683, GraphemeCategory.LVT], 1113 - [52684, 52684, GraphemeCategory.LV], 1114 - [52685, 52711, GraphemeCategory.LVT], 1115 - [52712, 52712, GraphemeCategory.LV], 1116 - [52713, 52739, GraphemeCategory.LVT], 1117 - [52740, 52740, GraphemeCategory.LV], 1118 - [52741, 52767, GraphemeCategory.LVT], 1119 - [52768, 52768, GraphemeCategory.LV], 1120 - [52769, 52795, GraphemeCategory.LVT], 1121 - [52796, 52796, GraphemeCategory.LV], 1122 - [52797, 52823, GraphemeCategory.LVT], 1123 - [52824, 52824, GraphemeCategory.LV], 1124 - [52825, 52851, GraphemeCategory.LVT], 1125 - [52852, 52852, GraphemeCategory.LV], 1126 - [52853, 52879, GraphemeCategory.LVT], 1127 - [52880, 52880, GraphemeCategory.LV], 1128 - [52881, 52907, GraphemeCategory.LVT], 1129 - [52908, 52908, GraphemeCategory.LV], 1130 - [52909, 52935, GraphemeCategory.LVT], 1131 - [52936, 52936, GraphemeCategory.LV], 1132 - [52937, 52963, GraphemeCategory.LVT], 1133 - [52964, 52964, GraphemeCategory.LV], 1134 - [52965, 52991, GraphemeCategory.LVT], 1135 - [52992, 52992, GraphemeCategory.LV], 1136 - [52993, 53019, GraphemeCategory.LVT], 1137 - [53020, 53020, GraphemeCategory.LV], 1138 - [53021, 53047, GraphemeCategory.LVT], 1139 - [53048, 53048, GraphemeCategory.LV], 1140 - [53049, 53075, GraphemeCategory.LVT], 1141 - [53076, 53076, GraphemeCategory.LV], 1142 - [53077, 53103, GraphemeCategory.LVT], 1143 - [53104, 53104, GraphemeCategory.LV], 1144 - [53105, 53131, GraphemeCategory.LVT], 1145 - [53132, 53132, GraphemeCategory.LV], 1146 - [53133, 53159, GraphemeCategory.LVT], 1147 - [53160, 53160, GraphemeCategory.LV], 1148 - [53161, 53187, GraphemeCategory.LVT], 1149 - [53188, 53188, GraphemeCategory.LV], 1150 - [53189, 53215, GraphemeCategory.LVT], 1151 - [53216, 53216, GraphemeCategory.LV], 1152 - [53217, 53243, GraphemeCategory.LVT], 1153 - [53244, 53244, GraphemeCategory.LV], 1154 - [53245, 53271, GraphemeCategory.LVT], 1155 - [53272, 53272, GraphemeCategory.LV], 1156 - [53273, 53299, GraphemeCategory.LVT], 1157 - [53300, 53300, GraphemeCategory.LV], 1158 - [53301, 53327, GraphemeCategory.LVT], 1159 - [53328, 53328, GraphemeCategory.LV], 1160 - [53329, 53355, GraphemeCategory.LVT], 1161 - [53356, 53356, GraphemeCategory.LV], 1162 - [53357, 53383, GraphemeCategory.LVT], 1163 - [53384, 53384, GraphemeCategory.LV], 1164 - [53385, 53411, GraphemeCategory.LVT], 1165 - [53412, 53412, GraphemeCategory.LV], 1166 - [53413, 53439, GraphemeCategory.LVT], 1167 - [53440, 53440, GraphemeCategory.LV], 1168 - [53441, 53467, GraphemeCategory.LVT], 1169 - [53468, 53468, GraphemeCategory.LV], 1170 - [53469, 53495, GraphemeCategory.LVT], 1171 - [53496, 53496, GraphemeCategory.LV], 1172 - [53497, 53523, GraphemeCategory.LVT], 1173 - [53524, 53524, GraphemeCategory.LV], 1174 - [53525, 53551, GraphemeCategory.LVT], 1175 - [53552, 53552, GraphemeCategory.LV], 1176 - [53553, 53579, GraphemeCategory.LVT], 1177 - [53580, 53580, GraphemeCategory.LV], 1178 - [53581, 53607, GraphemeCategory.LVT], 1179 - [53608, 53608, GraphemeCategory.LV], 1180 - [53609, 53635, GraphemeCategory.LVT], 1181 - [53636, 53636, GraphemeCategory.LV], 1182 - [53637, 53663, GraphemeCategory.LVT], 1183 - [53664, 53664, GraphemeCategory.LV], 1184 - [53665, 53691, GraphemeCategory.LVT], 1185 - [53692, 53692, GraphemeCategory.LV], 1186 - [53693, 53719, GraphemeCategory.LVT], 1187 - [53720, 53720, GraphemeCategory.LV], 1188 - [53721, 53747, GraphemeCategory.LVT], 1189 - [53748, 53748, GraphemeCategory.LV], 1190 - [53749, 53775, GraphemeCategory.LVT], 1191 - [53776, 53776, GraphemeCategory.LV], 1192 - [53777, 53803, GraphemeCategory.LVT], 1193 - [53804, 53804, GraphemeCategory.LV], 1194 - [53805, 53831, GraphemeCategory.LVT], 1195 - [53832, 53832, GraphemeCategory.LV], 1196 - [53833, 53859, GraphemeCategory.LVT], 1197 - [53860, 53860, GraphemeCategory.LV], 1198 - [53861, 53887, GraphemeCategory.LVT], 1199 - [53888, 53888, GraphemeCategory.LV], 1200 - [53889, 53915, GraphemeCategory.LVT], 1201 - [53916, 53916, GraphemeCategory.LV], 1202 - [53917, 53943, GraphemeCategory.LVT], 1203 - [53944, 53944, GraphemeCategory.LV], 1204 - [53945, 53971, GraphemeCategory.LVT], 1205 - [53972, 53972, GraphemeCategory.LV], 1206 - [53973, 53999, GraphemeCategory.LVT], 1207 - [54000, 54000, GraphemeCategory.LV], 1208 - [54001, 54027, GraphemeCategory.LVT], 1209 - [54028, 54028, GraphemeCategory.LV], 1210 - [54029, 54055, GraphemeCategory.LVT], 1211 - [54056, 54056, GraphemeCategory.LV], 1212 - [54057, 54083, GraphemeCategory.LVT], 1213 - [54084, 54084, GraphemeCategory.LV], 1214 - [54085, 54111, GraphemeCategory.LVT], 1215 - [54112, 54112, GraphemeCategory.LV], 1216 - [54113, 54139, GraphemeCategory.LVT], 1217 - [54140, 54140, GraphemeCategory.LV], 1218 - [54141, 54167, GraphemeCategory.LVT], 1219 - [54168, 54168, GraphemeCategory.LV], 1220 - [54169, 54195, GraphemeCategory.LVT], 1221 - [54196, 54196, GraphemeCategory.LV], 1222 - [54197, 54223, GraphemeCategory.LVT], 1223 - [54224, 54224, GraphemeCategory.LV], 1224 - [54225, 54251, GraphemeCategory.LVT], 1225 - [54252, 54252, GraphemeCategory.LV], 1226 - [54253, 54279, GraphemeCategory.LVT], 1227 - [54280, 54280, GraphemeCategory.LV], 1228 - [54281, 54307, GraphemeCategory.LVT], 1229 - [54308, 54308, GraphemeCategory.LV], 1230 - [54309, 54335, GraphemeCategory.LVT], 1231 - [54336, 54336, GraphemeCategory.LV], 1232 - [54337, 54363, GraphemeCategory.LVT], 1233 - [54364, 54364, GraphemeCategory.LV], 1234 - [54365, 54391, GraphemeCategory.LVT], 1235 - [54392, 54392, GraphemeCategory.LV], 1236 - [54393, 54419, GraphemeCategory.LVT], 1237 - [54420, 54420, GraphemeCategory.LV], 1238 - [54421, 54447, GraphemeCategory.LVT], 1239 - [54448, 54448, GraphemeCategory.LV], 1240 - [54449, 54475, GraphemeCategory.LVT], 1241 - [54476, 54476, GraphemeCategory.LV], 1242 - [54477, 54503, GraphemeCategory.LVT], 1243 - [54504, 54504, GraphemeCategory.LV], 1244 - [54505, 54531, GraphemeCategory.LVT], 1245 - [54532, 54532, GraphemeCategory.LV], 1246 - [54533, 54559, GraphemeCategory.LVT], 1247 - [54560, 54560, GraphemeCategory.LV], 1248 - [54561, 54587, GraphemeCategory.LVT], 1249 - [54588, 54588, GraphemeCategory.LV], 1250 - [54589, 54615, GraphemeCategory.LVT], 1251 - [54616, 54616, GraphemeCategory.LV], 1252 - [54617, 54643, GraphemeCategory.LVT], 1253 - [54644, 54644, GraphemeCategory.LV], 1254 - [54645, 54671, GraphemeCategory.LVT], 1255 - [54672, 54672, GraphemeCategory.LV], 1256 - [54673, 54699, GraphemeCategory.LVT], 1257 - [54700, 54700, GraphemeCategory.LV], 1258 - [54701, 54727, GraphemeCategory.LVT], 1259 - [54728, 54728, GraphemeCategory.LV], 1260 - [54729, 54755, GraphemeCategory.LVT], 1261 - [54756, 54756, GraphemeCategory.LV], 1262 - [54757, 54783, GraphemeCategory.LVT], 1263 - [54784, 54784, GraphemeCategory.LV], 1264 - [54785, 54811, GraphemeCategory.LVT], 1265 - [54812, 54812, GraphemeCategory.LV], 1266 - [54813, 54839, GraphemeCategory.LVT], 1267 - [54840, 54840, GraphemeCategory.LV], 1268 - [54841, 54867, GraphemeCategory.LVT], 1269 - [54868, 54868, GraphemeCategory.LV], 1270 - [54869, 54895, GraphemeCategory.LVT], 1271 - [54896, 54896, GraphemeCategory.LV], 1272 - [54897, 54923, GraphemeCategory.LVT], 1273 - [54924, 54924, GraphemeCategory.LV], 1274 - [54925, 54951, GraphemeCategory.LVT], 1275 - [54952, 54952, GraphemeCategory.LV], 1276 - [54953, 54979, GraphemeCategory.LVT], 1277 - [54980, 54980, GraphemeCategory.LV], 1278 - [54981, 55007, GraphemeCategory.LVT], 1279 - [55008, 55008, GraphemeCategory.LV], 1280 - [55009, 55035, GraphemeCategory.LVT], 1281 - [55036, 55036, GraphemeCategory.LV], 1282 - [55037, 55063, GraphemeCategory.LVT], 1283 - [55064, 55064, GraphemeCategory.LV], 1284 - [55065, 55091, GraphemeCategory.LVT], 1285 - [55092, 55092, GraphemeCategory.LV], 1286 - [55093, 55119, GraphemeCategory.LVT], 1287 - [55120, 55120, GraphemeCategory.LV], 1288 - [55121, 55147, GraphemeCategory.LVT], 1289 - [55148, 55148, GraphemeCategory.LV], 1290 - [55149, 55175, GraphemeCategory.LVT], 1291 - [55176, 55176, GraphemeCategory.LV], 1292 - [55177, 55203, GraphemeCategory.LVT], 1293 - [55216, 55238, GraphemeCategory.V], 1294 - [55243, 55291, GraphemeCategory.T], 1295 - [64286, 64286, GraphemeCategory.Extend], 1296 - [65024, 65039, GraphemeCategory.Extend], 1297 - [65056, 65071, GraphemeCategory.Extend], 1298 - [65279, 65279, GraphemeCategory.Control], 1299 - [65438, 65439, GraphemeCategory.Extend], 1300 - [65520, 65531, GraphemeCategory.Control], 1301 - [66045, 66045, GraphemeCategory.Extend], 1302 - [66272, 66272, GraphemeCategory.Extend], 1303 - [66422, 66426, GraphemeCategory.Extend], 1304 - [68097, 68099, GraphemeCategory.Extend], 1305 - [68101, 68102, GraphemeCategory.Extend], 1306 - [68108, 68111, GraphemeCategory.Extend], 1307 - [68152, 68154, GraphemeCategory.Extend], 1308 - [68159, 68159, GraphemeCategory.Extend], 1309 - [68325, 68326, GraphemeCategory.Extend], 1310 - [68900, 68903, GraphemeCategory.Extend], 1311 - [69291, 69292, GraphemeCategory.Extend], 1312 - [69373, 69375, GraphemeCategory.Extend], 1313 - [69446, 69456, GraphemeCategory.Extend], 1314 - [69506, 69509, GraphemeCategory.Extend], 1315 - [69632, 69632, GraphemeCategory.SpacingMark], 1316 - [69633, 69633, GraphemeCategory.Extend], 1317 - [69634, 69634, GraphemeCategory.SpacingMark], 1318 - [69688, 69702, GraphemeCategory.Extend], 1319 - [69744, 69744, GraphemeCategory.Extend], 1320 - [69747, 69748, GraphemeCategory.Extend], 1321 - [69759, 69761, GraphemeCategory.Extend], 1322 - [69762, 69762, GraphemeCategory.SpacingMark], 1323 - [69808, 69810, GraphemeCategory.SpacingMark], 1324 - [69811, 69814, GraphemeCategory.Extend], 1325 - [69815, 69816, GraphemeCategory.SpacingMark], 1326 - [69817, 69818, GraphemeCategory.Extend], 1327 - [69821, 69821, GraphemeCategory.Prepend], 1328 - [69826, 69826, GraphemeCategory.Extend], 1329 - [69837, 69837, GraphemeCategory.Prepend], 1330 - [69888, 69890, GraphemeCategory.Extend], 1331 - [69927, 69931, GraphemeCategory.Extend], 1332 - [69932, 69932, GraphemeCategory.SpacingMark], 1333 - [69933, 69940, GraphemeCategory.Extend], 1334 - [69957, 69958, GraphemeCategory.SpacingMark], 1335 - [70003, 70003, GraphemeCategory.Extend], 1336 - [70016, 70017, GraphemeCategory.Extend], 1337 - [70018, 70018, GraphemeCategory.SpacingMark], 1338 - [70067, 70069, GraphemeCategory.SpacingMark], 1339 - [70070, 70078, GraphemeCategory.Extend], 1340 - [70079, 70080, GraphemeCategory.SpacingMark], 1341 - [70082, 70083, GraphemeCategory.Prepend], 1342 - [70089, 70092, GraphemeCategory.Extend], 1343 - [70094, 70094, GraphemeCategory.SpacingMark], 1344 - [70095, 70095, GraphemeCategory.Extend], 1345 - [70188, 70190, GraphemeCategory.SpacingMark], 1346 - [70191, 70193, GraphemeCategory.Extend], 1347 - [70194, 70195, GraphemeCategory.SpacingMark], 1348 - [70196, 70196, GraphemeCategory.Extend], 1349 - [70197, 70197, GraphemeCategory.SpacingMark], 1350 - [70198, 70199, GraphemeCategory.Extend], 1351 - [70206, 70206, GraphemeCategory.Extend], 1352 - [70209, 70209, GraphemeCategory.Extend], 1353 - [70367, 70367, GraphemeCategory.Extend], 1354 - [70368, 70370, GraphemeCategory.SpacingMark], 1355 - [70371, 70378, GraphemeCategory.Extend], 1356 - [70400, 70401, GraphemeCategory.Extend], 1357 - [70402, 70403, GraphemeCategory.SpacingMark], 1358 - [70459, 70460, GraphemeCategory.Extend], 1359 - [70462, 70462, GraphemeCategory.Extend], 1360 - [70463, 70463, GraphemeCategory.SpacingMark], 1361 - [70464, 70464, GraphemeCategory.Extend], 1362 - [70465, 70468, GraphemeCategory.SpacingMark], 1363 - [70471, 70472, GraphemeCategory.SpacingMark], 1364 - [70475, 70477, GraphemeCategory.SpacingMark], 1365 - [70487, 70487, GraphemeCategory.Extend], 1366 - [70498, 70499, GraphemeCategory.SpacingMark], 1367 - [70502, 70508, GraphemeCategory.Extend], 1368 - [70512, 70516, GraphemeCategory.Extend], 1369 - [70709, 70711, GraphemeCategory.SpacingMark], 1370 - [70712, 70719, GraphemeCategory.Extend], 1371 - [70720, 70721, GraphemeCategory.SpacingMark], 1372 - [70722, 70724, GraphemeCategory.Extend], 1373 - [70725, 70725, GraphemeCategory.SpacingMark], 1374 - [70726, 70726, GraphemeCategory.Extend], 1375 - [70750, 70750, GraphemeCategory.Extend], 1376 - [70832, 70832, GraphemeCategory.Extend], 1377 - [70833, 70834, GraphemeCategory.SpacingMark], 1378 - [70835, 70840, GraphemeCategory.Extend], 1379 - [70841, 70841, GraphemeCategory.SpacingMark], 1380 - [70842, 70842, GraphemeCategory.Extend], 1381 - [70843, 70844, GraphemeCategory.SpacingMark], 1382 - [70845, 70845, GraphemeCategory.Extend], 1383 - [70846, 70846, GraphemeCategory.SpacingMark], 1384 - [70847, 70848, GraphemeCategory.Extend], 1385 - [70849, 70849, GraphemeCategory.SpacingMark], 1386 - [70850, 70851, GraphemeCategory.Extend], 1387 - [71087, 71087, GraphemeCategory.Extend], 1388 - [71088, 71089, GraphemeCategory.SpacingMark], 1389 - [71090, 71093, GraphemeCategory.Extend], 1390 - [71096, 71099, GraphemeCategory.SpacingMark], 1391 - [71100, 71101, GraphemeCategory.Extend], 1392 - [71102, 71102, GraphemeCategory.SpacingMark], 1393 - [71103, 71104, GraphemeCategory.Extend], 1394 - [71132, 71133, GraphemeCategory.Extend], 1395 - [71216, 71218, GraphemeCategory.SpacingMark], 1396 - [71219, 71226, GraphemeCategory.Extend], 1397 - [71227, 71228, GraphemeCategory.SpacingMark], 1398 - [71229, 71229, GraphemeCategory.Extend], 1399 - [71230, 71230, GraphemeCategory.SpacingMark], 1400 - [71231, 71232, GraphemeCategory.Extend], 1401 - [71339, 71339, GraphemeCategory.Extend], 1402 - [71340, 71340, GraphemeCategory.SpacingMark], 1403 - [71341, 71341, GraphemeCategory.Extend], 1404 - [71342, 71343, GraphemeCategory.SpacingMark], 1405 - [71344, 71349, GraphemeCategory.Extend], 1406 - [71350, 71350, GraphemeCategory.SpacingMark], 1407 - [71351, 71351, GraphemeCategory.Extend], 1408 - [71453, 71455, GraphemeCategory.Extend], 1409 - [71458, 71461, GraphemeCategory.Extend], 1410 - [71462, 71462, GraphemeCategory.SpacingMark], 1411 - [71463, 71467, GraphemeCategory.Extend], 1412 - [71724, 71726, GraphemeCategory.SpacingMark], 1413 - [71727, 71735, GraphemeCategory.Extend], 1414 - [71736, 71736, GraphemeCategory.SpacingMark], 1415 - [71737, 71738, GraphemeCategory.Extend], 1416 - [71984, 71984, GraphemeCategory.Extend], 1417 - [71985, 71989, GraphemeCategory.SpacingMark], 1418 - [71991, 71992, GraphemeCategory.SpacingMark], 1419 - [71995, 71996, GraphemeCategory.Extend], 1420 - [71997, 71997, GraphemeCategory.SpacingMark], 1421 - [71998, 71998, GraphemeCategory.Extend], 1422 - [71999, 71999, GraphemeCategory.Prepend], 1423 - [72000, 72000, GraphemeCategory.SpacingMark], 1424 - [72001, 72001, GraphemeCategory.Prepend], 1425 - [72002, 72002, GraphemeCategory.SpacingMark], 1426 - [72003, 72003, GraphemeCategory.Extend], 1427 - [72145, 72147, GraphemeCategory.SpacingMark], 1428 - [72148, 72151, GraphemeCategory.Extend], 1429 - [72154, 72155, GraphemeCategory.Extend], 1430 - [72156, 72159, GraphemeCategory.SpacingMark], 1431 - [72160, 72160, GraphemeCategory.Extend], 1432 - [72164, 72164, GraphemeCategory.SpacingMark], 1433 - [72193, 72202, GraphemeCategory.Extend], 1434 - [72243, 72248, GraphemeCategory.Extend], 1435 - [72249, 72249, GraphemeCategory.SpacingMark], 1436 - [72250, 72250, GraphemeCategory.Prepend], 1437 - [72251, 72254, GraphemeCategory.Extend], 1438 - [72263, 72263, GraphemeCategory.Extend], 1439 - [72273, 72278, GraphemeCategory.Extend], 1440 - [72279, 72280, GraphemeCategory.SpacingMark], 1441 - [72281, 72283, GraphemeCategory.Extend], 1442 - [72324, 72329, GraphemeCategory.Prepend], 1443 - [72330, 72342, GraphemeCategory.Extend], 1444 - [72343, 72343, GraphemeCategory.SpacingMark], 1445 - [72344, 72345, GraphemeCategory.Extend], 1446 - [72751, 72751, GraphemeCategory.SpacingMark], 1447 - [72752, 72758, GraphemeCategory.Extend], 1448 - [72760, 72765, GraphemeCategory.Extend], 1449 - [72766, 72766, GraphemeCategory.SpacingMark], 1450 - [72767, 72767, GraphemeCategory.Extend], 1451 - [72850, 72871, GraphemeCategory.Extend], 1452 - [72873, 72873, GraphemeCategory.SpacingMark], 1453 - [72874, 72880, GraphemeCategory.Extend], 1454 - [72881, 72881, GraphemeCategory.SpacingMark], 1455 - [72882, 72883, GraphemeCategory.Extend], 1456 - [72884, 72884, GraphemeCategory.SpacingMark], 1457 - [72885, 72886, GraphemeCategory.Extend], 1458 - [73009, 73014, GraphemeCategory.Extend], 1459 - [73018, 73018, GraphemeCategory.Extend], 1460 - [73020, 73021, GraphemeCategory.Extend], 1461 - [73023, 73029, GraphemeCategory.Extend], 1462 - [73030, 73030, GraphemeCategory.Prepend], 1463 - [73031, 73031, GraphemeCategory.Extend], 1464 - [73098, 73102, GraphemeCategory.SpacingMark], 1465 - [73104, 73105, GraphemeCategory.Extend], 1466 - [73107, 73108, GraphemeCategory.SpacingMark], 1467 - [73109, 73109, GraphemeCategory.Extend], 1468 - [73110, 73110, GraphemeCategory.SpacingMark], 1469 - [73111, 73111, GraphemeCategory.Extend], 1470 - [73459, 73460, GraphemeCategory.Extend], 1471 - [73461, 73462, GraphemeCategory.SpacingMark], 1472 - [73472, 73473, GraphemeCategory.Extend], 1473 - [73474, 73474, GraphemeCategory.Prepend], 1474 - [73475, 73475, GraphemeCategory.SpacingMark], 1475 - [73524, 73525, GraphemeCategory.SpacingMark], 1476 - [73526, 73530, GraphemeCategory.Extend], 1477 - [73534, 73535, GraphemeCategory.SpacingMark], 1478 - [73536, 73536, GraphemeCategory.Extend], 1479 - [73537, 73537, GraphemeCategory.SpacingMark], 1480 - [73538, 73538, GraphemeCategory.Extend], 1481 - [78896, 78911, GraphemeCategory.Control], 1482 - [78912, 78912, GraphemeCategory.Extend], 1483 - [78919, 78933, GraphemeCategory.Extend], 1484 - [92912, 92916, GraphemeCategory.Extend], 1485 - [92976, 92982, GraphemeCategory.Extend], 1486 - [94031, 94031, GraphemeCategory.Extend], 1487 - [94033, 94087, GraphemeCategory.SpacingMark], 1488 - [94095, 94098, GraphemeCategory.Extend], 1489 - [94180, 94180, GraphemeCategory.Extend], 1490 - [94192, 94193, GraphemeCategory.SpacingMark], 1491 - [113821, 113822, GraphemeCategory.Extend], 1492 - [113824, 113827, GraphemeCategory.Control], 1493 - [118528, 118573, GraphemeCategory.Extend], 1494 - [118576, 118598, GraphemeCategory.Extend], 1495 - [119141, 119141, GraphemeCategory.Extend], 1496 - [119142, 119142, GraphemeCategory.SpacingMark], 1497 - [119143, 119145, GraphemeCategory.Extend], 1498 - [119149, 119149, GraphemeCategory.SpacingMark], 1499 - [119150, 119154, GraphemeCategory.Extend], 1500 - [119155, 119162, GraphemeCategory.Control], 1501 - [119163, 119170, GraphemeCategory.Extend], 1502 - [119173, 119179, GraphemeCategory.Extend], 1503 - [119210, 119213, GraphemeCategory.Extend], 1504 - [119362, 119364, GraphemeCategory.Extend], 1505 - [121344, 121398, GraphemeCategory.Extend], 1506 - [121403, 121452, GraphemeCategory.Extend], 1507 - [121461, 121461, GraphemeCategory.Extend], 1508 - [121476, 121476, GraphemeCategory.Extend], 1509 - [121499, 121503, GraphemeCategory.Extend], 1510 - [121505, 121519, GraphemeCategory.Extend], 1511 - [122880, 122886, GraphemeCategory.Extend], 1512 - [122888, 122904, GraphemeCategory.Extend], 1513 - [122907, 122913, GraphemeCategory.Extend], 1514 - [122915, 122916, GraphemeCategory.Extend], 1515 - [122918, 122922, GraphemeCategory.Extend], 1516 - [123023, 123023, GraphemeCategory.Extend], 1517 - [123184, 123190, GraphemeCategory.Extend], 1518 - [123566, 123566, GraphemeCategory.Extend], 1519 - [123628, 123631, GraphemeCategory.Extend], 1520 - [124140, 124143, GraphemeCategory.Extend], 1521 - [125136, 125142, GraphemeCategory.Extend], 1522 - [125252, 125258, GraphemeCategory.Extend], 1523 - [126976, 127231, GraphemeCategory.Extended_Pictographic], 1524 - [127245, 127247, GraphemeCategory.Extended_Pictographic], 1525 - [127279, 127279, GraphemeCategory.Extended_Pictographic], 1526 - [127340, 127345, GraphemeCategory.Extended_Pictographic], 1527 - [127358, 127359, GraphemeCategory.Extended_Pictographic], 1528 - [127374, 127374, GraphemeCategory.Extended_Pictographic], 1529 - [127377, 127386, GraphemeCategory.Extended_Pictographic], 1530 - [127405, 127461, GraphemeCategory.Extended_Pictographic], 1531 - [127462, 127487, GraphemeCategory.Regional_Indicator], 1532 - [127489, 127503, GraphemeCategory.Extended_Pictographic], 1533 - [127514, 127514, GraphemeCategory.Extended_Pictographic], 1534 - [127535, 127535, GraphemeCategory.Extended_Pictographic], 1535 - [127538, 127546, GraphemeCategory.Extended_Pictographic], 1536 - [127548, 127551, GraphemeCategory.Extended_Pictographic], 1537 - [127561, 127994, GraphemeCategory.Extended_Pictographic], 1538 - [127995, 127999, GraphemeCategory.Extend], 1539 - [128000, 128317, GraphemeCategory.Extended_Pictographic], 1540 - [128326, 128591, GraphemeCategory.Extended_Pictographic], 1541 - [128640, 128767, GraphemeCategory.Extended_Pictographic], 1542 - [128884, 128895, GraphemeCategory.Extended_Pictographic], 1543 - [128981, 129023, GraphemeCategory.Extended_Pictographic], 1544 - [129036, 129039, GraphemeCategory.Extended_Pictographic], 1545 - [129096, 129103, GraphemeCategory.Extended_Pictographic], 1546 - [129114, 129119, GraphemeCategory.Extended_Pictographic], 1547 - [129160, 129167, GraphemeCategory.Extended_Pictographic], 1548 - [129198, 129279, GraphemeCategory.Extended_Pictographic], 1549 - [129292, 129338, GraphemeCategory.Extended_Pictographic], 1550 - [129340, 129349, GraphemeCategory.Extended_Pictographic], 1551 - [129351, 129791, GraphemeCategory.Extended_Pictographic], 1552 - [130048, 131069, GraphemeCategory.Extended_Pictographic], 1553 - [917504, 917535, GraphemeCategory.Control], 1554 - [917536, 917631, GraphemeCategory.Extend], 1555 - [917632, 917759, GraphemeCategory.Control], 1556 - [917760, 917999, GraphemeCategory.Extend], 1557 - [918000, 921599, GraphemeCategory.Control], 1558 - ]; 1559 - 1560 - const bsearchRange = ( 1561 - x: number, 1562 - table: [l: number, h: number, v?: unknown][], 1563 - from = 0, 1564 - to = table.length, 1565 - ) => { 1566 - let low = from; 1567 - let high = to - 1; 1568 - 1569 - while (low <= high) { 1570 - let mid = (low + high) >> 1; 1571 - let cur = table[mid]; 1572 - 1573 - let l = cur[0]; 1574 - let h = cur[1]; 1575 - 1576 - if (l <= x && x <= h) { 1577 - return mid; 1578 - } else if (h < x) { 1579 - low = mid + 1; 1580 - } else { 1581 - high = mid - 1; 1582 - } 1583 - } 1584 - 1585 - return -low - 1; 1586 - }; 1587 - 1588 - const bsearchUnicodeRange = ( 1589 - cp: number, 1590 - table: GraphemeCategoryRange[], 1591 - defaultLower: number, 1592 - defaultUpper: number, 1593 - from = 0, 1594 - to = table.length, 1595 - ) => { 1596 - let found = bsearchRange(cp, table, from, to); 1597 - if (found >= 0) { 1598 - return table[found]; 1599 - } 1600 - 1601 - // Not found 1602 - let low = -found - 1; 1603 - let lower = low > 0 ? table[low - 1][1] + 1 : defaultLower; 1604 - let upper = table[low] ? table[low][0] - 1 : defaultUpper; 1605 - // @ts-ignore 1606 - return [lower, upper, 0 /* Any */]; 1607 - }; 1608 - 1609 - const isSMP = (cp: number): boolean => { 1610 - // SMP (Supplementary Multilingual Plane) 1611 - return 0xffff < cp; 1612 - }; 1613 - 1614 - const isIndicConjunctCosonant = (cp: number): boolean => { 1615 - return bsearchRange(cp, CONSONANT_TABLE) >= 0; 1616 - }; 1617 - 1618 - const isIndicConjunctLinker = (cp: number): boolean => { 1619 - return cp === 0x094d || cp === 0x09cd || cp === 0x0acd || cp === 0x0b4d || cp === 0x0c4d || cp === 0x0d4d; 1620 - }; 1621 - 1622 - const searchGraphemeCategory = (cp: number) => { 1623 - // Perform a quick O(1) lookup in a precomputed table to determine 1624 - // the slice of the range table to search in. 1625 - let lookup_table = GRAPHEME_CATEGORY_LOOKUP; 1626 - let lookup_interval = 0x80; 1627 - 1628 - let idx = (cp / lookup_interval) | 0; 1629 - // If the `idx` is outside of the precomputed table - use the slice 1630 - // starting from the last covered index in the precomputed table and 1631 - // ending with the length of the range table. 1632 - let sliceFrom = 1443, 1633 - sliceTo = 1449; 1634 - if (idx + 1 < lookup_table.length) { 1635 - sliceFrom = lookup_table[idx]; 1636 - sliceTo = lookup_table[idx + 1] + 1; 1637 - } 1638 - 1639 - // Compute pessimistic default lower and upper bounds on the category. 1640 - // If character doesn't map to any range and there is no adjacent range 1641 - // in the table slice - these bounds has to apply. 1642 - let lower = idx * lookup_interval; 1643 - let upper = lower + lookup_interval - 1; 1644 - return bsearchUnicodeRange(cp, GRAPHEME_CATEGORY_TABLE, lower, upper, sliceFrom, sliceTo); 1645 - }; 1646 - 1647 - const cat = (cp: number, cache: GraphemeCategoryRange): GraphemeCategory => { 1648 - if (cp < 127) { 1649 - // Special-case optimization for ascii, except U+007F. This 1650 - // improves performance even for many primarily non-ascii texts, 1651 - // due to use of punctuation and white space characters from the 1652 - // ascii range. 1653 - if (cp >= 32) { 1654 - return GraphemeCategory.Any; 1655 - } else if (cp === 10) { 1656 - return GraphemeCategory.LF; 1657 - } else if (cp === 13) { 1658 - return GraphemeCategory.CR; 1659 - } else { 1660 - return GraphemeCategory.Control; 1661 - } 1662 - } else { 1663 - // If this char isn't within the cached range, update the cache to the 1664 - // range that includes it. 1665 - if (cp < cache[0] || cp > cache[1]) { 1666 - let result = searchGraphemeCategory(cp); 1667 - cache[0] = result[0]; 1668 - cache[1] = result[1]; 1669 - cache[2] = result[2]; 1670 - } 1671 - 1672 - return cache[2]; 1673 - } 1674 - }; 1675 - 1676 - function isBoundary( 1677 - catBefore: GraphemeCategory, 1678 - catAfter: GraphemeCategory, 1679 - risCount: number, 1680 - emoji: boolean, 1681 - incb: boolean, 1682 - ): boolean { 1683 - // GB3 1684 - if (catBefore === GraphemeCategory.CR && catAfter === GraphemeCategory.LF) { 1685 - return false; 1686 - } 1687 - 1688 - if ( 1689 - // GB4 1690 - catBefore === GraphemeCategory.CR || 1691 - catBefore === GraphemeCategory.Control || 1692 - catBefore === GraphemeCategory.LF || 1693 - // GB5 1694 - catAfter === GraphemeCategory.CR || 1695 - catAfter === GraphemeCategory.Control || 1696 - catAfter === GraphemeCategory.LF 1697 - ) { 1698 - return true; 1699 - } 1700 - 1701 - // GB6 1702 - if ( 1703 - catBefore === GraphemeCategory.L && 1704 - (catAfter === GraphemeCategory.L || 1705 - catAfter === GraphemeCategory.LV || 1706 - catAfter === GraphemeCategory.LVT || 1707 - catAfter === GraphemeCategory.V) 1708 - ) { 1709 - return false; 1710 - } 1711 - 1712 - // GB7 1713 - if ( 1714 - (catBefore === GraphemeCategory.LV || catBefore === GraphemeCategory.V) && 1715 - (catAfter === GraphemeCategory.T || catAfter === GraphemeCategory.V) 1716 - ) { 1717 - return false; 1718 - } 1719 - 1720 - // GB8 1721 - if ( 1722 - catAfter === GraphemeCategory.T && 1723 - (catBefore === GraphemeCategory.LVT || catBefore === GraphemeCategory.T) 1724 - ) { 1725 - return false; 1726 - } 1727 - 1728 - // GB9. GB9a 1729 - if ( 1730 - catAfter === GraphemeCategory.Extend || 1731 - catAfter === GraphemeCategory.SpacingMark || 1732 - catAfter === GraphemeCategory.ZWJ 1733 - ) { 1734 - return false; 1735 - } 1736 - 1737 - // GB9b 1738 - if (catBefore === GraphemeCategory.Prepend) { 1739 - return false; 1740 - } 1741 - 1742 - // GB9c 1743 - if (catAfter === GraphemeCategory.Any && incb) { 1744 - return false; 1745 - } 1746 - 1747 - // GB11 1748 - if (catBefore === GraphemeCategory.ZWJ && catAfter === GraphemeCategory.Extended_Pictographic) { 1749 - return !emoji; 1750 - } 1751 - 1752 - // GB12, GB13 1753 - if (catBefore === GraphemeCategory.Regional_Indicator && catAfter === GraphemeCategory.Regional_Indicator) { 1754 - return risCount % 2 === 0; 1755 - } 1756 - 1757 - // GB999 1758 - return true; 1759 - } 1760 - 1761 - export const countGraphemes = (input: string): number => { 1762 - if (input === '') { 1763 - return 0; 1764 - } 1765 - 1766 - let count = 0; 1767 - 1768 - /** Current cursor position. */ 1769 - let cursor = 0; 1770 - 1771 - /** Total length of the input string. */ 1772 - let len = input.length; 1773 - 1774 - /** Category of codepoint immediately preceding cursor, if known. */ 1775 - let catBefore: GraphemeCategory | null = null; 1776 - 1777 - /** Category of codepoint immediately preceding cursor, if known. */ 1778 - let catAfter: GraphemeCategory | null = null; 1779 - 1780 - let cache: GraphemeCategoryRange = [0, 0, GraphemeCategory.Control]; 1781 - 1782 - /** The number of RIS codepoints preceding `cursor`. */ 1783 - let risCount = 0; 1784 - 1785 - /** Emoji state */ 1786 - let emoji = false; 1787 - 1788 - /** InCB=Consonant */ 1789 - let consonant = false; 1790 - 1791 - /** InCB=Linker */ 1792 - let linker = false; 1793 - 1794 - /** InCB=Consonant InCB=Linker x InCB=Consonant */ 1795 - let incb = false; 1796 - 1797 - /** @type number */ 1798 - let cp = input.codePointAt(cursor)!; 1799 - 1800 - // let index = 0; 1801 - let segment = ''; 1802 - 1803 - while (true) { 1804 - segment += input[cursor++]; 1805 - if (isSMP(cp)) { 1806 - segment += input[cursor++]; 1807 - } 1808 - 1809 - catBefore = catAfter; 1810 - if (catBefore === null) { 1811 - catBefore = cat(cp, cache); 1812 - } 1813 - 1814 - if (!consonant && catBefore === 0) { 1815 - consonant = isIndicConjunctCosonant(cp); 1816 - } else if (catBefore === 3) { 1817 - linker = isIndicConjunctLinker(cp); 1818 - } 1819 - 1820 - if (cursor < len) { 1821 - cp = input.codePointAt(cursor)!; 1822 - catAfter = cat(cp, cache); 1823 - } else { 1824 - count++; 1825 - return count; 1826 - } 1827 - 1828 - if (catBefore === 10 /* Regional_Indicator*/) { 1829 - risCount += 1; 1830 - } else { 1831 - risCount = 0; 1832 - if ( 1833 - catAfter === 14 /* ZWJ */ && 1834 - (catBefore === 3 /* Extend */ || catBefore === 4) /* Extended_Pictographic */ 1835 - ) { 1836 - emoji = true; 1837 - 1838 - // Put GB9c rule checking here to reduce. 1839 - } else if (catAfter === 0 /* Any */) { 1840 - incb = consonant && linker && isIndicConjunctCosonant(cp); 1841 - } 1842 - } 1843 - 1844 - if (isBoundary(catBefore, catAfter, risCount, emoji, incb)) { 1845 - count++; 1846 - 1847 - // flush 1848 - // index = cursor; 1849 - segment = ''; 1850 - emoji = false; 1851 - consonant = false; 1852 - linker = false; 1853 - } 1854 - } 1855 - };