string-convert-indexes 4.0.16 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3883 +0,0 @@
1
- /**
2
- * @name string-convert-indexes
3
- * @fileoverview Convert between native JS string character indexes and grapheme-count-based indexes
4
- * @version 4.0.16
5
- * @author Roy Revelt, Codsen Ltd
6
- * @license MIT
7
- * {@link https://codsen.com/os/string-convert-indexes/}
8
- */
9
-
10
- (function (global, factory) {
11
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
12
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
13
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.stringConvertIndexes = {}));
14
- }(this, (function (exports) { 'use strict';
15
-
16
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
17
-
18
- function createCommonjsModule(fn) {
19
- var module = { exports: {} };
20
- return fn(module, module.exports), module.exports;
21
- }
22
-
23
- /**
24
- * lodash (Custom Build) <https://lodash.com/>
25
- * Build: `lodash modularize exports="npm" -o ./`
26
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
27
- * Released under MIT license <https://lodash.com/license>
28
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
29
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
30
- */
31
-
32
- var lodash_clonedeep = createCommonjsModule(function (module, exports) {
33
- /** Used as the size to enable large array optimizations. */
34
- var LARGE_ARRAY_SIZE = 200;
35
-
36
- /** Used to stand-in for `undefined` hash values. */
37
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
38
-
39
- /** Used as references for various `Number` constants. */
40
- var MAX_SAFE_INTEGER = 9007199254740991;
41
-
42
- /** `Object#toString` result references. */
43
- var argsTag = '[object Arguments]',
44
- arrayTag = '[object Array]',
45
- boolTag = '[object Boolean]',
46
- dateTag = '[object Date]',
47
- errorTag = '[object Error]',
48
- funcTag = '[object Function]',
49
- genTag = '[object GeneratorFunction]',
50
- mapTag = '[object Map]',
51
- numberTag = '[object Number]',
52
- objectTag = '[object Object]',
53
- promiseTag = '[object Promise]',
54
- regexpTag = '[object RegExp]',
55
- setTag = '[object Set]',
56
- stringTag = '[object String]',
57
- symbolTag = '[object Symbol]',
58
- weakMapTag = '[object WeakMap]';
59
-
60
- var arrayBufferTag = '[object ArrayBuffer]',
61
- dataViewTag = '[object DataView]',
62
- float32Tag = '[object Float32Array]',
63
- float64Tag = '[object Float64Array]',
64
- int8Tag = '[object Int8Array]',
65
- int16Tag = '[object Int16Array]',
66
- int32Tag = '[object Int32Array]',
67
- uint8Tag = '[object Uint8Array]',
68
- uint8ClampedTag = '[object Uint8ClampedArray]',
69
- uint16Tag = '[object Uint16Array]',
70
- uint32Tag = '[object Uint32Array]';
71
-
72
- /**
73
- * Used to match `RegExp`
74
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
75
- */
76
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
77
-
78
- /** Used to match `RegExp` flags from their coerced string values. */
79
- var reFlags = /\w*$/;
80
-
81
- /** Used to detect host constructors (Safari). */
82
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
83
-
84
- /** Used to detect unsigned integer values. */
85
- var reIsUint = /^(?:0|[1-9]\d*)$/;
86
-
87
- /** Used to identify `toStringTag` values supported by `_.clone`. */
88
- var cloneableTags = {};
89
- cloneableTags[argsTag] = cloneableTags[arrayTag] =
90
- cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
91
- cloneableTags[boolTag] = cloneableTags[dateTag] =
92
- cloneableTags[float32Tag] = cloneableTags[float64Tag] =
93
- cloneableTags[int8Tag] = cloneableTags[int16Tag] =
94
- cloneableTags[int32Tag] = cloneableTags[mapTag] =
95
- cloneableTags[numberTag] = cloneableTags[objectTag] =
96
- cloneableTags[regexpTag] = cloneableTags[setTag] =
97
- cloneableTags[stringTag] = cloneableTags[symbolTag] =
98
- cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
99
- cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
100
- cloneableTags[errorTag] = cloneableTags[funcTag] =
101
- cloneableTags[weakMapTag] = false;
102
-
103
- /** Detect free variable `global` from Node.js. */
104
- var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
105
-
106
- /** Detect free variable `self`. */
107
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
108
-
109
- /** Used as a reference to the global object. */
110
- var root = freeGlobal || freeSelf || Function('return this')();
111
-
112
- /** Detect free variable `exports`. */
113
- var freeExports = exports && !exports.nodeType && exports;
114
-
115
- /** Detect free variable `module`. */
116
- var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
117
-
118
- /** Detect the popular CommonJS extension `module.exports`. */
119
- var moduleExports = freeModule && freeModule.exports === freeExports;
120
-
121
- /**
122
- * Adds the key-value `pair` to `map`.
123
- *
124
- * @private
125
- * @param {Object} map The map to modify.
126
- * @param {Array} pair The key-value pair to add.
127
- * @returns {Object} Returns `map`.
128
- */
129
- function addMapEntry(map, pair) {
130
- // Don't return `map.set` because it's not chainable in IE 11.
131
- map.set(pair[0], pair[1]);
132
- return map;
133
- }
134
-
135
- /**
136
- * Adds `value` to `set`.
137
- *
138
- * @private
139
- * @param {Object} set The set to modify.
140
- * @param {*} value The value to add.
141
- * @returns {Object} Returns `set`.
142
- */
143
- function addSetEntry(set, value) {
144
- // Don't return `set.add` because it's not chainable in IE 11.
145
- set.add(value);
146
- return set;
147
- }
148
-
149
- /**
150
- * A specialized version of `_.forEach` for arrays without support for
151
- * iteratee shorthands.
152
- *
153
- * @private
154
- * @param {Array} [array] The array to iterate over.
155
- * @param {Function} iteratee The function invoked per iteration.
156
- * @returns {Array} Returns `array`.
157
- */
158
- function arrayEach(array, iteratee) {
159
- var index = -1,
160
- length = array ? array.length : 0;
161
-
162
- while (++index < length) {
163
- if (iteratee(array[index], index, array) === false) {
164
- break;
165
- }
166
- }
167
- return array;
168
- }
169
-
170
- /**
171
- * Appends the elements of `values` to `array`.
172
- *
173
- * @private
174
- * @param {Array} array The array to modify.
175
- * @param {Array} values The values to append.
176
- * @returns {Array} Returns `array`.
177
- */
178
- function arrayPush(array, values) {
179
- var index = -1,
180
- length = values.length,
181
- offset = array.length;
182
-
183
- while (++index < length) {
184
- array[offset + index] = values[index];
185
- }
186
- return array;
187
- }
188
-
189
- /**
190
- * A specialized version of `_.reduce` for arrays without support for
191
- * iteratee shorthands.
192
- *
193
- * @private
194
- * @param {Array} [array] The array to iterate over.
195
- * @param {Function} iteratee The function invoked per iteration.
196
- * @param {*} [accumulator] The initial value.
197
- * @param {boolean} [initAccum] Specify using the first element of `array` as
198
- * the initial value.
199
- * @returns {*} Returns the accumulated value.
200
- */
201
- function arrayReduce(array, iteratee, accumulator, initAccum) {
202
- var index = -1,
203
- length = array ? array.length : 0;
204
-
205
- if (initAccum && length) {
206
- accumulator = array[++index];
207
- }
208
- while (++index < length) {
209
- accumulator = iteratee(accumulator, array[index], index, array);
210
- }
211
- return accumulator;
212
- }
213
-
214
- /**
215
- * The base implementation of `_.times` without support for iteratee shorthands
216
- * or max array length checks.
217
- *
218
- * @private
219
- * @param {number} n The number of times to invoke `iteratee`.
220
- * @param {Function} iteratee The function invoked per iteration.
221
- * @returns {Array} Returns the array of results.
222
- */
223
- function baseTimes(n, iteratee) {
224
- var index = -1,
225
- result = Array(n);
226
-
227
- while (++index < n) {
228
- result[index] = iteratee(index);
229
- }
230
- return result;
231
- }
232
-
233
- /**
234
- * Gets the value at `key` of `object`.
235
- *
236
- * @private
237
- * @param {Object} [object] The object to query.
238
- * @param {string} key The key of the property to get.
239
- * @returns {*} Returns the property value.
240
- */
241
- function getValue(object, key) {
242
- return object == null ? undefined : object[key];
243
- }
244
-
245
- /**
246
- * Checks if `value` is a host object in IE < 9.
247
- *
248
- * @private
249
- * @param {*} value The value to check.
250
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
251
- */
252
- function isHostObject(value) {
253
- // Many host objects are `Object` objects that can coerce to strings
254
- // despite having improperly defined `toString` methods.
255
- var result = false;
256
- if (value != null && typeof value.toString != 'function') {
257
- try {
258
- result = !!(value + '');
259
- } catch (e) {}
260
- }
261
- return result;
262
- }
263
-
264
- /**
265
- * Converts `map` to its key-value pairs.
266
- *
267
- * @private
268
- * @param {Object} map The map to convert.
269
- * @returns {Array} Returns the key-value pairs.
270
- */
271
- function mapToArray(map) {
272
- var index = -1,
273
- result = Array(map.size);
274
-
275
- map.forEach(function(value, key) {
276
- result[++index] = [key, value];
277
- });
278
- return result;
279
- }
280
-
281
- /**
282
- * Creates a unary function that invokes `func` with its argument transformed.
283
- *
284
- * @private
285
- * @param {Function} func The function to wrap.
286
- * @param {Function} transform The argument transform.
287
- * @returns {Function} Returns the new function.
288
- */
289
- function overArg(func, transform) {
290
- return function(arg) {
291
- return func(transform(arg));
292
- };
293
- }
294
-
295
- /**
296
- * Converts `set` to an array of its values.
297
- *
298
- * @private
299
- * @param {Object} set The set to convert.
300
- * @returns {Array} Returns the values.
301
- */
302
- function setToArray(set) {
303
- var index = -1,
304
- result = Array(set.size);
305
-
306
- set.forEach(function(value) {
307
- result[++index] = value;
308
- });
309
- return result;
310
- }
311
-
312
- /** Used for built-in method references. */
313
- var arrayProto = Array.prototype,
314
- funcProto = Function.prototype,
315
- objectProto = Object.prototype;
316
-
317
- /** Used to detect overreaching core-js shims. */
318
- var coreJsData = root['__core-js_shared__'];
319
-
320
- /** Used to detect methods masquerading as native. */
321
- var maskSrcKey = (function() {
322
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
323
- return uid ? ('Symbol(src)_1.' + uid) : '';
324
- }());
325
-
326
- /** Used to resolve the decompiled source of functions. */
327
- var funcToString = funcProto.toString;
328
-
329
- /** Used to check objects for own properties. */
330
- var hasOwnProperty = objectProto.hasOwnProperty;
331
-
332
- /**
333
- * Used to resolve the
334
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
335
- * of values.
336
- */
337
- var objectToString = objectProto.toString;
338
-
339
- /** Used to detect if a method is native. */
340
- var reIsNative = RegExp('^' +
341
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
342
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
343
- );
344
-
345
- /** Built-in value references. */
346
- var Buffer = moduleExports ? root.Buffer : undefined,
347
- Symbol = root.Symbol,
348
- Uint8Array = root.Uint8Array,
349
- getPrototype = overArg(Object.getPrototypeOf, Object),
350
- objectCreate = Object.create,
351
- propertyIsEnumerable = objectProto.propertyIsEnumerable,
352
- splice = arrayProto.splice;
353
-
354
- /* Built-in method references for those with the same name as other `lodash` methods. */
355
- var nativeGetSymbols = Object.getOwnPropertySymbols,
356
- nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
357
- nativeKeys = overArg(Object.keys, Object);
358
-
359
- /* Built-in method references that are verified to be native. */
360
- var DataView = getNative(root, 'DataView'),
361
- Map = getNative(root, 'Map'),
362
- Promise = getNative(root, 'Promise'),
363
- Set = getNative(root, 'Set'),
364
- WeakMap = getNative(root, 'WeakMap'),
365
- nativeCreate = getNative(Object, 'create');
366
-
367
- /** Used to detect maps, sets, and weakmaps. */
368
- var dataViewCtorString = toSource(DataView),
369
- mapCtorString = toSource(Map),
370
- promiseCtorString = toSource(Promise),
371
- setCtorString = toSource(Set),
372
- weakMapCtorString = toSource(WeakMap);
373
-
374
- /** Used to convert symbols to primitives and strings. */
375
- var symbolProto = Symbol ? Symbol.prototype : undefined,
376
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
377
-
378
- /**
379
- * Creates a hash object.
380
- *
381
- * @private
382
- * @constructor
383
- * @param {Array} [entries] The key-value pairs to cache.
384
- */
385
- function Hash(entries) {
386
- var index = -1,
387
- length = entries ? entries.length : 0;
388
-
389
- this.clear();
390
- while (++index < length) {
391
- var entry = entries[index];
392
- this.set(entry[0], entry[1]);
393
- }
394
- }
395
-
396
- /**
397
- * Removes all key-value entries from the hash.
398
- *
399
- * @private
400
- * @name clear
401
- * @memberOf Hash
402
- */
403
- function hashClear() {
404
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
405
- }
406
-
407
- /**
408
- * Removes `key` and its value from the hash.
409
- *
410
- * @private
411
- * @name delete
412
- * @memberOf Hash
413
- * @param {Object} hash The hash to modify.
414
- * @param {string} key The key of the value to remove.
415
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
416
- */
417
- function hashDelete(key) {
418
- return this.has(key) && delete this.__data__[key];
419
- }
420
-
421
- /**
422
- * Gets the hash value for `key`.
423
- *
424
- * @private
425
- * @name get
426
- * @memberOf Hash
427
- * @param {string} key The key of the value to get.
428
- * @returns {*} Returns the entry value.
429
- */
430
- function hashGet(key) {
431
- var data = this.__data__;
432
- if (nativeCreate) {
433
- var result = data[key];
434
- return result === HASH_UNDEFINED ? undefined : result;
435
- }
436
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
437
- }
438
-
439
- /**
440
- * Checks if a hash value for `key` exists.
441
- *
442
- * @private
443
- * @name has
444
- * @memberOf Hash
445
- * @param {string} key The key of the entry to check.
446
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
447
- */
448
- function hashHas(key) {
449
- var data = this.__data__;
450
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
451
- }
452
-
453
- /**
454
- * Sets the hash `key` to `value`.
455
- *
456
- * @private
457
- * @name set
458
- * @memberOf Hash
459
- * @param {string} key The key of the value to set.
460
- * @param {*} value The value to set.
461
- * @returns {Object} Returns the hash instance.
462
- */
463
- function hashSet(key, value) {
464
- var data = this.__data__;
465
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
466
- return this;
467
- }
468
-
469
- // Add methods to `Hash`.
470
- Hash.prototype.clear = hashClear;
471
- Hash.prototype['delete'] = hashDelete;
472
- Hash.prototype.get = hashGet;
473
- Hash.prototype.has = hashHas;
474
- Hash.prototype.set = hashSet;
475
-
476
- /**
477
- * Creates an list cache object.
478
- *
479
- * @private
480
- * @constructor
481
- * @param {Array} [entries] The key-value pairs to cache.
482
- */
483
- function ListCache(entries) {
484
- var index = -1,
485
- length = entries ? entries.length : 0;
486
-
487
- this.clear();
488
- while (++index < length) {
489
- var entry = entries[index];
490
- this.set(entry[0], entry[1]);
491
- }
492
- }
493
-
494
- /**
495
- * Removes all key-value entries from the list cache.
496
- *
497
- * @private
498
- * @name clear
499
- * @memberOf ListCache
500
- */
501
- function listCacheClear() {
502
- this.__data__ = [];
503
- }
504
-
505
- /**
506
- * Removes `key` and its value from the list cache.
507
- *
508
- * @private
509
- * @name delete
510
- * @memberOf ListCache
511
- * @param {string} key The key of the value to remove.
512
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
513
- */
514
- function listCacheDelete(key) {
515
- var data = this.__data__,
516
- index = assocIndexOf(data, key);
517
-
518
- if (index < 0) {
519
- return false;
520
- }
521
- var lastIndex = data.length - 1;
522
- if (index == lastIndex) {
523
- data.pop();
524
- } else {
525
- splice.call(data, index, 1);
526
- }
527
- return true;
528
- }
529
-
530
- /**
531
- * Gets the list cache value for `key`.
532
- *
533
- * @private
534
- * @name get
535
- * @memberOf ListCache
536
- * @param {string} key The key of the value to get.
537
- * @returns {*} Returns the entry value.
538
- */
539
- function listCacheGet(key) {
540
- var data = this.__data__,
541
- index = assocIndexOf(data, key);
542
-
543
- return index < 0 ? undefined : data[index][1];
544
- }
545
-
546
- /**
547
- * Checks if a list cache value for `key` exists.
548
- *
549
- * @private
550
- * @name has
551
- * @memberOf ListCache
552
- * @param {string} key The key of the entry to check.
553
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
554
- */
555
- function listCacheHas(key) {
556
- return assocIndexOf(this.__data__, key) > -1;
557
- }
558
-
559
- /**
560
- * Sets the list cache `key` to `value`.
561
- *
562
- * @private
563
- * @name set
564
- * @memberOf ListCache
565
- * @param {string} key The key of the value to set.
566
- * @param {*} value The value to set.
567
- * @returns {Object} Returns the list cache instance.
568
- */
569
- function listCacheSet(key, value) {
570
- var data = this.__data__,
571
- index = assocIndexOf(data, key);
572
-
573
- if (index < 0) {
574
- data.push([key, value]);
575
- } else {
576
- data[index][1] = value;
577
- }
578
- return this;
579
- }
580
-
581
- // Add methods to `ListCache`.
582
- ListCache.prototype.clear = listCacheClear;
583
- ListCache.prototype['delete'] = listCacheDelete;
584
- ListCache.prototype.get = listCacheGet;
585
- ListCache.prototype.has = listCacheHas;
586
- ListCache.prototype.set = listCacheSet;
587
-
588
- /**
589
- * Creates a map cache object to store key-value pairs.
590
- *
591
- * @private
592
- * @constructor
593
- * @param {Array} [entries] The key-value pairs to cache.
594
- */
595
- function MapCache(entries) {
596
- var index = -1,
597
- length = entries ? entries.length : 0;
598
-
599
- this.clear();
600
- while (++index < length) {
601
- var entry = entries[index];
602
- this.set(entry[0], entry[1]);
603
- }
604
- }
605
-
606
- /**
607
- * Removes all key-value entries from the map.
608
- *
609
- * @private
610
- * @name clear
611
- * @memberOf MapCache
612
- */
613
- function mapCacheClear() {
614
- this.__data__ = {
615
- 'hash': new Hash,
616
- 'map': new (Map || ListCache),
617
- 'string': new Hash
618
- };
619
- }
620
-
621
- /**
622
- * Removes `key` and its value from the map.
623
- *
624
- * @private
625
- * @name delete
626
- * @memberOf MapCache
627
- * @param {string} key The key of the value to remove.
628
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
629
- */
630
- function mapCacheDelete(key) {
631
- return getMapData(this, key)['delete'](key);
632
- }
633
-
634
- /**
635
- * Gets the map value for `key`.
636
- *
637
- * @private
638
- * @name get
639
- * @memberOf MapCache
640
- * @param {string} key The key of the value to get.
641
- * @returns {*} Returns the entry value.
642
- */
643
- function mapCacheGet(key) {
644
- return getMapData(this, key).get(key);
645
- }
646
-
647
- /**
648
- * Checks if a map value for `key` exists.
649
- *
650
- * @private
651
- * @name has
652
- * @memberOf MapCache
653
- * @param {string} key The key of the entry to check.
654
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
655
- */
656
- function mapCacheHas(key) {
657
- return getMapData(this, key).has(key);
658
- }
659
-
660
- /**
661
- * Sets the map `key` to `value`.
662
- *
663
- * @private
664
- * @name set
665
- * @memberOf MapCache
666
- * @param {string} key The key of the value to set.
667
- * @param {*} value The value to set.
668
- * @returns {Object} Returns the map cache instance.
669
- */
670
- function mapCacheSet(key, value) {
671
- getMapData(this, key).set(key, value);
672
- return this;
673
- }
674
-
675
- // Add methods to `MapCache`.
676
- MapCache.prototype.clear = mapCacheClear;
677
- MapCache.prototype['delete'] = mapCacheDelete;
678
- MapCache.prototype.get = mapCacheGet;
679
- MapCache.prototype.has = mapCacheHas;
680
- MapCache.prototype.set = mapCacheSet;
681
-
682
- /**
683
- * Creates a stack cache object to store key-value pairs.
684
- *
685
- * @private
686
- * @constructor
687
- * @param {Array} [entries] The key-value pairs to cache.
688
- */
689
- function Stack(entries) {
690
- this.__data__ = new ListCache(entries);
691
- }
692
-
693
- /**
694
- * Removes all key-value entries from the stack.
695
- *
696
- * @private
697
- * @name clear
698
- * @memberOf Stack
699
- */
700
- function stackClear() {
701
- this.__data__ = new ListCache;
702
- }
703
-
704
- /**
705
- * Removes `key` and its value from the stack.
706
- *
707
- * @private
708
- * @name delete
709
- * @memberOf Stack
710
- * @param {string} key The key of the value to remove.
711
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
712
- */
713
- function stackDelete(key) {
714
- return this.__data__['delete'](key);
715
- }
716
-
717
- /**
718
- * Gets the stack value for `key`.
719
- *
720
- * @private
721
- * @name get
722
- * @memberOf Stack
723
- * @param {string} key The key of the value to get.
724
- * @returns {*} Returns the entry value.
725
- */
726
- function stackGet(key) {
727
- return this.__data__.get(key);
728
- }
729
-
730
- /**
731
- * Checks if a stack value for `key` exists.
732
- *
733
- * @private
734
- * @name has
735
- * @memberOf Stack
736
- * @param {string} key The key of the entry to check.
737
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
738
- */
739
- function stackHas(key) {
740
- return this.__data__.has(key);
741
- }
742
-
743
- /**
744
- * Sets the stack `key` to `value`.
745
- *
746
- * @private
747
- * @name set
748
- * @memberOf Stack
749
- * @param {string} key The key of the value to set.
750
- * @param {*} value The value to set.
751
- * @returns {Object} Returns the stack cache instance.
752
- */
753
- function stackSet(key, value) {
754
- var cache = this.__data__;
755
- if (cache instanceof ListCache) {
756
- var pairs = cache.__data__;
757
- if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
758
- pairs.push([key, value]);
759
- return this;
760
- }
761
- cache = this.__data__ = new MapCache(pairs);
762
- }
763
- cache.set(key, value);
764
- return this;
765
- }
766
-
767
- // Add methods to `Stack`.
768
- Stack.prototype.clear = stackClear;
769
- Stack.prototype['delete'] = stackDelete;
770
- Stack.prototype.get = stackGet;
771
- Stack.prototype.has = stackHas;
772
- Stack.prototype.set = stackSet;
773
-
774
- /**
775
- * Creates an array of the enumerable property names of the array-like `value`.
776
- *
777
- * @private
778
- * @param {*} value The value to query.
779
- * @param {boolean} inherited Specify returning inherited property names.
780
- * @returns {Array} Returns the array of property names.
781
- */
782
- function arrayLikeKeys(value, inherited) {
783
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
784
- // Safari 9 makes `arguments.length` enumerable in strict mode.
785
- var result = (isArray(value) || isArguments(value))
786
- ? baseTimes(value.length, String)
787
- : [];
788
-
789
- var length = result.length,
790
- skipIndexes = !!length;
791
-
792
- for (var key in value) {
793
- if ((inherited || hasOwnProperty.call(value, key)) &&
794
- !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
795
- result.push(key);
796
- }
797
- }
798
- return result;
799
- }
800
-
801
- /**
802
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
803
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
804
- * for equality comparisons.
805
- *
806
- * @private
807
- * @param {Object} object The object to modify.
808
- * @param {string} key The key of the property to assign.
809
- * @param {*} value The value to assign.
810
- */
811
- function assignValue(object, key, value) {
812
- var objValue = object[key];
813
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
814
- (value === undefined && !(key in object))) {
815
- object[key] = value;
816
- }
817
- }
818
-
819
- /**
820
- * Gets the index at which the `key` is found in `array` of key-value pairs.
821
- *
822
- * @private
823
- * @param {Array} array The array to inspect.
824
- * @param {*} key The key to search for.
825
- * @returns {number} Returns the index of the matched value, else `-1`.
826
- */
827
- function assocIndexOf(array, key) {
828
- var length = array.length;
829
- while (length--) {
830
- if (eq(array[length][0], key)) {
831
- return length;
832
- }
833
- }
834
- return -1;
835
- }
836
-
837
- /**
838
- * The base implementation of `_.assign` without support for multiple sources
839
- * or `customizer` functions.
840
- *
841
- * @private
842
- * @param {Object} object The destination object.
843
- * @param {Object} source The source object.
844
- * @returns {Object} Returns `object`.
845
- */
846
- function baseAssign(object, source) {
847
- return object && copyObject(source, keys(source), object);
848
- }
849
-
850
- /**
851
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
852
- * traversed objects.
853
- *
854
- * @private
855
- * @param {*} value The value to clone.
856
- * @param {boolean} [isDeep] Specify a deep clone.
857
- * @param {boolean} [isFull] Specify a clone including symbols.
858
- * @param {Function} [customizer] The function to customize cloning.
859
- * @param {string} [key] The key of `value`.
860
- * @param {Object} [object] The parent object of `value`.
861
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
862
- * @returns {*} Returns the cloned value.
863
- */
864
- function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
865
- var result;
866
- if (customizer) {
867
- result = object ? customizer(value, key, object, stack) : customizer(value);
868
- }
869
- if (result !== undefined) {
870
- return result;
871
- }
872
- if (!isObject(value)) {
873
- return value;
874
- }
875
- var isArr = isArray(value);
876
- if (isArr) {
877
- result = initCloneArray(value);
878
- if (!isDeep) {
879
- return copyArray(value, result);
880
- }
881
- } else {
882
- var tag = getTag(value),
883
- isFunc = tag == funcTag || tag == genTag;
884
-
885
- if (isBuffer(value)) {
886
- return cloneBuffer(value, isDeep);
887
- }
888
- if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
889
- if (isHostObject(value)) {
890
- return object ? value : {};
891
- }
892
- result = initCloneObject(isFunc ? {} : value);
893
- if (!isDeep) {
894
- return copySymbols(value, baseAssign(result, value));
895
- }
896
- } else {
897
- if (!cloneableTags[tag]) {
898
- return object ? value : {};
899
- }
900
- result = initCloneByTag(value, tag, baseClone, isDeep);
901
- }
902
- }
903
- // Check for circular references and return its corresponding clone.
904
- stack || (stack = new Stack);
905
- var stacked = stack.get(value);
906
- if (stacked) {
907
- return stacked;
908
- }
909
- stack.set(value, result);
910
-
911
- if (!isArr) {
912
- var props = isFull ? getAllKeys(value) : keys(value);
913
- }
914
- arrayEach(props || value, function(subValue, key) {
915
- if (props) {
916
- key = subValue;
917
- subValue = value[key];
918
- }
919
- // Recursively populate clone (susceptible to call stack limits).
920
- assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
921
- });
922
- return result;
923
- }
924
-
925
- /**
926
- * The base implementation of `_.create` without support for assigning
927
- * properties to the created object.
928
- *
929
- * @private
930
- * @param {Object} prototype The object to inherit from.
931
- * @returns {Object} Returns the new object.
932
- */
933
- function baseCreate(proto) {
934
- return isObject(proto) ? objectCreate(proto) : {};
935
- }
936
-
937
- /**
938
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
939
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
940
- * symbols of `object`.
941
- *
942
- * @private
943
- * @param {Object} object The object to query.
944
- * @param {Function} keysFunc The function to get the keys of `object`.
945
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
946
- * @returns {Array} Returns the array of property names and symbols.
947
- */
948
- function baseGetAllKeys(object, keysFunc, symbolsFunc) {
949
- var result = keysFunc(object);
950
- return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
951
- }
952
-
953
- /**
954
- * The base implementation of `getTag`.
955
- *
956
- * @private
957
- * @param {*} value The value to query.
958
- * @returns {string} Returns the `toStringTag`.
959
- */
960
- function baseGetTag(value) {
961
- return objectToString.call(value);
962
- }
963
-
964
- /**
965
- * The base implementation of `_.isNative` without bad shim checks.
966
- *
967
- * @private
968
- * @param {*} value The value to check.
969
- * @returns {boolean} Returns `true` if `value` is a native function,
970
- * else `false`.
971
- */
972
- function baseIsNative(value) {
973
- if (!isObject(value) || isMasked(value)) {
974
- return false;
975
- }
976
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
977
- return pattern.test(toSource(value));
978
- }
979
-
980
- /**
981
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
982
- *
983
- * @private
984
- * @param {Object} object The object to query.
985
- * @returns {Array} Returns the array of property names.
986
- */
987
- function baseKeys(object) {
988
- if (!isPrototype(object)) {
989
- return nativeKeys(object);
990
- }
991
- var result = [];
992
- for (var key in Object(object)) {
993
- if (hasOwnProperty.call(object, key) && key != 'constructor') {
994
- result.push(key);
995
- }
996
- }
997
- return result;
998
- }
999
-
1000
- /**
1001
- * Creates a clone of `buffer`.
1002
- *
1003
- * @private
1004
- * @param {Buffer} buffer The buffer to clone.
1005
- * @param {boolean} [isDeep] Specify a deep clone.
1006
- * @returns {Buffer} Returns the cloned buffer.
1007
- */
1008
- function cloneBuffer(buffer, isDeep) {
1009
- if (isDeep) {
1010
- return buffer.slice();
1011
- }
1012
- var result = new buffer.constructor(buffer.length);
1013
- buffer.copy(result);
1014
- return result;
1015
- }
1016
-
1017
- /**
1018
- * Creates a clone of `arrayBuffer`.
1019
- *
1020
- * @private
1021
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
1022
- * @returns {ArrayBuffer} Returns the cloned array buffer.
1023
- */
1024
- function cloneArrayBuffer(arrayBuffer) {
1025
- var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
1026
- new Uint8Array(result).set(new Uint8Array(arrayBuffer));
1027
- return result;
1028
- }
1029
-
1030
- /**
1031
- * Creates a clone of `dataView`.
1032
- *
1033
- * @private
1034
- * @param {Object} dataView The data view to clone.
1035
- * @param {boolean} [isDeep] Specify a deep clone.
1036
- * @returns {Object} Returns the cloned data view.
1037
- */
1038
- function cloneDataView(dataView, isDeep) {
1039
- var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
1040
- return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
1041
- }
1042
-
1043
- /**
1044
- * Creates a clone of `map`.
1045
- *
1046
- * @private
1047
- * @param {Object} map The map to clone.
1048
- * @param {Function} cloneFunc The function to clone values.
1049
- * @param {boolean} [isDeep] Specify a deep clone.
1050
- * @returns {Object} Returns the cloned map.
1051
- */
1052
- function cloneMap(map, isDeep, cloneFunc) {
1053
- var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
1054
- return arrayReduce(array, addMapEntry, new map.constructor);
1055
- }
1056
-
1057
- /**
1058
- * Creates a clone of `regexp`.
1059
- *
1060
- * @private
1061
- * @param {Object} regexp The regexp to clone.
1062
- * @returns {Object} Returns the cloned regexp.
1063
- */
1064
- function cloneRegExp(regexp) {
1065
- var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
1066
- result.lastIndex = regexp.lastIndex;
1067
- return result;
1068
- }
1069
-
1070
- /**
1071
- * Creates a clone of `set`.
1072
- *
1073
- * @private
1074
- * @param {Object} set The set to clone.
1075
- * @param {Function} cloneFunc The function to clone values.
1076
- * @param {boolean} [isDeep] Specify a deep clone.
1077
- * @returns {Object} Returns the cloned set.
1078
- */
1079
- function cloneSet(set, isDeep, cloneFunc) {
1080
- var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
1081
- return arrayReduce(array, addSetEntry, new set.constructor);
1082
- }
1083
-
1084
- /**
1085
- * Creates a clone of the `symbol` object.
1086
- *
1087
- * @private
1088
- * @param {Object} symbol The symbol object to clone.
1089
- * @returns {Object} Returns the cloned symbol object.
1090
- */
1091
- function cloneSymbol(symbol) {
1092
- return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
1093
- }
1094
-
1095
- /**
1096
- * Creates a clone of `typedArray`.
1097
- *
1098
- * @private
1099
- * @param {Object} typedArray The typed array to clone.
1100
- * @param {boolean} [isDeep] Specify a deep clone.
1101
- * @returns {Object} Returns the cloned typed array.
1102
- */
1103
- function cloneTypedArray(typedArray, isDeep) {
1104
- var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
1105
- return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
1106
- }
1107
-
1108
- /**
1109
- * Copies the values of `source` to `array`.
1110
- *
1111
- * @private
1112
- * @param {Array} source The array to copy values from.
1113
- * @param {Array} [array=[]] The array to copy values to.
1114
- * @returns {Array} Returns `array`.
1115
- */
1116
- function copyArray(source, array) {
1117
- var index = -1,
1118
- length = source.length;
1119
-
1120
- array || (array = Array(length));
1121
- while (++index < length) {
1122
- array[index] = source[index];
1123
- }
1124
- return array;
1125
- }
1126
-
1127
- /**
1128
- * Copies properties of `source` to `object`.
1129
- *
1130
- * @private
1131
- * @param {Object} source The object to copy properties from.
1132
- * @param {Array} props The property identifiers to copy.
1133
- * @param {Object} [object={}] The object to copy properties to.
1134
- * @param {Function} [customizer] The function to customize copied values.
1135
- * @returns {Object} Returns `object`.
1136
- */
1137
- function copyObject(source, props, object, customizer) {
1138
- object || (object = {});
1139
-
1140
- var index = -1,
1141
- length = props.length;
1142
-
1143
- while (++index < length) {
1144
- var key = props[index];
1145
-
1146
- var newValue = customizer
1147
- ? customizer(object[key], source[key], key, object, source)
1148
- : undefined;
1149
-
1150
- assignValue(object, key, newValue === undefined ? source[key] : newValue);
1151
- }
1152
- return object;
1153
- }
1154
-
1155
- /**
1156
- * Copies own symbol properties of `source` to `object`.
1157
- *
1158
- * @private
1159
- * @param {Object} source The object to copy symbols from.
1160
- * @param {Object} [object={}] The object to copy symbols to.
1161
- * @returns {Object} Returns `object`.
1162
- */
1163
- function copySymbols(source, object) {
1164
- return copyObject(source, getSymbols(source), object);
1165
- }
1166
-
1167
- /**
1168
- * Creates an array of own enumerable property names and symbols of `object`.
1169
- *
1170
- * @private
1171
- * @param {Object} object The object to query.
1172
- * @returns {Array} Returns the array of property names and symbols.
1173
- */
1174
- function getAllKeys(object) {
1175
- return baseGetAllKeys(object, keys, getSymbols);
1176
- }
1177
-
1178
- /**
1179
- * Gets the data for `map`.
1180
- *
1181
- * @private
1182
- * @param {Object} map The map to query.
1183
- * @param {string} key The reference key.
1184
- * @returns {*} Returns the map data.
1185
- */
1186
- function getMapData(map, key) {
1187
- var data = map.__data__;
1188
- return isKeyable(key)
1189
- ? data[typeof key == 'string' ? 'string' : 'hash']
1190
- : data.map;
1191
- }
1192
-
1193
- /**
1194
- * Gets the native function at `key` of `object`.
1195
- *
1196
- * @private
1197
- * @param {Object} object The object to query.
1198
- * @param {string} key The key of the method to get.
1199
- * @returns {*} Returns the function if it's native, else `undefined`.
1200
- */
1201
- function getNative(object, key) {
1202
- var value = getValue(object, key);
1203
- return baseIsNative(value) ? value : undefined;
1204
- }
1205
-
1206
- /**
1207
- * Creates an array of the own enumerable symbol properties of `object`.
1208
- *
1209
- * @private
1210
- * @param {Object} object The object to query.
1211
- * @returns {Array} Returns the array of symbols.
1212
- */
1213
- var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
1214
-
1215
- /**
1216
- * Gets the `toStringTag` of `value`.
1217
- *
1218
- * @private
1219
- * @param {*} value The value to query.
1220
- * @returns {string} Returns the `toStringTag`.
1221
- */
1222
- var getTag = baseGetTag;
1223
-
1224
- // Fallback for data views, maps, sets, and weak maps in IE 11,
1225
- // for data views in Edge < 14, and promises in Node.js.
1226
- if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
1227
- (Map && getTag(new Map) != mapTag) ||
1228
- (Promise && getTag(Promise.resolve()) != promiseTag) ||
1229
- (Set && getTag(new Set) != setTag) ||
1230
- (WeakMap && getTag(new WeakMap) != weakMapTag)) {
1231
- getTag = function(value) {
1232
- var result = objectToString.call(value),
1233
- Ctor = result == objectTag ? value.constructor : undefined,
1234
- ctorString = Ctor ? toSource(Ctor) : undefined;
1235
-
1236
- if (ctorString) {
1237
- switch (ctorString) {
1238
- case dataViewCtorString: return dataViewTag;
1239
- case mapCtorString: return mapTag;
1240
- case promiseCtorString: return promiseTag;
1241
- case setCtorString: return setTag;
1242
- case weakMapCtorString: return weakMapTag;
1243
- }
1244
- }
1245
- return result;
1246
- };
1247
- }
1248
-
1249
- /**
1250
- * Initializes an array clone.
1251
- *
1252
- * @private
1253
- * @param {Array} array The array to clone.
1254
- * @returns {Array} Returns the initialized clone.
1255
- */
1256
- function initCloneArray(array) {
1257
- var length = array.length,
1258
- result = array.constructor(length);
1259
-
1260
- // Add properties assigned by `RegExp#exec`.
1261
- if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
1262
- result.index = array.index;
1263
- result.input = array.input;
1264
- }
1265
- return result;
1266
- }
1267
-
1268
- /**
1269
- * Initializes an object clone.
1270
- *
1271
- * @private
1272
- * @param {Object} object The object to clone.
1273
- * @returns {Object} Returns the initialized clone.
1274
- */
1275
- function initCloneObject(object) {
1276
- return (typeof object.constructor == 'function' && !isPrototype(object))
1277
- ? baseCreate(getPrototype(object))
1278
- : {};
1279
- }
1280
-
1281
- /**
1282
- * Initializes an object clone based on its `toStringTag`.
1283
- *
1284
- * **Note:** This function only supports cloning values with tags of
1285
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
1286
- *
1287
- * @private
1288
- * @param {Object} object The object to clone.
1289
- * @param {string} tag The `toStringTag` of the object to clone.
1290
- * @param {Function} cloneFunc The function to clone values.
1291
- * @param {boolean} [isDeep] Specify a deep clone.
1292
- * @returns {Object} Returns the initialized clone.
1293
- */
1294
- function initCloneByTag(object, tag, cloneFunc, isDeep) {
1295
- var Ctor = object.constructor;
1296
- switch (tag) {
1297
- case arrayBufferTag:
1298
- return cloneArrayBuffer(object);
1299
-
1300
- case boolTag:
1301
- case dateTag:
1302
- return new Ctor(+object);
1303
-
1304
- case dataViewTag:
1305
- return cloneDataView(object, isDeep);
1306
-
1307
- case float32Tag: case float64Tag:
1308
- case int8Tag: case int16Tag: case int32Tag:
1309
- case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
1310
- return cloneTypedArray(object, isDeep);
1311
-
1312
- case mapTag:
1313
- return cloneMap(object, isDeep, cloneFunc);
1314
-
1315
- case numberTag:
1316
- case stringTag:
1317
- return new Ctor(object);
1318
-
1319
- case regexpTag:
1320
- return cloneRegExp(object);
1321
-
1322
- case setTag:
1323
- return cloneSet(object, isDeep, cloneFunc);
1324
-
1325
- case symbolTag:
1326
- return cloneSymbol(object);
1327
- }
1328
- }
1329
-
1330
- /**
1331
- * Checks if `value` is a valid array-like index.
1332
- *
1333
- * @private
1334
- * @param {*} value The value to check.
1335
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
1336
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
1337
- */
1338
- function isIndex(value, length) {
1339
- length = length == null ? MAX_SAFE_INTEGER : length;
1340
- return !!length &&
1341
- (typeof value == 'number' || reIsUint.test(value)) &&
1342
- (value > -1 && value % 1 == 0 && value < length);
1343
- }
1344
-
1345
- /**
1346
- * Checks if `value` is suitable for use as unique object key.
1347
- *
1348
- * @private
1349
- * @param {*} value The value to check.
1350
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
1351
- */
1352
- function isKeyable(value) {
1353
- var type = typeof value;
1354
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
1355
- ? (value !== '__proto__')
1356
- : (value === null);
1357
- }
1358
-
1359
- /**
1360
- * Checks if `func` has its source masked.
1361
- *
1362
- * @private
1363
- * @param {Function} func The function to check.
1364
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
1365
- */
1366
- function isMasked(func) {
1367
- return !!maskSrcKey && (maskSrcKey in func);
1368
- }
1369
-
1370
- /**
1371
- * Checks if `value` is likely a prototype object.
1372
- *
1373
- * @private
1374
- * @param {*} value The value to check.
1375
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
1376
- */
1377
- function isPrototype(value) {
1378
- var Ctor = value && value.constructor,
1379
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
1380
-
1381
- return value === proto;
1382
- }
1383
-
1384
- /**
1385
- * Converts `func` to its source code.
1386
- *
1387
- * @private
1388
- * @param {Function} func The function to process.
1389
- * @returns {string} Returns the source code.
1390
- */
1391
- function toSource(func) {
1392
- if (func != null) {
1393
- try {
1394
- return funcToString.call(func);
1395
- } catch (e) {}
1396
- try {
1397
- return (func + '');
1398
- } catch (e) {}
1399
- }
1400
- return '';
1401
- }
1402
-
1403
- /**
1404
- * This method is like `_.clone` except that it recursively clones `value`.
1405
- *
1406
- * @static
1407
- * @memberOf _
1408
- * @since 1.0.0
1409
- * @category Lang
1410
- * @param {*} value The value to recursively clone.
1411
- * @returns {*} Returns the deep cloned value.
1412
- * @see _.clone
1413
- * @example
1414
- *
1415
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
1416
- *
1417
- * var deep = _.cloneDeep(objects);
1418
- * console.log(deep[0] === objects[0]);
1419
- * // => false
1420
- */
1421
- function cloneDeep(value) {
1422
- return baseClone(value, true, true);
1423
- }
1424
-
1425
- /**
1426
- * Performs a
1427
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
1428
- * comparison between two values to determine if they are equivalent.
1429
- *
1430
- * @static
1431
- * @memberOf _
1432
- * @since 4.0.0
1433
- * @category Lang
1434
- * @param {*} value The value to compare.
1435
- * @param {*} other The other value to compare.
1436
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1437
- * @example
1438
- *
1439
- * var object = { 'a': 1 };
1440
- * var other = { 'a': 1 };
1441
- *
1442
- * _.eq(object, object);
1443
- * // => true
1444
- *
1445
- * _.eq(object, other);
1446
- * // => false
1447
- *
1448
- * _.eq('a', 'a');
1449
- * // => true
1450
- *
1451
- * _.eq('a', Object('a'));
1452
- * // => false
1453
- *
1454
- * _.eq(NaN, NaN);
1455
- * // => true
1456
- */
1457
- function eq(value, other) {
1458
- return value === other || (value !== value && other !== other);
1459
- }
1460
-
1461
- /**
1462
- * Checks if `value` is likely an `arguments` object.
1463
- *
1464
- * @static
1465
- * @memberOf _
1466
- * @since 0.1.0
1467
- * @category Lang
1468
- * @param {*} value The value to check.
1469
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1470
- * else `false`.
1471
- * @example
1472
- *
1473
- * _.isArguments(function() { return arguments; }());
1474
- * // => true
1475
- *
1476
- * _.isArguments([1, 2, 3]);
1477
- * // => false
1478
- */
1479
- function isArguments(value) {
1480
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
1481
- return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
1482
- (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
1483
- }
1484
-
1485
- /**
1486
- * Checks if `value` is classified as an `Array` object.
1487
- *
1488
- * @static
1489
- * @memberOf _
1490
- * @since 0.1.0
1491
- * @category Lang
1492
- * @param {*} value The value to check.
1493
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
1494
- * @example
1495
- *
1496
- * _.isArray([1, 2, 3]);
1497
- * // => true
1498
- *
1499
- * _.isArray(document.body.children);
1500
- * // => false
1501
- *
1502
- * _.isArray('abc');
1503
- * // => false
1504
- *
1505
- * _.isArray(_.noop);
1506
- * // => false
1507
- */
1508
- var isArray = Array.isArray;
1509
-
1510
- /**
1511
- * Checks if `value` is array-like. A value is considered array-like if it's
1512
- * not a function and has a `value.length` that's an integer greater than or
1513
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
1514
- *
1515
- * @static
1516
- * @memberOf _
1517
- * @since 4.0.0
1518
- * @category Lang
1519
- * @param {*} value The value to check.
1520
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
1521
- * @example
1522
- *
1523
- * _.isArrayLike([1, 2, 3]);
1524
- * // => true
1525
- *
1526
- * _.isArrayLike(document.body.children);
1527
- * // => true
1528
- *
1529
- * _.isArrayLike('abc');
1530
- * // => true
1531
- *
1532
- * _.isArrayLike(_.noop);
1533
- * // => false
1534
- */
1535
- function isArrayLike(value) {
1536
- return value != null && isLength(value.length) && !isFunction(value);
1537
- }
1538
-
1539
- /**
1540
- * This method is like `_.isArrayLike` except that it also checks if `value`
1541
- * is an object.
1542
- *
1543
- * @static
1544
- * @memberOf _
1545
- * @since 4.0.0
1546
- * @category Lang
1547
- * @param {*} value The value to check.
1548
- * @returns {boolean} Returns `true` if `value` is an array-like object,
1549
- * else `false`.
1550
- * @example
1551
- *
1552
- * _.isArrayLikeObject([1, 2, 3]);
1553
- * // => true
1554
- *
1555
- * _.isArrayLikeObject(document.body.children);
1556
- * // => true
1557
- *
1558
- * _.isArrayLikeObject('abc');
1559
- * // => false
1560
- *
1561
- * _.isArrayLikeObject(_.noop);
1562
- * // => false
1563
- */
1564
- function isArrayLikeObject(value) {
1565
- return isObjectLike(value) && isArrayLike(value);
1566
- }
1567
-
1568
- /**
1569
- * Checks if `value` is a buffer.
1570
- *
1571
- * @static
1572
- * @memberOf _
1573
- * @since 4.3.0
1574
- * @category Lang
1575
- * @param {*} value The value to check.
1576
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
1577
- * @example
1578
- *
1579
- * _.isBuffer(new Buffer(2));
1580
- * // => true
1581
- *
1582
- * _.isBuffer(new Uint8Array(2));
1583
- * // => false
1584
- */
1585
- var isBuffer = nativeIsBuffer || stubFalse;
1586
-
1587
- /**
1588
- * Checks if `value` is classified as a `Function` object.
1589
- *
1590
- * @static
1591
- * @memberOf _
1592
- * @since 0.1.0
1593
- * @category Lang
1594
- * @param {*} value The value to check.
1595
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
1596
- * @example
1597
- *
1598
- * _.isFunction(_);
1599
- * // => true
1600
- *
1601
- * _.isFunction(/abc/);
1602
- * // => false
1603
- */
1604
- function isFunction(value) {
1605
- // The use of `Object#toString` avoids issues with the `typeof` operator
1606
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
1607
- var tag = isObject(value) ? objectToString.call(value) : '';
1608
- return tag == funcTag || tag == genTag;
1609
- }
1610
-
1611
- /**
1612
- * Checks if `value` is a valid array-like length.
1613
- *
1614
- * **Note:** This method is loosely based on
1615
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
1616
- *
1617
- * @static
1618
- * @memberOf _
1619
- * @since 4.0.0
1620
- * @category Lang
1621
- * @param {*} value The value to check.
1622
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
1623
- * @example
1624
- *
1625
- * _.isLength(3);
1626
- * // => true
1627
- *
1628
- * _.isLength(Number.MIN_VALUE);
1629
- * // => false
1630
- *
1631
- * _.isLength(Infinity);
1632
- * // => false
1633
- *
1634
- * _.isLength('3');
1635
- * // => false
1636
- */
1637
- function isLength(value) {
1638
- return typeof value == 'number' &&
1639
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
1640
- }
1641
-
1642
- /**
1643
- * Checks if `value` is the
1644
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
1645
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1646
- *
1647
- * @static
1648
- * @memberOf _
1649
- * @since 0.1.0
1650
- * @category Lang
1651
- * @param {*} value The value to check.
1652
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1653
- * @example
1654
- *
1655
- * _.isObject({});
1656
- * // => true
1657
- *
1658
- * _.isObject([1, 2, 3]);
1659
- * // => true
1660
- *
1661
- * _.isObject(_.noop);
1662
- * // => true
1663
- *
1664
- * _.isObject(null);
1665
- * // => false
1666
- */
1667
- function isObject(value) {
1668
- var type = typeof value;
1669
- return !!value && (type == 'object' || type == 'function');
1670
- }
1671
-
1672
- /**
1673
- * Checks if `value` is object-like. A value is object-like if it's not `null`
1674
- * and has a `typeof` result of "object".
1675
- *
1676
- * @static
1677
- * @memberOf _
1678
- * @since 4.0.0
1679
- * @category Lang
1680
- * @param {*} value The value to check.
1681
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1682
- * @example
1683
- *
1684
- * _.isObjectLike({});
1685
- * // => true
1686
- *
1687
- * _.isObjectLike([1, 2, 3]);
1688
- * // => true
1689
- *
1690
- * _.isObjectLike(_.noop);
1691
- * // => false
1692
- *
1693
- * _.isObjectLike(null);
1694
- * // => false
1695
- */
1696
- function isObjectLike(value) {
1697
- return !!value && typeof value == 'object';
1698
- }
1699
-
1700
- /**
1701
- * Creates an array of the own enumerable property names of `object`.
1702
- *
1703
- * **Note:** Non-object values are coerced to objects. See the
1704
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1705
- * for more details.
1706
- *
1707
- * @static
1708
- * @since 0.1.0
1709
- * @memberOf _
1710
- * @category Object
1711
- * @param {Object} object The object to query.
1712
- * @returns {Array} Returns the array of property names.
1713
- * @example
1714
- *
1715
- * function Foo() {
1716
- * this.a = 1;
1717
- * this.b = 2;
1718
- * }
1719
- *
1720
- * Foo.prototype.c = 3;
1721
- *
1722
- * _.keys(new Foo);
1723
- * // => ['a', 'b'] (iteration order is not guaranteed)
1724
- *
1725
- * _.keys('hi');
1726
- * // => ['0', '1']
1727
- */
1728
- function keys(object) {
1729
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1730
- }
1731
-
1732
- /**
1733
- * This method returns a new empty array.
1734
- *
1735
- * @static
1736
- * @memberOf _
1737
- * @since 4.13.0
1738
- * @category Util
1739
- * @returns {Array} Returns the new empty array.
1740
- * @example
1741
- *
1742
- * var arrays = _.times(2, _.stubArray);
1743
- *
1744
- * console.log(arrays);
1745
- * // => [[], []]
1746
- *
1747
- * console.log(arrays[0] === arrays[1]);
1748
- * // => false
1749
- */
1750
- function stubArray() {
1751
- return [];
1752
- }
1753
-
1754
- /**
1755
- * This method returns `false`.
1756
- *
1757
- * @static
1758
- * @memberOf _
1759
- * @since 4.13.0
1760
- * @category Util
1761
- * @returns {boolean} Returns `false`.
1762
- * @example
1763
- *
1764
- * _.times(2, _.stubFalse);
1765
- * // => [false, false]
1766
- */
1767
- function stubFalse() {
1768
- return false;
1769
- }
1770
-
1771
- module.exports = cloneDeep;
1772
- });
1773
-
1774
- /**
1775
- * lodash (Custom Build) <https://lodash.com/>
1776
- * Build: `lodash modularize exports="npm" -o ./`
1777
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
1778
- * Released under MIT license <https://lodash.com/license>
1779
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
1780
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1781
- */
1782
- /** `Object#toString` result references. */
1783
- var objectTag = '[object Object]';
1784
-
1785
- /**
1786
- * Checks if `value` is a host object in IE < 9.
1787
- *
1788
- * @private
1789
- * @param {*} value The value to check.
1790
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
1791
- */
1792
- function isHostObject(value) {
1793
- // Many host objects are `Object` objects that can coerce to strings
1794
- // despite having improperly defined `toString` methods.
1795
- var result = false;
1796
- if (value != null && typeof value.toString != 'function') {
1797
- try {
1798
- result = !!(value + '');
1799
- } catch (e) {}
1800
- }
1801
- return result;
1802
- }
1803
-
1804
- /**
1805
- * Creates a unary function that invokes `func` with its argument transformed.
1806
- *
1807
- * @private
1808
- * @param {Function} func The function to wrap.
1809
- * @param {Function} transform The argument transform.
1810
- * @returns {Function} Returns the new function.
1811
- */
1812
- function overArg(func, transform) {
1813
- return function(arg) {
1814
- return func(transform(arg));
1815
- };
1816
- }
1817
-
1818
- /** Used for built-in method references. */
1819
- var funcProto = Function.prototype,
1820
- objectProto = Object.prototype;
1821
-
1822
- /** Used to resolve the decompiled source of functions. */
1823
- var funcToString = funcProto.toString;
1824
-
1825
- /** Used to check objects for own properties. */
1826
- var hasOwnProperty = objectProto.hasOwnProperty;
1827
-
1828
- /** Used to infer the `Object` constructor. */
1829
- var objectCtorString = funcToString.call(Object);
1830
-
1831
- /**
1832
- * Used to resolve the
1833
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1834
- * of values.
1835
- */
1836
- var objectToString = objectProto.toString;
1837
-
1838
- /** Built-in value references. */
1839
- var getPrototype = overArg(Object.getPrototypeOf, Object);
1840
-
1841
- /**
1842
- * Checks if `value` is object-like. A value is object-like if it's not `null`
1843
- * and has a `typeof` result of "object".
1844
- *
1845
- * @static
1846
- * @memberOf _
1847
- * @since 4.0.0
1848
- * @category Lang
1849
- * @param {*} value The value to check.
1850
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1851
- * @example
1852
- *
1853
- * _.isObjectLike({});
1854
- * // => true
1855
- *
1856
- * _.isObjectLike([1, 2, 3]);
1857
- * // => true
1858
- *
1859
- * _.isObjectLike(_.noop);
1860
- * // => false
1861
- *
1862
- * _.isObjectLike(null);
1863
- * // => false
1864
- */
1865
- function isObjectLike(value) {
1866
- return !!value && typeof value == 'object';
1867
- }
1868
-
1869
- /**
1870
- * Checks if `value` is a plain object, that is, an object created by the
1871
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
1872
- *
1873
- * @static
1874
- * @memberOf _
1875
- * @since 0.8.0
1876
- * @category Lang
1877
- * @param {*} value The value to check.
1878
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
1879
- * @example
1880
- *
1881
- * function Foo() {
1882
- * this.a = 1;
1883
- * }
1884
- *
1885
- * _.isPlainObject(new Foo);
1886
- * // => false
1887
- *
1888
- * _.isPlainObject([1, 2, 3]);
1889
- * // => false
1890
- *
1891
- * _.isPlainObject({ 'x': 0, 'y': 0 });
1892
- * // => true
1893
- *
1894
- * _.isPlainObject(Object.create(null));
1895
- * // => true
1896
- */
1897
- function isPlainObject(value) {
1898
- if (!isObjectLike(value) ||
1899
- objectToString.call(value) != objectTag || isHostObject(value)) {
1900
- return false;
1901
- }
1902
- var proto = getPrototype(value);
1903
- if (proto === null) {
1904
- return true;
1905
- }
1906
- var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
1907
- return (typeof Ctor == 'function' &&
1908
- Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);
1909
- }
1910
-
1911
- var lodash_isplainobject = isPlainObject;
1912
-
1913
- /**
1914
- * @name ast-monkey-util
1915
- * @fileoverview Utility library of AST helper functions
1916
- * @version 1.3.16
1917
- * @author Roy Revelt, Codsen Ltd
1918
- * @license MIT
1919
- * {@link https://codsen.com/os/ast-monkey-util/}
1920
- */
1921
-
1922
- function parent(str) {
1923
- if (str.includes(".")) {
1924
- const lastDotAt = str.lastIndexOf(".");
1925
- if (!str.slice(0, lastDotAt).includes(".")) {
1926
- return str.slice(0, lastDotAt);
1927
- }
1928
- for (let i = lastDotAt - 1; i--;) {
1929
- if (str[i] === ".") {
1930
- return str.slice(i + 1, lastDotAt);
1931
- }
1932
- }
1933
- }
1934
- return null;
1935
- }
1936
-
1937
- /**
1938
- * @name ast-monkey-traverse
1939
- * @fileoverview Utility library to traverse AST
1940
- * @version 2.0.16
1941
- * @author Roy Revelt, Codsen Ltd
1942
- * @license MIT
1943
- * {@link https://codsen.com/os/ast-monkey-traverse/}
1944
- */
1945
- function traverse(tree1, cb1) {
1946
- const stop2 = {
1947
- now: false
1948
- };
1949
- function traverseInner(treeOriginal, callback, originalInnerObj, stop) {
1950
- const tree = lodash_clonedeep(treeOriginal);
1951
- let res;
1952
- const innerObj = {
1953
- depth: -1,
1954
- path: "",
1955
- ...originalInnerObj
1956
- };
1957
- innerObj.depth += 1;
1958
- if (Array.isArray(tree)) {
1959
- for (let i = 0, len = tree.length; i < len; i++) {
1960
- if (stop.now) {
1961
- break;
1962
- }
1963
- const path = innerObj.path ? `${innerObj.path}.${i}` : `${i}`;
1964
- if (tree[i] !== undefined) {
1965
- innerObj.parent = lodash_clonedeep(tree);
1966
- innerObj.parentType = "array";
1967
- innerObj.parentKey = parent(path);
1968
- res = traverseInner(callback(tree[i], undefined, { ...innerObj,
1969
- path
1970
- }, stop), callback, { ...innerObj,
1971
- path
1972
- }, stop);
1973
- if (Number.isNaN(res) && i < tree.length) {
1974
- tree.splice(i, 1);
1975
- i -= 1;
1976
- } else {
1977
- tree[i] = res;
1978
- }
1979
- } else {
1980
- tree.splice(i, 1);
1981
- }
1982
- }
1983
- } else if (lodash_isplainobject(tree)) {
1984
- for (const key in tree) {
1985
- if (stop.now && key != null) {
1986
- break;
1987
- }
1988
- const path = innerObj.path ? `${innerObj.path}.${key}` : key;
1989
- if (innerObj.depth === 0 && key != null) {
1990
- innerObj.topmostKey = key;
1991
- }
1992
- innerObj.parent = lodash_clonedeep(tree);
1993
- innerObj.parentType = "object";
1994
- innerObj.parentKey = parent(path);
1995
- res = traverseInner(callback(key, tree[key], { ...innerObj,
1996
- path
1997
- }, stop), callback, { ...innerObj,
1998
- path
1999
- }, stop);
2000
- if (Number.isNaN(res)) {
2001
- delete tree[key];
2002
- } else {
2003
- tree[key] = res;
2004
- }
2005
- }
2006
- }
2007
- return tree;
2008
- }
2009
- return traverseInner(tree1, cb1, {}, stop2);
2010
- }
2011
-
2012
- /*
2013
- Breaks a Javascript string into individual user-perceived "characters"
2014
- called extended grapheme clusters by implementing the Unicode UAX-29 standard, version 10.0.0
2015
-
2016
- Usage:
2017
- var splitter = new GraphemeSplitter();
2018
- //returns an array of strings, one string for each grapheme cluster
2019
- var graphemes = splitter.splitGraphemes(string);
2020
-
2021
- */
2022
-
2023
- var graphemeSplitter = createCommonjsModule(function (module) {
2024
- function GraphemeSplitter(){
2025
- var CR = 0,
2026
- LF = 1,
2027
- Control = 2,
2028
- Extend = 3,
2029
- Regional_Indicator = 4,
2030
- SpacingMark = 5,
2031
- L = 6,
2032
- V = 7,
2033
- T = 8,
2034
- LV = 9,
2035
- LVT = 10,
2036
- Other = 11,
2037
- Prepend = 12,
2038
- E_Base = 13,
2039
- E_Modifier = 14,
2040
- ZWJ = 15,
2041
- Glue_After_Zwj = 16,
2042
- E_Base_GAZ = 17;
2043
-
2044
- // BreakTypes
2045
- var NotBreak = 0,
2046
- BreakStart = 1,
2047
- Break = 2,
2048
- BreakLastRegional = 3,
2049
- BreakPenultimateRegional = 4;
2050
-
2051
- function isSurrogate(str, pos) {
2052
- return 0xd800 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 0xdbff &&
2053
- 0xdc00 <= str.charCodeAt(pos + 1) && str.charCodeAt(pos + 1) <= 0xdfff;
2054
- }
2055
-
2056
- // Private function, gets a Unicode code point from a JavaScript UTF-16 string
2057
- // handling surrogate pairs appropriately
2058
- function codePointAt(str, idx){
2059
- if(idx === undefined){
2060
- idx = 0;
2061
- }
2062
- var code = str.charCodeAt(idx);
2063
-
2064
- // if a high surrogate
2065
- if (0xD800 <= code && code <= 0xDBFF &&
2066
- idx < str.length - 1){
2067
- var hi = code;
2068
- var low = str.charCodeAt(idx + 1);
2069
- if (0xDC00 <= low && low <= 0xDFFF){
2070
- return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
2071
- }
2072
- return hi;
2073
- }
2074
-
2075
- // if a low surrogate
2076
- if (0xDC00 <= code && code <= 0xDFFF &&
2077
- idx >= 1){
2078
- var hi = str.charCodeAt(idx - 1);
2079
- var low = code;
2080
- if (0xD800 <= hi && hi <= 0xDBFF){
2081
- return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
2082
- }
2083
- return low;
2084
- }
2085
-
2086
- //just return the char if an unmatched surrogate half or a
2087
- //single-char codepoint
2088
- return code;
2089
- }
2090
-
2091
- // Private function, returns whether a break is allowed between the
2092
- // two given grapheme breaking classes
2093
- function shouldBreak(start, mid, end){
2094
- var all = [start].concat(mid).concat([end]);
2095
- var previous = all[all.length - 2];
2096
- var next = end;
2097
-
2098
- // Lookahead termintor for:
2099
- // GB10. (E_Base | EBG) Extend* ? E_Modifier
2100
- var eModifierIndex = all.lastIndexOf(E_Modifier);
2101
- if(eModifierIndex > 1 &&
2102
- all.slice(1, eModifierIndex).every(function(c){return c == Extend}) &&
2103
- [Extend, E_Base, E_Base_GAZ].indexOf(start) == -1){
2104
- return Break
2105
- }
2106
-
2107
- // Lookahead termintor for:
2108
- // GB12. ^ (RI RI)* RI ? RI
2109
- // GB13. [^RI] (RI RI)* RI ? RI
2110
- var rIIndex = all.lastIndexOf(Regional_Indicator);
2111
- if(rIIndex > 0 &&
2112
- all.slice(1, rIIndex).every(function(c){return c == Regional_Indicator}) &&
2113
- [Prepend, Regional_Indicator].indexOf(previous) == -1) {
2114
- if(all.filter(function(c){return c == Regional_Indicator}).length % 2 == 1) {
2115
- return BreakLastRegional
2116
- }
2117
- else {
2118
- return BreakPenultimateRegional
2119
- }
2120
- }
2121
-
2122
- // GB3. CR X LF
2123
- if(previous == CR && next == LF){
2124
- return NotBreak;
2125
- }
2126
- // GB4. (Control|CR|LF) ÷
2127
- else if(previous == Control || previous == CR || previous == LF){
2128
- if(next == E_Modifier && mid.every(function(c){return c == Extend})){
2129
- return Break
2130
- }
2131
- else {
2132
- return BreakStart
2133
- }
2134
- }
2135
- // GB5. ÷ (Control|CR|LF)
2136
- else if(next == Control || next == CR || next == LF){
2137
- return BreakStart;
2138
- }
2139
- // GB6. L X (L|V|LV|LVT)
2140
- else if(previous == L &&
2141
- (next == L || next == V || next == LV || next == LVT)){
2142
- return NotBreak;
2143
- }
2144
- // GB7. (LV|V) X (V|T)
2145
- else if((previous == LV || previous == V) &&
2146
- (next == V || next == T)){
2147
- return NotBreak;
2148
- }
2149
- // GB8. (LVT|T) X (T)
2150
- else if((previous == LVT || previous == T) &&
2151
- next == T){
2152
- return NotBreak;
2153
- }
2154
- // GB9. X (Extend|ZWJ)
2155
- else if (next == Extend || next == ZWJ){
2156
- return NotBreak;
2157
- }
2158
- // GB9a. X SpacingMark
2159
- else if(next == SpacingMark){
2160
- return NotBreak;
2161
- }
2162
- // GB9b. Prepend X
2163
- else if (previous == Prepend){
2164
- return NotBreak;
2165
- }
2166
-
2167
- // GB10. (E_Base | EBG) Extend* ? E_Modifier
2168
- var previousNonExtendIndex = all.indexOf(Extend) != -1 ? all.lastIndexOf(Extend) - 1 : all.length - 2;
2169
- if([E_Base, E_Base_GAZ].indexOf(all[previousNonExtendIndex]) != -1 &&
2170
- all.slice(previousNonExtendIndex + 1, -1).every(function(c){return c == Extend}) &&
2171
- next == E_Modifier){
2172
- return NotBreak;
2173
- }
2174
-
2175
- // GB11. ZWJ ? (Glue_After_Zwj | EBG)
2176
- if(previous == ZWJ && [Glue_After_Zwj, E_Base_GAZ].indexOf(next) != -1) {
2177
- return NotBreak;
2178
- }
2179
-
2180
- // GB12. ^ (RI RI)* RI ? RI
2181
- // GB13. [^RI] (RI RI)* RI ? RI
2182
- if(mid.indexOf(Regional_Indicator) != -1) {
2183
- return Break;
2184
- }
2185
- if(previous == Regional_Indicator && next == Regional_Indicator) {
2186
- return NotBreak;
2187
- }
2188
-
2189
- // GB999. Any ? Any
2190
- return BreakStart;
2191
- }
2192
-
2193
- // Returns the next grapheme break in the string after the given index
2194
- this.nextBreak = function(string, index){
2195
- if(index === undefined){
2196
- index = 0;
2197
- }
2198
- if(index < 0){
2199
- return 0;
2200
- }
2201
- if(index >= string.length - 1){
2202
- return string.length;
2203
- }
2204
- var prev = getGraphemeBreakProperty(codePointAt(string, index));
2205
- var mid = [];
2206
- for (var i = index + 1; i < string.length; i++) {
2207
- // check for already processed low surrogates
2208
- if(isSurrogate(string, i - 1)){
2209
- continue;
2210
- }
2211
-
2212
- var next = getGraphemeBreakProperty(codePointAt(string, i));
2213
- if(shouldBreak(prev, mid, next)){
2214
- return i;
2215
- }
2216
-
2217
- mid.push(next);
2218
- }
2219
- return string.length;
2220
- };
2221
-
2222
- // Breaks the given string into an array of grapheme cluster strings
2223
- this.splitGraphemes = function(str){
2224
- var res = [];
2225
- var index = 0;
2226
- var brk;
2227
- while((brk = this.nextBreak(str, index)) < str.length){
2228
- res.push(str.slice(index, brk));
2229
- index = brk;
2230
- }
2231
- if(index < str.length){
2232
- res.push(str.slice(index));
2233
- }
2234
- return res;
2235
- };
2236
-
2237
- // Returns the iterator of grapheme clusters there are in the given string
2238
- this.iterateGraphemes = function(str) {
2239
- var index = 0;
2240
- var res = {
2241
- next: (function() {
2242
- var value;
2243
- var brk;
2244
- if ((brk = this.nextBreak(str, index)) < str.length) {
2245
- value = str.slice(index, brk);
2246
- index = brk;
2247
- return { value: value, done: false };
2248
- }
2249
- if (index < str.length) {
2250
- value = str.slice(index);
2251
- index = str.length;
2252
- return { value: value, done: false };
2253
- }
2254
- return { value: undefined, done: true };
2255
- }).bind(this)
2256
- };
2257
- // ES2015 @@iterator method (iterable) for spread syntax and for...of statement
2258
- if (typeof Symbol !== 'undefined' && Symbol.iterator) {
2259
- res[Symbol.iterator] = function() {return res};
2260
- }
2261
- return res;
2262
- };
2263
-
2264
- // Returns the number of grapheme clusters there are in the given string
2265
- this.countGraphemes = function(str){
2266
- var count = 0;
2267
- var index = 0;
2268
- var brk;
2269
- while((brk = this.nextBreak(str, index)) < str.length){
2270
- index = brk;
2271
- count++;
2272
- }
2273
- if(index < str.length){
2274
- count++;
2275
- }
2276
- return count;
2277
- };
2278
-
2279
- //given a Unicode code point, determines this symbol's grapheme break property
2280
- function getGraphemeBreakProperty(code){
2281
-
2282
- //grapheme break property for Unicode 10.0.0,
2283
- //taken from http://www.unicode.org/Public/10.0.0/ucd/auxiliary/GraphemeBreakProperty.txt
2284
- //and adapted to JavaScript rules
2285
-
2286
- if(
2287
- (0x0600 <= code && code <= 0x0605) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
2288
- 0x06DD == code || // Cf ARABIC END OF AYAH
2289
- 0x070F == code || // Cf SYRIAC ABBREVIATION MARK
2290
- 0x08E2 == code || // Cf ARABIC DISPUTED END OF AYAH
2291
- 0x0D4E == code || // Lo MALAYALAM LETTER DOT REPH
2292
- 0x110BD == code || // Cf KAITHI NUMBER SIGN
2293
- (0x111C2 <= code && code <= 0x111C3) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
2294
- 0x11A3A == code || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
2295
- (0x11A86 <= code && code <= 0x11A89) || // Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA
2296
- 0x11D46 == code // Lo MASARAM GONDI REPHA
2297
- ){
2298
- return Prepend;
2299
- }
2300
- if(
2301
- 0x000D == code // Cc <control-000D>
2302
- ){
2303
- return CR;
2304
- }
2305
-
2306
- if(
2307
- 0x000A == code // Cc <control-000A>
2308
- ){
2309
- return LF;
2310
- }
2311
-
2312
-
2313
- if(
2314
- (0x0000 <= code && code <= 0x0009) || // Cc [10] <control-0000>..<control-0009>
2315
- (0x000B <= code && code <= 0x000C) || // Cc [2] <control-000B>..<control-000C>
2316
- (0x000E <= code && code <= 0x001F) || // Cc [18] <control-000E>..<control-001F>
2317
- (0x007F <= code && code <= 0x009F) || // Cc [33] <control-007F>..<control-009F>
2318
- 0x00AD == code || // Cf SOFT HYPHEN
2319
- 0x061C == code || // Cf ARABIC LETTER MARK
2320
-
2321
- 0x180E == code || // Cf MONGOLIAN VOWEL SEPARATOR
2322
- 0x200B == code || // Cf ZERO WIDTH SPACE
2323
- (0x200E <= code && code <= 0x200F) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
2324
- 0x2028 == code || // Zl LINE SEPARATOR
2325
- 0x2029 == code || // Zp PARAGRAPH SEPARATOR
2326
- (0x202A <= code && code <= 0x202E) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
2327
- (0x2060 <= code && code <= 0x2064) || // Cf [5] WORD JOINER..INVISIBLE PLUS
2328
- 0x2065 == code || // Cn <reserved-2065>
2329
- (0x2066 <= code && code <= 0x206F) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
2330
- (0xD800 <= code && code <= 0xDFFF) || // Cs [2048] <surrogate-D800>..<surrogate-DFFF>
2331
- 0xFEFF == code || // Cf ZERO WIDTH NO-BREAK SPACE
2332
- (0xFFF0 <= code && code <= 0xFFF8) || // Cn [9] <reserved-FFF0>..<reserved-FFF8>
2333
- (0xFFF9 <= code && code <= 0xFFFB) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
2334
- (0x1BCA0 <= code && code <= 0x1BCA3) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
2335
- (0x1D173 <= code && code <= 0x1D17A) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
2336
- 0xE0000 == code || // Cn <reserved-E0000>
2337
- 0xE0001 == code || // Cf LANGUAGE TAG
2338
- (0xE0002 <= code && code <= 0xE001F) || // Cn [30] <reserved-E0002>..<reserved-E001F>
2339
- (0xE0080 <= code && code <= 0xE00FF) || // Cn [128] <reserved-E0080>..<reserved-E00FF>
2340
- (0xE01F0 <= code && code <= 0xE0FFF) // Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
2341
- ){
2342
- return Control;
2343
- }
2344
-
2345
-
2346
- if(
2347
- (0x0300 <= code && code <= 0x036F) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
2348
- (0x0483 <= code && code <= 0x0487) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
2349
- (0x0488 <= code && code <= 0x0489) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
2350
- (0x0591 <= code && code <= 0x05BD) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
2351
- 0x05BF == code || // Mn HEBREW POINT RAFE
2352
- (0x05C1 <= code && code <= 0x05C2) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
2353
- (0x05C4 <= code && code <= 0x05C5) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
2354
- 0x05C7 == code || // Mn HEBREW POINT QAMATS QATAN
2355
- (0x0610 <= code && code <= 0x061A) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
2356
- (0x064B <= code && code <= 0x065F) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
2357
- 0x0670 == code || // Mn ARABIC LETTER SUPERSCRIPT ALEF
2358
- (0x06D6 <= code && code <= 0x06DC) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
2359
- (0x06DF <= code && code <= 0x06E4) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
2360
- (0x06E7 <= code && code <= 0x06E8) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
2361
- (0x06EA <= code && code <= 0x06ED) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
2362
- 0x0711 == code || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH
2363
- (0x0730 <= code && code <= 0x074A) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
2364
- (0x07A6 <= code && code <= 0x07B0) || // Mn [11] THAANA ABAFILI..THAANA SUKUN
2365
- (0x07EB <= code && code <= 0x07F3) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
2366
- (0x0816 <= code && code <= 0x0819) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
2367
- (0x081B <= code && code <= 0x0823) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
2368
- (0x0825 <= code && code <= 0x0827) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
2369
- (0x0829 <= code && code <= 0x082D) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
2370
- (0x0859 <= code && code <= 0x085B) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
2371
- (0x08D4 <= code && code <= 0x08E1) || // Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
2372
- (0x08E3 <= code && code <= 0x0902) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
2373
- 0x093A == code || // Mn DEVANAGARI VOWEL SIGN OE
2374
- 0x093C == code || // Mn DEVANAGARI SIGN NUKTA
2375
- (0x0941 <= code && code <= 0x0948) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
2376
- 0x094D == code || // Mn DEVANAGARI SIGN VIRAMA
2377
- (0x0951 <= code && code <= 0x0957) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
2378
- (0x0962 <= code && code <= 0x0963) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
2379
- 0x0981 == code || // Mn BENGALI SIGN CANDRABINDU
2380
- 0x09BC == code || // Mn BENGALI SIGN NUKTA
2381
- 0x09BE == code || // Mc BENGALI VOWEL SIGN AA
2382
- (0x09C1 <= code && code <= 0x09C4) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
2383
- 0x09CD == code || // Mn BENGALI SIGN VIRAMA
2384
- 0x09D7 == code || // Mc BENGALI AU LENGTH MARK
2385
- (0x09E2 <= code && code <= 0x09E3) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
2386
- (0x0A01 <= code && code <= 0x0A02) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
2387
- 0x0A3C == code || // Mn GURMUKHI SIGN NUKTA
2388
- (0x0A41 <= code && code <= 0x0A42) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
2389
- (0x0A47 <= code && code <= 0x0A48) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
2390
- (0x0A4B <= code && code <= 0x0A4D) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
2391
- 0x0A51 == code || // Mn GURMUKHI SIGN UDAAT
2392
- (0x0A70 <= code && code <= 0x0A71) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
2393
- 0x0A75 == code || // Mn GURMUKHI SIGN YAKASH
2394
- (0x0A81 <= code && code <= 0x0A82) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
2395
- 0x0ABC == code || // Mn GUJARATI SIGN NUKTA
2396
- (0x0AC1 <= code && code <= 0x0AC5) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
2397
- (0x0AC7 <= code && code <= 0x0AC8) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
2398
- 0x0ACD == code || // Mn GUJARATI SIGN VIRAMA
2399
- (0x0AE2 <= code && code <= 0x0AE3) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
2400
- (0x0AFA <= code && code <= 0x0AFF) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
2401
- 0x0B01 == code || // Mn ORIYA SIGN CANDRABINDU
2402
- 0x0B3C == code || // Mn ORIYA SIGN NUKTA
2403
- 0x0B3E == code || // Mc ORIYA VOWEL SIGN AA
2404
- 0x0B3F == code || // Mn ORIYA VOWEL SIGN I
2405
- (0x0B41 <= code && code <= 0x0B44) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
2406
- 0x0B4D == code || // Mn ORIYA SIGN VIRAMA
2407
- 0x0B56 == code || // Mn ORIYA AI LENGTH MARK
2408
- 0x0B57 == code || // Mc ORIYA AU LENGTH MARK
2409
- (0x0B62 <= code && code <= 0x0B63) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
2410
- 0x0B82 == code || // Mn TAMIL SIGN ANUSVARA
2411
- 0x0BBE == code || // Mc TAMIL VOWEL SIGN AA
2412
- 0x0BC0 == code || // Mn TAMIL VOWEL SIGN II
2413
- 0x0BCD == code || // Mn TAMIL SIGN VIRAMA
2414
- 0x0BD7 == code || // Mc TAMIL AU LENGTH MARK
2415
- 0x0C00 == code || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
2416
- (0x0C3E <= code && code <= 0x0C40) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
2417
- (0x0C46 <= code && code <= 0x0C48) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
2418
- (0x0C4A <= code && code <= 0x0C4D) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
2419
- (0x0C55 <= code && code <= 0x0C56) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
2420
- (0x0C62 <= code && code <= 0x0C63) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
2421
- 0x0C81 == code || // Mn KANNADA SIGN CANDRABINDU
2422
- 0x0CBC == code || // Mn KANNADA SIGN NUKTA
2423
- 0x0CBF == code || // Mn KANNADA VOWEL SIGN I
2424
- 0x0CC2 == code || // Mc KANNADA VOWEL SIGN UU
2425
- 0x0CC6 == code || // Mn KANNADA VOWEL SIGN E
2426
- (0x0CCC <= code && code <= 0x0CCD) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
2427
- (0x0CD5 <= code && code <= 0x0CD6) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
2428
- (0x0CE2 <= code && code <= 0x0CE3) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
2429
- (0x0D00 <= code && code <= 0x0D01) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
2430
- (0x0D3B <= code && code <= 0x0D3C) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
2431
- 0x0D3E == code || // Mc MALAYALAM VOWEL SIGN AA
2432
- (0x0D41 <= code && code <= 0x0D44) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
2433
- 0x0D4D == code || // Mn MALAYALAM SIGN VIRAMA
2434
- 0x0D57 == code || // Mc MALAYALAM AU LENGTH MARK
2435
- (0x0D62 <= code && code <= 0x0D63) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
2436
- 0x0DCA == code || // Mn SINHALA SIGN AL-LAKUNA
2437
- 0x0DCF == code || // Mc SINHALA VOWEL SIGN AELA-PILLA
2438
- (0x0DD2 <= code && code <= 0x0DD4) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
2439
- 0x0DD6 == code || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
2440
- 0x0DDF == code || // Mc SINHALA VOWEL SIGN GAYANUKITTA
2441
- 0x0E31 == code || // Mn THAI CHARACTER MAI HAN-AKAT
2442
- (0x0E34 <= code && code <= 0x0E3A) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
2443
- (0x0E47 <= code && code <= 0x0E4E) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
2444
- 0x0EB1 == code || // Mn LAO VOWEL SIGN MAI KAN
2445
- (0x0EB4 <= code && code <= 0x0EB9) || // Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
2446
- (0x0EBB <= code && code <= 0x0EBC) || // Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
2447
- (0x0EC8 <= code && code <= 0x0ECD) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
2448
- (0x0F18 <= code && code <= 0x0F19) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
2449
- 0x0F35 == code || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA
2450
- 0x0F37 == code || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
2451
- 0x0F39 == code || // Mn TIBETAN MARK TSA -PHRU
2452
- (0x0F71 <= code && code <= 0x0F7E) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
2453
- (0x0F80 <= code && code <= 0x0F84) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
2454
- (0x0F86 <= code && code <= 0x0F87) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
2455
- (0x0F8D <= code && code <= 0x0F97) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
2456
- (0x0F99 <= code && code <= 0x0FBC) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
2457
- 0x0FC6 == code || // Mn TIBETAN SYMBOL PADMA GDAN
2458
- (0x102D <= code && code <= 0x1030) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
2459
- (0x1032 <= code && code <= 0x1037) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
2460
- (0x1039 <= code && code <= 0x103A) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
2461
- (0x103D <= code && code <= 0x103E) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
2462
- (0x1058 <= code && code <= 0x1059) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
2463
- (0x105E <= code && code <= 0x1060) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
2464
- (0x1071 <= code && code <= 0x1074) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
2465
- 0x1082 == code || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
2466
- (0x1085 <= code && code <= 0x1086) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
2467
- 0x108D == code || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
2468
- 0x109D == code || // Mn MYANMAR VOWEL SIGN AITON AI
2469
- (0x135D <= code && code <= 0x135F) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
2470
- (0x1712 <= code && code <= 0x1714) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
2471
- (0x1732 <= code && code <= 0x1734) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
2472
- (0x1752 <= code && code <= 0x1753) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
2473
- (0x1772 <= code && code <= 0x1773) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
2474
- (0x17B4 <= code && code <= 0x17B5) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
2475
- (0x17B7 <= code && code <= 0x17BD) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
2476
- 0x17C6 == code || // Mn KHMER SIGN NIKAHIT
2477
- (0x17C9 <= code && code <= 0x17D3) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
2478
- 0x17DD == code || // Mn KHMER SIGN ATTHACAN
2479
- (0x180B <= code && code <= 0x180D) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
2480
- (0x1885 <= code && code <= 0x1886) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
2481
- 0x18A9 == code || // Mn MONGOLIAN LETTER ALI GALI DAGALGA
2482
- (0x1920 <= code && code <= 0x1922) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
2483
- (0x1927 <= code && code <= 0x1928) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
2484
- 0x1932 == code || // Mn LIMBU SMALL LETTER ANUSVARA
2485
- (0x1939 <= code && code <= 0x193B) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
2486
- (0x1A17 <= code && code <= 0x1A18) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
2487
- 0x1A1B == code || // Mn BUGINESE VOWEL SIGN AE
2488
- 0x1A56 == code || // Mn TAI THAM CONSONANT SIGN MEDIAL LA
2489
- (0x1A58 <= code && code <= 0x1A5E) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
2490
- 0x1A60 == code || // Mn TAI THAM SIGN SAKOT
2491
- 0x1A62 == code || // Mn TAI THAM VOWEL SIGN MAI SAT
2492
- (0x1A65 <= code && code <= 0x1A6C) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
2493
- (0x1A73 <= code && code <= 0x1A7C) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
2494
- 0x1A7F == code || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
2495
- (0x1AB0 <= code && code <= 0x1ABD) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
2496
- 0x1ABE == code || // Me COMBINING PARENTHESES OVERLAY
2497
- (0x1B00 <= code && code <= 0x1B03) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
2498
- 0x1B34 == code || // Mn BALINESE SIGN REREKAN
2499
- (0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
2500
- 0x1B3C == code || // Mn BALINESE VOWEL SIGN LA LENGA
2501
- 0x1B42 == code || // Mn BALINESE VOWEL SIGN PEPET
2502
- (0x1B6B <= code && code <= 0x1B73) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
2503
- (0x1B80 <= code && code <= 0x1B81) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
2504
- (0x1BA2 <= code && code <= 0x1BA5) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
2505
- (0x1BA8 <= code && code <= 0x1BA9) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
2506
- (0x1BAB <= code && code <= 0x1BAD) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
2507
- 0x1BE6 == code || // Mn BATAK SIGN TOMPI
2508
- (0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
2509
- 0x1BED == code || // Mn BATAK VOWEL SIGN KARO O
2510
- (0x1BEF <= code && code <= 0x1BF1) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
2511
- (0x1C2C <= code && code <= 0x1C33) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
2512
- (0x1C36 <= code && code <= 0x1C37) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
2513
- (0x1CD0 <= code && code <= 0x1CD2) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
2514
- (0x1CD4 <= code && code <= 0x1CE0) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
2515
- (0x1CE2 <= code && code <= 0x1CE8) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
2516
- 0x1CED == code || // Mn VEDIC SIGN TIRYAK
2517
- 0x1CF4 == code || // Mn VEDIC TONE CANDRA ABOVE
2518
- (0x1CF8 <= code && code <= 0x1CF9) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
2519
- (0x1DC0 <= code && code <= 0x1DF9) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
2520
- (0x1DFB <= code && code <= 0x1DFF) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
2521
- 0x200C == code || // Cf ZERO WIDTH NON-JOINER
2522
- (0x20D0 <= code && code <= 0x20DC) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
2523
- (0x20DD <= code && code <= 0x20E0) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
2524
- 0x20E1 == code || // Mn COMBINING LEFT RIGHT ARROW ABOVE
2525
- (0x20E2 <= code && code <= 0x20E4) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
2526
- (0x20E5 <= code && code <= 0x20F0) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
2527
- (0x2CEF <= code && code <= 0x2CF1) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
2528
- 0x2D7F == code || // Mn TIFINAGH CONSONANT JOINER
2529
- (0x2DE0 <= code && code <= 0x2DFF) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
2530
- (0x302A <= code && code <= 0x302D) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
2531
- (0x302E <= code && code <= 0x302F) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
2532
- (0x3099 <= code && code <= 0x309A) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
2533
- 0xA66F == code || // Mn COMBINING CYRILLIC VZMET
2534
- (0xA670 <= code && code <= 0xA672) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
2535
- (0xA674 <= code && code <= 0xA67D) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
2536
- (0xA69E <= code && code <= 0xA69F) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
2537
- (0xA6F0 <= code && code <= 0xA6F1) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
2538
- 0xA802 == code || // Mn SYLOTI NAGRI SIGN DVISVARA
2539
- 0xA806 == code || // Mn SYLOTI NAGRI SIGN HASANTA
2540
- 0xA80B == code || // Mn SYLOTI NAGRI SIGN ANUSVARA
2541
- (0xA825 <= code && code <= 0xA826) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
2542
- (0xA8C4 <= code && code <= 0xA8C5) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
2543
- (0xA8E0 <= code && code <= 0xA8F1) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
2544
- (0xA926 <= code && code <= 0xA92D) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
2545
- (0xA947 <= code && code <= 0xA951) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
2546
- (0xA980 <= code && code <= 0xA982) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
2547
- 0xA9B3 == code || // Mn JAVANESE SIGN CECAK TELU
2548
- (0xA9B6 <= code && code <= 0xA9B9) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
2549
- 0xA9BC == code || // Mn JAVANESE VOWEL SIGN PEPET
2550
- 0xA9E5 == code || // Mn MYANMAR SIGN SHAN SAW
2551
- (0xAA29 <= code && code <= 0xAA2E) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
2552
- (0xAA31 <= code && code <= 0xAA32) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
2553
- (0xAA35 <= code && code <= 0xAA36) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
2554
- 0xAA43 == code || // Mn CHAM CONSONANT SIGN FINAL NG
2555
- 0xAA4C == code || // Mn CHAM CONSONANT SIGN FINAL M
2556
- 0xAA7C == code || // Mn MYANMAR SIGN TAI LAING TONE-2
2557
- 0xAAB0 == code || // Mn TAI VIET MAI KANG
2558
- (0xAAB2 <= code && code <= 0xAAB4) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
2559
- (0xAAB7 <= code && code <= 0xAAB8) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
2560
- (0xAABE <= code && code <= 0xAABF) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
2561
- 0xAAC1 == code || // Mn TAI VIET TONE MAI THO
2562
- (0xAAEC <= code && code <= 0xAAED) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
2563
- 0xAAF6 == code || // Mn MEETEI MAYEK VIRAMA
2564
- 0xABE5 == code || // Mn MEETEI MAYEK VOWEL SIGN ANAP
2565
- 0xABE8 == code || // Mn MEETEI MAYEK VOWEL SIGN UNAP
2566
- 0xABED == code || // Mn MEETEI MAYEK APUN IYEK
2567
- 0xFB1E == code || // Mn HEBREW POINT JUDEO-SPANISH VARIKA
2568
- (0xFE00 <= code && code <= 0xFE0F) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
2569
- (0xFE20 <= code && code <= 0xFE2F) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
2570
- (0xFF9E <= code && code <= 0xFF9F) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
2571
- 0x101FD == code || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
2572
- 0x102E0 == code || // Mn COPTIC EPACT THOUSANDS MARK
2573
- (0x10376 <= code && code <= 0x1037A) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
2574
- (0x10A01 <= code && code <= 0x10A03) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
2575
- (0x10A05 <= code && code <= 0x10A06) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
2576
- (0x10A0C <= code && code <= 0x10A0F) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
2577
- (0x10A38 <= code && code <= 0x10A3A) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
2578
- 0x10A3F == code || // Mn KHAROSHTHI VIRAMA
2579
- (0x10AE5 <= code && code <= 0x10AE6) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
2580
- 0x11001 == code || // Mn BRAHMI SIGN ANUSVARA
2581
- (0x11038 <= code && code <= 0x11046) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
2582
- (0x1107F <= code && code <= 0x11081) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
2583
- (0x110B3 <= code && code <= 0x110B6) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
2584
- (0x110B9 <= code && code <= 0x110BA) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
2585
- (0x11100 <= code && code <= 0x11102) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
2586
- (0x11127 <= code && code <= 0x1112B) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
2587
- (0x1112D <= code && code <= 0x11134) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
2588
- 0x11173 == code || // Mn MAHAJANI SIGN NUKTA
2589
- (0x11180 <= code && code <= 0x11181) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
2590
- (0x111B6 <= code && code <= 0x111BE) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
2591
- (0x111CA <= code && code <= 0x111CC) || // Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
2592
- (0x1122F <= code && code <= 0x11231) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
2593
- 0x11234 == code || // Mn KHOJKI SIGN ANUSVARA
2594
- (0x11236 <= code && code <= 0x11237) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
2595
- 0x1123E == code || // Mn KHOJKI SIGN SUKUN
2596
- 0x112DF == code || // Mn KHUDAWADI SIGN ANUSVARA
2597
- (0x112E3 <= code && code <= 0x112EA) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
2598
- (0x11300 <= code && code <= 0x11301) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
2599
- 0x1133C == code || // Mn GRANTHA SIGN NUKTA
2600
- 0x1133E == code || // Mc GRANTHA VOWEL SIGN AA
2601
- 0x11340 == code || // Mn GRANTHA VOWEL SIGN II
2602
- 0x11357 == code || // Mc GRANTHA AU LENGTH MARK
2603
- (0x11366 <= code && code <= 0x1136C) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
2604
- (0x11370 <= code && code <= 0x11374) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
2605
- (0x11438 <= code && code <= 0x1143F) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
2606
- (0x11442 <= code && code <= 0x11444) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
2607
- 0x11446 == code || // Mn NEWA SIGN NUKTA
2608
- 0x114B0 == code || // Mc TIRHUTA VOWEL SIGN AA
2609
- (0x114B3 <= code && code <= 0x114B8) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
2610
- 0x114BA == code || // Mn TIRHUTA VOWEL SIGN SHORT E
2611
- 0x114BD == code || // Mc TIRHUTA VOWEL SIGN SHORT O
2612
- (0x114BF <= code && code <= 0x114C0) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
2613
- (0x114C2 <= code && code <= 0x114C3) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
2614
- 0x115AF == code || // Mc SIDDHAM VOWEL SIGN AA
2615
- (0x115B2 <= code && code <= 0x115B5) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
2616
- (0x115BC <= code && code <= 0x115BD) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
2617
- (0x115BF <= code && code <= 0x115C0) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
2618
- (0x115DC <= code && code <= 0x115DD) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
2619
- (0x11633 <= code && code <= 0x1163A) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
2620
- 0x1163D == code || // Mn MODI SIGN ANUSVARA
2621
- (0x1163F <= code && code <= 0x11640) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
2622
- 0x116AB == code || // Mn TAKRI SIGN ANUSVARA
2623
- 0x116AD == code || // Mn TAKRI VOWEL SIGN AA
2624
- (0x116B0 <= code && code <= 0x116B5) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
2625
- 0x116B7 == code || // Mn TAKRI SIGN NUKTA
2626
- (0x1171D <= code && code <= 0x1171F) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
2627
- (0x11722 <= code && code <= 0x11725) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
2628
- (0x11727 <= code && code <= 0x1172B) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
2629
- (0x11A01 <= code && code <= 0x11A06) || // Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O
2630
- (0x11A09 <= code && code <= 0x11A0A) || // Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK
2631
- (0x11A33 <= code && code <= 0x11A38) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
2632
- (0x11A3B <= code && code <= 0x11A3E) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
2633
- 0x11A47 == code || // Mn ZANABAZAR SQUARE SUBJOINER
2634
- (0x11A51 <= code && code <= 0x11A56) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
2635
- (0x11A59 <= code && code <= 0x11A5B) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
2636
- (0x11A8A <= code && code <= 0x11A96) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
2637
- (0x11A98 <= code && code <= 0x11A99) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
2638
- (0x11C30 <= code && code <= 0x11C36) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
2639
- (0x11C38 <= code && code <= 0x11C3D) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
2640
- 0x11C3F == code || // Mn BHAIKSUKI SIGN VIRAMA
2641
- (0x11C92 <= code && code <= 0x11CA7) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
2642
- (0x11CAA <= code && code <= 0x11CB0) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
2643
- (0x11CB2 <= code && code <= 0x11CB3) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
2644
- (0x11CB5 <= code && code <= 0x11CB6) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
2645
- (0x11D31 <= code && code <= 0x11D36) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
2646
- 0x11D3A == code || // Mn MASARAM GONDI VOWEL SIGN E
2647
- (0x11D3C <= code && code <= 0x11D3D) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
2648
- (0x11D3F <= code && code <= 0x11D45) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
2649
- 0x11D47 == code || // Mn MASARAM GONDI RA-KARA
2650
- (0x16AF0 <= code && code <= 0x16AF4) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
2651
- (0x16B30 <= code && code <= 0x16B36) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
2652
- (0x16F8F <= code && code <= 0x16F92) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
2653
- (0x1BC9D <= code && code <= 0x1BC9E) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
2654
- 0x1D165 == code || // Mc MUSICAL SYMBOL COMBINING STEM
2655
- (0x1D167 <= code && code <= 0x1D169) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
2656
- (0x1D16E <= code && code <= 0x1D172) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
2657
- (0x1D17B <= code && code <= 0x1D182) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
2658
- (0x1D185 <= code && code <= 0x1D18B) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
2659
- (0x1D1AA <= code && code <= 0x1D1AD) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
2660
- (0x1D242 <= code && code <= 0x1D244) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
2661
- (0x1DA00 <= code && code <= 0x1DA36) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
2662
- (0x1DA3B <= code && code <= 0x1DA6C) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
2663
- 0x1DA75 == code || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
2664
- 0x1DA84 == code || // Mn SIGNWRITING LOCATION HEAD NECK
2665
- (0x1DA9B <= code && code <= 0x1DA9F) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
2666
- (0x1DAA1 <= code && code <= 0x1DAAF) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
2667
- (0x1E000 <= code && code <= 0x1E006) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
2668
- (0x1E008 <= code && code <= 0x1E018) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
2669
- (0x1E01B <= code && code <= 0x1E021) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
2670
- (0x1E023 <= code && code <= 0x1E024) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
2671
- (0x1E026 <= code && code <= 0x1E02A) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
2672
- (0x1E8D0 <= code && code <= 0x1E8D6) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
2673
- (0x1E944 <= code && code <= 0x1E94A) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
2674
- (0xE0020 <= code && code <= 0xE007F) || // Cf [96] TAG SPACE..CANCEL TAG
2675
- (0xE0100 <= code && code <= 0xE01EF) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
2676
- ){
2677
- return Extend;
2678
- }
2679
-
2680
-
2681
- if(
2682
- (0x1F1E6 <= code && code <= 0x1F1FF) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
2683
- ){
2684
- return Regional_Indicator;
2685
- }
2686
-
2687
- if(
2688
- 0x0903 == code || // Mc DEVANAGARI SIGN VISARGA
2689
- 0x093B == code || // Mc DEVANAGARI VOWEL SIGN OOE
2690
- (0x093E <= code && code <= 0x0940) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
2691
- (0x0949 <= code && code <= 0x094C) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
2692
- (0x094E <= code && code <= 0x094F) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
2693
- (0x0982 <= code && code <= 0x0983) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
2694
- (0x09BF <= code && code <= 0x09C0) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
2695
- (0x09C7 <= code && code <= 0x09C8) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
2696
- (0x09CB <= code && code <= 0x09CC) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
2697
- 0x0A03 == code || // Mc GURMUKHI SIGN VISARGA
2698
- (0x0A3E <= code && code <= 0x0A40) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
2699
- 0x0A83 == code || // Mc GUJARATI SIGN VISARGA
2700
- (0x0ABE <= code && code <= 0x0AC0) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
2701
- 0x0AC9 == code || // Mc GUJARATI VOWEL SIGN CANDRA O
2702
- (0x0ACB <= code && code <= 0x0ACC) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
2703
- (0x0B02 <= code && code <= 0x0B03) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
2704
- 0x0B40 == code || // Mc ORIYA VOWEL SIGN II
2705
- (0x0B47 <= code && code <= 0x0B48) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
2706
- (0x0B4B <= code && code <= 0x0B4C) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
2707
- 0x0BBF == code || // Mc TAMIL VOWEL SIGN I
2708
- (0x0BC1 <= code && code <= 0x0BC2) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
2709
- (0x0BC6 <= code && code <= 0x0BC8) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
2710
- (0x0BCA <= code && code <= 0x0BCC) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
2711
- (0x0C01 <= code && code <= 0x0C03) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
2712
- (0x0C41 <= code && code <= 0x0C44) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
2713
- (0x0C82 <= code && code <= 0x0C83) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
2714
- 0x0CBE == code || // Mc KANNADA VOWEL SIGN AA
2715
- (0x0CC0 <= code && code <= 0x0CC1) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
2716
- (0x0CC3 <= code && code <= 0x0CC4) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
2717
- (0x0CC7 <= code && code <= 0x0CC8) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
2718
- (0x0CCA <= code && code <= 0x0CCB) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
2719
- (0x0D02 <= code && code <= 0x0D03) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
2720
- (0x0D3F <= code && code <= 0x0D40) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
2721
- (0x0D46 <= code && code <= 0x0D48) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
2722
- (0x0D4A <= code && code <= 0x0D4C) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
2723
- (0x0D82 <= code && code <= 0x0D83) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
2724
- (0x0DD0 <= code && code <= 0x0DD1) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
2725
- (0x0DD8 <= code && code <= 0x0DDE) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
2726
- (0x0DF2 <= code && code <= 0x0DF3) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
2727
- 0x0E33 == code || // Lo THAI CHARACTER SARA AM
2728
- 0x0EB3 == code || // Lo LAO VOWEL SIGN AM
2729
- (0x0F3E <= code && code <= 0x0F3F) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
2730
- 0x0F7F == code || // Mc TIBETAN SIGN RNAM BCAD
2731
- 0x1031 == code || // Mc MYANMAR VOWEL SIGN E
2732
- (0x103B <= code && code <= 0x103C) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
2733
- (0x1056 <= code && code <= 0x1057) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
2734
- 0x1084 == code || // Mc MYANMAR VOWEL SIGN SHAN E
2735
- 0x17B6 == code || // Mc KHMER VOWEL SIGN AA
2736
- (0x17BE <= code && code <= 0x17C5) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
2737
- (0x17C7 <= code && code <= 0x17C8) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
2738
- (0x1923 <= code && code <= 0x1926) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
2739
- (0x1929 <= code && code <= 0x192B) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
2740
- (0x1930 <= code && code <= 0x1931) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
2741
- (0x1933 <= code && code <= 0x1938) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
2742
- (0x1A19 <= code && code <= 0x1A1A) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
2743
- 0x1A55 == code || // Mc TAI THAM CONSONANT SIGN MEDIAL RA
2744
- 0x1A57 == code || // Mc TAI THAM CONSONANT SIGN LA TANG LAI
2745
- (0x1A6D <= code && code <= 0x1A72) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
2746
- 0x1B04 == code || // Mc BALINESE SIGN BISAH
2747
- 0x1B35 == code || // Mc BALINESE VOWEL SIGN TEDUNG
2748
- 0x1B3B == code || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG
2749
- (0x1B3D <= code && code <= 0x1B41) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
2750
- (0x1B43 <= code && code <= 0x1B44) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
2751
- 0x1B82 == code || // Mc SUNDANESE SIGN PANGWISAD
2752
- 0x1BA1 == code || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL
2753
- (0x1BA6 <= code && code <= 0x1BA7) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
2754
- 0x1BAA == code || // Mc SUNDANESE SIGN PAMAAEH
2755
- 0x1BE7 == code || // Mc BATAK VOWEL SIGN E
2756
- (0x1BEA <= code && code <= 0x1BEC) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
2757
- 0x1BEE == code || // Mc BATAK VOWEL SIGN U
2758
- (0x1BF2 <= code && code <= 0x1BF3) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
2759
- (0x1C24 <= code && code <= 0x1C2B) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
2760
- (0x1C34 <= code && code <= 0x1C35) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
2761
- 0x1CE1 == code || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
2762
- (0x1CF2 <= code && code <= 0x1CF3) || // Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
2763
- 0x1CF7 == code || // Mc VEDIC SIGN ATIKRAMA
2764
- (0xA823 <= code && code <= 0xA824) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
2765
- 0xA827 == code || // Mc SYLOTI NAGRI VOWEL SIGN OO
2766
- (0xA880 <= code && code <= 0xA881) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
2767
- (0xA8B4 <= code && code <= 0xA8C3) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
2768
- (0xA952 <= code && code <= 0xA953) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
2769
- 0xA983 == code || // Mc JAVANESE SIGN WIGNYAN
2770
- (0xA9B4 <= code && code <= 0xA9B5) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
2771
- (0xA9BA <= code && code <= 0xA9BB) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
2772
- (0xA9BD <= code && code <= 0xA9C0) || // Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON
2773
- (0xAA2F <= code && code <= 0xAA30) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
2774
- (0xAA33 <= code && code <= 0xAA34) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
2775
- 0xAA4D == code || // Mc CHAM CONSONANT SIGN FINAL H
2776
- 0xAAEB == code || // Mc MEETEI MAYEK VOWEL SIGN II
2777
- (0xAAEE <= code && code <= 0xAAEF) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
2778
- 0xAAF5 == code || // Mc MEETEI MAYEK VOWEL SIGN VISARGA
2779
- (0xABE3 <= code && code <= 0xABE4) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
2780
- (0xABE6 <= code && code <= 0xABE7) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
2781
- (0xABE9 <= code && code <= 0xABEA) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
2782
- 0xABEC == code || // Mc MEETEI MAYEK LUM IYEK
2783
- 0x11000 == code || // Mc BRAHMI SIGN CANDRABINDU
2784
- 0x11002 == code || // Mc BRAHMI SIGN VISARGA
2785
- 0x11082 == code || // Mc KAITHI SIGN VISARGA
2786
- (0x110B0 <= code && code <= 0x110B2) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
2787
- (0x110B7 <= code && code <= 0x110B8) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
2788
- 0x1112C == code || // Mc CHAKMA VOWEL SIGN E
2789
- 0x11182 == code || // Mc SHARADA SIGN VISARGA
2790
- (0x111B3 <= code && code <= 0x111B5) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
2791
- (0x111BF <= code && code <= 0x111C0) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
2792
- (0x1122C <= code && code <= 0x1122E) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
2793
- (0x11232 <= code && code <= 0x11233) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
2794
- 0x11235 == code || // Mc KHOJKI SIGN VIRAMA
2795
- (0x112E0 <= code && code <= 0x112E2) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
2796
- (0x11302 <= code && code <= 0x11303) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
2797
- 0x1133F == code || // Mc GRANTHA VOWEL SIGN I
2798
- (0x11341 <= code && code <= 0x11344) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
2799
- (0x11347 <= code && code <= 0x11348) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
2800
- (0x1134B <= code && code <= 0x1134D) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
2801
- (0x11362 <= code && code <= 0x11363) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
2802
- (0x11435 <= code && code <= 0x11437) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
2803
- (0x11440 <= code && code <= 0x11441) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
2804
- 0x11445 == code || // Mc NEWA SIGN VISARGA
2805
- (0x114B1 <= code && code <= 0x114B2) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
2806
- 0x114B9 == code || // Mc TIRHUTA VOWEL SIGN E
2807
- (0x114BB <= code && code <= 0x114BC) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
2808
- 0x114BE == code || // Mc TIRHUTA VOWEL SIGN AU
2809
- 0x114C1 == code || // Mc TIRHUTA SIGN VISARGA
2810
- (0x115B0 <= code && code <= 0x115B1) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II
2811
- (0x115B8 <= code && code <= 0x115BB) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
2812
- 0x115BE == code || // Mc SIDDHAM SIGN VISARGA
2813
- (0x11630 <= code && code <= 0x11632) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
2814
- (0x1163B <= code && code <= 0x1163C) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
2815
- 0x1163E == code || // Mc MODI SIGN VISARGA
2816
- 0x116AC == code || // Mc TAKRI SIGN VISARGA
2817
- (0x116AE <= code && code <= 0x116AF) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
2818
- 0x116B6 == code || // Mc TAKRI SIGN VIRAMA
2819
- (0x11720 <= code && code <= 0x11721) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
2820
- 0x11726 == code || // Mc AHOM VOWEL SIGN E
2821
- (0x11A07 <= code && code <= 0x11A08) || // Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU
2822
- 0x11A39 == code || // Mc ZANABAZAR SQUARE SIGN VISARGA
2823
- (0x11A57 <= code && code <= 0x11A58) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
2824
- 0x11A97 == code || // Mc SOYOMBO SIGN VISARGA
2825
- 0x11C2F == code || // Mc BHAIKSUKI VOWEL SIGN AA
2826
- 0x11C3E == code || // Mc BHAIKSUKI SIGN VISARGA
2827
- 0x11CA9 == code || // Mc MARCHEN SUBJOINED LETTER YA
2828
- 0x11CB1 == code || // Mc MARCHEN VOWEL SIGN I
2829
- 0x11CB4 == code || // Mc MARCHEN VOWEL SIGN O
2830
- (0x16F51 <= code && code <= 0x16F7E) || // Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
2831
- 0x1D166 == code || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
2832
- 0x1D16D == code // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
2833
- ){
2834
- return SpacingMark;
2835
- }
2836
-
2837
-
2838
- if(
2839
- (0x1100 <= code && code <= 0x115F) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
2840
- (0xA960 <= code && code <= 0xA97C) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
2841
- ){
2842
- return L;
2843
- }
2844
-
2845
- if(
2846
- (0x1160 <= code && code <= 0x11A7) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
2847
- (0xD7B0 <= code && code <= 0xD7C6) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
2848
- ){
2849
- return V;
2850
- }
2851
-
2852
-
2853
- if(
2854
- (0x11A8 <= code && code <= 0x11FF) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
2855
- (0xD7CB <= code && code <= 0xD7FB) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
2856
- ){
2857
- return T;
2858
- }
2859
-
2860
- if(
2861
- 0xAC00 == code || // Lo HANGUL SYLLABLE GA
2862
- 0xAC1C == code || // Lo HANGUL SYLLABLE GAE
2863
- 0xAC38 == code || // Lo HANGUL SYLLABLE GYA
2864
- 0xAC54 == code || // Lo HANGUL SYLLABLE GYAE
2865
- 0xAC70 == code || // Lo HANGUL SYLLABLE GEO
2866
- 0xAC8C == code || // Lo HANGUL SYLLABLE GE
2867
- 0xACA8 == code || // Lo HANGUL SYLLABLE GYEO
2868
- 0xACC4 == code || // Lo HANGUL SYLLABLE GYE
2869
- 0xACE0 == code || // Lo HANGUL SYLLABLE GO
2870
- 0xACFC == code || // Lo HANGUL SYLLABLE GWA
2871
- 0xAD18 == code || // Lo HANGUL SYLLABLE GWAE
2872
- 0xAD34 == code || // Lo HANGUL SYLLABLE GOE
2873
- 0xAD50 == code || // Lo HANGUL SYLLABLE GYO
2874
- 0xAD6C == code || // Lo HANGUL SYLLABLE GU
2875
- 0xAD88 == code || // Lo HANGUL SYLLABLE GWEO
2876
- 0xADA4 == code || // Lo HANGUL SYLLABLE GWE
2877
- 0xADC0 == code || // Lo HANGUL SYLLABLE GWI
2878
- 0xADDC == code || // Lo HANGUL SYLLABLE GYU
2879
- 0xADF8 == code || // Lo HANGUL SYLLABLE GEU
2880
- 0xAE14 == code || // Lo HANGUL SYLLABLE GYI
2881
- 0xAE30 == code || // Lo HANGUL SYLLABLE GI
2882
- 0xAE4C == code || // Lo HANGUL SYLLABLE GGA
2883
- 0xAE68 == code || // Lo HANGUL SYLLABLE GGAE
2884
- 0xAE84 == code || // Lo HANGUL SYLLABLE GGYA
2885
- 0xAEA0 == code || // Lo HANGUL SYLLABLE GGYAE
2886
- 0xAEBC == code || // Lo HANGUL SYLLABLE GGEO
2887
- 0xAED8 == code || // Lo HANGUL SYLLABLE GGE
2888
- 0xAEF4 == code || // Lo HANGUL SYLLABLE GGYEO
2889
- 0xAF10 == code || // Lo HANGUL SYLLABLE GGYE
2890
- 0xAF2C == code || // Lo HANGUL SYLLABLE GGO
2891
- 0xAF48 == code || // Lo HANGUL SYLLABLE GGWA
2892
- 0xAF64 == code || // Lo HANGUL SYLLABLE GGWAE
2893
- 0xAF80 == code || // Lo HANGUL SYLLABLE GGOE
2894
- 0xAF9C == code || // Lo HANGUL SYLLABLE GGYO
2895
- 0xAFB8 == code || // Lo HANGUL SYLLABLE GGU
2896
- 0xAFD4 == code || // Lo HANGUL SYLLABLE GGWEO
2897
- 0xAFF0 == code || // Lo HANGUL SYLLABLE GGWE
2898
- 0xB00C == code || // Lo HANGUL SYLLABLE GGWI
2899
- 0xB028 == code || // Lo HANGUL SYLLABLE GGYU
2900
- 0xB044 == code || // Lo HANGUL SYLLABLE GGEU
2901
- 0xB060 == code || // Lo HANGUL SYLLABLE GGYI
2902
- 0xB07C == code || // Lo HANGUL SYLLABLE GGI
2903
- 0xB098 == code || // Lo HANGUL SYLLABLE NA
2904
- 0xB0B4 == code || // Lo HANGUL SYLLABLE NAE
2905
- 0xB0D0 == code || // Lo HANGUL SYLLABLE NYA
2906
- 0xB0EC == code || // Lo HANGUL SYLLABLE NYAE
2907
- 0xB108 == code || // Lo HANGUL SYLLABLE NEO
2908
- 0xB124 == code || // Lo HANGUL SYLLABLE NE
2909
- 0xB140 == code || // Lo HANGUL SYLLABLE NYEO
2910
- 0xB15C == code || // Lo HANGUL SYLLABLE NYE
2911
- 0xB178 == code || // Lo HANGUL SYLLABLE NO
2912
- 0xB194 == code || // Lo HANGUL SYLLABLE NWA
2913
- 0xB1B0 == code || // Lo HANGUL SYLLABLE NWAE
2914
- 0xB1CC == code || // Lo HANGUL SYLLABLE NOE
2915
- 0xB1E8 == code || // Lo HANGUL SYLLABLE NYO
2916
- 0xB204 == code || // Lo HANGUL SYLLABLE NU
2917
- 0xB220 == code || // Lo HANGUL SYLLABLE NWEO
2918
- 0xB23C == code || // Lo HANGUL SYLLABLE NWE
2919
- 0xB258 == code || // Lo HANGUL SYLLABLE NWI
2920
- 0xB274 == code || // Lo HANGUL SYLLABLE NYU
2921
- 0xB290 == code || // Lo HANGUL SYLLABLE NEU
2922
- 0xB2AC == code || // Lo HANGUL SYLLABLE NYI
2923
- 0xB2C8 == code || // Lo HANGUL SYLLABLE NI
2924
- 0xB2E4 == code || // Lo HANGUL SYLLABLE DA
2925
- 0xB300 == code || // Lo HANGUL SYLLABLE DAE
2926
- 0xB31C == code || // Lo HANGUL SYLLABLE DYA
2927
- 0xB338 == code || // Lo HANGUL SYLLABLE DYAE
2928
- 0xB354 == code || // Lo HANGUL SYLLABLE DEO
2929
- 0xB370 == code || // Lo HANGUL SYLLABLE DE
2930
- 0xB38C == code || // Lo HANGUL SYLLABLE DYEO
2931
- 0xB3A8 == code || // Lo HANGUL SYLLABLE DYE
2932
- 0xB3C4 == code || // Lo HANGUL SYLLABLE DO
2933
- 0xB3E0 == code || // Lo HANGUL SYLLABLE DWA
2934
- 0xB3FC == code || // Lo HANGUL SYLLABLE DWAE
2935
- 0xB418 == code || // Lo HANGUL SYLLABLE DOE
2936
- 0xB434 == code || // Lo HANGUL SYLLABLE DYO
2937
- 0xB450 == code || // Lo HANGUL SYLLABLE DU
2938
- 0xB46C == code || // Lo HANGUL SYLLABLE DWEO
2939
- 0xB488 == code || // Lo HANGUL SYLLABLE DWE
2940
- 0xB4A4 == code || // Lo HANGUL SYLLABLE DWI
2941
- 0xB4C0 == code || // Lo HANGUL SYLLABLE DYU
2942
- 0xB4DC == code || // Lo HANGUL SYLLABLE DEU
2943
- 0xB4F8 == code || // Lo HANGUL SYLLABLE DYI
2944
- 0xB514 == code || // Lo HANGUL SYLLABLE DI
2945
- 0xB530 == code || // Lo HANGUL SYLLABLE DDA
2946
- 0xB54C == code || // Lo HANGUL SYLLABLE DDAE
2947
- 0xB568 == code || // Lo HANGUL SYLLABLE DDYA
2948
- 0xB584 == code || // Lo HANGUL SYLLABLE DDYAE
2949
- 0xB5A0 == code || // Lo HANGUL SYLLABLE DDEO
2950
- 0xB5BC == code || // Lo HANGUL SYLLABLE DDE
2951
- 0xB5D8 == code || // Lo HANGUL SYLLABLE DDYEO
2952
- 0xB5F4 == code || // Lo HANGUL SYLLABLE DDYE
2953
- 0xB610 == code || // Lo HANGUL SYLLABLE DDO
2954
- 0xB62C == code || // Lo HANGUL SYLLABLE DDWA
2955
- 0xB648 == code || // Lo HANGUL SYLLABLE DDWAE
2956
- 0xB664 == code || // Lo HANGUL SYLLABLE DDOE
2957
- 0xB680 == code || // Lo HANGUL SYLLABLE DDYO
2958
- 0xB69C == code || // Lo HANGUL SYLLABLE DDU
2959
- 0xB6B8 == code || // Lo HANGUL SYLLABLE DDWEO
2960
- 0xB6D4 == code || // Lo HANGUL SYLLABLE DDWE
2961
- 0xB6F0 == code || // Lo HANGUL SYLLABLE DDWI
2962
- 0xB70C == code || // Lo HANGUL SYLLABLE DDYU
2963
- 0xB728 == code || // Lo HANGUL SYLLABLE DDEU
2964
- 0xB744 == code || // Lo HANGUL SYLLABLE DDYI
2965
- 0xB760 == code || // Lo HANGUL SYLLABLE DDI
2966
- 0xB77C == code || // Lo HANGUL SYLLABLE RA
2967
- 0xB798 == code || // Lo HANGUL SYLLABLE RAE
2968
- 0xB7B4 == code || // Lo HANGUL SYLLABLE RYA
2969
- 0xB7D0 == code || // Lo HANGUL SYLLABLE RYAE
2970
- 0xB7EC == code || // Lo HANGUL SYLLABLE REO
2971
- 0xB808 == code || // Lo HANGUL SYLLABLE RE
2972
- 0xB824 == code || // Lo HANGUL SYLLABLE RYEO
2973
- 0xB840 == code || // Lo HANGUL SYLLABLE RYE
2974
- 0xB85C == code || // Lo HANGUL SYLLABLE RO
2975
- 0xB878 == code || // Lo HANGUL SYLLABLE RWA
2976
- 0xB894 == code || // Lo HANGUL SYLLABLE RWAE
2977
- 0xB8B0 == code || // Lo HANGUL SYLLABLE ROE
2978
- 0xB8CC == code || // Lo HANGUL SYLLABLE RYO
2979
- 0xB8E8 == code || // Lo HANGUL SYLLABLE RU
2980
- 0xB904 == code || // Lo HANGUL SYLLABLE RWEO
2981
- 0xB920 == code || // Lo HANGUL SYLLABLE RWE
2982
- 0xB93C == code || // Lo HANGUL SYLLABLE RWI
2983
- 0xB958 == code || // Lo HANGUL SYLLABLE RYU
2984
- 0xB974 == code || // Lo HANGUL SYLLABLE REU
2985
- 0xB990 == code || // Lo HANGUL SYLLABLE RYI
2986
- 0xB9AC == code || // Lo HANGUL SYLLABLE RI
2987
- 0xB9C8 == code || // Lo HANGUL SYLLABLE MA
2988
- 0xB9E4 == code || // Lo HANGUL SYLLABLE MAE
2989
- 0xBA00 == code || // Lo HANGUL SYLLABLE MYA
2990
- 0xBA1C == code || // Lo HANGUL SYLLABLE MYAE
2991
- 0xBA38 == code || // Lo HANGUL SYLLABLE MEO
2992
- 0xBA54 == code || // Lo HANGUL SYLLABLE ME
2993
- 0xBA70 == code || // Lo HANGUL SYLLABLE MYEO
2994
- 0xBA8C == code || // Lo HANGUL SYLLABLE MYE
2995
- 0xBAA8 == code || // Lo HANGUL SYLLABLE MO
2996
- 0xBAC4 == code || // Lo HANGUL SYLLABLE MWA
2997
- 0xBAE0 == code || // Lo HANGUL SYLLABLE MWAE
2998
- 0xBAFC == code || // Lo HANGUL SYLLABLE MOE
2999
- 0xBB18 == code || // Lo HANGUL SYLLABLE MYO
3000
- 0xBB34 == code || // Lo HANGUL SYLLABLE MU
3001
- 0xBB50 == code || // Lo HANGUL SYLLABLE MWEO
3002
- 0xBB6C == code || // Lo HANGUL SYLLABLE MWE
3003
- 0xBB88 == code || // Lo HANGUL SYLLABLE MWI
3004
- 0xBBA4 == code || // Lo HANGUL SYLLABLE MYU
3005
- 0xBBC0 == code || // Lo HANGUL SYLLABLE MEU
3006
- 0xBBDC == code || // Lo HANGUL SYLLABLE MYI
3007
- 0xBBF8 == code || // Lo HANGUL SYLLABLE MI
3008
- 0xBC14 == code || // Lo HANGUL SYLLABLE BA
3009
- 0xBC30 == code || // Lo HANGUL SYLLABLE BAE
3010
- 0xBC4C == code || // Lo HANGUL SYLLABLE BYA
3011
- 0xBC68 == code || // Lo HANGUL SYLLABLE BYAE
3012
- 0xBC84 == code || // Lo HANGUL SYLLABLE BEO
3013
- 0xBCA0 == code || // Lo HANGUL SYLLABLE BE
3014
- 0xBCBC == code || // Lo HANGUL SYLLABLE BYEO
3015
- 0xBCD8 == code || // Lo HANGUL SYLLABLE BYE
3016
- 0xBCF4 == code || // Lo HANGUL SYLLABLE BO
3017
- 0xBD10 == code || // Lo HANGUL SYLLABLE BWA
3018
- 0xBD2C == code || // Lo HANGUL SYLLABLE BWAE
3019
- 0xBD48 == code || // Lo HANGUL SYLLABLE BOE
3020
- 0xBD64 == code || // Lo HANGUL SYLLABLE BYO
3021
- 0xBD80 == code || // Lo HANGUL SYLLABLE BU
3022
- 0xBD9C == code || // Lo HANGUL SYLLABLE BWEO
3023
- 0xBDB8 == code || // Lo HANGUL SYLLABLE BWE
3024
- 0xBDD4 == code || // Lo HANGUL SYLLABLE BWI
3025
- 0xBDF0 == code || // Lo HANGUL SYLLABLE BYU
3026
- 0xBE0C == code || // Lo HANGUL SYLLABLE BEU
3027
- 0xBE28 == code || // Lo HANGUL SYLLABLE BYI
3028
- 0xBE44 == code || // Lo HANGUL SYLLABLE BI
3029
- 0xBE60 == code || // Lo HANGUL SYLLABLE BBA
3030
- 0xBE7C == code || // Lo HANGUL SYLLABLE BBAE
3031
- 0xBE98 == code || // Lo HANGUL SYLLABLE BBYA
3032
- 0xBEB4 == code || // Lo HANGUL SYLLABLE BBYAE
3033
- 0xBED0 == code || // Lo HANGUL SYLLABLE BBEO
3034
- 0xBEEC == code || // Lo HANGUL SYLLABLE BBE
3035
- 0xBF08 == code || // Lo HANGUL SYLLABLE BBYEO
3036
- 0xBF24 == code || // Lo HANGUL SYLLABLE BBYE
3037
- 0xBF40 == code || // Lo HANGUL SYLLABLE BBO
3038
- 0xBF5C == code || // Lo HANGUL SYLLABLE BBWA
3039
- 0xBF78 == code || // Lo HANGUL SYLLABLE BBWAE
3040
- 0xBF94 == code || // Lo HANGUL SYLLABLE BBOE
3041
- 0xBFB0 == code || // Lo HANGUL SYLLABLE BBYO
3042
- 0xBFCC == code || // Lo HANGUL SYLLABLE BBU
3043
- 0xBFE8 == code || // Lo HANGUL SYLLABLE BBWEO
3044
- 0xC004 == code || // Lo HANGUL SYLLABLE BBWE
3045
- 0xC020 == code || // Lo HANGUL SYLLABLE BBWI
3046
- 0xC03C == code || // Lo HANGUL SYLLABLE BBYU
3047
- 0xC058 == code || // Lo HANGUL SYLLABLE BBEU
3048
- 0xC074 == code || // Lo HANGUL SYLLABLE BBYI
3049
- 0xC090 == code || // Lo HANGUL SYLLABLE BBI
3050
- 0xC0AC == code || // Lo HANGUL SYLLABLE SA
3051
- 0xC0C8 == code || // Lo HANGUL SYLLABLE SAE
3052
- 0xC0E4 == code || // Lo HANGUL SYLLABLE SYA
3053
- 0xC100 == code || // Lo HANGUL SYLLABLE SYAE
3054
- 0xC11C == code || // Lo HANGUL SYLLABLE SEO
3055
- 0xC138 == code || // Lo HANGUL SYLLABLE SE
3056
- 0xC154 == code || // Lo HANGUL SYLLABLE SYEO
3057
- 0xC170 == code || // Lo HANGUL SYLLABLE SYE
3058
- 0xC18C == code || // Lo HANGUL SYLLABLE SO
3059
- 0xC1A8 == code || // Lo HANGUL SYLLABLE SWA
3060
- 0xC1C4 == code || // Lo HANGUL SYLLABLE SWAE
3061
- 0xC1E0 == code || // Lo HANGUL SYLLABLE SOE
3062
- 0xC1FC == code || // Lo HANGUL SYLLABLE SYO
3063
- 0xC218 == code || // Lo HANGUL SYLLABLE SU
3064
- 0xC234 == code || // Lo HANGUL SYLLABLE SWEO
3065
- 0xC250 == code || // Lo HANGUL SYLLABLE SWE
3066
- 0xC26C == code || // Lo HANGUL SYLLABLE SWI
3067
- 0xC288 == code || // Lo HANGUL SYLLABLE SYU
3068
- 0xC2A4 == code || // Lo HANGUL SYLLABLE SEU
3069
- 0xC2C0 == code || // Lo HANGUL SYLLABLE SYI
3070
- 0xC2DC == code || // Lo HANGUL SYLLABLE SI
3071
- 0xC2F8 == code || // Lo HANGUL SYLLABLE SSA
3072
- 0xC314 == code || // Lo HANGUL SYLLABLE SSAE
3073
- 0xC330 == code || // Lo HANGUL SYLLABLE SSYA
3074
- 0xC34C == code || // Lo HANGUL SYLLABLE SSYAE
3075
- 0xC368 == code || // Lo HANGUL SYLLABLE SSEO
3076
- 0xC384 == code || // Lo HANGUL SYLLABLE SSE
3077
- 0xC3A0 == code || // Lo HANGUL SYLLABLE SSYEO
3078
- 0xC3BC == code || // Lo HANGUL SYLLABLE SSYE
3079
- 0xC3D8 == code || // Lo HANGUL SYLLABLE SSO
3080
- 0xC3F4 == code || // Lo HANGUL SYLLABLE SSWA
3081
- 0xC410 == code || // Lo HANGUL SYLLABLE SSWAE
3082
- 0xC42C == code || // Lo HANGUL SYLLABLE SSOE
3083
- 0xC448 == code || // Lo HANGUL SYLLABLE SSYO
3084
- 0xC464 == code || // Lo HANGUL SYLLABLE SSU
3085
- 0xC480 == code || // Lo HANGUL SYLLABLE SSWEO
3086
- 0xC49C == code || // Lo HANGUL SYLLABLE SSWE
3087
- 0xC4B8 == code || // Lo HANGUL SYLLABLE SSWI
3088
- 0xC4D4 == code || // Lo HANGUL SYLLABLE SSYU
3089
- 0xC4F0 == code || // Lo HANGUL SYLLABLE SSEU
3090
- 0xC50C == code || // Lo HANGUL SYLLABLE SSYI
3091
- 0xC528 == code || // Lo HANGUL SYLLABLE SSI
3092
- 0xC544 == code || // Lo HANGUL SYLLABLE A
3093
- 0xC560 == code || // Lo HANGUL SYLLABLE AE
3094
- 0xC57C == code || // Lo HANGUL SYLLABLE YA
3095
- 0xC598 == code || // Lo HANGUL SYLLABLE YAE
3096
- 0xC5B4 == code || // Lo HANGUL SYLLABLE EO
3097
- 0xC5D0 == code || // Lo HANGUL SYLLABLE E
3098
- 0xC5EC == code || // Lo HANGUL SYLLABLE YEO
3099
- 0xC608 == code || // Lo HANGUL SYLLABLE YE
3100
- 0xC624 == code || // Lo HANGUL SYLLABLE O
3101
- 0xC640 == code || // Lo HANGUL SYLLABLE WA
3102
- 0xC65C == code || // Lo HANGUL SYLLABLE WAE
3103
- 0xC678 == code || // Lo HANGUL SYLLABLE OE
3104
- 0xC694 == code || // Lo HANGUL SYLLABLE YO
3105
- 0xC6B0 == code || // Lo HANGUL SYLLABLE U
3106
- 0xC6CC == code || // Lo HANGUL SYLLABLE WEO
3107
- 0xC6E8 == code || // Lo HANGUL SYLLABLE WE
3108
- 0xC704 == code || // Lo HANGUL SYLLABLE WI
3109
- 0xC720 == code || // Lo HANGUL SYLLABLE YU
3110
- 0xC73C == code || // Lo HANGUL SYLLABLE EU
3111
- 0xC758 == code || // Lo HANGUL SYLLABLE YI
3112
- 0xC774 == code || // Lo HANGUL SYLLABLE I
3113
- 0xC790 == code || // Lo HANGUL SYLLABLE JA
3114
- 0xC7AC == code || // Lo HANGUL SYLLABLE JAE
3115
- 0xC7C8 == code || // Lo HANGUL SYLLABLE JYA
3116
- 0xC7E4 == code || // Lo HANGUL SYLLABLE JYAE
3117
- 0xC800 == code || // Lo HANGUL SYLLABLE JEO
3118
- 0xC81C == code || // Lo HANGUL SYLLABLE JE
3119
- 0xC838 == code || // Lo HANGUL SYLLABLE JYEO
3120
- 0xC854 == code || // Lo HANGUL SYLLABLE JYE
3121
- 0xC870 == code || // Lo HANGUL SYLLABLE JO
3122
- 0xC88C == code || // Lo HANGUL SYLLABLE JWA
3123
- 0xC8A8 == code || // Lo HANGUL SYLLABLE JWAE
3124
- 0xC8C4 == code || // Lo HANGUL SYLLABLE JOE
3125
- 0xC8E0 == code || // Lo HANGUL SYLLABLE JYO
3126
- 0xC8FC == code || // Lo HANGUL SYLLABLE JU
3127
- 0xC918 == code || // Lo HANGUL SYLLABLE JWEO
3128
- 0xC934 == code || // Lo HANGUL SYLLABLE JWE
3129
- 0xC950 == code || // Lo HANGUL SYLLABLE JWI
3130
- 0xC96C == code || // Lo HANGUL SYLLABLE JYU
3131
- 0xC988 == code || // Lo HANGUL SYLLABLE JEU
3132
- 0xC9A4 == code || // Lo HANGUL SYLLABLE JYI
3133
- 0xC9C0 == code || // Lo HANGUL SYLLABLE JI
3134
- 0xC9DC == code || // Lo HANGUL SYLLABLE JJA
3135
- 0xC9F8 == code || // Lo HANGUL SYLLABLE JJAE
3136
- 0xCA14 == code || // Lo HANGUL SYLLABLE JJYA
3137
- 0xCA30 == code || // Lo HANGUL SYLLABLE JJYAE
3138
- 0xCA4C == code || // Lo HANGUL SYLLABLE JJEO
3139
- 0xCA68 == code || // Lo HANGUL SYLLABLE JJE
3140
- 0xCA84 == code || // Lo HANGUL SYLLABLE JJYEO
3141
- 0xCAA0 == code || // Lo HANGUL SYLLABLE JJYE
3142
- 0xCABC == code || // Lo HANGUL SYLLABLE JJO
3143
- 0xCAD8 == code || // Lo HANGUL SYLLABLE JJWA
3144
- 0xCAF4 == code || // Lo HANGUL SYLLABLE JJWAE
3145
- 0xCB10 == code || // Lo HANGUL SYLLABLE JJOE
3146
- 0xCB2C == code || // Lo HANGUL SYLLABLE JJYO
3147
- 0xCB48 == code || // Lo HANGUL SYLLABLE JJU
3148
- 0xCB64 == code || // Lo HANGUL SYLLABLE JJWEO
3149
- 0xCB80 == code || // Lo HANGUL SYLLABLE JJWE
3150
- 0xCB9C == code || // Lo HANGUL SYLLABLE JJWI
3151
- 0xCBB8 == code || // Lo HANGUL SYLLABLE JJYU
3152
- 0xCBD4 == code || // Lo HANGUL SYLLABLE JJEU
3153
- 0xCBF0 == code || // Lo HANGUL SYLLABLE JJYI
3154
- 0xCC0C == code || // Lo HANGUL SYLLABLE JJI
3155
- 0xCC28 == code || // Lo HANGUL SYLLABLE CA
3156
- 0xCC44 == code || // Lo HANGUL SYLLABLE CAE
3157
- 0xCC60 == code || // Lo HANGUL SYLLABLE CYA
3158
- 0xCC7C == code || // Lo HANGUL SYLLABLE CYAE
3159
- 0xCC98 == code || // Lo HANGUL SYLLABLE CEO
3160
- 0xCCB4 == code || // Lo HANGUL SYLLABLE CE
3161
- 0xCCD0 == code || // Lo HANGUL SYLLABLE CYEO
3162
- 0xCCEC == code || // Lo HANGUL SYLLABLE CYE
3163
- 0xCD08 == code || // Lo HANGUL SYLLABLE CO
3164
- 0xCD24 == code || // Lo HANGUL SYLLABLE CWA
3165
- 0xCD40 == code || // Lo HANGUL SYLLABLE CWAE
3166
- 0xCD5C == code || // Lo HANGUL SYLLABLE COE
3167
- 0xCD78 == code || // Lo HANGUL SYLLABLE CYO
3168
- 0xCD94 == code || // Lo HANGUL SYLLABLE CU
3169
- 0xCDB0 == code || // Lo HANGUL SYLLABLE CWEO
3170
- 0xCDCC == code || // Lo HANGUL SYLLABLE CWE
3171
- 0xCDE8 == code || // Lo HANGUL SYLLABLE CWI
3172
- 0xCE04 == code || // Lo HANGUL SYLLABLE CYU
3173
- 0xCE20 == code || // Lo HANGUL SYLLABLE CEU
3174
- 0xCE3C == code || // Lo HANGUL SYLLABLE CYI
3175
- 0xCE58 == code || // Lo HANGUL SYLLABLE CI
3176
- 0xCE74 == code || // Lo HANGUL SYLLABLE KA
3177
- 0xCE90 == code || // Lo HANGUL SYLLABLE KAE
3178
- 0xCEAC == code || // Lo HANGUL SYLLABLE KYA
3179
- 0xCEC8 == code || // Lo HANGUL SYLLABLE KYAE
3180
- 0xCEE4 == code || // Lo HANGUL SYLLABLE KEO
3181
- 0xCF00 == code || // Lo HANGUL SYLLABLE KE
3182
- 0xCF1C == code || // Lo HANGUL SYLLABLE KYEO
3183
- 0xCF38 == code || // Lo HANGUL SYLLABLE KYE
3184
- 0xCF54 == code || // Lo HANGUL SYLLABLE KO
3185
- 0xCF70 == code || // Lo HANGUL SYLLABLE KWA
3186
- 0xCF8C == code || // Lo HANGUL SYLLABLE KWAE
3187
- 0xCFA8 == code || // Lo HANGUL SYLLABLE KOE
3188
- 0xCFC4 == code || // Lo HANGUL SYLLABLE KYO
3189
- 0xCFE0 == code || // Lo HANGUL SYLLABLE KU
3190
- 0xCFFC == code || // Lo HANGUL SYLLABLE KWEO
3191
- 0xD018 == code || // Lo HANGUL SYLLABLE KWE
3192
- 0xD034 == code || // Lo HANGUL SYLLABLE KWI
3193
- 0xD050 == code || // Lo HANGUL SYLLABLE KYU
3194
- 0xD06C == code || // Lo HANGUL SYLLABLE KEU
3195
- 0xD088 == code || // Lo HANGUL SYLLABLE KYI
3196
- 0xD0A4 == code || // Lo HANGUL SYLLABLE KI
3197
- 0xD0C0 == code || // Lo HANGUL SYLLABLE TA
3198
- 0xD0DC == code || // Lo HANGUL SYLLABLE TAE
3199
- 0xD0F8 == code || // Lo HANGUL SYLLABLE TYA
3200
- 0xD114 == code || // Lo HANGUL SYLLABLE TYAE
3201
- 0xD130 == code || // Lo HANGUL SYLLABLE TEO
3202
- 0xD14C == code || // Lo HANGUL SYLLABLE TE
3203
- 0xD168 == code || // Lo HANGUL SYLLABLE TYEO
3204
- 0xD184 == code || // Lo HANGUL SYLLABLE TYE
3205
- 0xD1A0 == code || // Lo HANGUL SYLLABLE TO
3206
- 0xD1BC == code || // Lo HANGUL SYLLABLE TWA
3207
- 0xD1D8 == code || // Lo HANGUL SYLLABLE TWAE
3208
- 0xD1F4 == code || // Lo HANGUL SYLLABLE TOE
3209
- 0xD210 == code || // Lo HANGUL SYLLABLE TYO
3210
- 0xD22C == code || // Lo HANGUL SYLLABLE TU
3211
- 0xD248 == code || // Lo HANGUL SYLLABLE TWEO
3212
- 0xD264 == code || // Lo HANGUL SYLLABLE TWE
3213
- 0xD280 == code || // Lo HANGUL SYLLABLE TWI
3214
- 0xD29C == code || // Lo HANGUL SYLLABLE TYU
3215
- 0xD2B8 == code || // Lo HANGUL SYLLABLE TEU
3216
- 0xD2D4 == code || // Lo HANGUL SYLLABLE TYI
3217
- 0xD2F0 == code || // Lo HANGUL SYLLABLE TI
3218
- 0xD30C == code || // Lo HANGUL SYLLABLE PA
3219
- 0xD328 == code || // Lo HANGUL SYLLABLE PAE
3220
- 0xD344 == code || // Lo HANGUL SYLLABLE PYA
3221
- 0xD360 == code || // Lo HANGUL SYLLABLE PYAE
3222
- 0xD37C == code || // Lo HANGUL SYLLABLE PEO
3223
- 0xD398 == code || // Lo HANGUL SYLLABLE PE
3224
- 0xD3B4 == code || // Lo HANGUL SYLLABLE PYEO
3225
- 0xD3D0 == code || // Lo HANGUL SYLLABLE PYE
3226
- 0xD3EC == code || // Lo HANGUL SYLLABLE PO
3227
- 0xD408 == code || // Lo HANGUL SYLLABLE PWA
3228
- 0xD424 == code || // Lo HANGUL SYLLABLE PWAE
3229
- 0xD440 == code || // Lo HANGUL SYLLABLE POE
3230
- 0xD45C == code || // Lo HANGUL SYLLABLE PYO
3231
- 0xD478 == code || // Lo HANGUL SYLLABLE PU
3232
- 0xD494 == code || // Lo HANGUL SYLLABLE PWEO
3233
- 0xD4B0 == code || // Lo HANGUL SYLLABLE PWE
3234
- 0xD4CC == code || // Lo HANGUL SYLLABLE PWI
3235
- 0xD4E8 == code || // Lo HANGUL SYLLABLE PYU
3236
- 0xD504 == code || // Lo HANGUL SYLLABLE PEU
3237
- 0xD520 == code || // Lo HANGUL SYLLABLE PYI
3238
- 0xD53C == code || // Lo HANGUL SYLLABLE PI
3239
- 0xD558 == code || // Lo HANGUL SYLLABLE HA
3240
- 0xD574 == code || // Lo HANGUL SYLLABLE HAE
3241
- 0xD590 == code || // Lo HANGUL SYLLABLE HYA
3242
- 0xD5AC == code || // Lo HANGUL SYLLABLE HYAE
3243
- 0xD5C8 == code || // Lo HANGUL SYLLABLE HEO
3244
- 0xD5E4 == code || // Lo HANGUL SYLLABLE HE
3245
- 0xD600 == code || // Lo HANGUL SYLLABLE HYEO
3246
- 0xD61C == code || // Lo HANGUL SYLLABLE HYE
3247
- 0xD638 == code || // Lo HANGUL SYLLABLE HO
3248
- 0xD654 == code || // Lo HANGUL SYLLABLE HWA
3249
- 0xD670 == code || // Lo HANGUL SYLLABLE HWAE
3250
- 0xD68C == code || // Lo HANGUL SYLLABLE HOE
3251
- 0xD6A8 == code || // Lo HANGUL SYLLABLE HYO
3252
- 0xD6C4 == code || // Lo HANGUL SYLLABLE HU
3253
- 0xD6E0 == code || // Lo HANGUL SYLLABLE HWEO
3254
- 0xD6FC == code || // Lo HANGUL SYLLABLE HWE
3255
- 0xD718 == code || // Lo HANGUL SYLLABLE HWI
3256
- 0xD734 == code || // Lo HANGUL SYLLABLE HYU
3257
- 0xD750 == code || // Lo HANGUL SYLLABLE HEU
3258
- 0xD76C == code || // Lo HANGUL SYLLABLE HYI
3259
- 0xD788 == code // Lo HANGUL SYLLABLE HI
3260
- ){
3261
- return LV;
3262
- }
3263
-
3264
- if(
3265
- (0xAC01 <= code && code <= 0xAC1B) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
3266
- (0xAC1D <= code && code <= 0xAC37) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
3267
- (0xAC39 <= code && code <= 0xAC53) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
3268
- (0xAC55 <= code && code <= 0xAC6F) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
3269
- (0xAC71 <= code && code <= 0xAC8B) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
3270
- (0xAC8D <= code && code <= 0xACA7) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
3271
- (0xACA9 <= code && code <= 0xACC3) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
3272
- (0xACC5 <= code && code <= 0xACDF) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
3273
- (0xACE1 <= code && code <= 0xACFB) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
3274
- (0xACFD <= code && code <= 0xAD17) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
3275
- (0xAD19 <= code && code <= 0xAD33) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
3276
- (0xAD35 <= code && code <= 0xAD4F) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
3277
- (0xAD51 <= code && code <= 0xAD6B) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
3278
- (0xAD6D <= code && code <= 0xAD87) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
3279
- (0xAD89 <= code && code <= 0xADA3) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
3280
- (0xADA5 <= code && code <= 0xADBF) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
3281
- (0xADC1 <= code && code <= 0xADDB) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
3282
- (0xADDD <= code && code <= 0xADF7) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
3283
- (0xADF9 <= code && code <= 0xAE13) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
3284
- (0xAE15 <= code && code <= 0xAE2F) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
3285
- (0xAE31 <= code && code <= 0xAE4B) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
3286
- (0xAE4D <= code && code <= 0xAE67) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
3287
- (0xAE69 <= code && code <= 0xAE83) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
3288
- (0xAE85 <= code && code <= 0xAE9F) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
3289
- (0xAEA1 <= code && code <= 0xAEBB) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
3290
- (0xAEBD <= code && code <= 0xAED7) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
3291
- (0xAED9 <= code && code <= 0xAEF3) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
3292
- (0xAEF5 <= code && code <= 0xAF0F) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
3293
- (0xAF11 <= code && code <= 0xAF2B) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
3294
- (0xAF2D <= code && code <= 0xAF47) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
3295
- (0xAF49 <= code && code <= 0xAF63) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
3296
- (0xAF65 <= code && code <= 0xAF7F) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
3297
- (0xAF81 <= code && code <= 0xAF9B) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
3298
- (0xAF9D <= code && code <= 0xAFB7) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
3299
- (0xAFB9 <= code && code <= 0xAFD3) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
3300
- (0xAFD5 <= code && code <= 0xAFEF) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
3301
- (0xAFF1 <= code && code <= 0xB00B) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
3302
- (0xB00D <= code && code <= 0xB027) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
3303
- (0xB029 <= code && code <= 0xB043) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
3304
- (0xB045 <= code && code <= 0xB05F) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
3305
- (0xB061 <= code && code <= 0xB07B) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
3306
- (0xB07D <= code && code <= 0xB097) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
3307
- (0xB099 <= code && code <= 0xB0B3) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
3308
- (0xB0B5 <= code && code <= 0xB0CF) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
3309
- (0xB0D1 <= code && code <= 0xB0EB) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
3310
- (0xB0ED <= code && code <= 0xB107) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
3311
- (0xB109 <= code && code <= 0xB123) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
3312
- (0xB125 <= code && code <= 0xB13F) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
3313
- (0xB141 <= code && code <= 0xB15B) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
3314
- (0xB15D <= code && code <= 0xB177) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
3315
- (0xB179 <= code && code <= 0xB193) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
3316
- (0xB195 <= code && code <= 0xB1AF) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
3317
- (0xB1B1 <= code && code <= 0xB1CB) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
3318
- (0xB1CD <= code && code <= 0xB1E7) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
3319
- (0xB1E9 <= code && code <= 0xB203) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
3320
- (0xB205 <= code && code <= 0xB21F) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
3321
- (0xB221 <= code && code <= 0xB23B) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
3322
- (0xB23D <= code && code <= 0xB257) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
3323
- (0xB259 <= code && code <= 0xB273) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
3324
- (0xB275 <= code && code <= 0xB28F) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
3325
- (0xB291 <= code && code <= 0xB2AB) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
3326
- (0xB2AD <= code && code <= 0xB2C7) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
3327
- (0xB2C9 <= code && code <= 0xB2E3) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
3328
- (0xB2E5 <= code && code <= 0xB2FF) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
3329
- (0xB301 <= code && code <= 0xB31B) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
3330
- (0xB31D <= code && code <= 0xB337) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
3331
- (0xB339 <= code && code <= 0xB353) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
3332
- (0xB355 <= code && code <= 0xB36F) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
3333
- (0xB371 <= code && code <= 0xB38B) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
3334
- (0xB38D <= code && code <= 0xB3A7) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
3335
- (0xB3A9 <= code && code <= 0xB3C3) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
3336
- (0xB3C5 <= code && code <= 0xB3DF) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
3337
- (0xB3E1 <= code && code <= 0xB3FB) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
3338
- (0xB3FD <= code && code <= 0xB417) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
3339
- (0xB419 <= code && code <= 0xB433) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
3340
- (0xB435 <= code && code <= 0xB44F) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
3341
- (0xB451 <= code && code <= 0xB46B) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
3342
- (0xB46D <= code && code <= 0xB487) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
3343
- (0xB489 <= code && code <= 0xB4A3) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
3344
- (0xB4A5 <= code && code <= 0xB4BF) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
3345
- (0xB4C1 <= code && code <= 0xB4DB) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
3346
- (0xB4DD <= code && code <= 0xB4F7) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
3347
- (0xB4F9 <= code && code <= 0xB513) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
3348
- (0xB515 <= code && code <= 0xB52F) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
3349
- (0xB531 <= code && code <= 0xB54B) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
3350
- (0xB54D <= code && code <= 0xB567) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
3351
- (0xB569 <= code && code <= 0xB583) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
3352
- (0xB585 <= code && code <= 0xB59F) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
3353
- (0xB5A1 <= code && code <= 0xB5BB) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
3354
- (0xB5BD <= code && code <= 0xB5D7) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
3355
- (0xB5D9 <= code && code <= 0xB5F3) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
3356
- (0xB5F5 <= code && code <= 0xB60F) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
3357
- (0xB611 <= code && code <= 0xB62B) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
3358
- (0xB62D <= code && code <= 0xB647) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
3359
- (0xB649 <= code && code <= 0xB663) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
3360
- (0xB665 <= code && code <= 0xB67F) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
3361
- (0xB681 <= code && code <= 0xB69B) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
3362
- (0xB69D <= code && code <= 0xB6B7) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
3363
- (0xB6B9 <= code && code <= 0xB6D3) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
3364
- (0xB6D5 <= code && code <= 0xB6EF) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
3365
- (0xB6F1 <= code && code <= 0xB70B) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
3366
- (0xB70D <= code && code <= 0xB727) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
3367
- (0xB729 <= code && code <= 0xB743) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
3368
- (0xB745 <= code && code <= 0xB75F) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
3369
- (0xB761 <= code && code <= 0xB77B) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
3370
- (0xB77D <= code && code <= 0xB797) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
3371
- (0xB799 <= code && code <= 0xB7B3) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
3372
- (0xB7B5 <= code && code <= 0xB7CF) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
3373
- (0xB7D1 <= code && code <= 0xB7EB) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
3374
- (0xB7ED <= code && code <= 0xB807) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
3375
- (0xB809 <= code && code <= 0xB823) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
3376
- (0xB825 <= code && code <= 0xB83F) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
3377
- (0xB841 <= code && code <= 0xB85B) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
3378
- (0xB85D <= code && code <= 0xB877) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
3379
- (0xB879 <= code && code <= 0xB893) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
3380
- (0xB895 <= code && code <= 0xB8AF) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
3381
- (0xB8B1 <= code && code <= 0xB8CB) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
3382
- (0xB8CD <= code && code <= 0xB8E7) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
3383
- (0xB8E9 <= code && code <= 0xB903) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
3384
- (0xB905 <= code && code <= 0xB91F) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
3385
- (0xB921 <= code && code <= 0xB93B) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
3386
- (0xB93D <= code && code <= 0xB957) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
3387
- (0xB959 <= code && code <= 0xB973) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
3388
- (0xB975 <= code && code <= 0xB98F) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
3389
- (0xB991 <= code && code <= 0xB9AB) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
3390
- (0xB9AD <= code && code <= 0xB9C7) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
3391
- (0xB9C9 <= code && code <= 0xB9E3) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
3392
- (0xB9E5 <= code && code <= 0xB9FF) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
3393
- (0xBA01 <= code && code <= 0xBA1B) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
3394
- (0xBA1D <= code && code <= 0xBA37) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
3395
- (0xBA39 <= code && code <= 0xBA53) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
3396
- (0xBA55 <= code && code <= 0xBA6F) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
3397
- (0xBA71 <= code && code <= 0xBA8B) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
3398
- (0xBA8D <= code && code <= 0xBAA7) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
3399
- (0xBAA9 <= code && code <= 0xBAC3) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
3400
- (0xBAC5 <= code && code <= 0xBADF) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
3401
- (0xBAE1 <= code && code <= 0xBAFB) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
3402
- (0xBAFD <= code && code <= 0xBB17) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
3403
- (0xBB19 <= code && code <= 0xBB33) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
3404
- (0xBB35 <= code && code <= 0xBB4F) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
3405
- (0xBB51 <= code && code <= 0xBB6B) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
3406
- (0xBB6D <= code && code <= 0xBB87) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
3407
- (0xBB89 <= code && code <= 0xBBA3) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
3408
- (0xBBA5 <= code && code <= 0xBBBF) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
3409
- (0xBBC1 <= code && code <= 0xBBDB) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
3410
- (0xBBDD <= code && code <= 0xBBF7) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
3411
- (0xBBF9 <= code && code <= 0xBC13) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
3412
- (0xBC15 <= code && code <= 0xBC2F) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
3413
- (0xBC31 <= code && code <= 0xBC4B) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
3414
- (0xBC4D <= code && code <= 0xBC67) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
3415
- (0xBC69 <= code && code <= 0xBC83) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
3416
- (0xBC85 <= code && code <= 0xBC9F) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
3417
- (0xBCA1 <= code && code <= 0xBCBB) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
3418
- (0xBCBD <= code && code <= 0xBCD7) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
3419
- (0xBCD9 <= code && code <= 0xBCF3) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
3420
- (0xBCF5 <= code && code <= 0xBD0F) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
3421
- (0xBD11 <= code && code <= 0xBD2B) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
3422
- (0xBD2D <= code && code <= 0xBD47) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
3423
- (0xBD49 <= code && code <= 0xBD63) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
3424
- (0xBD65 <= code && code <= 0xBD7F) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
3425
- (0xBD81 <= code && code <= 0xBD9B) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
3426
- (0xBD9D <= code && code <= 0xBDB7) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
3427
- (0xBDB9 <= code && code <= 0xBDD3) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
3428
- (0xBDD5 <= code && code <= 0xBDEF) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
3429
- (0xBDF1 <= code && code <= 0xBE0B) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
3430
- (0xBE0D <= code && code <= 0xBE27) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
3431
- (0xBE29 <= code && code <= 0xBE43) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
3432
- (0xBE45 <= code && code <= 0xBE5F) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
3433
- (0xBE61 <= code && code <= 0xBE7B) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
3434
- (0xBE7D <= code && code <= 0xBE97) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
3435
- (0xBE99 <= code && code <= 0xBEB3) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
3436
- (0xBEB5 <= code && code <= 0xBECF) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
3437
- (0xBED1 <= code && code <= 0xBEEB) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
3438
- (0xBEED <= code && code <= 0xBF07) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
3439
- (0xBF09 <= code && code <= 0xBF23) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
3440
- (0xBF25 <= code && code <= 0xBF3F) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
3441
- (0xBF41 <= code && code <= 0xBF5B) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
3442
- (0xBF5D <= code && code <= 0xBF77) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
3443
- (0xBF79 <= code && code <= 0xBF93) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
3444
- (0xBF95 <= code && code <= 0xBFAF) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
3445
- (0xBFB1 <= code && code <= 0xBFCB) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
3446
- (0xBFCD <= code && code <= 0xBFE7) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
3447
- (0xBFE9 <= code && code <= 0xC003) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
3448
- (0xC005 <= code && code <= 0xC01F) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
3449
- (0xC021 <= code && code <= 0xC03B) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
3450
- (0xC03D <= code && code <= 0xC057) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
3451
- (0xC059 <= code && code <= 0xC073) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
3452
- (0xC075 <= code && code <= 0xC08F) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
3453
- (0xC091 <= code && code <= 0xC0AB) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
3454
- (0xC0AD <= code && code <= 0xC0C7) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
3455
- (0xC0C9 <= code && code <= 0xC0E3) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
3456
- (0xC0E5 <= code && code <= 0xC0FF) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
3457
- (0xC101 <= code && code <= 0xC11B) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
3458
- (0xC11D <= code && code <= 0xC137) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
3459
- (0xC139 <= code && code <= 0xC153) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
3460
- (0xC155 <= code && code <= 0xC16F) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
3461
- (0xC171 <= code && code <= 0xC18B) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
3462
- (0xC18D <= code && code <= 0xC1A7) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
3463
- (0xC1A9 <= code && code <= 0xC1C3) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
3464
- (0xC1C5 <= code && code <= 0xC1DF) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
3465
- (0xC1E1 <= code && code <= 0xC1FB) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
3466
- (0xC1FD <= code && code <= 0xC217) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
3467
- (0xC219 <= code && code <= 0xC233) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
3468
- (0xC235 <= code && code <= 0xC24F) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
3469
- (0xC251 <= code && code <= 0xC26B) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
3470
- (0xC26D <= code && code <= 0xC287) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
3471
- (0xC289 <= code && code <= 0xC2A3) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
3472
- (0xC2A5 <= code && code <= 0xC2BF) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
3473
- (0xC2C1 <= code && code <= 0xC2DB) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
3474
- (0xC2DD <= code && code <= 0xC2F7) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
3475
- (0xC2F9 <= code && code <= 0xC313) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
3476
- (0xC315 <= code && code <= 0xC32F) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
3477
- (0xC331 <= code && code <= 0xC34B) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
3478
- (0xC34D <= code && code <= 0xC367) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
3479
- (0xC369 <= code && code <= 0xC383) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
3480
- (0xC385 <= code && code <= 0xC39F) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
3481
- (0xC3A1 <= code && code <= 0xC3BB) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
3482
- (0xC3BD <= code && code <= 0xC3D7) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
3483
- (0xC3D9 <= code && code <= 0xC3F3) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
3484
- (0xC3F5 <= code && code <= 0xC40F) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
3485
- (0xC411 <= code && code <= 0xC42B) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
3486
- (0xC42D <= code && code <= 0xC447) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
3487
- (0xC449 <= code && code <= 0xC463) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
3488
- (0xC465 <= code && code <= 0xC47F) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
3489
- (0xC481 <= code && code <= 0xC49B) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
3490
- (0xC49D <= code && code <= 0xC4B7) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
3491
- (0xC4B9 <= code && code <= 0xC4D3) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
3492
- (0xC4D5 <= code && code <= 0xC4EF) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
3493
- (0xC4F1 <= code && code <= 0xC50B) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
3494
- (0xC50D <= code && code <= 0xC527) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
3495
- (0xC529 <= code && code <= 0xC543) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
3496
- (0xC545 <= code && code <= 0xC55F) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
3497
- (0xC561 <= code && code <= 0xC57B) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
3498
- (0xC57D <= code && code <= 0xC597) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
3499
- (0xC599 <= code && code <= 0xC5B3) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
3500
- (0xC5B5 <= code && code <= 0xC5CF) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
3501
- (0xC5D1 <= code && code <= 0xC5EB) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
3502
- (0xC5ED <= code && code <= 0xC607) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
3503
- (0xC609 <= code && code <= 0xC623) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
3504
- (0xC625 <= code && code <= 0xC63F) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
3505
- (0xC641 <= code && code <= 0xC65B) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
3506
- (0xC65D <= code && code <= 0xC677) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
3507
- (0xC679 <= code && code <= 0xC693) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
3508
- (0xC695 <= code && code <= 0xC6AF) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
3509
- (0xC6B1 <= code && code <= 0xC6CB) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
3510
- (0xC6CD <= code && code <= 0xC6E7) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
3511
- (0xC6E9 <= code && code <= 0xC703) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
3512
- (0xC705 <= code && code <= 0xC71F) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
3513
- (0xC721 <= code && code <= 0xC73B) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
3514
- (0xC73D <= code && code <= 0xC757) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
3515
- (0xC759 <= code && code <= 0xC773) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
3516
- (0xC775 <= code && code <= 0xC78F) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
3517
- (0xC791 <= code && code <= 0xC7AB) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
3518
- (0xC7AD <= code && code <= 0xC7C7) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
3519
- (0xC7C9 <= code && code <= 0xC7E3) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
3520
- (0xC7E5 <= code && code <= 0xC7FF) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
3521
- (0xC801 <= code && code <= 0xC81B) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
3522
- (0xC81D <= code && code <= 0xC837) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
3523
- (0xC839 <= code && code <= 0xC853) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
3524
- (0xC855 <= code && code <= 0xC86F) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
3525
- (0xC871 <= code && code <= 0xC88B) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
3526
- (0xC88D <= code && code <= 0xC8A7) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
3527
- (0xC8A9 <= code && code <= 0xC8C3) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
3528
- (0xC8C5 <= code && code <= 0xC8DF) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
3529
- (0xC8E1 <= code && code <= 0xC8FB) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
3530
- (0xC8FD <= code && code <= 0xC917) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
3531
- (0xC919 <= code && code <= 0xC933) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
3532
- (0xC935 <= code && code <= 0xC94F) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
3533
- (0xC951 <= code && code <= 0xC96B) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
3534
- (0xC96D <= code && code <= 0xC987) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
3535
- (0xC989 <= code && code <= 0xC9A3) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
3536
- (0xC9A5 <= code && code <= 0xC9BF) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
3537
- (0xC9C1 <= code && code <= 0xC9DB) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
3538
- (0xC9DD <= code && code <= 0xC9F7) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
3539
- (0xC9F9 <= code && code <= 0xCA13) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
3540
- (0xCA15 <= code && code <= 0xCA2F) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
3541
- (0xCA31 <= code && code <= 0xCA4B) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
3542
- (0xCA4D <= code && code <= 0xCA67) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
3543
- (0xCA69 <= code && code <= 0xCA83) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
3544
- (0xCA85 <= code && code <= 0xCA9F) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
3545
- (0xCAA1 <= code && code <= 0xCABB) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
3546
- (0xCABD <= code && code <= 0xCAD7) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
3547
- (0xCAD9 <= code && code <= 0xCAF3) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
3548
- (0xCAF5 <= code && code <= 0xCB0F) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
3549
- (0xCB11 <= code && code <= 0xCB2B) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
3550
- (0xCB2D <= code && code <= 0xCB47) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
3551
- (0xCB49 <= code && code <= 0xCB63) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
3552
- (0xCB65 <= code && code <= 0xCB7F) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
3553
- (0xCB81 <= code && code <= 0xCB9B) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
3554
- (0xCB9D <= code && code <= 0xCBB7) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
3555
- (0xCBB9 <= code && code <= 0xCBD3) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
3556
- (0xCBD5 <= code && code <= 0xCBEF) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
3557
- (0xCBF1 <= code && code <= 0xCC0B) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
3558
- (0xCC0D <= code && code <= 0xCC27) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
3559
- (0xCC29 <= code && code <= 0xCC43) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
3560
- (0xCC45 <= code && code <= 0xCC5F) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
3561
- (0xCC61 <= code && code <= 0xCC7B) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
3562
- (0xCC7D <= code && code <= 0xCC97) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
3563
- (0xCC99 <= code && code <= 0xCCB3) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
3564
- (0xCCB5 <= code && code <= 0xCCCF) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
3565
- (0xCCD1 <= code && code <= 0xCCEB) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
3566
- (0xCCED <= code && code <= 0xCD07) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
3567
- (0xCD09 <= code && code <= 0xCD23) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
3568
- (0xCD25 <= code && code <= 0xCD3F) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
3569
- (0xCD41 <= code && code <= 0xCD5B) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
3570
- (0xCD5D <= code && code <= 0xCD77) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
3571
- (0xCD79 <= code && code <= 0xCD93) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
3572
- (0xCD95 <= code && code <= 0xCDAF) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
3573
- (0xCDB1 <= code && code <= 0xCDCB) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
3574
- (0xCDCD <= code && code <= 0xCDE7) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
3575
- (0xCDE9 <= code && code <= 0xCE03) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
3576
- (0xCE05 <= code && code <= 0xCE1F) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
3577
- (0xCE21 <= code && code <= 0xCE3B) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
3578
- (0xCE3D <= code && code <= 0xCE57) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
3579
- (0xCE59 <= code && code <= 0xCE73) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
3580
- (0xCE75 <= code && code <= 0xCE8F) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
3581
- (0xCE91 <= code && code <= 0xCEAB) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
3582
- (0xCEAD <= code && code <= 0xCEC7) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
3583
- (0xCEC9 <= code && code <= 0xCEE3) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
3584
- (0xCEE5 <= code && code <= 0xCEFF) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
3585
- (0xCF01 <= code && code <= 0xCF1B) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
3586
- (0xCF1D <= code && code <= 0xCF37) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
3587
- (0xCF39 <= code && code <= 0xCF53) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
3588
- (0xCF55 <= code && code <= 0xCF6F) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
3589
- (0xCF71 <= code && code <= 0xCF8B) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
3590
- (0xCF8D <= code && code <= 0xCFA7) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
3591
- (0xCFA9 <= code && code <= 0xCFC3) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
3592
- (0xCFC5 <= code && code <= 0xCFDF) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
3593
- (0xCFE1 <= code && code <= 0xCFFB) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
3594
- (0xCFFD <= code && code <= 0xD017) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
3595
- (0xD019 <= code && code <= 0xD033) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
3596
- (0xD035 <= code && code <= 0xD04F) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
3597
- (0xD051 <= code && code <= 0xD06B) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
3598
- (0xD06D <= code && code <= 0xD087) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
3599
- (0xD089 <= code && code <= 0xD0A3) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
3600
- (0xD0A5 <= code && code <= 0xD0BF) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
3601
- (0xD0C1 <= code && code <= 0xD0DB) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
3602
- (0xD0DD <= code && code <= 0xD0F7) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
3603
- (0xD0F9 <= code && code <= 0xD113) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
3604
- (0xD115 <= code && code <= 0xD12F) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
3605
- (0xD131 <= code && code <= 0xD14B) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
3606
- (0xD14D <= code && code <= 0xD167) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
3607
- (0xD169 <= code && code <= 0xD183) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
3608
- (0xD185 <= code && code <= 0xD19F) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
3609
- (0xD1A1 <= code && code <= 0xD1BB) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
3610
- (0xD1BD <= code && code <= 0xD1D7) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
3611
- (0xD1D9 <= code && code <= 0xD1F3) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
3612
- (0xD1F5 <= code && code <= 0xD20F) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
3613
- (0xD211 <= code && code <= 0xD22B) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
3614
- (0xD22D <= code && code <= 0xD247) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
3615
- (0xD249 <= code && code <= 0xD263) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
3616
- (0xD265 <= code && code <= 0xD27F) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
3617
- (0xD281 <= code && code <= 0xD29B) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
3618
- (0xD29D <= code && code <= 0xD2B7) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
3619
- (0xD2B9 <= code && code <= 0xD2D3) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
3620
- (0xD2D5 <= code && code <= 0xD2EF) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
3621
- (0xD2F1 <= code && code <= 0xD30B) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
3622
- (0xD30D <= code && code <= 0xD327) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
3623
- (0xD329 <= code && code <= 0xD343) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
3624
- (0xD345 <= code && code <= 0xD35F) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
3625
- (0xD361 <= code && code <= 0xD37B) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
3626
- (0xD37D <= code && code <= 0xD397) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
3627
- (0xD399 <= code && code <= 0xD3B3) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
3628
- (0xD3B5 <= code && code <= 0xD3CF) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
3629
- (0xD3D1 <= code && code <= 0xD3EB) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
3630
- (0xD3ED <= code && code <= 0xD407) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
3631
- (0xD409 <= code && code <= 0xD423) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
3632
- (0xD425 <= code && code <= 0xD43F) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
3633
- (0xD441 <= code && code <= 0xD45B) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
3634
- (0xD45D <= code && code <= 0xD477) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
3635
- (0xD479 <= code && code <= 0xD493) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
3636
- (0xD495 <= code && code <= 0xD4AF) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
3637
- (0xD4B1 <= code && code <= 0xD4CB) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
3638
- (0xD4CD <= code && code <= 0xD4E7) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
3639
- (0xD4E9 <= code && code <= 0xD503) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
3640
- (0xD505 <= code && code <= 0xD51F) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
3641
- (0xD521 <= code && code <= 0xD53B) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
3642
- (0xD53D <= code && code <= 0xD557) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
3643
- (0xD559 <= code && code <= 0xD573) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
3644
- (0xD575 <= code && code <= 0xD58F) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
3645
- (0xD591 <= code && code <= 0xD5AB) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
3646
- (0xD5AD <= code && code <= 0xD5C7) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
3647
- (0xD5C9 <= code && code <= 0xD5E3) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
3648
- (0xD5E5 <= code && code <= 0xD5FF) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
3649
- (0xD601 <= code && code <= 0xD61B) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
3650
- (0xD61D <= code && code <= 0xD637) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
3651
- (0xD639 <= code && code <= 0xD653) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
3652
- (0xD655 <= code && code <= 0xD66F) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
3653
- (0xD671 <= code && code <= 0xD68B) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
3654
- (0xD68D <= code && code <= 0xD6A7) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
3655
- (0xD6A9 <= code && code <= 0xD6C3) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
3656
- (0xD6C5 <= code && code <= 0xD6DF) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
3657
- (0xD6E1 <= code && code <= 0xD6FB) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
3658
- (0xD6FD <= code && code <= 0xD717) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
3659
- (0xD719 <= code && code <= 0xD733) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
3660
- (0xD735 <= code && code <= 0xD74F) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
3661
- (0xD751 <= code && code <= 0xD76B) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
3662
- (0xD76D <= code && code <= 0xD787) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
3663
- (0xD789 <= code && code <= 0xD7A3) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
3664
- ){
3665
- return LVT;
3666
- }
3667
-
3668
- if(
3669
- 0x261D == code || // So WHITE UP POINTING INDEX
3670
- 0x26F9 == code || // So PERSON WITH BALL
3671
- (0x270A <= code && code <= 0x270D) || // So [4] RAISED FIST..WRITING HAND
3672
- 0x1F385 == code || // So FATHER CHRISTMAS
3673
- (0x1F3C2 <= code && code <= 0x1F3C4) || // So [3] SNOWBOARDER..SURFER
3674
- 0x1F3C7 == code || // So HORSE RACING
3675
- (0x1F3CA <= code && code <= 0x1F3CC) || // So [3] SWIMMER..GOLFER
3676
- (0x1F442 <= code && code <= 0x1F443) || // So [2] EAR..NOSE
3677
- (0x1F446 <= code && code <= 0x1F450) || // So [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN
3678
- 0x1F46E == code || // So POLICE OFFICER
3679
- (0x1F470 <= code && code <= 0x1F478) || // So [9] BRIDE WITH VEIL..PRINCESS
3680
- 0x1F47C == code || // So BABY ANGEL
3681
- (0x1F481 <= code && code <= 0x1F483) || // So [3] INFORMATION DESK PERSON..DANCER
3682
- (0x1F485 <= code && code <= 0x1F487) || // So [3] NAIL POLISH..HAIRCUT
3683
- 0x1F4AA == code || // So FLEXED BICEPS
3684
- (0x1F574 <= code && code <= 0x1F575) || // So [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY
3685
- 0x1F57A == code || // So MAN DANCING
3686
- 0x1F590 == code || // So RAISED HAND WITH FINGERS SPLAYED
3687
- (0x1F595 <= code && code <= 0x1F596) || // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
3688
- (0x1F645 <= code && code <= 0x1F647) || // So [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY
3689
- (0x1F64B <= code && code <= 0x1F64F) || // So [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS
3690
- 0x1F6A3 == code || // So ROWBOAT
3691
- (0x1F6B4 <= code && code <= 0x1F6B6) || // So [3] BICYCLIST..PEDESTRIAN
3692
- 0x1F6C0 == code || // So BATH
3693
- 0x1F6CC == code || // So SLEEPING ACCOMMODATION
3694
- (0x1F918 <= code && code <= 0x1F91C) || // So [5] SIGN OF THE HORNS..RIGHT-FACING FIST
3695
- (0x1F91E <= code && code <= 0x1F91F) || // So [2] HAND WITH INDEX AND MIDDLE FINGERS CROSSED..I LOVE YOU HAND SIGN
3696
- 0x1F926 == code || // So FACE PALM
3697
- (0x1F930 <= code && code <= 0x1F939) || // So [10] PREGNANT WOMAN..JUGGLING
3698
- (0x1F93D <= code && code <= 0x1F93E) || // So [2] WATER POLO..HANDBALL
3699
- (0x1F9D1 <= code && code <= 0x1F9DD) // So [13] ADULT..ELF
3700
- ){
3701
- return E_Base;
3702
- }
3703
-
3704
- if(
3705
- (0x1F3FB <= code && code <= 0x1F3FF) // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
3706
- ){
3707
- return E_Modifier;
3708
- }
3709
-
3710
- if(
3711
- 0x200D == code // Cf ZERO WIDTH JOINER
3712
- ){
3713
- return ZWJ;
3714
- }
3715
-
3716
- if(
3717
- 0x2640 == code || // So FEMALE SIGN
3718
- 0x2642 == code || // So MALE SIGN
3719
- (0x2695 <= code && code <= 0x2696) || // So [2] STAFF OF AESCULAPIUS..SCALES
3720
- 0x2708 == code || // So AIRPLANE
3721
- 0x2764 == code || // So HEAVY BLACK HEART
3722
- 0x1F308 == code || // So RAINBOW
3723
- 0x1F33E == code || // So EAR OF RICE
3724
- 0x1F373 == code || // So COOKING
3725
- 0x1F393 == code || // So GRADUATION CAP
3726
- 0x1F3A4 == code || // So MICROPHONE
3727
- 0x1F3A8 == code || // So ARTIST PALETTE
3728
- 0x1F3EB == code || // So SCHOOL
3729
- 0x1F3ED == code || // So FACTORY
3730
- 0x1F48B == code || // So KISS MARK
3731
- (0x1F4BB <= code && code <= 0x1F4BC) || // So [2] PERSONAL COMPUTER..BRIEFCASE
3732
- 0x1F527 == code || // So WRENCH
3733
- 0x1F52C == code || // So MICROSCOPE
3734
- 0x1F5E8 == code || // So LEFT SPEECH BUBBLE
3735
- 0x1F680 == code || // So ROCKET
3736
- 0x1F692 == code // So FIRE ENGINE
3737
- ){
3738
- return Glue_After_Zwj;
3739
- }
3740
-
3741
- if(
3742
- (0x1F466 <= code && code <= 0x1F469) // So [4] BOY..WOMAN
3743
- ){
3744
- return E_Base_GAZ;
3745
- }
3746
-
3747
-
3748
- //all unlisted characters have a grapheme break property of "Other"
3749
- return Other;
3750
- }
3751
- return this;
3752
- }
3753
-
3754
- if (module.exports) {
3755
- module.exports = GraphemeSplitter;
3756
- }
3757
- });
3758
-
3759
- var version$1 = "4.0.16";
3760
-
3761
- /* eslint @typescript-eslint/explicit-module-boundary-types:0 */
3762
- const version = version$1;
3763
- // inner function, common for both external API's methods that does the job:
3764
- function strConvertIndexes(mode, str, indexes) {
3765
- function isItOk(something) {
3766
- if (!["string", "number"].includes(typeof something) ||
3767
- (typeof something === "string" && !/^\d*$/.test(something)) ||
3768
- (typeof something === "number" &&
3769
- (!Number.isInteger(something) || something < 0))) {
3770
- // we are not going to throw because it will be impossible to
3771
- // report where exactly is the culprit if we did it here
3772
- return false;
3773
- }
3774
- return true;
3775
- }
3776
- function oneNativeToUnicode(graphemeStrArr, idx) {
3777
- // we count what is the range of indexes current grapheme covers,
3778
- // then return if given index falls in-between
3779
- let currLowerIdx = 0;
3780
- let currUpperIdx = 0;
3781
- for (let i = 0, len = graphemeStrArr.length; i < len; i++) {
3782
- // to start, lower is the same
3783
- currUpperIdx += graphemeStrArr[i].length;
3784
- if (idx >= currLowerIdx && idx < currUpperIdx) {
3785
- return i;
3786
- }
3787
- // in the end, bump lower
3788
- currLowerIdx += graphemeStrArr[i].length;
3789
- }
3790
- // if end is reached, it's an error
3791
- throw new Error(`string-convert-indexes: [THROW_ID_05] the "indexes" value, ${indexes}, is not covered by graphemes length!`);
3792
- }
3793
- function oneUnicodeToNative(graphemeStrArr, idx) {
3794
- if (idx >= graphemeStrArr.length) {
3795
- throw new Error(`string-convert-indexes: [THROW_ID_06] the index to convert, ${idx}, is not covered by graphemes length!`);
3796
- }
3797
- return graphemeStrArr.slice(0, idx).join("").length;
3798
- }
3799
- //
3800
- // insurance
3801
- // ---------
3802
- if (typeof str !== "string" || !str) {
3803
- throw new TypeError(`string-convert-indexes: [THROW_ID_01] the first input argument, input string, must be a non-zero-length string! Currently it's: ${typeof str}, equal to:\n${str}`);
3804
- }
3805
- // ---------------------------------------------------------------------------
3806
- // Quick ending
3807
- if (indexes === 0) {
3808
- return 0;
3809
- }
3810
- if (indexes === "0") {
3811
- return "0";
3812
- }
3813
- // ---------------------------------------------------------------------------
3814
- const splitter = new graphemeSplitter();
3815
- const graphemeStrArr = splitter.splitGraphemes(str);
3816
- // easy - index will be the total count of all native JS index characters
3817
- // leading up to this
3818
- if (["string", "number"].includes(typeof indexes)) {
3819
- // no need for traversal
3820
- // validate
3821
- if (isItOk(indexes)) {
3822
- if (mode === "u") {
3823
- return typeof indexes === "string"
3824
- ? String(oneUnicodeToNative(graphemeStrArr, +indexes))
3825
- : oneUnicodeToNative(graphemeStrArr, +indexes);
3826
- }
3827
- return typeof indexes === "string"
3828
- ? String(oneNativeToUnicode(graphemeStrArr, +indexes))
3829
- : oneNativeToUnicode(graphemeStrArr, +indexes);
3830
- }
3831
- // else - error - messy string or number
3832
- throw new Error(`string-convert-indexes: [THROW_ID_02] the second input argument, "indexes" is not suitable to describe string index - it was given as ${JSON.stringify(indexes, null, 4)} (${typeof indexes})`);
3833
- }
3834
- else if (indexes && typeof indexes === "object") {
3835
- // if it's array or object, traverse
3836
- return mode === "u"
3837
- ? traverse(indexes, (key, val, innerObj) => {
3838
- const current = val !== undefined ? val : key;
3839
- if (["string", "number"].includes(typeof current)) {
3840
- // process it then
3841
- if (isItOk(current)) {
3842
- return typeof current === "string"
3843
- ? String(oneUnicodeToNative(graphemeStrArr, +current))
3844
- : oneUnicodeToNative(graphemeStrArr, +current);
3845
- }
3846
- throw new Error(`string-convert-indexes: [THROW_ID_03] bad value was encountered, ${JSON.stringify(current, null, 4)}, its path is ${innerObj.path}`);
3847
- }
3848
- // else - return as is
3849
- return current;
3850
- })
3851
- : traverse(indexes, (key, val, innerObj) => {
3852
- const current = val !== undefined ? val : key;
3853
- if (["string", "number"].includes(typeof current)) {
3854
- // process it then
3855
- if (isItOk(current)) {
3856
- return typeof current === "string"
3857
- ? String(oneNativeToUnicode(graphemeStrArr, +current))
3858
- : oneNativeToUnicode(graphemeStrArr, +current);
3859
- }
3860
- throw new Error(`string-convert-indexes: [THROW_ID_04] bad value was encountered, ${JSON.stringify(current, null, 4)}, its path is ${innerObj.path}`);
3861
- }
3862
- // else - return as is
3863
- return current;
3864
- });
3865
- }
3866
- else {
3867
- throw new Error(`string-convert-indexes: [THROW_ID_07] the first input argument, a source string should be a string but it was given as ${str}, type ${typeof str}`);
3868
- }
3869
- }
3870
- function nativeToUnicode(str, indexes) {
3871
- return strConvertIndexes("n", str, indexes);
3872
- }
3873
- function unicodeToNative(str, indexes) {
3874
- return strConvertIndexes("u", str, indexes);
3875
- }
3876
-
3877
- exports.nativeToUnicode = nativeToUnicode;
3878
- exports.unicodeToNative = unicodeToNative;
3879
- exports.version = version;
3880
-
3881
- Object.defineProperty(exports, '__esModule', { value: true });
3882
-
3883
- })));