diff options
Diffstat (limited to 'src')
45 files changed, 10214 insertions, 8042 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 1600311..36c2222 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -50,13 +50,7 @@ libonig_la_LDFLAGS = -version-info $(LTVERSION) EXTRA_DIST = koi8.c mktable.c \ unicode_fold_data.c unicode_property_data.c \ unicode_property_data_posix.c \ - unicode_egcb_data.c unicode_wb_data.c \ - make_unicode_egcb.sh make_unicode_egcb_data.py \ - make_unicode_wb.sh make_unicode_wb_data.py \ - make_unicode_fold.sh make_unicode_fold_data.py \ - make_unicode_property.sh make_unicode_property_data.py \ - make_property.sh \ - gperf_fold_key_conv.py gperf_unfold_key_conv.py + unicode_egcb_data.c unicode_wb_data.c dll: $(CXX) -shared -Wl,--output-def,libonig.def -o libonig.dll *.o \ diff --git a/src/Makefile.windows b/src/Makefile.windows index 1e87504..90ebf28 100644 --- a/src/Makefile.windows +++ b/src/Makefile.windows @@ -155,6 +155,10 @@ $(BUILD_DIR)/unicode_fold1_key.obj: $(ONIG_DIR)/unicode_fold1_key.c $(ONIG_DIR)/ $(BUILD_DIR)/unicode_fold2_key.obj: $(ONIG_DIR)/unicode_fold2_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h $(BUILD_DIR)/unicode_fold3_key.obj: $(ONIG_DIR)/unicode_fold3_key.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h +all-test: test_syntax test_regset test_utf8 testc testp testu + +test_syntax: $(TEST_DIR)/test_syntax.c $(libname) + $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_syntax.c $(libname) test_regset: $(TEST_DIR)/test_regset.c $(libname) $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern /utf-8 $(TEST_DIR)/test_regset.c $(libname) @@ -172,7 +176,7 @@ testu: $(TEST_DIR)/testu.c $(libname) $(CC) -nologo /Fe:$@ /I. /I$(ONIG_DIR) /DONIG_EXTERN=extern $(TEST_DIR)/testu.c $(libname) clean: - del $(BUILD_DIR)\*.obj $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.exp $(BUILD_DIR)\*.dll $(BUILD_DIR)\test_regset.exe $(BUILD_DIR)\test_utf8.exe $(BUILD_DIR)\testp.exe $(BUILD_DIR)\testc.exe $(BUILD_DIR)\testu.exe + del $(BUILD_DIR)\*.obj $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.exp $(BUILD_DIR)\*.dll $(BUILD_DIR)\test_regset.exe $(BUILD_DIR)\test_syntax.exe $(BUILD_DIR)\test_utf8.exe $(BUILD_DIR)\testp.exe $(BUILD_DIR)\testc.exe $(BUILD_DIR)\testu.exe samples: all diff --git a/src/euc_jp_prop.c b/src/euc_jp_prop.c index a816f48..cb884c4 100644 --- a/src/euc_jp_prop.c +++ b/src/euc_jp_prop.c @@ -31,8 +31,7 @@ #line 1 "euc_jp_prop.gperf" -#include <string.h> -#include "regenc.h" +#include "regint.h" #define TOTAL_KEYWORDS 16 #define MIN_WORD_LENGTH 4 @@ -89,50 +88,50 @@ onigenc_euc_jp_lookup_property_name (register const char *str, register size_t l static struct PropertyNameCtype wordlist[] = { {""}, {""}, {""}, {""}, -#line 23 "euc_jp_prop.gperf" +#line 22 "euc_jp_prop.gperf" {"Word", 12}, -#line 12 "euc_jp_prop.gperf" +#line 11 "euc_jp_prop.gperf" {"Alpha", 1}, {""}, {""}, -#line 26 "euc_jp_prop.gperf" +#line 25 "euc_jp_prop.gperf" {"Hiragana", 15}, {""}, -#line 24 "euc_jp_prop.gperf" +#line 23 "euc_jp_prop.gperf" {"Alnum", 13}, {""}, {""}, -#line 27 "euc_jp_prop.gperf" +#line 26 "euc_jp_prop.gperf" {"Katakana", 16}, {""}, -#line 25 "euc_jp_prop.gperf" +#line 24 "euc_jp_prop.gperf" {"ASCII", 14}, -#line 22 "euc_jp_prop.gperf" +#line 21 "euc_jp_prop.gperf" {"XDigit", 11}, {""}, {""}, {""}, -#line 14 "euc_jp_prop.gperf" +#line 13 "euc_jp_prop.gperf" {"Cntrl", 3}, {""}, {""}, -#line 13 "euc_jp_prop.gperf" +#line 12 "euc_jp_prop.gperf" {"Blank", 2}, {""}, -#line 19 "euc_jp_prop.gperf" +#line 18 "euc_jp_prop.gperf" {"Punct", 8}, {""}, {""}, {""}, {""}, -#line 18 "euc_jp_prop.gperf" +#line 17 "euc_jp_prop.gperf" {"Print", 7}, {""}, {""}, {""}, {""}, -#line 21 "euc_jp_prop.gperf" +#line 20 "euc_jp_prop.gperf" {"Upper", 10}, {""}, {""}, {""}, {""}, -#line 20 "euc_jp_prop.gperf" +#line 19 "euc_jp_prop.gperf" {"Space", 9}, {""}, {""}, {""}, {""}, -#line 17 "euc_jp_prop.gperf" +#line 16 "euc_jp_prop.gperf" {"Lower", 6}, {""}, {""}, {""}, {""}, -#line 16 "euc_jp_prop.gperf" +#line 15 "euc_jp_prop.gperf" {"Graph", 5}, {""}, {""}, {""}, {""}, -#line 15 "euc_jp_prop.gperf" +#line 14 "euc_jp_prop.gperf" {"Digit", 4} }; diff --git a/src/euc_jp_prop.gperf b/src/euc_jp_prop.gperf index 2cec8cf..842b61b 100644 --- a/src/euc_jp_prop.gperf +++ b/src/euc_jp_prop.gperf @@ -1,6 +1,5 @@ %{ -#include <string.h> -#include "regenc.h" +#include "regint.h" %} struct PropertyNameCtype { diff --git a/src/gb18030.c b/src/gb18030.c index 50898eb..1385a7f 100644 --- a/src/gb18030.c +++ b/src/gb18030.c @@ -2,7 +2,7 @@ gb18030.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2005-2019 KUBO Takehiro <kubo AT jiubao DOT org> + * Copyright (c) 2005-2020 KUBO Takehiro <kubo AT jiubao DOT org> * K.Kosako * All rights reserved. * @@ -31,10 +31,20 @@ #include "regenc.h" #if 1 + #define DEBUG_GB18030(arg) + #else -#include <stdio.h> + +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif + +/* for printf() */ +#include "regint.h" + #define DEBUG_GB18030(arg) printf arg + #endif enum { diff --git a/src/iso8859_1.c b/src/iso8859_1.c index e681c2a..d75509e 100644 --- a/src/iso8859_1.c +++ b/src/iso8859_1.c @@ -29,6 +29,9 @@ #include "regenc.h" +#define LARGE_S 0x53 +#define SMALL_S 0x73 + #define ENC_IS_ISO_8859_1_CTYPE(code,ctype) \ ((EncISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) @@ -115,33 +118,48 @@ get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { + static OnigUChar sa[] = { LARGE_S, SMALL_S }; + int i, j, n; + if (0x41 <= *p && *p <= 0x5a) { + if (*p == LARGE_S && end > p + 1 + && (*(p+1) == LARGE_S || *(p+1) == SMALL_S)) { /* SS */ + ss_combination: + items[0].byte_len = 2; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )0xdf; + + n = 1; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (sa[i] == *p && sa[j] == *(p+1)) + continue; + + items[n].byte_len = 2; + items[n].code_len = 2; + items[n].code[0] = (OnigCodePoint )sa[i]; + items[n].code[1] = (OnigCodePoint )sa[j]; + n++; + } + } + return 4; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); - if (*p == 0x53 && end > p + 1 - && (*(p+1) == 0x53 || *(p+1) == 0x73)) { /* SS */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } else if (0x61 <= *p && *p <= 0x7a) { + if (*p == SMALL_S && end > p + 1 + && (*(p+1) == SMALL_S || *(p+1) == LARGE_S)) { /* ss */ + goto ss_combination; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); - if (*p == 0x73 && end > p + 1 - && (*(p+1) == 0x73 || *(p+1) == 0x53)) { /* ss */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } else if (0xc0 <= *p && *p <= 0xcf) { items[0].byte_len = 1; diff --git a/src/make_property.sh b/src/make_property.sh index cef0a96..e5f1244 100755 --- a/src/make_property.sh +++ b/src/make_property.sh @@ -1,6 +1,7 @@ #!/bin/sh GPERF=gperf +SED=gsed TMP1=gperf1.tmp TMP2=gperf2.tmp @@ -10,10 +11,10 @@ GPERF_OPT='-pt -T -L ANSI-C' ADD_CAST='s/return +len +\+ +asso_values/return (unsigned int )len + asso_values/' ${GPERF} ${GPERF_OPT} -N onigenc_euc_jp_lookup_property_name --output-file ${TMP1} euc_jp_prop.gperf -cat ${TMP1} | sed -r "${ADD_CAST}" > euc_jp_prop.c +cat ${TMP1} | ${SED} -r "${ADD_CAST}" > euc_jp_prop.c ${GPERF} ${GPERF_OPT} -N onigenc_sjis_lookup_property_name --output-file ${TMP2} sjis_prop.gperf -cat ${TMP2} | sed -r "${ADD_CAST}" > sjis_prop.c +cat ${TMP2} | ${SED} -r "${ADD_CAST}" > sjis_prop.c rm -f ${TMP1} ${TMP2} diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py index 9c71796..e2982df 100755 --- a/src/make_unicode_egcb_data.py +++ b/src/make_unicode_egcb_data.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # make_unicode_egcb_data.py -# Copyright (c) 2017-2019 K.Kosako +# Copyright (c) 2017-2020 K.Kosako import sys import re @@ -195,7 +195,7 @@ PROPS = sorted(PROPS) print '/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */' COPYRIGHT = ''' /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py index 55d5b88..0e6c635 100755 --- a/src/make_unicode_fold_data.py +++ b/src/make_unicode_fold_data.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # make_unicode_fold_data.py -# Copyright (c) 2016-2019 K.Kosako +# Copyright (c) 2016-2020 K.Kosako import sys import re @@ -28,6 +28,35 @@ UNFOLDS = {} TURKISH_UNFOLDS = {} LOCALE_UNFOLDS = {} +COPYRIGHT = ''' +/*- + * Copyright (c) 2017-2020 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +'''.strip() + + class Entry: def __init__(self, fold): self.fold = fold @@ -55,6 +84,11 @@ def form3bytes(x): x2 = (x>>16) & 0xff return "\\x%02x\\x%02x\\x%02x" % (x2, x1, x0) +def enc_len(code, encode): + u = unichr(code) + s = u.encode(encode) + return len(s) + def check_version_info(s): m = VERSION_REG.match(s) if m is not None: @@ -231,6 +265,8 @@ def output_macros(f, name): def output_fold_source(f, out_comment): print >> f, "/* This file was generated by make_unicode_fold_data.py. */" + print >> f, COPYRIGHT + print >> f, "\n" print >> f, '#include "regenc.h"' print >> f, '' if VERSION_INFO[0] < 0: @@ -244,42 +280,11 @@ def output_fold_source(f, out_comment): output_fold_data(f, DataName, out_comment) -HEAD = ''' -%{ -/* This gperf source file was generated by make_unicode_fold_data.py */ +def output_gperf_unfold_key(f): + head = "%{\n/* This gperf source file was generated by make_unicode_fold_data.py */\n\n" + COPYRIGHT + """\ -/*- - * Copyright (c) 2017-2019 K.Kosako - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include <string.h> -#include "regenc.h" +#include "regint.h" %} -'''.strip() - -def output_gperf_unfold_key(f): - head = HEAD + """\ struct ByUnfoldKey { OnigCodePoint code; @@ -299,7 +304,10 @@ struct ByUnfoldKey { print >> f, '%%' def output_gperf_fold_key(f, key_len): - head = HEAD + """\ + head = "%{\n/* This gperf source file was generated by make_unicode_fold_data.py */\n\n" + COPYRIGHT + """\ + +#include "regint.h" +%} short int %% @@ -324,6 +332,138 @@ def output_gperf_source(): with open(GPERF_FOLD_KEY_FILES[i-1], 'w') as f: output_gperf_fold_key(f, i) +def unfolds_byte_length_check(encode): + l = UNFOLDS.items() + sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index)) + for unfold, e in sl: + key_len = enc_len(unfold, encode) + fold_len = sum(map(lambda c: enc_len(c, encode), e.fold)) + if key_len > fold_len: + sfolds = ' '.join(map(lambda c: "0x%06x" % c, e.fold)) + s = "%s byte length: %d > %d: 0x%06x => %s" % (encode, key_len, fold_len, unfold, sfolds) + print >> sys.stderr, s + +def double_fold_check(): + l = UNFOLDS.items() + sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index)) + for unfold, e in sl: + for f in e.fold: + #print >> sys.stderr, ("check 0x%06x" % f) + e2 = UNFOLDS.get(f) + if e2 is not None: + s = "double folds: 0x%06x => %s, 0x%06x => %s" % (unfold, e.fold, f, e2.fold) + print >> sys.stderr, s + +def unfold_is_multi_code_folds_head_check(): + l = UNFOLDS.items() + l2 = filter(lambda (k,e):e.fold_len == 2, l) + l3 = filter(lambda (k,e):e.fold_len == 3, l) + sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index)) + for unfold, _ in sl: + for k, e in l2: + if e.fold[0] == unfold: + s = "unfold 0x%06x is multi-code fold head in %s" % (unfold, e.fold) + print >> sys.stderr, s + for k, e in l3: + if e.fold[0] == unfold: + s = "unfold 0x%06x is multi-code fold head in %s" % (unfold, e.fold) + print >> sys.stderr, s + +def make_one_folds(l): + h = {} + for unfold, e in l: + if e.fold_len != 1: + continue + fold = e.fold[0] + unfolds = h.get(fold) + if unfolds is None: + unfolds = [unfold] + h[fold] = unfolds + else: + unfolds.append(unfold) + + return h + +def make_foldn_heads(l, fold_len, one_folds): + h = {} + for unfold, e in l: + if e.fold_len != fold_len: + continue + unfolds = one_folds.get(e.fold[0]) + h[e.fold[0]] = (e, unfolds) + + return h + +def fold2_expansion_num(e, one_folds): + n = len(e.unfolds) + n0 = 1 + u0 = one_folds.get(e.fold[0]) + if u0 is not None: + n0 += len(u0) + n1 = 1 + u1 = one_folds.get(e.fold[1]) + if u1 is not None: + n1 += len(u1) + n += (n0 * n1) + return n + +def fold3_expansion_num(e, one_folds): + n = len(e.unfolds) + n0 = 1 + u0 = one_folds.get(e.fold[0]) + if u0 is not None: + n0 += len(u0) + n1 = 1 + u1 = one_folds.get(e.fold[1]) + if u1 is not None: + n1 += len(u1) + n2 = 1 + u2 = one_folds.get(e.fold[2]) + if u2 is not None: + n2 += len(u2) + n += (n0 * n1 * n2) + return n + +def get_all_folds_expansion_num(x, one_folds, fold2_heads, fold3_heads): + e = UNFOLDS[x] + n = 0 + if e.fold_len == 1: + n1 = len(e.unfolds) + 1 # +1: fold + fx = e.fold[0] + r = fold2_heads.get(fx) + n2 = n3 = 0 + if r is not None: + e2, _ = r + n2 = fold2_expansion_num(e2, one_folds) + r = fold3_heads.get(fx) + if r is not None: + e3, _ = r + n3 = fold3_expansion_num(e3, one_folds) + n = max(n1, n2, n3) + elif e.fold_len == 2: + n = fold2_expansion_num(e, one_folds) + elif e.fold_len == 3: + n = fold3_expansion_num(e, one_folds) + else: + raise RuntimeError("Invalid fold_len %d" % (e.fold_len)) + + return n + +def get_all_folds_expansion_max_num(): + l = UNFOLDS.items() + one_folds = make_one_folds(l) + fold2_heads = make_foldn_heads(l, 2, one_folds) + fold3_heads = make_foldn_heads(l, 3, one_folds) + sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index)) + nmax = 0 + max_unfold = None + for unfold, e in sl: + n = get_all_folds_expansion_num(unfold, one_folds, fold2_heads, fold3_heads) + if nmax < n: + nmax = n + max_unfold = unfold + + return (nmax, max_unfold) ## main ## with open(SOURCE_FILE, 'r') as f: @@ -335,3 +475,12 @@ out_comment = True output_fold_source(sys.stdout, out_comment) output_gperf_source() + +#unfolds_byte_length_check('utf-8') +#unfolds_byte_length_check('utf-16') +double_fold_check() +unfold_is_multi_code_folds_head_check() + +#max_num, max_code = get_all_folds_expansion_max_num() +#max_num -= 1 # remove self +#print >> sys.stderr, "max expansion: 0x%06x: %d" % (max_code, max_num) diff --git a/src/make_unicode_property.sh b/src/make_unicode_property.sh index 51c8951..5129376 100755 --- a/src/make_unicode_property.sh +++ b/src/make_unicode_property.sh @@ -1,6 +1,7 @@ #!/bin/sh GPERF=gperf +SED=gsed NAME=unicode_property_data TMP1=gperf1.tmp @@ -16,10 +17,10 @@ ADD_CAST='s/unsigned +int +hval *= *len/unsigned int hval = (unsigned int )len/' ./make_unicode_property_data.py -posix > ${NAME}_posix.gperf ${GPERF} ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP1} ${NAME}.gperf -cat ${TMP1} | sed -e 's/^#line.*$//g' | sed -r "${POOL_CAST}" | sed -r "${ADD_STATIC}" | sed -r "${ADD_CAST}" > ${NAME}.c +cat ${TMP1} | ${SED} -e 's/^#line.*$//g' | ${SED} -r "${POOL_CAST}" | ${SED} -r "${ADD_STATIC}" | ${SED} -r "${ADD_CAST}" > ${NAME}.c ${GPERF} ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP2} ${NAME}_posix.gperf -cat ${TMP2} | sed -e 's/^#line.*$//g' | sed -r "${POOL_CAST}" | sed -r "${ADD_STATIC}" > ${NAME}_posix.c +cat ${TMP2} | ${SED} -e 's/^#line.*$//g' | ${SED} -r "${POOL_CAST}" | ${SED} -r "${ADD_STATIC}" > ${NAME}_posix.c rm -f ${NAME}.gperf ${NAME}_posix.gperf ${TMP1} ${TMP2} diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py index 9776628..285c462 100755 --- a/src/make_unicode_property_data.py +++ b/src/make_unicode_property_data.py @@ -418,10 +418,39 @@ def parse_and_merge_properties(path, klass, prop_prefix = None, version_reg = No merge_props(PROPS, props) return dic, props, ver_m + ### main ### argv = sys.argv argc = len(argv) +COPYRIGHT = ''' +/*- + * Copyright (c) 2016-2020 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +'''.strip() + POSIX_ONLY = False INCLUDE_GRAPHEME_CLUSTER_DATA = False @@ -485,10 +514,14 @@ if INCLUDE_GRAPHEME_CLUSTER_DATA: add_posix_props(DIC) PROPS = sorted(PROPS) + s = '''%{ /* Generated by make_unicode_property_data.py. */ ''' print s +print COPYRIGHT +print '' + for prop in POSIX_LIST: print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop) diff --git a/src/make_unicode_wb_data.py b/src/make_unicode_wb_data.py index ddedd5d..fb0bf50 100755 --- a/src/make_unicode_wb_data.py +++ b/src/make_unicode_wb_data.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # make_unicode_wb_data.py -# Copyright (c) 2019 K.Kosako +# Copyright (c) 2019-2020 K.Kosako import sys import re @@ -195,7 +195,7 @@ PROPS = sorted(PROPS) print '/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */' COPYRIGHT = ''' /*- - * Copyright (c) 2019 K.Kosako + * Copyright (c) 2019-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mktable.c b/src/mktable.c index 318bac0..5f36ee3 100644 --- a/src/mktable.c +++ b/src/mktable.c @@ -1102,7 +1102,7 @@ static int IsAscii(int enc ARG_UNUSED, int c) static int IsNewline(int enc ARG_UNUSED, int c) { - if (c == 0x0a) return 1; + if (c == NEWLINE_CODE) return 1; return 0; } diff --git a/src/onigposix.h b/src/onigposix.h index 5ff779f..37e09ea 100644 --- a/src/onigposix.h +++ b/src/onigposix.h @@ -4,7 +4,7 @@ onigposix.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,7 +28,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include <stdlib.h> +#ifndef ONIG_NO_STANDARD_C_HEADERS +#include <stddef.h> +#endif #ifdef __cplusplus extern "C" { diff --git a/src/oniguruma.h b/src/oniguruma.h index 08ac6f7..15f6ef0 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -4,7 +4,7 @@ oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,9 +36,9 @@ extern "C" { #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 6 #define ONIGURUMA_VERSION_MINOR 9 -#define ONIGURUMA_VERSION_TEENY 4 +#define ONIGURUMA_VERSION_TEENY 5 -#define ONIGURUMA_VERSION_INT 60904 +#define ONIGURUMA_VERSION_INT 60905 #ifndef P_ #if defined(__STDC__) || defined(_WIN32) @@ -70,6 +70,10 @@ extern "C" { #define ONIG_EXTERN extern #endif +#ifndef ONIG_VARIADIC_FUNC_ATTR +#define ONIG_VARIADIC_FUNC_ATTR +#endif + /* PART: character encoding */ #ifndef ONIG_ESCAPE_UCHAR_COLLISION @@ -515,6 +519,8 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ #define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?<x>)(?<x>) */ #define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ +#define ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH (1U<<10) /* ..(?i)...|... */ +#define ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND (1U<<11) /* (?<=a+|..) */ /* syntax (behavior) in char class [...] */ #define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ @@ -554,6 +560,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIGERR_MATCH_STACK_LIMIT_OVER -15 #define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 #define ONIGERR_RETRY_LIMIT_IN_MATCH_OVER -17 +#define ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER -18 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 #define ONIGERR_FAIL_TO_INITIALIZE -23 @@ -777,7 +784,7 @@ int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings)); ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN -int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); +int ONIG_VARIADIC_FUNC_ATTR onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); ONIG_EXTERN int onig_is_error_code_needs_param PV_((int code)); ONIG_EXTERN @@ -902,12 +909,20 @@ unsigned long onig_get_retry_limit_in_match P_((void)); ONIG_EXTERN int onig_set_retry_limit_in_match P_((unsigned long n)); ONIG_EXTERN +unsigned long onig_get_retry_limit_in_search P_((void)); +ONIG_EXTERN +int onig_set_retry_limit_in_search P_((unsigned long n)); +ONIG_EXTERN unsigned int onig_get_parse_depth_limit P_((void)); ONIG_EXTERN int onig_set_capture_num_limit P_((int num)); ONIG_EXTERN int onig_set_parse_depth_limit P_((unsigned int depth)); ONIG_EXTERN +int onig_get_subexp_call_max_nest_level P_((void)); +ONIG_EXTERN +int onig_set_subexp_call_max_nest_level P_((int level)); +ONIG_EXTERN int onig_unicode_define_user_property P_((const char* name, OnigCodePoint* ranges)); ONIG_EXTERN int onig_end P_((void)); @@ -930,6 +945,8 @@ int onig_set_match_stack_limit_size_of_match_param P_((OnigMatchParam* param, un ONIG_EXTERN int onig_set_retry_limit_in_match_of_match_param P_((OnigMatchParam* param, unsigned long limit)); ONIG_EXTERN +int onig_set_retry_limit_in_search_of_match_param P_((OnigMatchParam* param, unsigned long limit)); +ONIG_EXTERN int onig_set_progress_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f)); ONIG_EXTERN int onig_set_retraction_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f)); diff --git a/src/regcomp.c b/src/regcomp.c index 69d4b95..4d5b78f 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -2,7 +2,7 @@ regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,8 +31,21 @@ #define OPS_INIT_SIZE 8 +typedef struct { + OnigLen min; + OnigLen max; +} MinMaxLen; + +typedef struct { + OnigLen min; + OnigLen max; + int min_is_sure; +} MinMaxCharLen; + OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; +static OnigLen node_min_byte_len(Node* node, ScanEnv* env); + #if 0 typedef struct { int n; @@ -99,7 +112,7 @@ int_stack_pop(int_stack* s) #ifdef ONIG_DEBUG if (s->n <= 0) { - fprintf(stderr, "int_stack_pop: fail empty. %p\n", s); + fprintf(DBGFP, "int_stack_pop: fail empty. %p\n", s); return 0; } #endif @@ -228,13 +241,13 @@ ops_free(regex_t* reg) if (! is_in_string_pool(reg, op->exact_len_n.s)) xfree(op->exact_len_n.s); break; - case OP_STR_N: case OP_STR_MB2N: case OP_STR_MB3N: case OP_STR_N_IC: + case OP_STR_N: case OP_STR_MB2N: case OP_STR_MB3N: if (! is_in_string_pool(reg, op->exact_n.s)) xfree(op->exact_n.s); break; case OP_STR_1: case OP_STR_2: case OP_STR_3: case OP_STR_4: case OP_STR_5: case OP_STR_MB2N1: case OP_STR_MB2N2: - case OP_STR_MB2N3: case OP_STR_1_IC: + case OP_STR_MB2N3: break; case OP_CCLASS_NOT: case OP_CCLASS: @@ -302,9 +315,6 @@ ops_calc_size_of_string_pool(regex_t* reg) total += op->exact_len_n.len * op->exact_len_n.n; break; case OP_STR_N: - case OP_STR_N_IC: - total += op->exact_n.n; - break; case OP_STR_MB2N: total += op->exact_n.n * 2; break; @@ -357,7 +367,6 @@ ops_make_string_pool(regex_t* reg) curr += len; break; case OP_STR_N: - case OP_STR_N_IC: len = op->exact_n.n; copy: xmemcpy(curr, op->exact_n.s, len); @@ -398,12 +407,12 @@ onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) } static int -int_multiply_cmp(int x, int y, int v) +len_multiply_cmp(OnigLen x, int y, OnigLen v) { if (x == 0 || y == 0) return -1; - if (x < INT_MAX / y) { - int xy = x * y; + if (x < INFINITE_LEN / y) { + OnigLen xy = x * (OnigLen )y; if (xy > v) return 1; else { if (xy == v) return 0; @@ -411,7 +420,7 @@ int_multiply_cmp(int x, int y, int v) } } else - return 1; + return v == INFINITE_LEN ? 0 : 1; } extern int @@ -419,7 +428,7 @@ onig_positive_int_multiply(int x, int y) { if (x == 0 || y == 0) return 0; - if (x < INT_MAX / y) + if (x < ONIG_INT_MAX / y) return x * y; else return -1; @@ -489,42 +498,29 @@ node_str_node_cat(Node* node, Node* add) { int r; - if (STR_(node)->flag != STR_(add)->flag) + if (NODE_STATUS(node) != NODE_STATUS(add)) return ONIGERR_TYPE_BUG; - r = onig_node_str_cat(node, STR_(add)->s, STR_(add)->end); - if (r != 0) return r; - - if (NODE_STRING_IS_CASE_FOLD_MATCH(node)) - STR_(node)->case_min_len += STR_(add)->case_min_len; - - return 0; -} - -static int -node_str_cat_case_fold(Node* node, const UChar* s, const UChar* end, int case_min_len) -{ - int r; - - if (! NODE_STRING_IS_CASE_FOLD_MATCH(node)) + if (STR_(node)->flag != STR_(add)->flag) return ONIGERR_TYPE_BUG; - r = onig_node_str_cat(node, s, end); + r = onig_node_str_cat(node, STR_(add)->s, STR_(add)->end); if (r != 0) return r; - STR_(node)->case_min_len += case_min_len; return 0; } static void -node_conv_to_str_node(Node* node, int flag) +node_conv_to_str_node(Node* node, Node* ref_node) { + xmemset(node, 0, sizeof(*node)); NODE_SET_TYPE(node, NODE_STRING); - STR_(node)->flag = flag; + NODE_STATUS(node) = NODE_STATUS(ref_node); + + STR_(node)->flag = STR_(ref_node)->flag; STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; STR_(node)->capacity = 0; - STR_(node)->case_min_len = 0; } static OnigLen @@ -554,7 +550,7 @@ bitset_is_empty(BitSetRef bs) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { if (bs[i] != 0) return 0; } return 1; @@ -602,6 +598,351 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) } #endif /* USE_CALL */ +enum CharLenReturnType { + CHAR_LEN_NORMAL = 0, /* fixed or variable */ + CHAR_LEN_TOP_ALT_FIXED = 1 +}; + +static int +mmcl_fixed(MinMaxCharLen* c) +{ + return (c->min == c->max && c->min != INFINITE_LEN); +} + +static void +mmcl_set(MinMaxCharLen* l, OnigLen len) +{ + l->min = len; + l->max = len; + l->min_is_sure = TRUE; +} + +static void +mmcl_set_min_max(MinMaxCharLen* l, OnigLen min, OnigLen max, int min_is_sure) +{ + l->min = min; + l->max = max; + l->min_is_sure = min_is_sure; +} + +static void +mmcl_add(MinMaxCharLen* to, MinMaxCharLen* add) +{ + to->min = distance_add(to->min, add->min); + to->max = distance_add(to->max, add->max); + + to->min_is_sure = add->min_is_sure != 0 && to->min_is_sure != 0; +} + +static void +mmcl_multiply(MinMaxCharLen* to, int m) +{ + to->min = distance_multiply(to->min, m); + to->max = distance_multiply(to->max, m); +} + +static void +mmcl_repeat_range_multiply(MinMaxCharLen* to, int mlow, int mhigh) +{ + to->min = distance_multiply(to->min, mlow); + + if (IS_INFINITE_REPEAT(mhigh)) + to->max = INFINITE_LEN; + else + to->max = distance_multiply(to->max, mhigh); +} + +static void +mmcl_alt_merge(MinMaxCharLen* to, MinMaxCharLen* alt) +{ + if (to->min > alt->min) { + to->min = alt->min; + if (alt->min_is_sure != 0) + to->min_is_sure = TRUE; + } + + if (to->max < alt->max) to->max = alt->max; +} + +static int +mml_is_equal(MinMaxLen* a, MinMaxLen* b) +{ + return a->min == b->min && a->max == b->max; +} + +static void +mml_set_min_max(MinMaxLen* l, OnigLen min, OnigLen max) +{ + l->min = min; + l->max = max; +} + +static void +mml_clear(MinMaxLen* l) +{ + l->min = l->max = 0; +} + +static void +mml_copy(MinMaxLen* to, MinMaxLen* from) +{ + to->min = from->min; + to->max = from->max; +} + +static void +mml_add(MinMaxLen* to, MinMaxLen* add) +{ + to->min = distance_add(to->min, add->min); + to->max = distance_add(to->max, add->max); +} + +static void +mml_alt_merge(MinMaxLen* to, MinMaxLen* alt) +{ + if (to->min > alt->min) to->min = alt->min; + if (to->max < alt->max) to->max = alt->max; +} + +/* fixed size pattern node only */ +static int +node_char_len1(Node* node, regex_t* reg, MinMaxCharLen* ci, ScanEnv* env, + int level) +{ + MinMaxCharLen tci; + int r = CHAR_LEN_NORMAL; + + level++; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + { + int first = TRUE; + do { + r = node_char_len1(NODE_CAR(node), reg, &tci, env, level); + if (r < 0) break; + if (first == TRUE) { + *ci = tci; + first = FALSE; + } + else + mmcl_add(ci, &tci); + } while (IS_NOT_NULL(node = NODE_CDR(node))); + } + break; + + case NODE_ALT: + { + int fixed; + + r = node_char_len1(NODE_CAR(node), reg, ci, env, level); + if (r < 0) break; + + fixed = TRUE; + while (IS_NOT_NULL(node = NODE_CDR(node))) { + r = node_char_len1(NODE_CAR(node), reg, &tci, env, level); + if (r < 0) break; + if (! mmcl_fixed(&tci)) + fixed = FALSE; + mmcl_alt_merge(ci, &tci); + } + if (r < 0) break; + + r = CHAR_LEN_NORMAL; + if (mmcl_fixed(ci)) break; + + if (fixed == TRUE && level == 1) { + r = CHAR_LEN_TOP_ALT_FIXED; + } + } + break; + + case NODE_STRING: + { + OnigLen clen; + StrNode* sn = STR_(node); + UChar *s = sn->s; + + if (NODE_IS_IGNORECASE(node) && ! NODE_STRING_IS_CRUDE(node)) { + /* Such a case is possible. + ex. /(?i)(?<=\1)(a)/ + Backref node refer to capture group, but it doesn't tune yet. + */ + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + break; + } + + clen = 0; + while (s < sn->end) { + s += enclen(reg->enc, s); + clen = distance_add(clen, 1); + } + mmcl_set(ci, clen); + } + break; + + case NODE_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (qn->lower == qn->upper) { + if (qn->upper == 0) { + mmcl_set(ci, 0); + } + else { + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + if (r < 0) break; + mmcl_multiply(ci, qn->lower); + } + } + else { + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + if (r < 0) break; + mmcl_repeat_range_multiply(ci, qn->lower, qn->upper); + } + } + break; + +#ifdef USE_CALL + case NODE_CALL: + if (NODE_IS_RECURSION(node)) + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + else + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + break; +#endif + + case NODE_CTYPE: + case NODE_CCLASS: + mmcl_set(ci, 1); + break; + + case NODE_BAG: + { + BagNode* en = BAG_(node); + + switch (en->type) { + case BAG_MEMORY: + if (NODE_IS_FIXED_CLEN(node)) { + mmcl_set_min_max(ci, en->min_char_len, en->max_char_len, + NODE_IS_FIXED_CLEN_MIN_SURE(node)); + } + else { + if (NODE_IS_MARK1(node)) { + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + } + else { + NODE_STATUS_ADD(node, MARK1); + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + NODE_STATUS_REMOVE(node, MARK1); + if (r < 0) break; + + en->min_char_len = ci->min; + en->max_char_len = ci->max; + NODE_STATUS_ADD(node, FIXED_CLEN); + if (ci->min_is_sure != 0) + NODE_STATUS_ADD(node, FIXED_CLEN_MIN_SURE); + } + } + /* can't optimize look-behind if capture exists. */ + ci->min_is_sure = FALSE; + break; + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + break; + case BAG_IF_ELSE: + { + MinMaxCharLen eci; + + r = node_char_len1(NODE_BODY(node), reg, ci, env, level); + if (r < 0) break; + + if (IS_NOT_NULL(en->te.Then)) { + r = node_char_len1(en->te.Then, reg, &tci, env, level); + if (r < 0) break; + mmcl_add(ci, &tci); + } + + if (IS_NOT_NULL(en->te.Else)) { + r = node_char_len1(en->te.Else, reg, &eci, env, level); + if (r < 0) break; + } + else { + mmcl_set(&eci, 0); + } + + mmcl_alt_merge(ci, &eci); + } + break; + default: /* never come here */ + r = ONIGERR_PARSER_BUG; + break; + } + } + break; + + case NODE_ANCHOR: + mmcl_set(ci, 0); + /* can't optimize look-behind if anchor exists. */ + ci->min_is_sure = FALSE; + break; + + case NODE_GIMMICK: + zero: + mmcl_set(ci, 0); + break; + + case NODE_BACKREF: + if (NODE_IS_CHECKER(node)) + goto zero; + + if (NODE_IS_RECURSION(node)) { +#ifdef USE_BACKREF_WITH_LEVEL + if (NODE_IS_NEST_LEVEL(node)) { + mmcl_set_min_max(ci, 0, INFINITE_LEN, FALSE); + break; + } +#endif + + mmcl_set_min_max(ci, 0, 0, FALSE); + break; + } + + { + int i; + int* backs; + MemEnv* mem_env = SCANENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + + backs = BACKREFS_P(br); + r = node_char_len1(mem_env[backs[0]].mem_node, reg, ci, env, level); + if (r < 0) break; + if (! mmcl_fixed(ci)) ci->min_is_sure = FALSE; + + for (i = 1; i < br->back_num; i++) { + r = node_char_len1(mem_env[backs[i]].mem_node, reg, &tci, env, level); + if (r < 0) break; + if (! mmcl_fixed(&tci)) tci.min_is_sure = FALSE; + mmcl_alt_merge(ci, &tci); + } + } + break; + + default: /* never come here */ + r = ONIGERR_PARSER_BUG; + break; + } + + return r; +} + +static int +node_char_len(Node* node, regex_t* reg, MinMaxCharLen* ci, ScanEnv* env) +{ + return node_char_len1(node, reg, ci, env, 0); +} + static int add_op(regex_t* reg, int opcode) @@ -626,7 +967,7 @@ static int compile_tree(Node* node, regex_t* reg, ScanEnv* env); #define IS_NEED_STR_LEN_OP(op) \ ((op) == OP_STR_N || (op) == OP_STR_MB2N ||\ - (op) == OP_STR_MB3N || (op) == OP_STR_MBN || (op) == OP_STR_N_IC) + (op) == OP_STR_MB3N || (op) == OP_STR_MBN) static int select_str_opcode(int mb_len, int str_len) @@ -711,16 +1052,16 @@ compile_quant_body_with_empty_check(QuantNode* qn, regex_t* reg, ScanEnv* env) if (r != 0) return r; if (emptiness != BODY_IS_NOT_EMPTY) { - if (emptiness == BODY_IS_EMPTY_POSSIBILITY) + if (emptiness == BODY_MAY_BE_EMPTY) r = add_op(reg, OP_EMPTY_CHECK_END); - else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_MEM) { + else if (emptiness == BODY_MAY_BE_EMPTY_MEM) { if (NODE_IS_EMPTY_STATUS_CHECK(qn) != 0) r = add_op(reg, OP_EMPTY_CHECK_END_MEMST); else r = add_op(reg, OP_EMPTY_CHECK_END); } #ifdef USE_CALL - else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_REC) + else if (emptiness == BODY_MAY_BE_EMPTY_REC) r = add_op(reg, OP_EMPTY_CHECK_END_MEMST_PUSH); #endif @@ -794,12 +1135,7 @@ add_compile_string(UChar* s, int mb_len, int str_len, regex_t* reg) else if (IS_NEED_STR_LEN_OP(op)) { p = onigenc_strdup(reg->enc, s, end); CHECK_NULL_RETURN_MEMERR(p); - - if (op == OP_STR_N_IC) - COP(reg)->exact_n.n = byte_len; - else - COP(reg)->exact_n.n = str_len; - + COP(reg)->exact_n.n = str_len; COP(reg)->exact_n.s = p; } else { @@ -822,8 +1158,6 @@ compile_length_string_node(Node* node, regex_t* reg) if (sn->end <= sn->s) return 0; - if (NODE_STRING_IS_CASE_FOLD_MATCH(node) != 0) return 1; - p = prev = sn->s; prev_len = enclen(enc, p); p += prev_len; @@ -861,40 +1195,6 @@ compile_length_string_crude_node(StrNode* sn, regex_t* reg) } static int -compile_ambig_string_node(Node* node, regex_t* reg) -{ - int r; - int len; - int byte_len; - UChar* p; - StrNode* sn; - OnigEncoding enc = reg->enc; - - sn = STR_(node); - len = enclen(enc, sn->s); - byte_len = (int )(sn->end - sn->s); - if (len == byte_len) { - r = add_op(reg, OP_STR_1_IC); - if (r != 0) return r; - - xmemset(COP(reg)->exact.s, 0, sizeof(COP(reg)->exact.s)); - xmemcpy(COP(reg)->exact.s, sn->s, (size_t )byte_len); - } - else { - r = add_op(reg, OP_STR_N_IC); - if (r != 0) return r; - - p = onigenc_strdup(enc, sn->s, sn->end); - CHECK_NULL_RETURN_MEMERR(p); - - COP(reg)->exact_n.s = p; - COP(reg)->exact_n.n = byte_len; - } - - return 0; -} - -static int compile_string_node(Node* node, regex_t* reg) { int r, len, prev_len, slen; @@ -907,9 +1207,6 @@ compile_string_node(Node* node, regex_t* reg) return 0; end = sn->end; - if (NODE_STRING_IS_CASE_FOLD_MATCH(node) != 0) { - return compile_ambig_string_node(node, reg); - } p = prev = sn->s; prev_len = enclen(enc, p); @@ -1103,7 +1400,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) /* anychar repeat */ if (is_anychar_infinite_greedy(qn)) { if (qn->lower <= 1 || - int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0) { + len_multiply_cmp((OnigLen )tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0) { if (IS_NOT_NULL(qn->next_head_exact)) return OPSIZE_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; else @@ -1117,7 +1414,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) if (infinite && (qn->lower <= 1 || - int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + len_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { len = OPSIZE_JUMP; } @@ -1148,7 +1445,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) } else if (!infinite && qn->greedy && (qn->upper == 1 || - int_multiply_cmp(tlen + OPSIZE_PUSH, qn->upper, + len_multiply_cmp((OnigLen )tlen + OPSIZE_PUSH, qn->upper, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { len = tlen * qn->lower; len += (OPSIZE_PUSH + tlen) * (qn->upper - qn->lower); @@ -1176,12 +1473,12 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) if (is_anychar_infinite_greedy(qn) && (qn->lower <= 1 || - int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + len_multiply_cmp((OnigLen )tlen, qn->lower, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; if (IS_NOT_NULL(qn->next_head_exact)) { - r = add_op(reg, - IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ? + r = add_op(reg, NODE_IS_MULTILINE(NODE_QUANT_BODY(qn)) ? OP_ANYCHAR_ML_STAR_PEEK_NEXT : OP_ANYCHAR_STAR_PEEK_NEXT); if (r != 0) return r; @@ -1189,8 +1486,7 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) return 0; } else { - r = add_op(reg, - IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ? + r = add_op(reg, NODE_IS_MULTILINE(NODE_QUANT_BODY(qn)) ? OP_ANYCHAR_ML_STAR : OP_ANYCHAR_STAR); return r; } @@ -1202,7 +1498,8 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) if (infinite && (qn->lower <= 1 || - int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + len_multiply_cmp((OnigLen )tlen, qn->lower, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { int addr; if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { @@ -1297,7 +1594,7 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) } else if (! infinite && qn->greedy && (qn->upper == 1 || - int_multiply_cmp(tlen + OPSIZE_PUSH, qn->upper, + len_multiply_cmp((OnigLen )tlen + OPSIZE_PUSH, qn->upper, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { int n = qn->upper - qn->lower; @@ -1337,11 +1634,8 @@ static int compile_length_option_node(BagNode* node, regex_t* reg) { int tlen; - OnigOptionType prev = reg->options; - reg->options = node->o.options; tlen = compile_length_tree(NODE_BAG_BODY(node), reg); - reg->options = prev; return tlen; } @@ -1350,11 +1644,8 @@ static int compile_option_node(BagNode* node, regex_t* reg, ScanEnv* env) { int r; - OnigOptionType prev = reg->options; - reg->options = node->o.options; r = compile_tree(NODE_BAG_BODY(node), reg, env); - reg->options = prev; return r; } @@ -1423,10 +1714,10 @@ compile_length_bag_node(BagNode* node, regex_t* reg) v = onig_positive_int_multiply(qn->lower, tlen); if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; - len = v + OPSIZE_PUSH + tlen + OPSIZE_POP_OUT + OPSIZE_JUMP; + len = v + OPSIZE_PUSH + tlen + OPSIZE_POP + OPSIZE_JUMP; } else { - len = OPSIZE_ATOMIC_START + tlen + OPSIZE_ATOMIC_END; + len = OPSIZE_MARK + tlen + OPSIZE_CUT_TO_MARK; } break; @@ -1438,8 +1729,7 @@ compile_length_bag_node(BagNode* node, regex_t* reg) len = compile_length_tree(cond, reg); if (len < 0) return len; - len += OPSIZE_PUSH; - len += OPSIZE_ATOMIC_START + OPSIZE_ATOMIC_END; + len += OPSIZE_PUSH + OPSIZE_MARK + OPSIZE_CUT_TO_MARK; if (IS_NOT_NULL(Then)) { tlen = compile_length_tree(Then, reg); @@ -1447,7 +1737,7 @@ compile_length_bag_node(BagNode* node, regex_t* reg) len += tlen; } - len += OPSIZE_JUMP + OPSIZE_ATOMIC_END; + len += OPSIZE_JUMP + OPSIZE_CUT_TO_MARK; if (IS_NOT_NULL(Else)) { tlen = compile_length_tree(Else, reg); @@ -1466,8 +1756,6 @@ compile_length_bag_node(BagNode* node, regex_t* reg) return len; } -static int get_char_len_node(Node* node, regex_t* reg, int* len); - static int compile_bag_memory_node(BagNode* node, regex_t* reg, ScanEnv* env) { @@ -1481,7 +1769,7 @@ compile_bag_memory_node(BagNode* node, regex_t* reg, ScanEnv* env) if (r != 0) return r; node->m.called_addr = COP_CURR_OFFSET(reg) + 1 + OPSIZE_JUMP; - NODE_STATUS_ADD(node, ADDR_FIXED); + NODE_STATUS_ADD(node, FIXED_ADDR); COP(reg)->call.addr = (int )node->m.called_addr; if (node->m.regnum == 0) { @@ -1574,35 +1862,49 @@ compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env) r = add_op(reg, OP_PUSH); if (r != 0) return r; - COP(reg)->push.addr = SIZE_INC + len + OPSIZE_POP_OUT + OPSIZE_JUMP; + COP(reg)->push.addr = SIZE_INC + len + OPSIZE_POP + OPSIZE_JUMP; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; - r = add_op(reg, OP_POP_OUT); + r = add_op(reg, OP_POP); if (r != 0) return r; r = add_op(reg, OP_JUMP); if (r != 0) return r; - COP(reg)->jump.addr = -((int )OPSIZE_PUSH + len + (int )OPSIZE_POP_OUT); + COP(reg)->jump.addr = -((int )OPSIZE_PUSH + len + (int )OPSIZE_POP); } else { - r = add_op(reg, OP_ATOMIC_START); + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = 0; + r = compile_tree(NODE_BAG_BODY(node), reg, env); if (r != 0) return r; - r = add_op(reg, OP_ATOMIC_END); + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; } break; case BAG_IF_ELSE: { int cond_len, then_len, else_len, jump_len; + MemNumType mid; Node* cond = NODE_BAG_BODY(node); Node* Then = node->te.Then; Node* Else = node->te.Else; - r = add_op(reg, OP_ATOMIC_START); + ID_ENTRY(env, mid); + + r = add_op(reg, OP_MARK); if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = 0; cond_len = compile_length_tree(cond, reg); if (cond_len < 0) return cond_len; @@ -1613,7 +1915,7 @@ compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env) else then_len = 0; - jump_len = cond_len + then_len + OPSIZE_ATOMIC_END + OPSIZE_JUMP; + jump_len = cond_len + then_len + OPSIZE_CUT_TO_MARK + OPSIZE_JUMP; r = add_op(reg, OP_PUSH); if (r != 0) return r; @@ -1621,8 +1923,10 @@ compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env) r = compile_tree(cond, reg, env); if (r != 0) return r; - r = add_op(reg, OP_ATOMIC_END); + r = add_op(reg, OP_CUT_TO_MARK); if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; if (IS_NOT_NULL(Then)) { r = compile_tree(Then, reg, env); @@ -1638,10 +1942,12 @@ compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env) r = add_op(reg, OP_JUMP); if (r != 0) return r; - COP(reg)->jump.addr = OPSIZE_ATOMIC_END + else_len + SIZE_INC; + COP(reg)->jump.addr = OPSIZE_CUT_TO_MARK + else_len + SIZE_INC; - r = add_op(reg, OP_ATOMIC_END); + r = add_op(reg, OP_CUT_TO_MARK); if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = 0; if (IS_NOT_NULL(Else)) { r = compile_tree(Else, reg, env); @@ -1666,16 +1972,38 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) switch (node->type) { case ANCR_PREC_READ: - len = OPSIZE_PREC_READ_START + tlen + OPSIZE_PREC_READ_END; + len = OPSIZE_MARK + tlen + OPSIZE_CUT_TO_MARK; break; case ANCR_PREC_READ_NOT: - len = OPSIZE_PREC_READ_NOT_START + tlen + OPSIZE_PREC_READ_NOT_END; + len = OPSIZE_PUSH + OPSIZE_MARK + tlen + OPSIZE_POP_TO_MARK + OPSIZE_POP + OPSIZE_FAIL; break; case ANCR_LOOK_BEHIND: - len = OPSIZE_LOOK_BEHIND + tlen; + if (node->char_min_len == node->char_max_len) + len = OPSIZE_MARK + OPSIZE_STEP_BACK_START + tlen + OPSIZE_CUT_TO_MARK; + else { + len = OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR + OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_UPDATE_VAR + OPSIZE_FAIL + OPSIZE_JUMP + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + tlen + OPSIZE_CHECK_POSITION + OPSIZE_CUT_TO_MARK + OPSIZE_UPDATE_VAR; + + if (IS_NOT_NULL(node->lead_node)) { + int llen = compile_length_tree(node->lead_node, reg); + if (llen < 0) return llen; + + len += OPSIZE_MOVE + llen; + } + } break; case ANCR_LOOK_BEHIND_NOT: - len = OPSIZE_LOOK_BEHIND_NOT_START + tlen + OPSIZE_LOOK_BEHIND_NOT_END; + if (node->char_min_len == node->char_max_len) + len = OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_STEP_BACK_START + tlen + OPSIZE_POP_TO_MARK + OPSIZE_FAIL + OPSIZE_POP; + else { + len = OPSIZE_SAVE_VAL + OPSIZE_UPDATE_VAR + OPSIZE_MARK + OPSIZE_PUSH + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + tlen + OPSIZE_CHECK_POSITION + OPSIZE_POP_TO_MARK + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_FAIL + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_POP; + + if (IS_NOT_NULL(node->lead_node)) { + int llen = compile_length_tree(node->lead_node, reg); + if (llen < 0) return llen; + + len += OPSIZE_MOVE + llen; + } + } break; case ANCR_WORD_BOUNDARY: @@ -1701,10 +2029,254 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) } static int +compile_anchor_look_behind_node(AnchorNode* node, regex_t* reg, ScanEnv* env) +{ + int r; + + if (node->char_min_len == node->char_max_len) { + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = 0; + COP(reg)->step_back_start.addr = 1; + + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = FALSE; + } + else { + MemNumType mid1, mid2; + OnigLen diff; + + if (IS_NOT_NULL(node->lead_node)) { + MinMaxCharLen ci; + + r = node_char_len(node->lead_node, reg, &ci, env); + if (r < 0) return r; + r = add_op(reg, OP_MOVE); + if (r != 0) return r; + COP(reg)->move.n = -((RelPositionType )ci.min); + r = compile_tree(node->lead_node, reg, env); + if (r != 0) return r; + } + + ID_ENTRY(env, mid1); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid1; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_TO_S; + + ID_ENTRY(env, mid2); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid2; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_JUMP; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = SIZE_INC + OPSIZE_UPDATE_VAR + OPSIZE_FAIL; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + + if (node->char_max_len != INFINITE_LEN) + diff = node->char_max_len - node->char_min_len; + else + diff = INFINITE_LEN; + + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = diff; + COP(reg)->step_back_start.addr = 2; + + r = add_op(reg, OP_STEP_BACK_NEXT); + if (r != 0) return r; + + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_CURRENT_RIGHT_RANGE; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid2; + COP(reg)->cut_to_mark.restore_pos = FALSE; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = TRUE; + } + + return r; +} + +static int +compile_anchor_look_behind_not_node(AnchorNode* node, regex_t* reg, + ScanEnv* env) +{ + int r; + int len; + + len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); + + if (node->char_min_len == node->char_max_len) { + MemNumType mid; + + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_STEP_BACK_START + len + OPSIZE_POP_TO_MARK + OPSIZE_FAIL; + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = 0; + COP(reg)->step_back_start.addr = 1; + + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + r = add_op(reg, OP_POP); + } + else { + MemNumType mid1, mid2; + OnigLen diff; + + ID_ENTRY(env, mid1); + r = add_op(reg, OP_SAVE_VAL); + if (r != 0) return r; + COP(reg)->save_val.type = SAVE_RIGHT_RANGE; + COP(reg)->save_val.id = mid1; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_TO_S; + + ID_ENTRY(env, mid2); + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid2; + COP(reg)->mark.save_pos = FALSE; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_STEP_BACK_START + OPSIZE_STEP_BACK_NEXT + len + OPSIZE_CHECK_POSITION + OPSIZE_POP_TO_MARK + OPSIZE_UPDATE_VAR + OPSIZE_POP + OPSIZE_FAIL; + + if (IS_NOT_NULL(node->lead_node)) { + int clen; + MinMaxCharLen ci; + + clen = compile_length_tree(node->lead_node, reg); + COP(reg)->push.addr += OPSIZE_MOVE + clen; + + r = node_char_len(node->lead_node, reg, &ci, env); + if (r < 0) return r; + r = add_op(reg, OP_MOVE); + if (r != 0) return r; + COP(reg)->move.n = -((RelPositionType )ci.min); + + r = compile_tree(node->lead_node, reg, env); + if (r != 0) return r; + } + + r = add_op(reg, OP_STEP_BACK_START); + if (r != 0) return r; + + if (node->char_max_len != INFINITE_LEN) + diff = node->char_max_len - node->char_min_len; + else + diff = INFINITE_LEN; + + COP(reg)->step_back_start.initial = node->char_min_len; + COP(reg)->step_back_start.remaining = diff; + COP(reg)->step_back_start.addr = 2; + + r = add_op(reg, OP_STEP_BACK_NEXT); + if (r != 0) return r; + + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_CURRENT_RIGHT_RANGE; + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid2; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + + r = add_op(reg, OP_POP); /* pop save val */ + if (r != 0) return r; + r = add_op(reg, OP_FAIL); + if (r != 0) return r; + + r = add_op(reg, OP_UPDATE_VAR); + if (r != 0) return r; + COP(reg)->update_var.type = UPDATE_VAR_RIGHT_RANGE_FROM_STACK; + COP(reg)->update_var.id = mid1; + COP(reg)->update_var.clear = FALSE; + + r = add_op(reg, OP_POP); /* pop mark */ + if (r != 0) return r; + r = add_op(reg, OP_POP); /* pop save val */ + } + + return r; +} + +static int compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) { int r, len; enum OpCode op; + MemNumType mid; switch (node->type) { case ANCR_BEGIN_BUF: r = add_op(reg, OP_BEGIN_BUF); break; @@ -1712,7 +2284,11 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) case ANCR_BEGIN_LINE: r = add_op(reg, OP_BEGIN_LINE); break; case ANCR_END_LINE: r = add_op(reg, OP_END_LINE); break; case ANCR_SEMI_END_BUF: r = add_op(reg, OP_SEMI_END_BUF); break; - case ANCR_BEGIN_POSITION: r = add_op(reg, OP_BEGIN_POSITION); break; + case ANCR_BEGIN_POSITION: + r = add_op(reg, OP_CHECK_POSITION); + if (r != 0) return r; + COP(reg)->check_position.type = CHECK_POSITION_SEARCH_START; + break; case ANCR_WORD_BOUNDARY: op = OP_WORD_BOUNDARY; @@ -1744,7 +2320,7 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) type = EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; #ifdef USE_UNICODE_WORD_BREAK - if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_TEXT_SEGMENT_WORD)) + if (NODE_IS_TEXT_SEGMENT_WORD(node)) type = WORD_BOUNDARY; #endif @@ -1755,66 +2331,60 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) break; case ANCR_PREC_READ: - r = add_op(reg, OP_PREC_READ_START); - if (r != 0) return r; - r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); - if (r != 0) return r; - r = add_op(reg, OP_PREC_READ_END); - break; - - case ANCR_PREC_READ_NOT: - len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); - if (len < 0) return len; - - r = add_op(reg, OP_PREC_READ_NOT_START); - if (r != 0) return r; - COP(reg)->prec_read_not_start.addr = SIZE_INC + len + OPSIZE_PREC_READ_NOT_END; - r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); - if (r != 0) return r; - r = add_op(reg, OP_PREC_READ_NOT_END); - break; - - case ANCR_LOOK_BEHIND: { - int n; - r = add_op(reg, OP_LOOK_BEHIND); + ID_ENTRY(env, mid); + r = add_op(reg, OP_MARK); if (r != 0) return r; - if (node->char_len < 0) { - r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n); - if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - } - else - n = node->char_len; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = TRUE; - COP(reg)->look_behind.len = n; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_CUT_TO_MARK); + if (r != 0) return r; + COP(reg)->cut_to_mark.id = mid; + COP(reg)->cut_to_mark.restore_pos = TRUE; } break; - case ANCR_LOOK_BEHIND_NOT: + case ANCR_PREC_READ_NOT: { - int n; - len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); - r = add_op(reg, OP_LOOK_BEHIND_NOT_START); - if (r != 0) return r; - COP(reg)->look_behind_not_start.addr = SIZE_INC + len + OPSIZE_LOOK_BEHIND_NOT_END; + if (len < 0) return len; - if (node->char_len < 0) { - r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n); - if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - } - else - n = node->char_len; + ID_ENTRY(env, mid); + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC + OPSIZE_MARK + len + + OPSIZE_POP_TO_MARK + OPSIZE_POP + OPSIZE_FAIL; - COP(reg)->look_behind_not_start.len = n; + r = add_op(reg, OP_MARK); + if (r != 0) return r; + COP(reg)->mark.id = mid; + COP(reg)->mark.save_pos = FALSE; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_op(reg, OP_LOOK_BEHIND_NOT_END); + + r = add_op(reg, OP_POP_TO_MARK); + if (r != 0) return r; + COP(reg)->pop_to_mark.id = mid; + + r = add_op(reg, OP_POP); + if (r != 0) return r; + r = add_op(reg, OP_FAIL); } break; + case ANCR_LOOK_BEHIND: + r = compile_anchor_look_behind_node(node, reg, env); + break; + + case ANCR_LOOK_BEHIND_NOT: + r = compile_anchor_look_behind_not_node(node, reg, env); + break; + default: return ONIGERR_TYPE_BUG; break; @@ -1826,7 +2396,7 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) static int compile_gimmick_node(GimmickNode* node, regex_t* reg) { - int r; + int r = 0; switch (node->type) { case GIMMICK_FAIL: @@ -1834,10 +2404,10 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg) break; case GIMMICK_SAVE: - r = add_op(reg, OP_PUSH_SAVE_VAL); + r = add_op(reg, OP_SAVE_VAL); if (r != 0) return r; - COP(reg)->push_save_val.type = node->detail_type; - COP(reg)->push_save_val.id = node->id; + COP(reg)->save_val.type = node->detail_type; + COP(reg)->save_val.id = node->id; break; case GIMMICK_UPDATE_VAR: @@ -1845,6 +2415,7 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg) if (r != 0) return r; COP(reg)->update_var.type = node->detail_type; COP(reg)->update_var.id = node->id; + COP(reg)->update_var.clear = FALSE; break; #ifdef USE_CALLOUT @@ -1888,7 +2459,7 @@ compile_length_gimmick_node(GimmickNode* node, regex_t* reg) break; case GIMMICK_SAVE: - len = OPSIZE_PUSH_SAVE_VAL; + len = OPSIZE_SAVE_VAL; break; case GIMMICK_UPDATE_VAR: @@ -2055,8 +2626,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) switch (CTYPE_(node)->ctype) { case CTYPE_ANYCHAR: - r = add_op(reg, IS_MULTILINE(CTYPE_OPTION(node, reg)) ? - OP_ANYCHAR_ML : OP_ANYCHAR); + r = add_op(reg, NODE_IS_MULTILINE(node) ? OP_ANYCHAR_ML : OP_ANYCHAR); break; case ONIGENC_CTYPE_WORD: @@ -2098,7 +2668,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) else { #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { - if ((reg->options & ONIG_OPTION_IGNORECASE) != 0) + if (NODE_IS_IGNORECASE(node)) r = add_op(reg, OP_BACKREF_WITH_LEVEL_IC); else r = add_op(reg, OP_BACKREF_WITH_LEVEL); @@ -2111,7 +2681,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) #endif if (br->back_num == 1) { n = br->back_static[0]; - if (IS_IGNORECASE(reg->options)) { + if (NODE_IS_IGNORECASE(node)) { r = add_op(reg, OP_BACKREF_N_IC); if (r != 0) return r; COP(reg)->backref_n.n1 = n; @@ -2132,7 +2702,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) int num; int* p; - r = add_op(reg, IS_IGNORECASE(reg->options) ? + r = add_op(reg, NODE_IS_IGNORECASE(node) ? OP_BACKREF_MULTI_IC : OP_BACKREF_MULTI); if (r != 0) return r; @@ -2183,7 +2753,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) default: #ifdef ONIG_DEBUG - fprintf(stderr, "compile_tree: undefined node type %d\n", NODE_TYPE(node)); + fprintf(DBGFP, "compile_tree: undefined node type %d\n", NODE_TYPE(node)); #endif break; } @@ -2192,7 +2762,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) } static int -noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) +make_named_capture_number_map(Node** plink, GroupNumMap* map, int* counter) { int r = 0; Node* node = *plink; @@ -2201,7 +2771,7 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) case NODE_LIST: case NODE_ALT: do { - r = noname_disable_map(&(NODE_CAR(node)), map, counter); + r = make_named_capture_number_map(&(NODE_CAR(node)), map, counter); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; @@ -2209,7 +2779,7 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) { Node** ptarget = &(NODE_BODY(node)); Node* old = *ptarget; - r = noname_disable_map(ptarget, map, counter); + r = make_named_capture_number_map(ptarget, map, counter); if (r != 0) return r; if (*ptarget != old && NODE_TYPE(*ptarget) == NODE_QUANT) { r = onig_reduce_nested_quantifier(node); @@ -2225,35 +2795,35 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) (*counter)++; map[en->m.regnum].new_val = *counter; en->m.regnum = *counter; - r = noname_disable_map(&(NODE_BODY(node)), map, counter); + r = make_named_capture_number_map(&(NODE_BODY(node)), map, counter); } else { *plink = NODE_BODY(node); NODE_BODY(node) = NULL_NODE; onig_node_free(node); - r = noname_disable_map(plink, map, counter); + r = make_named_capture_number_map(plink, map, counter); } } else if (en->type == BAG_IF_ELSE) { - r = noname_disable_map(&(NODE_BAG_BODY(en)), map, counter); + r = make_named_capture_number_map(&(NODE_BAG_BODY(en)), map, counter); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { - r = noname_disable_map(&(en->te.Then), map, counter); + r = make_named_capture_number_map(&(en->te.Then), map, counter); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { - r = noname_disable_map(&(en->te.Else), map, counter); + r = make_named_capture_number_map(&(en->te.Else), map, counter); if (r != 0) return r; } } else - r = noname_disable_map(&(NODE_BODY(node)), map, counter); + r = make_named_capture_number_map(&(NODE_BODY(node)), map, counter); } break; case NODE_ANCHOR: if (IS_NOT_NULL(NODE_BODY(node))) - r = noname_disable_map(&(NODE_BODY(node)), map, counter); + r = make_named_capture_number_map(&(NODE_BODY(node)), map, counter); break; default: @@ -2264,7 +2834,7 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) } static int -renumber_node_backref(Node* node, GroupNumRemap* map) +renumber_backref_node(Node* node, GroupNumMap* map) { int i, pos, n, old_num; int *backs; @@ -2292,7 +2862,7 @@ renumber_node_backref(Node* node, GroupNumRemap* map) } static int -renumber_by_map(Node* node, GroupNumRemap* map) +renumber_backref_traverse(Node* node, GroupNumMap* map) { int r = 0; @@ -2300,28 +2870,28 @@ renumber_by_map(Node* node, GroupNumRemap* map) case NODE_LIST: case NODE_ALT: do { - r = renumber_by_map(NODE_CAR(node), map); + r = renumber_backref_traverse(NODE_CAR(node), map); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: - r = renumber_by_map(NODE_BODY(node), map); + r = renumber_backref_traverse(NODE_BODY(node), map); break; case NODE_BAG: { BagNode* en = BAG_(node); - r = renumber_by_map(NODE_BODY(node), map); + r = renumber_backref_traverse(NODE_BODY(node), map); if (r != 0) return r; if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { - r = renumber_by_map(en->te.Then, map); + r = renumber_backref_traverse(en->te.Then, map); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { - r = renumber_by_map(en->te.Else, map); + r = renumber_backref_traverse(en->te.Else, map); if (r != 0) return r; } } @@ -2329,12 +2899,12 @@ renumber_by_map(Node* node, GroupNumRemap* map) break; case NODE_BACKREF: - r = renumber_node_backref(node, map); + r = renumber_backref_node(node, map); break; case NODE_ANCHOR: if (IS_NOT_NULL(NODE_BODY(node))) - r = renumber_by_map(NODE_BODY(node), map); + r = renumber_backref_traverse(NODE_BODY(node), map); break; default: @@ -2403,18 +2973,18 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) { int r, i, pos, counter; MemStatusType loc; - GroupNumRemap* map; + GroupNumMap* map; - map = (GroupNumRemap* )xalloca(sizeof(GroupNumRemap) * (env->num_mem + 1)); + map = (GroupNumMap* )xalloca(sizeof(GroupNumMap) * (env->num_mem + 1)); CHECK_NULL_RETURN_MEMERR(map); for (i = 1; i <= env->num_mem; i++) { map[i].new_val = 0; } counter = 0; - r = noname_disable_map(root, map, &counter); + r = make_named_capture_number_map(root, map, &counter); if (r != 0) return r; - r = renumber_by_map(*root, map); + r = renumber_backref_traverse(*root, map); if (r != 0) return r; for (i = 1, pos = 1; i <= env->num_mem; i++) { @@ -2448,8 +3018,18 @@ fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) AbsAddrType* paddr; for (i = 0; i < uslist->num; i++) { - if (! NODE_IS_ADDR_FIXED(uslist->us[i].target)) - return ONIGERR_PARSER_BUG; + if (! NODE_IS_FIXED_ADDR(uslist->us[i].target)) { + if (NODE_IS_CALLED(uslist->us[i].target)) + return ONIGERR_PARSER_BUG; + else { + /* CASE: called node doesn't have called address. + ex. /((|a\g<1>)(.){0}){0}\g<3>/ + group-1 doesn't called, but compiled into bytecodes, + because group-3 is referred from outside. + */ + continue; + } + } en = BAG_(uslist->us[i].target); addr = en->m.called_addr; @@ -2462,173 +3042,6 @@ fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) } #endif - -#define GET_CHAR_LEN_VARLEN -1 -#define GET_CHAR_LEN_TOP_ALT_VARLEN -2 - -/* fixed size pattern node only */ -static int -get_char_len_node1(Node* node, regex_t* reg, int* len, int level) -{ - int tlen; - int r = 0; - - level++; - *len = 0; - switch (NODE_TYPE(node)) { - case NODE_LIST: - do { - r = get_char_len_node1(NODE_CAR(node), reg, &tlen, level); - if (r == 0) - *len = distance_add(*len, tlen); - } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); - break; - - case NODE_ALT: - { - int tlen2; - int varlen = 0; - - r = get_char_len_node1(NODE_CAR(node), reg, &tlen, level); - while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))) { - r = get_char_len_node1(NODE_CAR(node), reg, &tlen2, level); - if (r == 0) { - if (tlen != tlen2) - varlen = 1; - } - } - if (r == 0) { - if (varlen != 0) { - if (level == 1) - r = GET_CHAR_LEN_TOP_ALT_VARLEN; - else - r = GET_CHAR_LEN_VARLEN; - } - else - *len = tlen; - } - } - break; - - case NODE_STRING: - { - StrNode* sn = STR_(node); - UChar *s = sn->s; - - while (s < sn->end) { - s += enclen(reg->enc, s); - (*len)++; - } - } - break; - - case NODE_QUANT: - { - QuantNode* qn = QUANT_(node); - - if (qn->lower == qn->upper) { - if (qn->upper == 0) { - *len = 0; - } - else { - r = get_char_len_node1(NODE_BODY(node), reg, &tlen, level); - if (r == 0) - *len = distance_multiply(tlen, qn->lower); - } - } - else - r = GET_CHAR_LEN_VARLEN; - } - break; - -#ifdef USE_CALL - case NODE_CALL: - if (! NODE_IS_RECURSION(node)) - r = get_char_len_node1(NODE_BODY(node), reg, len, level); - else - r = GET_CHAR_LEN_VARLEN; - break; -#endif - - case NODE_CTYPE: - case NODE_CCLASS: - *len = 1; - break; - - case NODE_BAG: - { - BagNode* en = BAG_(node); - - switch (en->type) { - case BAG_MEMORY: -#ifdef USE_CALL - if (NODE_IS_CLEN_FIXED(node)) - *len = en->char_len; - else { - r = get_char_len_node1(NODE_BODY(node), reg, len, level); - if (r == 0) { - en->char_len = *len; - NODE_STATUS_ADD(node, CLEN_FIXED); - } - } - break; -#endif - case BAG_OPTION: - case BAG_STOP_BACKTRACK: - r = get_char_len_node1(NODE_BODY(node), reg, len, level); - break; - case BAG_IF_ELSE: - { - int clen, elen; - - r = get_char_len_node1(NODE_BODY(node), reg, &clen, level); - if (r == 0) { - if (IS_NOT_NULL(en->te.Then)) { - r = get_char_len_node1(en->te.Then, reg, &tlen, level); - if (r != 0) break; - } - else tlen = 0; - if (IS_NOT_NULL(en->te.Else)) { - r = get_char_len_node1(en->te.Else, reg, &elen, level); - if (r != 0) break; - } - else elen = 0; - - if (clen + tlen != elen) { - r = GET_CHAR_LEN_VARLEN; - } - else { - *len = elen; - } - } - } - break; - } - } - break; - - case NODE_ANCHOR: - case NODE_GIMMICK: - break; - - case NODE_BACKREF: - if (NODE_IS_CHECKER(node)) - break; - /* fall */ - default: - r = GET_CHAR_LEN_VARLEN; - break; - } - - return r; -} - -static int -get_char_len_node(Node* node, regex_t* reg, int* len) -{ - return get_char_len_node1(node, reg, len, 0); -} - /* x is not included y ==> 1 : 0 */ static int is_exclusive(Node* x, Node* y, regex_t* reg) @@ -2804,14 +3217,9 @@ is_exclusive(Node* x, Node* y, regex_t* reg) len = NODE_STRING_LEN(x); if (len > NODE_STRING_LEN(y)) len = NODE_STRING_LEN(y); - if (NODE_STRING_IS_CASE_FOLD_MATCH(x) || NODE_STRING_IS_CASE_FOLD_MATCH(y)) { - /* tiny version */ - return 0; - } - else { - for (i = 0, p = ys->s, q = xs->s; i < len; i++, p++, q++) { - if (*p != *q) return 1; - } + + for (i = 0, p = ys->s, q = xs->s; i < len; i++, p++, q++) { + if (*p != *q) return 1; } } break; @@ -2830,7 +3238,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) } static Node* -get_head_value_node(Node* node, int exact, regex_t* reg) +get_tree_head_literal(Node* node, int exact, regex_t* reg) { Node* n = NULL_NODE; @@ -2853,7 +3261,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) break; case NODE_LIST: - n = get_head_value_node(NODE_CAR(node), exact, reg); + n = get_tree_head_literal(NODE_CAR(node), exact, reg); break; case NODE_STRING: @@ -2864,7 +3272,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) break; if (exact == 0 || - ! IS_IGNORECASE(reg->options) || NODE_STRING_IS_CRUDE(node)) { + ! NODE_IS_IGNORECASE(node) || NODE_STRING_IS_CRUDE(node)) { n = node; } } @@ -2877,7 +3285,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) if (IS_NOT_NULL(qn->head_exact)) n = qn->head_exact; else - n = get_head_value_node(NODE_BODY(node), exact, reg); + n = get_tree_head_literal(NODE_BODY(node), exact, reg); } } break; @@ -2887,19 +3295,10 @@ get_head_value_node(Node* node, int exact, regex_t* reg) BagNode* en = BAG_(node); switch (en->type) { case BAG_OPTION: - { - OnigOptionType options = reg->options; - - reg->options = BAG_(node)->o.options; - n = get_head_value_node(NODE_BODY(node), exact, reg); - reg->options = options; - } - break; - case BAG_MEMORY: case BAG_STOP_BACKTRACK: case BAG_IF_ELSE: - n = get_head_value_node(NODE_BODY(node), exact, reg); + n = get_tree_head_literal(NODE_BODY(node), exact, reg); break; } } @@ -2907,7 +3306,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) case NODE_ANCHOR: if (ANCHOR_(node)->type == ANCR_PREC_READ) - n = get_head_value_node(NODE_BODY(node), exact, reg); + n = get_tree_head_literal(NODE_BODY(node), exact, reg); break; case NODE_GIMMICK: @@ -2918,42 +3317,244 @@ get_head_value_node(Node* node, int exact, regex_t* reg) return n; } +enum GetValue { + GET_VALUE_NONE = -1, + GET_VALUE_IGNORE = 0, + GET_VALUE_FOUND = 1 +}; + +static int +get_tree_tail_literal(Node* node, Node** rnode, regex_t* reg) +{ + int r; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + if (IS_NULL(NODE_CDR(node))) { + r = get_tree_tail_literal(NODE_CAR(node), rnode, reg); + } + else { + r = get_tree_tail_literal(NODE_CDR(node), rnode, reg); + if (r == GET_VALUE_IGNORE) { + r = get_tree_tail_literal(NODE_CAR(node), rnode, reg); + } + } + break; + +#ifdef USE_CALL + case NODE_CALL: + r = get_tree_tail_literal(NODE_BODY(node), rnode, reg); + break; +#endif + + case NODE_CTYPE: + if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) { + r = GET_VALUE_NONE; + break; + } + /* fall */ + case NODE_CCLASS: + *rnode = node; + r = GET_VALUE_FOUND; + break; + + case NODE_STRING: + { + StrNode* sn = STR_(node); + + if (sn->end <= sn->s) { + r = GET_VALUE_IGNORE; + break; + } + + if (NODE_IS_IGNORECASE(node) && ! NODE_STRING_IS_CRUDE(node)) { + r = GET_VALUE_NONE; + break; + } + + *rnode = node; + r = GET_VALUE_FOUND; + } + break; + + case NODE_QUANT: + { + QuantNode* qn = QUANT_(node); + if (qn->lower != 0) { + r = get_tree_tail_literal(NODE_BODY(node), rnode, reg); + } + else + r = GET_VALUE_NONE; + } + break; + + case NODE_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (NODE_IS_MARK1(node)) + r = GET_VALUE_NONE; + else { + NODE_STATUS_ADD(node, MARK1); + r = get_tree_tail_literal(NODE_BODY(node), rnode, reg); + NODE_STATUS_REMOVE(node, MARK1); + } + } + else { + r = get_tree_tail_literal(NODE_BODY(node), rnode, reg); + } + } + break; + + case NODE_ANCHOR: + case NODE_GIMMICK: + r = GET_VALUE_IGNORE; + break; + + case NODE_ALT: + case NODE_BACKREF: + default: + r = GET_VALUE_NONE; + break; + } + + return r; +} + static int -check_type_tree(Node* node, int type_mask, int bag_mask, int anchor_mask) +check_called_node_in_look_behind(Node* node, int not) { + int r; + + r = 0; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + do { + r = check_called_node_in_look_behind(NODE_CAR(node), not); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_QUANT: + r = check_called_node_in_look_behind(NODE_BODY(node), not); + break; + + case NODE_BAG: + { + BagNode* en = BAG_(node); + + if (en->type == BAG_MEMORY) { + if (NODE_IS_MARK1(node)) + return 0; + else { + NODE_STATUS_ADD(node, MARK1); + r = check_called_node_in_look_behind(NODE_BODY(node), not); + NODE_STATUS_REMOVE(node, MARK1); + } + } + else { + r = check_called_node_in_look_behind(NODE_BODY(node), not); + if (r == 0 && en->type == BAG_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = check_called_node_in_look_behind(en->te.Then, not); + if (r != 0) break; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_called_node_in_look_behind(en->te.Else, not); + } + } + } + } + break; + + case NODE_ANCHOR: + if (IS_NOT_NULL(NODE_BODY(node))) + r = check_called_node_in_look_behind(NODE_BODY(node), not); + break; + + case NODE_GIMMICK: + if (NODE_IS_ABSENT_WITH_SIDE_EFFECTS(node) != 0) + return 1; + break; + + default: + break; + } + + return r; +} + +/* allowed node types in look-behind */ +#define ALLOWED_TYPE_IN_LB \ + ( NODE_BIT_LIST | NODE_BIT_ALT | NODE_BIT_STRING | NODE_BIT_CCLASS \ + | NODE_BIT_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_BAG | NODE_BIT_QUANT \ + | NODE_BIT_CALL | NODE_BIT_BACKREF | NODE_BIT_GIMMICK) + +#define ALLOWED_BAG_IN_LB ( 1<<BAG_MEMORY | 1<<BAG_OPTION | 1<<BAG_STOP_BACKTRACK | 1<<BAG_IF_ELSE ) +#define ALLOWED_BAG_IN_LB_NOT ( 1<<BAG_OPTION | 1<<BAG_STOP_BACKTRACK | 1<<BAG_IF_ELSE ) + +#define ALLOWED_ANCHOR_IN_LB \ + ( ANCR_LOOK_BEHIND | ANCR_BEGIN_LINE | ANCR_END_LINE | ANCR_BEGIN_BUF \ + | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY | ANCR_NO_WORD_BOUNDARY \ + | ANCR_WORD_BEGIN | ANCR_WORD_END \ + | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY ) + +#define ALLOWED_ANCHOR_IN_LB_NOT \ + ( ANCR_LOOK_BEHIND | ANCR_LOOK_BEHIND_NOT | ANCR_BEGIN_LINE \ + | ANCR_END_LINE | ANCR_BEGIN_BUF | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY \ + | ANCR_NO_WORD_BOUNDARY | ANCR_WORD_BEGIN | ANCR_WORD_END \ + | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY ) + + +static int +check_node_in_look_behind(Node* node, int not, int* used) +{ + static unsigned int + bag_mask[2] = { ALLOWED_BAG_IN_LB, ALLOWED_BAG_IN_LB_NOT }; + + static unsigned int + anchor_mask[2] = { ALLOWED_ANCHOR_IN_LB, ALLOWED_ANCHOR_IN_LB_NOT }; + NodeType type; int r = 0; type = NODE_TYPE(node); - if ((NODE_TYPE2BIT(type) & type_mask) == 0) + if ((NODE_TYPE2BIT(type) & ALLOWED_TYPE_IN_LB) == 0) return 1; switch (type) { case NODE_LIST: case NODE_ALT: do { - r = check_type_tree(NODE_CAR(node), type_mask, bag_mask, anchor_mask); + r = check_node_in_look_behind(NODE_CAR(node), not, used); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: - r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); + r = check_node_in_look_behind(NODE_BODY(node), not, used); break; case NODE_BAG: { BagNode* en = BAG_(node); - if (((1<<en->type) & bag_mask) == 0) + if (((1<<en->type) & bag_mask[not]) == 0) return 1; - r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); - if (r == 0 && en->type == BAG_IF_ELSE) { + r = check_node_in_look_behind(NODE_BODY(node), not, used); + if (r != 0) break; + + if (en->type == BAG_MEMORY) { + if (NODE_IS_BACKREF(node) || NODE_IS_CALLED(node)) *used = TRUE; + } + else if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { - r = check_type_tree(en->te.Then, type_mask, bag_mask, anchor_mask); + r = check_node_in_look_behind(en->te.Then, not, used); if (r != 0) break; } if (IS_NOT_NULL(en->te.Else)) { - r = check_type_tree(en->te.Else, type_mask, bag_mask, anchor_mask); + r = check_node_in_look_behind(en->te.Else, not, used); } } } @@ -2961,14 +3562,22 @@ check_type_tree(Node* node, int type_mask, int bag_mask, int anchor_mask) case NODE_ANCHOR: type = ANCHOR_(node)->type; - if ((type & anchor_mask) == 0) + if ((type & anchor_mask[not]) == 0) return 1; if (IS_NOT_NULL(NODE_BODY(node))) - r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); + r = check_node_in_look_behind(NODE_BODY(node), not, used); break; case NODE_GIMMICK: + if (NODE_IS_ABSENT_WITH_SIDE_EFFECTS(node) != 0) + return 1; + break; + + case NODE_CALL: + r = check_called_node_in_look_behind(NODE_BODY(node), not); + break; + default: break; } @@ -2976,7 +3585,7 @@ check_type_tree(Node* node, int type_mask, int bag_mask, int anchor_mask) } static OnigLen -tree_min_len(Node* node, ScanEnv* env) +node_min_byte_len(Node* node, ScanEnv* env) { OnigLen len; OnigLen tmin; @@ -2992,9 +3601,9 @@ tree_min_len(Node* node, ScanEnv* env) if (NODE_IS_RECURSION(node)) break; backs = BACKREFS_P(br); - len = tree_min_len(mem_env[backs[0]].mem_node, env); + len = node_min_byte_len(mem_env[backs[0]].mem_node, env); for (i = 1; i < br->back_num; i++) { - tmin = tree_min_len(mem_env[backs[i]].mem_node, env); + tmin = node_min_byte_len(mem_env[backs[i]].mem_node, env); if (len > tmin) len = tmin; } } @@ -3005,18 +3614,18 @@ tree_min_len(Node* node, ScanEnv* env) { Node* t = NODE_BODY(node); if (NODE_IS_RECURSION(node)) { - if (NODE_IS_MIN_FIXED(t)) + if (NODE_IS_FIXED_MIN(t)) len = BAG_(t)->min_len; } else - len = tree_min_len(t, env); + len = node_min_byte_len(t, env); } break; #endif case NODE_LIST: do { - tmin = tree_min_len(NODE_CAR(node), env); + tmin = node_min_byte_len(NODE_CAR(node), env); len = distance_add(len, tmin); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; @@ -3027,7 +3636,7 @@ tree_min_len(Node* node, ScanEnv* env) y = node; do { x = NODE_CAR(y); - tmin = tree_min_len(x, env); + tmin = node_min_byte_len(x, env); if (y == node) len = tmin; else if (len > tmin) len = tmin; } while (IS_NOT_NULL(y = NODE_CDR(y))); @@ -3051,7 +3660,7 @@ tree_min_len(Node* node, ScanEnv* env) QuantNode* qn = QUANT_(node); if (qn->lower > 0) { - len = tree_min_len(NODE_BODY(node), env); + len = node_min_byte_len(NODE_BODY(node), env); len = distance_multiply(len, qn->lower); } } @@ -3062,35 +3671,35 @@ tree_min_len(Node* node, ScanEnv* env) BagNode* en = BAG_(node); switch (en->type) { case BAG_MEMORY: - if (NODE_IS_MIN_FIXED(node)) + if (NODE_IS_FIXED_MIN(node)) len = en->min_len; else { if (NODE_IS_MARK1(node)) len = 0; /* recursive */ else { NODE_STATUS_ADD(node, MARK1); - len = tree_min_len(NODE_BODY(node), env); + len = node_min_byte_len(NODE_BODY(node), env); NODE_STATUS_REMOVE(node, MARK1); en->min_len = len; - NODE_STATUS_ADD(node, MIN_FIXED); + NODE_STATUS_ADD(node, FIXED_MIN); } } break; case BAG_OPTION: case BAG_STOP_BACKTRACK: - len = tree_min_len(NODE_BODY(node), env); + len = node_min_byte_len(NODE_BODY(node), env); break; case BAG_IF_ELSE: { OnigLen elen; - len = tree_min_len(NODE_BODY(node), env); + len = node_min_byte_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) - len += tree_min_len(en->te.Then, env); + len += node_min_byte_len(en->te.Then, env); if (IS_NOT_NULL(en->te.Else)) - elen = tree_min_len(en->te.Else, env); + elen = node_min_byte_len(en->te.Else, env); else elen = 0; if (elen < len) len = elen; @@ -3118,7 +3727,7 @@ tree_min_len(Node* node, ScanEnv* env) } static OnigLen -tree_max_len(Node* node, ScanEnv* env) +node_max_byte_len(Node* node, ScanEnv* env) { OnigLen len; OnigLen tmax; @@ -3127,14 +3736,14 @@ tree_max_len(Node* node, ScanEnv* env) switch (NODE_TYPE(node)) { case NODE_LIST: do { - tmax = tree_max_len(NODE_CAR(node), env); + tmax = node_max_byte_len(NODE_CAR(node), env); len = distance_add(len, tmax); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ALT: do { - tmax = tree_max_len(NODE_CAR(node), env); + tmax = node_max_byte_len(NODE_CAR(node), env); if (len < tmax) len = tmax; } while (IS_NOT_NULL(node = NODE_CDR(node))); break; @@ -3158,12 +3767,16 @@ tree_max_len(Node* node, ScanEnv* env) MemEnv* mem_env = SCANENV_MEMENV(env); BackRefNode* br = BACKREF_(node); if (NODE_IS_RECURSION(node)) { - len = INFINITE_LEN; +#ifdef USE_BACKREF_WITH_LEVEL + if (NODE_IS_NEST_LEVEL(node)) { + len = INFINITE_LEN; + } +#endif break; } backs = BACKREFS_P(br); for (i = 0; i < br->back_num; i++) { - tmax = tree_max_len(mem_env[backs[i]].mem_node, env); + tmax = node_max_byte_len(mem_env[backs[i]].mem_node, env); if (len < tmax) len = tmax; } } @@ -3172,7 +3785,7 @@ tree_max_len(Node* node, ScanEnv* env) #ifdef USE_CALL case NODE_CALL: if (! NODE_IS_RECURSION(node)) - len = tree_max_len(NODE_BODY(node), env); + len = node_max_byte_len(NODE_BODY(node), env); else len = INFINITE_LEN; break; @@ -3183,7 +3796,7 @@ tree_max_len(Node* node, ScanEnv* env) QuantNode* qn = QUANT_(node); if (qn->upper != 0) { - len = tree_max_len(NODE_BODY(node), env); + len = node_max_byte_len(NODE_BODY(node), env); if (len != 0) { if (! IS_INFINITE_REPEAT(qn->upper)) len = distance_multiply(len, qn->upper); @@ -3199,37 +3812,37 @@ tree_max_len(Node* node, ScanEnv* env) BagNode* en = BAG_(node); switch (en->type) { case BAG_MEMORY: - if (NODE_IS_MAX_FIXED(node)) + if (NODE_IS_FIXED_MAX(node)) len = en->max_len; else { if (NODE_IS_MARK1(node)) len = INFINITE_LEN; else { NODE_STATUS_ADD(node, MARK1); - len = tree_max_len(NODE_BODY(node), env); + len = node_max_byte_len(NODE_BODY(node), env); NODE_STATUS_REMOVE(node, MARK1); en->max_len = len; - NODE_STATUS_ADD(node, MAX_FIXED); + NODE_STATUS_ADD(node, FIXED_MAX); } } break; case BAG_OPTION: case BAG_STOP_BACKTRACK: - len = tree_max_len(NODE_BODY(node), env); + len = node_max_byte_len(NODE_BODY(node), env); break; case BAG_IF_ELSE: { OnigLen tlen, elen; - len = tree_max_len(NODE_BODY(node), env); + len = node_max_byte_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) { - tlen = tree_max_len(en->te.Then, env); + tlen = node_max_byte_len(en->te.Then, env); len = distance_add(len, tlen); } if (IS_NOT_NULL(en->te.Else)) - elen = tree_max_len(en->te.Else, env); + elen = node_max_byte_len(en->te.Else, env); else elen = 0; if (elen > len) len = elen; @@ -3537,7 +4150,7 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head) if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; r |= ret; if (head != 0) { - min = tree_min_len(NODE_CAR(x), env); + min = node_min_byte_len(NODE_CAR(x), env); if (min != 0) head = 0; } } while (IS_NOT_NULL(x = NODE_CDR(x))); @@ -3602,7 +4215,7 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head) if (IS_NOT_NULL(en->te.Then)) { OnigLen min; if (head != 0) { - min = tree_min_len(NODE_BODY(node), env); + min = node_min_byte_len(NODE_BODY(node), env); } else min = 0; @@ -3888,7 +4501,9 @@ reduce_string_list(Node* node) next_node = NODE_CDR(node); curr = NODE_CAR(node); if (NODE_TYPE(curr) == NODE_STRING) { - if (IS_NULL(prev) || STR_(curr)->flag != STR_(prev)->flag) { + if (IS_NULL(prev) + || STR_(curr)->flag != STR_(prev)->flag + || NODE_STATUS(curr) != NODE_STATUS(prev)) { prev = curr; prev_node = node; } @@ -3967,9 +4582,13 @@ reduce_string_list(Node* node) static int divide_look_behind_alternatives(Node* node) { + int r; + int anc_type; Node *head, *np, *insert_node; - AnchorNode* an = ANCHOR_(node); - int anc_type = an->type; + AnchorNode* an; + + an = ANCHOR_(node); + anc_type = an->type; head = NODE_ANCHOR_BODY(an); np = NODE_CAR(head); @@ -3979,7 +4598,8 @@ divide_look_behind_alternatives(Node* node) np = node; while (IS_NOT_NULL(np = NODE_CDR(np))) { - insert_node = onig_node_new_anchor(anc_type, an->ascii_mode); + r = onig_node_copy(&insert_node, head); + if (r != 0) return r; CHECK_NULL_RETURN_MEMERR(insert_node); NODE_BODY(insert_node) = NODE_CAR(np); NODE_CAR(np) = insert_node; @@ -3995,21 +4615,162 @@ divide_look_behind_alternatives(Node* node) } static int -tune_look_behind(Node* node, regex_t* reg, ScanEnv* env) +node_reduce_in_look_behind(Node* node) { - int r, len; + NodeType type; + Node* body; + + if (NODE_TYPE(node) != NODE_QUANT) return 0; + + body = NODE_BODY(node); + type = NODE_TYPE(body); + if (type == NODE_STRING || type == NODE_CTYPE || + type == NODE_CCLASS || type == NODE_BACKREF) { + QuantNode* qn = QUANT_(node); + qn->upper = qn->lower; + if (qn->upper == 0) + return 1; /* removed */ + } + + return 0; +} + +static int +list_reduce_in_look_behind(Node* node) +{ + int r; + + switch (NODE_TYPE(node)) { + case NODE_QUANT: + r = node_reduce_in_look_behind(node); + if (r > 0) r = 0; + break; + + case NODE_LIST: + do { + r = node_reduce_in_look_behind(NODE_CAR(node)); + if (r <= 0) break; + } while (IS_NOT_NULL(node = NODE_CDR(node))); + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +alt_reduce_in_look_behind(Node* node, regex_t* reg, ScanEnv* env) +{ + int r; + + switch (NODE_TYPE(node)) { + case NODE_ALT: + do { + r = list_reduce_in_look_behind(NODE_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); + break; + + default: + r = list_reduce_in_look_behind(node); + break; + } + + return r; +} + +static int tune_tree(Node* node, regex_t* reg, int state, ScanEnv* env); + +static int +tune_look_behind(Node* node, regex_t* reg, int state, ScanEnv* env) +{ + int r; + int state1; + int used; + MinMaxCharLen ci; + Node* body; AnchorNode* an = ANCHOR_(node); - r = get_char_len_node(NODE_ANCHOR_BODY(an), reg, &len); - if (r == 0) - an->char_len = len; - else if (r == GET_CHAR_LEN_VARLEN) - r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - else if (r == GET_CHAR_LEN_TOP_ALT_VARLEN) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND)) - r = divide_look_behind_alternatives(node); - else - r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + used = FALSE; + r = check_node_in_look_behind(NODE_ANCHOR_BODY(an), + an->type == ANCR_LOOK_BEHIND_NOT ? 1 : 0, + &used); + if (r < 0) return r; + if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + + if (an->type == ANCR_LOOK_BEHIND_NOT) + state1 = state | IN_NOT | IN_LOOK_BEHIND; + else + state1 = state | IN_LOOK_BEHIND; + + body = NODE_ANCHOR_BODY(an); + /* Execute tune_tree(body) before call node_char_len(). + Because case-fold expansion must be done before node_char_len(). + */ + r = tune_tree(body, reg, state1, env); + if (r != 0) return r; + + r = alt_reduce_in_look_behind(body, reg, env); + if (r != 0) return r; + + r = node_char_len(body, reg, &ci, env); + if (r >= 0) { + /* #177: overflow in onigenc_step_back() */ + if ((ci.max != INFINITE_LEN && ci.max > LOOK_BEHIND_MAX_CHAR_LEN) + || ci.min > LOOK_BEHIND_MAX_CHAR_LEN) { + return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + + if (ci.min == 0 && ci.min_is_sure != 0 && used == FALSE) { + if (an->type == ANCR_LOOK_BEHIND_NOT) + r = onig_node_reset_fail(node); + else + r = onig_node_reset_empty(node); + + return r; + } + + if (r == CHAR_LEN_TOP_ALT_FIXED) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND)) { + r = divide_look_behind_alternatives(node); + if (r == 0) + r = tune_tree(node, reg, state, env); + } + else if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND)) + goto normal; + else + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { /* CHAR_LEN_NORMAL */ + normal: + if (ci.min == INFINITE_LEN) { + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { + if (ci.min != ci.max && + ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND)) { + r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + } + else { + Node* tail; + + /* check lead_node is already set by double call after + divide_look_behind_alternatives() */ + if (IS_NULL(an->lead_node)) { + an->char_min_len = ci.min; + an->char_max_len = ci.max; + r = get_tree_tail_literal(body, &tail, reg); + if (r == GET_VALUE_FOUND) { + r = onig_node_copy(&(an->lead_node), tail); + if (r != 0) return r; + } + } + r = ONIG_NORMAL; + } + } + } } return r; @@ -4026,7 +4787,7 @@ tune_next(Node* node, Node* next_node, regex_t* reg) QuantNode* qn = QUANT_(node); if (qn->greedy && IS_INFINITE_REPEAT(qn->upper)) { #ifdef USE_QUANT_PEEK_NEXT - Node* n = get_head_value_node(next_node, 1, reg); + Node* n = get_tree_head_literal(next_node, 1, reg); /* '\0': for UTF-16BE etc... */ if (IS_NOT_NULL(n) && STR_(n)->s[0] != '\0') { qn->next_head_exact = n; @@ -4036,9 +4797,9 @@ tune_next(Node* node, Node* next_node, regex_t* reg) if (qn->lower <= 1) { if (is_strict_real_node(NODE_BODY(node))) { Node *x, *y; - x = get_head_value_node(NODE_BODY(node), 0, reg); + x = get_tree_head_literal(NODE_BODY(node), 0, reg); if (IS_NOT_NULL(x)) { - y = get_head_value_node(next_node, 0, reg); + y = get_tree_head_literal(next_node, 0, reg); if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) { Node* en = onig_node_new_bag(BAG_STOP_BACKTRACK); CHECK_NULL_RETURN_MEMERR(en); @@ -4076,11 +4837,13 @@ is_all_code_len_1_items(int n, OnigCaseFoldCodeItem items[]) } static int -get_min_max_byte_len_case_fold_items(int n, OnigCaseFoldCodeItem items[], int* rmin, int* rmax) +get_min_max_byte_len_case_fold_items(int n, OnigCaseFoldCodeItem items[], + OnigLen* rmin, OnigLen* rmax) { - int i, len, minlen, maxlen; + int i; + OnigLen len, minlen, maxlen; - minlen = INT_MAX; + minlen = INFINITE_LEN; maxlen = 0; for (i = 0; i < n; i++) { OnigCaseFoldCodeItem* item = items + i; @@ -4096,45 +4859,6 @@ get_min_max_byte_len_case_fold_items(int n, OnigCaseFoldCodeItem items[], int* r } static int -conv_string_case_fold(OnigEncoding enc, OnigCaseFoldType case_fold_flag, - UChar* s, UChar* end, UChar** rs, UChar** rend, int* rcase_min_len) -{ - UChar *p, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - UChar *sbuf, *ebuf, *sp; - int i, n, len, sbuf_size; - - *rs = NULL; - sbuf_size = (int )(end - s) * 2; - sbuf = (UChar* )xmalloc(sbuf_size); - CHECK_NULL_RETURN_MEMERR(sbuf); - ebuf = sbuf + sbuf_size; - - n = 0; - sp = sbuf; - p = s; - while (p < end) { - len = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, buf); - for (i = 0; i < len; i++) { - if (sp >= ebuf) { - sbuf = (UChar* )xrealloc(sbuf, sbuf_size * 2); - CHECK_NULL_RETURN_MEMERR(sbuf); - sp = sbuf + sbuf_size; - sbuf_size *= 2; - ebuf = sbuf + sbuf_size; - } - - *sp++ = buf[i]; - } - n++; - } - - *rs = sbuf; - *rend = sp; - *rcase_min_len = n; - return 0; -} - -static int make_code_list_to_string(Node** rnode, OnigEncoding enc, int n, OnigCodePoint codes[]) { @@ -4186,7 +4910,7 @@ unravel_cf_node_add(Node** rlist, Node* add) static int unravel_cf_string_add(Node** rlist, Node** rsn, UChar* s, UChar* end, - unsigned int flag, int case_min_len) + unsigned int flag) { int r; Node *sn, *list; @@ -4195,17 +4919,13 @@ unravel_cf_string_add(Node** rlist, Node** rsn, UChar* s, UChar* end, sn = *rsn; if (IS_NOT_NULL(sn) && STR_(sn)->flag == flag) { - if (NODE_STRING_IS_CASE_FOLD_MATCH(sn)) - r = node_str_cat_case_fold(sn, s, end, case_min_len); - else - r = onig_node_str_cat(sn, s, end); + r = onig_node_str_cat(sn, s, end); } else { sn = onig_node_new_str(s, end); CHECK_NULL_RETURN_MEMERR(sn); STR_(sn)->flag = flag; - STR_(sn)->case_min_len = case_min_len; r = unravel_cf_node_add(&list, sn); } @@ -4217,27 +4937,8 @@ unravel_cf_string_add(Node** rlist, Node** rsn, UChar* s, UChar* end, } static int -unravel_cf_string_fold_add(Node** rlist, Node** rsn, OnigEncoding enc, - OnigCaseFoldType case_fold_flag, UChar* s, UChar* end) -{ - int r; - int case_min_len; - UChar *rs, *rend; - - r = conv_string_case_fold(enc, case_fold_flag, s, end, - &rs, &rend, &case_min_len); - if (r != 0) return r; - - r = unravel_cf_string_add(rlist, rsn, rs, rend, - NODE_STRING_CASE_FOLD_MATCH, case_min_len); - xfree(rs); - - return r; -} - -static int unravel_cf_string_alt_or_cc_add(Node** rlist, int n, - OnigCaseFoldCodeItem items[], int byte_len, OnigEncoding enc, + OnigCaseFoldCodeItem items[], OnigEncoding enc, OnigCaseFoldType case_fold_flag, UChar* s, UChar* end) { int r, i; @@ -4294,7 +4995,7 @@ unravel_cf_string_alt_or_cc_add(Node** rlist, int n, static int unravel_cf_look_behind_add(Node** rlist, Node** rsn, int n, OnigCaseFoldCodeItem items[], OnigEncoding enc, - UChar* s, int one_len) + UChar* s, OnigLen one_len) { int r, i, found; @@ -4309,7 +5010,7 @@ unravel_cf_look_behind_add(Node** rlist, Node** rsn, } if (found == 0) { - r = unravel_cf_string_add(rlist, rsn, s, s + one_len, 0 /* flag */, 0); + r = unravel_cf_string_add(rlist, rsn, s, s + one_len, 0 /* flag */); } else { Node* node; @@ -4340,7 +5041,8 @@ unravel_cf_look_behind_add(Node** rlist, Node** rsn, static int unravel_case_fold_string(Node* node, regex_t* reg, int state) { - int r, n, one_len, min_len, max_len, in_look_behind; + int r, n, in_look_behind; + OnigLen min_len, max_len, one_len; UChar *start, *end, *p, *q; StrNode* snode; Node *sn, *list; @@ -4349,8 +5051,8 @@ unravel_case_fold_string(Node* node, regex_t* reg, int state) if (NODE_STRING_IS_CASE_EXPANDED(node)) return 0; + NODE_STATUS_REMOVE(node, IGNORECASE); snode = STR_(node); - start = snode->s; end = snode->end; if (start >= end) return 0; @@ -4368,32 +5070,36 @@ unravel_case_fold_string(Node* node, regex_t* reg, int state) goto err; } - one_len = enclen(enc, p); + one_len = (OnigLen )enclen(enc, p); if (n == 0) { q = p + one_len; - r = unravel_cf_string_add(&list, &sn, p, q, 0 /* flag */, 0); + r = unravel_cf_string_add(&list, &sn, p, q, 0 /* flag */); if (r != 0) goto err; } else { if (in_look_behind != 0) { q = p + one_len; + if (items[0].byte_len != one_len) { + r = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, p, q, + items); + if (r < 0) goto err; + n = r; + } r = unravel_cf_look_behind_add(&list, &sn, n, items, enc, p, one_len); if (r != 0) goto err; } else { get_min_max_byte_len_case_fold_items(n, items, &min_len, &max_len); - q = p + max_len; - if (one_len == max_len && min_len == max_len) { - r = unravel_cf_string_alt_or_cc_add(&list, n, items, max_len, enc, - reg->case_fold_flag, p, q); - if (r != 0) goto err; - sn = NULL_NODE; - } - else { - r = unravel_cf_string_fold_add(&list, &sn, enc, reg->case_fold_flag, - p, q); - if (r != 0) goto err; + if (min_len != max_len) { + r = ONIGERR_PARSER_BUG; + goto err; } + + q = p + max_len; + r = unravel_cf_string_alt_or_cc_add(&list, n, items, enc, + reg->case_fold_flag, p, q); + if (r != 0) goto err; + sn = NULL_NODE; } } @@ -4428,7 +5134,7 @@ unravel_case_fold_string(Node* node, regex_t* reg, int state) static enum BodyEmptyType quantifiers_memory_node_info(Node* node) { - int r = BODY_IS_EMPTY_POSSIBILITY; + int r = BODY_MAY_BE_EMPTY; switch (NODE_TYPE(node)) { case NODE_LIST: @@ -4445,7 +5151,7 @@ quantifiers_memory_node_info(Node* node) #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) { - return BODY_IS_EMPTY_POSSIBILITY_REC; /* tiny version */ + return BODY_MAY_BE_EMPTY_REC; /* tiny version */ } else r = quantifiers_memory_node_info(NODE_BODY(node)); @@ -4467,9 +5173,9 @@ quantifiers_memory_node_info(Node* node) switch (en->type) { case BAG_MEMORY: if (NODE_IS_RECURSION(node)) { - return BODY_IS_EMPTY_POSSIBILITY_REC; + return BODY_MAY_BE_EMPTY_REC; } - return BODY_IS_EMPTY_POSSIBILITY_MEM; + return BODY_MAY_BE_EMPTY_MEM; break; case BAG_OPTION: @@ -4524,7 +5230,7 @@ tune_call_node_call(CallNode* cn, ScanEnv* env, int state) if (env->num_named > 0 && IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - ! ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) { + ! OPTON_CAPTURE_GROUP(env->options)) { return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; } @@ -4935,35 +5641,12 @@ tune_called_state(Node* node, int state) #endif /* USE_CALL */ -static int tune_tree(Node* node, regex_t* reg, int state, ScanEnv* env); - #ifdef __GNUC__ __inline #endif static int tune_anchor(Node* node, regex_t* reg, int state, ScanEnv* env) { -/* allowed node types in look-behind */ -#define ALLOWED_TYPE_IN_LB \ - ( NODE_BIT_LIST | NODE_BIT_ALT | NODE_BIT_STRING | NODE_BIT_CCLASS \ - | NODE_BIT_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_BAG | NODE_BIT_QUANT \ - | NODE_BIT_CALL | NODE_BIT_GIMMICK) - -#define ALLOWED_BAG_IN_LB ( 1<<BAG_MEMORY | 1<<BAG_OPTION | 1<<BAG_IF_ELSE ) -#define ALLOWED_BAG_IN_LB_NOT ( 1<<BAG_OPTION | 1<<BAG_IF_ELSE ) - -#define ALLOWED_ANCHOR_IN_LB \ - ( ANCR_LOOK_BEHIND | ANCR_BEGIN_LINE | ANCR_END_LINE | ANCR_BEGIN_BUF \ - | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY | ANCR_NO_WORD_BOUNDARY \ - | ANCR_WORD_BEGIN | ANCR_WORD_END \ - | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY ) - -#define ALLOWED_ANCHOR_IN_LB_NOT \ - ( ANCR_LOOK_BEHIND | ANCR_LOOK_BEHIND_NOT | ANCR_BEGIN_LINE \ - | ANCR_END_LINE | ANCR_BEGIN_BUF | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY \ - | ANCR_NO_WORD_BOUNDARY | ANCR_WORD_BEGIN | ANCR_WORD_END \ - | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY ) - int r; AnchorNode* an = ANCHOR_(node); @@ -4976,28 +5659,8 @@ tune_anchor(Node* node, regex_t* reg, int state, ScanEnv* env) break; case ANCR_LOOK_BEHIND: - { - r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, - ALLOWED_BAG_IN_LB, ALLOWED_ANCHOR_IN_LB); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = tune_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_LOOK_BEHIND), env); - if (r != 0) return r; - r = tune_look_behind(node, reg, env); - } - break; - case ANCR_LOOK_BEHIND_NOT: - { - r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, - ALLOWED_BAG_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = tune_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_NOT|IN_LOOK_BEHIND), - env); - if (r != 0) return r; - r = tune_look_behind(node, reg, env); - } + r = tune_look_behind(node, reg, state, env); break; default: @@ -5015,7 +5678,6 @@ static int tune_quant(Node* node, regex_t* reg, int state, ScanEnv* env) { int r; - OnigLen d; QuantNode* qn = QUANT_(node); Node* body = NODE_BODY(node); @@ -5027,12 +5689,12 @@ tune_quant(Node* node, regex_t* reg, int state, ScanEnv* env) } if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 1) { - d = tree_min_len(body, env); + OnigLen d = node_min_byte_len(body, env); if (d == 0) { #ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT qn->emptiness = quantifiers_memory_node_info(body); #else - qn->emptiness = BODY_IS_EMPTY_POSSIBILITY; + qn->emptiness = BODY_MAY_BE_EMPTY; #endif } } @@ -5054,7 +5716,7 @@ tune_quant(Node* node, regex_t* reg, int state, ScanEnv* env) if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) { int i, n = qn->lower; - node_conv_to_str_node(node, STR_(body)->flag); + node_conv_to_str_node(node, body); for (i = 0; i < n; i++) { r = node_str_node_cat(node, body); if (r != 0) return r; @@ -5074,7 +5736,7 @@ tune_quant(Node* node, regex_t* reg, int state, ScanEnv* env) } } else { - qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg); + qn->head_exact = get_tree_head_literal(NODE_BODY(node), 1, reg); } } @@ -5115,7 +5777,7 @@ tune_tree(Node* node, regex_t* reg, int state, ScanEnv* env) break; case NODE_STRING: - if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_CRUDE(node)) { + if (NODE_IS_IGNORECASE(node) && ! NODE_STRING_IS_CRUDE(node)) { r = unravel_case_fold_string(node, reg, state); } break; @@ -5299,14 +5961,8 @@ set_sunday_quick_search_or_bmh_skip_table(regex_t* reg, int case_expand, #endif typedef struct { - OnigLen min; /* min byte length */ - OnigLen max; /* max byte length */ -} MinMax; - -typedef struct { - MinMax mm; + MinMaxLen mm; OnigEncoding enc; - OnigOptionType options; OnigCaseFoldType case_fold_flag; ScanEnv* scan_env; } OptEnv; @@ -5317,23 +5973,22 @@ typedef struct { } OptAnc; typedef struct { - MinMax mm; /* position */ + MinMaxLen mm; /* position */ OptAnc anc; int reach_end; - int case_fold; int len; UChar s[OPT_EXACT_MAXLEN]; } OptStr; typedef struct { - MinMax mm; /* position */ + MinMaxLen mm; /* position */ OptAnc anc; int value; /* weighted value */ UChar map[CHAR_MAP_SIZE]; } OptMap; typedef struct { - MinMax len; + MinMaxLen len; OptAnc anc; OptStr sb; /* boundary */ OptStr sm; /* middle */ @@ -5367,7 +6022,7 @@ map_position_value(OnigEncoding enc, int i) } static int -distance_value(MinMax* mm) +distance_value(MinMaxLen* mm) { /* 1000 / (min-max-dist + 1) */ static const short int dist_vals[] = { @@ -5396,7 +6051,7 @@ distance_value(MinMax* mm) } static int -comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2) +comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) { if (v2 <= 0) return -1; if (v1 <= 0) return 1; @@ -5412,46 +6067,6 @@ comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2) return 0; } -static int -is_equal_mml(MinMax* a, MinMax* b) -{ - return a->min == b->min && a->max == b->max; -} - -static void -set_mml(MinMax* l, OnigLen min, OnigLen max) -{ - l->min = min; - l->max = max; -} - -static void -clear_mml(MinMax* l) -{ - l->min = l->max = 0; -} - -static void -copy_mml(MinMax* to, MinMax* from) -{ - to->min = from->min; - to->max = from->max; -} - -static void -add_mml(MinMax* to, MinMax* from) -{ - to->min = distance_add(to->min, from->min); - to->max = distance_add(to->max, from->max); -} - -static void -alt_merge_mml(MinMax* to, MinMax* from) -{ - if (to->min > from->min) to->min = from->min; - if (to->max < from->max) to->max = from->max; -} - static void copy_opt_env(OptEnv* to, OptEnv* from) { @@ -5543,12 +6158,11 @@ is_full_opt_exact(OptStr* e) static void clear_opt_exact(OptStr* e) { - clear_mml(&e->mm); + mml_clear(&e->mm); clear_opt_anc_info(&e->anc); - e->reach_end = 0; - e->case_fold = 0; - e->len = 0; - e->s[0] = '\0'; + e->reach_end = 0; + e->len = 0; + e->s[0] = '\0'; } static void @@ -5564,14 +6178,6 @@ concat_opt_exact(OptStr* to, OptStr* add, OnigEncoding enc) UChar *p, *end; OptAnc tanc; - if (add->case_fold != 0) { - if (! to->case_fold) { - if (to->len > 1 || to->len >= add->len) return 0; /* avoid */ - - to->case_fold = 1; - } - } - r = 0; p = add->s; end = p + add->len; @@ -5610,7 +6216,7 @@ concat_opt_exact_str(OptStr* to, UChar* s, UChar* end, OnigEncoding enc) to->len = i; - if (p >= end && to->len == (int )(end - s)) + if (p >= end) to->reach_end = 1; } @@ -5624,7 +6230,7 @@ alt_merge_opt_exact(OptStr* to, OptStr* add, OptEnv* env) return ; } - if (! is_equal_mml(&to->mm, &add->mm)) { + if (! mml_is_equal(&to->mm, &add->mm)) { clear_opt_exact(to); return ; } @@ -5644,8 +6250,6 @@ alt_merge_opt_exact(OptStr* to, OptStr* add, OptEnv* env) to->reach_end = 0; } to->len = i; - if (add->case_fold != 0) - to->case_fold = 1; alt_merge_opt_anc_info(&to->anc, &add->anc); if (! to->reach_end) to->anc.right = 0; @@ -5675,8 +6279,8 @@ select_opt_exact(OnigEncoding enc, OptStr* now, OptStr* alt) if (alt->len > 1) va += 5; } - if (now->case_fold == 0) vn *= 2; - if (alt->case_fold == 0) va *= 2; + vn *= 2; + va *= 2; if (comp_distance_value(&now->mm, &alt->mm, vn, va) > 0) copy_opt_exact(now, alt); @@ -5725,28 +6329,6 @@ add_char_opt_map(OptMap* m, UChar c, OnigEncoding enc) } } -static int -add_char_amb_opt_map(OptMap* map, UChar* p, UChar* end, - OnigEncoding enc, OnigCaseFoldType fold_flag) -{ - OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - int i, n; - - add_char_opt_map(map, p[0], enc); - - fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(fold_flag); - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, fold_flag, p, end, items); - if (n < 0) return n; - - for (i = 0; i < n; i++) { - ONIGENC_CODE_TO_MBC(enc, items[i].code[0], buf); - add_char_opt_map(map, buf[0], enc); - } - - return 0; -} - static void select_opt_map(OptMap* now, OptMap* alt) { @@ -5775,12 +6357,7 @@ comp_opt_exact_or_map(OptStr* e, OptMap* m) if (m->value <= 0) return -1; - if (e->case_fold != 0) { - case_value = 1; - } - else - case_value = 3; - + case_value = 3; ae = COMP_EM_BASE * e->len * case_value; am = COMP_EM_BASE * 5 * 2 / m->value; return comp_distance_value(&e->mm, &m->mm, ae, am); @@ -5791,14 +6368,14 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) { int i, val; - /* if (! is_equal_mml(&to->mm, &add->mm)) return ; */ + /* if (! mml_is_equal(&to->mm, &add->mm)) return ; */ if (to->value == 0) return ; if (add->value == 0 || to->mm.max < add->mm.min) { clear_opt_map(to); return ; } - alt_merge_mml(&to->mm, &add->mm); + mml_alt_merge(&to->mm, &add->mm); val = 0; for (i = 0; i < CHAR_MAP_SIZE; i++) { @@ -5814,17 +6391,17 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) } static void -set_bound_node_opt_info(OptNode* opt, MinMax* plen) +set_bound_node_opt_info(OptNode* opt, MinMaxLen* plen) { - copy_mml(&(opt->sb.mm), plen); - copy_mml(&(opt->spr.mm), plen); - copy_mml(&(opt->map.mm), plen); + mml_copy(&(opt->sb.mm), plen); + mml_copy(&(opt->spr.mm), plen); + mml_copy(&(opt->map.mm), plen); } static void clear_node_opt_info(OptNode* opt) { - clear_mml(&opt->len); + mml_clear(&opt->len); clear_opt_anc_info(&opt->anc); clear_opt_exact(&opt->sb); clear_opt_exact(&opt->sm); @@ -5889,7 +6466,7 @@ concat_left_node_opt_info(OnigEncoding enc, OptNode* to, OptNode* add) } select_opt_map(&to->map, &add->map); - add_mml(&to->len, &add->len); + mml_add(&to->len, &add->len); } static void @@ -5901,7 +6478,7 @@ alt_merge_node_opt_info(OptNode* to, OptNode* add, OptEnv* env) alt_merge_opt_exact(&to->spr, &add->spr, env); alt_merge_opt_map(env->enc, &to->map, &add->map); - alt_merge_mml(&to->len, &add->len); + mml_alt_merge(&to->len, &add->len); } @@ -5930,7 +6507,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) do { r = optimize_nodes(NODE_CAR(nd), &xo, &nenv); if (r == 0) { - add_mml(&nenv.mm, &xo.len); + mml_add(&nenv.mm, &xo.len); concat_left_node_opt_info(enc, opt, &xo); } } while (r == 0 && IS_NOT_NULL(nd = NODE_CDR(nd))); @@ -5956,29 +6533,11 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) StrNode* sn = STR_(node); int slen = (int )(sn->end - sn->s); - if (! NODE_STRING_IS_CASE_FOLD_MATCH(node)) { - concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); - if (slen > 0) { - add_char_opt_map(&opt->map, *(sn->s), enc); - } - set_mml(&opt->len, slen, slen); - } - else { - int max, min; - - concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); - opt->sb.case_fold = 1; - - if (slen > 0) { - r = add_char_amb_opt_map(&opt->map, sn->s, sn->end, - enc, env->case_fold_flag); - if (r != 0) break; - } - - max = slen; - min = sn->case_min_len * ONIGENC_MBC_MINLEN(enc); - set_mml(&opt->len, min, max); + concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); + if (slen > 0) { + add_char_opt_map(&opt->map, *(sn->s), enc); } + mml_set_min_max(&opt->len, slen, slen); } break; @@ -5993,7 +6552,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) OnigLen min = ONIGENC_MBC_MINLEN(enc); OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc); - set_mml(&opt->len, min, max); + mml_set_min_max(&opt->len, min, max); } else { for (i = 0; i < SINGLE_BYTE_SIZE; i++) { @@ -6002,7 +6561,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) add_char_opt_map(&opt->map, (UChar )i, enc); } } - set_mml(&opt->len, 1, 1); + mml_set_min_max(&opt->len, 1, 1); } } break; @@ -6046,7 +6605,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) else { min = ONIGENC_MBC_MINLEN(enc); } - set_mml(&opt->len, min, max); + mml_set_min_max(&opt->len, min, max); } break; @@ -6087,37 +6646,20 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) case NODE_BACKREF: if (! NODE_IS_CHECKER(node)) { - int* backs; - OnigLen min, max, tmin, tmax; - MemEnv* mem_env = SCANENV_MEMENV(env->scan_env); - BackRefNode* br = BACKREF_(node); + OnigLen min, max; - if (NODE_IS_RECURSION(node)) { - set_mml(&opt->len, 0, INFINITE_LEN); - break; - } - backs = BACKREFS_P(br); - min = tree_min_len(mem_env[backs[0]].mem_node, env->scan_env); - max = tree_max_len(mem_env[backs[0]].mem_node, env->scan_env); - for (i = 1; i < br->back_num; i++) { - tmin = tree_min_len(mem_env[backs[i]].mem_node, env->scan_env); - tmax = tree_max_len(mem_env[backs[i]].mem_node, env->scan_env); - if (min > tmin) min = tmin; - if (max < tmax) max = tmax; - } - set_mml(&opt->len, min, max); + min = node_min_byte_len(node, env->scan_env); + max = node_max_byte_len(node, env->scan_env); + mml_set_min_max(&opt->len, min, max); } break; #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) - set_mml(&opt->len, 0, INFINITE_LEN); + mml_set_min_max(&opt->len, 0, INFINITE_LEN); else { - OnigOptionType save = env->options; - env->options = BAG_(NODE_BODY(node))->o.options; r = optimize_nodes(NODE_BODY(node), opt, env); - env->options = save; } break; #endif @@ -6127,6 +6669,20 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) OnigLen min, max; QuantNode* qn = QUANT_(node); + /* Issue #175 + ex. /\g<1>{0}(?<=|())/ + + Empty and unused nodes in look-behind is removed in + tune_look_behind(). + Called group nodes are assigned to be not called if the caller side is + inside of zero-repetition. + As a result, the nodes are considered unused. + */ + if (qn->upper == 0) { + mml_set_min_max(&opt->len, 0, 0); + break; + } + r = optimize_nodes(NODE_BODY(node), &xo, env); if (r != 0) break; @@ -6153,7 +6709,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) if (IS_INFINITE_REPEAT(qn->upper)) { if (env->mm.max == 0 && NODE_IS_ANYCHAR(NODE_BODY(node)) && qn->greedy != 0) { - if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), env))) + if (NODE_IS_MULTILINE(NODE_QUANT_BODY(qn))) add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_ML); else add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF); @@ -6166,7 +6722,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) } min = distance_multiply(xo.len.min, qn->lower); - set_mml(&opt->len, min, max); + mml_set_min_max(&opt->len, min, max); } break; @@ -6175,14 +6731,9 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) BagNode* en = BAG_(node); switch (en->type) { + case BAG_STOP_BACKTRACK: case BAG_OPTION: - { - OnigOptionType save = env->options; - - env->options = en->o.options; - r = optimize_nodes(NODE_BODY(node), opt, env); - env->options = save; - } + r = optimize_nodes(NODE_BODY(node), opt, env); break; case BAG_MEMORY: @@ -6193,9 +6744,9 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) min = 0; max = INFINITE_LEN; - if (NODE_IS_MIN_FIXED(node)) min = en->min_len; - if (NODE_IS_MAX_FIXED(node)) max = en->max_len; - set_mml(&opt->len, min, max); + if (NODE_IS_FIXED_MIN(node)) min = en->min_len; + if (NODE_IS_FIXED_MAX(node)) max = en->max_len; + mml_set_min_max(&opt->len, min, max); } else #endif @@ -6208,10 +6759,6 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) } break; - case BAG_STOP_BACKTRACK: - r = optimize_nodes(NODE_BODY(node), opt, env); - break; - case BAG_IF_ELSE: { OptEnv nenv; @@ -6219,7 +6766,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) copy_opt_env(&nenv, env); r = optimize_nodes(NODE_BAG_BODY(en), &xo, &nenv); if (r == 0) { - add_mml(&nenv.mm, &xo.len); + mml_add(&nenv.mm, &xo.len); concat_left_node_opt_info(enc, opt, &xo); if (IS_NOT_NULL(en->te.Then)) { r = optimize_nodes(en->te.Then, &xo, &nenv); @@ -6245,7 +6792,7 @@ optimize_nodes(Node* node, OptNode* opt, OptEnv* env) default: #ifdef ONIG_DEBUG - fprintf(stderr, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node)); + fprintf(DBGFP, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node)); #endif r = ONIGERR_TYPE_BUG; break; @@ -6258,6 +6805,7 @@ static int set_optimize_exact(regex_t* reg, OptStr* e) { int r; + int allow_reverse; if (e->len == 0) return 0; @@ -6266,40 +6814,28 @@ set_optimize_exact(regex_t* reg, OptStr* e) xmemcpy(reg->exact, e->s, e->len); reg->exact_end = reg->exact + e->len; - if (e->case_fold) { - reg->optimize = OPTIMIZE_STR_CASE_FOLD; - } - else { - int allow_reverse; + allow_reverse = + ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); - allow_reverse = - ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); - - if (e->len >= 2 || (e->len >= 1 && allow_reverse)) { - r = set_sunday_quick_search_or_bmh_skip_table(reg, 0, - reg->exact, reg->exact_end, - reg->map, &(reg->map_offset)); - if (r != 0) return r; + if (e->len >= 2 || (e->len >= 1 && allow_reverse)) { + r = set_sunday_quick_search_or_bmh_skip_table(reg, 0, + reg->exact, reg->exact_end, + reg->map, &(reg->map_offset)); + if (r != 0) return r; - reg->optimize = (allow_reverse != 0 - ? OPTIMIZE_STR_FAST - : OPTIMIZE_STR_FAST_STEP_FORWARD); - } - else { - reg->optimize = OPTIMIZE_STR; - } + reg->optimize = (allow_reverse != 0 + ? OPTIMIZE_STR_FAST + : OPTIMIZE_STR_FAST_STEP_FORWARD); + } + else { + reg->optimize = OPTIMIZE_STR; } reg->dist_min = e->mm.min; reg->dist_max = e->mm.max; if (reg->dist_min != INFINITE_LEN) { - int n; - if (e->case_fold != 0) - n = 1; - else - n = (int )(reg->exact_end - reg->exact); - + int n = (int )(reg->exact_end - reg->exact); reg->threshold_len = reg->dist_min + n; } @@ -6319,7 +6855,7 @@ set_optimize_map(regex_t* reg, OptMap* m) reg->dist_max = m->mm.max; if (reg->dist_min != INFINITE_LEN) { - reg->threshold_len = reg->dist_min + 1; + reg->threshold_len = reg->dist_min + ONIGENC_MBC_MINLEN(reg->enc); } } @@ -6342,10 +6878,9 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) OptEnv env; env.enc = reg->enc; - env.options = reg->options; env.case_fold_flag = reg->case_fold_flag; env.scan_env = scan_env; - clear_mml(&env.mm); + mml_clear(&env.mm); r = optimize_nodes(node, &opt, &env); if (r != 0) return r; @@ -6387,7 +6922,7 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) - print_optimize_info(stderr, reg); + print_optimize_info(DBGFP, reg); #endif return r; } @@ -6414,8 +6949,6 @@ clear_optimize_info(regex_t* reg) static void print_enc_string(FILE* fp, OnigEncoding enc, const UChar *s, const UChar *end) { - fprintf(fp, "\nPATTERN: /"); - if (ONIGENC_MBC_MINLEN(enc) > 1) { const UChar *p; OnigCodePoint code; @@ -6515,9 +7048,8 @@ print_anchor(FILE* f, int anchor) static void print_optimize_info(FILE* f, regex_t* reg) { - static const char* on[] = { "NONE", "STR", - "STR_FAST", "STR_FAST_STEP_FORWARD", - "STR_CASE_FOLD", "MAP" }; + static const char* on[] = + { "NONE", "STR", "STR_FAST", "STR_FAST_STEP_FORWARD", "MAP" }; fprintf(f, "optimize: %s\n", on[reg->optimize]); fprintf(f, " anchor: "); print_anchor(f, reg->anchor); @@ -6537,7 +7069,12 @@ print_optimize_info(FILE* f, regex_t* reg) for (p = reg->exact; p < reg->exact_end; p++) { fputc(*p, f); } - fprintf(f, "]: length: %ld\n", (reg->exact_end - reg->exact)); + fprintf(f, "]: length: %ld, dmin: %u, ", + (reg->exact_end - reg->exact), reg->dist_min); + if (reg->dist_max == INFINITE_LEN) + fprintf(f, "dmax: inf.\n"); + else + fprintf(f, "dmax: %u\n", reg->dist_max); } else if (reg->optimize & OPTIMIZE_MAP) { int c, i, n = 0; @@ -6545,7 +7082,8 @@ print_optimize_info(FILE* f, regex_t* reg) for (i = 0; i < CHAR_MAP_SIZE; i++) if (reg->map[i]) n++; - fprintf(f, "map: n=%d\n", n); + fprintf(f, "map: n=%d, dmin: %u, dmax: %u\n", + n, reg->dist_min, reg->dist_max); if (n > 0) { c = 0; fputc('[', f); @@ -6680,7 +7218,8 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, } #ifdef ONIG_DEBUG - print_enc_string(stderr, reg->enc, pattern, pattern_end); + fprintf(DBGFP, "\nPATTERN: /"); + print_enc_string(DBGFP, reg->enc, pattern, pattern_end); #endif if (reg->ops_alloc == 0) { @@ -6708,7 +7247,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, /* mixed use named group and no-named group */ if (scan_env.num_named > 0 && IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - ! ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { + ! OPTON_CAPTURE_GROUP(reg->options)) { if (scan_env.num_named != scan_env.num_mem) r = disable_noname_group_capture(&root, reg, &scan_env); else @@ -6741,10 +7280,10 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, #endif #ifdef ONIG_DEBUG_PARSE - fprintf(stderr, "MAX PARSE DEPTH: %d\n", scan_env.max_parse_depth); - fprintf(stderr, "TREE (parsed)\n"); - print_tree(stderr, root); - fprintf(stderr, "\n"); + fprintf(DBGFP, "MAX PARSE DEPTH: %d\n", scan_env.max_parse_depth); + fprintf(DBGFP, "TREE (parsed)\n"); + print_tree(DBGFP, root); + fprintf(DBGFP, "\n"); #endif r = tune_tree(root, reg, 0, &scan_env); @@ -6758,13 +7297,13 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, } #ifdef ONIG_DEBUG_PARSE - fprintf(stderr, "TREE (after tune)\n"); - print_tree(stderr, root); - fprintf(stderr, "\n"); + fprintf(DBGFP, "TREE (after tune)\n"); + print_tree(DBGFP, root); + fprintf(DBGFP, "\n"); #endif - reg->capture_history = scan_env.cap_history; - reg->push_mem_start = scan_env.backtrack_mem | scan_env.cap_history; + reg->capture_history = scan_env.cap_history; + reg->push_mem_start = scan_env.backtrack_mem | scan_env.cap_history; #ifdef USE_CALLOUT if (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0) { @@ -6804,6 +7343,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, COP(reg)->update_var.type = UPDATE_VAR_KEEP_FROM_STACK_LAST; COP(reg)->update_var.id = 0; /* not used */ + COP(reg)->update_var.clear = FALSE; } r = add_op(reg, OP_END); @@ -6827,6 +7367,9 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, #ifdef USE_CALLOUT || (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0) #endif +#ifdef USE_CALL + || scan_env.num_call > 0 +#endif ) reg->stack_pop_level = STACK_POP_LEVEL_ALL; else { @@ -6847,8 +7390,8 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, onig_node_free(root); #ifdef ONIG_DEBUG_COMPILE - onig_print_names(stderr, reg); - onig_print_compiled_byte_code_list(stderr, reg); + onig_print_names(DBGFP, reg); + onig_print_compiled_byte_code_list(DBGFP, reg); #endif #ifdef USE_DIRECT_THREADED_CODE @@ -6920,20 +7463,18 @@ onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_fl else option |= syntax->options; - (reg)->enc = enc; - (reg)->options = option; - (reg)->syntax = syntax; - (reg)->optimize = 0; - (reg)->exact = (UChar* )NULL; - (reg)->extp = (RegexExt* )NULL; - - (reg)->ops = (Operation* )NULL; - (reg)->ops_curr = (Operation* )NULL; - (reg)->ops_used = 0; - (reg)->ops_alloc = 0; - (reg)->name_table = (void* )NULL; - - (reg)->case_fold_flag = case_fold_flag; + (reg)->enc = enc; + (reg)->options = option; + (reg)->syntax = syntax; + (reg)->optimize = 0; + (reg)->exact = (UChar* )NULL; + (reg)->extp = (RegexExt* )NULL; + (reg)->ops = (Operation* )NULL; + (reg)->ops_curr = (Operation* )NULL; + (reg)->ops_used = 0; + (reg)->ops_alloc = 0; + (reg)->name_table = (void* )NULL; + (reg)->case_fold_flag = case_fold_flag; return 0; } @@ -7171,8 +7712,8 @@ print_indent_tree(FILE* f, Node* node, int indent) if (NODE_STRING_IS_CRUDE(node)) mode = "-crude"; - else if (NODE_STRING_IS_CASE_FOLD_MATCH(node)) - mode = "-case_fold_match"; + else if (NODE_IS_IGNORECASE(node)) + mode = "-ignorecase"; else mode = ""; @@ -7208,7 +7749,7 @@ print_indent_tree(FILE* f, Node* node, int indent) fprintf(f, "<ctype:%p> ", node); switch (CTYPE_(node)->ctype) { case CTYPE_ANYCHAR: - fprintf(f, "<anychar:%p>", node); + fprintf(f, "anychar"); break; case ONIGENC_CTYPE_WORD: @@ -7295,9 +7836,10 @@ print_indent_tree(FILE* f, Node* node, int indent) #endif case NODE_QUANT: - fprintf(f, "<quantifier:%p>{%d,%d}%s\n", node, + fprintf(f, "<quantifier:%p>{%d,%d}%s%s\n", node, QUANT_(node)->lower, QUANT_(node)->upper, - (QUANT_(node)->greedy ? "" : "?")); + (QUANT_(node)->greedy ? "" : "?"), + QUANT_(node)->include_referred == 0 ? "" : " referred"); print_indent_tree(f, NODE_BODY(node), indent + add); break; @@ -7337,6 +7879,10 @@ print_indent_tree(FILE* f, Node* node, int indent) break; case BAG_MEMORY: fprintf(f, "memory:%d", BAG_(node)->m.regnum); + if (NODE_IS_CALLED(node)) + fprintf(f, ", called"); + if (NODE_IS_FIXED_ADDR(node)) + fprintf(f, ", fixed-addr"); break; case BAG_STOP_BACKTRACK: fprintf(f, "stop-bt"); diff --git a/src/regenc.c b/src/regenc.c index 16ac313..dbfbc89 100644 --- a/src/regenc.c +++ b/src/regenc.c @@ -29,6 +29,9 @@ #include "regint.h" +#define LARGE_S 0x53 +#define SMALL_S 0x73 + OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT; #define INITED_LIST_SIZE 20 @@ -549,7 +552,7 @@ static int ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, OnigApplyAllCaseFoldFunc f, void* arg) { - static OnigCodePoint ss[] = { 0x73, 0x73 }; + static OnigCodePoint ss[] = { SMALL_S, SMALL_S }; return (*f)((OnigCodePoint )0xdf, ss, 2, arg); } @@ -588,35 +591,48 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, int ess_tsett_flag, OnigCaseFoldType flag ARG_UNUSED, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - if (0x41 <= *p && *p <= 0x5a) { + int i, j, n; + static OnigUChar sa[] = { LARGE_S, SMALL_S }; + + if (0x41 <= *p && *p <= 0x5a) { /* A - Z */ + if (*p == LARGE_S && ess_tsett_flag != 0 && end > p + 1 + && (*(p+1) == LARGE_S || *(p+1) == SMALL_S)) { /* SS */ + ss_combination: + items[0].byte_len = 2; + items[0].code_len = 1; + items[0].code[0] = (OnigCodePoint )0xdf; + + n = 1; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (sa[i] == *p && sa[j] == *(p+1)) + continue; + + items[n].byte_len = 2; + items[n].code_len = 2; + items[n].code[0] = (OnigCodePoint )sa[i]; + items[n].code[1] = (OnigCodePoint )sa[j]; + n++; + } + } + return 4; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); - if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x53 || *(p+1) == 0x73)) { - /* SS */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } - else if (0x61 <= *p && *p <= 0x7a) { + else if (0x61 <= *p && *p <= 0x7a) { /* a - z */ + if (*p == SMALL_S && ess_tsett_flag != 0 && end > p + 1 + && (*(p+1) == SMALL_S || *(p+1) == LARGE_S)) { + goto ss_combination; + } + items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); - if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x73 || *(p+1) == 0x53)) { - /* ss */ - items[1].byte_len = 2; - items[1].code_len = 1; - items[1].code[0] = (OnigCodePoint )0xdf; - return 2; - } - else - return 1; + return 1; } else if (*p == 0xdf && ess_tsett_flag != 0) { items[0].byte_len = 1; @@ -676,7 +692,7 @@ extern int onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end) { if (p < end) { - if (*p == 0x0a) return 1; + if (*p == NEWLINE_CODE) return 1; } return 0; } @@ -887,7 +903,7 @@ onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end) { OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end); - if (code > 127) return 0; + if (code > ASCII_LIMIT) return 0; return ONIGENC_IS_ASCII_CODE_WORD(code); } diff --git a/src/regenc.h b/src/regenc.h index db35841..d183b97 100644 --- a/src/regenc.h +++ b/src/regenc.h @@ -4,7 +4,7 @@ regenc.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,7 +34,10 @@ #endif #include "config.h" + +#ifndef ONIG_NO_STANDARD_C_HEADERS #include <stddef.h> +#endif #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION @@ -74,6 +77,8 @@ typedef struct { #define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val) #define MAX_CODE_POINT (~((OnigCodePoint )0)) +#define ASCII_LIMIT 127 +#define NEWLINE_CODE 0x0a #define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p) diff --git a/src/regerror.c b/src/regerror.c index b57a276..58bc7fd 100644 --- a/src/regerror.c +++ b/src/regerror.c @@ -2,7 +2,7 @@ regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,10 +27,12 @@ * SUCH DAMAGE. */ -#include "regint.h" -#include <stdio.h> /* for vsnprintf() */ +#ifndef NEED_TO_INCLUDE_STDIO +/* for vsnprintf() */ +#define NEED_TO_INCLUDE_STDIO +#endif -#include <stdarg.h> +#include "regint.h" extern UChar* onig_error_code_to_format(int code) @@ -52,6 +54,8 @@ onig_error_code_to_format(int code) p = "parse depth limit over"; break; case ONIGERR_RETRY_LIMIT_IN_MATCH_OVER: p = "retry-limit-in-match over"; break; + case ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER: + p = "retry-limit-in-search over"; break; case ONIGERR_TYPE_BUG: p = "undefined type (bug)"; break; case ONIGERR_PARSER_BUG: @@ -277,7 +281,8 @@ onig_is_error_code_needs_param(int code) /* for ONIG_MAX_ERROR_MESSAGE_LEN */ #define MAX_ERROR_PAR_LEN 30 -extern int onig_error_code_to_str(UChar* s, int code, ...) +extern int ONIG_VARIADIC_FUNC_ATTR +onig_error_code_to_str(UChar* s, int code, ...) { UChar *p, *q; OnigErrorInfo* einfo; @@ -337,8 +342,9 @@ extern int onig_error_code_to_str(UChar* s, int code, ...) } -void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, ...) +void ONIG_VARIADIC_FUNC_ATTR +onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, + UChar* pat, UChar* pat_end, const UChar *fmt, ...) { int n, need, len; UChar *p, *s, *bp; diff --git a/src/regexec.c b/src/regexec.c index ce498c6..1b6895d 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -2,7 +2,7 @@ regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,6 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +#ifndef ONIG_NO_PRINT +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif +#endif + #include "regint.h" #define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \ @@ -65,7 +72,10 @@ typedef struct { struct OnigMatchParamStruct { unsigned int match_stack_limit; +#ifdef USE_RETRY_LIMIT unsigned long retry_limit_in_match; + unsigned long retry_limit_in_search; +#endif #ifdef USE_CALLOUT OnigCalloutFunc progress_callout_of_contents; OnigCalloutFunc retraction_callout_of_contents; @@ -88,8 +98,24 @@ extern int onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* param, unsigned long limit) { +#ifdef USE_RETRY_LIMIT param->retry_limit_in_match = limit; return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_retry_limit_in_search_of_match_param(OnigMatchParam* param, + unsigned long limit) +{ +#ifdef USE_RETRY_LIMIT + param->retry_limit_in_search = limit; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif } extern int @@ -134,7 +160,11 @@ typedef struct { int ptr_num; const UChar* start; /* search start position (for \G: BEGIN_POSITION) */ unsigned int match_stack_limit; +#ifdef USE_RETRY_LIMIT unsigned long retry_limit_in_match; + unsigned long retry_limit_in_search; + unsigned long retry_limit_in_search_counter; +#endif OnigMatchParam* mp; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE int best_len; /* for ONIG_OPTION_FIND_LONGEST */ @@ -177,8 +207,6 @@ static OpInfoType OpInfo[] = { { OP_STR_MB2N, "str_mb2-n"}, { OP_STR_MB3N, "str_mb3n"}, { OP_STR_MBN, "str_mbn"}, - { OP_STR_1_IC, "str_1-ic"}, - { OP_STR_N_IC, "str_n-ic"}, { OP_CCLASS, "cclass"}, { OP_CCLASS_MB, "cclass-mb"}, { OP_CCLASS_MIX, "cclass-mix"}, @@ -205,7 +233,7 @@ static OpInfoType OpInfo[] = { { OP_BEGIN_LINE, "begin-line"}, { OP_END_LINE, "end-line"}, { OP_SEMI_END_BUF, "semi-end-buf"}, - { OP_BEGIN_POSITION, "begin-position"}, + { OP_CHECK_POSITION, "check-position"}, { OP_BACKREF1, "backref1"}, { OP_BACKREF2, "backref2"}, { OP_BACKREF_N, "backref-n"}, @@ -230,7 +258,8 @@ static OpInfoType OpInfo[] = { { OP_JUMP, "jump"}, { OP_PUSH, "push"}, { OP_PUSH_SUPER, "push-super"}, - { OP_POP_OUT, "pop-out"}, + { OP_POP, "pop"}, + { OP_POP_TO_MARK, "pop-to-mark"}, #ifdef USE_OP_PUSH_OR_JUMP_EXACT { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1"}, #endif @@ -245,16 +274,12 @@ static OpInfoType OpInfo[] = { #ifdef USE_CALL { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push"}, #endif - { OP_PREC_READ_START, "push-pos"}, - { OP_PREC_READ_END, "pop-pos"}, - { OP_PREC_READ_NOT_START, "prec-read-not-start"}, - { OP_PREC_READ_NOT_END, "prec-read-not-end"}, - { OP_ATOMIC_START, "atomic-start"}, - { OP_ATOMIC_END, "atomic-end"}, - { OP_LOOK_BEHIND, "look-behind"}, - { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start"}, - { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end"}, - { OP_PUSH_SAVE_VAL, "push-save-val"}, + { OP_MOVE, "move"}, + { OP_STEP_BACK_START, "step-back-start"}, + { OP_STEP_BACK_NEXT, "step-back-next"}, + { OP_CUT_TO_MARK, "cut-to-mark"}, + { OP_MARK, "mark"}, + { OP_SAVE_VAL, "save-val"}, { OP_UPDATE_VAR, "update-var"}, #ifdef USE_CALL { OP_CALL, "call"}, @@ -280,9 +305,14 @@ op2name(int opcode) } static void +p_after_op(FILE* f) +{ + fputs(" ", f); +} + +static void p_string(FILE* f, int len, UChar* s) { - fputs(":", f); while (len-- > 0) { fputc(*s++, f); } } @@ -291,16 +321,27 @@ p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) { int x = len * mb_len; - fprintf(f, ":%d:", len); + fprintf(f, "len:%d ", len); while (x-- > 0) { fputc(*s++, f); } } static void p_rel_addr(FILE* f, RelAddrType rel_addr, Operation* p, Operation* start) { - RelAddrType curr = (RelAddrType )(p - start); + char* flag; + char* space1; + char* space2; + RelAddrType curr; + AbsAddrType abs_addr; - fprintf(f, "{%d/%d}", rel_addr, curr + rel_addr); + curr = (RelAddrType )(p - start); + abs_addr = curr + rel_addr; + + flag = rel_addr < 0 ? "" : "+"; + space1 = rel_addr < 10 ? " " : ""; + space2 = abs_addr < 10 ? " " : ""; + + fprintf(f, "%s%s%d => %s%d", space1, flag, rel_addr, space2, abs_addr); } static int @@ -316,10 +357,32 @@ bitset_on_num(BitSetRef bs) return n; } + +#ifdef USE_DIRECT_THREADED_CODE +#define GET_OPCODE(reg,index) (reg)->ocs[index] +#else +#define GET_OPCODE(reg,index) (reg)->ops[index].opcode +#endif + static void print_compiled_byte_code(FILE* f, regex_t* reg, int index, Operation* start, OnigEncoding enc) { + static char* SaveTypeNames[] = { + "KEEP", + "S", + "RIGHT_RANGE" + }; + + static char* UpdateVarTypeNames[] = { + "KEEP_FROM_STACK_LAST", + "S_FROM_STACK", + "RIGHT_RANGE_FROM_STACK", + "RIGHT_RANGE_FROM_S_STACK", + "RIGHT_RANGE_TO_S", + "RIGHT_RANGE_INIT" + }; + int i, n; RelAddrType addr; LengthType len; @@ -332,13 +395,11 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, p = reg->ops + index; -#ifdef USE_DIRECT_THREADED_CODE - opcode = reg->ocs[index]; -#else - opcode = p->opcode; -#endif + opcode = GET_OPCODE(reg, index); fprintf(f, "%s", op2name(opcode)); + p_after_op(f); + switch (opcode) { case OP_STR_1: p_string(f, 1, p->exact.s); break; @@ -372,24 +433,16 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, mb_len = p->exact_len_n.len; len = p->exact_len_n.n; q = p->exact_len_n.s; - fprintf(f, ":%d:%d:", mb_len, len); + fprintf(f, "mblen:%d len:%d ", mb_len, len); n = len * mb_len; while (n-- > 0) { fputc(*q++, f); } } break; - case OP_STR_1_IC: - len = enclen(enc, p->exact.s); - p_string(f, len, p->exact.s); - break; - case OP_STR_N_IC: - len = p->exact_n.n; - p_len_string(f, len, 1, p->exact_n.s); - break; case OP_CCLASS: case OP_CCLASS_NOT: n = bitset_on_num(p->cclass.bsp); - fprintf(f, ":%d", n); + fprintf(f, "n:%d", n); break; case OP_CCLASS_MB: case OP_CCLASS_MB_NOT: @@ -401,7 +454,7 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, GET_CODE_POINT(ncode, codes); codes++; GET_CODE_POINT(code, codes); - fprintf(f, ":%d:0x%x", ncode, code); + fprintf(f, "n:%d code:0x%x", ncode, code); } break; case OP_CCLASS_MIX: @@ -416,7 +469,7 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, GET_CODE_POINT(ncode, codes); codes++; GET_CODE_POINT(code, codes); - fprintf(f, ":%d:%u:%u", n, code, ncode); + fprintf(f, "nsg:%d code:%u nmb:%u", n, code, ncode); } break; @@ -430,19 +483,19 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_WORD_BEGIN: case OP_WORD_END: mode = p->word_boundary.mode; - fprintf(f, ":%d", mode); + fprintf(f, "mode:%d", mode); break; case OP_BACKREF_N: case OP_BACKREF_N_IC: mem = p->backref_n.n1; - fprintf(f, ":%d", mem); + fprintf(f, "n:%d", mem); break; case OP_BACKREF_MULTI_IC: case OP_BACKREF_MULTI: case OP_BACKREF_CHECK: - fputs(" ", f); n = p->backref_general.num; + fprintf(f, "n:%d ", n); for (i = 0; i < n; i++) { mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; if (i > 0) fputs(", ", f); @@ -456,8 +509,7 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, LengthType level; level = p->backref_general.nest_level; - fprintf(f, ":%d", level); - fputs(" ", f); + fprintf(f, "level:%d ", level); n = p->backref_general.num; for (i = 0; i < n; i++) { mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; @@ -470,7 +522,7 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_MEM_START: case OP_MEM_START_PUSH: mem = p->memory_start.num; - fprintf(f, ":%d", mem); + fprintf(f, "mem:%d", mem); break; case OP_MEM_END: @@ -480,35 +532,33 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_MEM_END_PUSH_REC: #endif mem = p->memory_end.num; - fprintf(f, ":%d", mem); + fprintf(f, "mem:%d", mem); break; case OP_JUMP: addr = p->jump.addr; - fputc(':', f); p_rel_addr(f, addr, p, start); break; case OP_PUSH: case OP_PUSH_SUPER: addr = p->push.addr; - fputc(':', f); p_rel_addr(f, addr, p, start); break; #ifdef USE_OP_PUSH_OR_JUMP_EXACT case OP_PUSH_OR_JUMP_EXACT1: addr = p->push_or_jump_exact1.addr; - fputc(':', f); p_rel_addr(f, addr, p, start); + fprintf(f, " c:"); p_string(f, 1, &(p->push_or_jump_exact1.c)); break; #endif case OP_PUSH_IF_PEEK_NEXT: addr = p->push_if_peek_next.addr; - fputc(':', f); p_rel_addr(f, addr, p, start); + fprintf(f, " c:"); p_string(f, 1, &(p->push_if_peek_next.c)); break; @@ -516,19 +566,19 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_REPEAT_NG: mem = p->repeat.id; addr = p->repeat.addr; - fprintf(f, ":%d:", mem); + fprintf(f, "id:%d ", mem); p_rel_addr(f, addr, p, start); break; case OP_REPEAT_INC: case OP_REPEAT_INC_NG: mem = p->repeat.id; - fprintf(f, ":%d", mem); + fprintf(f, "id:%d", mem); break; case OP_EMPTY_CHECK_START: mem = p->empty_check_start.mem; - fprintf(f, ":%d", mem); + fprintf(f, "id:%d", mem); break; case OP_EMPTY_CHECK_END: case OP_EMPTY_CHECK_END_MEMST: @@ -536,58 +586,82 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_EMPTY_CHECK_END_MEMST_PUSH: #endif mem = p->empty_check_end.mem; - fprintf(f, ":%d", mem); + fprintf(f, "id:%d", mem); break; - case OP_PREC_READ_NOT_START: - addr = p->prec_read_not_start.addr; - fputc(':', f); - p_rel_addr(f, addr, p, start); +#ifdef USE_CALL + case OP_CALL: + addr = p->call.addr; + fprintf(f, "=> %d", addr); break; +#endif - case OP_LOOK_BEHIND: - len = p->look_behind.len; - fprintf(f, ":%d", len); + case OP_MOVE: + fprintf(f, "n:%d", p->move.n); break; - case OP_LOOK_BEHIND_NOT_START: - addr = p->look_behind_not_start.addr; - len = p->look_behind_not_start.len; - fprintf(f, ":%d:", len); + case OP_STEP_BACK_START: + addr = p->step_back_start.addr; + fprintf(f, "init:%d rem:%d ", + p->step_back_start.initial, + p->step_back_start.remaining); p_rel_addr(f, addr, p, start); break; -#ifdef USE_CALL - case OP_CALL: - addr = p->call.addr; - fprintf(f, ":{/%d}", addr); + case OP_POP_TO_MARK: + mem = p->pop_to_mark.id; + fprintf(f, "id:%d", mem); + break; + + case OP_CUT_TO_MARK: + { + int restore; + + mem = p->cut_to_mark.id; + restore = p->cut_to_mark.restore_pos; + fprintf(f, "id:%d restore:%d", mem, restore); + } break; -#endif - case OP_PUSH_SAVE_VAL: + case OP_MARK: + { + int save; + + mem = p->mark.id; + save = p->mark.save_pos; + fprintf(f, "id:%d save:%d", mem, save); + } + break; + + case OP_SAVE_VAL: { SaveType type; - type = p->push_save_val.type; - mem = p->push_save_val.id; - fprintf(f, ":%d:%d", type, mem); + type = p->save_val.type; + mem = p->save_val.id; + fprintf(f, "%s id:%d", SaveTypeNames[type], mem); } break; case OP_UPDATE_VAR: { UpdateVarType type; + int clear; type = p->update_var.type; mem = p->update_var.id; - fprintf(f, ":%d:%d", type, mem); + clear = p->update_var.clear; + fprintf(f, "%s id:%d", UpdateVarTypeNames[type], mem); + if (type == UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK || + type == UPDATE_VAR_RIGHT_RANGE_FROM_STACK) + fprintf(f, " clear:%d", clear); } break; #ifdef USE_CALLOUT case OP_CALLOUT_CONTENTS: mem = p->callout_contents.num; - fprintf(f, ":%d", mem); + fprintf(f, "num:%d", mem); break; case OP_CALLOUT_NAME: @@ -596,14 +670,25 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, id = p->callout_name.id; mem = p->callout_name.num; - fprintf(f, ":%d:%d", id, mem); + fprintf(f, "id:%d num:%d", id, mem); } break; #endif case OP_TEXT_SEGMENT_BOUNDARY: if (p->text_segment_boundary.not != 0) - fprintf(f, ":not"); + fprintf(f, " not"); + break; + + case OP_CHECK_POSITION: + switch (p->check_position.type) { + case CHECK_POSITION_SEARCH_START: + fprintf(f, "search-start"); break; + case CHECK_POSITION_CURRENT_RIGHT_RANGE: + fprintf(f, "current-right-range"); break; + default: + break; + }; break; case OP_FINISH: @@ -621,24 +706,18 @@ print_compiled_byte_code(FILE* f, regex_t* reg, int index, case OP_BEGIN_LINE: case OP_END_LINE: case OP_SEMI_END_BUF: - case OP_BEGIN_POSITION: case OP_BACKREF1: case OP_BACKREF2: case OP_FAIL: - case OP_POP_OUT: - case OP_PREC_READ_START: - case OP_PREC_READ_END: - case OP_PREC_READ_NOT_END: - case OP_ATOMIC_START: - case OP_ATOMIC_END: - case OP_LOOK_BEHIND_NOT_END: + case OP_POP: + case OP_STEP_BACK_NEXT: #ifdef USE_CALL case OP_RETURN: #endif break; default: - fprintf(stderr, "print_compiled_byte_code: undefined code %d\n", opcode); + fprintf(DBGFP, "print_compiled_byte_code: undefined code %d\n", opcode); break; } } @@ -986,8 +1065,6 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) /* used by normal-POP */ #define STK_SUPER_ALT STK_ALT_FLAG #define STK_ALT (0x0002 | STK_ALT_FLAG) -#define STK_ALT_PREC_READ_NOT (0x0004 | STK_ALT_FLAG) -#define STK_ALT_LOOK_BEHIND_NOT (0x0006 | STK_ALT_FLAG) /* handled by normal-POP */ #define STK_MEM_START 0x0010 @@ -1010,13 +1087,10 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) #endif #define STK_EMPTY_CHECK_END 0x5000 /* for recursive call */ #define STK_MEM_END_MARK 0x8100 -#define STK_TO_VOID_START 0x1200 /* mark for "(?>...)" */ -/* #define STK_REPEAT 0x0300 */ -#define STK_CALL_FRAME 0x0400 -#define STK_RETURN 0x0500 +#define STK_CALL_FRAME (0x0400 | STK_MASK_POP_HANDLED) +#define STK_RETURN (0x0500 | STK_MASK_POP_HANDLED) #define STK_SAVE_VAL 0x0600 -#define STK_PREC_READ_START 0x0700 -#define STK_PREC_READ_END 0x0800 +#define STK_MARK 0x0704 /* stack type check mask */ #define STK_MASK_POP_USED STK_ALT_FLAG @@ -1134,6 +1208,21 @@ struct OnigCalloutArgsStruct { #endif /* USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR */ +#ifdef USE_RETRY_LIMIT +#define RETRY_IN_MATCH_ARG_INIT(msa,mpv) \ + (msa).retry_limit_in_match = (mpv)->retry_limit_in_match;\ + (msa).retry_limit_in_search = (mpv)->retry_limit_in_search;\ + (msa).retry_limit_in_search_counter = 0; +#else +#define RETRY_IN_MATCH_ARG_INIT(msa,mpv) +#endif + +#if defined(USE_CALL) +#define POP_CALL else if (stk->type == STK_RETURN) {subexp_call_nest_counter++;} else if (stk->type == STK_CALL_FRAME) {subexp_call_nest_counter--;} +#else +#define POP_CALL +#endif + #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE #define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mpv) do { \ (msa).stack_p = (void* )0;\ @@ -1141,7 +1230,7 @@ struct OnigCalloutArgsStruct { (msa).region = (arg_region);\ (msa).start = (arg_start);\ (msa).match_stack_limit = (mpv)->match_stack_limit;\ - (msa).retry_limit_in_match = (mpv)->retry_limit_in_match;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ (msa).mp = mpv;\ (msa).best_len = ONIG_MISMATCH;\ (msa).ptr_num = PTR_NUM_SIZE(reg);\ @@ -1153,7 +1242,7 @@ struct OnigCalloutArgsStruct { (msa).region = (arg_region);\ (msa).start = (arg_start);\ (msa).match_stack_limit = (mpv)->match_stack_limit;\ - (msa).retry_limit_in_match = (mpv)->retry_limit_in_match;\ + RETRY_IN_MATCH_ARG_INIT(msa,mpv)\ (msa).mp = mpv;\ (msa).ptr_num = PTR_NUM_SIZE(reg);\ } while(0) @@ -1196,17 +1285,17 @@ struct OnigCalloutArgsStruct { } while(0); -#define STACK_SAVE do{\ - msa->stack_n = (int )(stk_end - stk_base);\ - if (is_alloca != 0) {\ - size_t size = sizeof(StackIndex) * msa->ptr_num \ - + sizeof(StackType) * msa->stack_n;\ - msa->stack_p = xmalloc(size);\ - CHECK_NULL_RETURN_MEMERR(msa->stack_p);\ - xmemcpy(msa->stack_p, alloc_base, size);\ +#define STACK_SAVE(msa,is_alloca,alloc_base) do{\ + (msa)->stack_n = (int )(stk_end - stk_base);\ + if ((is_alloca) != 0) {\ + size_t size = sizeof(StackIndex) * (msa)->ptr_num\ + + sizeof(StackType) * (msa)->stack_n;\ + (msa)->stack_p = xmalloc(size);\ + CHECK_NULL_RETURN_MEMERR((msa)->stack_p);\ + xmemcpy((msa)->stack_p, (alloc_base), size);\ }\ else {\ - msa->stack_p = alloc_base;\ + (msa)->stack_p = (alloc_base);\ };\ } while(0) @@ -1225,13 +1314,14 @@ onig_set_match_stack_limit_size(unsigned int size) return 0; } -#ifdef USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_RETRY_LIMIT -static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH; +static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH; +static unsigned long RetryLimitInSearch = DEFAULT_RETRY_LIMIT_IN_SEARCH; #define CHECK_RETRY_LIMIT_IN_MATCH do {\ - if (retry_in_match_counter++ > retry_limit_in_match) {\ - MATCH_AT_ERROR_RETURN(ONIGERR_RETRY_LIMIT_IN_MATCH_OVER);\ + if (++retry_in_match_counter > retry_limit_in_match) {\ + MATCH_AT_ERROR_RETURN(retry_in_match_counter > msa->retry_limit_in_match ? ONIGERR_RETRY_LIMIT_IN_MATCH_OVER : ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER); \ }\ } while (0) @@ -1239,24 +1329,44 @@ static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH; #define CHECK_RETRY_LIMIT_IN_MATCH -#endif /* USE_RETRY_LIMIT_IN_MATCH */ +#endif /* USE_RETRY_LIMIT */ extern unsigned long onig_get_retry_limit_in_match(void) { -#ifdef USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_RETRY_LIMIT return RetryLimitInMatch; #else - /* return ONIG_NO_SUPPORT_CONFIG; */ return 0; #endif } extern int -onig_set_retry_limit_in_match(unsigned long size) +onig_set_retry_limit_in_match(unsigned long n) { -#ifdef USE_RETRY_LIMIT_IN_MATCH - RetryLimitInMatch = size; +#ifdef USE_RETRY_LIMIT + RetryLimitInMatch = n; + return 0; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern unsigned long +onig_get_retry_limit_in_search(void) +{ +#ifdef USE_RETRY_LIMIT + return RetryLimitInSearch; +#else + return 0; +#endif +} + +extern int +onig_set_retry_limit_in_search(unsigned long n) +{ +#ifdef USE_RETRY_LIMIT + RetryLimitInSearch = n; return 0; #else return ONIG_NO_SUPPORT_CONFIG; @@ -1305,8 +1415,9 @@ extern int onig_initialize_match_param(OnigMatchParam* mp) { mp->match_stack_limit = MatchStackLimit; -#ifdef USE_RETRY_LIMIT_IN_MATCH - mp->retry_limit_in_match = RetryLimitInMatch; +#ifdef USE_RETRY_LIMIT + mp->retry_limit_in_match = RetryLimitInMatch; + mp->retry_limit_in_search = RetryLimitInSearch; #endif #ifdef USE_CALLOUT @@ -1508,9 +1619,9 @@ onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, static int -stack_double(int is_alloca, char** arg_alloc_base, - StackType** arg_stk_base, StackType** arg_stk_end, StackType** arg_stk, - MatchArg* msa) +stack_double(int* is_alloca, char** arg_alloc_base, + StackType** arg_stk_base, StackType** arg_stk_end, + StackType** arg_stk, MatchArg* msa) { unsigned int n; int used; @@ -1529,24 +1640,27 @@ stack_double(int is_alloca, char** arg_alloc_base, size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; n *= 2; new_size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; - if (is_alloca != 0) { + if (*is_alloca != 0) { new_alloc_base = (char* )xmalloc(new_size); if (IS_NULL(new_alloc_base)) { - STACK_SAVE; + STACK_SAVE(msa, *is_alloca, alloc_base); return ONIGERR_MEMORY; } xmemcpy(new_alloc_base, alloc_base, size); + *is_alloca = 0; } else { if (msa->match_stack_limit != 0 && n > msa->match_stack_limit) { - if ((unsigned int )(stk_end - stk_base) == msa->match_stack_limit) + if ((unsigned int )(stk_end - stk_base) == msa->match_stack_limit) { + STACK_SAVE(msa, *is_alloca, alloc_base); return ONIGERR_MATCH_STACK_LIMIT_OVER; + } else n = msa->match_stack_limit; } new_alloc_base = (char* )xrealloc(alloc_base, new_size); if (IS_NULL(new_alloc_base)) { - STACK_SAVE; + STACK_SAVE(msa, *is_alloca, alloc_base); return ONIGERR_MEMORY; } } @@ -1563,9 +1677,8 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_ENSURE(n) do {\ if ((int )(stk_end - stk) < (n)) {\ - int r = stack_double(is_alloca, &alloc_base, &stk_base, &stk_end, &stk, msa);\ - if (r != 0) { STACK_SAVE; return r; } \ - is_alloca = 0;\ + int r = stack_double(&is_alloca, &alloc_base, &stk_base, &stk_end, &stk, msa);\ + if (r != 0) return r;\ UPDATE_FOR_STACK_REALLOC;\ }\ } while(0) @@ -1590,6 +1703,16 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_INC;\ } while(0) +#define STACK_PUSH_WITH_ZID(stack_type,pat,s,sprev,id) do {\ + STACK_ENSURE(1);\ + stk->type = (stack_type);\ + stk->zid = (int )(id);\ + stk->u.state.pcode = (pat);\ + stk->u.state.pstr = (s);\ + stk->u.state.pstr_prev = (sprev);\ + STACK_INC;\ +} while(0) + #define STACK_PUSH_ENSURED(stack_type,pat) do {\ stk->type = (stack_type);\ stk->u.state.pcode = (pat);\ @@ -1614,13 +1737,8 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev) #define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev) -#define STACK_PUSH_PREC_READ_START(s,sprev) \ - STACK_PUSH(STK_PREC_READ_START,(Operation* )0,s,sprev) -#define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \ - STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev) -#define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START) -#define STACK_PUSH_ALT_LOOK_BEHIND_NOT(pat,s,sprev) \ - STACK_PUSH(STK_ALT_LOOK_BEHIND_NOT,pat,s,sprev) +#define STACK_PUSH_ALT_WITH_ZID(pat,s,sprev,id) \ + STACK_PUSH_WITH_ZID(STK_ALT,pat,s,sprev,id) #if 0 #define STACK_PUSH_REPEAT(sid, pat) do {\ @@ -1736,6 +1854,22 @@ stack_double(int is_alloca, char** arg_alloc_base, STACK_INC;\ } while(0) +#define STACK_PUSH_MARK(sid) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MARK;\ + stk->zid = (sid);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_MARK_WITH_POS(sid, s, sprev) do {\ + STACK_ENSURE(1);\ + stk->type = STK_MARK;\ + stk->zid = (sid);\ + stk->u.val.v = (UChar* )(s);\ + stk->u.val.v2 = (sprev);\ + STACK_INC;\ +} while(0) + #define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\ STACK_ENSURE(1);\ stk->type = STK_SAVE_VAL;\ @@ -1767,7 +1901,7 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while (0) -#define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval) do { \ +#define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval, clear) do {\ int level = 0;\ StackType *k = stk;\ while (k > stk_base) {\ @@ -1777,6 +1911,7 @@ stack_double(int is_alloca, char** arg_alloc_base, && k->zid == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ + if (clear != 0) k->type = STK_VOID;\ break;\ }\ }\ @@ -1808,26 +1943,6 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while (0) -#define STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM(stype, sid, sval, stk_from) do { \ - int level = 0;\ - StackType *k = (stk_from);\ - while (k > stk_base) {\ - STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM"); \ - if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ - && k->u.val.id == (sid)) {\ - if (level == 0) {\ - (sval) = k->u.val.v;\ - break;\ - }\ - }\ - else if (k->type == STK_CALL_FRAME)\ - level--;\ - else if (k->type == STK_RETURN)\ - level++;\ - k--;\ - }\ -} while (0) - #define STACK_PUSH_CALLOUT_CONTENTS(anum, func) do {\ STACK_ENSURE(1);\ stk->type = STK_CALLOUT;\ @@ -1849,7 +1964,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #ifdef ONIG_DEBUG #define STACK_BASE_CHECK(p, at) \ if ((p) < stk_base) {\ - fprintf(stderr, "at %s\n", at);\ + fprintf(DBGFP, "at %s\n", at);\ MATCH_AT_ERROR_RETURN(ONIGERR_STACK_BUG);\ } #else @@ -1907,6 +2022,7 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ POP_REPEAT_INC \ POP_EMPTY_CHECK_START \ + POP_CALL \ POP_CALLOUT_CASE\ }\ }\ @@ -1914,12 +2030,14 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while(0) -#define POP_TIL_BODY(aname, til_type) do {\ +#define STACK_POP_TO_MARK(sid) do {\ while (1) {\ stk--;\ - STACK_BASE_CHECK(stk, (aname));\ + STACK_BASE_CHECK(stk, "STACK_POP_TO_MARK");\ if ((stk->type & STK_MASK_POP_HANDLED_TIL) != 0) {\ - if (stk->type == (til_type)) break;\ + if (stk->type == STK_MARK) {\ + if (stk->zid == (sid)) break;\ + }\ else {\ if (stk->type == STK_MEM_START) {\ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ @@ -1931,58 +2049,57 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ POP_REPEAT_INC \ POP_EMPTY_CHECK_START \ + POP_CALL \ /* Don't call callout here because negation of total success by (?!..) (?<!..) */\ }\ }\ }\ } while(0) -#define STACK_POP_TIL_ALT_PREC_READ_NOT do {\ - POP_TIL_BODY("STACK_POP_TIL_ALT_PREC_READ_NOT", STK_ALT_PREC_READ_NOT);\ -} while(0) - -#define STACK_POP_TIL_ALT_LOOK_BEHIND_NOT do {\ - POP_TIL_BODY("STACK_POP_TIL_ALT_LOOK_BEHIND_NOT", STK_ALT_LOOK_BEHIND_NOT);\ -} while(0) - -#define STACK_EXEC_TO_VOID(k) do {\ - k = stk;\ +#define POP_TIL_BODY(aname, til_type) do {\ while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_EXEC_TO_VOID"); \ - if (IS_TO_VOID_TARGET(k)) {\ - if (k->type == STK_TO_VOID_START) {\ - k->type = STK_VOID;\ - break;\ + stk--;\ + STACK_BASE_CHECK(stk, (aname));\ + if ((stk->type & STK_MASK_POP_HANDLED_TIL) != 0) {\ + if (stk->type == (til_type)) break;\ + else {\ + if (stk->type == STK_MEM_START) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + else if (stk->type == STK_MEM_END) {\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ + }\ + POP_REPEAT_INC \ + POP_EMPTY_CHECK_START \ + POP_CALL \ + /* Don't call callout here because negation of total success by (?!..) (?<!..) */\ }\ - k->type = STK_VOID;\ }\ }\ } while(0) -#define STACK_GET_PREC_READ_START(k) do {\ - int level = 0;\ + +#define STACK_TO_VOID_TO_MARK(k,sid) do {\ k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_GET_PREC_READ_START");\ + STACK_BASE_CHECK(k, "STACK_TO_VOID_TO_MARK");\ if (IS_TO_VOID_TARGET(k)) {\ - k->type = STK_VOID;\ - }\ - else if (k->type == STK_PREC_READ_START) {\ - if (level == 0) {\ - break;\ + if (k->type == STK_MARK) {\ + if (k->zid == (sid)) {\ + k->type = STK_VOID;\ + break;\ + } /* don't void different id mark */ \ }\ - level--;\ - }\ - else if (k->type == STK_PREC_READ_END) {\ - level++;\ + else\ + k->type = STK_VOID;\ }\ }\ } while(0) - #define EMPTY_CHECK_START_SEARCH(sid, k) do {\ k = stk;\ while (1) {\ @@ -2173,6 +2290,7 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_GET_REPEAT_COUNT(sid, c) STACK_GET_REPEAT_COUNT_SEARCH(sid, c) #endif +#ifdef USE_CALL #define STACK_RETURN(addr) do {\ int level = 0;\ StackType* k = stk;\ @@ -2191,6 +2309,25 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while(0) +#define GET_STACK_RETURN_CALL(k,addr) do {\ + int level = 0;\ + k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "GET_STACK_RETURN_CALL");\ + if (k->type == STK_CALL_FRAME) {\ + if (level == 0) {\ + (addr) = k->u.call_frame.ret_addr;\ + break;\ + }\ + else level--;\ + }\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} while(0) +#endif + #define STRING_CMP(s1,s2,len) do {\ while (len-- > 0) {\ @@ -2400,30 +2537,23 @@ backref_check_at_nested_level(regex_t* reg, } #endif /* USE_BACKREF_WITH_LEVEL */ +static int SubexpCallMaxNestLevel = DEFAULT_SUBEXP_CALL_MAX_NEST_LEVEL; #ifdef ONIG_DEBUG_STATISTICS -#define USE_TIMEOFDAY - #ifdef USE_TIMEOFDAY -#ifdef HAVE_SYS_TIME_H -#include <sys/time.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif + static struct timeval ts, te; #define GETTIME(t) gettimeofday(&(t), (struct timezone* )0) #define TIMEDIFF(te,ts) (((te).tv_usec - (ts).tv_usec) + \ (((te).tv_sec - (ts).tv_sec)*1000000)) #else -#ifdef HAVE_SYS_TIMES_H -#include <sys/times.h> -#endif + static struct tms ts, te; #define GETTIME(t) times(&(t)) #define TIMEDIFF(te,ts) ((te).tms_utime - (ts).tms_utime) -#endif + +#endif /* USE_TIMEOFDAY */ static int OpCounter[256]; static int OpPrevCounter[256]; @@ -2531,9 +2661,9 @@ typedef struct { #endif /* USE_THREADED_CODE */ #define INC_OP p++ -#define NEXT_OUT SOP_OUT; NEXT_OP -#define JUMP_OUT SOP_OUT; JUMP_OP -#define BREAK_OUT SOP_OUT; BREAK_OP +#define JUMP_OUT_WITH_SPREV_SET SOP_OUT; NEXT_OP +#define JUMP_OUT SOP_OUT; JUMP_OP +#define BREAK_OUT SOP_OUT; BREAK_OP #define CHECK_INTERRUPT_JUMP_OUT SOP_OUT; CHECK_INTERRUPT_IN_MATCH; JUMP_OP @@ -2544,7 +2674,7 @@ typedef struct { int len, spos;\ spos = IS_NOT_NULL(s) ? (int )(s - str) : -1;\ xp = p - (offset);\ - fprintf(stderr, "%7u: %7ld: %4d> \"",\ + fprintf(DBGFP, "%7u: %7ld: %4d> \"",\ counter, GET_STACK_INDEX(stk), spos);\ counter++;\ bp = buf;\ @@ -2560,21 +2690,33 @@ typedef struct { xmemcpy(bp, "\"", 1); bp += 1;\ }\ *bp = 0;\ - fputs((char* )buf, stderr);\ - for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);\ + fputs((char* )buf, DBGFP);\ + for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', DBGFP);\ if (xp == FinishCode)\ - fprintf(stderr, "----: finish");\ + fprintf(DBGFP, "----: finish");\ else {\ - fprintf(stderr, "%4d: ", (int )(xp - reg->ops));\ - print_compiled_byte_code(stderr, reg, (int )(xp - reg->ops), reg->ops, encode);\ + int index;\ + enum OpCode zopcode;\ + Operation* addr;\ + index = (int )(xp - reg->ops);\ + fprintf(DBGFP, "%4d: ", index);\ + print_compiled_byte_code(DBGFP, reg, index, reg->ops, encode); \ + zopcode = GET_OPCODE(reg, index);\ + if (zopcode == OP_RETURN) {\ + GET_STACK_RETURN_CALL(stkp, addr);\ + fprintf(DBGFP, " f:%ld -> %d", \ + GET_STACK_INDEX(stkp), (int )(addr - reg->ops));\ + }\ }\ - fprintf(stderr, "\n");\ + fprintf(DBGFP, "\n");\ } while(0); #else #define MATCH_DEBUG_OUT(offset) #endif -#define MATCH_AT_ERROR_RETURN(err_code) best_len = err_code; goto match_at_end +#define MATCH_AT_ERROR_RETURN(err_code) do {\ + best_len = err_code; goto match_at_end;\ +} while(0) /* match data(str - end) from position (sstart). */ @@ -2607,8 +2749,6 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, &&L_STR_MB2N, &&L_STR_MB3N, &&L_STR_MBN, - &&L_STR_1_IC, - &&L_STR_N_IC, &&L_CCLASS, &&L_CCLASS_MB, &&L_CCLASS_MIX, @@ -2635,7 +2775,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, &&L_BEGIN_LINE, &&L_END_LINE, &&L_SEMI_END_BUF, - &&L_BEGIN_POSITION, + &&L_CHECK_POSITION, &&L_BACKREF1, &&L_BACKREF2, &&L_BACKREF_N, @@ -2660,7 +2800,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, &&L_JUMP, &&L_PUSH, &&L_PUSH_SUPER, - &&L_POP_OUT, + &&L_POP, + &&L_POP_TO_MARK, #ifdef USE_OP_PUSH_OR_JUMP_EXACT &&L_PUSH_OR_JUMP_EXACT1, #endif @@ -2675,16 +2816,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #ifdef USE_CALL &&L_EMPTY_CHECK_END_MEMST_PUSH, #endif - &&L_PREC_READ_START, - &&L_PREC_READ_END, - &&L_PREC_READ_NOT_START, - &&L_PREC_READ_NOT_END, - &&L_ATOMIC_START, - &&L_ATOMIC_END, - &&L_LOOK_BEHIND, - &&L_LOOK_BEHIND_NOT_START, - &&L_LOOK_BEHIND_NOT_END, - &&L_PUSH_SAVE_VAL, + &&L_MOVE, + &&L_STEP_BACK_START, + &&L_STEP_BACK_NEXT, + &&L_CUT_TO_MARK, + &&L_MARK, + &&L_SAVE_VAL, &&L_UPDATE_VAR, #ifdef USE_CALL &&L_CALL, @@ -2701,7 +2838,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, LengthType tlen, tlen2; MemNumType mem; RelAddrType addr; - UChar *s, *q, *ps, *sbegin; + UChar *s, *ps, *sbegin; UChar *right_range; int is_alloca; char *alloc_base; @@ -2714,7 +2851,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, StackIndex *repeat_stk; StackIndex *empty_check_stk; #endif -#ifdef USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_RETRY_LIMIT unsigned long retry_limit_in_match; unsigned long retry_in_match_counter; #endif @@ -2727,6 +2864,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, OnigEncoding encode = reg->enc; OnigCaseFoldType case_fold_flag = reg->case_fold_flag; +#ifdef USE_CALL + unsigned long subexp_call_nest_counter = 0; +#endif + #ifdef ONIG_DEBUG_MATCH static unsigned int counter = 1; #endif @@ -2747,8 +2888,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, msa->mp->match_at_call_counter++; #endif -#ifdef USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_RETRY_LIMIT retry_limit_in_match = msa->retry_limit_in_match; + if (msa->retry_limit_in_search != 0) { + unsigned long rem = msa->retry_limit_in_search + - msa->retry_limit_in_search_counter; + if (rem < retry_limit_in_match) + retry_limit_in_match = rem; + } #endif pop_level = reg->stack_pop_level; @@ -2760,9 +2907,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "match_at: str: %p, end: %p, start: %p, sprev: %p\n", + fprintf(DBGFP, "match_at: str: %p, end: %p, start: %p, sprev: %p\n", str, end, sstart, sprev); - fprintf(stderr, "size: %d, start offset: %d\n", + fprintf(DBGFP, "size: %d, start offset: %d\n", (int )(end - str), (int )(sstart - str)); #endif @@ -2771,7 +2918,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, STACK_PUSH_BOTTOM(STK_ALT, FinishCode); /* bottom stack */ INIT_RIGHT_RANGE; -#ifdef USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_RETRY_LIMIT retry_in_match_counter = 0; #endif @@ -2781,7 +2928,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (n > best_len) { OnigRegion* region; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - if (IS_FIND_LONGEST(option)) { + if (OPTON_FIND_LONGEST(option)) { if (n > msa->best_len) { msa->best_len = n; msa->best_s = (UChar* )sstart; @@ -2796,7 +2943,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (keep > s) keep = s; #ifdef USE_POSIX_API_REGION_OPTION - if (IS_POSIX_REGION(msa->options)) { + if (OPTON_POSIX_REGION(msa->options)) { posix_regmatch_t* rmt = (posix_regmatch_t* )region; rmt[0].rm_so = (regoff_t )(keep - str); @@ -2850,7 +2997,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } #endif /* USE_CAPTURE_HISTORY */ #ifdef USE_POSIX_API_REGION_OPTION - } /* else IS_POSIX_REGION() */ + } /* else OPTON_POSIX_REGION() */ #endif } /* if (region) */ } /* n > best_len */ @@ -2860,12 +3007,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #endif SOP_OUT; - if (IS_FIND_CONDITION(option)) { - if (IS_FIND_NOT_EMPTY(option) && s == sstart) { + if (OPTON_FIND_CONDITION(option)) { + if (OPTON_FIND_NOT_EMPTY(option) && s == sstart) { best_len = ONIG_MISMATCH; goto fail; /* for retry */ } - if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { + if (OPTON_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { goto fail; /* for retry */ } } @@ -2879,28 +3026,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (*ps != *s) goto fail; s++; INC_OP; - NEXT_OUT; - - CASE_OP(STR_1_IC) - { - int len; - UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - DATA_ENSURE(1); - len = ONIGENC_MBC_CASE_FOLD(encode, - /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ - case_fold_flag, - &s, end, lowbuf); - DATA_ENSURE(0); - q = lowbuf; - ps = p->exact.s; - while (len-- > 0) { - if (*ps != *q) goto fail; - ps++; q++; - } - } - INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(STR_2) DATA_ENSURE(2); @@ -2969,34 +3095,6 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, INC_OP; JUMP_OUT; - CASE_OP(STR_N_IC) - { - int len; - UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - tlen = p->exact_n.n; - ps = p->exact_n.s; - endp = ps + tlen; - while (ps < endp) { - sprev = s; - DATA_ENSURE(1); - len = ONIGENC_MBC_CASE_FOLD(encode, - /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ - case_fold_flag, - &s, end, lowbuf); - DATA_ENSURE(0); - q = lowbuf; - while (len-- > 0) { - if (ps >= endp) goto fail; - if (*ps != *q) goto fail; - ps++; q++; - } - } - } - - INC_OP; - JUMP_OUT; - CASE_OP(STR_MB2N1) DATA_ENSURE(2); ps = p->exact.s; @@ -3005,7 +3103,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (*ps != *s) goto fail; s++; INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(STR_MB2N2) DATA_ENSURE(4); @@ -3088,9 +3186,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, CASE_OP(CCLASS) DATA_ENSURE(1); if (BITSET_AT(p->cclass.bsp, *s) == 0) goto fail; + if (ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; s++; INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(CCLASS_MB) DATA_ENSURE(1); @@ -3110,7 +3209,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (! onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail; } INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(CCLASS_MIX) DATA_ENSURE(1); @@ -3124,14 +3223,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s++; } INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(CCLASS_NOT) DATA_ENSURE(1); if (BITSET_AT(p->cclass.bsp, *s) != 0) goto fail; s += enclen(encode, s); INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(CCLASS_MB_NOT) DATA_ENSURE(1); @@ -3160,7 +3259,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, cc_mb_not_success: INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(CCLASS_MIX_NOT) DATA_ENSURE(1); @@ -3174,7 +3273,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s++; } INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(ANYCHAR) DATA_ENSURE(1); @@ -3183,7 +3282,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; s += n; INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(ANYCHAR_ML) DATA_ENSURE(1); @@ -3191,7 +3290,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, DATA_ENSURE(n); s += n; INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(ANYCHAR_STAR) INC_OP; @@ -3239,7 +3338,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += n; } } - NEXT_OUT; + JUMP_OUT; CASE_OP(ANYCHAR_ML_STAR_PEEK_NEXT) { @@ -3263,7 +3362,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } } } - NEXT_OUT; + JUMP_OUT; CASE_OP(WORD) DATA_ENSURE(1); @@ -3272,7 +3371,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += enclen(encode, s); INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(WORD_ASCII) DATA_ENSURE(1); @@ -3281,7 +3380,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += enclen(encode, s); INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(NO_WORD) DATA_ENSURE(1); @@ -3290,7 +3389,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += enclen(encode, s); INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(NO_WORD_ASCII) DATA_ENSURE(1); @@ -3299,7 +3398,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s += enclen(encode, s); INC_OP; - NEXT_OUT; + JUMP_OUT_WITH_SPREV_SET; CASE_OP(WORD_BOUNDARY) { @@ -3420,7 +3519,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, CASE_OP(BEGIN_LINE) if (ON_STR_BEGIN(s)) { - if (IS_NOTBOL(msa->options)) goto fail; + if (OPTON_NOTBOL(msa->options)) goto fail; INC_OP; JUMP_OUT; } @@ -3435,7 +3534,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif - if (IS_NOTEOL(msa->options)) goto fail; + if (OPTON_NOTEOL(msa->options)) goto fail; INC_OP; JUMP_OUT; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE @@ -3459,7 +3558,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif - if (IS_NOTEOL(msa->options)) goto fail; + if (OPTON_NOTEOL(msa->options)) goto fail; INC_OP; JUMP_OUT; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE @@ -3483,10 +3582,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #endif goto fail; - CASE_OP(BEGIN_POSITION) - if (s != msa->start) - goto fail; - + CASE_OP(CHECK_POSITION) + switch (p->check_position.type) { + case CHECK_POSITION_SEARCH_START: + if (s != msa->start) goto fail; + break; + case CHECK_POSITION_CURRENT_RIGHT_RANGE: + if (s != right_range) goto fail; + break; + default: + break; + } INC_OP; JUMP_OUT; @@ -3746,7 +3852,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s); + fprintf(DBGFP, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s); #endif empty_check_found: /* empty loop founded, skip next instruction */ @@ -3779,7 +3885,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s); + fprintf(DBGFP, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s); #endif if (is_empty == -1) goto fail; goto empty_check_found; @@ -3802,7 +3908,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n", + fprintf(DBGFP, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n", (int )mem, s); #endif if (is_empty == -1) goto fail; @@ -3832,10 +3938,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, INC_OP; JUMP_OUT; - CASE_OP(POP_OUT) + CASE_OP(POP) STACK_POP_ONE; - /* for stop backtrack */ - /* CHECK_RETRY_LIMIT_IN_MATCH; */ + INC_OP; + JUMP_OUT; + + CASE_OP(POP_TO_MARK) + STACK_POP_TO_MARK(p->pop_to_mark.id); INC_OP; JUMP_OUT; @@ -3933,89 +4042,100 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } CHECK_INTERRUPT_JUMP_OUT; - CASE_OP(PREC_READ_START) - STACK_PUSH_PREC_READ_START(s, sprev); - INC_OP; - JUMP_OUT; +#ifdef USE_CALL + CASE_OP(CALL) + if (subexp_call_nest_counter == SubexpCallMaxNestLevel) + goto fail; + subexp_call_nest_counter++; + addr = p->call.addr; + INC_OP; STACK_PUSH_CALL_FRAME(p); + p = reg->ops + addr; - CASE_OP(PREC_READ_END) - STACK_GET_PREC_READ_START(stkp); - s = stkp->u.state.pstr; - sprev = stkp->u.state.pstr_prev; - STACK_PUSH(STK_PREC_READ_END,0,0,0); - INC_OP; JUMP_OUT; - CASE_OP(PREC_READ_NOT_START) - addr = p->prec_read_not_start.addr; - STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev); - INC_OP; + CASE_OP(RETURN) + STACK_RETURN(p); + STACK_PUSH_RETURN; + subexp_call_nest_counter--; JUMP_OUT; +#endif - CASE_OP(PREC_READ_NOT_END) - STACK_POP_TIL_ALT_PREC_READ_NOT; - goto fail; + CASE_OP(MOVE) + if (p->move.n < 0) { + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, -p->move.n); + if (IS_NULL(s)) goto fail; + } + else { + int len; - CASE_OP(ATOMIC_START) - STACK_PUSH_TO_VOID_START; + for (tlen = p->move.n; tlen > 0; tlen--) { + len = enclen(encode, s); + sprev = s; + s += len; + if (s > end) goto fail; + if (s == end) { + if (tlen != 1) goto fail; + else break; + } + } + } + sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); INC_OP; JUMP_OUT; - CASE_OP(ATOMIC_END) - STACK_EXEC_TO_VOID(stkp); - INC_OP; + CASE_OP(STEP_BACK_START) + tlen = p->step_back_start.initial; + if (tlen != 0) { + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); + if (IS_NULL(s)) goto fail; + sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + } + if (p->step_back_start.remaining != 0) { + STACK_PUSH_ALT_WITH_ZID(p + 1, s, sprev, p->step_back_start.remaining); + p += p->step_back_start.addr; + } + else + INC_OP; JUMP_OUT; - CASE_OP(LOOK_BEHIND) - tlen = p->look_behind.len; - s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); + CASE_OP(STEP_BACK_NEXT) + tlen = (LengthType )stk->zid; /* remaining count */ + if (tlen != INFINITE_LEN) tlen--; + s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, 1); if (IS_NULL(s)) goto fail; sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); + if (tlen != 0) { + STACK_PUSH_ALT_WITH_ZID(p, s, sprev, (int )tlen); + } INC_OP; JUMP_OUT; - CASE_OP(LOOK_BEHIND_NOT_START) - addr = p->look_behind_not_start.addr; - tlen = p->look_behind_not_start.len; - q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); - if (IS_NULL(q)) { - /* too short case -> success. ex. /(?<!XXX)a/.match("a") - If you want to change to fail, replace following line. */ - p += addr; - /* goto fail; */ + CASE_OP(CUT_TO_MARK) + mem = p->cut_to_mark.id; /* mem: mark id */ + STACK_TO_VOID_TO_MARK(stkp, mem); + if (p->cut_to_mark.restore_pos != 0) { + s = stkp->u.val.v; + sprev = stkp->u.val.v2; } - else { - STACK_PUSH_ALT_LOOK_BEHIND_NOT(p + addr, s, sprev); - s = q; - sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); - INC_OP; - } - JUMP_OUT; - - CASE_OP(LOOK_BEHIND_NOT_END) - STACK_POP_TIL_ALT_LOOK_BEHIND_NOT; INC_OP; - goto fail; - -#ifdef USE_CALL - CASE_OP(CALL) - addr = p->call.addr; - INC_OP; STACK_PUSH_CALL_FRAME(p); - p = reg->ops + addr; JUMP_OUT; - CASE_OP(RETURN) - STACK_RETURN(p); - STACK_PUSH_RETURN; + CASE_OP(MARK) + mem = p->mark.id; /* mem: mark id */ + if (p->mark.save_pos != 0) + STACK_PUSH_MARK_WITH_POS(mem, s, sprev); + else + STACK_PUSH_MARK(mem); + + INC_OP; JUMP_OUT; -#endif - CASE_OP(PUSH_SAVE_VAL) + CASE_OP(SAVE_VAL) { SaveType type; - type = p->push_save_val.type; - mem = p->push_save_val.id; /* mem: save id */ + type = p->save_val.type; + mem = p->save_val.id; /* mem: save id */ switch ((enum SaveType )type) { case SAVE_KEEP: STACK_PUSH_SAVE_VAL(mem, type, s); @@ -4039,13 +4159,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, enum SaveType save_type; type = p->update_var.type; - mem = p->update_var.id; /* mem: save id */ switch ((enum UpdateVarType )type) { case UPDATE_VAR_KEEP_FROM_STACK_LAST: STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep); break; case UPDATE_VAR_S_FROM_STACK: + mem = p->update_var.id; /* mem: save id */ STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s); break; case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK: @@ -4055,7 +4175,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, case UPDATE_VAR_RIGHT_RANGE_FROM_STACK: save_type = SAVE_RIGHT_RANGE; get_save_val_type_last_id: - STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range); + mem = p->update_var.id; /* mem: save id */ + STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range, p->update_var.clear); + break; + case UPDATE_VAR_RIGHT_RANGE_TO_S: + right_range = s; break; case UPDATE_VAR_RIGHT_RANGE_INIT: INIT_RIGHT_RANGE; @@ -4163,10 +4287,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } BYTECODE_INTERPRETER_END; match_at_end: - STACK_SAVE; + if (msa->retry_limit_in_search != 0) { + msa->retry_limit_in_search_counter += retry_in_match_counter; + } + STACK_SAVE(msa, is_alloca, alloc_base); return best_len; } + +#ifdef USE_REGSET + typedef struct { regex_t* reg; OnigRegion* region; @@ -4433,7 +4563,7 @@ onig_regset_search_with_param(OnigRegSet* set, if (set->n == 0) return ONIG_MISMATCH; - if (IS_POSIX_REGION(option)) + if (OPTON_POSIX_REGION(option)) return ONIGERR_INVALID_ARGUMENT; r = 0; @@ -4453,11 +4583,11 @@ onig_regset_search_with_param(OnigRegSet* set, if (start > end || start < str) goto mismatch_no_msa; if (str < end) { /* forward search only */ - if (range <= start) + if (range < start) return ONIGERR_INVALID_ARGUMENT; } - if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { if (! ONIGENC_IS_VALID_MBC_STRING(enc, str, end)) { r = ONIGERR_INVALID_WIDE_CHAR_VALUE; goto finish_no_msa; @@ -4535,7 +4665,18 @@ onig_regset_search_with_param(OnigRegSet* set, for (i = 0; i < set->n; i++) { reg = set->rs[i].reg; if (reg->threshold_len == 0) { - REGSET_MATCH_AND_RETURN_CHECK(end); + /* REGSET_MATCH_AND_RETURN_CHECK(end); */ + /* Can't use REGSET_MATCH_AND_RETURN_CHECK() + because r must be set regex index (i) + */ + r = match_at(reg, str, end, end, s, prev, msas + i); + if (r != ONIG_MISMATCH) { + if (r >= 0) { + r = i; + goto match; + } + else goto finish; /* error */ + } } } @@ -4567,7 +4708,7 @@ onig_regset_search_with_param(OnigRegSet* set, for (i = 0; i < set->n; i++) { if (IS_NOT_NULL(msas)) MATCH_ARG_FREE(msas[i]); - if (IS_FIND_NOT_EMPTY(set->rs[i].reg->options) && + if (OPTON_FIND_NOT_EMPTY(set->rs[i].reg->options) && IS_NOT_NULL(set->rs[i].region)) { onig_region_clear(set->rs[i].region); } @@ -4586,7 +4727,7 @@ onig_regset_search_with_param(OnigRegSet* set, for (i = 0; i < set->n; i++) { if (IS_NOT_NULL(msas)) MATCH_ARG_FREE(msas[i]); - if (IS_FIND_NOT_EMPTY(set->rs[i].reg->options) && + if (OPTON_FIND_NOT_EMPTY(set->rs[i].reg->options) && IS_NOT_NULL(set->rs[i].region)) { onig_region_clear(set->rs[i].region); } @@ -4625,6 +4766,9 @@ onig_regset_search(OnigRegSet* set, const UChar* str, const UChar* end, return r; } +#endif /* USE_REGSET */ + + static UChar* slow_search(OnigEncoding enc, UChar* target, UChar* target_end, const UChar* text, const UChar* text_end, UChar* text_range) @@ -4656,48 +4800,6 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end, return (UChar* )NULL; } -static int -str_lower_case_match(OnigEncoding enc, int case_fold_flag, - const UChar* t, const UChar* tend, - const UChar* p, const UChar* end) -{ - int lowlen; - UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - while (t < tend) { - if (p >= end) return 0; - lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf); - q = lowbuf; - while (lowlen > 0) { - if (t >= tend) return 0; - if (*t++ != *q++) return 0; - lowlen--; - } - } - - return 1; -} - -static UChar* -slow_search_ic(OnigEncoding enc, int case_fold_flag, - UChar* target, UChar* target_end, - const UChar* text, const UChar* text_end, UChar* text_range) -{ - UChar *s; - - s = (UChar* )text; - - while (s < text_range) { - if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, text_end)) - return s; - - s += enclen(enc, s); - } - - return (UChar* )NULL; -} - static UChar* slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, const UChar* text, const UChar* adjust_text, @@ -4731,33 +4833,6 @@ slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, } static UChar* -slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, - UChar* target, UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) -{ - UChar *s; - - s = (UChar* )text_end; - s -= (target_end - target); - if (s > text_start) - s = (UChar* )text_start; - else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); - - while (s >= text) { - if (str_lower_case_match(enc, case_fold_flag, - target, target_end, s, text_end)) - return s; - - s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s); - } - - return (UChar* )NULL; -} - - -static UChar* sunday_quick_search_step_forward(regex_t* reg, const UChar* target, const UChar* target_end, const UChar* text, const UChar* text_end, @@ -4770,8 +4845,9 @@ sunday_quick_search_step_forward(regex_t* reg, OnigEncoding enc; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, - "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range); + fprintf(DBGFP, + "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", + text, text_end, text_range); #endif enc = reg->enc; @@ -4894,7 +4970,7 @@ onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, MATCH_ARG_INIT(msa, reg, option, region, at, mp); if (region #ifdef USE_POSIX_API_REGION_OPTION - && !IS_POSIX_REGION(option) + && !OPTON_POSIX_REGION(option) #endif ) { r = onig_region_resize_clear(region, reg->num_mem + 1); @@ -4903,7 +4979,7 @@ onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, r = 0; if (r == 0) { - if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { r = ONIGERR_INVALID_WIDE_CHAR_VALUE; goto end; @@ -4926,7 +5002,7 @@ forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, UChar *p, *pprev = (UChar* )NULL; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "forward_search: str: %p, end: %p, start: %p, range: %p\n", + fprintf(DBGFP, "forward_search: str: %p, end: %p, start: %p, range: %p\n", str, end, start, range); #endif @@ -4949,10 +5025,6 @@ forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, case OPTIMIZE_STR: p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); break; - case OPTIMIZE_STR_CASE_FOLD: - p = slow_search_ic(reg->enc, reg->case_fold_flag, - reg->exact, reg->exact_end, p, end, range); - break; case OPTIMIZE_STR_FAST: p = sunday_quick_search(reg, reg->exact, reg->exact_end, p, end, range); @@ -5047,7 +5119,7 @@ forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, } #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, + fprintf(DBGFP, "forward_search success: low: %d, high: %d, dmin: %u, dmax: %u\n", (int )(*low - str), (int )(*high - str), reg->dist_min, reg->dist_max); @@ -5075,12 +5147,6 @@ backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s, range, adjrange, end, p); break; - case OPTIMIZE_STR_CASE_FOLD: - p = slow_search_backward_ic(reg->enc, reg->case_fold_flag, - reg->exact, reg->exact_end, - range, adjrange, end, p); - break; - case OPTIMIZE_STR_FAST: case OPTIMIZE_STR_FAST_STEP_FORWARD: goto exact_method; @@ -5150,7 +5216,7 @@ backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "backward_search: low: %d, high: %d\n", + fprintf(DBGFP, "backward_search: low: %d, high: %d\n", (int )(*low - str), (int )(*high - str)); #endif return 1; /* success */ @@ -5158,7 +5224,7 @@ backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s, fail: #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "backward_search: fail.\n"); + fprintf(DBGFP, "backward_search: fail.\n"); #endif return 0; /* fail */ } @@ -5202,7 +5268,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, const UChar *orig_start = start; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, + fprintf(DBGFP, "onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n", str, (int )(end - str), (int )(start - str), (int )(range - str)); #endif @@ -5211,7 +5277,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, if (region #ifdef USE_POSIX_API_REGION_OPTION - && !IS_POSIX_REGION(option) + && ! OPTON_POSIX_REGION(option) #endif ) { r = onig_region_resize_clear(region, reg->num_mem + 1); @@ -5220,7 +5286,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, if (start > end || start < str) goto mismatch_no_msa; - if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { r = ONIGERR_INVALID_WIDE_CHAR_VALUE; goto finish_no_msa; @@ -5233,7 +5299,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ if (r != ONIG_MISMATCH) {\ if (r >= 0) {\ - if (! IS_FIND_LONGEST(reg->options)) {\ + if (! OPTON_FIND_LONGEST(reg->options)) {\ goto match;\ }\ }\ @@ -5342,7 +5408,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, goto end_buf; } } - else if ((reg->anchor & ANCR_ANYCHAR_INF_ML)) { + else if ((reg->anchor & ANCR_ANYCHAR_INF_ML) && range > start) { goto begin_position; } } @@ -5350,7 +5416,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, static const UChar* address_for_empty_string = (UChar* )""; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "onig_search: empty string.\n"); + fprintf(DBGFP, "onig_search: empty string.\n"); #endif if (reg->threshold_len == 0) { @@ -5366,7 +5432,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, } #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "onig_search(apply anchor): end: %d, start: %d, range: %d\n", + fprintf(DBGFP, "onig_search(apply anchor): end: %d, start: %d, range: %d\n", (int )(end - str), (int )(start - str), (int )(range - str)); #endif @@ -5419,17 +5485,16 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, if (! forward_search(reg, str, end, s, sch_range, &low, &high, (UChar** )NULL)) goto mismatch; - if ((reg->anchor & ANCR_ANYCHAR_INF) != 0) { + if ((reg->anchor & ANCR_ANYCHAR_INF) != 0 && + (reg->anchor & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) == 0) { do { MATCH_AND_RETURN_CHECK(data_range); prev = s; s += enclen(reg->enc, s); - if ((reg->anchor & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) == 0) { - while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) { - prev = s; - s += enclen(reg->enc, s); - } + while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) { + prev = s; + s += enclen(reg->enc, s); } } while (s < range); goto mismatch; @@ -5509,7 +5574,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, mismatch: #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - if (IS_FIND_LONGEST(reg->options)) { + if (OPTON_FIND_LONGEST(reg->options)) { if (msa.best_len >= 0) { s = msa.best_s; goto match; @@ -5523,9 +5588,9 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, /* If result is mismatch and no FIND_NOT_EMPTY option, then the region is not set in match_at(). */ - if (IS_FIND_NOT_EMPTY(reg->options) && region + if (OPTON_FIND_NOT_EMPTY(reg->options) && region #ifdef USE_POSIX_API_REGION_OPTION - && !IS_POSIX_REGION(option) + && !OPTON_POSIX_REGION(option) #endif ) { onig_region_clear(region); @@ -5533,7 +5598,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, #ifdef ONIG_DEBUG if (r != ONIG_MISMATCH) - fprintf(stderr, "onig_search: error %d\n", r); + fprintf(DBGFP, "onig_search: error %d\n", r); #endif return r; @@ -5542,7 +5607,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end, finish_no_msa: #ifdef ONIG_DEBUG if (r != ONIG_MISMATCH) - fprintf(stderr, "onig_search: error %d\n", r); + fprintf(DBGFP, "onig_search: error %d\n", r); #endif return r; @@ -5578,7 +5643,7 @@ onig_scan(regex_t* reg, const UChar* str, const UChar* end, int rs; const UChar* start; - if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (OPTON_CHECK_VALIDITY_OF_STRING(option)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) return ONIGERR_INVALID_WIDE_CHAR_VALUE; @@ -5616,6 +5681,19 @@ onig_scan(regex_t* reg, const UChar* str, const UChar* end, return n; } +extern int +onig_get_subexp_call_max_nest_level(void) +{ + return SubexpCallMaxNestLevel; +} + +extern int +onig_set_subexp_call_max_nest_level(int level) +{ + SubexpCallMaxNestLevel = level; + return 0; +} + extern OnigEncoding onig_get_encoding(regex_t* reg) { @@ -5669,6 +5747,8 @@ onig_copy_encoding(OnigEncoding to, OnigEncoding from) *to = *from; } +#ifdef USE_REGSET + extern int onig_regset_new(OnigRegSet** rset, int n, regex_t* regs[]) { @@ -5759,7 +5839,7 @@ onig_regset_add(OnigRegSet* set, regex_t* reg) { OnigRegion* region; - if (IS_FIND_LONGEST(reg->options)) + if (OPTON_FIND_LONGEST(reg->options)) return ONIGERR_INVALID_ARGUMENT; if (set->n != 0 && reg->enc != set->enc) @@ -5805,7 +5885,7 @@ onig_regset_replace(OnigRegSet* set, int at, regex_t* reg) set->n--; } else { - if (IS_FIND_LONGEST(reg->options)) + if (OPTON_FIND_LONGEST(reg->options)) return ONIGERR_INVALID_ARGUMENT; if (set->n > 1 && reg->enc != set->enc) @@ -5864,6 +5944,8 @@ onig_regset_get_region(OnigRegSet* set, int at) return set->rs[at].region; } +#endif /* USE_REGSET */ + #ifdef USE_DIRECT_THREADED_CODE extern int @@ -6385,7 +6467,7 @@ onig_builtin_cmp(OnigCalloutArgs* args, void* user_data ARG_UNUSED) } -#include <stdio.h> +#ifndef ONIG_NO_PRINT static FILE* OutFp; @@ -6483,4 +6565,6 @@ onig_setup_builtin_monitors_by_ascii_encoded_name(void* fp /* FILE* */) return ONIG_NORMAL; } +#endif /* ONIG_NO_PRINT */ + #endif /* USE_CALLOUT */ diff --git a/src/regint.h b/src/regint.h index cc540da..04ebe0a 100644 --- a/src/regint.h +++ b/src/regint.h @@ -4,7 +4,7 @@ regint.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,6 +44,7 @@ defined(ONIG_DEBUG_STATISTICS) #ifndef ONIG_DEBUG #define ONIG_DEBUG +#define DBGFP stderr #endif #endif @@ -55,13 +56,14 @@ /* config */ /* spec. config */ +#define USE_REGSET #define USE_CALL #define USE_CALLOUT #define USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> */ #define USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */ #define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */ #define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR -#define USE_RETRY_LIMIT_IN_MATCH +#define USE_RETRY_LIMIT #ifdef USE_GOTO_LABELS_AS_VALUES #define USE_THREADED_CODE #define USE_DIRECT_THREADED_CODE @@ -71,73 +73,33 @@ #define USE_OP_PUSH_OR_JUMP_EXACT #define USE_QUANT_PEEK_NEXT #define USE_ST_LIBRARY +#define USE_TIMEOFDAY -#define USE_WORD_BEGIN_END /* "\<", "\>" */ +#define USE_WORD_BEGIN_END /* "\<", "\>" */ #define USE_CAPTURE_HISTORY #define USE_VARIABLE_META_CHARS #define USE_POSIX_API_REGION_OPTION #define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE /* #define USE_REPEAT_AND_EMPTY_CHECK_LOCAL_VAR */ +#define INIT_MATCH_STACK_SIZE 160 +#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ +#define DEFAULT_RETRY_LIMIT_IN_MATCH 10000000 +#define DEFAULT_RETRY_LIMIT_IN_SEARCH 0 /* unlimited */ +#define DEFAULT_PARSE_DEPTH_LIMIT 4096 +#define DEFAULT_SUBEXP_CALL_MAX_NEST_LEVEL 20 -#include "regenc.h" - -#define INIT_MATCH_STACK_SIZE 160 -#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ -#define DEFAULT_RETRY_LIMIT_IN_MATCH 10000000 -#define DEFAULT_PARSE_DEPTH_LIMIT 4096 - -/* */ -/* escape other system UChar definition */ -#ifdef ONIG_ESCAPE_UCHAR_COLLISION -#undef ONIG_ESCAPE_UCHAR_COLLISION -#endif -#define xmalloc malloc -#define xrealloc realloc -#define xcalloc calloc -#define xfree free - -#define st_init_table onig_st_init_table -#define st_init_table_with_size onig_st_init_table_with_size -#define st_init_numtable onig_st_init_numtable -#define st_init_numtable_with_size onig_st_init_numtable_with_size -#define st_init_strtable onig_st_init_strtable -#define st_init_strtable_with_size onig_st_init_strtable_with_size -#define st_delete onig_st_delete -#define st_delete_safe onig_st_delete_safe -#define st_insert onig_st_insert -#define st_lookup onig_st_lookup -#define st_foreach onig_st_foreach -#define st_add_direct onig_st_add_direct -#define st_free_table onig_st_free_table -#define st_cleanup_safe onig_st_cleanup_safe -#define st_copy onig_st_copy -#define st_nothing_key_clone onig_st_nothing_key_clone -#define st_nothing_key_free onig_st_nothing_key_free -/* */ -#define onig_st_is_member st_is_member - -#define xmemset memset -#define xmemcpy memcpy -#define xmemmove memmove - -#if defined(_WIN32) && !defined(__GNUC__) -#define xalloca _alloca -#define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) -#define xsnprintf sprintf_s -#define xstrcat(dest,src,size) strcat_s(dest,size,src) -#else -#define xalloca alloca -#define xvsnprintf vsnprintf -#define xsnprintf snprintf -#define xstrcat(dest,src,size) strcat(dest,src) -#endif +#include "regenc.h" +#ifndef ONIG_NO_STANDARD_C_HEADERS #include <stddef.h> +#include <stdarg.h> #include <limits.h> #include <stdlib.h> +#include <string.h> +#include <ctype.h> #ifdef HAVE_STDINT_H #include <stdint.h> @@ -147,9 +109,6 @@ #include <alloca.h> #endif -#include <string.h> - -#include <ctype.h> #ifdef HAVE_SYS_TYPES_H #ifndef __BORLANDC__ #include <sys/types.h> @@ -160,21 +119,52 @@ #include <inttypes.h> #endif -#ifdef __BORLANDC__ +#if defined(_WIN32) || defined(__BORLANDC__) #include <malloc.h> #endif -#ifdef ONIG_DEBUG +#if defined(ONIG_DEBUG) || defined(NEED_TO_INCLUDE_STDIO) # include <stdio.h> #endif -#ifdef _WIN32 -#if defined(_MSC_VER) && (_MSC_VER < 1300) -typedef int intptr_t; -typedef unsigned int uintptr_t; +#ifdef ONIG_DEBUG_STATISTICS +#ifdef USE_TIMEOFDAY + +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +#else /* USE_TIMEOFDAY */ + +#ifdef HAVE_SYS_TIMES_H +#include <sys/times.h> #endif + +#endif /* USE_TIMEOFDAY */ +#endif /* ONIG_DEBUG_STATISTICS */ + +/* I don't think these x....'s need to be included in + ONIG_NO_STANDARD_C_HEADERS, but they are required by Issue #170 + and do so since there is no problem. + */ +#ifndef xmemset +#define xmemset memset +#endif + +#ifndef xmemcpy +#define xmemcpy memcpy +#endif + +#ifndef xmemmove +#define xmemmove memmove #endif +#endif /* ONIG_NO_STANDARD_C_HEADERS */ + + #ifdef MIN #undef MIN #endif @@ -191,8 +181,94 @@ typedef unsigned int uintptr_t; #define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY #define NULL_UCHARP ((UChar* )0) -#define CHAR_MAP_SIZE 256 -#define INFINITE_LEN ONIG_INFINITE_DISTANCE +#ifndef ONIG_INT_MAX +#define ONIG_INT_MAX INT_MAX +#endif + +#define CHAR_MAP_SIZE 256 +#define INFINITE_LEN ONIG_INFINITE_DISTANCE +#define STEP_BACK_MAX_CHAR_LEN 65535 /* INT_MAX is too big */ +#define LOOK_BEHIND_MAX_CHAR_LEN STEP_BACK_MAX_CHAR_LEN + +/* escape other system UChar definition */ +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif + +#define xmalloc malloc +#define xrealloc realloc +#define xcalloc calloc +#define xfree free + +#define st_init_table onig_st_init_table +#define st_init_table_with_size onig_st_init_table_with_size +#define st_init_numtable onig_st_init_numtable +#define st_init_numtable_with_size onig_st_init_numtable_with_size +#define st_init_strtable onig_st_init_strtable +#define st_init_strtable_with_size onig_st_init_strtable_with_size +#define st_delete onig_st_delete +#define st_delete_safe onig_st_delete_safe +#define st_insert onig_st_insert +#define st_lookup onig_st_lookup +#define st_foreach onig_st_foreach +#define st_add_direct onig_st_add_direct +#define st_free_table onig_st_free_table +#define st_cleanup_safe onig_st_cleanup_safe +#define st_copy onig_st_copy +#define st_nothing_key_clone onig_st_nothing_key_clone +#define st_nothing_key_free onig_st_nothing_key_free +/* */ +#define onig_st_is_member st_is_member + + +#if defined(_WIN32) && !defined(__GNUC__) + +#ifndef xalloca +#define xalloca _alloca +#endif +#ifndef xvsnprintf +#define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) +#endif +#ifndef xsnprintf +#define xsnprintf sprintf_s +#endif +#ifndef xstrcat +#define xstrcat(dest,src,size) strcat_s(dest,size,src) +#endif + +#else + +#ifndef xalloca +#define xalloca alloca +#endif +#ifndef xvsnprintf +#define xvsnprintf vsnprintf +#endif +#ifndef xsnprintf +#define xsnprintf snprintf +#endif +#ifndef xstrcat +#define xstrcat(dest,src,size) strcat(dest,src) +#endif + +#endif /* defined(_WIN32) && !defined(__GNUC__) */ + + +#ifdef _WIN32 +#if defined(_MSC_VER) && (_MSC_VER < 1300) +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif +#endif + +#if SIZEOF_VOIDP == SIZEOF_LONG +typedef unsigned long hash_data_type; +#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG +typedef unsigned long long hash_data_type; +#endif + +/* strend hash */ +typedef void* hash_table_type; #ifdef USE_CALLOUT @@ -236,7 +312,6 @@ enum OptimizeType { OPTIMIZE_STR, /* Slow Search */ OPTIMIZE_STR_FAST, /* Sunday quick search / BMH */ OPTIMIZE_STR_FAST_STEP_FORWARD, /* Sunday quick search / BMH */ - OPTIMIZE_STR_CASE_FOLD, /* Slow Search (ignore case) */ OPTIMIZE_MAP /* char map */ }; @@ -289,32 +364,20 @@ typedef unsigned int MemStatusType; (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \ : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10)) -#define IS_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE) -#define IS_MULTILINE(option) ((option) & ONIG_OPTION_MULTILINE) -#define IS_IGNORECASE(option) ((option) & ONIG_OPTION_IGNORECASE) -#define IS_EXTEND(option) ((option) & ONIG_OPTION_EXTEND) -#define IS_FIND_LONGEST(option) ((option) & ONIG_OPTION_FIND_LONGEST) -#define IS_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY) -#define IS_FIND_CONDITION(option) ((option) & \ +#define OPTON_FIND_LONGEST(option) ((option) & ONIG_OPTION_FIND_LONGEST) +#define OPTON_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY) +#define OPTON_FIND_CONDITION(option) ((option) & \ (ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY)) -#define IS_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL) -#define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) -#define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION) - -#define IS_WORD_ASCII(option) \ - ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) -#define IS_DIGIT_ASCII(option) \ - ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) -#define IS_SPACE_ASCII(option) \ - ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) -#define IS_POSIX_ASCII(option) ((option) & ONIG_OPTION_POSIX_IS_ASCII) - -#define IS_ASCII_MODE_CTYPE_OPTION(ctype, options) \ - ((ctype) >= 0 && \ - (((ctype) < ONIGENC_CTYPE_ASCII && IS_POSIX_ASCII(options)) ||\ - ((ctype) == ONIGENC_CTYPE_WORD && IS_WORD_ASCII(options)) ||\ - ((ctype) == ONIGENC_CTYPE_DIGIT && IS_DIGIT_ASCII(options)) ||\ - ((ctype) == ONIGENC_CTYPE_SPACE && IS_SPACE_ASCII(options)))) +#define OPTON_NEGATE_SINGLELINE(option) ((option) & \ + ONIG_OPTION_NEGATE_SINGLELINE) +#define OPTON_DONT_CAPTURE_GROUP(option) ((option) & \ + ONIG_OPTION_DONT_CAPTURE_GROUP) +#define OPTON_CAPTURE_GROUP(option) ((option) & ONIG_OPTION_CAPTURE_GROUP) +#define OPTON_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL) +#define OPTON_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) +#define OPTON_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION) +#define OPTON_CHECK_VALIDITY_OF_STRING(option) ((option) & \ + ONIG_OPTION_CHECK_VALIDITY_OF_STRING) #define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \ ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) @@ -326,17 +389,17 @@ typedef unsigned int MemStatusType; #define BITS_PER_BYTE 8 #define SINGLE_BYTE_SIZE (1 << BITS_PER_BYTE) #define BITS_IN_ROOM 32 /* 4 * BITS_PER_BYTE */ -#define BITSET_SIZE (SINGLE_BYTE_SIZE / BITS_IN_ROOM) +#define BITSET_REAL_SIZE (SINGLE_BYTE_SIZE / BITS_IN_ROOM) typedef uint32_t Bits; -typedef Bits BitSet[BITSET_SIZE]; +typedef Bits BitSet[BITSET_REAL_SIZE]; typedef Bits* BitSetRef; -#define SIZE_BITSET sizeof(BitSet) +#define SIZE_BITSET sizeof(BitSet) #define BITSET_CLEAR(bs) do {\ int i;\ - for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \ + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { (bs)[i] = 0; } \ } while (0) #define BS_ROOM(bs,pos) (bs)[(unsigned int )(pos) >> 5] @@ -356,14 +419,6 @@ typedef struct _BBuf { #define BB_INIT(buf,size) bbuf_init((BBuf* )(buf), (size)) -/* -#define BB_SIZE_INC(buf,inc) do{\ - (buf)->alloc += (inc);\ - (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\ - if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\ -} while (0) -*/ - #define BB_EXPAND(buf,low) do{\ do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\ (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\ @@ -460,22 +515,20 @@ typedef struct _BBuf { /* operation code */ enum OpCode { - OP_FINISH = 0, /* matching process terminator (no more alternative) */ - OP_END = 1, /* pattern code terminator (success end) */ - OP_STR_1 = 2, /* single byte, N = 1 */ - OP_STR_2, /* single byte, N = 2 */ - OP_STR_3, /* single byte, N = 3 */ - OP_STR_4, /* single byte, N = 4 */ - OP_STR_5, /* single byte, N = 5 */ - OP_STR_N, /* single byte */ - OP_STR_MB2N1, /* mb-length = 2 N = 1 */ - OP_STR_MB2N2, /* mb-length = 2 N = 2 */ - OP_STR_MB2N3, /* mb-length = 2 N = 3 */ - OP_STR_MB2N, /* mb-length = 2 */ - OP_STR_MB3N, /* mb-length = 3 */ - OP_STR_MBN, /* other length */ - OP_STR_1_IC, /* single byte, N = 1, ignore case */ - OP_STR_N_IC, /* single byte, ignore case */ + OP_FINISH = 0, /* matching process terminator (no more alternative) */ + OP_END = 1, /* pattern code terminator (success end) */ + OP_STR_1 = 2, /* single byte, N = 1 */ + OP_STR_2, /* single byte, N = 2 */ + OP_STR_3, /* single byte, N = 3 */ + OP_STR_4, /* single byte, N = 4 */ + OP_STR_5, /* single byte, N = 5 */ + OP_STR_N, /* single byte */ + OP_STR_MB2N1, /* mb-length = 2 N = 1 */ + OP_STR_MB2N2, /* mb-length = 2 N = 2 */ + OP_STR_MB2N3, /* mb-length = 2 N = 3 */ + OP_STR_MB2N, /* mb-length = 2 */ + OP_STR_MB3N, /* mb-length = 3 */ + OP_STR_MBN, /* other length */ OP_CCLASS, OP_CCLASS_MB, OP_CCLASS_MIX, @@ -502,7 +555,7 @@ enum OpCode { OP_BEGIN_LINE, OP_END_LINE, OP_SEMI_END_BUF, - OP_BEGIN_POSITION, + OP_CHECK_POSITION, OP_BACKREF1, OP_BACKREF2, OP_BACKREF_N, @@ -527,7 +580,8 @@ enum OpCode { OP_JUMP, OP_PUSH, OP_PUSH_SUPER, - OP_POP_OUT, + OP_POP, + OP_POP_TO_MARK, #ifdef USE_OP_PUSH_OR_JUMP_EXACT OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ #endif @@ -542,16 +596,12 @@ enum OpCode { #ifdef USE_CALL OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ #endif - OP_PREC_READ_START, /* (?=...) start */ - OP_PREC_READ_END, /* (?=...) end */ - OP_PREC_READ_NOT_START, /* (?!...) start */ - OP_PREC_READ_NOT_END, /* (?!...) end */ - OP_ATOMIC_START, /* (?>...) start */ - OP_ATOMIC_END, /* (?>...) end */ - OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ - OP_LOOK_BEHIND_NOT_START, /* (?<!...) start */ - OP_LOOK_BEHIND_NOT_END, /* (?<!...) end */ - OP_PUSH_SAVE_VAL, + OP_MOVE, + OP_STEP_BACK_START, + OP_STEP_BACK_NEXT, + OP_CUT_TO_MARK, + OP_MARK, + OP_SAVE_VAL, OP_UPDATE_VAR, #ifdef USE_CALL OP_CALL, /* \g<name> */ @@ -574,7 +624,13 @@ enum UpdateVarType { UPDATE_VAR_S_FROM_STACK = 1, UPDATE_VAR_RIGHT_RANGE_FROM_STACK = 2, UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK = 3, - UPDATE_VAR_RIGHT_RANGE_INIT = 4, + UPDATE_VAR_RIGHT_RANGE_TO_S = 4, + UPDATE_VAR_RIGHT_RANGE_INIT = 5, +}; + +enum CheckPositionType { + CHECK_POSITION_SEARCH_START = 0, + CHECK_POSITION_CURRENT_RIGHT_RANGE = 1, }; enum TextSegmentBoundaryType { @@ -585,6 +641,7 @@ enum TextSegmentBoundaryType { typedef int RelAddrType; typedef int AbsAddrType; typedef int LengthType; +typedef int RelPositionType; typedef int RepeatNumType; typedef int MemNumType; typedef void* PointerType; @@ -619,7 +676,8 @@ typedef int ModeType; #define OPSIZE_JUMP 1 #define OPSIZE_PUSH 1 #define OPSIZE_PUSH_SUPER 1 -#define OPSIZE_POP_OUT 1 +#define OPSIZE_POP 1 +#define OPSIZE_POP_TO_MARK 1 #ifdef USE_OP_PUSH_OR_JUMP_EXACT #define OPSIZE_PUSH_OR_JUMP_EXACT1 1 #endif @@ -628,10 +686,6 @@ typedef int ModeType; #define OPSIZE_REPEAT_INC 1 #define OPSIZE_REPEAT_INC_NG 1 #define OPSIZE_WORD_BOUNDARY 1 -#define OPSIZE_PREC_READ_START 1 -#define OPSIZE_PREC_READ_NOT_START 1 -#define OPSIZE_PREC_READ_END 1 -#define OPSIZE_PREC_READ_NOT_END 1 #define OPSIZE_BACKREF 1 #define OPSIZE_FAIL 1 #define OPSIZE_MEM_START 1 @@ -640,16 +694,17 @@ typedef int ModeType; #define OPSIZE_MEM_END_PUSH_REC 1 #define OPSIZE_MEM_END 1 #define OPSIZE_MEM_END_REC 1 -#define OPSIZE_ATOMIC_START 1 -#define OPSIZE_ATOMIC_END 1 #define OPSIZE_EMPTY_CHECK_START 1 #define OPSIZE_EMPTY_CHECK_END 1 -#define OPSIZE_LOOK_BEHIND 1 -#define OPSIZE_LOOK_BEHIND_NOT_START 1 -#define OPSIZE_LOOK_BEHIND_NOT_END 1 +#define OPSIZE_CHECK_POSITION 1 #define OPSIZE_CALL 1 #define OPSIZE_RETURN 1 -#define OPSIZE_PUSH_SAVE_VAL 1 +#define OPSIZE_MOVE 1 +#define OPSIZE_STEP_BACK_START 1 +#define OPSIZE_STEP_BACK_NEXT 1 +#define OPSIZE_CUT_TO_MARK 1 +#define OPSIZE_MARK 1 +#define OPSIZE_SAVE_VAL 1 #define OPSIZE_UPDATE_VAR 1 #ifdef USE_CALLOUT @@ -750,6 +805,9 @@ typedef struct { int not; } text_segment_boundary; struct { + enum CheckPositionType type; + } check_position; + struct { union { MemNumType n1; /* num == 1 */ MemNumType* ns; /* num > 1 */ @@ -781,6 +839,9 @@ typedef struct { UChar c; } push_if_peek_next; struct { + MemNumType id; + } pop_to_mark; + struct { MemNumType id; RelAddrType addr; } repeat; /* REPEAT, REPEAT_NG */ @@ -804,16 +865,33 @@ typedef struct { RelAddrType addr; } look_behind_not_start; struct { - AbsAddrType addr; - } call; + RelPositionType n; /* char relative position */ + } move; + struct { + LengthType initial; /* char length */ + LengthType remaining; /* char length */ + RelAddrType addr; + } step_back_start; + struct { + MemNumType id; + int restore_pos; /* flag: restore current string position */ + } cut_to_mark; + struct { + MemNumType id; + int save_pos; /* flag: save current string position */ + } mark; struct { SaveType type; MemNumType id; - } push_save_val; + } save_val; struct { UpdateVarType type; MemNumType id; + int clear; /* UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK or UPDATE_VAR_RIGHT_RANGE_FROM_STACK */ } update_var; + struct { + AbsAddrType addr; + } call; #ifdef USE_CALLOUT struct { MemNumType num; @@ -899,6 +977,17 @@ struct re_pattern_buffer { extern void onig_add_end_call(void (*func)(void)); +extern void onig_warning(const char* s); +extern UChar* onig_error_code_to_format P_((int code)); +extern void ONIG_VARIADIC_FUNC_ATTR onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); +extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); +extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); +extern RegexExt* onig_get_regex_ext(regex_t* reg); +extern int onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end); +extern int onig_positive_int_multiply(int x, int y); +extern hash_table_type onig_st_init_strend_table_with_size P_((int size)); +extern int onig_st_lookup_strend P_((hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type *value)); +extern int onig_st_insert_strend P_((hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type value)); #ifdef ONIG_DEBUG @@ -910,16 +999,8 @@ extern void onig_print_compiled_byte_code_list(FILE* f, regex_t* reg); extern void onig_statistics_init P_((void)); extern int onig_print_statistics P_((FILE* f)); #endif -#endif -extern void onig_warning(const char* s); -extern UChar* onig_error_code_to_format P_((int code)); -extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); -extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); -extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); -extern RegexExt* onig_get_regex_ext(regex_t* reg); -extern int onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end); -extern int onig_positive_int_multiply(int x, int y); +#endif /* ONIG_DEBUG */ #ifdef USE_CALLOUT @@ -998,20 +1079,6 @@ extern OnigCalloutFunc onig_get_callout_start_func(regex_t* reg, int callout_num #endif /* USE_CALLOUT */ -/* strend hash */ -typedef void hash_table_type; - -#ifdef _WIN32 -# include <windows.h> -typedef ULONG_PTR hash_data_type; -#else -typedef unsigned long hash_data_type; -#endif - -extern hash_table_type* onig_st_init_strend_table_with_size P_((int size)); -extern int onig_st_lookup_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value)); -extern int onig_st_insert_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value)); - typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void); #endif /* REGINT_H */ diff --git a/src/regparse.c b/src/regparse.c index fed53f7..cc015a7 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -2,7 +2,7 @@ regparse.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,12 +27,14 @@ * SUCH DAMAGE. */ -#include "regparse.h" -#include "st.h" - #ifdef DEBUG_NODE_FREE -#include <stdio.h> +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO #endif +#endif + +#include "regparse.h" +#include "st.h" #define INIT_TAG_NAMES_ALLOC_NUM 5 @@ -45,6 +47,26 @@ #define IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c) \ ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_') +#define OPTON_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE) +#define OPTON_MULTILINE(option) ((option) & ONIG_OPTION_MULTILINE) +#define OPTON_IGNORECASE(option) ((option) & ONIG_OPTION_IGNORECASE) +#define OPTON_EXTEND(option) ((option) & ONIG_OPTION_EXTEND) +#define OPTON_WORD_ASCII(option) \ + ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_DIGIT_ASCII(option) \ + ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_SPACE_ASCII(option) \ + ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define OPTON_POSIX_ASCII(option) ((option) & ONIG_OPTION_POSIX_IS_ASCII) +#define OPTON_TEXT_SEGMENT_WORD(option) ((option) & ONIG_OPTION_TEXT_SEGMENT_WORD) + +#define OPTON_IS_ASCII_MODE_CTYPE(ctype, options) \ + ((ctype) >= 0 && \ + (((ctype) < ONIGENC_CTYPE_ASCII && OPTON_POSIX_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_WORD && OPTON_WORD_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_DIGIT && OPTON_DIGIT_ASCII(options)) ||\ + ((ctype) == ONIGENC_CTYPE_SPACE && OPTON_SPACE_ASCII(options)))) + OnigSyntaxType OnigSyntaxOniguruma = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | @@ -74,6 +96,7 @@ OnigSyntaxType OnigSyntaxOniguruma = { , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | + ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | @@ -136,6 +159,20 @@ OnigSyntaxType OnigSyntaxRuby = { OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_ONIGURUMA; +typedef enum { + CS_VALUE, + CS_RANGE, + CS_COMPLETE, + CS_START +} CSTATE; + +typedef enum { + CV_UNDEF, + CV_SB, + CV_MB, + CV_CPROP +} CVAL; + extern void onig_null_warn(const char* s ARG_UNUSED) { } #ifdef DEFAULT_WARN_FUNCTION @@ -295,7 +332,7 @@ backref_rel_to_abs(int rel_no, ScanEnv* env) #define BITSET_IS_EMPTY(bs,empty) do {\ int i;\ empty = 1;\ - for (i = 0; i < (int )BITSET_SIZE; i++) {\ + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) {\ if ((bs)[i] != 0) {\ empty = 0; break;\ }\ @@ -315,35 +352,35 @@ static void bitset_invert(BitSetRef bs) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { bs[i] = ~(bs[i]); } + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { bs[i] = ~(bs[i]); } } static void bitset_invert_to(BitSetRef from, BitSetRef to) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { to[i] = ~(from[i]); } + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { to[i] = ~(from[i]); } } static void bitset_and(BitSetRef dest, BitSetRef bs) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] &= bs[i]; } + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] &= bs[i]; } } static void bitset_or(BitSetRef dest, BitSetRef bs) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] |= bs[i]; } + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] |= bs[i]; } } static void bitset_copy(BitSetRef dest, BitSetRef bs) { int i; - for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] = bs[i]; } + for (i = 0; i < (int )BITSET_REAL_SIZE; i++) { dest[i] = bs[i]; } } extern int @@ -368,16 +405,6 @@ onig_strcpy(UChar* dest, const UChar* src, const UChar* end) } } -static int -save_entry(ScanEnv* env, enum SaveType type, int* id) -{ - int nid = env->save_num; - - env->save_num++; - *id = nid; - return 0; -} - /* scan pattern methods */ #define PEND_VALUE 0 @@ -478,7 +505,7 @@ str_end_hash(st_str_end_key* x) return (int) (val + (val >> 5)); } -extern hash_table_type* +extern hash_table_type onig_st_init_strend_table_with_size(int size) { static struct st_hash_type hashType = { @@ -486,12 +513,11 @@ onig_st_init_strend_table_with_size(int size) str_end_hash, }; - return (hash_table_type* ) - onig_st_init_table_with_size(&hashType, size); + return (hash_table_type )onig_st_init_table_with_size(&hashType, size); } extern int -onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, +onig_st_lookup_strend(hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type *value) { st_str_end_key key; @@ -503,7 +529,7 @@ onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, } extern int -onig_st_insert_strend(hash_table_type* table, const UChar* str_key, +onig_st_insert_strend(hash_table_type table, const UChar* str_key, const UChar* end_key, hash_data_type value) { st_str_end_key* key; @@ -569,7 +595,7 @@ callout_name_table_hash(st_callout_name_key* x) return (int )(val + (val >> 5) + ((intptr_t )x->enc & 0xffff) + x->type); } -extern hash_table_type* +extern hash_table_type onig_st_init_callout_name_table_with_size(int size) { static struct st_hash_type hashType = { @@ -577,12 +603,11 @@ onig_st_init_callout_name_table_with_size(int size) callout_name_table_hash, }; - return (hash_table_type* ) - onig_st_init_table_with_size(&hashType, size); + return (hash_table_type )onig_st_init_table_with_size(&hashType, size); } extern int -onig_st_lookup_callout_name_table(hash_table_type* table, +onig_st_lookup_callout_name_table(hash_table_type table, OnigEncoding enc, int type, const UChar* str_key, @@ -600,7 +625,7 @@ onig_st_lookup_callout_name_table(hash_table_type* table, } static int -st_insert_callout_name_table(hash_table_type* table, +st_insert_callout_name_table(hash_table_type table, OnigEncoding enc, int type, UChar* str_key, UChar* end_key, hash_data_type value) @@ -775,7 +800,7 @@ onig_foreach_name(regex_t* reg, } static int -i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumRemap* map) +i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumMap* map) { int i; @@ -792,7 +817,7 @@ i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumRemap* map) } extern int -onig_renumber_name_table(regex_t* reg, GroupNumRemap* map) +onig_renumber_name_table(regex_t* reg, GroupNumMap* map) { NameTable* t = (NameTable* )reg->name_table; @@ -1142,12 +1167,12 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name, extern int onig_noname_group_capture_is_active(regex_t* reg) { - if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) + if (OPTON_DONT_CAPTURE_GROUP(reg->options)) return 0; if (onig_number_of_names(reg) > 0 && IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { + ! OPTON_CAPTURE_GROUP(reg->options)) { return 0; } @@ -1603,12 +1628,11 @@ onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type, fe->arg_types[i] = arg_types[i]; } for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) { + if (IS_NULL(opt_defaults)) return ONIGERR_INVALID_ARGUMENT; if (fe->arg_types[i] == ONIG_TYPE_STRING) { OnigValue* val; UChar* ds; - if (IS_NULL(opt_defaults)) return ONIGERR_INVALID_ARGUMENT; - val = opt_defaults + j; ds = onigenc_strdup(enc, val->s.start, val->s.end); CHECK_NULL_RETURN_MEMERR(ds); @@ -1983,15 +2007,15 @@ scan_env_clear(ScanEnv* env) xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); - env->parse_depth = 0; + env->parse_depth = 0; #ifdef ONIG_DEBUG_PARSE - env->max_parse_depth = 0; + env->max_parse_depth = 0; #endif - env->backref_num = 0; - env->keep_num = 0; - env->save_num = 0; - env->save_alloc_num = 0; - env->saves = 0; + env->backref_num = 0; + env->keep_num = 0; + env->id_num = 0; + env->save_alloc_num = 0; + env->saves = 0; } static int @@ -2042,16 +2066,11 @@ scan_env_set_mem_node(ScanEnv* env, int num, Node* node) return 0; } -extern void -onig_node_free(Node* node) +static void +node_free_body(Node* node) { - start: if (IS_NULL(node)) return ; -#ifdef DEBUG_NODE_FREE - fprintf(stderr, "onig_node_free: %p\n", node); -#endif - switch (NODE_TYPE(node)) { case NODE_STRING: if (STR_(node)->capacity != 0 && @@ -2063,12 +2082,12 @@ onig_node_free(Node* node) case NODE_LIST: case NODE_ALT: onig_node_free(NODE_CAR(node)); - { - Node* next_node = NODE_CDR(node); - + node = NODE_CDR(node); + while (IS_NOT_NULL(node)) { + Node* next = NODE_CDR(node); + onig_node_free(NODE_CAR(node)); xfree(node); - node = next_node; - goto start; + node = next; } break; @@ -2100,9 +2119,15 @@ onig_node_free(Node* node) break; case NODE_QUANT: + if (NODE_BODY(node)) + onig_node_free(NODE_BODY(node)); + break; + case NODE_ANCHOR: if (NODE_BODY(node)) onig_node_free(NODE_BODY(node)); + if (IS_NOT_NULL(ANCHOR_(node)->lead_node)) + onig_node_free(ANCHOR_(node)->lead_node); break; case NODE_CTYPE: @@ -2110,7 +2135,18 @@ onig_node_free(Node* node) case NODE_GIMMICK: break; } +} +extern void +onig_node_free(Node* node) +{ + if (IS_NULL(node)) return ; + +#ifdef DEBUG_NODE_FREE + fprintf(stderr, "onig_node_free: %p\n", node); +#endif + + node_free_body(node); xfree(node); } @@ -2137,6 +2173,66 @@ node_new(void) return node; } +extern int +onig_node_copy(Node** rcopy, Node* from) +{ + int r; + Node* copy; + + *rcopy = NULL_NODE; + + switch (NODE_TYPE(from)) { + case NODE_LIST: + case NODE_ALT: + case NODE_ANCHOR: + /* These node's link to other nodes are processed by caller. */ + break; + case NODE_STRING: + case NODE_CCLASS: + case NODE_CTYPE: + /* Fixed contents after copy. */ + break; + default: + /* Not supported yet. */ + return ONIGERR_TYPE_BUG; + break; + } + + copy = node_new(); + CHECK_NULL_RETURN_MEMERR(copy); + xmemcpy(copy, from, sizeof(*copy)); + + switch (NODE_TYPE(copy)) { + case NODE_STRING: + r = onig_node_str_set(copy, STR_(from)->s, STR_(from)->end, FALSE); + if (r != 0) { + err: + onig_node_free(copy); + return r; + } + break; + + case NODE_CCLASS: + { + CClassNode *fcc, *tcc; + + fcc = CCLASS_(from); + tcc = CCLASS_(copy); + if (IS_NOT_NULL(fcc->mbuf)) { + r = bbuf_clone(&(tcc->mbuf), fcc->mbuf); + if (r != 0) goto err; + } + } + break; + + default: + break; + } + + *rcopy = copy; + return ONIG_NORMAL; +} + static void initialize_cclass(CClassNode* cc) @@ -2166,30 +2262,20 @@ node_new_ctype(int type, int not, OnigOptionType options) NODE_SET_TYPE(node, NODE_CTYPE); CTYPE_(node)->ctype = type; CTYPE_(node)->not = not; - CTYPE_(node)->options = options; - CTYPE_(node)->ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(type, options); - return node; -} - -static Node* -node_new_anychar(void) -{ - Node* node = node_new_ctype(CTYPE_ANYCHAR, FALSE, ONIG_OPTION_NONE); + CTYPE_(node)->ascii_mode = OPTON_IS_ASCII_MODE_CTYPE(type, options); return node; } static Node* -node_new_anychar_with_fixed_option(OnigOptionType option) +node_new_anychar(OnigOptionType options) { - CtypeNode* ct; Node* node; - node = node_new_anychar(); + node = node_new_ctype(CTYPE_ANYCHAR, FALSE, options); CHECK_NULL_RETURN(node); - ct = CTYPE_(node); - ct->options = option; - NODE_STATUS_ADD(node, FIXED_OPTION); + if (OPTON_MULTILINE(options)) + NODE_STATUS_ADD(node, MULTILINE); return node; } @@ -2198,18 +2284,18 @@ node_new_no_newline(Node** node, ScanEnv* env) { Node* n; - n = node_new_anychar_with_fixed_option(ONIG_OPTION_NONE); + n = node_new_anychar(ONIG_OPTION_NONE); CHECK_NULL_RETURN_MEMERR(n); *node = n; return 0; } static int -node_new_true_anychar(Node** node, ScanEnv* env) +node_new_true_anychar(Node** node) { Node* n; - n = node_new_anychar_with_fixed_option(ONIG_OPTION_MULTILINE); + n = node_new_anychar(ONIG_OPTION_MULTILINE); CHECK_NULL_RETURN_MEMERR(n); *node = n; return 0; @@ -2291,16 +2377,41 @@ make_alt(int n, Node* ns[]) return make_list_or_alt(NODE_ALT, n, ns); } -extern Node* -onig_node_new_anchor(int type, int ascii_mode) +static Node* +node_new_anchor(int type) { - Node* node = node_new(); + Node* node; + + node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_ANCHOR); ANCHOR_(node)->type = type; - ANCHOR_(node)->char_len = -1; + ANCHOR_(node)->char_min_len = 0; + ANCHOR_(node)->char_max_len = INFINITE_LEN; + ANCHOR_(node)->ascii_mode = 0; + ANCHOR_(node)->lead_node = NULL_NODE; + return node; +} + +static Node* +node_new_anchor_with_options(int type, OnigOptionType options) +{ + int ascii_mode; + Node* node; + + node = node_new_anchor(type); + CHECK_NULL_RETURN(node); + + ascii_mode = OPTON_WORD_ASCII(options) && IS_WORD_ANCHOR_TYPE(type) ? 1 : 0; ANCHOR_(node)->ascii_mode = ascii_mode; + + if (type == ANCR_TEXT_SEGMENT_BOUNDARY || + type == ANCR_NO_TEXT_SEGMENT_BOUNDARY) { + if (OPTON_TEXT_SEGMENT_WORD(options)) + NODE_STATUS_ADD(node, TEXT_SEGMENT_WORD); + } + return node; } @@ -2312,8 +2423,9 @@ node_new_backref(int back_num, int* backrefs, int by_name, ScanEnv* env) { int i; - Node* node = node_new(); + Node* node; + node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_BACKREF); @@ -2322,6 +2434,9 @@ node_new_backref(int back_num, int* backrefs, int by_name, if (by_name != 0) NODE_STATUS_ADD(node, BY_NAME); + if (OPTON_IGNORECASE(env->options)) + NODE_STATUS_ADD(node, IGNORECASE); + #ifdef USE_BACKREF_WITH_LEVEL if (exist_level != 0) { NODE_STATUS_ADD(node, NEST_LEVEL); @@ -2512,24 +2627,35 @@ node_drop_group(Node* group) } static int +node_set_fail(Node* node) +{ + NODE_SET_TYPE(node, NODE_GIMMICK); + GIMMICK_(node)->type = GIMMICK_FAIL; + return ONIG_NORMAL; +} + +static int node_new_fail(Node** node, ScanEnv* env) { *node = node_new(); CHECK_NULL_RETURN_MEMERR(*node); - NODE_SET_TYPE(*node, NODE_GIMMICK); - GIMMICK_(*node)->type = GIMMICK_FAIL; - return ONIG_NORMAL; + return node_set_fail(*node); +} + +extern int +onig_node_reset_fail(Node* node) +{ + node_free_body(node); + return node_set_fail(node); } static int node_new_save_gimmick(Node** node, enum SaveType save_type, ScanEnv* env) { int id; - int r; - r = save_entry(env, save_type, &id); - if (r != ONIG_NORMAL) return r; + ID_ENTRY(env, id); *node = node_new(); CHECK_NULL_RETURN_MEMERR(*node); @@ -2692,10 +2818,10 @@ make_text_segment(Node** node, ScanEnv* env) ns[1] = NULL_NODE; r = ONIGERR_MEMORY; - ns[0] = onig_node_new_anchor(ANCR_NO_TEXT_SEGMENT_BOUNDARY, FALSE); + ns[0] = node_new_anchor_with_options(ANCR_NO_TEXT_SEGMENT_BOUNDARY, env->options); if (IS_NULL(ns[0])) goto err; - r = node_new_true_anychar(&ns[1], env); + r = node_new_true_anychar(&ns[1]); if (r != 0) goto err1; x = make_list(2, ns); @@ -2710,7 +2836,7 @@ make_text_segment(Node** node, ScanEnv* env) ns[0] = NULL_NODE; ns[1] = x; - r = node_new_true_anychar(&ns[0], env); + r = node_new_true_anychar(&ns[0]); if (r != 0) goto err1; x = make_list(2, ns); @@ -2757,6 +2883,9 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent, id, env); if (r != 0) goto err; + if (is_range_cutter != 0) + NODE_STATUS_ADD(ns[2], ABSENT_WITH_SIDE_EFFECTS); + r = node_new_fail(&ns[3], env); if (r != 0) goto err; @@ -2896,6 +3025,7 @@ make_range_clear(Node** node, ScanEnv* env) r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, ID_NOT_USED_DONT_CARE_ME, env); if (r != 0) goto err; + NODE_STATUS_ADD(ns[0], ABSENT_WITH_SIDE_EFFECTS); x = make_alt(2, ns); if (IS_NULL(x)) goto err0; @@ -3059,7 +3189,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, quant = node_new_quantifier(0, INFINITE_REPEAT, FALSE); if (IS_NULL(quant)) goto err0; - r = node_new_true_anychar(&body, env); + r = node_new_true_anychar(&body); if (r != 0) { onig_node_free(quant); goto err; @@ -3094,7 +3224,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, id2 = GIMMICK_(ns[1])->id; - r = node_new_true_anychar(&ns[3], env); + r = node_new_true_anychar(&ns[3]); if (r != 0) goto err; possessive = 1; @@ -3167,9 +3297,9 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end) } extern int -onig_node_str_set(Node* node, const UChar* s, const UChar* end) +onig_node_str_set(Node* node, const UChar* s, const UChar* end, int need_free) { - onig_node_str_clear(node); + onig_node_str_clear(node, need_free); return onig_node_str_cat(node, s, end); } @@ -3183,9 +3313,10 @@ node_str_cat_char(Node* node, UChar c) } extern void -onig_node_str_clear(Node* node) +onig_node_str_clear(Node* node, int need_free) { - if (STR_(node)->capacity != 0 && + if (need_free != 0 && + STR_(node)->capacity != 0 && IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { xfree(STR_(node)->s); } @@ -3194,29 +3325,52 @@ onig_node_str_clear(Node* node) STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; STR_(node)->capacity = 0; - STR_(node)->case_min_len = 0; } -static Node* -node_new_str(const UChar* s, const UChar* end) +static int +node_set_str(Node* node, const UChar* s, const UChar* end) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + int r; NODE_SET_TYPE(node, NODE_STRING); STR_(node)->flag = 0; STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; STR_(node)->capacity = 0; - STR_(node)->case_min_len = 0; - if (onig_node_str_cat(node, s, end)) { + r = onig_node_str_cat(node, s, end); + return r; +} + +static Node* +node_new_str(const UChar* s, const UChar* end) +{ + int r; + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + r = node_set_str(node, s, end); + if (r != 0) { onig_node_free(node); return NULL; } + return node; } +static int +node_reset_str(Node* node, const UChar* s, const UChar* end) +{ + node_free_body(node); + return node_set_str(node, s, end); +} + +extern int +onig_node_reset_empty(Node* node) +{ + return node_reset_str(node, NULL, NULL); +} + extern Node* onig_node_new_str(const UChar* s, const UChar* end) { @@ -3224,9 +3378,22 @@ onig_node_new_str(const UChar* s, const UChar* end) } static Node* -node_new_str_crude(UChar* s, UChar* end) +node_new_str_with_options(const UChar* s, const UChar* end, + OnigOptionType options) +{ + Node* node; + node = node_new_str(s, end); + + if (OPTON_IGNORECASE(options)) + NODE_STATUS_ADD(node, IGNORECASE); + + return node; +} + +static Node* +node_new_str_crude(UChar* s, UChar* end, OnigOptionType options) { - Node* node = node_new_str(s, end); + Node* node = node_new_str_with_options(s, end, options); CHECK_NULL_RETURN(node); NODE_STRING_SET_CRUDE(node); return node; @@ -3239,14 +3406,14 @@ node_new_empty(void) } static Node* -node_new_str_crude_char(UChar c) +node_new_str_crude_char(UChar c, OnigOptionType options) { int i; UChar p[1]; Node* node; p[0] = c; - node = node_new_str_crude(p, p + 1); + node = node_new_str_crude(p, p + 1, options); /* clear buf tail */ for (i = 1; i < NODE_STRING_BUF_SIZE; i++) @@ -3269,12 +3436,13 @@ str_node_split_last_char(Node* node, OnigEncoding enc) if (p && p > sn->s) { /* can be split. */ rn = node_new_str(p, sn->end); CHECK_NULL_RETURN(rn); - if (NODE_STRING_IS_CRUDE(node)) - NODE_STRING_SET_CRUDE(rn); sn->end = (UChar* )p; + STR_(rn)->flag = sn->flag; + NODE_STATUS(rn) = NODE_STATUS(node); } } + return rn; } @@ -3301,7 +3469,7 @@ scan_number(UChar** src, const UChar* end, OnigEncoding enc) PFETCH(c); if (IS_CODE_DIGIT_ASCII(enc, c)) { val = (int )DIGITVAL(c); - if ((INT_MAX - val) / 10 < num) + if ((ONIG_INT_MAX - val) / 10 < num) return -1; /* overflow */ num = num * 10 + val; @@ -3389,6 +3557,179 @@ scan_octal_number(UChar** src, UChar* end, int minlen, int maxlen, return ONIG_NORMAL; } +static int +scan_number_of_base(UChar** src, UChar* end, int minlen, + OnigEncoding enc, OnigCodePoint* rcode, int base) +{ + int r; + + if (base == 16) + r = scan_hexadecimal_number(src, end, minlen, 8, enc, rcode); + else if (base == 8) + r = scan_octal_number(src, end, minlen, 11, enc, rcode); + else + r = ONIGERR_INVALID_CODE_POINT_VALUE; + + return r; +} + +#define IS_CODE_POINT_DIVIDE(c) ((c) == ' ' || (c) == '\n') + +enum CPS_STATE { + CPS_EMPTY = 0, + CPS_START = 1, + CPS_RANGE = 2 +}; + +static int +check_code_point_sequence_cc(UChar* p, UChar* end, int base, + OnigEncoding enc, int state) +{ + int r; + int n; + int end_digit; + OnigCodePoint code; + OnigCodePoint c; + PFETCH_READY; + + end_digit = FALSE; + n = 0; + while (! PEND) { + start: + PFETCH(c); + if (c == '}') { + end_char: + if (state == CPS_RANGE) return ONIGERR_INVALID_CODE_POINT_VALUE; + return n; + } + + if (IS_CODE_POINT_DIVIDE(c)) { + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) break; + } + if (IS_CODE_POINT_DIVIDE(c)) + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + else if (c == '-') { + range: + if (state != CPS_START) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + end_digit = FALSE; + state = CPS_RANGE; + goto start; + } + else if (end_digit == TRUE) { + if (base == 16) { + if (IS_CODE_XDIGIT_ASCII(enc, c)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + else if (base == 8) { + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + + if (c == '}') goto end_char; + if (c == '-') goto range; + + PUNFETCH; + r = scan_number_of_base(&p, end, 1, enc, &code, base); + if (r != 0) return r; + n++; + end_digit = TRUE; + state = (state == CPS_RANGE) ? CPS_EMPTY : CPS_START; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +check_code_point_sequence(UChar* p, UChar* end, int base, OnigEncoding enc) +{ + int r; + int n; + int end_digit; + OnigCodePoint code; + OnigCodePoint c; + PFETCH_READY; + + end_digit = FALSE; + n = 0; + while (! PEND) { + PFETCH(c); + if (c == '}') { + end_char: + return n; + } + + if (IS_CODE_POINT_DIVIDE(c)) { + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) break; + } + if (IS_CODE_POINT_DIVIDE(c)) + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + else if (end_digit == TRUE) { + if (base == 16) { + if (IS_CODE_XDIGIT_ASCII(enc, c)) + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + else if (base == 8) { + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') + return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; + } + + if (c == '}') goto end_char; + + PUNFETCH; + r = scan_number_of_base(&p, end, 1, enc, &code, base); + if (r != 0) return r; + n++; + end_digit = TRUE; + } + + return ONIGERR_INVALID_CODE_POINT_VALUE; +} + +static int +get_next_code_point(UChar** src, UChar* end, int base, OnigEncoding enc, int in_cc, OnigCodePoint* rcode) +{ + int r; + OnigCodePoint c; + UChar* p = *src; + PFETCH_READY; + + while (! PEND) { + PFETCH(c); + if (! IS_CODE_POINT_DIVIDE(c)) break; + } + if (IS_CODE_POINT_DIVIDE(c)) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + if (c == '}') { + *src = p; + return 1; /* end of sequence */ + } + else if (c == '-' && in_cc == TRUE) { + *src = p; + return 2; /* range */ + } + + PUNFETCH; + r = scan_number_of_base(&p, end, 1, enc, rcode, base); + if (r != 0) return r; + + *src = p; + return ONIG_NORMAL; +} + #define BB_WRITE_CODE_POINT(bbuf,pos,code) \ BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) @@ -4000,10 +4341,10 @@ node_new_general_newline(Node** node, ScanEnv* env) dlen = ONIGENC_CODE_TO_MBC(env->enc, 0x0d, buf); if (dlen < 0) return dlen; - alen = ONIGENC_CODE_TO_MBC(env->enc, 0x0a, buf + dlen); + alen = ONIGENC_CODE_TO_MBC(env->enc, NEWLINE_CODE, buf + dlen); if (alen < 0) return alen; - crnl = node_new_str_crude(buf, buf + dlen + alen); + crnl = node_new_str_crude(buf, buf + dlen + alen, ONIG_OPTION_NONE); CHECK_NULL_RETURN_MEMERR(crnl); ncc = node_new_cclass(); @@ -4011,10 +4352,10 @@ node_new_general_newline(Node** node, ScanEnv* env) cc = CCLASS_(ncc); if (dlen == 1) { - bitset_set_range(cc->bs, 0x0a, 0x0d); + bitset_set_range(cc->bs, NEWLINE_CODE, 0x0d); } else { - r = add_code_range(&(cc->mbuf), env, 0x0a, 0x0d); + r = add_code_range(&(cc->mbuf), env, NEWLINE_CODE, 0x0d); if (r != 0) { err1: onig_node_free(ncc); @@ -4074,8 +4415,9 @@ enum TokenSyms { typedef struct { enum TokenSyms type; + int code_point_continue; int escaped; - int base; /* is number: 8, 16 (used in [....]) */ + int base_num; /* is number: 8, 16 (used in [....]) */ UChar* backp; union { UChar* s; @@ -4112,6 +4454,11 @@ typedef struct { } u; } PToken; +static void +ptoken_init(PToken* tok) +{ + tok->code_point_continue = 0; +} static int fetch_interval(UChar** src, UChar* end, PToken* tok, ScanEnv* env) @@ -4681,7 +5028,7 @@ str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, } static int -fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) +fetch_token_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env, int state) { int r; OnigCodePoint code; @@ -4692,6 +5039,24 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) UChar* p = *src; PFETCH_READY; + if (tok->code_point_continue != 0) { + r = get_next_code_point(&p, end, tok->base_num, enc, TRUE, &code); + if (r == 1) { + tok->code_point_continue = 0; + } + else if (r == 2) { + tok->type = TK_CC_RANGE; + goto end; + } + else if (r == 0) { + tok->type = TK_CODE_POINT; + tok->u.code = code; + goto end; + } + else + return r; /* error */ + } + if (PEND) { tok->type = TK_EOT; return tok->type; @@ -4699,9 +5064,9 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) PFETCH(c); tok->type = TK_CHAR; - tok->base = 0; - tok->u.code = c; - tok->escaped = 0; + tok->base_num = 0; + tok->u.code = c; + tok->escaped = 0; if (c == ']') { tok->type = TK_CC_CLOSE; @@ -4798,16 +5163,8 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } - if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { - PINC; - tok->type = TK_CODE_POINT; - tok->base = 8; - tok->u.code = code; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } + tok->base_num = 8; + goto brace_code_point_entry; } break; @@ -4825,10 +5182,24 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } - if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { - PINC; + tok->base_num = 16; + brace_code_point_entry: + if ((p > prev + enclen(enc, prev))) { + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PPEEK_IS('}')) { + PINC; + } + else { + int curr_state; + + curr_state = (state == CS_RANGE) ? CPS_EMPTY : CPS_START; + r = check_code_point_sequence_cc(p, end, tok->base_num, enc, + curr_state); + if (r < 0) return r; + if (r == 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + tok->code_point_continue = TRUE; + } tok->type = TK_CODE_POINT; - tok->base = 16; tok->u.code = code; } else { @@ -4843,8 +5214,8 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) code = 0; /* but, it's not error */ } tok->type = TK_CRUDE_BYTE; - tok->base = 16; - tok->u.byte = (UChar )code; + tok->base_num = 16; + tok->u.byte = (UChar )code; } break; @@ -4858,9 +5229,9 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) if (p == prev) { /* can't read nothing. */ code = 0; /* but, it's not error */ } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = code; + tok->type = TK_CODE_POINT; + tok->base_num = 16; + tok->u.code = code; } break; @@ -4876,8 +5247,8 @@ fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) code = 0; /* but, it's not error */ } tok->type = TK_CRUDE_BYTE; - tok->base = 8; - tok->u.byte = (UChar )code; + tok->base_num = 8; + tok->u.byte = (UChar )code; } break; @@ -4941,15 +5312,29 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) UChar* p = *src; PFETCH_READY; + if (tok->code_point_continue != 0) { + r = get_next_code_point(&p, end, tok->base_num, enc, FALSE, &code); + if (r == 1) { + tok->code_point_continue = 0; + } + else if (r == 0) { + tok->type = TK_CODE_POINT; + tok->u.code = code; + goto out; + } + else + return r; /* error */ + } + start: if (PEND) { tok->type = TK_EOT; return tok->type; } - tok->type = TK_STRING; - tok->base = 0; - tok->backp = p; + tok->type = TK_STRING; + tok->base_num = 0; + tok->backp = p; PFETCH(c); if (IS_MC_ESC_CODE(c, syn)) { @@ -5204,15 +5589,8 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } - if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) { - PINC; - tok->type = TK_CODE_POINT; - tok->u.code = code; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } + tok->base_num = 8; + goto brace_code_point_entry; } break; @@ -5229,8 +5607,19 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } - if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) { - PINC; + tok->base_num = 16; + brace_code_point_entry: + if ((p > prev + enclen(enc, prev))) { + if (PEND) return ONIGERR_INVALID_CODE_POINT_VALUE; + if (PPEEK_IS('}')) { + PINC; + } + else { + r = check_code_point_sequence(p, end, tok->base_num, enc); + if (r < 0) return r; + if (r == 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + tok->code_point_continue = TRUE; + } tok->type = TK_CODE_POINT; tok->u.code = code; } @@ -5246,8 +5635,8 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) code = 0; /* but, it's not error */ } tok->type = TK_CRUDE_BYTE; - tok->base = 16; - tok->u.byte = (UChar )code; + tok->base_num = 16; + tok->u.byte = (UChar )code; } break; @@ -5261,9 +5650,9 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) if (p == prev) { /* can't read nothing. */ code = 0; /* but, it's not error */ } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = code; + tok->type = TK_CODE_POINT; + tok->base_num = 16; + tok->u.code = code; } break; @@ -5311,8 +5700,8 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) code = 0; /* but, it's not error */ } tok->type = TK_CRUDE_BYTE; - tok->base = 8; - tok->u.byte = (UChar )code; + tok->base_num = 8; + tok->u.byte = (UChar )code; } else if (c != '0') { PINC; @@ -5484,7 +5873,7 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) if (c == MC_ANYCHAR(syn)) goto any_char; else if (c == MC_ANYTIME(syn)) - goto anytime; + goto any_time; else if (c == MC_ZERO_OR_ONE_TIME(syn)) goto zero_or_one_time; else if (c == MC_ONE_OR_MORE_TIME(syn)) @@ -5508,7 +5897,7 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) case '*': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ASTERISK_ZERO_INF)) break; #ifdef USE_VARIABLE_META_CHARS - anytime: + any_time: #endif tok->type = TK_REPEAT; tok->u.repeat.lower = 0; @@ -5664,14 +6053,14 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) case '^': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; - tok->u.subtype = (IS_SINGLELINE(env->options) + tok->u.subtype = (OPTON_SINGLELINE(env->options) ? ANCR_BEGIN_BUF : ANCR_BEGIN_LINE); break; case '$': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; - tok->u.subtype = (IS_SINGLELINE(env->options) + tok->u.subtype = (OPTON_SINGLELINE(env->options) ? ANCR_SEMI_END_BUF : ANCR_END_LINE); break; @@ -5686,7 +6075,7 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) break; case '#': - if (IS_EXTEND(env->options)) { + if (OPTON_EXTEND(env->options)) { while (!PEND) { PFETCH(c); if (ONIGENC_IS_CODE_NEWLINE(enc, c)) @@ -5698,7 +6087,7 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) break; case ' ': case '\t': case '\n': case '\r': case '\f': - if (IS_EXTEND(env->options)) + if (OPTON_EXTEND(env->options)) goto start; break; @@ -5708,9 +6097,7 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) } } -#ifdef USE_VARIABLE_META_CHARS out: -#endif *src = p; return tok->type; } @@ -5884,8 +6271,6 @@ add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not, static int add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) { -#define ASCII_LIMIT 127 - int c, r; int ascii_mode; int is_single; @@ -5894,7 +6279,7 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) OnigCodePoint sb_out; OnigEncoding enc = env->enc; - ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options); + ascii_mode = OPTON_IS_ASCII_MODE_CTYPE(ctype, env->options); r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges); if (r == 0) { @@ -6115,20 +6500,6 @@ parse_char_property(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* en } -typedef enum { - CS_VALUE, - CS_RANGE, - CS_COMPLETE, - CS_START -} CSTATE; - -typedef enum { - CV_UNDEF, - CV_SB, - CV_MB, - CV_CPROP -} CVAL; - static int cc_cprop_next(CClassNode* cc, OnigCodePoint* pcode, CVAL* val, CSTATE* state, ScanEnv* env) @@ -6262,11 +6633,12 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) *np = NULL_NODE; INC_PARSE_DEPTH(env->parse_depth); + state = CS_START; prev_cc = (CClassNode* )NULL; - r = fetch_token_in_cc(tok, src, end, env); + r = fetch_token_cc(tok, src, end, env, state); if (r == TK_CHAR && tok->u.code == (OnigCodePoint )'^' && tok->escaped == 0) { neg = 1; - r = fetch_token_in_cc(tok, src, end, env); + r = fetch_token_cc(tok, src, end, env, state); } else { neg = 0; @@ -6287,7 +6659,6 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) cc = CCLASS_(node); and_start = 0; - state = CS_START; curr_type = CV_UNDEF; p = *src; @@ -6308,19 +6679,19 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) break; case TK_CRUDE_BYTE: - /* tok->base != 0 : octal or hexadec. */ - if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) { + /* tok->base_num != 0 : octal or hexadec. */ + if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base_num != 0) { int i, j; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; UChar* psave = p; - int base = tok->base; + int base_num = tok->base_num; buf[0] = tok->u.byte; for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, CS_COMPLETE); if (r < 0) goto err; - if (r != TK_CRUDE_BYTE || tok->base != base) { + if (r != TK_CRUDE_BYTE || tok->base_num != base_num) { fetched = 1; break; } @@ -6343,7 +6714,7 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) else if (i > len) { /* fetch back */ p = psave; for (i = 1; i < len; i++) { - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, CS_COMPLETE); } fetched = 0; } @@ -6424,7 +6795,7 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) case TK_CC_RANGE: if (state == CS_VALUE) { - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, CS_RANGE); if (r < 0) goto err; fetched = 1; @@ -6451,7 +6822,7 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) in_code = tok->u.code; in_raw = 0; - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, CS_VALUE); if (r < 0) goto err; fetched = 1; @@ -6466,7 +6837,7 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) goto any_char_in; /* [!--] is allowed */ } else { /* CS_COMPLETE */ - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, CS_VALUE); if (r < 0) goto err; fetched = 1; @@ -6549,7 +6920,7 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) if (fetched) r = tok->type; else { - r = fetch_token_in_cc(tok, &p, end, env); + r = fetch_token_cc(tok, &p, end, env, state); if (r < 0) goto err; } } @@ -6578,8 +6949,6 @@ parse_cc(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env) BITSET_IS_EMPTY(cc->bs, is_empty); if (is_empty == 0) { -#define NEWLINE_CODE 0x0a - if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) { if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1) BITSET_SET_BIT(cc->bs, NEWLINE_CODE); @@ -7095,10 +7464,10 @@ parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, break; case '=': - *np = onig_node_new_anchor(ANCR_PREC_READ, FALSE); + *np = node_new_anchor(ANCR_PREC_READ); break; case '!': /* preceding read */ - *np = onig_node_new_anchor(ANCR_PREC_READ_NOT, FALSE); + *np = node_new_anchor(ANCR_PREC_READ_NOT); break; case '>': /* (?>...) stop backtrack */ *np = node_new_bag(BAG_STOP_BACKTRACK); @@ -7116,9 +7485,9 @@ parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; PFETCH(c); if (c == '=') - *np = onig_node_new_anchor(ANCR_LOOK_BEHIND, FALSE); + *np = node_new_anchor(ANCR_LOOK_BEHIND); else if (c == '!') - *np = onig_node_new_anchor(ANCR_LOOK_BEHIND_NOT, FALSE); + *np = node_new_anchor(ANCR_LOOK_BEHIND_NOT); else { if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { UChar *name; @@ -7131,7 +7500,9 @@ parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, named_group1: list_capture = 0; +#ifdef USE_CAPTURE_HISTORY named_group2: +#endif name = p; r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, &num_type, FALSE); @@ -7612,7 +7983,7 @@ parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, } #endif else { - if (ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) + if (OPTON_DONT_CAPTURE_GROUP(env->options)) goto group; *np = node_new_memory(0); @@ -7883,7 +8254,7 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg) else { len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf); if (n == 0 || NODE_TYPE(ns[n-1]) != NODE_STRING) { - csnode = onig_node_new_str(buf, buf + len); + csnode = node_new_str(buf, buf + len); if (IS_NULL(csnode)) goto err_free_ns; NODE_STRING_SET_CASE_EXPANDED(csnode); @@ -7922,6 +8293,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, Node** tp; unsigned int parse_depth; + retry: group = 0; *np = NULL; if (tok->type == (enum TokenSyms )term) @@ -7955,19 +8327,28 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, } } else if (r == 2) { /* option only */ - Node* target; - OnigOptionType prev = env->options; + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH)) { + env->options = BAG_(*np)->o.options; + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + onig_node_free(*np); + goto retry; + } + else { + Node* target; + OnigOptionType prev = env->options; - env->options = BAG_(*np)->o.options; - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - r = parse_alts(&target, tok, term, src, end, env, FALSE); - env->options = prev; - if (r < 0) { - onig_node_free(target); - return r; + env->options = BAG_(*np)->o.options; + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + r = parse_alts(&target, tok, term, src, end, env, FALSE); + env->options = prev; + if (r < 0) { + onig_node_free(target); + return r; + } + NODE_BODY(*np) = target; } - NODE_BODY(*np) = target; return tok->type; } break; @@ -7983,7 +8364,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, case TK_STRING: tk_byte: { - *np = node_new_str(tok->backp, *src); + *np = node_new_str_with_options(tok->backp, *src, env->options); CHECK_NULL_RETURN_MEMERR(*np); while (1) { @@ -8004,7 +8385,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, case TK_CRUDE_BYTE: tk_crude_byte: { - *np = node_new_str_crude_char(tok->u.byte); + *np = node_new_str_crude_char(tok->u.byte, env->options); CHECK_NULL_RETURN_MEMERR(*np); len = 1; while (1) { @@ -8041,9 +8422,9 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, len = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf); if (len < 0) return len; #ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG - *np = node_new_str_crude(buf, buf + len); + *np = node_new_str_crude(buf, buf + len, env->options); #else - *np = node_new_str(buf, buf + len); + *np = node_new_str_with_options(buf, buf + len, env->options); #endif CHECK_NULL_RETURN_MEMERR(*np); } @@ -8061,7 +8442,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, if (IS_NULL(qend)) { nextp = qend = end; } - *np = node_new_str(qstart, qend); + *np = node_new_str_with_options(qstart, qend, env->options); CHECK_NULL_RETURN_MEMERR(*np); *src = nextp; } @@ -8109,7 +8490,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, if (r != 0) return r; cc = CCLASS_(*np); - if (IS_IGNORECASE(env->options)) { + if (OPTON_IGNORECASE(env->options)) { IApplyCaseFoldArg iarg; iarg.env = env; @@ -8136,12 +8517,12 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, break; case TK_ANYCHAR: - *np = node_new_anychar(); + *np = node_new_anychar(env->options); CHECK_NULL_RETURN_MEMERR(*np); break; case TK_ANYCHAR_ANYTIME: - *np = node_new_anychar(); + *np = node_new_anychar(env->options); CHECK_NULL_RETURN_MEMERR(*np); qn = node_new_quantifier(0, INFINITE_REPEAT, FALSE); CHECK_NULL_RETURN_MEMERR(qn); @@ -8179,12 +8560,8 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, #endif case TK_ANCHOR: - { - int ascii_mode = - IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0; - *np = onig_node_new_anchor(tok->u.anchor, ascii_mode); - CHECK_NULL_RETURN_MEMERR(*np); - } + *np = node_new_anchor_with_options(tok->u.anchor, env->options); + CHECK_NULL_RETURN_MEMERR(*np); break; case TK_REPEAT: @@ -8218,7 +8595,7 @@ parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, break; case TK_TRUE_ANYCHAR: - r = node_new_true_anychar(np, env); + r = node_new_true_anychar(np); if (r < 0) return r; break; @@ -8364,9 +8741,11 @@ parse_alts(Node** top, PToken* tok, int term, UChar** src, UChar* end, { int r; Node *node, **headp; + OnigOptionType save_options; *top = NULL; INC_PARSE_DEPTH(env->parse_depth); + save_options = env->options; r = parse_branch(&node, tok, term, src, end, env, group_head); if (r < 0) { @@ -8415,6 +8794,7 @@ parse_alts(Node** top, PToken* tok, int term, UChar** src, UChar* end, return ONIGERR_PARSER_BUG; } + env->options = save_options; DEC_PARSE_DEPTH(env->parse_depth); return r; } @@ -8425,6 +8805,7 @@ parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env) int r; PToken tok; + ptoken_init(&tok); r = fetch_token(&tok, src, end, env); if (r < 0) return r; r = parse_alts(top, &tok, TK_EOT, src, end, env, FALSE); @@ -8483,10 +8864,9 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, p = (UChar* )pattern; r = parse_regexp(root, &p, (UChar* )end, env); - -#ifdef USE_CALL if (r != 0) return r; +#ifdef USE_CALL if (env->has_call_zero != 0) { Node* zero_node; r = make_call_zero_body(*root, env, &zero_node); diff --git a/src/regparse.h b/src/regparse.h index 1525ccb..979e982 100644 --- a/src/regparse.h +++ b/src/regparse.h @@ -4,7 +4,7 @@ regparse.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,23 +31,23 @@ #include "regint.h" -#define NODE_STRING_MARGIN 16 -#define NODE_STRING_BUF_SIZE 20 /* sizeof(CClassNode) - sizeof(int)*4 */ -#define NODE_BACKREFS_SIZE 6 +#define NODE_STRING_MARGIN 16 +#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ +#define NODE_BACKREFS_SIZE 6 /* node type */ typedef enum { - NODE_STRING = 0, - NODE_CCLASS = 1, - NODE_CTYPE = 2, - NODE_BACKREF = 3, - NODE_QUANT = 4, - NODE_BAG = 5, - NODE_ANCHOR = 6, - NODE_LIST = 7, - NODE_ALT = 8, - NODE_CALL = 9, - NODE_GIMMICK = 10 + NODE_STRING = 0, + NODE_CCLASS = 1, + NODE_CTYPE = 2, + NODE_BACKREF = 3, + NODE_QUANT = 4, + NODE_BAG = 5, + NODE_ANCHOR = 6, + NODE_LIST = 7, + NODE_ALT = 8, + NODE_CALL = 9, + NODE_GIMMICK = 10 } NodeType; enum BagType { @@ -67,10 +67,10 @@ enum GimmickType { }; enum BodyEmptyType { - BODY_IS_NOT_EMPTY = 0, - BODY_IS_EMPTY_POSSIBILITY = 1, - BODY_IS_EMPTY_POSSIBILITY_MEM = 2, - BODY_IS_EMPTY_POSSIBILITY_REC = 3 + BODY_IS_NOT_EMPTY = 0, + BODY_MAY_BE_EMPTY = 1, + BODY_MAY_BE_EMPTY_MEM = 2, + BODY_MAY_BE_EMPTY_REC = 3 }; struct _Node; @@ -84,8 +84,7 @@ typedef struct { UChar* end; unsigned int flag; UChar buf[NODE_STRING_BUF_SIZE]; - int capacity; /* (allocated size - 1) or 0: use buf[] */ - int case_min_len; + int capacity; /* (allocated size - 1) or 0: use buf[] */ } StrNode; typedef struct { @@ -110,7 +109,7 @@ typedef struct { enum BodyEmptyType emptiness; struct _Node* head_exact; struct _Node* next_head_exact; - int include_referred; /* include called node. don't eliminate even if {0} */ + int include_referred; /* include called node. don't eliminate even if {0} */ } QuantNode; typedef struct { @@ -139,7 +138,8 @@ typedef struct { /* for multiple call reference */ OnigLen min_len; /* min length (byte) */ OnigLen max_len; /* max length (byte) */ - int char_len; /* character length */ + OnigLen min_char_len; + OnigLen max_char_len; int opt_count; /* referenced count in optimize_nodes() */ } BagNode; @@ -189,8 +189,10 @@ typedef struct { struct _Node* body; int type; - int char_len; + OnigLen char_min_len; + OnigLen char_max_len; int ascii_mode; + struct _Node* lead_node; } AnchorNode; typedef struct { @@ -209,7 +211,6 @@ typedef struct { int ctype; int not; - OnigOptionType options; int ascii_mode; } CtypeNode; @@ -248,6 +249,11 @@ typedef struct _Node { } u; } Node; +typedef struct { + int new_val; +} GroupNumMap; + + #define NULL_NODE ((Node* )0) @@ -280,62 +286,59 @@ typedef struct _Node { #define CALL_(node) (&((node)->u.call)) #define GIMMICK_(node) (&((node)->u.gimmick)) -#define NODE_CAR(node) (CONS_(node)->car) -#define NODE_CDR(node) (CONS_(node)->cdr) +#define NODE_CAR(node) (CONS_(node)->car) +#define NODE_CDR(node) (CONS_(node)->cdr) #define CTYPE_ANYCHAR -1 #define NODE_IS_ANYCHAR(node) \ (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR) -#define CTYPE_OPTION(node, reg) \ - (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options) - #define ANCR_ANYCHAR_INF_MASK (ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML) #define ANCR_END_BUF_MASK (ANCR_END_BUF | ANCR_SEMI_END_BUF) -#define NODE_STRING_CRUDE (1<<0) -#define NODE_STRING_CASE_EXPANDED (1<<1) -#define NODE_STRING_CASE_FOLD_MATCH (1<<2) +#define NODE_STRING_CRUDE (1<<0) +#define NODE_STRING_CASE_EXPANDED (1<<1) #define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s) #define NODE_STRING_SET_CRUDE(node) (node)->u.str.flag |= NODE_STRING_CRUDE #define NODE_STRING_CLEAR_CRUDE(node) (node)->u.str.flag &= ~NODE_STRING_CRUDE #define NODE_STRING_SET_CASE_EXPANDED(node) (node)->u.str.flag |= NODE_STRING_CASE_EXPANDED -#define NODE_STRING_SET_CASE_FOLD_MATCH(node) (node)->u.str.flag |= NODE_STRING_CASE_FOLD_MATCH #define NODE_STRING_IS_CRUDE(node) \ (((node)->u.str.flag & NODE_STRING_CRUDE) != 0) #define NODE_STRING_IS_CASE_EXPANDED(node) \ (((node)->u.str.flag & NODE_STRING_CASE_EXPANDED) != 0) -#define NODE_STRING_IS_CASE_FOLD_MATCH(node) \ - (((node)->u.str.flag & NODE_STRING_CASE_FOLD_MATCH) != 0) #define BACKREFS_P(br) \ (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static) /* node status bits */ -#define NODE_ST_MIN_FIXED (1<<0) -#define NODE_ST_MAX_FIXED (1<<1) -#define NODE_ST_CLEN_FIXED (1<<2) -#define NODE_ST_MARK1 (1<<3) -#define NODE_ST_MARK2 (1<<4) -#define NODE_ST_STRICT_REAL_REPEAT (1<<5) -#define NODE_ST_RECURSION (1<<6) -#define NODE_ST_CALLED (1<<7) -#define NODE_ST_ADDR_FIXED (1<<8) -#define NODE_ST_NAMED_GROUP (1<<9) -#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */ -#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */ -#define NODE_ST_IN_MULTI_ENTRY (1<<12) -#define NODE_ST_NEST_LEVEL (1<<13) -#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */ -#define NODE_ST_BY_NAME (1<<15) /* backref by name */ -#define NODE_ST_BACKREF (1<<16) -#define NODE_ST_CHECKER (1<<17) -#define NODE_ST_FIXED_OPTION (1<<18) -#define NODE_ST_PROHIBIT_RECURSION (1<<19) -#define NODE_ST_SUPER (1<<20) -#define NODE_ST_EMPTY_STATUS_CHECK (1<<21) +#define NODE_ST_FIXED_MIN (1<<0) +#define NODE_ST_FIXED_MAX (1<<1) +#define NODE_ST_FIXED_CLEN (1<<2) +#define NODE_ST_MARK1 (1<<3) +#define NODE_ST_MARK2 (1<<4) +#define NODE_ST_STRICT_REAL_REPEAT (1<<5) +#define NODE_ST_RECURSION (1<<6) +#define NODE_ST_CALLED (1<<7) +#define NODE_ST_FIXED_ADDR (1<<8) +#define NODE_ST_NAMED_GROUP (1<<9) +#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */ +#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */ +#define NODE_ST_IN_MULTI_ENTRY (1<<12) +#define NODE_ST_NEST_LEVEL (1<<13) +#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */ +#define NODE_ST_BY_NAME (1<<15) /* backref by name */ +#define NODE_ST_BACKREF (1<<16) +#define NODE_ST_CHECKER (1<<17) +#define NODE_ST_PROHIBIT_RECURSION (1<<18) +#define NODE_ST_SUPER (1<<19) +#define NODE_ST_EMPTY_STATUS_CHECK (1<<20) +#define NODE_ST_IGNORECASE (1<<21) +#define NODE_ST_MULTILINE (1<<22) +#define NODE_ST_TEXT_SEGMENT_WORD (1<<23) +#define NODE_ST_ABSENT_WITH_SIDE_EFFECTS (1<<24) /* stopper or clear */ +#define NODE_ST_FIXED_CLEN_MIN_SURE (1<<25) #define NODE_STATUS(node) (((Node* )node)->u.base.status) @@ -349,17 +352,16 @@ typedef struct _Node { #define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NODE_ST_RECURSION) != 0) #define NODE_IS_IN_ZERO_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_ZERO_REPEAT) != 0) #define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NODE_ST_NAMED_GROUP) != 0) -#define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NODE_ST_ADDR_FIXED) != 0) -#define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_CLEN_FIXED) != 0) -#define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MIN_FIXED) != 0) -#define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MAX_FIXED) != 0) +#define NODE_IS_FIXED_ADDR(node) ((NODE_STATUS(node) & NODE_ST_FIXED_ADDR) != 0) +#define NODE_IS_FIXED_CLEN(node) ((NODE_STATUS(node) & NODE_ST_FIXED_CLEN) != 0) +#define NODE_IS_FIXED_MIN(node) ((NODE_STATUS(node) & NODE_ST_FIXED_MIN) != 0) +#define NODE_IS_FIXED_MAX(node) ((NODE_STATUS(node) & NODE_ST_FIXED_MAX) != 0) #define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NODE_ST_MARK1) != 0) #define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NODE_ST_MARK2) != 0) #define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NODE_ST_NEST_LEVEL) != 0) #define NODE_IS_BY_NAME(node) ((NODE_STATUS(node) & NODE_ST_BY_NAME) != 0) #define NODE_IS_BACKREF(node) ((NODE_STATUS(node) & NODE_ST_BACKREF) != 0) #define NODE_IS_CHECKER(node) ((NODE_STATUS(node) & NODE_ST_CHECKER) != 0) -#define NODE_IS_FIXED_OPTION(node) ((NODE_STATUS(node) & NODE_ST_FIXED_OPTION) != 0) #define NODE_IS_SUPER(node) ((NODE_STATUS(node) & NODE_ST_SUPER) != 0) #define NODE_IS_PROHIBIT_RECURSION(node) \ ((NODE_STATUS(node) & NODE_ST_PROHIBIT_RECURSION) != 0) @@ -367,6 +369,11 @@ typedef struct _Node { ((NODE_STATUS(node) & NODE_ST_STRICT_REAL_REPEAT) != 0) #define NODE_IS_EMPTY_STATUS_CHECK(node) \ ((NODE_STATUS(node) & NODE_ST_EMPTY_STATUS_CHECK) != 0) +#define NODE_IS_IGNORECASE(node) ((NODE_STATUS(node) & NODE_ST_IGNORECASE) != 0) +#define NODE_IS_MULTILINE(node) ((NODE_STATUS(node) & NODE_ST_MULTILINE) != 0) +#define NODE_IS_TEXT_SEGMENT_WORD(node) ((NODE_STATUS(node) & NODE_ST_TEXT_SEGMENT_WORD) != 0) +#define NODE_IS_ABSENT_WITH_SIDE_EFFECTS(node) ((NODE_STATUS(node) & NODE_ST_ABSENT_WITH_SIDE_EFFECTS) != 0) +#define NODE_IS_FIXED_CLEN_MIN_SURE(node) ((NODE_STATUS(node) & NODE_ST_FIXED_CLEN_MIN_SURE) != 0) #define NODE_PARENT(node) ((node)->u.base.parent) #define NODE_BODY(node) ((node)->u.base.body) @@ -375,11 +382,20 @@ typedef struct _Node { #define NODE_CALL_BODY(node) ((node)->body) #define NODE_ANCHOR_BODY(node) ((node)->body) -#define SCANENV_MEMENV_SIZE 8 +#define SCANENV_MEMENV_SIZE 8 #define SCANENV_MEMENV(senv) \ (IS_NOT_NULL((senv)->mem_env_dynamic) ? \ (senv)->mem_env_dynamic : (senv)->mem_env_static) +#define IS_SYNTAX_OP(syn, opm) (((syn)->op & (opm)) != 0) +#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) +#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) + +#define ID_ENTRY(env, id) do {\ + id = (env)->id_num++;\ +} while(0) + + typedef struct { Node* mem_node; Node* empty_repeat_node; @@ -403,50 +419,44 @@ typedef struct { UChar* error_end; regex_t* reg; /* for reg->names only */ int num_call; -#ifdef USE_CALL - UnsetAddrList* unset_addr_list; - int has_call_zero; -#endif int num_mem; int num_named; int mem_alloc; MemEnv mem_env_static[SCANENV_MEMENV_SIZE]; MemEnv* mem_env_dynamic; + int backref_num; + int keep_num; + int id_num; + int save_alloc_num; + SaveItem* saves; +#ifdef USE_CALL + UnsetAddrList* unset_addr_list; + int has_call_zero; +#endif unsigned int parse_depth; #ifdef ONIG_DEBUG_PARSE unsigned int max_parse_depth; #endif - int backref_num; - int keep_num; - int save_num; - int save_alloc_num; - SaveItem* saves; } ScanEnv; -#define IS_SYNTAX_OP(syn, opm) (((syn)->op & (opm)) != 0) -#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) -#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) - -typedef struct { - int new_val; -} GroupNumRemap; - -extern int onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map)); +extern int onig_renumber_name_table P_((regex_t* reg, GroupNumMap* map)); extern int onig_strncmp P_((const UChar* s1, const UChar* s2, int n)); extern void onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end)); extern void onig_scan_env_set_error_string P_((ScanEnv* env, int ecode, UChar* arg, UChar* arg_end)); extern int onig_reduce_nested_quantifier P_((Node* pnode)); +extern int onig_node_copy(Node** rcopy, Node* from); extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end)); -extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end)); +extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end, int need_free)); +extern void onig_node_str_clear P_((Node* node, int need_free)); extern void onig_node_free P_((Node* node)); +extern int onig_node_reset_empty P_((Node* node)); +extern int onig_node_reset_fail P_((Node* node)); extern Node* onig_node_new_bag P_((enum BagType type)); -extern Node* onig_node_new_anchor P_((int type, int ascii_mode)); extern Node* onig_node_new_str P_((const UChar* s, const UChar* end)); extern Node* onig_node_new_list P_((Node* left, Node* right)); extern Node* onig_node_new_alt P_((Node* left, Node* right)); -extern void onig_node_str_clear P_((Node* node)); extern int onig_names_free P_((regex_t* reg)); extern int onig_parse_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env)); extern int onig_free_shared_cclass_table P_((void)); diff --git a/src/regposerr.c b/src/regposerr.c index e1747c5..12d95a9 100644 --- a/src/regposerr.c +++ b/src/regposerr.c @@ -2,7 +2,7 @@ regposerr.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,7 +37,10 @@ #include "config.h" #include "onigposix.h" +#ifndef ONIG_NO_STANDARD_C_HEADERS #include <string.h> +#include <stdio.h> +#endif #if defined(__GNUC__) # define ARG_UNUSED __attribute__ ((unused)) @@ -46,13 +49,26 @@ #endif #if defined(_WIN32) && !defined(__GNUC__) + +#ifndef xsnprintf #define xsnprintf sprintf_s +#endif +#ifndef xstrncpy #define xstrncpy(dest,src,size) strncpy_s(dest,size,src,_TRUNCATE) +#endif + #else + +#ifndef xsnprintf #define xsnprintf snprintf +#endif +#ifndef xstrncpy #define xstrncpy strncpy #endif +#endif + + static char* ESTRING[] = { NULL, "failed to match", /* REG_NOMATCH */ @@ -75,7 +91,6 @@ static char* ESTRING[] = { "invalid argument" /* REG_EONIG_BADARG */ }; -#include <stdio.h> extern size_t diff --git a/src/regposix.c b/src/regposix.c index b3e78ff..4e523a4 100644 --- a/src/regposix.c +++ b/src/regposix.c @@ -2,7 +2,7 @@ regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -63,6 +63,7 @@ onig2posix_error_code(int code) { ONIGERR_MEMORY, REG_ESPACE }, { ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL }, { ONIGERR_RETRY_LIMIT_IN_MATCH_OVER, REG_EONIG_INTERNAL }, + { ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER, REG_EONIG_INTERNAL }, { ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL }, { ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL }, { ONIGERR_STACK_BUG, REG_EONIG_INTERNAL }, diff --git a/src/regsyntax.c b/src/regsyntax.c index 513c7f7..984aac6 100644 --- a/src/regsyntax.c +++ b/src/regsyntax.c @@ -2,7 +2,7 @@ regsyntax.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -152,7 +152,9 @@ OnigSyntaxType OnigSyntaxJava = { ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY ) - , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND ) + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | + ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | + ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND ) , ONIG_OPTION_SINGLELINE , { @@ -185,7 +187,7 @@ OnigSyntaxType OnigSyntaxPerl = { ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT ) - , SYN_GNU_REGEX_BV + , SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH , ONIG_OPTION_SINGLELINE , { @@ -223,7 +225,7 @@ OnigSyntaxType OnigSyntaxPerl_NG = { ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL ) - , ( SYN_GNU_REGEX_BV | + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) , ONIG_OPTION_SINGLELINE diff --git a/src/regversion.c b/src/regversion.c index de993d3..1f0faa1 100644 --- a/src/regversion.c +++ b/src/regversion.c @@ -2,7 +2,7 @@ regversion.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2019 K.Kosako + * Copyright (c) 2002-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +27,11 @@ * SUCH DAMAGE. */ +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO +#endif + #include "regint.h" -#include <stdio.h> extern const char* onig_version(void) diff --git a/src/sjis_prop.c b/src/sjis_prop.c index e33fbb2..2597a9f 100644 --- a/src/sjis_prop.c +++ b/src/sjis_prop.c @@ -31,8 +31,7 @@ #line 1 "sjis_prop.gperf" -#include <string.h> -#include "regenc.h" +#include "regint.h" #define TOTAL_KEYWORDS 16 #define MIN_WORD_LENGTH 4 @@ -89,50 +88,50 @@ onigenc_sjis_lookup_property_name (register const char *str, register size_t len static struct PropertyNameCtype wordlist[] = { {""}, {""}, {""}, {""}, -#line 23 "sjis_prop.gperf" +#line 22 "sjis_prop.gperf" {"Word", 12}, -#line 12 "sjis_prop.gperf" +#line 11 "sjis_prop.gperf" {"Alpha", 1}, {""}, {""}, -#line 26 "sjis_prop.gperf" +#line 25 "sjis_prop.gperf" {"Hiragana", 15}, {""}, -#line 24 "sjis_prop.gperf" +#line 23 "sjis_prop.gperf" {"Alnum", 13}, {""}, {""}, -#line 27 "sjis_prop.gperf" +#line 26 "sjis_prop.gperf" {"Katakana", 16}, {""}, -#line 25 "sjis_prop.gperf" +#line 24 "sjis_prop.gperf" {"ASCII", 14}, -#line 22 "sjis_prop.gperf" +#line 21 "sjis_prop.gperf" {"XDigit", 11}, {""}, {""}, {""}, -#line 14 "sjis_prop.gperf" +#line 13 "sjis_prop.gperf" {"Cntrl", 3}, {""}, {""}, -#line 13 "sjis_prop.gperf" +#line 12 "sjis_prop.gperf" {"Blank", 2}, {""}, -#line 19 "sjis_prop.gperf" +#line 18 "sjis_prop.gperf" {"Punct", 8}, {""}, {""}, {""}, {""}, -#line 18 "sjis_prop.gperf" +#line 17 "sjis_prop.gperf" {"Print", 7}, {""}, {""}, {""}, {""}, -#line 21 "sjis_prop.gperf" +#line 20 "sjis_prop.gperf" {"Upper", 10}, {""}, {""}, {""}, {""}, -#line 20 "sjis_prop.gperf" +#line 19 "sjis_prop.gperf" {"Space", 9}, {""}, {""}, {""}, {""}, -#line 17 "sjis_prop.gperf" +#line 16 "sjis_prop.gperf" {"Lower", 6}, {""}, {""}, {""}, {""}, -#line 16 "sjis_prop.gperf" +#line 15 "sjis_prop.gperf" {"Graph", 5}, {""}, {""}, {""}, {""}, -#line 15 "sjis_prop.gperf" +#line 14 "sjis_prop.gperf" {"Digit", 4} }; diff --git a/src/sjis_prop.gperf b/src/sjis_prop.gperf index 2cec8cf..842b61b 100644 --- a/src/sjis_prop.gperf +++ b/src/sjis_prop.gperf @@ -1,6 +1,5 @@ %{ -#include <string.h> -#include "regenc.h" +#include "regint.h" %} struct PropertyNameCtype { @@ -2,17 +2,14 @@ /* static char sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifdef _WIN32 -#include <malloc.h> +#ifndef NEED_TO_INCLUDE_STDIO +#define NEED_TO_INCLUDE_STDIO #endif #include "regint.h" #include "st.h" + typedef struct st_table_entry st_table_entry; struct st_table_entry { @@ -3,15 +3,14 @@ /* @(#) st.h 5.1 89/12/14 */ #ifndef ST_INCLUDED - #define ST_INCLUDED -#ifdef _WIN32 -# include <windows.h> -typedef ULONG_PTR st_data_t; -#else +#if SIZEOF_VOIDP == SIZEOF_LONG typedef unsigned long st_data_t; +#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG +typedef unsigned long long st_data_t; #endif + #define ST_DATA_T_DEFINED typedef struct st_table st_table; diff --git a/src/unicode.c b/src/unicode.c index 474436a..080da74 100644 --- a/src/unicode.c +++ b/src/unicode.c @@ -278,9 +278,12 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { - int n, m, i, j, k, len; - OnigCodePoint code, codes[3]; - const struct ByUnfoldKey* buk; + int n, m, i, j, k, len, lens[3]; + int index; + int fn, ncs[3]; + OnigCodePoint cs[3][4]; + OnigCodePoint code, codes[3], orig_codes[3]; + const struct ByUnfoldKey* buk1; n = 0; @@ -316,38 +319,161 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, } #endif - buk = onigenc_unicode_unfold_key(code); - if (buk != 0) { - if (buk->fold_len == 1) { + orig_codes[0] = code; + lens[0] = len; + p += len; + + buk1 = onigenc_unicode_unfold_key(orig_codes[0]); + if (buk1 != 0 && buk1->fold_len == 1) { + codes[0] = *FOLDS1_FOLD(buk1->index); + } + else + codes[0] = orig_codes[0]; + + if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) + goto fold1; + + if (p < end) { + const struct ByUnfoldKey* buk; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + orig_codes[1] = code; + len = enclen(enc, p); + lens[1] = lens[0] + len; + buk = onigenc_unicode_unfold_key(orig_codes[1]); + if (buk != 0 && buk->fold_len == 1) { + codes[1] = *FOLDS1_FOLD(buk->index); + } + else + codes[1] = orig_codes[1]; + + p += len; + if (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + orig_codes[2] = code; + len = enclen(enc, p); + lens[2] = lens[1] + len; + buk = onigenc_unicode_unfold_key(orig_codes[2]); + if (buk != 0 && buk->fold_len == 1) { + codes[2] = *FOLDS1_FOLD(buk->index); + } + else + codes[2] = orig_codes[2]; + + index = onigenc_unicode_fold3_key(codes); + if (index >= 0) { + m = FOLDS3_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + items[n].byte_len = lens[2]; + items[n].code_len = 1; + items[n].code[0] = FOLDS3_UNFOLDS(index)[i]; + n++; + } + + for (fn = 0; fn < 3; fn++) { + int sindex; + cs[fn][0] = FOLDS3_FOLD(index)[fn]; + ncs[fn] = 1; + sindex = onigenc_unicode_fold1_key(&cs[fn][0]); + if (sindex >= 0) { + int m = FOLDS1_UNFOLDS_NUM(sindex); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + for (k = 0; k < ncs[2]; k++) { + items[n].byte_len = lens[2]; + items[n].code_len = 3; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + items[n].code[2] = cs[2][k]; + if (items[n].code[0] == orig_codes[0] && + items[n].code[1] == orig_codes[1] && + items[n].code[2] == orig_codes[2]) + continue; + n++; + } + } + } + + return n; + } + } + + index = onigenc_unicode_fold2_key(codes); + if (index >= 0) { + m = FOLDS2_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + items[n].byte_len = lens[1]; + items[n].code_len = 1; + items[n].code[0] = FOLDS2_UNFOLDS(index)[i]; + n++; + } + + for (fn = 0; fn < 2; fn++) { + int sindex; + cs[fn][0] = FOLDS2_FOLD(index)[fn]; + ncs[fn] = 1; + sindex = onigenc_unicode_fold1_key(&cs[fn][0]); + if (sindex >= 0) { + int m = FOLDS1_UNFOLDS_NUM(sindex); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i]; + } + ncs[fn] += m; + } + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + items[n].byte_len = lens[1]; + items[n].code_len = 2; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + if (items[n].code[0] == orig_codes[0] && + items[n].code[1] == orig_codes[1]) + continue; + n++; + } + } + + return n; + } + } + + fold1: + if (buk1 != 0) { + if (buk1->fold_len == 1) { int un; - items[0].byte_len = len; + items[0].byte_len = lens[0]; items[0].code_len = 1; - items[0].code[0] = *FOLDS1_FOLD(buk->index); + items[0].code[0] = *FOLDS1_FOLD(buk1->index); n++; - un = FOLDS1_UNFOLDS_NUM(buk->index); + un = FOLDS1_UNFOLDS_NUM(buk1->index); for (i = 0; i < un; i++) { - OnigCodePoint unfold = FOLDS1_UNFOLDS(buk->index)[i]; - if (unfold != code) { - items[n].byte_len = len; + OnigCodePoint unfold = FOLDS1_UNFOLDS(buk1->index)[i]; + if (unfold != orig_codes[0]) { + items[n].byte_len = lens[0]; items[n].code_len = 1; items[n].code[0] = unfold; n++; } } - code = items[0].code[0]; /* for multi-code to unfold search. */ } else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - OnigCodePoint cs[3][4]; - int fn, ncs[3]; - - if (buk->fold_len == 2) { - m = FOLDS2_UNFOLDS_NUM(buk->index); + if (buk1->fold_len == 2) { + m = FOLDS2_UNFOLDS_NUM(buk1->index); for (i = 0; i < m; i++) { - OnigCodePoint unfold = FOLDS2_UNFOLDS(buk->index)[i]; - if (unfold == code) continue; + OnigCodePoint unfold = FOLDS2_UNFOLDS(buk1->index)[i]; + if (unfold == orig_codes[0]) continue; - items[n].byte_len = len; + items[n].byte_len = lens[0]; items[n].code_len = 1; items[n].code[0] = unfold; n++; @@ -355,7 +481,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, for (fn = 0; fn < 2; fn++) { int index; - cs[fn][0] = FOLDS2_FOLD(buk->index)[fn]; + cs[fn][0] = FOLDS2_FOLD(buk1->index)[fn]; ncs[fn] = 1; index = onigenc_unicode_fold1_key(&cs[fn][0]); if (index >= 0) { @@ -369,7 +495,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, for (i = 0; i < ncs[0]; i++) { for (j = 0; j < ncs[1]; j++) { - items[n].byte_len = len; + items[n].byte_len = lens[0]; items[n].code_len = 2; items[n].code[0] = cs[0][i]; items[n].code[1] = cs[1][j]; @@ -378,12 +504,12 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, } } else { /* fold_len == 3 */ - m = FOLDS3_UNFOLDS_NUM(buk->index); + m = FOLDS3_UNFOLDS_NUM(buk1->index); for (i = 0; i < m; i++) { - OnigCodePoint unfold = FOLDS3_UNFOLDS(buk->index)[i]; - if (unfold == code) continue; + OnigCodePoint unfold = FOLDS3_UNFOLDS(buk1->index)[i]; + if (unfold == orig_codes[0]) continue; - items[n].byte_len = len; + items[n].byte_len = lens[0]; items[n].code_len = 1; items[n].code[0] = unfold; n++; @@ -391,7 +517,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, for (fn = 0; fn < 3; fn++) { int index; - cs[fn][0] = FOLDS3_FOLD(buk->index)[fn]; + cs[fn][0] = FOLDS3_FOLD(buk1->index)[fn]; ncs[fn] = 1; index = onigenc_unicode_fold1_key(&cs[fn][0]); if (index >= 0) { @@ -406,7 +532,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, for (i = 0; i < ncs[0]; i++) { for (j = 0; j < ncs[1]; j++) { for (k = 0; k < ncs[2]; k++) { - items[n].byte_len = len; + items[n].byte_len = lens[0]; items[n].code_len = 3; items[n].code[0] = cs[0][i]; items[n].code[1] = cs[1][j]; @@ -416,17 +542,14 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, } } } - - /* multi char folded code is not head of another folded multi char */ - return n; } } else { - int index = onigenc_unicode_fold1_key(&code); + int index = onigenc_unicode_fold1_key(orig_codes); if (index >= 0) { int m = FOLDS1_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { - items[n].byte_len = len; + items[n].byte_len = lens[0]; items[n].code_len = 1; items[n].code[0] = FOLDS1_UNFOLDS(index)[i]; n++; @@ -434,64 +557,6 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, } } - if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) - return n; - - p += len; - if (p < end) { - int clen; - int index; - - codes[0] = code; - code = ONIGENC_MBC_TO_CODE(enc, p, end); - - buk = onigenc_unicode_unfold_key(code); - if (buk != 0 && buk->fold_len == 1) { - codes[1] = *FOLDS1_FOLD(buk->index); - } - else - codes[1] = code; - - clen = enclen(enc, p); - len += clen; - - index = onigenc_unicode_fold2_key(codes); - if (index >= 0) { - m = FOLDS2_UNFOLDS_NUM(index); - for (i = 0; i < m; i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = FOLDS2_UNFOLDS(index)[i]; - n++; - } - } - - p += clen; - if (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - buk = onigenc_unicode_unfold_key(code); - if (buk != 0 && buk->fold_len == 1) { - codes[2] = *FOLDS1_FOLD(buk->index); - } - else - codes[2] = code; - - clen = enclen(enc, p); - len += clen; - - index = onigenc_unicode_fold3_key(codes); - if (index >= 0) { - m = FOLDS3_UNFOLDS_NUM(index); - for (i = 0; i < m; i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = FOLDS3_UNFOLDS(index)[i]; - n++; - } - } - } - } - return n; } @@ -930,7 +995,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, #ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER if (! ONIGENC_IS_UNICODE_ENCODING(enc)) { - return from != 0x000d || to != 0x000a; + return from != 0x000d || to != NEWLINE_CODE; } btype = unicode_egcb_is_break_2code(from, to); @@ -973,7 +1038,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, return 1; #else - return from != 0x000d || to != 0x000a; + return from != 0x000d || to != NEWLINE_CODE; #endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ } diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c index 3c49422..0935bb4 100644 --- a/src/unicode_egcb_data.c +++ b/src/unicode_egcb_data.c @@ -1,6 +1,6 @@ /* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */ /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ * SUCH DAMAGE. */ -#define GRAPHEME_BREAK_PROPERTY_VERSION 120100 +#define GRAPHEME_BREAK_PROPERTY_VERSION 130000 /* CR @@ -43,7 +43,7 @@ V ZWJ */ -static int EGCB_RANGE_NUM = 1326; +static int EGCB_RANGE_NUM = 1344; static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x000000, 0x000009, EGCB_Control }, {0x00000a, 0x00000a, EGCB_LF }, @@ -136,7 +136,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x000b47, 0x000b48, EGCB_SpacingMark }, {0x000b4b, 0x000b4c, EGCB_SpacingMark }, {0x000b4d, 0x000b4d, EGCB_Extend }, - {0x000b56, 0x000b57, EGCB_Extend }, + {0x000b55, 0x000b57, EGCB_Extend }, {0x000b62, 0x000b63, EGCB_Extend }, {0x000b82, 0x000b82, EGCB_Extend }, {0x000bbe, 0x000bbe, EGCB_Extend }, @@ -182,6 +182,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x000d4e, 0x000d4e, EGCB_Prepend }, {0x000d57, 0x000d57, EGCB_Extend }, {0x000d62, 0x000d63, EGCB_Extend }, + {0x000d81, 0x000d81, EGCB_Extend }, {0x000d82, 0x000d83, EGCB_SpacingMark }, {0x000dca, 0x000dca, EGCB_Extend }, {0x000dcf, 0x000dcf, EGCB_Extend }, @@ -267,7 +268,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x001a6d, 0x001a72, EGCB_SpacingMark }, {0x001a73, 0x001a7c, EGCB_Extend }, {0x001a7f, 0x001a7f, EGCB_Extend }, - {0x001ab0, 0x001abe, EGCB_Extend }, + {0x001ab0, 0x001ac0, EGCB_Extend }, {0x001b00, 0x001b03, EGCB_Extend }, {0x001b04, 0x001b04, EGCB_SpacingMark }, {0x001b34, 0x001b3a, EGCB_Extend }, @@ -329,6 +330,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x00a823, 0x00a824, EGCB_SpacingMark }, {0x00a825, 0x00a826, EGCB_Extend }, {0x00a827, 0x00a827, EGCB_SpacingMark }, + {0x00a82c, 0x00a82c, EGCB_Extend }, {0x00a880, 0x00a881, EGCB_SpacingMark }, {0x00a8b4, 0x00a8c3, EGCB_SpacingMark }, {0x00a8c4, 0x00a8c5, EGCB_Extend }, @@ -1189,6 +1191,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x010a3f, 0x010a3f, EGCB_Extend }, {0x010ae5, 0x010ae6, EGCB_Extend }, {0x010d24, 0x010d27, EGCB_Extend }, + {0x010eab, 0x010eac, EGCB_Extend }, {0x010f46, 0x010f50, EGCB_Extend }, {0x011000, 0x011000, EGCB_SpacingMark }, {0x011001, 0x011001, EGCB_Extend }, @@ -1215,6 +1218,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x0111bf, 0x0111c0, EGCB_SpacingMark }, {0x0111c2, 0x0111c3, EGCB_Prepend }, {0x0111c9, 0x0111cc, EGCB_Extend }, + {0x0111ce, 0x0111ce, EGCB_SpacingMark }, + {0x0111cf, 0x0111cf, EGCB_Extend }, {0x01122c, 0x01122e, EGCB_SpacingMark }, {0x01122f, 0x011231, EGCB_Extend }, {0x011232, 0x011233, EGCB_SpacingMark }, @@ -1286,6 +1291,17 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x01182f, 0x011837, EGCB_Extend }, {0x011838, 0x011838, EGCB_SpacingMark }, {0x011839, 0x01183a, EGCB_Extend }, + {0x011930, 0x011930, EGCB_Extend }, + {0x011931, 0x011935, EGCB_SpacingMark }, + {0x011937, 0x011938, EGCB_SpacingMark }, + {0x01193b, 0x01193c, EGCB_Extend }, + {0x01193d, 0x01193d, EGCB_SpacingMark }, + {0x01193e, 0x01193e, EGCB_Extend }, + {0x01193f, 0x01193f, EGCB_Prepend }, + {0x011940, 0x011940, EGCB_SpacingMark }, + {0x011941, 0x011941, EGCB_Prepend }, + {0x011942, 0x011942, EGCB_SpacingMark }, + {0x011943, 0x011943, EGCB_Extend }, {0x0119d1, 0x0119d3, EGCB_SpacingMark }, {0x0119d4, 0x0119d7, EGCB_Extend }, {0x0119da, 0x0119db, EGCB_Extend }, @@ -1337,6 +1353,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x016f4f, 0x016f4f, EGCB_Extend }, {0x016f51, 0x016f87, EGCB_SpacingMark }, {0x016f8f, 0x016f92, EGCB_Extend }, + {0x016fe4, 0x016fe4, EGCB_Extend }, + {0x016ff0, 0x016ff1, EGCB_SpacingMark }, {0x01bc9d, 0x01bc9e, EGCB_Extend }, {0x01bca0, 0x01bca3, EGCB_Control }, {0x01d165, 0x01d165, EGCB_Extend }, diff --git a/src/unicode_fold1_key.c b/src/unicode_fold1_key.c index 171a0fa..3ffb2d1 100644 --- a/src/unicode_fold1_key.c +++ b/src/unicode_fold1_key.c @@ -9,7 +9,7 @@ /* This gperf source file was generated by make_unicode_fold_data.py */ /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,15 +33,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include <string.h> -#include "regenc.h" +#include "regint.h" -#define TOTAL_KEYWORDS 1353 +#define TOTAL_KEYWORDS 1356 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 1791 -/* maximum key range = 1789, duplicates = 0 */ +#define MAX_HASH_VALUE 1776 +/* maximum key range = 1774, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -56,32 +55,32 @@ hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { - 4, 2, 147, 16, 1, 13, 1228, 725, 1224, 638, - 1204, 95, 9, 82, 1403, 80, 8, 68, 1391, 6, - 1203, 602, 1200, 320, 151, 67, 1385, 61, 1384, 158, - 0, 11, 1252, 3, 733, 278, 23, 425, 660, 424, - 640, 20, 635, 105, 5, 29, 916, 34, 630, 0, - 906, 1378, 899, 1377, 470, 1363, 623, 902, 610, 230, - 1193, 1358, 1190, 779, 986, 1336, 890, 883, 456, 597, - 285, 158, 590, 477, 583, 42, 576, 1447, 447, 1440, - 440, 1353, 426, 1429, 400, 1417, 327, 1407, 567, 1389, - 386, 1207, 458, 724, 854, 979, 1016, 66, 232, 413, - 204, 1431, 226, 1317, 190, 1167, 379, 1319, 198, 1270, - 175, 209, 561, 362, 528, 1323, 257, 1099, 240, 1309, - 508, 1172, 484, 1306, 699, 865, 850, 488, 679, 755, - 420, 639, 1149, 105, 691, 789, 1125, 46, 809, 652, - 1293, 3, 1262, 166, 1426, 0, 1424, 1792, 1220, 460, - 706, 1, 367, 1792, 1341, 1792, 1151, 56, 1235, 1792, - 384, 345, 965, 40, 1168, 33, 218, 180, 1159, 20, - 1296, 276, 1243, 14, 1401, 777, 1142, 682, 1284, 129, - 1135, 610, 1181, 871, 1123, 858, 1042, 510, 842, 499, - 999, 346, 830, 0, 823, 1288, 1115, 768, 732, 1272, - 1101, 1098, 1082, 1270, 811, 177, 1078, 1074, 1061, 1058, + 4, 2, 147, 16, 1, 13, 1251, 864, 1234, 725, + 1206, 95, 9, 82, 1390, 80, 8, 75, 1383, 6, + 1203, 643, 1202, 602, 151, 68, 1380, 67, 1376, 158, + 0, 11, 1375, 3, 733, 278, 23, 424, 660, 320, + 640, 20, 635, 34, 5, 29, 916, 27, 630, 0, + 906, 1363, 899, 1360, 470, 1355, 623, 902, 610, 230, + 1192, 1335, 1134, 1090, 986, 1325, 890, 883, 456, 597, + 285, 158, 590, 477, 583, 42, 576, 1449, 447, 1448, + 440, 1317, 426, 1440, 400, 1438, 327, 1426, 567, 1412, + 386, 1454, 458, 797, 854, 1340, 965, 66, 232, 413, + 204, 1424, 226, 1419, 190, 1185, 379, 1293, 198, 1196, + 175, 209, 561, 362, 528, 1306, 257, 1174, 240, 1292, + 508, 1171, 484, 1237, 699, 865, 850, 488, 679, 755, + 420, 639, 1149, 105, 691, 857, 1168, 77, 809, 715, + 799, 3, 1286, 166, 1421, 0, 1415, 1777, 1228, 460, + 706, 1, 367, 1777, 1337, 1777, 1254, 57, 1271, 1777, + 384, 345, 1386, 52, 1159, 40, 218, 180, 1151, 33, + 1238, 276, 1220, 14, 1401, 682, 1142, 610, 1284, 129, + 1125, 510, 1277, 1436, 1122, 991, 1042, 499, 842, 448, + 999, 346, 830, 0, 823, 867, 1108, 768, 732, 177, + 1105, 1100, 1093, 1081, 811, 777, 1078, 1074, 1061, 1058, 1050, 789, 353, 1018, 548, 1006, 517, 988, 334, 765, 166, 753, 138, 743, 100, 969, 87, 720, 49, 975, - 75, 965, 62, 411, 126, 955, 113, 1262, 317, 943, - 304, 679, 293, 1252, 714, 937, 275, 490, 263, 469, - 395, 1345, 931, 208, 921, 80, 542, 11, 246 + 75, 965, 62, 411, 126, 955, 113, 1267, 317, 943, + 304, 679, 293, 1261, 714, 937, 275, 490, 263, 469, + 395, 1347, 931, 208, 921, 80, 542, 11, 246 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } @@ -93,7 +92,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) { -1, -1, -1, - 3429, + 3438, 1906, @@ -103,7 +102,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 171, - 3414, + 3423, 1927, @@ -147,11 +146,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 219, - 1618, + 3432, 2237, - 3417, + 3426, 2981, @@ -161,7 +160,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2990, - 3423, + 3420, 2282, @@ -173,11 +172,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2927, - 1606, + 1618, 2984, - 3507, + 3516, 2906, @@ -187,11 +186,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2900, - 1600, + 1606, 2648, - 3558, + 3567, 2189, @@ -207,17 +206,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1795, - 3738, + 3747, 1513, - 378, + 1600, - 1459, + 378, 2438, - 3570, + 3579, 2195, @@ -233,7 +232,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1807, - 3750, + 3759, 1525, @@ -243,7 +242,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2441, - 3564, + 3573, 2192, @@ -259,7 +258,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1801, - 3744, + 3753, 1519, @@ -267,7 +266,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2561, - 3552, + 3561, 2186, @@ -275,7 +274,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 456, - 2972, + 1459, 863, @@ -283,17 +282,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1789, - 3732, + 3741, 1507, - 2966, + 2972, - 2942, + 2966, 2555, - 3546, + 3555, 2183, @@ -303,13 +302,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 857, - 3411, + 2942, 2879, 1783, - 3726, + 3735, 1501, @@ -319,7 +318,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2930, - 3582, + 3591, 2201, @@ -335,17 +334,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1819, - 3762, + 3771, 1537, - 3354, + 3363, 2537, 2924, - 3576, + 3585, 2198, @@ -361,7 +360,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1813, - 3756, + 3765, 1531, @@ -369,7 +368,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2573, - 3540, + 3549, 2180, @@ -384,7 +383,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1777, - 3720, + 3729, 1495, @@ -408,7 +407,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 514, - 3495, + 3504, 1864, @@ -424,7 +423,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1306, - 3534, + 3543, 2177, @@ -439,7 +438,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1771, - 3714, + 3723, 1489, @@ -449,7 +448,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 324, - 1192, + 1183, 27, @@ -459,9 +458,9 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 848, - 1726, + 1708, - 3669, + 3660, 3141, @@ -479,7 +478,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 315, - 830, + 810, 12, @@ -494,7 +493,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2372, - 4086, + 4095, 1360, @@ -504,7 +503,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 309, - 3633, + 3642, 0, @@ -545,7 +544,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 312, - 3459, + 3468, 6, @@ -559,11 +558,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2600, - 3885, + 3894, 2366, - 3342, + 3351, 1354, @@ -585,7 +584,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 499, - 3879, + 3888, 168, @@ -610,7 +609,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 46, - 3618, + 3627, 2219, @@ -632,7 +631,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 715, - 3612, + 3621, 2216, @@ -652,13 +651,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1567, - 3492, + 3501, 1966, 959, - 3873, + 3882, -1, 2279, @@ -667,7 +666,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 887, - 3600, + 3609, 2210, @@ -683,12 +682,12 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1837, - 3780, + 3789, 1555, -1, - 3594, + 3603, 2207, @@ -704,16 +703,16 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1831, - 3774, + 3783, 1549, 703, -1, - 3867, + 3876, - 3588, + 3597, 2204, @@ -729,11 +728,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1825, - 3768, + 3777, 1543, - 3822, + 3813, 1990, @@ -742,7 +741,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 288, -1, - 2273, + 2291, 2681, @@ -761,7 +760,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1765, - 3708, + 3717, 1483, -1, -1, @@ -772,9 +771,9 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 381, - 3921, + 3930, - 2960, + 3008, 845, @@ -796,17 +795,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1747, - 3690, + 3699, 1465, 785, - 3903, + 3912, 2432, - 3339, + 3348, 37, @@ -818,7 +817,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3228, - 3915, + 3924, 2771, @@ -829,7 +828,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2501, - 3891, + 3900, 3234, @@ -839,7 +838,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 318, - 3924, + 3933, 18, @@ -863,7 +862,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3084, - 3624, + 3633, 2222, @@ -873,7 +872,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3297, - 3897, + 3906, 1987, @@ -889,21 +888,21 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3225, - 3387, + 3396, 3075, - 4020, + 4029, - 3573, + 3582, 2345, 3219, - 3945, + 3954, - 4005, + 4014, 96, @@ -911,7 +910,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1810, - 3753, + 3762, 1528, @@ -925,7 +924,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2357, - 3528, + 3537, 1984, @@ -933,9 +932,9 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 282, - 3996, + 4005, - 3939, + 3948, 2669, -1, @@ -944,14 +943,14 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2564, - 2291, - 2285, + + 4023, -1, - 4008, + 4017, - 3522, + 3531, 1981, @@ -959,13 +958,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 279, - 4014, + 4011, 3072, 2663, - 3516, + 3525, 1978, @@ -978,11 +977,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2657, - 3008, - 3002, - 3486, + 1678, + + 3495, 1963, @@ -999,17 +998,18 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 369, 2699, - -1, + + 778, 3177, - 3399, + 3408, 2330, - 3621, + 3630, - 3444, + 3453, 1942, @@ -1023,7 +1023,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2585, - 3501, + 3510, 1576, @@ -1031,13 +1031,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 270, - 3381, + 3390, 2312, 2642, - 3861, + 3870, 2045, @@ -1049,7 +1049,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 65, - 3615, + 3624, 348, @@ -1074,15 +1074,15 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1429, - 3843, + 3852, 3023, 727, - 1678, + 1672, - 3375, + 3384, 3201, @@ -1095,13 +1095,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2462, 59, - -1, - - 4002, + -1, -1, - 778, + 768, - 1672, + 1654, 2171, @@ -1109,7 +1107,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2396, - 3369, + 3378, 1408, @@ -1117,13 +1115,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1759, - 3702, + 3711, 1477, - 768, + 748, - 3363, + 3372, 2033, @@ -1138,12 +1136,12 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 622, -1, - 3930, + 3939, - 3333, + 3342, -1, - 3405, + 3414, -1, 2513, @@ -1169,17 +1167,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1591, -1, - 3909, + 3918, 2864, 1753, - 3696, + 3705, 1471, - 3348, + 3357, -1, 3231, @@ -1213,7 +1211,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1384, - 3510, + 3519, 1975, @@ -1226,7 +1224,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2651, - 3504, + 3513, 1972, @@ -1234,26 +1232,26 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3120, - 3888, + 3897, 598, 2645, - 3498, + 3507, 1969, 965, -1, - 3981, + 3990, 595, 2639, - 3489, + 3498, 3078, @@ -1267,7 +1265,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2630, - 3330, + 3339, 3054, @@ -1279,7 +1277,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2333, - 3456, + 3465, 1948, @@ -1287,12 +1285,12 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 249, - 2267, + 2273, -1, 2597, - 1654, + 1642, 574, @@ -1303,7 +1301,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2324, - 3450, + 3459, 1945, @@ -1311,17 +1309,17 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 246, - 748, + 739, 3189, 2591, - 3426, + 3435, 1933, - 2954, + 2960, 237, -1, @@ -1336,7 +1334,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3210, - 4050, + 4059, 1921, @@ -1351,11 +1349,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2300, - 3393, + 3402, 1333, - 2255, + 3336, 3153, @@ -1365,13 +1363,13 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1330, - 363, + 2267, 673, - 3357, + 3366, - 3957, + 3966, 3039, @@ -1379,28 +1377,28 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1918, - 3972, + 3981, 222, - 3351, + 3360, 3014, 3035, - 3855, - - 2918, + 3864, + -1, 3249, 3011, - 3345, + 3354, 2288, - -1, + + 2954, 1327, @@ -1410,15 +1408,15 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3057, - 3336, + 3345, - 3597, + 3606, 2054, 1090, - 3951, + 3960, 2486, @@ -1428,11 +1426,11 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1834, - 3777, + 3786, 1552, - 1642, + 1636, 3005, @@ -1444,21 +1442,21 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 357, - 4083, + 4092, 730, 2744, - 3849, + 3858, - 739, + 733, 2048, 1084, - 3933, + 3942, 2474, @@ -1480,36 +1478,37 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1420, - 3606, + 3615, 2213, 1252, - -1, -1, + -1, + + 363, 129, - 3555, + 3564, 1843, - 3786, + 3795, 1561, 592, 77, - - 1029, + -1, 1792, - 3735, + 3744, 1510, - 2702, + 3999, 589, @@ -1519,22 +1518,22 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1912, - 3927, + 3936, 216, - 2249, + 2255, 2840, 1705, - 3648, + 3657, -1, 3240, - 3543, + 3552, 2546, @@ -1550,14 +1549,14 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1780, - 3723, + 3732, 1498, - 3537, + 3546, -1, - 2912, + 2918, 447, @@ -1569,7 +1568,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1774, - 3717, + 3726, 1492, @@ -1577,7 +1576,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3183, - 3531, + 3540, -1, 2534, @@ -1592,31 +1591,28 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1768, - 3711, + 3720, 1486, 1702, - 3645, + 3654, 2528, 565, - 3471, + 1192, 3087, - - 934, - - 255, + -1, -1, 556, - 1636, + 1726, - 2612, + 3678, 3051, @@ -1630,31 +1626,31 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 3159, 432, + -1, - 2495, - - 733, + 830, 3032, 1744, - 3687, + 3696, 1462, - -1, - 691, + 1029, + + 2072, 2429, 3029, - 1453, + 2702, 3156, - 3408, + 2753, -1, -1, 550, @@ -1679,7 +1675,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1723, - 3666, + 3675, -1, 3135, @@ -1705,9 +1701,8 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 411, - 3990, - - 3984, + 3993, + -1, 2831, @@ -1740,7 +1735,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1087, - 3975, + 3984, 2480, @@ -1756,16 +1751,16 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2705, - 405, + 2495, 2414, - -1, - 1426, + 691, - 1666, + 1426, + -1, - 4077, + 4086, 724, @@ -1774,71 +1769,74 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2477, 74, - -1, + + 1453, 3258, - 3963, + 3972, - 402, + 1696, - 762, - -1, + 3648, + + 2249, 2411, - 1660, + 3417, 1423, - 4035, + 4044, 547, - 3801, + 3810, - 3483, - -1, + 3492, + + 798, 947, 261, 3273, - - 755, + -1, 2624, - 3480, + 3489, 1960, 944, - 3876, - -1, + 3885, + + 2912, 2327, 2621, -1, -1, - 3438, + 3447, 1939, 899, - 3453, + 3462, - 3870, + 3879, 916, 2579, - 3432, + 3441, 1936, @@ -1855,19 +1853,19 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2321, - 3864, + 3873, - 3420, + 3429, 1930, - 3798, + 3807, 234, 1345, - 3636, + 3645, 2228, @@ -1879,14 +1877,14 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 156, - 577, + 3831, -1, - 3978, + 3987, 1339, - 3630, + 3639, 2225, @@ -1897,25 +1895,26 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 150, - 3609, + 3618, 893, - 3840, + 3849, 1585, -1, 132, - 3591, + 3600, 1846, - 3789, + 3798, 1564, - -1, + + 694, 114, @@ -1923,70 +1922,72 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1828, - 3771, + 3780, 1546, -1, 884, - 3579, + 3588, -1, 688, - -1, -1, + + 3333, + -1, 102, - 3819, + 3828, 1816, - 3759, + 3768, 1534, - 3567, - -1, + 3576, - 1129, - -1, + 2005, - 3549, + 1038, + + 303, + + 3558, 89, - 2786, + 2711, 1804, - 3747, + 3756, 1522, - 3561, + 3570, 1786, - 3729, + 3738, 1504, 2570, 83, - - 1035, + -1, 1798, - 3741, + 3750, 1516, + -1, - 2708, - - 3474, + 3483, 1957, @@ -2001,14 +2002,16 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 2615, 2540, - -1, + + 405, 1762, - 3705, + 3714, 1480, - -1, + + 1666, 2552, @@ -2025,8 +2028,9 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1681, - 4080, - -1, + 4089, + + 762, 438, -1, @@ -2037,31 +2041,29 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1756, - 3699, + 3708, 1474, 782, - 2005, - - 1038, + 3801, - 303, + 3102, + -1, - 4047, + 4056, 435, - - 2711, + -1, 3315, - 3969, + 3978, 1750, - 3693, + 3702, 1468, @@ -2073,7 +2075,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 583, -1, - 4041, + 4050, -1, 3213, @@ -2081,9 +2083,9 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 580, - 3966, + 3975, - 4017, + 4026, -1, 2504, @@ -2092,7 +2094,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1165, - 3999, + 4008, 3246, @@ -2102,7 +2104,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1669, - 3993, + 4002, 2162, @@ -2116,7 +2118,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1741, - 3684, + 3693, 765, @@ -2131,15 +2133,15 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1738, - 3681, + 3690, 2855, 1735, - 3678, + 3687, - 3987, + 3996, 3171, -1, @@ -2160,110 +2162,117 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1732, - 3675, + 3684, - 2150, + 1189, 2852, 1729, - 3672, + 3681, 3150, - 2846, + 1720, - 1717, + 3672, - 3660, + 3480, 836, - -1, -1, -1, + + 934, + + 255, + + 2150, 833, - -1, + + 2612, 3144, - -1, - 820, + 823, + + 2846, + + 1717, + + 3669, 1186, 417, + -1, -1, 2147, - 2453, + 1714, - 49, + 3666, - 1714, + 2141, - 3657, + 820, 2843, 1711, - 3654, - -1, - - 2387, - -1, - - 1399, - -1, + 3663, - 816, + 2837, - 2141, - -1, + 1699, - 813, + 3651, - 3882, + 816, -1, - 2837, - - 1699, + 3891, + -1, -1, - 3642, + 813, 2123, 1162, - 2066, + 802, - 631, + 2117, - 360, + 1156, 2819, 1663, + -1, - 2747, + 2813, - 802, - -1, -1, -1, + 1651, + -1, - 2117, + 3477, - 1156, + 1954, - 3858, + 931, - 1456, + 2426, + + 3867, 758, - 2813, + 2609, + -1, - 1651, + 745, 2111, @@ -2271,9 +2280,8 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 396, - 3291, - - 2426, + 3216, + -1, 2807, @@ -2283,37 +2291,21 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 1096, - 745, - - 1120, - - 375, - - 2741, - - 3852, - - 2777, - -1, - - 736, - 2099, 1138, 390, - 1444, - -1, + 2741, + + 3861, 2795, 1615, - 3168, - - 3846, + 736, 2093, @@ -2321,620 +2313,637 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 384, - 15, - - 2723, + 1444, + -1, 2789, 1603, + 3168, + + 3855, + + 2066, + -1, + + 360, + -1, -1, + + 2747, + 2465, 62, 2738, - 2375, - - 3318, + 2453, - 1363, + 49, - 2120, + 3318, + -1, - 1159, + 1456, 2399, - -1, - - 1411, - 2816, + 3063, - 1657, + 1411, - 4062, + 2387, + -1, - 3468, + 1399, + -1, - 1954, + 15, - 931, + 2723, - 3462, + 3471, 1951, 925, + -1, -1, - 2609, + 2375, - 3216, + 2603, - 752, + 1363, - 2603, + 3846, - 3837, + 24, + + 2729, 1894, - -1, + + 1891, 198, - 1891, + 195, 1876, - 195, + 3843, 180, - 3834, - - 1023, - -1, + 1375, - 3831, + 3840, + -1, -1, 2270, - 2696, + 2264, 1303, - 2264, + 1300, 2258, - - 1300, + -1, 1285, - -1, -1, - 2084, + 2105, - 1108, + 1144, 3312, - 3828, + 3837, + -1, - 1873, + 2801, - 2765, + 1627, - 177, + 3834, - 3825, + 2084, - 1870, + 1108, + + 3825, 2957, - 174, + 2951, - 3813, + 2765, - 2951, + 1873, 2921, - 3063, + 177, - 2252, + 577, - 1123, + 2102, - 1282, - -1, + 1141, - 2246, + 2471, - 2780, + 68, - 1279, - -1, + 3822, - 2105, + 2798, - 1144, + 1621, + + 2252, -1, - 670, + 1282, - 3810, + 2405, - 2801, + 3819, - 1627, + 1417, - 3807, + 1870, + -1, - 3603, + 174, - 1909, + 3816, - 2915, + 1120, - 213, + 375, + + 3804, -1, - 126, + 2777, - 2909, + 3612, - 1840, + 3330, - 3783, + 2246, - 1558, + 2915, - 3585, + 1279, - 2075, + 126, - 1099, + 3594, - 3795, + 1840, - 1318, + 3792, + + 1558, + -1, 108, - 2756, + 1123, 1822, - 3765, + 3774, 1540, - 1189, - - 3942, - - 1183, - - 24, - - 2729, - - 1720, - - 3663, + 2780, - 1708, + 2120, - 3651, + 1159, -1, - 2987, + 2909, -1, - 1375, + 2816, + + 1657, 2114, 1153, - 823, - - 3402, + 2075, - 810, + 1099, + -1, 2810, 1645, - -1, - 4074, + 2756, - 2072, + 4083, - 1696, + 752, + -1, - 3639, + 2459, - 2102, + 56, - 1141, + 21, - 2753, + 2726, - 4071, + 4080, 742, - - 2798, - - 1621, + -1, 3309, - 798, - - 3261, - -1, -1, + 2393, + -1, - 4029, + 1405, - 2471, + 1369, + -1, - 68, + 4038, - 4044, + 2447, - 2459, + 43, - 56, + 4053, + -1, -1, - 646, + 3165, - 4023, - -1, + 4032, - 2405, - -1, + 3534, - 1417, + 2381, - 2393, + 993, - 9, + 1393, - 1405, + 2444, - 21, + 670, - 2726, + 2666, + -1, - 4011, + 3486, - 2447, + 4020, - 43, + 940, - 2369, + 258, + -1, 3255, - 1357, + 2618, - 3282, + 3300, - 1369, + 646, -1, - 2381, + 3474, + -1, - 3477, + 928, - 1393, + 252, - 940, + 1117, - 258, + 3294, - 3300, + 2606, - 3906, + 1035, - 2618, + 2774, - 1117, + 655, - 3096, + 3963, - 3627, + 2708, - 3954, + 3636, - 2774, + 3951, + + 3261, 529, - 3294, + 526, 147, - - 526, + -1, 511, - 3525, + 3456, 1582, - 993, + 909, -1, - 2444, + 3915, - 3465, + 3450, - 2666, + 2588, - 928, + 902, - 252, + 3444, 890, - 3447, + 896, - 2606, + 2582, - 909, - -1, -1, + 2315, 3090, - 2588, - - 3126, - - 3165, + 2576, - 508, + 3927, -1, - 3162, - - 2315, - - 505, - - 3441, - - 3435, - - 902, + 2309, - 896, - -1, -1, + 3162, + -1, - 2582, + 2303, - 2576, + 1909, 1903, - 1900, + 213, 207, + -1, - 204, - - 2309, + 1900, - 2303, + 508, - 1017, + 204, 1888, -1, 192, - 2690, + 3096, - 4065, - -1, + 1129, + + 1318, 1312, + 1882, + + 2786, + + 186, + 1309, + -1, - 544, + 4074, - 3270, + 1297, + + 3381, + + 505, + -1, + + 3306, 2108, 1147, - 1882, + 1291, - 1297, + 2987, - 186, + 2975, 2804, 1633, - 1011, + 3270, - 700, - -1, -1, + 2969, - 2684, + 3969, + -1, - 2975, + 2945, - 2969, + 1017, + -1, - 3285, + 2081, - 1291, + 1105, - 655, + 2690, - 1005, + 3303, - 3816, + 2933, - 2945, + 2762, - 3804, + 2078, - 2678, + 1102, - 3306, + 9, + -1, -1, - 2081, + 2759, - 1105, + 1011, - 2078, + 3, + -1, - 1102, + 2369, + + 2684, + + 1357, + + 700, + + 3282, + + 2363, -1, - 2762, + 1351, - 999, + 402, - 2759, + 1005, - 2933, + 649, - 3372, + 999, - 2672, + 1660, - 3, + 2678, -1, - 3792, + 2672, 3114, - 3519, + 3528, - 694, + 3522, 987, - 2363, + 980, - 3918, + 3285, - 1351, + 755, 2660, - 3513, - -1, + 2654, - 980, + 1023, -1, -1, -1, - 2654, + 2696, + -1, -1, -1, -1, -1, - 3129, + 3957, + + 3921, + -1, -1, -1, -1, -1, + + 3126, -1, -1, -1, -1, -1, -1, + + 3945, -1, -1, -1, -1, -1, -1, + -1, - 649, + 631, + -1, + + 3129, -1, -1, - 3396, + 3405, -1, -1, -1, -1, -1, -1, - 3303, - -1, -1, - - 3960, + 4071, + -1, -1, -1, -1, 3105, -1, - 3948, + 3399, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3390, - -1, -1, + 3279, - 3900, + 3393, -1, - 3912, - -1, -1, -1, - - 3936, - - 3384, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - - 3378, + 3387, -1, - 3102, - -1, -1, -1, -1, -1, -1, - -1, -1, + 544, - 3366, + 538, + -1, -1, -1, - 3279, - -1, -1, -1, -1, -1, + 535, - 3360, - -1, -1, -1, + 3375, - 538, + 3369, - 535, + 523, -1, -1, -1, - 619, - -1, + 3411, + -1, -1, - 523, + 517, + -1, -1, -1, -1, -1, + + 4068, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 517, + 3123, -1, -1, -1, - 616, - -1, -1, -1, -1, + 619, + -1, -1, -1, -1, -1, -1, - 3123, - -1, -1, -1, -1, + 3291, + -1, -1, -1, -1, -1, -1, - 610, + 616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 610, + -1, + 604, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4059, - -1, -1, + 3909, + -1, -1, -1, -1, - 4053, - -1, + 3903, + -1, -1, -1, - 3894, - -1, -1, -1, -1, -1, -1, + 4062, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2943,7 +2952,7 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) -1, 3111, - -1, + -1, -1, -1, -1, -1, 3108, -1, -1, -1, -1, -1, -1, @@ -2961,26 +2970,25 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4068, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, + 4077, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4056, - -1, -1, -1, -1, - - 4038, + 4065, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4032, + 4047, + -1, -1, -1, -1, + + 4041, + -1, -1, - 4026 + 4035 }; diff --git a/src/unicode_fold2_key.c b/src/unicode_fold2_key.c index c39b19d..e06ba0b 100644 --- a/src/unicode_fold2_key.c +++ b/src/unicode_fold2_key.c @@ -9,7 +9,7 @@ /* This gperf source file was generated by make_unicode_fold_data.py */ /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,8 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include <string.h> -#include "regenc.h" +#include "regint.h" #define TOTAL_KEYWORDS 59 #define MIN_WORD_LENGTH 6 diff --git a/src/unicode_fold3_key.c b/src/unicode_fold3_key.c index 295c447..7ab24d1 100644 --- a/src/unicode_fold3_key.c +++ b/src/unicode_fold3_key.c @@ -9,7 +9,7 @@ /* This gperf source file was generated by make_unicode_fold_data.py */ /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,8 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include <string.h> -#include "regenc.h" +#include "regint.h" #define TOTAL_KEYWORDS 14 #define MIN_WORD_LENGTH 9 diff --git a/src/unicode_fold_data.c b/src/unicode_fold_data.c index 68694b0..ca4998d 100644 --- a/src/unicode_fold_data.c +++ b/src/unicode_fold_data.c @@ -1,7 +1,34 @@ /* This file was generated by make_unicode_fold_data.py. */ +/*- + * Copyright (c) 2017-2020 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + #include "regenc.h" -#define UNICODE_CASEFOLD_VERSION 120100 +#define UNICODE_CASEFOLD_VERSION 130000 OnigCodePoint OnigUnicodeFolds1[] = { @@ -1105,262 +1132,265 @@ OnigCodePoint OnigUnicodeFolds1[] = { /*3321*/ 0xa7bd, 1, 0xa7bc, /* LATIN CAPITAL LETTER GLOTTAL I */ /*3324*/ 0xa7bf, 1, 0xa7be, /* LATIN CAPITAL LETTER GLOTTAL U */ /*3327*/ 0xa7c3, 1, 0xa7c2, /* LATIN CAPITAL LETTER ANGLICANA W */ - /*3330*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ - /*3333*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ - /*3336*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ - /*3339*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ - /*3342*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ - /*3345*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ - /*3348*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ - /*3351*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ - /*3354*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ - /*3357*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ - /*3360*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ - /*3363*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ - /*3366*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ - /*3369*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ - /*3372*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ - /*3375*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ - /*3378*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ - /*3381*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ - /*3384*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ - /*3387*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ - /*3390*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ - /*3393*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ - /*3396*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ - /*3399*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ - /*3402*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ - /*3405*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ - /*3408*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ - /*3411*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ - /*3414*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ - /*3417*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ - /*3420*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ - /*3423*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ - /*3426*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ - /*3429*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ - /*3432*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ - /*3435*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ - /*3438*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ - /*3441*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ - /*3444*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ - /*3447*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ - /*3450*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ - /*3453*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ - /*3456*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ - /*3459*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ - /*3462*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ - /*3465*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ - /*3468*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ - /*3471*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ - /*3474*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ - /*3477*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ - /*3480*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ - /*3483*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ - /*3486*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ - /*3489*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ - /*3492*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ - /*3495*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ - /*3498*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ - /*3501*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ - /*3504*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ - /*3507*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ - /*3510*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ - /*3513*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ - /*3516*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ - /*3519*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ - /*3522*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ - /*3525*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ - /*3528*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ - /*3531*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */ - /*3534*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */ - /*3537*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */ - /*3540*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */ - /*3543*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */ - /*3546*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */ - /*3549*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */ - /*3552*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */ - /*3555*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */ - /*3558*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */ - /*3561*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */ - /*3564*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */ - /*3567*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */ - /*3570*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */ - /*3573*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */ - /*3576*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */ - /*3579*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */ - /*3582*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */ - /*3585*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */ - /*3588*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */ - /*3591*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */ - /*3594*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */ - /*3597*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */ - /*3600*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */ - /*3603*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */ - /*3606*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */ - /*3609*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */ - /*3612*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */ - /*3615*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */ - /*3618*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */ - /*3621*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */ - /*3624*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */ - /*3627*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */ - /*3630*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */ - /*3633*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */ - /*3636*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */ - /*3639*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ - /*3642*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ - /*3645*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ - /*3648*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ - /*3651*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ - /*3654*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ - /*3657*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ - /*3660*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ - /*3663*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ - /*3666*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ - /*3669*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ - /*3672*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ - /*3675*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ - /*3678*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ - /*3681*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ - /*3684*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ - /*3687*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ - /*3690*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ - /*3693*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ - /*3696*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ - /*3699*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ - /*3702*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ - /*3705*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ - /*3708*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ - /*3711*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ - /*3714*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ - /*3717*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ - /*3720*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ - /*3723*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ - /*3726*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ - /*3729*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ - /*3732*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ - /*3735*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ - /*3738*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ - /*3741*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ - /*3744*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ - /*3747*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ - /*3750*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ - /*3753*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ - /*3756*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ - /*3759*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ - /*3762*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ - /*3765*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ - /*3768*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ - /*3771*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ - /*3774*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ - /*3777*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ - /*3780*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ - /*3783*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ - /*3786*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ - /*3789*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ - /*3792*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ - /*3795*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ - /*3798*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ - /*3801*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ - /*3804*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ - /*3807*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ - /*3810*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ - /*3813*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ - /*3816*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ - /*3819*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ - /*3822*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ - /*3825*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ - /*3828*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ - /*3831*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ - /*3834*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ - /*3837*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ - /*3840*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ - /*3843*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ - /*3846*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ - /*3849*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ - /*3852*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ - /*3855*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ - /*3858*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ - /*3861*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ - /*3864*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ - /*3867*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ - /*3870*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ - /*3873*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ - /*3876*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ - /*3879*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ - /*3882*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ - /*3885*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ - /*3888*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */ - /*3891*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */ - /*3894*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */ - /*3897*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */ - /*3900*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */ - /*3903*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */ - /*3906*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */ - /*3909*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */ - /*3912*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */ - /*3915*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */ - /*3918*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */ - /*3921*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */ - /*3924*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */ - /*3927*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */ - /*3930*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */ - /*3933*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */ - /*3936*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */ - /*3939*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */ - /*3942*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */ - /*3945*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */ - /*3948*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */ - /*3951*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */ - /*3954*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */ - /*3957*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */ - /*3960*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */ - /*3963*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */ - /*3966*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */ - /*3969*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */ - /*3972*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */ - /*3975*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */ - /*3978*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */ - /*3981*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */ - /*3984*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */ - /*3987*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */ - /*3990*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */ - /*3993*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */ - /*3996*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */ - /*3999*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */ - /*4002*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */ - /*4005*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */ - /*4008*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */ - /*4011*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */ - /*4014*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */ - /*4017*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */ - /*4020*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */ - /*4023*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */ - /*4026*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */ - /*4029*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */ - /*4032*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */ - /*4035*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */ - /*4038*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */ - /*4041*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */ - /*4044*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */ - /*4047*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */ - /*4050*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */ - /*4053*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */ - /*4056*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */ - /*4059*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */ - /*4062*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */ - /*4065*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */ - /*4068*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */ - /*4071*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */ - /*4074*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */ - /*4077*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */ - /*4080*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */ - /*4083*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */ -#define FOLDS1_NORMAL_END_INDEX 4086 + /*3330*/ 0xa7c8, 1, 0xa7c7, /* LATIN CAPITAL LETTER D WITH SHORT.. */ + /*3333*/ 0xa7ca, 1, 0xa7c9, /* LATIN CAPITAL LETTER S WITH SHORT.. */ + /*3336*/ 0xa7f6, 1, 0xa7f5, /* LATIN CAPITAL LETTER REVERSED HAL.. */ + /*3339*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ + /*3342*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ + /*3345*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ + /*3348*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ + /*3351*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ + /*3354*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ + /*3357*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ + /*3360*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ + /*3363*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ + /*3366*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ + /*3369*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ + /*3372*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ + /*3375*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ + /*3378*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ + /*3381*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ + /*3384*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ + /*3387*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ + /*3390*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ + /*3393*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ + /*3396*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ + /*3399*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ + /*3402*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ + /*3405*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ + /*3408*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ + /*3411*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ + /*3414*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ + /*3417*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ + /*3420*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ + /*3423*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ + /*3426*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ + /*3429*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ + /*3432*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ + /*3435*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ + /*3438*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ + /*3441*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ + /*3444*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ + /*3447*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ + /*3450*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ + /*3453*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ + /*3456*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ + /*3459*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ + /*3462*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ + /*3465*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ + /*3468*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ + /*3471*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ + /*3474*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ + /*3477*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ + /*3480*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ + /*3483*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ + /*3486*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ + /*3489*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ + /*3492*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ + /*3495*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ + /*3498*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ + /*3501*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ + /*3504*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ + /*3507*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ + /*3510*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ + /*3513*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ + /*3516*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ + /*3519*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ + /*3522*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ + /*3525*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ + /*3528*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ + /*3531*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ + /*3534*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ + /*3537*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ + /*3540*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */ + /*3543*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */ + /*3546*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */ + /*3549*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */ + /*3552*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */ + /*3555*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */ + /*3558*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */ + /*3561*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */ + /*3564*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */ + /*3567*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */ + /*3570*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */ + /*3573*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */ + /*3576*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */ + /*3579*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */ + /*3582*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */ + /*3585*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */ + /*3588*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */ + /*3591*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */ + /*3594*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */ + /*3597*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */ + /*3600*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */ + /*3603*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */ + /*3606*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */ + /*3609*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */ + /*3612*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */ + /*3615*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */ + /*3618*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */ + /*3621*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */ + /*3624*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */ + /*3627*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */ + /*3630*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */ + /*3633*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */ + /*3636*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */ + /*3639*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */ + /*3642*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */ + /*3645*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */ + /*3648*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ + /*3651*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ + /*3654*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ + /*3657*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ + /*3660*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ + /*3663*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ + /*3666*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ + /*3669*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ + /*3672*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ + /*3675*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ + /*3678*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ + /*3681*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ + /*3684*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ + /*3687*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ + /*3690*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ + /*3693*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ + /*3696*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ + /*3699*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ + /*3702*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ + /*3705*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ + /*3708*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ + /*3711*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ + /*3714*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ + /*3717*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ + /*3720*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ + /*3723*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ + /*3726*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ + /*3729*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ + /*3732*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ + /*3735*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3738*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3741*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ + /*3744*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ + /*3747*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ + /*3750*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ + /*3753*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ + /*3756*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ + /*3759*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ + /*3762*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ + /*3765*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ + /*3768*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ + /*3771*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ + /*3774*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ + /*3777*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ + /*3780*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3783*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3786*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ + /*3789*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ + /*3792*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ + /*3795*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ + /*3798*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ + /*3801*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ + /*3804*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ + /*3807*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ + /*3810*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ + /*3813*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ + /*3816*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ + /*3819*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ + /*3822*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ + /*3825*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ + /*3828*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ + /*3831*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ + /*3834*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ + /*3837*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ + /*3840*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ + /*3843*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ + /*3846*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ + /*3849*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ + /*3852*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ + /*3855*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ + /*3858*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ + /*3861*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ + /*3864*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ + /*3867*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ + /*3870*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ + /*3873*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ + /*3876*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ + /*3879*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ + /*3882*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ + /*3885*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ + /*3888*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ + /*3891*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ + /*3894*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ + /*3897*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */ + /*3900*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */ + /*3903*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */ + /*3906*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */ + /*3909*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */ + /*3912*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */ + /*3915*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */ + /*3918*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */ + /*3921*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */ + /*3924*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */ + /*3927*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */ + /*3930*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */ + /*3933*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */ + /*3936*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */ + /*3939*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */ + /*3942*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */ + /*3945*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */ + /*3948*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */ + /*3951*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */ + /*3954*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */ + /*3957*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */ + /*3960*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */ + /*3963*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */ + /*3966*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */ + /*3969*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */ + /*3972*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */ + /*3975*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */ + /*3978*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */ + /*3981*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */ + /*3984*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */ + /*3987*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */ + /*3990*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */ + /*3993*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */ + /*3996*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */ + /*3999*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */ + /*4002*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */ + /*4005*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */ + /*4008*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */ + /*4011*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */ + /*4014*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */ + /*4017*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */ + /*4020*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */ + /*4023*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */ + /*4026*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */ + /*4029*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */ + /*4032*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */ + /*4035*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */ + /*4038*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */ + /*4041*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */ + /*4044*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */ + /*4047*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */ + /*4050*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */ + /*4053*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */ + /*4056*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */ + /*4059*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */ + /*4062*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */ + /*4065*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */ + /*4068*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */ + /*4071*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */ + /*4074*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */ + /*4077*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */ + /*4080*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */ + /*4083*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */ + /*4086*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */ + /*4089*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */ + /*4092*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */ +#define FOLDS1_NORMAL_END_INDEX 4095 /* ----- LOCALE ----- */ - /*4086*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ -#define FOLDS1_END_INDEX 4089 + /*4095*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ +#define FOLDS1_END_INDEX 4098 }; OnigCodePoint OnigUnicodeFolds2[] = { diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c index 0083dd6..3b645c6 100644 --- a/src/unicode_property_data.c +++ b/src/unicode_property_data.c @@ -33,6 +33,32 @@ /* Generated by make_unicode_property_data.py. */ +/*- + * Copyright (c) 2016-2020 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint @@ -42,7 +68,7 @@ CR_NEWLINE[] = { 1, /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint -CR_Alpha[] = { 679, +CR_Alpha[] = { 695, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -96,7 +122,7 @@ CR_Alpha[] = { 679, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d4, 0x08df, 0x08e3, 0x08e9, 0x08f0, 0x093b, @@ -200,8 +226,7 @@ CR_Alpha[] = { 679, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, @@ -211,7 +236,7 @@ CR_Alpha[] = { 679, 0x0d54, 0x0d57, 0x0d5f, 0x0d63, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -299,6 +324,7 @@ CR_Alpha[] = { 679, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, @@ -386,10 +412,10 @@ CR_Alpha[] = { 679, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -401,8 +427,8 @@ CR_Alpha[] = { 679, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa805, +0xa7c2, 0xa7ca, +0xa7f5, 0xa805, 0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, @@ -433,7 +459,7 @@ CR_Alpha[] = { 679, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -518,19 +544,24 @@ CR_Alpha[] = { 679, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, +0x111ce, 0x111cf, 0x111da, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, @@ -559,7 +590,7 @@ CR_Alpha[] = { 679, 0x11400, 0x11441, 0x11443, 0x11445, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -575,7 +606,14 @@ CR_Alpha[] = { 679, 0x1171d, 0x1172a, 0x11800, 0x11838, 0x118a0, 0x118df, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119df, @@ -608,6 +646,7 @@ CR_Alpha[] = { 679, 0x11d93, 0x11d96, 0x11d98, 0x11d98, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -626,8 +665,10 @@ CR_Alpha[] = { 679, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -716,12 +757,13 @@ CR_Alpha[] = { 679, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ @@ -746,7 +788,7 @@ CR_Cntrl[] = { 2, /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint -CR_Digit[] = { 59, +CR_Digit[] = { 61, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, @@ -797,6 +839,7 @@ CR_Digit[] = { 59, 0x116c0, 0x116c9, 0x11730, 0x11739, 0x118e0, 0x118e9, +0x11950, 0x11959, 0x11c50, 0x11c59, 0x11d50, 0x11d59, 0x11da0, 0x11da9, @@ -806,11 +849,12 @@ CR_Digit[] = { 59, 0x1e140, 0x1e149, 0x1e2f0, 0x1e2f9, 0x1e950, 0x1e959, +0x1fbf0, 0x1fbf9, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint -CR_Graph[] = { 671, +CR_Graph[] = { 682, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, @@ -835,7 +879,7 @@ CR_Graph[] = { 671, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -890,7 +934,7 @@ CR_Graph[] = { 671, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -934,15 +978,14 @@ CR_Graph[] = { 671, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4f, 0x0d54, 0x0d63, 0x0d66, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -1029,7 +1072,7 @@ CR_Graph[] = { 671, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, @@ -1070,7 +1113,7 @@ CR_Graph[] = { 671, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -1087,7 +1130,7 @@ CR_Graph[] = { 671, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4f, +0x2de0, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -1097,18 +1140,16 @@ CR_Graph[] = { 671, 0x3099, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa82b, +0xa7c2, 0xa7ca, +0xa7f5, 0xa82c, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, @@ -1128,7 +1169,7 @@ CR_Graph[] = { 671, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -1173,7 +1214,7 @@ CR_Graph[] = { 671, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, @@ -1233,8 +1274,12 @@ CR_Graph[] = { 671, 0x10cfa, 0x10d27, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, @@ -1243,10 +1288,9 @@ CR_Graph[] = { 671, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11176, -0x11180, 0x111cd, -0x111d0, 0x111df, +0x11180, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, @@ -1272,9 +1316,8 @@ CR_Graph[] = { 671, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +0x11400, 0x1145b, +0x1145d, 0x11461, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -1289,7 +1332,14 @@ CR_Graph[] = { 671, 0x11730, 0x1173f, 0x11800, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e4, @@ -1317,6 +1367,7 @@ CR_Graph[] = { 671, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -1340,9 +1391,11 @@ CR_Graph[] = { 671, 0x16f00, 0x16f4a, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe3, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -1440,17 +1493,15 @@ CR_Graph[] = { 671, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -1459,24 +1510,28 @@ CR_Graph[] = { 671, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, @@ -1486,7 +1541,7 @@ CR_Graph[] = { 671, /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint -CR_Lower[] = { 649, +CR_Lower[] = { 652, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, @@ -2095,9 +2150,12 @@ CR_Lower[] = { 649, 0xa7bd, 0xa7bd, 0xa7bf, 0xa7bf, 0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7f6, 0xa7f6, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab68, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -2140,7 +2198,7 @@ CR_Lower[] = { 649, /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint -CR_Print[] = { 668, +CR_Print[] = { 679, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, @@ -2165,7 +2223,7 @@ CR_Print[] = { 668, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -2220,7 +2278,7 @@ CR_Print[] = { 668, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -2264,15 +2322,14 @@ CR_Print[] = { 668, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4f, 0x0d54, 0x0d63, 0x0d66, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -2358,7 +2415,7 @@ CR_Print[] = { 668, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, @@ -2397,7 +2454,7 @@ CR_Print[] = { 668, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -2414,7 +2471,7 @@ CR_Print[] = { 668, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4f, +0x2de0, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -2424,18 +2481,16 @@ CR_Print[] = { 668, 0x3099, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa82b, +0xa7c2, 0xa7ca, +0xa7f5, 0xa82c, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, @@ -2455,7 +2510,7 @@ CR_Print[] = { 668, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -2500,7 +2555,7 @@ CR_Print[] = { 668, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, @@ -2560,8 +2615,12 @@ CR_Print[] = { 668, 0x10cfa, 0x10d27, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, @@ -2570,10 +2629,9 @@ CR_Print[] = { 668, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11176, -0x11180, 0x111cd, -0x111d0, 0x111df, +0x11180, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, @@ -2599,9 +2657,8 @@ CR_Print[] = { 668, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +0x11400, 0x1145b, +0x1145d, 0x11461, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -2616,7 +2673,14 @@ CR_Print[] = { 668, 0x11730, 0x1173f, 0x11800, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e4, @@ -2644,6 +2708,7 @@ CR_Print[] = { 668, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -2667,9 +2732,11 @@ CR_Print[] = { 668, 0x16f00, 0x16f4a, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe3, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -2767,17 +2834,15 @@ CR_Print[] = { 668, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -2786,24 +2851,28 @@ CR_Print[] = { 668, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, @@ -2813,7 +2882,7 @@ CR_Print[] = { 668, /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint -CR_Punct[] = { 182, +CR_Punct[] = { 185, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, @@ -2904,6 +2973,7 @@ CR_Punct[] = { 182, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e4f, +0x2e52, 0x2e52, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, @@ -2957,6 +3027,7 @@ CR_Punct[] = { 182, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, +0x10ead, 0x10ead, 0x10f55, 0x10f59, 0x11047, 0x1104d, 0x110bb, 0x110bc, @@ -2970,7 +3041,7 @@ CR_Punct[] = { 182, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x1144b, 0x1144f, -0x1145b, 0x1145b, +0x1145a, 0x1145b, 0x1145d, 0x1145d, 0x114c6, 0x114c6, 0x115c1, 0x115d7, @@ -2978,6 +3049,7 @@ CR_Punct[] = { 182, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x11944, 0x11946, 0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, @@ -3015,7 +3087,7 @@ CR_Space[] = { 10, /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint -CR_Upper[] = { 641, +CR_Upper[] = { 643, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -3615,7 +3687,9 @@ CR_Upper[] = { 641, 0xa7bc, 0xa7bc, 0xa7be, 0xa7be, 0xa7c2, 0xa7c2, -0xa7c4, 0xa7c6, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7f5, 0xa7f5, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -3669,7 +3743,7 @@ CR_XDigit[] = { 3, /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint -CR_Word[] = { 716, +CR_Word[] = { 732, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -3721,7 +3795,7 @@ CR_Word[] = { 716, 0x0840, 0x085b, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x08e1, 0x08e3, 0x0963, 0x0966, 0x096f, @@ -3781,7 +3855,7 @@ CR_Word[] = { 716, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b6f, @@ -3827,8 +3901,7 @@ CR_Word[] = { 716, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, @@ -3837,7 +3910,7 @@ CR_Word[] = { 716, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -3936,7 +4009,7 @@ CR_Word[] = { 716, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b59, 0x1b6b, 0x1b73, @@ -4021,10 +4094,10 @@ CR_Word[] = { 716, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -4035,8 +4108,9 @@ CR_Word[] = { 716, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa827, +0xa7c2, 0xa7ca, +0xa7f5, 0xa827, +0xa82c, 0xa82c, 0xa840, 0xa873, 0xa880, 0xa8c5, 0xa8d0, 0xa8d9, @@ -4062,7 +4136,7 @@ CR_Word[] = { 716, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -4161,9 +4235,13 @@ CR_Word[] = { 716, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, @@ -4172,12 +4250,12 @@ CR_Word[] = { 716, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111c9, 0x111cc, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11237, @@ -4206,7 +4284,7 @@ CR_Word[] = { 716, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145f, +0x1145e, 0x11461, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -4223,7 +4301,14 @@ CR_Word[] = { 716, 0x11730, 0x11739, 0x11800, 0x1183a, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e1, @@ -4254,6 +4339,7 @@ CR_Word[] = { 716, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -4274,9 +4360,11 @@ CR_Word[] = { 716, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x16fe3, 0x16fe3, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -4379,18 +4467,20 @@ CR_Word[] = { 716, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint -CR_Alnum[] = { 715, +CR_Alnum[] = { 732, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, @@ -4444,7 +4534,7 @@ CR_Alnum[] = { 715, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d4, 0x08df, 0x08e3, 0x08e9, 0x08f0, 0x093b, @@ -4554,8 +4644,7 @@ CR_Alnum[] = { 715, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, @@ -4566,7 +4655,7 @@ CR_Alnum[] = { 715, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -4662,6 +4751,7 @@ CR_Alnum[] = { 715, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, @@ -4749,10 +4839,10 @@ CR_Alnum[] = { 715, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -4763,8 +4853,8 @@ CR_Alnum[] = { 715, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa805, +0xa7c2, 0xa7ca, +0xa7f5, 0xa805, 0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, @@ -4795,7 +4885,7 @@ CR_Alnum[] = { 715, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -4884,9 +4974,13 @@ CR_Alnum[] = { 715, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11066, 0x1106f, @@ -4895,12 +4989,12 @@ CR_Alnum[] = { 715, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, @@ -4930,7 +5024,7 @@ CR_Alnum[] = { 715, 0x11443, 0x11445, 0x11447, 0x1144a, 0x11450, 0x11459, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -4950,7 +5044,15 @@ CR_Alnum[] = { 715, 0x11730, 0x11739, 0x11800, 0x11838, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119df, @@ -4986,6 +5088,7 @@ CR_Alnum[] = { 715, 0x11d98, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -5006,8 +5109,10 @@ CR_Alnum[] = { 715, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -5100,12 +5205,14 @@ CR_Alnum[] = { 715, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ @@ -5164,7 +5271,7 @@ CR_Arabic[] = { 57, 0x06de, 0x06ff, 0x0750, 0x077f, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x08e1, 0x08e3, 0x08ff, 0xfb50, 0xfbc1, @@ -5213,17 +5320,16 @@ CR_Arabic[] = { 57, /* PROPERTY: 'Armenian': Script */ static const OnigCodePoint -CR_Armenian[] = { 5, +CR_Armenian[] = { 4, 0x0531, 0x0556, -0x0559, 0x0588, -0x058a, 0x058a, +0x0559, 0x058a, 0x058d, 0x058f, 0xfb13, 0xfb17, }; /* END of CR_Armenian */ /* PROPERTY: 'Assigned': - */ static const OnigCodePoint -CR_Assigned[] = { 666, +CR_Assigned[] = { 677, 0x0000, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, @@ -5247,7 +5353,7 @@ CR_Assigned[] = { 666, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -5302,7 +5408,7 @@ CR_Assigned[] = { 666, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -5346,15 +5452,14 @@ CR_Assigned[] = { 666, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4f, 0x0d54, 0x0d63, 0x0d66, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -5440,7 +5545,7 @@ CR_Assigned[] = { 666, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, @@ -5478,7 +5583,7 @@ CR_Assigned[] = { 666, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -5495,7 +5600,7 @@ CR_Assigned[] = { 666, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4f, +0x2de0, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -5505,18 +5610,16 @@ CR_Assigned[] = { 666, 0x3099, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa82b, +0xa7c2, 0xa7ca, +0xa7f5, 0xa82c, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, @@ -5536,7 +5639,7 @@ CR_Assigned[] = { 666, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -5581,7 +5684,7 @@ CR_Assigned[] = { 666, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, @@ -5641,8 +5744,12 @@ CR_Assigned[] = { 666, 0x10cfa, 0x10d27, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, @@ -5651,10 +5758,9 @@ CR_Assigned[] = { 666, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11176, -0x11180, 0x111cd, -0x111d0, 0x111df, +0x11180, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, @@ -5680,9 +5786,8 @@ CR_Assigned[] = { 666, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +0x11400, 0x1145b, +0x1145d, 0x11461, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -5697,7 +5802,14 @@ CR_Assigned[] = { 666, 0x11730, 0x1173f, 0x11800, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e4, @@ -5725,6 +5837,7 @@ CR_Assigned[] = { 666, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -5748,9 +5861,11 @@ CR_Assigned[] = { 666, 0x16f00, 0x16f4a, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe3, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -5848,17 +5963,15 @@ CR_Assigned[] = { 666, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -5867,24 +5980,28 @@ CR_Assigned[] = { 666, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, @@ -5969,7 +6086,7 @@ static const OnigCodePoint CR_Bopomofo[] = { 3, 0x02ea, 0x02eb, 0x3105, 0x312f, -0x31a0, 0x31ba, +0x31a0, 0x31bf, }; /* END of CR_Bopomofo */ /* PROPERTY: 'Brahmi': Script */ @@ -6001,7 +6118,7 @@ CR_Buhid[] = { 1, /* PROPERTY: 'C': Major Category */ static const OnigCodePoint -CR_C[] = { 668, +CR_C[] = { 679, 0x0000, 0x001f, 0x007f, 0x009f, 0x00ad, 0x00ad, @@ -6029,7 +6146,7 @@ CR_C[] = { 668, 0x085f, 0x085f, 0x086b, 0x089f, 0x08b5, 0x08b5, -0x08be, 0x08d2, +0x08c8, 0x08d2, 0x08e2, 0x08e2, 0x0984, 0x0984, 0x098d, 0x098e, @@ -6084,7 +6201,7 @@ CR_C[] = { 668, 0x0b3a, 0x0b3b, 0x0b45, 0x0b46, 0x0b49, 0x0b4a, -0x0b4e, 0x0b55, +0x0b4e, 0x0b54, 0x0b58, 0x0b5b, 0x0b5e, 0x0b5e, 0x0b64, 0x0b65, @@ -6129,14 +6246,13 @@ CR_C[] = { 668, 0x0ce4, 0x0ce5, 0x0cf0, 0x0cf0, 0x0cf3, 0x0cff, -0x0d04, 0x0d04, 0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d45, 0x0d45, 0x0d49, 0x0d49, 0x0d50, 0x0d53, 0x0d64, 0x0d65, -0x0d80, 0x0d81, +0x0d80, 0x0d80, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, @@ -6223,7 +6339,7 @@ CR_C[] = { 668, 0x1a8a, 0x1a8f, 0x1a9a, 0x1a9f, 0x1aae, 0x1aaf, -0x1abf, 0x1aff, +0x1ac1, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bf4, 0x1bfb, @@ -6262,7 +6378,7 @@ CR_C[] = { 668, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, -0x2b96, 0x2b97, +0x2b96, 0x2b96, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -6280,7 +6396,7 @@ CR_C[] = { 668, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e50, 0x2e7f, +0x2e53, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -6290,18 +6406,16 @@ CR_C[] = { 668, 0x3100, 0x3104, 0x3130, 0x3130, 0x318f, 0x318f, -0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x4db6, 0x4dbf, -0x9ff0, 0x9fff, +0x9ffd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, 0xa7c0, 0xa7c1, -0xa7c7, 0xa7f6, -0xa82c, 0xa82f, +0xa7cb, 0xa7f4, +0xa82d, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c6, 0xa8cd, @@ -6321,7 +6435,7 @@ CR_C[] = { 668, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab68, 0xab6f, +0xab6c, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -6365,7 +6479,7 @@ CR_C[] = { 668, 0x10103, 0x10106, 0x10134, 0x10136, 0x1018f, 0x1018f, -0x1019c, 0x1019f, +0x1019d, 0x1019f, 0x101a1, 0x101cf, 0x101fe, 0x1027f, 0x1029d, 0x1029f, @@ -6424,9 +6538,13 @@ CR_C[] = { 668, 0x10cf3, 0x10cf9, 0x10d28, 0x10d2f, 0x10d3a, 0x10e5f, -0x10e7f, 0x10eff, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fdf, +0x10f5a, 0x10faf, +0x10fcc, 0x10fdf, 0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, @@ -6435,9 +6553,8 @@ CR_C[] = { 668, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, -0x11147, 0x1114f, +0x11148, 0x1114f, 0x11177, 0x1117f, -0x111ce, 0x111cf, 0x111e0, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, @@ -6464,9 +6581,8 @@ CR_C[] = { 668, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x113ff, -0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x11460, 0x1147f, +0x11462, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -6481,7 +6597,14 @@ CR_C[] = { 668, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x1199f, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, 0x119a8, 0x119a9, 0x119d8, 0x119d9, 0x119e5, 0x119ff, @@ -6508,7 +6631,8 @@ CR_C[] = { 668, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fbf, +0x11ef9, 0x11faf, +0x11fb1, 0x11fbf, 0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, @@ -6531,9 +6655,11 @@ CR_C[] = { 668, 0x16f4b, 0x16f4e, 0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe4, 0x16fff, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, 0x187f8, 0x187ff, -0x18af3, 0x1afff, +0x18cd6, 0x18cff, +0x18d09, 0x1afff, 0x1b11f, 0x1b14f, 0x1b153, 0x1b163, 0x1b168, 0x1b16f, @@ -6632,17 +6758,15 @@ CR_C[] = { 668, 0x1f0c0, 0x1f0c0, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, -0x1f10d, 0x1f10f, -0x1f16d, 0x1f16f, -0x1f1ad, 0x1f1e5, +0x1f1ae, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d6, 0x1f6df, +0x1f6d8, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fb, 0x1f6ff, +0x1f6fd, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d9, 0x1f7df, 0x1f7ec, 0x1f7ff, @@ -6650,25 +6774,29 @@ CR_C[] = { 668, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, -0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90c, -0x1f972, 0x1f972, -0x1f977, 0x1f979, -0x1f9a3, 0x1f9a4, -0x1f9ab, 0x1f9ad, -0x1f9cb, 0x1f9cc, +0x1f8ae, 0x1f8af, +0x1f8b2, 0x1f8ff, +0x1f979, 0x1f979, +0x1f9cc, 0x1f9cc, 0x1fa54, 0x1fa5f, 0x1fa6e, 0x1fa6f, -0x1fa74, 0x1fa77, +0x1fa75, 0x1fa77, 0x1fa7b, 0x1fa7f, -0x1fa83, 0x1fa8f, -0x1fa96, 0x1ffff, -0x2a6d7, 0x2a6ff, +0x1fa87, 0x1fa8f, +0x1faa9, 0x1faaf, +0x1fab7, 0x1fabf, +0x1fac3, 0x1facf, +0x1fad7, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbcb, 0x1fbef, +0x1fbfa, 0x1ffff, +0x2a6de, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, 0x2cea2, 0x2ceaf, 0x2ebe1, 0x2f7ff, -0x2fa1e, 0xe00ff, +0x2fa1e, 0x2ffff, +0x3134b, 0xe00ff, 0xe01f0, 0x10ffff, }; /* END of CR_C */ @@ -6687,7 +6815,7 @@ CR_Carian[] = { 1, /* PROPERTY: 'Case_Ignorable': Derived Property */ static const OnigCodePoint -CR_Case_Ignorable[] = { 401, +CR_Case_Ignorable[] = { 410, 0x0027, 0x0027, 0x002e, 0x002e, 0x003a, 0x003a, @@ -6705,6 +6833,7 @@ CR_Case_Ignorable[] = { 401, 0x0387, 0x0387, 0x0483, 0x0489, 0x0559, 0x0559, +0x055f, 0x055f, 0x0591, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, @@ -6763,7 +6892,7 @@ CR_Case_Ignorable[] = { 401, 0x0b3f, 0x0b3f, 0x0b41, 0x0b44, 0x0b4d, 0x0b4d, -0x0b56, 0x0b56, +0x0b55, 0x0b56, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bc0, 0x0bc0, @@ -6786,6 +6915,7 @@ CR_Case_Ignorable[] = { 401, 0x0d41, 0x0d44, 0x0d4d, 0x0d4d, 0x0d62, 0x0d63, +0x0d81, 0x0d81, 0x0dca, 0x0dca, 0x0dd2, 0x0dd4, 0x0dd6, 0x0dd6, @@ -6847,7 +6977,7 @@ CR_Case_Ignorable[] = { 401, 0x1a73, 0x1a7c, 0x1a7f, 0x1a7f, 0x1aa7, 0x1aa7, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b03, 0x1b34, 0x1b34, 0x1b36, 0x1b3a, @@ -6920,6 +7050,7 @@ CR_Case_Ignorable[] = { 401, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa825, 0xa826, +0xa82c, 0xa82c, 0xa8c4, 0xa8c5, 0xa8e0, 0xa8f1, 0xa8ff, 0xa8ff, @@ -6948,6 +7079,7 @@ CR_Case_Ignorable[] = { 401, 0xaaf3, 0xaaf4, 0xaaf6, 0xaaf6, 0xab5b, 0xab5f, +0xab69, 0xab6b, 0xabe5, 0xabe5, 0xabe8, 0xabe8, 0xabed, 0xabed, @@ -6978,6 +7110,7 @@ CR_Case_Ignorable[] = { 401, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x10d24, 0x10d27, +0x10eab, 0x10eac, 0x10f46, 0x10f50, 0x11001, 0x11001, 0x11038, 0x11046, @@ -6993,6 +7126,7 @@ CR_Case_Ignorable[] = { 401, 0x11180, 0x11181, 0x111b6, 0x111be, 0x111c9, 0x111cc, +0x111cf, 0x111cf, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, @@ -7028,6 +7162,9 @@ CR_Case_Ignorable[] = { 401, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x1193b, 0x1193c, +0x1193e, 0x1193e, +0x11943, 0x11943, 0x119d4, 0x119d7, 0x119da, 0x119db, 0x119e0, 0x119e0, @@ -7062,7 +7199,7 @@ CR_Case_Ignorable[] = { 401, 0x16f4f, 0x16f4f, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x16fe3, 0x16fe3, +0x16fe3, 0x16fe4, 0x1bc9d, 0x1bc9e, 0x1bca0, 0x1bca3, 0x1d167, 0x1d169, @@ -7093,7 +7230,7 @@ CR_Case_Ignorable[] = { 401, /* PROPERTY: 'Cased': Derived Property */ static const OnigCodePoint -CR_Cased[] = { 140, +CR_Cased[] = { 141, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -7184,10 +7321,11 @@ CR_Cased[] = { 140, 0xa722, 0xa787, 0xa78b, 0xa78e, 0xa790, 0xa7bf, -0xa7c2, 0xa7c6, +0xa7c2, 0xa7ca, +0xa7f5, 0xa7f6, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab68, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -7275,7 +7413,7 @@ CR_Cf[] = { 20, static const OnigCodePoint CR_Chakma[] = { 2, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, }; /* END of CR_Chakma */ /* PROPERTY: 'Cham': Script */ @@ -7289,7 +7427,7 @@ CR_Cham[] = { 4, /* PROPERTY: 'Changes_When_Casefolded': Derived Property */ static const OnigCodePoint -CR_Changes_When_Casefolded[] = { 612, +CR_Changes_When_Casefolded[] = { 614, 0x0041, 0x005a, 0x00b5, 0x00b5, 0x00c0, 0x00d6, @@ -7891,7 +8029,9 @@ CR_Changes_When_Casefolded[] = { 612, 0xa7bc, 0xa7bc, 0xa7be, 0xa7be, 0xa7c2, 0xa7c2, -0xa7c4, 0xa7c6, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7f5, 0xa7f5, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -7906,7 +8046,7 @@ CR_Changes_When_Casefolded[] = { 612, /* PROPERTY: 'Changes_When_Casemapped': Derived Property */ static const OnigCodePoint -CR_Changes_When_Casemapped[] = { 123, +CR_Changes_When_Casemapped[] = { 124, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, @@ -8015,7 +8155,8 @@ CR_Changes_When_Casemapped[] = { 123, 0xa790, 0xa794, 0xa796, 0xa7ae, 0xa7b0, 0xa7bf, -0xa7c2, 0xa7c6, +0xa7c2, 0xa7ca, +0xa7f5, 0xa7f6, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -8034,7 +8175,7 @@ CR_Changes_When_Casemapped[] = { 123, /* PROPERTY: 'Changes_When_Lowercased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Lowercased[] = { 599, +CR_Changes_When_Lowercased[] = { 601, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -8626,7 +8767,9 @@ CR_Changes_When_Lowercased[] = { 599, 0xa7bc, 0xa7bc, 0xa7be, 0xa7be, 0xa7c2, 0xa7c2, -0xa7c4, 0xa7c6, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7f5, 0xa7f5, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -8638,7 +8781,7 @@ CR_Changes_When_Lowercased[] = { 599, /* PROPERTY: 'Changes_When_Titlecased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Titlecased[] = { 615, +CR_Changes_When_Titlecased[] = { 618, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -9243,6 +9386,9 @@ CR_Changes_When_Titlecased[] = { 615, 0xa7bd, 0xa7bd, 0xa7bf, 0xa7bf, 0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7f6, 0xa7f6, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -9258,7 +9404,7 @@ CR_Changes_When_Titlecased[] = { 615, /* PROPERTY: 'Changes_When_Uppercased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Uppercased[] = { 616, +CR_Changes_When_Uppercased[] = { 619, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -9864,6 +10010,9 @@ CR_Changes_When_Uppercased[] = { 616, 0xa7bd, 0xa7bd, 0xa7bf, 0xa7bf, 0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7f6, 0xa7f6, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -9885,9 +10034,15 @@ CR_Cherokee[] = { 3, 0xab70, 0xabbf, }; /* END of CR_Cherokee */ +/* PROPERTY: 'Chorasmian': Script */ +static const OnigCodePoint +CR_Chorasmian[] = { 1, +0x10fb0, 0x10fcb, +}; /* END of CR_Chorasmian */ + /* PROPERTY: 'Cn': General Category */ static const OnigCodePoint -CR_Cn[] = { 666, +CR_Cn[] = { 677, 0x0378, 0x0379, 0x0380, 0x0383, 0x038b, 0x038b, @@ -9911,7 +10066,7 @@ CR_Cn[] = { 666, 0x085f, 0x085f, 0x086b, 0x089f, 0x08b5, 0x08b5, -0x08be, 0x08d2, +0x08c8, 0x08d2, 0x0984, 0x0984, 0x098d, 0x098e, 0x0991, 0x0992, @@ -9965,7 +10120,7 @@ CR_Cn[] = { 666, 0x0b3a, 0x0b3b, 0x0b45, 0x0b46, 0x0b49, 0x0b4a, -0x0b4e, 0x0b55, +0x0b4e, 0x0b54, 0x0b58, 0x0b5b, 0x0b5e, 0x0b5e, 0x0b64, 0x0b65, @@ -10010,14 +10165,13 @@ CR_Cn[] = { 666, 0x0ce4, 0x0ce5, 0x0cf0, 0x0cf0, 0x0cf3, 0x0cff, -0x0d04, 0x0d04, 0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d45, 0x0d45, 0x0d49, 0x0d49, 0x0d50, 0x0d53, 0x0d64, 0x0d65, -0x0d80, 0x0d81, +0x0d80, 0x0d80, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, @@ -10104,7 +10258,7 @@ CR_Cn[] = { 666, 0x1a8a, 0x1a8f, 0x1a9a, 0x1a9f, 0x1aae, 0x1aaf, -0x1abf, 0x1aff, +0x1ac1, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bf4, 0x1bfb, @@ -10141,7 +10295,7 @@ CR_Cn[] = { 666, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, -0x2b96, 0x2b97, +0x2b96, 0x2b96, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -10159,7 +10313,7 @@ CR_Cn[] = { 666, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e50, 0x2e7f, +0x2e53, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -10169,18 +10323,16 @@ CR_Cn[] = { 666, 0x3100, 0x3104, 0x3130, 0x3130, 0x318f, 0x318f, -0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x4db6, 0x4dbf, -0x9ff0, 0x9fff, +0x9ffd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, 0xa7c0, 0xa7c1, -0xa7c7, 0xa7f6, -0xa82c, 0xa82f, +0xa7cb, 0xa7f4, +0xa82d, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c6, 0xa8cd, @@ -10200,7 +10352,7 @@ CR_Cn[] = { 666, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab68, 0xab6f, +0xab6c, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -10245,7 +10397,7 @@ CR_Cn[] = { 666, 0x10103, 0x10106, 0x10134, 0x10136, 0x1018f, 0x1018f, -0x1019c, 0x1019f, +0x1019d, 0x1019f, 0x101a1, 0x101cf, 0x101fe, 0x1027f, 0x1029d, 0x1029f, @@ -10304,9 +10456,13 @@ CR_Cn[] = { 666, 0x10cf3, 0x10cf9, 0x10d28, 0x10d2f, 0x10d3a, 0x10e5f, -0x10e7f, 0x10eff, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fdf, +0x10f5a, 0x10faf, +0x10fcc, 0x10fdf, 0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, @@ -10315,9 +10471,8 @@ CR_Cn[] = { 666, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, -0x11147, 0x1114f, +0x11148, 0x1114f, 0x11177, 0x1117f, -0x111ce, 0x111cf, 0x111e0, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, @@ -10344,9 +10499,8 @@ CR_Cn[] = { 666, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x113ff, -0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x11460, 0x1147f, +0x11462, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -10361,7 +10515,14 @@ CR_Cn[] = { 666, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x1199f, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, 0x119a8, 0x119a9, 0x119d8, 0x119d9, 0x119e5, 0x119ff, @@ -10388,7 +10549,8 @@ CR_Cn[] = { 666, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fbf, +0x11ef9, 0x11faf, +0x11fb1, 0x11fbf, 0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, @@ -10412,9 +10574,11 @@ CR_Cn[] = { 666, 0x16f4b, 0x16f4e, 0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe4, 0x16fff, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, 0x187f8, 0x187ff, -0x18af3, 0x1afff, +0x18cd6, 0x18cff, +0x18d09, 0x1afff, 0x1b11f, 0x1b14f, 0x1b153, 0x1b163, 0x1b168, 0x1b16f, @@ -10512,17 +10676,15 @@ CR_Cn[] = { 666, 0x1f0c0, 0x1f0c0, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, -0x1f10d, 0x1f10f, -0x1f16d, 0x1f16f, -0x1f1ad, 0x1f1e5, +0x1f1ae, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d6, 0x1f6df, +0x1f6d8, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fb, 0x1f6ff, +0x1f6fd, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d9, 0x1f7df, 0x1f7ec, 0x1f7ff, @@ -10530,25 +10692,29 @@ CR_Cn[] = { 666, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, -0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90c, -0x1f972, 0x1f972, -0x1f977, 0x1f979, -0x1f9a3, 0x1f9a4, -0x1f9ab, 0x1f9ad, -0x1f9cb, 0x1f9cc, +0x1f8ae, 0x1f8af, +0x1f8b2, 0x1f8ff, +0x1f979, 0x1f979, +0x1f9cc, 0x1f9cc, 0x1fa54, 0x1fa5f, 0x1fa6e, 0x1fa6f, -0x1fa74, 0x1fa77, +0x1fa75, 0x1fa77, 0x1fa7b, 0x1fa7f, -0x1fa83, 0x1fa8f, -0x1fa96, 0x1ffff, -0x2a6d7, 0x2a6ff, +0x1fa87, 0x1fa8f, +0x1faa9, 0x1faaf, +0x1fab7, 0x1fabf, +0x1fac3, 0x1facf, +0x1fad7, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbcb, 0x1fbef, +0x1fbfa, 0x1ffff, +0x2a6de, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, 0x2cea2, 0x2ceaf, 0x2ebe1, 0x2f7ff, -0x2fa1e, 0xe0000, +0x2fa1e, 0x2ffff, +0x3134b, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, @@ -10566,7 +10732,7 @@ CR_Co[] = { 3, /* PROPERTY: 'Common': Script */ static const OnigCodePoint -CR_Common[] = { 172, +CR_Common[] = { 173, 0x0000, 0x0040, 0x005b, 0x0060, 0x007b, 0x00a9, @@ -10581,7 +10747,6 @@ CR_Common[] = { 172, 0x037e, 0x037e, 0x0385, 0x0385, 0x0387, 0x0387, -0x0589, 0x0589, 0x0605, 0x0605, 0x060c, 0x060c, 0x061b, 0x061b, @@ -10620,8 +10785,8 @@ CR_Common[] = { 172, 0x2460, 0x27ff, 0x2900, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bff, -0x2e00, 0x2e4f, +0x2b97, 0x2bff, +0x2e00, 0x2e52, 0x2ff0, 0x2ffb, 0x3000, 0x3004, 0x3006, 0x3006, @@ -10644,6 +10809,7 @@ CR_Common[] = { 172, 0xa92e, 0xa92e, 0xa9cf, 0xa9cf, 0xab5b, 0xab5b, +0xab6a, 0xab6b, 0xfd3e, 0xfd3f, 0xfe10, 0xfe19, 0xfe30, 0xfe52, @@ -10661,7 +10827,7 @@ CR_Common[] = { 172, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1013f, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101d0, 0x101fc, 0x102e1, 0x102fb, 0x16fe2, 0x16fe3, @@ -10705,18 +10871,16 @@ CR_Common[] = { 172, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f1ff, 0x1f201, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -10725,18 +10889,21 @@ CR_Common[] = { 172, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, 0xe0001, 0xe0001, 0xe0020, 0xe007f, }; /* END of CR_Common */ @@ -10790,7 +10957,7 @@ CR_Cyrillic[] = { 8, /* PROPERTY: 'Dash': Binary Property */ static const OnigCodePoint -CR_Dash[] = { 21, +CR_Dash[] = { 22, 0x002d, 0x002d, 0x058a, 0x058a, 0x05be, 0x05be, @@ -10812,6 +10979,7 @@ CR_Dash[] = { 21, 0xfe58, 0xfe58, 0xfe63, 0xfe63, 0xff0d, 0xff0d, +0x10ead, 0x10ead, }; /* END of CR_Dash */ /* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */ @@ -10866,7 +11034,7 @@ CR_Devanagari[] = { 4, /* PROPERTY: 'Diacritic': Binary Property */ static const OnigCodePoint -CR_Diacritic[] = { 171, +CR_Diacritic[] = { 176, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, @@ -10909,6 +11077,7 @@ CR_Diacritic[] = { 171, 0x0afd, 0x0aff, 0x0b3c, 0x0b3c, 0x0b4d, 0x0b4d, +0x0b55, 0x0b55, 0x0bcd, 0x0bcd, 0x0c4d, 0x0c4d, 0x0cbc, 0x0cbc, @@ -10986,6 +11155,7 @@ CR_Diacritic[] = { 171, 0xaabf, 0xaac2, 0xaaf6, 0xaaf6, 0xab5b, 0xab5f, +0xab69, 0xab6b, 0xabec, 0xabed, 0xfb1e, 0xfb1e, 0xfe20, 0xfe2f, @@ -11017,6 +11187,8 @@ CR_Diacritic[] = { 171, 0x116b6, 0x116b7, 0x1172b, 0x1172b, 0x11839, 0x1183a, +0x1193d, 0x1193e, +0x11943, 0x11943, 0x119e0, 0x119e0, 0x11a34, 0x11a34, 0x11a47, 0x11a47, @@ -11028,6 +11200,7 @@ CR_Diacritic[] = { 171, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16f8f, 0x16f9f, +0x16ff0, 0x16ff1, 0x1d167, 0x1d169, 0x1d16d, 0x1d172, 0x1d17b, 0x1d182, @@ -11040,6 +11213,19 @@ CR_Diacritic[] = { 171, 0x1e948, 0x1e94a, }; /* END of CR_Diacritic */ +/* PROPERTY: 'Dives_Akuru': Script */ +static const OnigCodePoint +CR_Dives_Akuru[] = { 8, +0x11900, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, +}; /* END of CR_Dives_Akuru */ + /* PROPERTY: 'Dogra': Script */ static const OnigCodePoint CR_Dogra[] = { 1, @@ -11077,7 +11263,7 @@ CR_Elymaic[] = { 1, /* PROPERTY: 'Emoji': Emoji Property */ static const OnigCodePoint -CR_Emoji[] = { 151, +CR_Emoji[] = { 152, 0x0023, 0x0023, 0x002a, 0x002a, 0x0030, 0x0039, @@ -11124,6 +11310,7 @@ CR_Emoji[] = { 151, 0x2699, 0x2699, 0x269b, 0x269c, 0x26a0, 0x26a1, +0x26a7, 0x26a7, 0x26aa, 0x26ab, 0x26b0, 0x26b1, 0x26bd, 0x26be, @@ -11210,25 +11397,25 @@ CR_Emoji[] = { 151, 0x1f5fa, 0x1f64f, 0x1f680, 0x1f6c5, 0x1f6cb, 0x1f6d2, -0x1f6d5, 0x1f6d5, +0x1f6d5, 0x1f6d7, 0x1f6e0, 0x1f6e5, 0x1f6e9, 0x1f6e9, 0x1f6eb, 0x1f6ec, 0x1f6f0, 0x1f6f0, -0x1f6f3, 0x1f6fa, +0x1f6f3, 0x1f6fc, 0x1f7e0, 0x1f7eb, -0x1f90d, 0x1f93a, +0x1f90c, 0x1f93a, 0x1f93c, 0x1f945, -0x1f947, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f947, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1f9ff, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, }; /* END of CR_Emoji */ /* PROPERTY: 'Emoji_Component': Emoji Property */ @@ -11254,7 +11441,7 @@ CR_Emoji_Modifier[] = { 1, /* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */ static const OnigCodePoint -CR_Emoji_Modifier_Base[] = { 36, +CR_Emoji_Modifier_Base[] = { 38, 0x261d, 0x261d, 0x26f9, 0x26f9, 0x270a, 0x270d, @@ -11281,11 +11468,13 @@ CR_Emoji_Modifier_Base[] = { 36, 0x1f6b4, 0x1f6b6, 0x1f6c0, 0x1f6c0, 0x1f6cc, 0x1f6cc, +0x1f90c, 0x1f90c, 0x1f90f, 0x1f90f, 0x1f918, 0x1f91f, 0x1f926, 0x1f926, 0x1f930, 0x1f939, 0x1f93c, 0x1f93e, +0x1f977, 0x1f977, 0x1f9b5, 0x1f9b6, 0x1f9b8, 0x1f9b9, 0x1f9bb, 0x1f9bb, @@ -11361,22 +11550,22 @@ CR_Emoji_Presentation[] = { 81, 0x1f680, 0x1f6c5, 0x1f6cc, 0x1f6cc, 0x1f6d0, 0x1f6d2, -0x1f6d5, 0x1f6d5, +0x1f6d5, 0x1f6d7, 0x1f6eb, 0x1f6ec, -0x1f6f4, 0x1f6fa, +0x1f6f4, 0x1f6fc, 0x1f7e0, 0x1f7eb, -0x1f90d, 0x1f93a, +0x1f90c, 0x1f93a, 0x1f93c, 0x1f945, -0x1f947, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f947, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1f9ff, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, }; /* END of CR_Emoji_Presentation */ /* PROPERTY: 'Ethiopic': Script */ @@ -11418,7 +11607,7 @@ CR_Ethiopic[] = { 32, /* PROPERTY: 'Extended_Pictographic': Emoji Property */ static const OnigCodePoint -CR_Extended_Pictographic[] = { 77, +CR_Extended_Pictographic[] = { 78, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x203c, 0x203c, @@ -11495,16 +11684,18 @@ CR_Extended_Pictographic[] = { 77, 0x1f8ae, 0x1f8ff, 0x1f90c, 0x1f93a, 0x1f93c, 0x1f945, -0x1f947, 0x1fffd, +0x1f947, 0x1faff, +0x1fc00, 0x1fffd, }; /* END of CR_Extended_Pictographic */ /* PROPERTY: 'Extender': Binary Property */ static const OnigCodePoint -CR_Extender[] = { 31, +CR_Extender[] = { 32, 0x00b7, 0x00b7, 0x02d0, 0x02d1, 0x0640, 0x0640, 0x07fa, 0x07fa, +0x0b55, 0x0b55, 0x0e46, 0x0e46, 0x0ec6, 0x0ec6, 0x180a, 0x180a, @@ -11589,7 +11780,7 @@ CR_Grantha[] = { 15, /* PROPERTY: 'Grapheme_Base': Derived Property */ static const OnigCodePoint -CR_Grapheme_Base[] = { 819, +CR_Grapheme_Base[] = { 834, 0x0020, 0x007e, 0x00a0, 0x00ac, 0x00ae, 0x02ff, @@ -11633,7 +11824,7 @@ CR_Grapheme_Base[] = { 819, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x0903, 0x0939, 0x093b, 0x093b, 0x093d, 0x0940, @@ -11739,8 +11930,7 @@ CR_Grapheme_Base[] = { 819, 0x0ce0, 0x0ce1, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d02, 0x0d03, -0x0d05, 0x0d0c, +0x0d02, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d3d, @@ -11922,7 +12112,7 @@ CR_Grapheme_Base[] = { 819, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cee, 0x2cf2, 0x2cf3, @@ -11940,7 +12130,7 @@ CR_Grapheme_Base[] = { 819, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2e00, 0x2e4f, +0x2e00, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -11951,11 +12141,9 @@ CR_Grapheme_Base[] = { 819, 0x309b, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, @@ -11965,8 +12153,8 @@ CR_Grapheme_Base[] = { 819, 0xa6a0, 0xa6ef, 0xa6f2, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa801, +0xa7c2, 0xa7ca, +0xa7f5, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa824, @@ -12008,7 +12196,7 @@ CR_Grapheme_Base[] = { 819, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabe4, 0xabe6, 0xabe7, 0xabe9, 0xabec, @@ -12056,7 +12244,7 @@ CR_Grapheme_Base[] = { 819, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10280, 0x1029c, @@ -12114,9 +12302,13 @@ CR_Grapheme_Base[] = { 819, 0x10cfa, 0x10d23, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10ead, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f45, 0x10f51, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x11000, 0x11002, 0x11037, @@ -12130,12 +12322,12 @@ CR_Grapheme_Base[] = { 819, 0x110f0, 0x110f9, 0x11103, 0x11126, 0x1112c, 0x1112c, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11172, 0x11174, 0x11176, 0x11182, 0x111b5, 0x111bf, 0x111c8, -0x111cd, 0x111cd, +0x111cd, 0x111ce, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, @@ -12168,10 +12360,9 @@ CR_Grapheme_Base[] = { 819, 0x11400, 0x11437, 0x11440, 0x11441, 0x11445, 0x11445, -0x11447, 0x11459, -0x1145b, 0x1145b, +0x11447, 0x1145b, 0x1145d, 0x1145d, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114af, 0x114b1, 0x114b2, 0x114b9, 0x114b9, @@ -12205,7 +12396,17 @@ CR_Grapheme_Base[] = { 819, 0x11838, 0x11838, 0x1183b, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x11931, 0x11935, +0x11937, 0x11938, +0x1193d, 0x1193d, +0x1193f, 0x11942, +0x11944, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d3, 0x119dc, 0x119df, @@ -12243,6 +12444,7 @@ CR_Grapheme_Base[] = { 819, 0x11da0, 0x11da9, 0x11ee0, 0x11ef2, 0x11ef5, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -12267,8 +12469,10 @@ CR_Grapheme_Base[] = { 819, 0x16f50, 0x16f87, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe3, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -12372,17 +12576,15 @@ CR_Grapheme_Base[] = { 819, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -12391,29 +12593,33 @@ CR_Grapheme_Base[] = { 819, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Grapheme_Base */ /* PROPERTY: 'Grapheme_Extend': Derived Property */ static const OnigCodePoint -CR_Grapheme_Extend[] = { 335, +CR_Grapheme_Extend[] = { 344, 0x0300, 0x036f, 0x0483, 0x0489, 0x0591, 0x05bd, @@ -12474,7 +12680,7 @@ CR_Grapheme_Extend[] = { 335, 0x0b3e, 0x0b3f, 0x0b41, 0x0b44, 0x0b4d, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bbe, 0x0bbe, @@ -12503,6 +12709,7 @@ CR_Grapheme_Extend[] = { 335, 0x0d4d, 0x0d4d, 0x0d57, 0x0d57, 0x0d62, 0x0d63, +0x0d81, 0x0d81, 0x0dca, 0x0dca, 0x0dcf, 0x0dcf, 0x0dd2, 0x0dd4, @@ -12561,7 +12768,7 @@ CR_Grapheme_Extend[] = { 335, 0x1a65, 0x1a6c, 0x1a73, 0x1a7c, 0x1a7f, 0x1a7f, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b03, 0x1b34, 0x1b3a, 0x1b3c, 0x1b3c, @@ -12600,6 +12807,7 @@ CR_Grapheme_Extend[] = { 335, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa825, 0xa826, +0xa82c, 0xa82c, 0xa8c4, 0xa8c5, 0xa8e0, 0xa8f1, 0xa8ff, 0xa8ff, @@ -12640,6 +12848,7 @@ CR_Grapheme_Extend[] = { 335, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x10d24, 0x10d27, +0x10eab, 0x10eac, 0x10f46, 0x10f50, 0x11001, 0x11001, 0x11038, 0x11046, @@ -12653,6 +12862,7 @@ CR_Grapheme_Extend[] = { 335, 0x11180, 0x11181, 0x111b6, 0x111be, 0x111c9, 0x111cc, +0x111cf, 0x111cf, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, @@ -12693,6 +12903,10 @@ CR_Grapheme_Extend[] = { 335, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x11930, 0x11930, +0x1193b, 0x1193c, +0x1193e, 0x1193e, +0x11943, 0x11943, 0x119d4, 0x119d7, 0x119da, 0x119db, 0x119e0, 0x119e0, @@ -12724,6 +12938,7 @@ CR_Grapheme_Extend[] = { 335, 0x16b30, 0x16b36, 0x16f4f, 0x16f4f, 0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d165, 0x1d167, 0x1d169, @@ -12753,7 +12968,7 @@ CR_Grapheme_Extend[] = { 335, /* PROPERTY: 'Grapheme_Link': Derived Property */ static const OnigCodePoint -CR_Grapheme_Link[] = { 52, +CR_Grapheme_Link[] = { 54, 0x094d, 0x094d, 0x09cd, 0x09cd, 0x0a4d, 0x0a4d, @@ -12778,6 +12993,7 @@ CR_Grapheme_Link[] = { 52, 0x1bf2, 0x1bf3, 0x2d7f, 0x2d7f, 0xa806, 0xa806, +0xa82c, 0xa82c, 0xa8c4, 0xa8c4, 0xa953, 0xa953, 0xa9c0, 0xa9c0, @@ -12799,6 +13015,7 @@ CR_Grapheme_Link[] = { 52, 0x116b6, 0x116b6, 0x1172b, 0x1172b, 0x11839, 0x11839, +0x1193d, 0x1193e, 0x119e0, 0x119e0, 0x11a34, 0x11a34, 0x11a47, 0x11a47, @@ -12902,7 +13119,7 @@ CR_Gurmukhi[] = { 16, /* PROPERTY: 'Han': Script */ static const OnigCodePoint -CR_Han[] = { 17, +CR_Han[] = { 19, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -12910,16 +13127,18 @@ CR_Han[] = { 17, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303b, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xf900, 0xfa6d, 0xfa70, 0xfad9, -0x20000, 0x2a6d6, +0x16ff0, 0x16ff1, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Han */ /* PROPERTY: 'Hangul': Script */ @@ -13027,7 +13246,7 @@ CR_IDS_Trinary_Operator[] = { 1, /* PROPERTY: 'ID_Continue': Derived Property */ static const OnigCodePoint -CR_ID_Continue[] = { 713, +CR_ID_Continue[] = { 730, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -13080,7 +13299,7 @@ CR_ID_Continue[] = { 713, 0x0840, 0x085b, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x08e1, 0x08e3, 0x0963, 0x0966, 0x096f, @@ -13140,7 +13359,7 @@ CR_ID_Continue[] = { 713, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b6f, @@ -13186,8 +13405,7 @@ CR_ID_Continue[] = { 713, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, @@ -13196,7 +13414,7 @@ CR_ID_Continue[] = { 713, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -13297,6 +13515,7 @@ CR_ID_Continue[] = { 713, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abd, +0x1abf, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b59, 0x1b6b, 0x1b73, @@ -13379,10 +13598,10 @@ CR_ID_Continue[] = { 713, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -13393,8 +13612,9 @@ CR_ID_Continue[] = { 713, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa827, +0xa7c2, 0xa7ca, +0xa7f5, 0xa827, +0xa82c, 0xa82c, 0xa840, 0xa873, 0xa880, 0xa8c5, 0xa8d0, 0xa8d9, @@ -13420,7 +13640,7 @@ CR_ID_Continue[] = { 713, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -13519,9 +13739,13 @@ CR_ID_Continue[] = { 713, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, @@ -13530,12 +13754,12 @@ CR_ID_Continue[] = { 713, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111c9, 0x111cc, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11237, @@ -13564,7 +13788,7 @@ CR_ID_Continue[] = { 713, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145f, +0x1145e, 0x11461, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -13581,7 +13805,14 @@ CR_ID_Continue[] = { 713, 0x11730, 0x11739, 0x11800, 0x1183a, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e1, @@ -13612,6 +13843,7 @@ CR_ID_Continue[] = { 713, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -13632,9 +13864,11 @@ CR_ID_Continue[] = { 713, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x16fe3, 0x16fe3, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -13734,18 +13968,20 @@ CR_ID_Continue[] = { 713, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0100, 0xe01ef, }; /* END of CR_ID_Continue */ /* PROPERTY: 'ID_Start': Derived Property */ static const OnigCodePoint -CR_ID_Start[] = { 609, +CR_ID_Start[] = { 622, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -13796,7 +14032,7 @@ CR_ID_Start[] = { 609, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, @@ -13872,7 +14108,7 @@ CR_ID_Start[] = { 609, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0cf1, 0x0cf2, -0x0d05, 0x0d0c, +0x0d04, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d3d, @@ -14041,10 +14277,10 @@ CR_ID_Start[] = { 609, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -14056,8 +14292,8 @@ CR_ID_Start[] = { 609, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa801, +0xa7c2, 0xa7ca, +0xa7f5, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, @@ -14094,7 +14330,7 @@ CR_ID_Start[] = { 609, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -14179,15 +14415,19 @@ CR_ID_Start[] = { 609, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d23, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11144, 0x11144, +0x11147, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, @@ -14213,7 +14453,7 @@ CR_ID_Start[] = { 609, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -14226,7 +14466,13 @@ CR_ID_Start[] = { 609, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, 0x119a0, 0x119a7, 0x119aa, 0x119d0, 0x119e1, 0x119e1, @@ -14251,6 +14497,7 @@ CR_ID_Start[] = { 609, 0x11d6a, 0x11d89, 0x11d98, 0x11d98, 0x11ee0, 0x11ef2, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -14270,7 +14517,8 @@ CR_ID_Start[] = { 609, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -14349,33 +14597,37 @@ CR_ID_Start[] = { 609, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_ID_Start */ /* PROPERTY: 'Ideographic': Binary Property */ static const OnigCodePoint -CR_Ideographic[] = { 16, +CR_Ideographic[] = { 19, 0x3006, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xf900, 0xfa6d, 0xfa70, 0xfad9, +0x16fe4, 0x16fe4, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b170, 0x1b2fb, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Ideographic */ /* PROPERTY: 'Imperial_Aramaic': Script */ @@ -14393,7 +14645,7 @@ CR_Inherited[] = { 28, 0x064b, 0x0655, 0x0670, 0x0670, 0x0951, 0x0954, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1cd0, 0x1cd2, 0x1cd4, 0x1ce0, 0x1ce2, 0x1ce8, @@ -14505,6 +14757,13 @@ CR_Kharoshthi[] = { 8, 0x10a50, 0x10a58, }; /* END of CR_Kharoshthi */ +/* PROPERTY: 'Khitan_Small_Script': Script */ +static const OnigCodePoint +CR_Khitan_Small_Script[] = { 2, +0x16fe4, 0x16fe4, +0x18b00, 0x18cd5, +}; /* END of CR_Khitan_Small_Script */ + /* PROPERTY: 'Khmer': Script */ static const OnigCodePoint CR_Khmer[] = { 4, @@ -14530,7 +14789,7 @@ CR_Khudawadi[] = { 2, /* PROPERTY: 'L': Major Category */ static const OnigCodePoint -CR_L[] = { 609, +CR_L[] = { 622, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -14581,7 +14840,7 @@ CR_L[] = { 609, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, @@ -14657,7 +14916,7 @@ CR_L[] = { 609, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0cf1, 0x0cf2, -0x0d05, 0x0d0c, +0x0d04, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d3d, @@ -14828,10 +15087,10 @@ CR_L[] = { 609, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -14843,8 +15102,8 @@ CR_L[] = { 609, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa801, +0xa7c2, 0xa7ca, +0xa7f5, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, @@ -14881,7 +15140,7 @@ CR_L[] = { 609, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -14965,15 +15224,19 @@ CR_L[] = { 609, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d23, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11144, 0x11144, +0x11147, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, @@ -14999,7 +15262,7 @@ CR_L[] = { 609, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -15012,7 +15275,13 @@ CR_L[] = { 609, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, 0x119a0, 0x119a7, 0x119aa, 0x119d0, 0x119e1, 0x119e1, @@ -15037,6 +15306,7 @@ CR_L[] = { 609, 0x11d6a, 0x11d89, 0x11d98, 0x11d98, 0x11ee0, 0x11ef2, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12480, 0x12543, 0x13000, 0x1342e, @@ -15055,7 +15325,8 @@ CR_L[] = { 609, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -15134,17 +15405,18 @@ CR_L[] = { 609, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_L */ /* PROPERTY: 'LC': General Category */ static const OnigCodePoint -CR_LC[] = { 131, +CR_LC[] = { 132, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, @@ -15229,10 +15501,11 @@ CR_LC[] = { 131, 0xa771, 0xa787, 0xa78b, 0xa78e, 0xa790, 0xa7bf, -0xa7c2, 0xa7c6, +0xa7c2, 0xa7ca, +0xa7f5, 0xa7f6, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, -0xab60, 0xab67, +0xab60, 0xab68, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -15321,11 +15594,11 @@ CR_Latin[] = { 32, 0x2c60, 0x2c7f, 0xa722, 0xa787, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa7ff, +0xa7c2, 0xa7ca, +0xa7f5, 0xa7ff, 0xab30, 0xab5a, 0xab5c, 0xab64, -0xab66, 0xab67, +0xab66, 0xab69, 0xfb00, 0xfb06, 0xff21, 0xff3a, 0xff41, 0xff5a, @@ -15371,13 +15644,14 @@ CR_Linear_B[] = { 7, /* PROPERTY: 'Lisu': Script */ static const OnigCodePoint -CR_Lisu[] = { 1, +CR_Lisu[] = { 2, 0xa4d0, 0xa4ff, +0x11fb0, 0x11fb0, }; /* END of CR_Lisu */ /* PROPERTY: 'Ll': General Category */ static const OnigCodePoint -CR_Ll[] = { 642, +CR_Ll[] = { 645, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -15979,9 +16253,12 @@ CR_Ll[] = { 642, 0xa7bd, 0xa7bd, 0xa7bf, 0xa7bf, 0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7f6, 0xa7f6, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, -0xab60, 0xab67, +0xab60, 0xab68, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -16024,7 +16301,7 @@ CR_Ll[] = { 642, /* PROPERTY: 'Lm': General Category */ static const OnigCodePoint -CR_Lm[] = { 60, +CR_Lm[] = { 61, 0x02b0, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, @@ -16077,6 +16354,7 @@ CR_Lm[] = { 60, 0xaadd, 0xaadd, 0xaaf3, 0xaaf4, 0xab5c, 0xab5f, +0xab69, 0xab69, 0xff70, 0xff70, 0xff9e, 0xff9f, 0x16b40, 0x16b43, @@ -16089,7 +16367,7 @@ CR_Lm[] = { 60, /* PROPERTY: 'Lo': General Category */ static const OnigCodePoint -CR_Lo[] = { 476, +CR_Lo[] = { 489, 0x00aa, 0x00aa, 0x00ba, 0x00ba, 0x01bb, 0x01bb, @@ -16114,7 +16392,7 @@ CR_Lo[] = { 476, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, @@ -16190,7 +16468,7 @@ CR_Lo[] = { 476, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0cf1, 0x0cf2, -0x0d05, 0x0d0c, +0x0d04, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d3d, @@ -16303,10 +16581,10 @@ CR_Lo[] = { 476, 0x30ff, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa014, 0xa016, 0xa48c, 0xa4d0, 0xa4f7, @@ -16430,15 +16708,19 @@ CR_Lo[] = { 476, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x10d00, 0x10d23, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11144, 0x11144, +0x11147, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, @@ -16464,7 +16746,7 @@ CR_Lo[] = { 476, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -16476,7 +16758,13 @@ CR_Lo[] = { 476, 0x116b8, 0x116b8, 0x11700, 0x1171a, 0x11800, 0x1182b, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, 0x119a0, 0x119a7, 0x119aa, 0x119d0, 0x119e1, 0x119e1, @@ -16501,6 +16789,7 @@ CR_Lo[] = { 476, 0x11d6a, 0x11d89, 0x11d98, 0x11d98, 0x11ee0, 0x11ef2, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12480, 0x12543, 0x13000, 0x1342e, @@ -16514,7 +16803,8 @@ CR_Lo[] = { 476, 0x16f00, 0x16f4a, 0x16f50, 0x16f50, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -16560,12 +16850,13 @@ CR_Lo[] = { 476, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Lo */ /* PROPERTY: 'Logical_Order_Exception': Binary Property */ @@ -16600,7 +16891,7 @@ CR_Lt[] = { 10, /* PROPERTY: 'Lu': General Category */ static const OnigCodePoint -CR_Lu[] = { 636, +CR_Lu[] = { 638, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -17198,7 +17489,9 @@ CR_Lu[] = { 636, 0xa7bc, 0xa7bc, 0xa7be, 0xa7be, 0xa7c2, 0xa7c2, -0xa7c4, 0xa7c6, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7f5, 0xa7f5, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -17254,7 +17547,7 @@ CR_Lydian[] = { 2, /* PROPERTY: 'M': Major Category */ static const OnigCodePoint -CR_M[] = { 280, +CR_M[] = { 290, 0x0300, 0x036f, 0x0483, 0x0489, 0x0591, 0x05bd, @@ -17313,7 +17606,7 @@ CR_M[] = { 280, 0x0b3e, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bbe, 0x0bc2, @@ -17340,7 +17633,7 @@ CR_M[] = { 280, 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d62, 0x0d63, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, @@ -17387,7 +17680,7 @@ CR_M[] = { 280, 0x1a55, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a7f, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b04, 0x1b34, 0x1b44, 0x1b6b, 0x1b73, @@ -17416,6 +17709,7 @@ CR_M[] = { 280, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa823, 0xa827, +0xa82c, 0xa82c, 0xa880, 0xa881, 0xa8b4, 0xa8c5, 0xa8e0, 0xa8f1, @@ -17451,6 +17745,7 @@ CR_M[] = { 280, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x10d24, 0x10d27, +0x10eab, 0x10eac, 0x10f46, 0x10f50, 0x11000, 0x11002, 0x11038, 0x11046, @@ -17463,6 +17758,7 @@ CR_M[] = { 280, 0x11180, 0x11182, 0x111b3, 0x111c0, 0x111c9, 0x111cc, +0x111ce, 0x111cf, 0x1122c, 0x11237, 0x1123e, 0x1123e, 0x112df, 0x112ea, @@ -17485,6 +17781,11 @@ CR_M[] = { 280, 0x116ab, 0x116b7, 0x1171d, 0x1172b, 0x1182c, 0x1183a, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193e, +0x11940, 0x11940, +0x11942, 0x11943, 0x119d1, 0x119d7, 0x119da, 0x119e0, 0x119e4, 0x119e4, @@ -17512,6 +17813,8 @@ CR_M[] = { 280, 0x16f4f, 0x16f4f, 0x16f51, 0x16f87, 0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, +0x16ff0, 0x16ff1, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d169, 0x1d16d, 0x1d172, @@ -17551,9 +17854,8 @@ CR_Makasar[] = { 1, /* PROPERTY: 'Malayalam': Script */ static const OnigCodePoint -CR_Malayalam[] = { 8, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +CR_Malayalam[] = { 7, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, @@ -17741,7 +18043,7 @@ CR_Math[] = { 138, /* PROPERTY: 'Mc': General Category */ static const OnigCodePoint -CR_Mc[] = { 168, +CR_Mc[] = { 175, 0x0903, 0x0903, 0x093b, 0x093b, 0x093e, 0x0940, @@ -17861,6 +18163,7 @@ CR_Mc[] = { 168, 0x11182, 0x11182, 0x111b3, 0x111b5, 0x111bf, 0x111c0, +0x111ce, 0x111ce, 0x1122c, 0x1122e, 0x11232, 0x11233, 0x11235, 0x11235, @@ -17892,6 +18195,11 @@ CR_Mc[] = { 168, 0x11726, 0x11726, 0x1182c, 0x1182e, 0x11838, 0x11838, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193d, 0x1193d, +0x11940, 0x11940, +0x11942, 0x11942, 0x119d1, 0x119d3, 0x119dc, 0x119df, 0x119e4, 0x119e4, @@ -17908,6 +18216,7 @@ CR_Mc[] = { 168, 0x11d96, 0x11d96, 0x11ef5, 0x11ef6, 0x16f51, 0x16f87, +0x16ff0, 0x16ff1, 0x1d165, 0x1d166, 0x1d16d, 0x1d172, }; /* END of CR_Mc */ @@ -17967,7 +18276,7 @@ CR_Miao[] = { 3, /* PROPERTY: 'Mn': General Category */ static const OnigCodePoint -CR_Mn[] = { 318, +CR_Mn[] = { 327, 0x0300, 0x036f, 0x0483, 0x0487, 0x0591, 0x05bd, @@ -18026,7 +18335,7 @@ CR_Mn[] = { 318, 0x0b3f, 0x0b3f, 0x0b41, 0x0b44, 0x0b4d, 0x0b4d, -0x0b56, 0x0b56, +0x0b55, 0x0b56, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bc0, 0x0bc0, @@ -18049,6 +18358,7 @@ CR_Mn[] = { 318, 0x0d41, 0x0d44, 0x0d4d, 0x0d4d, 0x0d62, 0x0d63, +0x0d81, 0x0d81, 0x0dca, 0x0dca, 0x0dd2, 0x0dd4, 0x0dd6, 0x0dd6, @@ -18106,6 +18416,7 @@ CR_Mn[] = { 318, 0x1a73, 0x1a7c, 0x1a7f, 0x1a7f, 0x1ab0, 0x1abd, +0x1abf, 0x1ac0, 0x1b00, 0x1b03, 0x1b34, 0x1b34, 0x1b36, 0x1b3a, @@ -18146,6 +18457,7 @@ CR_Mn[] = { 318, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa825, 0xa826, +0xa82c, 0xa82c, 0xa8c4, 0xa8c5, 0xa8e0, 0xa8f1, 0xa8ff, 0xa8ff, @@ -18185,6 +18497,7 @@ CR_Mn[] = { 318, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x10d24, 0x10d27, +0x10eab, 0x10eac, 0x10f46, 0x10f50, 0x11001, 0x11001, 0x11038, 0x11046, @@ -18198,6 +18511,7 @@ CR_Mn[] = { 318, 0x11180, 0x11181, 0x111b6, 0x111be, 0x111c9, 0x111cc, +0x111cf, 0x111cf, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, @@ -18233,6 +18547,9 @@ CR_Mn[] = { 318, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x1193b, 0x1193c, +0x1193e, 0x1193e, +0x11943, 0x11943, 0x119d4, 0x119d7, 0x119da, 0x119db, 0x119e0, 0x119e0, @@ -18264,6 +18581,7 @@ CR_Mn[] = { 318, 0x16b30, 0x16b36, 0x16f4f, 0x16f4f, 0x16f8f, 0x16f92, +0x16fe4, 0x16fe4, 0x1bc9d, 0x1bc9e, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, @@ -18335,7 +18653,7 @@ CR_Myanmar[] = { 3, /* PROPERTY: 'N': Major Category */ static const OnigCodePoint -CR_N[] = { 130, +CR_N[] = { 133, 0x0030, 0x0039, 0x00b2, 0x00b3, 0x00b9, 0x00b9, @@ -18432,6 +18750,7 @@ CR_N[] = { 130, 0x10e60, 0x10e7e, 0x10f1d, 0x10f26, 0x10f51, 0x10f54, +0x10fc5, 0x10fcb, 0x11052, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, @@ -18444,6 +18763,7 @@ CR_N[] = { 130, 0x116c0, 0x116c9, 0x11730, 0x1173b, 0x118e0, 0x118f2, +0x11950, 0x11959, 0x11c50, 0x11c6c, 0x11d50, 0x11d59, 0x11da0, 0x11da9, @@ -18466,6 +18786,7 @@ CR_N[] = { 130, 0x1ed01, 0x1ed2d, 0x1ed2f, 0x1ed3d, 0x1f100, 0x1f10c, +0x1fbf0, 0x1fbf9, }; /* END of CR_N */ /* PROPERTY: 'Nabataean': Script */ @@ -18497,10 +18818,9 @@ CR_New_Tai_Lue[] = { 4, /* PROPERTY: 'Newa': Script */ static const OnigCodePoint -CR_Newa[] = { 3, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +CR_Newa[] = { 2, +0x11400, 0x1145b, +0x1145d, 0x11461, }; /* END of CR_Newa */ /* PROPERTY: 'Nko': Script */ @@ -18529,7 +18849,7 @@ CR_Nl[] = { 12, /* PROPERTY: 'No': General Category */ static const OnigCodePoint -CR_No[] = { 70, +CR_No[] = { 71, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, @@ -18583,6 +18903,7 @@ CR_No[] = { 70, 0x10e60, 0x10e7e, 0x10f1d, 0x10f26, 0x10f51, 0x10f54, +0x10fc5, 0x10fcb, 0x11052, 0x11065, 0x111e1, 0x111f4, 0x1173a, 0x1173b, @@ -18718,7 +19039,7 @@ CR_Oriya[] = { 14, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -18740,7 +19061,7 @@ CR_Osmanya[] = { 2, /* PROPERTY: 'Other_Alphabetic': Binary Property */ static const OnigCodePoint -CR_Other_Alphabetic[] = { 221, +CR_Other_Alphabetic[] = { 230, 0x0345, 0x0345, 0x05b0, 0x05bd, 0x05bf, 0x05bf, @@ -18818,7 +19139,7 @@ CR_Other_Alphabetic[] = { 221, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d62, 0x0d63, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, @@ -18856,6 +19177,7 @@ CR_Other_Alphabetic[] = { 221, 0x1a17, 0x1a1b, 0x1a55, 0x1a5e, 0x1a61, 0x1a74, +0x1abf, 0x1ac0, 0x1b00, 0x1b04, 0x1b35, 0x1b43, 0x1b80, 0x1b82, @@ -18897,6 +19219,7 @@ CR_Other_Alphabetic[] = { 221, 0x10a05, 0x10a06, 0x10a0c, 0x10a0f, 0x10d24, 0x10d27, +0x10eab, 0x10eac, 0x11000, 0x11002, 0x11038, 0x11045, 0x11082, 0x11082, @@ -18906,6 +19229,7 @@ CR_Other_Alphabetic[] = { 221, 0x11145, 0x11146, 0x11180, 0x11182, 0x111b3, 0x111bf, +0x111ce, 0x111cf, 0x1122c, 0x11234, 0x11237, 0x11237, 0x1123e, 0x1123e, @@ -18927,6 +19251,11 @@ CR_Other_Alphabetic[] = { 221, 0x116ab, 0x116b5, 0x1171d, 0x1172a, 0x1182c, 0x11838, +0x11930, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x11940, 0x11940, +0x11942, 0x11942, 0x119d1, 0x119d7, 0x119da, 0x119df, 0x119e4, 0x119e4, @@ -18952,6 +19281,7 @@ CR_Other_Alphabetic[] = { 221, 0x16f4f, 0x16f4f, 0x16f51, 0x16f87, 0x16f8f, 0x16f92, +0x16ff0, 0x16ff1, 0x1bc9e, 0x1bc9e, 0x1e000, 0x1e006, 0x1e008, 0x1e018, @@ -18982,7 +19312,7 @@ CR_Other_Default_Ignorable_Code_Point[] = { 11, /* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ static const OnigCodePoint -CR_Other_Grapheme_Extend[] = { 24, +CR_Other_Grapheme_Extend[] = { 25, 0x09be, 0x09be, 0x09d7, 0x09d7, 0x0b3e, 0x0b3e, @@ -19004,6 +19334,7 @@ CR_Other_Grapheme_Extend[] = { 24, 0x114b0, 0x114b0, 0x114bd, 0x114bd, 0x115af, 0x115af, +0x11930, 0x11930, 0x1d165, 0x1d165, 0x1d16e, 0x1d172, 0xe0020, 0xe007f, @@ -19282,7 +19613,7 @@ CR_Pc[] = { 6, /* PROPERTY: 'Pd': General Category */ static const OnigCodePoint -CR_Pd[] = { 17, +CR_Pd[] = { 18, 0x002d, 0x002d, 0x058a, 0x058a, 0x05be, 0x05be, @@ -19300,6 +19631,7 @@ CR_Pd[] = { 17, 0xfe58, 0xfe58, 0xfe63, 0xfe63, 0xff0d, 0xff0d, +0x10ead, 0x10ead, }; /* END of CR_Pd */ /* PROPERTY: 'Pe': General Category */ @@ -19425,7 +19757,7 @@ CR_Pi[] = { 11, /* PROPERTY: 'Po': General Category */ static const OnigCodePoint -CR_Po[] = { 179, +CR_Po[] = { 181, 0x0021, 0x0023, 0x0025, 0x0027, 0x002a, 0x002a, @@ -19514,6 +19846,7 @@ CR_Po[] = { 179, 0x2e3c, 0x2e3f, 0x2e41, 0x2e41, 0x2e43, 0x2e4f, +0x2e52, 0x2e52, 0x3001, 0x3003, 0x303d, 0x303d, 0x30fb, 0x30fb, @@ -19579,7 +19912,7 @@ CR_Po[] = { 179, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x1144b, 0x1144f, -0x1145b, 0x1145b, +0x1145a, 0x1145b, 0x1145d, 0x1145d, 0x114c6, 0x114c6, 0x115c1, 0x115d7, @@ -19587,6 +19920,7 @@ CR_Po[] = { 179, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x11944, 0x11946, 0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, @@ -19754,7 +20088,7 @@ CR_Runic[] = { 2, /* PROPERTY: 'S': Major Category */ static const OnigCodePoint -CR_S[] = { 226, +CR_S[] = { 229, 0x0024, 0x0024, 0x002b, 0x002b, 0x003c, 0x003e, @@ -19855,8 +20189,9 @@ CR_S[] = { 226, 0x29dc, 0x29fb, 0x29fe, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bff, +0x2b97, 0x2bff, 0x2ce5, 0x2cea, +0x2e50, 0x2e51, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -19885,6 +20220,7 @@ CR_S[] = { 226, 0xa836, 0xa839, 0xaa77, 0xaa79, 0xab5b, 0xab5b, +0xab6a, 0xab6b, 0xfb29, 0xfb29, 0xfbb2, 0xfbc1, 0xfdfc, 0xfdfd, @@ -19904,7 +20240,7 @@ CR_S[] = { 226, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, @@ -19951,16 +20287,15 @@ CR_S[] = { 226, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f10d, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -19969,18 +20304,20 @@ CR_S[] = { 226, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, }; /* END of CR_S */ /* PROPERTY: 'Samaritan': Script */ @@ -20025,7 +20362,7 @@ CR_Sc[] = { 21, /* PROPERTY: 'Sentence_Terminal': Binary Property */ static const OnigCodePoint -CR_Sentence_Terminal[] = { 74, +CR_Sentence_Terminal[] = { 76, 0x0021, 0x0021, 0x002e, 0x002e, 0x003f, 0x003f, @@ -20089,6 +20426,8 @@ CR_Sentence_Terminal[] = { 74, 0x115c9, 0x115d7, 0x11641, 0x11642, 0x1173c, 0x1173e, +0x11944, 0x11944, +0x11946, 0x11946, 0x11a42, 0x11a43, 0x11a9b, 0x11a9c, 0x11c41, 0x11c42, @@ -20104,9 +20443,8 @@ CR_Sentence_Terminal[] = { 74, /* PROPERTY: 'Sharada': Script */ static const OnigCodePoint -CR_Sharada[] = { 2, -0x11180, 0x111cd, -0x111d0, 0x111df, +CR_Sharada[] = { 1, +0x11180, 0x111df, }; /* END of CR_Sharada */ /* PROPERTY: 'Shavian': Script */ @@ -20133,7 +20471,7 @@ CR_SignWriting[] = { 3, /* PROPERTY: 'Sinhala': Script */ static const OnigCodePoint CR_Sinhala[] = { 13, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -20150,7 +20488,7 @@ CR_Sinhala[] = { 13, /* PROPERTY: 'Sk': General Category */ static const OnigCodePoint -CR_Sk[] = { 29, +CR_Sk[] = { 30, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, @@ -20175,6 +20513,7 @@ CR_Sk[] = { 29, 0xa720, 0xa721, 0xa789, 0xa78a, 0xab5b, 0xab5b, +0xab6a, 0xab6b, 0xfbb2, 0xfbc1, 0xff3e, 0xff3e, 0xff40, 0xff40, @@ -20253,7 +20592,7 @@ CR_Sm[] = { 64, /* PROPERTY: 'So': General Category */ static const OnigCodePoint -CR_So[] = { 180, +CR_So[] = { 182, 0x00a6, 0x00a6, 0x00a9, 0x00a9, 0x00ae, 0x00ae, @@ -20334,8 +20673,9 @@ CR_So[] = { 180, 0x2b45, 0x2b46, 0x2b4d, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bff, +0x2b97, 0x2bff, 0x2ce5, 0x2cea, +0x2e50, 0x2e51, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -20368,7 +20708,7 @@ CR_So[] = { 180, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, @@ -20403,17 +20743,16 @@ CR_So[] = { 180, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f10d, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, 0x1f300, 0x1f3fa, -0x1f400, 0x1f6d5, +0x1f400, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -20422,18 +20761,20 @@ CR_So[] = { 180, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, }; /* END of CR_So */ /* PROPERTY: 'Soft_Dotted': Binary Property */ @@ -20501,7 +20842,7 @@ CR_Sundanese[] = { 2, /* PROPERTY: 'Syloti_Nagri': Script */ static const OnigCodePoint CR_Syloti_Nagri[] = { 1, -0xa800, 0xa82b, +0xa800, 0xa82c, }; /* END of CR_Syloti_Nagri */ /* PROPERTY: 'Syriac': Script */ @@ -20584,10 +20925,11 @@ CR_Tamil[] = { 18, /* PROPERTY: 'Tangut': Script */ static const OnigCodePoint -CR_Tangut[] = { 3, +CR_Tangut[] = { 4, 0x16fe0, 0x16fe0, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18aff, +0x18d00, 0x18d08, }; /* END of CR_Tangut */ /* PROPERTY: 'Telugu': Script */ @@ -20609,7 +20951,7 @@ CR_Telugu[] = { 12, /* PROPERTY: 'Terminal_Punctuation': Binary Property */ static const OnigCodePoint -CR_Terminal_Punctuation[] = { 102, +CR_Terminal_Punctuation[] = { 104, 0x0021, 0x0021, 0x002c, 0x002c, 0x002e, 0x002e, @@ -20693,11 +21035,13 @@ CR_Terminal_Punctuation[] = { 102, 0x11238, 0x1123c, 0x112a9, 0x112a9, 0x1144b, 0x1144d, -0x1145b, 0x1145b, +0x1145a, 0x1145b, 0x115c2, 0x115c5, 0x115c9, 0x115d7, 0x11641, 0x11642, 0x1173c, 0x1173e, +0x11944, 0x11944, +0x11946, 0x11946, 0x11a42, 0x11a43, 0x11a9b, 0x11a9c, 0x11aa1, 0x11aa2, @@ -20763,9 +21107,9 @@ CR_Ugaritic[] = { 2, /* PROPERTY: 'Unified_Ideograph': Binary Property */ static const OnigCodePoint -CR_Unified_Ideograph[] = { 14, -0x3400, 0x4db5, -0x4e00, 0x9fef, +CR_Unified_Ideograph[] = { 15, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xfa0e, 0xfa0f, 0xfa11, 0xfa11, 0xfa13, 0xfa14, @@ -20773,16 +21117,17 @@ CR_Unified_Ideograph[] = { 14, 0xfa21, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa29, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, +0x30000, 0x3134a, }; /* END of CR_Unified_Ideograph */ /* PROPERTY: 'Unknown': Script */ static const OnigCodePoint -CR_Unknown[] = { 664, +CR_Unknown[] = { 675, 0x0378, 0x0379, 0x0380, 0x0383, 0x038b, 0x038b, @@ -20806,7 +21151,7 @@ CR_Unknown[] = { 664, 0x085f, 0x085f, 0x086b, 0x089f, 0x08b5, 0x08b5, -0x08be, 0x08d2, +0x08c8, 0x08d2, 0x0984, 0x0984, 0x098d, 0x098e, 0x0991, 0x0992, @@ -20860,7 +21205,7 @@ CR_Unknown[] = { 664, 0x0b3a, 0x0b3b, 0x0b45, 0x0b46, 0x0b49, 0x0b4a, -0x0b4e, 0x0b55, +0x0b4e, 0x0b54, 0x0b58, 0x0b5b, 0x0b5e, 0x0b5e, 0x0b64, 0x0b65, @@ -20905,14 +21250,13 @@ CR_Unknown[] = { 664, 0x0ce4, 0x0ce5, 0x0cf0, 0x0cf0, 0x0cf3, 0x0cff, -0x0d04, 0x0d04, 0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d45, 0x0d45, 0x0d49, 0x0d49, 0x0d50, 0x0d53, 0x0d64, 0x0d65, -0x0d80, 0x0d81, +0x0d80, 0x0d80, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, @@ -20999,7 +21343,7 @@ CR_Unknown[] = { 664, 0x1a8a, 0x1a8f, 0x1a9a, 0x1a9f, 0x1aae, 0x1aaf, -0x1abf, 0x1aff, +0x1ac1, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bf4, 0x1bfb, @@ -21036,7 +21380,7 @@ CR_Unknown[] = { 664, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, -0x2b96, 0x2b97, +0x2b96, 0x2b96, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -21054,7 +21398,7 @@ CR_Unknown[] = { 664, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e50, 0x2e7f, +0x2e53, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -21064,18 +21408,16 @@ CR_Unknown[] = { 664, 0x3100, 0x3104, 0x3130, 0x3130, 0x318f, 0x318f, -0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x4db6, 0x4dbf, -0x9ff0, 0x9fff, +0x9ffd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, 0xa7c0, 0xa7c1, -0xa7c7, 0xa7f6, -0xa82c, 0xa82f, +0xa7cb, 0xa7f4, +0xa82d, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c6, 0xa8cd, @@ -21095,7 +21437,7 @@ CR_Unknown[] = { 664, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab68, 0xab6f, +0xab6c, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -21140,7 +21482,7 @@ CR_Unknown[] = { 664, 0x10103, 0x10106, 0x10134, 0x10136, 0x1018f, 0x1018f, -0x1019c, 0x1019f, +0x1019d, 0x1019f, 0x101a1, 0x101cf, 0x101fe, 0x1027f, 0x1029d, 0x1029f, @@ -21199,9 +21541,13 @@ CR_Unknown[] = { 664, 0x10cf3, 0x10cf9, 0x10d28, 0x10d2f, 0x10d3a, 0x10e5f, -0x10e7f, 0x10eff, +0x10e7f, 0x10e7f, +0x10eaa, 0x10eaa, +0x10eae, 0x10eaf, +0x10eb2, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fdf, +0x10f5a, 0x10faf, +0x10fcc, 0x10fdf, 0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, @@ -21210,9 +21556,8 @@ CR_Unknown[] = { 664, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, -0x11147, 0x1114f, +0x11148, 0x1114f, 0x11177, 0x1117f, -0x111ce, 0x111cf, 0x111e0, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, @@ -21239,9 +21584,8 @@ CR_Unknown[] = { 664, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x113ff, -0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x11460, 0x1147f, +0x11462, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -21256,7 +21600,14 @@ CR_Unknown[] = { 664, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x1199f, +0x11907, 0x11908, +0x1190a, 0x1190b, +0x11914, 0x11914, +0x11917, 0x11917, +0x11936, 0x11936, +0x11939, 0x1193a, +0x11947, 0x1194f, +0x1195a, 0x1199f, 0x119a8, 0x119a9, 0x119d8, 0x119d9, 0x119e5, 0x119ff, @@ -21283,7 +21634,8 @@ CR_Unknown[] = { 664, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fbf, +0x11ef9, 0x11faf, +0x11fb1, 0x11fbf, 0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, @@ -21307,9 +21659,11 @@ CR_Unknown[] = { 664, 0x16f4b, 0x16f4e, 0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe4, 0x16fff, +0x16fe5, 0x16fef, +0x16ff2, 0x16fff, 0x187f8, 0x187ff, -0x18af3, 0x1afff, +0x18cd6, 0x18cff, +0x18d09, 0x1afff, 0x1b11f, 0x1b14f, 0x1b153, 0x1b163, 0x1b168, 0x1b16f, @@ -21407,17 +21761,15 @@ CR_Unknown[] = { 664, 0x1f0c0, 0x1f0c0, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, -0x1f10d, 0x1f10f, -0x1f16d, 0x1f16f, -0x1f1ad, 0x1f1e5, +0x1f1ae, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d6, 0x1f6df, +0x1f6d8, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fb, 0x1f6ff, +0x1f6fd, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d9, 0x1f7df, 0x1f7ec, 0x1f7ff, @@ -21425,25 +21777,29 @@ CR_Unknown[] = { 664, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, -0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90c, -0x1f972, 0x1f972, -0x1f977, 0x1f979, -0x1f9a3, 0x1f9a4, -0x1f9ab, 0x1f9ad, -0x1f9cb, 0x1f9cc, +0x1f8ae, 0x1f8af, +0x1f8b2, 0x1f8ff, +0x1f979, 0x1f979, +0x1f9cc, 0x1f9cc, 0x1fa54, 0x1fa5f, 0x1fa6e, 0x1fa6f, -0x1fa74, 0x1fa77, +0x1fa75, 0x1fa77, 0x1fa7b, 0x1fa7f, -0x1fa83, 0x1fa8f, -0x1fa96, 0x1ffff, -0x2a6d7, 0x2a6ff, +0x1fa87, 0x1fa8f, +0x1faa9, 0x1faaf, +0x1fab7, 0x1fabf, +0x1fac3, 0x1facf, +0x1fad7, 0x1faff, +0x1fb93, 0x1fb93, +0x1fbcb, 0x1fbef, +0x1fbfa, 0x1ffff, +0x2a6de, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, 0x2cea2, 0x2ceaf, 0x2ebe1, 0x2f7ff, -0x2fa1e, 0xe0000, +0x2fa1e, 0x2ffff, +0x3134b, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0x10ffff, @@ -21485,7 +21841,7 @@ CR_Warang_Citi[] = { 2, /* PROPERTY: 'XID_Continue': Derived Property */ static const OnigCodePoint -CR_XID_Continue[] = { 720, +CR_XID_Continue[] = { 737, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -21538,7 +21894,7 @@ CR_XID_Continue[] = { 720, 0x0840, 0x085b, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x08e1, 0x08e3, 0x0963, 0x0966, 0x096f, @@ -21598,7 +21954,7 @@ CR_XID_Continue[] = { 720, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b6f, @@ -21644,8 +22000,7 @@ CR_XID_Continue[] = { 720, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, @@ -21654,7 +22009,7 @@ CR_XID_Continue[] = { 720, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -21755,6 +22110,7 @@ CR_XID_Continue[] = { 720, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abd, +0x1abf, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b59, 0x1b6b, 0x1b73, @@ -21838,10 +22194,10 @@ CR_XID_Continue[] = { 720, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -21852,8 +22208,9 @@ CR_XID_Continue[] = { 720, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa827, +0xa7c2, 0xa7ca, +0xa7f5, 0xa827, +0xa82c, 0xa82c, 0xa840, 0xa873, 0xa880, 0xa8c5, 0xa8d0, 0xa8d9, @@ -21879,7 +22236,7 @@ CR_XID_Continue[] = { 720, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -21984,9 +22341,13 @@ CR_XID_Continue[] = { 720, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, @@ -21995,12 +22356,12 @@ CR_XID_Continue[] = { 720, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111c9, 0x111cc, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11237, @@ -22029,7 +22390,7 @@ CR_XID_Continue[] = { 720, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145f, +0x1145e, 0x11461, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -22046,7 +22407,14 @@ CR_XID_Continue[] = { 720, 0x11730, 0x11739, 0x11800, 0x1183a, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e1, @@ -22077,6 +22445,7 @@ CR_XID_Continue[] = { 720, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -22097,9 +22466,11 @@ CR_XID_Continue[] = { 720, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x16fe3, 0x16fe3, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -22199,18 +22570,20 @@ CR_XID_Continue[] = { 720, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0100, 0xe01ef, }; /* END of CR_XID_Continue */ /* PROPERTY: 'XID_Start': Derived Property */ static const OnigCodePoint -CR_XID_Start[] = { 616, +CR_XID_Start[] = { 629, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -22261,7 +22634,7 @@ CR_XID_Start[] = { 616, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, @@ -22337,7 +22710,7 @@ CR_XID_Start[] = { 616, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0cf1, 0x0cf2, -0x0d05, 0x0d0c, +0x0d04, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d3d, @@ -22506,10 +22879,10 @@ CR_XID_Start[] = { 616, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -22521,8 +22894,8 @@ CR_XID_Start[] = { 616, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa801, +0xa7c2, 0xa7ca, +0xa7f5, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, @@ -22559,7 +22932,7 @@ CR_XID_Start[] = { 616, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -22651,15 +23024,19 @@ CR_XID_Start[] = { 616, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d23, +0x10e80, 0x10ea9, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11144, 0x11144, +0x11147, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, @@ -22685,7 +23062,7 @@ CR_XID_Start[] = { 616, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -22698,7 +23075,13 @@ CR_XID_Start[] = { 616, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x1192f, +0x1193f, 0x1193f, +0x11941, 0x11941, 0x119a0, 0x119a7, 0x119aa, 0x119d0, 0x119e1, 0x119e1, @@ -22723,6 +23106,7 @@ CR_XID_Start[] = { 616, 0x11d6a, 0x11d89, 0x11d98, 0x11d98, 0x11ee0, 0x11ef2, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -22742,7 +23126,8 @@ CR_XID_Start[] = { 616, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -22821,14 +23206,23 @@ CR_XID_Start[] = { 616, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_XID_Start */ +/* PROPERTY: 'Yezidi': Script */ +static const OnigCodePoint +CR_Yezidi[] = { 3, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, +}; /* END of CR_Yezidi */ + /* PROPERTY: 'Yi': Script */ static const OnigCodePoint CR_Yi[] = { 2, @@ -23603,7 +23997,10 @@ CR_In_Yi_Radicals[] = { 1, }; /* END of CR_In_Yi_Radicals */ /* PROPERTY: 'In_Lisu': Block */ -#define CR_In_Lisu CR_Lisu +static const OnigCodePoint +CR_In_Lisu[] = { 1, +0xa4d0, 0xa4ff, +}; /* END of CR_In_Lisu */ /* PROPERTY: 'In_Vai': Block */ static const OnigCodePoint @@ -24079,6 +24476,12 @@ CR_In_Rumi_Numeral_Symbols[] = { 1, 0x10e60, 0x10e7f, }; /* END of CR_In_Rumi_Numeral_Symbols */ +/* PROPERTY: 'In_Yezidi': Block */ +static const OnigCodePoint +CR_In_Yezidi[] = { 1, +0x10e80, 0x10ebf, +}; /* END of CR_In_Yezidi */ + /* PROPERTY: 'In_Old_Sogdian': Block */ static const OnigCodePoint CR_In_Old_Sogdian[] = { 1, @@ -24091,6 +24494,12 @@ CR_In_Sogdian[] = { 1, 0x10f30, 0x10f6f, }; /* END of CR_In_Sogdian */ +/* PROPERTY: 'In_Chorasmian': Block */ +static const OnigCodePoint +CR_In_Chorasmian[] = { 1, +0x10fb0, 0x10fdf, +}; /* END of CR_In_Chorasmian */ + /* PROPERTY: 'In_Elymaic': Block */ static const OnigCodePoint CR_In_Elymaic[] = { 1, @@ -24128,10 +24537,7 @@ CR_In_Mahajani[] = { 1, }; /* END of CR_In_Mahajani */ /* PROPERTY: 'In_Sharada': Block */ -static const OnigCodePoint -CR_In_Sharada[] = { 1, -0x11180, 0x111df, -}; /* END of CR_In_Sharada */ +#define CR_In_Sharada CR_Sharada /* PROPERTY: 'In_Sinhala_Archaic_Numbers': Block */ static const OnigCodePoint @@ -24217,6 +24623,12 @@ CR_In_Warang_Citi[] = { 1, 0x118a0, 0x118ff, }; /* END of CR_In_Warang_Citi */ +/* PROPERTY: 'In_Dives_Akuru': Block */ +static const OnigCodePoint +CR_In_Dives_Akuru[] = { 1, +0x11900, 0x1195f, +}; /* END of CR_In_Dives_Akuru */ + /* PROPERTY: 'In_Nandinagari': Block */ static const OnigCodePoint CR_In_Nandinagari[] = { 1, @@ -24271,6 +24683,12 @@ CR_In_Makasar[] = { 1, 0x11ee0, 0x11eff, }; /* END of CR_In_Makasar */ +/* PROPERTY: 'In_Lisu_Supplement': Block */ +static const OnigCodePoint +CR_In_Lisu_Supplement[] = { 1, +0x11fb0, 0x11fbf, +}; /* END of CR_In_Lisu_Supplement */ + /* PROPERTY: 'In_Tamil_Supplement': Block */ static const OnigCodePoint CR_In_Tamil_Supplement[] = { 1, @@ -24367,6 +24785,18 @@ CR_In_Tangut_Components[] = { 1, 0x18800, 0x18aff, }; /* END of CR_In_Tangut_Components */ +/* PROPERTY: 'In_Khitan_Small_Script': Block */ +static const OnigCodePoint +CR_In_Khitan_Small_Script[] = { 1, +0x18b00, 0x18cff, +}; /* END of CR_In_Khitan_Small_Script */ + +/* PROPERTY: 'In_Tangut_Supplement': Block */ +static const OnigCodePoint +CR_In_Tangut_Supplement[] = { 1, +0x18d00, 0x18d8f, +}; /* END of CR_In_Tangut_Supplement */ + /* PROPERTY: 'In_Kana_Supplement': Block */ static const OnigCodePoint CR_In_Kana_Supplement[] = { 1, @@ -24589,6 +25019,12 @@ CR_In_Symbols_and_Pictographs_Extended_A[] = { 1, 0x1fa70, 0x1faff, }; /* END of CR_In_Symbols_and_Pictographs_Extended_A */ +/* PROPERTY: 'In_Symbols_for_Legacy_Computing': Block */ +static const OnigCodePoint +CR_In_Symbols_for_Legacy_Computing[] = { 1, +0x1fb00, 0x1fbff, +}; /* END of CR_In_Symbols_for_Legacy_Computing */ + /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, @@ -24625,6 +25061,12 @@ CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1, 0x2f800, 0x2fa1f, }; /* END of CR_In_CJK_Compatibility_Ideographs_Supplement */ +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_G': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_G[] = { 1, +0x30000, 0x3134f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_G */ + /* PROPERTY: 'In_Tags': Block */ static const OnigCodePoint CR_In_Tags[] = { 1, @@ -24651,7 +25093,7 @@ CR_In_Supplementary_Private_Use_Area_B[] = { 1, /* PROPERTY: 'In_No_Block': Block */ static const OnigCodePoint -CR_In_No_Block[] = { 53, +CR_In_No_Block[] = { 54, 0x0870, 0x089f, 0x2fe0, 0x2fef, 0x10200, 0x1027f, @@ -24664,20 +25106,20 @@ CR_In_No_Block[] = { 53, 0x10bb0, 0x10bff, 0x10c50, 0x10c7f, 0x10d40, 0x10e5f, -0x10e80, 0x10eff, -0x10f70, 0x10fdf, +0x10ec0, 0x10eff, +0x10f70, 0x10faf, 0x11250, 0x1127f, 0x11380, 0x113ff, 0x114e0, 0x1157f, 0x116d0, 0x116ff, 0x11740, 0x117ff, 0x11850, 0x1189f, -0x11900, 0x1199f, +0x11960, 0x1199f, 0x11ab0, 0x11abf, 0x11b00, 0x11bff, 0x11cc0, 0x11cff, 0x11db0, 0x11edf, -0x11f00, 0x11fbf, +0x11f00, 0x11faf, 0x12550, 0x12fff, 0x13440, 0x143ff, 0x14680, 0x167ff, @@ -24685,7 +25127,7 @@ CR_In_No_Block[] = { 53, 0x16b90, 0x16e3f, 0x16ea0, 0x16eff, 0x16fa0, 0x16fdf, -0x18b00, 0x1afff, +0x18d90, 0x1afff, 0x1b300, 0x1bbff, 0x1bcb0, 0x1cfff, 0x1d250, 0x1d2df, @@ -24699,10 +25141,11 @@ CR_In_No_Block[] = { 53, 0x1ecc0, 0x1ecff, 0x1ed50, 0x1edff, 0x1ef00, 0x1efff, -0x1fb00, 0x1ffff, +0x1fc00, 0x1ffff, 0x2a6e0, 0x2a6ff, 0x2ebf0, 0x2f7ff, -0x2fa20, 0xdffff, +0x2fa20, 0x2ffff, +0x31350, 0xdffff, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, }; /* END of CR_In_No_Block */ @@ -24762,6 +25205,7 @@ const CodeRanges[] = { CR_Changes_When_Titlecased, CR_Changes_When_Uppercased, CR_Cherokee, + CR_Chorasmian, CR_Cn, CR_Co, CR_Common, @@ -24776,6 +25220,7 @@ const CodeRanges[] = { CR_Deseret, CR_Devanagari, CR_Diacritic, + CR_Dives_Akuru, CR_Dogra, CR_Duployan, CR_Egyptian_Hieroglyphs, @@ -24825,6 +25270,7 @@ const CodeRanges[] = { CR_Katakana, CR_Kayah_Li, CR_Kharoshthi, + CR_Khitan_Small_Script, CR_Khmer, CR_Khojki, CR_Khudawadi, @@ -24970,6 +25416,7 @@ const CodeRanges[] = { CR_White_Space, CR_XID_Continue, CR_XID_Start, + CR_Yezidi, CR_Yi, CR_Z, CR_Zanabazar_Square, @@ -25181,8 +25628,10 @@ const CodeRanges[] = { CR_In_Old_Hungarian, CR_In_Hanifi_Rohingya, CR_In_Rumi_Numeral_Symbols, + CR_In_Yezidi, CR_In_Old_Sogdian, CR_In_Sogdian, + CR_In_Chorasmian, CR_In_Elymaic, CR_In_Brahmi, CR_In_Kaithi, @@ -25204,6 +25653,7 @@ const CodeRanges[] = { CR_In_Ahom, CR_In_Dogra, CR_In_Warang_Citi, + CR_In_Dives_Akuru, CR_In_Nandinagari, CR_In_Zanabazar_Square, CR_In_Soyombo, @@ -25213,6 +25663,7 @@ const CodeRanges[] = { CR_In_Masaram_Gondi, CR_In_Gunjala_Gondi, CR_In_Makasar, + CR_In_Lisu_Supplement, CR_In_Tamil_Supplement, CR_In_Cuneiform, CR_In_Cuneiform_Numbers_and_Punctuation, @@ -25229,6 +25680,8 @@ const CodeRanges[] = { CR_In_Ideographic_Symbols_and_Punctuation, CR_In_Tangut, CR_In_Tangut_Components, + CR_In_Khitan_Small_Script, + CR_In_Tangut_Supplement, CR_In_Kana_Supplement, CR_In_Kana_Extended_A, CR_In_Small_Kana_Extension, @@ -25266,12 +25719,14 @@ const CodeRanges[] = { CR_In_Supplemental_Symbols_and_Pictographs, CR_In_Chess_Symbols, CR_In_Symbols_and_Pictographs_Extended_A, + CR_In_Symbols_for_Legacy_Computing, CR_In_CJK_Unified_Ideographs_Extension_B, CR_In_CJK_Unified_Ideographs_Extension_C, CR_In_CJK_Unified_Ideographs_Extension_D, CR_In_CJK_Unified_Ideographs_Extension_E, CR_In_CJK_Unified_Ideographs_Extension_F, CR_In_CJK_Compatibility_Ideographs_Supplement, + CR_In_CJK_Unified_Ideographs_Extension_G, CR_In_Tags, CR_In_Variation_Selectors_Supplement, CR_In_Supplementary_Private_Use_Area_A, @@ -25282,12 +25737,12 @@ const CodeRanges[] = { #define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) -#define TOTAL_KEYWORDS 801 +#define TOTAL_KEYWORDS 822 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 10 -#define MAX_HASH_VALUE 5809 -/* maximum key range = 5800, duplicates = 0 */ +#define MAX_HASH_VALUE 5519 +/* maximum key range = 5510, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 @@ -25346,32 +25801,32 @@ hash (register const char *str, register size_t len) { static const unsigned short asso_values[] = { - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 0, 1121, 136, 394, 19, - 417, 1048, 958, 7, 856, 8, 415, 103, 3, 16, - 1380, 1068, 56, 181, 326, 631, 1151, 930, 358, 1083, - 8, 0, 5, 5810, 5810, 5810, 5810, 0, 1121, 136, - 394, 19, 417, 1048, 958, 7, 856, 8, 415, 103, - 3, 16, 1380, 1068, 56, 181, 326, 631, 1151, 930, - 358, 1083, 8, 0, 5, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, - 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810 + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 0, 1570, 136, 394, 19, + 985, 826, 1044, 7, 1389, 8, 415, 103, 3, 16, + 1080, 636, 56, 181, 326, 631, 1781, 1220, 786, 1639, + 12, 6, 0, 5520, 5520, 5520, 5520, 0, 1570, 136, + 394, 19, 985, 826, 1044, 7, 1389, 8, 415, 103, + 3, 16, 1080, 636, 56, 181, 326, 631, 1781, 1220, + 786, 1639, 12, 6, 0, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520 }; register unsigned int hval = (unsigned int )len; @@ -25414,21 +25869,22 @@ hash (register const char *str, register size_t len) struct unicode_prop_name_pool_t { char unicode_prop_name_pool_str10[sizeof("lana")]; - char unicode_prop_name_pool_str14[sizeof("z")]; - char unicode_prop_name_pool_str16[sizeof("yi")]; + char unicode_prop_name_pool_str13[sizeof("z")]; char unicode_prop_name_pool_str17[sizeof("lina")]; + char unicode_prop_name_pool_str22[sizeof("yi")]; char unicode_prop_name_pool_str24[sizeof("mn")]; - char unicode_prop_name_pool_str25[sizeof("yiii")]; char unicode_prop_name_pool_str27[sizeof("cn")]; char unicode_prop_name_pool_str28[sizeof("maka")]; char unicode_prop_name_pool_str30[sizeof("mani")]; - char unicode_prop_name_pool_str33[sizeof("zzzz")]; + char unicode_prop_name_pool_str31[sizeof("yiii")]; char unicode_prop_name_pool_str34[sizeof("inkannada")]; char unicode_prop_name_pool_str35[sizeof("ci")]; char unicode_prop_name_pool_str37[sizeof("lo")]; char unicode_prop_name_pool_str38[sizeof("lao")]; char unicode_prop_name_pool_str39[sizeof("laoo")]; + char unicode_prop_name_pool_str40[sizeof("zzzz")]; char unicode_prop_name_pool_str43[sizeof("miao")]; + char unicode_prop_name_pool_str48[sizeof("yezi")]; char unicode_prop_name_pool_str51[sizeof("innko")]; char unicode_prop_name_pool_str53[sizeof("co")]; char unicode_prop_name_pool_str56[sizeof("me")]; @@ -25479,6 +25935,7 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str225[sizeof("combiningmark")]; char unicode_prop_name_pool_str226[sizeof("incuneiformnumbersandpunctuation")]; char unicode_prop_name_pool_str231[sizeof("merc")]; + char unicode_prop_name_pool_str237[sizeof("inchorasmian")]; char unicode_prop_name_pool_str238[sizeof("perm")]; char unicode_prop_name_pool_str239[sizeof("inahom")]; char unicode_prop_name_pool_str240[sizeof("inipaextensions")]; @@ -25491,8 +25948,8 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str283[sizeof("incuneiform")]; char unicode_prop_name_pool_str290[sizeof("mc")]; char unicode_prop_name_pool_str293[sizeof("cc")]; - char unicode_prop_name_pool_str295[sizeof("inzanabazarsquare")]; char unicode_prop_name_pool_str298[sizeof("lineseparator")]; + char unicode_prop_name_pool_str299[sizeof("inzanabazarsquare")]; char unicode_prop_name_pool_str302[sizeof("armn")]; char unicode_prop_name_pool_str305[sizeof("qmark")]; char unicode_prop_name_pool_str306[sizeof("armi")]; @@ -25512,11 +25969,9 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str356[sizeof("incyrillic")]; char unicode_prop_name_pool_str357[sizeof("inthai")]; char unicode_prop_name_pool_str359[sizeof("incham")]; + char unicode_prop_name_pool_str364[sizeof("zs")]; char unicode_prop_name_pool_str367[sizeof("inkaithi")]; - char unicode_prop_name_pool_str369[sizeof("zs")]; char unicode_prop_name_pool_str372[sizeof("mtei")]; - char unicode_prop_name_pool_str375[sizeof("vai")]; - char unicode_prop_name_pool_str376[sizeof("vaii")]; char unicode_prop_name_pool_str379[sizeof("initialpunctuation")]; char unicode_prop_name_pool_str383[sizeof("cs")]; char unicode_prop_name_pool_str399[sizeof("insyriac")]; @@ -25525,18 +25980,17 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str417[sizeof("mand")]; char unicode_prop_name_pool_str419[sizeof("l")]; char unicode_prop_name_pool_str420[sizeof("ps")]; - char unicode_prop_name_pool_str427[sizeof("dia")]; char unicode_prop_name_pool_str431[sizeof("inkanaextendeda")]; - char unicode_prop_name_pool_str433[sizeof("di")]; char unicode_prop_name_pool_str436[sizeof("mend")]; char unicode_prop_name_pool_str437[sizeof("modi")]; char unicode_prop_name_pool_str441[sizeof("ideo")]; char unicode_prop_name_pool_str445[sizeof("katakana")]; char unicode_prop_name_pool_str449[sizeof("prti")]; + char unicode_prop_name_pool_str451[sizeof("yezidi")]; char unicode_prop_name_pool_str456[sizeof("inideographicdescriptioncharacters")]; char unicode_prop_name_pool_str457[sizeof("inlineara")]; - char unicode_prop_name_pool_str458[sizeof("xidcontinue")]; char unicode_prop_name_pool_str461[sizeof("brai")]; + char unicode_prop_name_pool_str462[sizeof("xidcontinue")]; char unicode_prop_name_pool_str463[sizeof("inlao")]; char unicode_prop_name_pool_str472[sizeof("ascii")]; char unicode_prop_name_pool_str474[sizeof("privateuse")]; @@ -25561,8 +26015,8 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str540[sizeof("inmendekikakui")]; char unicode_prop_name_pool_str545[sizeof("intransportandmapsymbols")]; char unicode_prop_name_pool_str547[sizeof("letternumber")]; - char unicode_prop_name_pool_str549[sizeof("xidc")]; char unicode_prop_name_pool_str550[sizeof("inmedefaidrin")]; + char unicode_prop_name_pool_str553[sizeof("xidc")]; char unicode_prop_name_pool_str558[sizeof("inchesssymbols")]; char unicode_prop_name_pool_str564[sizeof("inemoticons")]; char unicode_prop_name_pool_str573[sizeof("brahmi")]; @@ -25570,11 +26024,11 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str578[sizeof("palm")]; char unicode_prop_name_pool_str580[sizeof("inlycian")]; char unicode_prop_name_pool_str588[sizeof("inmiscellaneousmathematicalsymbolsa")]; - char unicode_prop_name_pool_str594[sizeof("xids")]; + char unicode_prop_name_pool_str598[sizeof("xids")]; char unicode_prop_name_pool_str603[sizeof("psalterpahlavi")]; char unicode_prop_name_pool_str619[sizeof("insundanese")]; char unicode_prop_name_pool_str620[sizeof("inoldsogdian")]; - char unicode_prop_name_pool_str632[sizeof("diacritic")]; + char unicode_prop_name_pool_str621[sizeof("kits")]; char unicode_prop_name_pool_str634[sizeof("gothic")]; char unicode_prop_name_pool_str635[sizeof("inancientsymbols")]; char unicode_prop_name_pool_str639[sizeof("meroiticcursive")]; @@ -25592,13 +26046,13 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str678[sizeof("inoldsoutharabian")]; char unicode_prop_name_pool_str699[sizeof("insylotinagri")]; char unicode_prop_name_pool_str701[sizeof("idsbinaryoperator")]; + char unicode_prop_name_pool_str704[sizeof("oriya")]; char unicode_prop_name_pool_str707[sizeof("sora")]; char unicode_prop_name_pool_str708[sizeof("bamum")]; char unicode_prop_name_pool_str709[sizeof("inkanasupplement")]; char unicode_prop_name_pool_str710[sizeof("incjkstrokes")]; char unicode_prop_name_pool_str715[sizeof("joinc")]; char unicode_prop_name_pool_str718[sizeof("inopticalcharacterrecognition")]; - char unicode_prop_name_pool_str722[sizeof("vs")]; char unicode_prop_name_pool_str728[sizeof("indominotiles")]; char unicode_prop_name_pool_str732[sizeof("batk")]; char unicode_prop_name_pool_str739[sizeof("grext")]; @@ -25607,7 +26061,6 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str752[sizeof("inmodifiertoneletters")]; char unicode_prop_name_pool_str753[sizeof("ital")]; char unicode_prop_name_pool_str760[sizeof("bass")]; - char unicode_prop_name_pool_str763[sizeof("decimalnumber")]; char unicode_prop_name_pool_str765[sizeof("alnum")]; char unicode_prop_name_pool_str767[sizeof("ids")]; char unicode_prop_name_pool_str776[sizeof("print")]; @@ -25616,19 +26069,20 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str783[sizeof("inmusicalsymbols")]; char unicode_prop_name_pool_str785[sizeof("intaile")]; char unicode_prop_name_pool_str794[sizeof("samr")]; + char unicode_prop_name_pool_str803[sizeof("vai")]; + char unicode_prop_name_pool_str804[sizeof("vaii")]; char unicode_prop_name_pool_str809[sizeof("samaritan")]; char unicode_prop_name_pool_str813[sizeof("s")]; char unicode_prop_name_pool_str816[sizeof("inlatinextendede")]; char unicode_prop_name_pool_str820[sizeof("bali")]; char unicode_prop_name_pool_str826[sizeof("lisu")]; char unicode_prop_name_pool_str827[sizeof("pauc")]; - char unicode_prop_name_pool_str828[sizeof("patternsyntax")]; char unicode_prop_name_pool_str829[sizeof("incontrolpictures")]; char unicode_prop_name_pool_str830[sizeof("blank")]; + char unicode_prop_name_pool_str832[sizeof("zl")]; char unicode_prop_name_pool_str834[sizeof("inmiscellaneoussymbols")]; char unicode_prop_name_pool_str835[sizeof("ll")]; char unicode_prop_name_pool_str836[sizeof("inancientgreekmusicalnotation")]; - char unicode_prop_name_pool_str837[sizeof("zl")]; char unicode_prop_name_pool_str838[sizeof("inlydian")]; char unicode_prop_name_pool_str839[sizeof("sm")]; char unicode_prop_name_pool_str843[sizeof("inmiscellaneoussymbolsandarrows")]; @@ -25636,603 +26090,626 @@ struct unicode_prop_name_pool_t char unicode_prop_name_pool_str845[sizeof("bengali")]; char unicode_prop_name_pool_str846[sizeof("pd")]; char unicode_prop_name_pool_str848[sizeof("inmiscellaneoussymbolsandpictographs")]; - char unicode_prop_name_pool_str850[sizeof("medf")]; - char unicode_prop_name_pool_str855[sizeof("cf")]; + char unicode_prop_name_pool_str849[sizeof("ingrantha")]; + char unicode_prop_name_pool_str856[sizeof("gong")]; char unicode_prop_name_pool_str858[sizeof("balinese")]; - char unicode_prop_name_pool_str860[sizeof("medefaidrin")]; - char unicode_prop_name_pool_str865[sizeof("han")]; + char unicode_prop_name_pool_str860[sizeof("osage")]; + char unicode_prop_name_pool_str865[sizeof("mong")]; char unicode_prop_name_pool_str869[sizeof("intamil")]; - char unicode_prop_name_pool_str870[sizeof("hani")]; char unicode_prop_name_pool_str871[sizeof("inmultani")]; - char unicode_prop_name_pool_str879[sizeof("hano")]; - char unicode_prop_name_pool_str887[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str879[sizeof("inosage")]; + char unicode_prop_name_pool_str885[sizeof("ingeneralpunctuation")]; + char unicode_prop_name_pool_str886[sizeof("georgian")]; char unicode_prop_name_pool_str891[sizeof("insaurashtra")]; - char unicode_prop_name_pool_str892[sizeof("pf")]; char unicode_prop_name_pool_str894[sizeof("inoldturkic")]; char unicode_prop_name_pool_str896[sizeof("idcontinue")]; - char unicode_prop_name_pool_str901[sizeof("hanunoo")]; char unicode_prop_name_pool_str905[sizeof("sc")]; - char unicode_prop_name_pool_str906[sizeof("inkhojki")]; char unicode_prop_name_pool_str913[sizeof("idst")]; char unicode_prop_name_pool_str915[sizeof("canadianaboriginal")]; - char unicode_prop_name_pool_str923[sizeof("hira")]; + char unicode_prop_name_pool_str922[sizeof("ingeorgian")]; + char unicode_prop_name_pool_str924[sizeof("osma")]; char unicode_prop_name_pool_str925[sizeof("plrd")]; char unicode_prop_name_pool_str939[sizeof("incaucasianalbanian")]; char unicode_prop_name_pool_str940[sizeof("indeseret")]; char unicode_prop_name_pool_str945[sizeof("inearlydynasticcuneiform")]; char unicode_prop_name_pool_str946[sizeof("inspacingmodifierletters")]; - char unicode_prop_name_pool_str950[sizeof("innewa")]; + char unicode_prop_name_pool_str957[sizeof("inmongolian")]; + char unicode_prop_name_pool_str964[sizeof("emoji")]; char unicode_prop_name_pool_str972[sizeof("idstart")]; - char unicode_prop_name_pool_str977[sizeof("zinh")]; - char unicode_prop_name_pool_str981[sizeof("incyrillicextendeda")]; - char unicode_prop_name_pool_str984[sizeof("dsrt")]; char unicode_prop_name_pool_str993[sizeof("cased")]; + char unicode_prop_name_pool_str995[sizeof("dia")]; char unicode_prop_name_pool_str999[sizeof("glagolitic")]; - char unicode_prop_name_pool_str1002[sizeof("inhanifirohingya")]; + char unicode_prop_name_pool_str1001[sizeof("di")]; + char unicode_prop_name_pool_str1004[sizeof("diak")]; char unicode_prop_name_pool_str1006[sizeof("inancientgreeknumbers")]; char unicode_prop_name_pool_str1008[sizeof("inmeeteimayekextensions")]; - char unicode_prop_name_pool_str1009[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str1013[sizeof("ingurmukhi")]; char unicode_prop_name_pool_str1016[sizeof("joincontrol")]; char unicode_prop_name_pool_str1020[sizeof("runr")]; - char unicode_prop_name_pool_str1023[sizeof("inwarangciti")]; - char unicode_prop_name_pool_str1025[sizeof("deseret")]; - char unicode_prop_name_pool_str1035[sizeof("inhiragana")]; char unicode_prop_name_pool_str1039[sizeof("sind")]; - char unicode_prop_name_pool_str1047[sizeof("cherokee")]; + char unicode_prop_name_pool_str1047[sizeof("odi")]; char unicode_prop_name_pool_str1050[sizeof("inlatinextendedc")]; char unicode_prop_name_pool_str1052[sizeof("adlm")]; - char unicode_prop_name_pool_str1053[sizeof("phoenician")]; - char unicode_prop_name_pool_str1056[sizeof("cher")]; - char unicode_prop_name_pool_str1059[sizeof("marchen")]; + char unicode_prop_name_pool_str1058[sizeof("zinh")]; char unicode_prop_name_pool_str1062[sizeof("inkhudawadi")]; char unicode_prop_name_pool_str1063[sizeof("sinhala")]; - char unicode_prop_name_pool_str1066[sizeof("lower")]; - char unicode_prop_name_pool_str1068[sizeof("graphemelink")]; - char unicode_prop_name_pool_str1069[sizeof("xidstart")]; - char unicode_prop_name_pool_str1071[sizeof("ingrantha")]; char unicode_prop_name_pool_str1072[sizeof("bidic")]; - char unicode_prop_name_pool_str1074[sizeof("xdigit")]; + char unicode_prop_name_pool_str1073[sizeof("xidstart")]; char unicode_prop_name_pool_str1076[sizeof("casedletter")]; - char unicode_prop_name_pool_str1078[sizeof("gong")]; + char unicode_prop_name_pool_str1078[sizeof("xdigit")]; char unicode_prop_name_pool_str1079[sizeof("multani")]; + char unicode_prop_name_pool_str1080[sizeof("logicalorderexception")]; char unicode_prop_name_pool_str1082[sizeof("gunjalagondi")]; - char unicode_prop_name_pool_str1084[sizeof("cham")]; - char unicode_prop_name_pool_str1086[sizeof("chakma")]; - char unicode_prop_name_pool_str1087[sizeof("mong")]; - char unicode_prop_name_pool_str1088[sizeof("kaithi")]; - char unicode_prop_name_pool_str1089[sizeof("inmahajani")]; - char unicode_prop_name_pool_str1090[sizeof("graphemebase")]; + char unicode_prop_name_pool_str1084[sizeof("n")]; + char unicode_prop_name_pool_str1088[sizeof("inhanifirohingya")]; + char unicode_prop_name_pool_str1090[sizeof("insorasompeng")]; char unicode_prop_name_pool_str1092[sizeof("insiddham")]; - char unicode_prop_name_pool_str1095[sizeof("inogham")]; - char unicode_prop_name_pool_str1101[sizeof("inosage")]; char unicode_prop_name_pool_str1102[sizeof("incountingrodnumerals")]; - char unicode_prop_name_pool_str1104[sizeof("inwancho")]; - char unicode_prop_name_pool_str1105[sizeof("khojki")]; - char unicode_prop_name_pool_str1107[sizeof("ingeneralpunctuation")]; - char unicode_prop_name_pool_str1108[sizeof("georgian")]; - char unicode_prop_name_pool_str1117[sizeof("incyrillicextendedc")]; - char unicode_prop_name_pool_str1118[sizeof("inkayahli")]; - char unicode_prop_name_pool_str1121[sizeof("khar")]; - char unicode_prop_name_pool_str1124[sizeof("inoriya")]; - char unicode_prop_name_pool_str1126[sizeof("manichaean")]; + char unicode_prop_name_pool_str1111[sizeof("nandinagari")]; + char unicode_prop_name_pool_str1114[sizeof("no")]; + char unicode_prop_name_pool_str1121[sizeof("inhiragana")]; + char unicode_prop_name_pool_str1123[sizeof("nko")]; + char unicode_prop_name_pool_str1124[sizeof("nkoo")]; + char unicode_prop_name_pool_str1131[sizeof("xpeo")]; char unicode_prop_name_pool_str1132[sizeof("bamu")]; - char unicode_prop_name_pool_str1133[sizeof("zanb")]; - char unicode_prop_name_pool_str1136[sizeof("oriya")]; - char unicode_prop_name_pool_str1137[sizeof("inolchiki")]; - char unicode_prop_name_pool_str1138[sizeof("linb")]; - char unicode_prop_name_pool_str1141[sizeof("inethiopic")]; - char unicode_prop_name_pool_str1143[sizeof("wara")]; - char unicode_prop_name_pool_str1144[sizeof("ingeorgian")]; - char unicode_prop_name_pool_str1149[sizeof("innabataean")]; - char unicode_prop_name_pool_str1154[sizeof("inkanbun")]; + char unicode_prop_name_pool_str1133[sizeof("cherokee")]; + char unicode_prop_name_pool_str1137[sizeof("p")]; + char unicode_prop_name_pool_str1139[sizeof("phoenician")]; + char unicode_prop_name_pool_str1142[sizeof("cher")]; + char unicode_prop_name_pool_str1143[sizeof("emojimodifier")]; + char unicode_prop_name_pool_str1144[sizeof("inphoenician")]; + char unicode_prop_name_pool_str1145[sizeof("marchen")]; + char unicode_prop_name_pool_str1150[sizeof("vs")]; + char unicode_prop_name_pool_str1154[sizeof("graphemelink")]; char unicode_prop_name_pool_str1156[sizeof("adlam")]; - char unicode_prop_name_pool_str1157[sizeof("inbhaiksuki")]; - char unicode_prop_name_pool_str1162[sizeof("insinhala")]; - char unicode_prop_name_pool_str1163[sizeof("inelbasan")]; - char unicode_prop_name_pool_str1169[sizeof("lowercase")]; - char unicode_prop_name_pool_str1178[sizeof("takri")]; - char unicode_prop_name_pool_str1179[sizeof("inmongolian")]; - char unicode_prop_name_pool_str1181[sizeof("invai")]; - char unicode_prop_name_pool_str1182[sizeof("xsux")]; + char unicode_prop_name_pool_str1168[sizeof("inkhitansmallscript")]; + char unicode_prop_name_pool_str1170[sizeof("cham")]; + char unicode_prop_name_pool_str1172[sizeof("chakma")]; + char unicode_prop_name_pool_str1174[sizeof("kaithi")]; + char unicode_prop_name_pool_str1175[sizeof("inmahajani")]; + char unicode_prop_name_pool_str1176[sizeof("graphemebase")]; + char unicode_prop_name_pool_str1177[sizeof("oidc")]; + char unicode_prop_name_pool_str1179[sizeof("ingreekandcoptic")]; + char unicode_prop_name_pool_str1181[sizeof("inogham")]; char unicode_prop_name_pool_str1183[sizeof("cntrl")]; - char unicode_prop_name_pool_str1186[sizeof("emoji")]; char unicode_prop_name_pool_str1187[sizeof("sterm")]; - char unicode_prop_name_pool_str1189[sizeof("cuneiform")]; - char unicode_prop_name_pool_str1192[sizeof("cwcm")]; - char unicode_prop_name_pool_str1194[sizeof("hatran")]; - char unicode_prop_name_pool_str1197[sizeof("linearb")]; - char unicode_prop_name_pool_str1201[sizeof("taile")]; + char unicode_prop_name_pool_str1191[sizeof("khojki")]; + char unicode_prop_name_pool_str1199[sizeof("olck")]; + char unicode_prop_name_pool_str1200[sizeof("diacritic")]; char unicode_prop_name_pool_str1202[sizeof("inlatinextendedadditional")]; char unicode_prop_name_pool_str1203[sizeof("inenclosedalphanumerics")]; + char unicode_prop_name_pool_str1204[sizeof("olower")]; char unicode_prop_name_pool_str1205[sizeof("anatolianhieroglyphs")]; char unicode_prop_name_pool_str1206[sizeof("incyrillicsupplement")]; + char unicode_prop_name_pool_str1207[sizeof("khar")]; char unicode_prop_name_pool_str1208[sizeof("intamilsupplement")]; + char unicode_prop_name_pool_str1212[sizeof("manichaean")]; char unicode_prop_name_pool_str1215[sizeof("inmiscellaneoustechnical")]; - char unicode_prop_name_pool_str1217[sizeof("ahom")]; + char unicode_prop_name_pool_str1216[sizeof("olchiki")]; char unicode_prop_name_pool_str1218[sizeof("incherokeesupplement")]; - char unicode_prop_name_pool_str1219[sizeof("takr")]; - char unicode_prop_name_pool_str1224[sizeof("khmr")]; + char unicode_prop_name_pool_str1221[sizeof("inmeroitichieroglyphs")]; + char unicode_prop_name_pool_str1222[sizeof("oids")]; + char unicode_prop_name_pool_str1223[sizeof("inolchiki")]; + char unicode_prop_name_pool_str1227[sizeof("inethiopic")]; char unicode_prop_name_pool_str1228[sizeof("incjkunifiedideographsextensiona")]; char unicode_prop_name_pool_str1231[sizeof("quotationmark")]; - char unicode_prop_name_pool_str1233[sizeof("lyci")]; - char unicode_prop_name_pool_str1234[sizeof("lycian")]; - char unicode_prop_name_pool_str1235[sizeof("ingurmukhi")]; + char unicode_prop_name_pool_str1233[sizeof("inkangxiradicals")]; char unicode_prop_name_pool_str1237[sizeof("runic")]; - char unicode_prop_name_pool_str1238[sizeof("limb")]; - char unicode_prop_name_pool_str1240[sizeof("inscriptionalpahlavi")]; - char unicode_prop_name_pool_str1242[sizeof("hatr")]; - char unicode_prop_name_pool_str1244[sizeof("variationselector")]; - char unicode_prop_name_pool_str1246[sizeof("modifierletter")]; + char unicode_prop_name_pool_str1239[sizeof("enclosingmark")]; + char unicode_prop_name_pool_str1240[sizeof("innewa")]; + char unicode_prop_name_pool_str1242[sizeof("lepc")]; + char unicode_prop_name_pool_str1246[sizeof("beng")]; char unicode_prop_name_pool_str1247[sizeof("incjkunifiedideographsextensione")]; - char unicode_prop_name_pool_str1262[sizeof("mymr")]; - char unicode_prop_name_pool_str1265[sizeof("myanmar")]; + char unicode_prop_name_pool_str1248[sizeof("insinhala")]; + char unicode_prop_name_pool_str1252[sizeof("glag")]; + char unicode_prop_name_pool_str1255[sizeof("inphaistosdisc")]; + char unicode_prop_name_pool_str1256[sizeof("patternsyntax")]; char unicode_prop_name_pool_str1267[sizeof("lu")]; - char unicode_prop_name_pool_str1275[sizeof("kharoshthi")]; - char unicode_prop_name_pool_str1276[sizeof("inarabic")]; + char unicode_prop_name_pool_str1273[sizeof("chorasmian")]; char unicode_prop_name_pool_str1278[sizeof("radical")]; - char unicode_prop_name_pool_str1281[sizeof("khmer")]; - char unicode_prop_name_pool_str1286[sizeof("inunifiedcanadianaboriginalsyllabics")]; - char unicode_prop_name_pool_str1292[sizeof("osage")]; + char unicode_prop_name_pool_str1286[sizeof("regionalindicator")]; + char unicode_prop_name_pool_str1287[sizeof("ingreekextended")]; + char unicode_prop_name_pool_str1291[sizeof("emojimodifierbase")]; + char unicode_prop_name_pool_str1294[sizeof("indogra")]; char unicode_prop_name_pool_str1296[sizeof("sundanese")]; - char unicode_prop_name_pool_str1300[sizeof("innewtailue")]; - char unicode_prop_name_pool_str1302[sizeof("logicalorderexception")]; - char unicode_prop_name_pool_str1304[sizeof("math")]; + char unicode_prop_name_pool_str1303[sizeof("ahom")]; + char unicode_prop_name_pool_str1304[sizeof("chrs")]; char unicode_prop_name_pool_str1306[sizeof("braille")]; - char unicode_prop_name_pool_str1311[sizeof("goth")]; - char unicode_prop_name_pool_str1312[sizeof("insorasompeng")]; - char unicode_prop_name_pool_str1316[sizeof("insoyombo")]; - char unicode_prop_name_pool_str1317[sizeof("arab")]; + char unicode_prop_name_pool_str1310[sizeof("khmr")]; + char unicode_prop_name_pool_str1313[sizeof("inwarangciti")]; char unicode_prop_name_pool_str1322[sizeof("saur")]; + char unicode_prop_name_pool_str1326[sizeof("inscriptionalpahlavi")]; char unicode_prop_name_pool_str1329[sizeof("guru")]; - char unicode_prop_name_pool_str1333[sizeof("term")]; + char unicode_prop_name_pool_str1331[sizeof("decimalnumber")]; + char unicode_prop_name_pool_str1333[sizeof("inimperialaramaic")]; char unicode_prop_name_pool_str1337[sizeof("paucinhau")]; - char unicode_prop_name_pool_str1338[sizeof("inbasiclatin")]; - char unicode_prop_name_pool_str1339[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1343[sizeof("emod")]; char unicode_prop_name_pool_str1347[sizeof("punct")]; char unicode_prop_name_pool_str1348[sizeof("gurmukhi")]; - char unicode_prop_name_pool_str1354[sizeof("grantha")]; - char unicode_prop_name_pool_str1355[sizeof("inshavian")]; - char unicode_prop_name_pool_str1356[sizeof("osma")]; + char unicode_prop_name_pool_str1354[sizeof("ingeometricshapes")]; + char unicode_prop_name_pool_str1356[sizeof("lower")]; char unicode_prop_name_pool_str1357[sizeof("inenclosedalphanumericsupplement")]; - char unicode_prop_name_pool_str1360[sizeof("intirhuta")]; - char unicode_prop_name_pool_str1361[sizeof("inelymaic")]; - char unicode_prop_name_pool_str1362[sizeof("inhatran")]; + char unicode_prop_name_pool_str1361[sizeof("kharoshthi")]; char unicode_prop_name_pool_str1364[sizeof("incjkunifiedideographsextensionc")]; - char unicode_prop_name_pool_str1365[sizeof("emojimodifier")]; - char unicode_prop_name_pool_str1368[sizeof("uideo")]; + char unicode_prop_name_pool_str1367[sizeof("khmer")]; char unicode_prop_name_pool_str1373[sizeof("bidicontrol")]; - char unicode_prop_name_pool_str1379[sizeof("phnx")]; char unicode_prop_name_pool_str1380[sizeof("limbu")]; - char unicode_prop_name_pool_str1384[sizeof("n")]; char unicode_prop_name_pool_str1388[sizeof("inenclosedideographicsupplement")]; + char unicode_prop_name_pool_str1390[sizeof("math")]; char unicode_prop_name_pool_str1392[sizeof("mult")]; - char unicode_prop_name_pool_str1398[sizeof("kthi")]; + char unicode_prop_name_pool_str1394[sizeof("inwancho")]; + char unicode_prop_name_pool_str1397[sizeof("goth")]; + char unicode_prop_name_pool_str1398[sizeof("han")]; char unicode_prop_name_pool_str1399[sizeof("incjkunifiedideographs")]; - char unicode_prop_name_pool_str1401[sizeof("ingreekandcoptic")]; - char unicode_prop_name_pool_str1403[sizeof("inoldhungarian")]; - char unicode_prop_name_pool_str1406[sizeof("incjkcompatibility")]; - char unicode_prop_name_pool_str1409[sizeof("grbase")]; - char unicode_prop_name_pool_str1411[sizeof("nandinagari")]; - char unicode_prop_name_pool_str1412[sizeof("brah")]; - char unicode_prop_name_pool_str1414[sizeof("no")]; + char unicode_prop_name_pool_str1400[sizeof("coptic")]; + char unicode_prop_name_pool_str1403[sizeof("hani")]; + char unicode_prop_name_pool_str1409[sizeof("incyrillicextendeda")]; + char unicode_prop_name_pool_str1412[sizeof("hano")]; + char unicode_prop_name_pool_str1418[sizeof("medf")]; char unicode_prop_name_pool_str1421[sizeof("sd")]; - char unicode_prop_name_pool_str1423[sizeof("nko")]; - char unicode_prop_name_pool_str1424[sizeof("nkoo")]; - char unicode_prop_name_pool_str1427[sizeof("xpeo")]; + char unicode_prop_name_pool_str1424[sizeof("insogdian")]; + char unicode_prop_name_pool_str1425[sizeof("indingbats")]; + char unicode_prop_name_pool_str1428[sizeof("medefaidrin")]; char unicode_prop_name_pool_str1430[sizeof("sidd")]; - char unicode_prop_name_pool_str1435[sizeof("inherited")]; - char unicode_prop_name_pool_str1437[sizeof("p")]; - char unicode_prop_name_pool_str1440[sizeof("phli")]; - char unicode_prop_name_pool_str1443[sizeof("inmeroitichieroglyphs")]; - char unicode_prop_name_pool_str1444[sizeof("inphoenician")]; - char unicode_prop_name_pool_str1449[sizeof("inmayannumerals")]; + char unicode_prop_name_pool_str1434[sizeof("hanunoo")]; + char unicode_prop_name_pool_str1437[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str1439[sizeof("inkhojki")]; + char unicode_prop_name_pool_str1440[sizeof("grantha")]; + char unicode_prop_name_pool_str1445[sizeof("copt")]; + char unicode_prop_name_pool_str1446[sizeof("intirhuta")]; + char unicode_prop_name_pool_str1447[sizeof("emojicomponent")]; + char unicode_prop_name_pool_str1448[sizeof("inhatran")]; + char unicode_prop_name_pool_str1450[sizeof("ideographic")]; char unicode_prop_name_pool_str1453[sizeof("saurashtra")]; - char unicode_prop_name_pool_str1455[sizeof("inkangxiradicals")]; - char unicode_prop_name_pool_str1461[sizeof("enclosingmark")]; - char unicode_prop_name_pool_str1467[sizeof("graphemeextend")]; - char unicode_prop_name_pool_str1468[sizeof("beng")]; - char unicode_prop_name_pool_str1473[sizeof("inbatak")]; - char unicode_prop_name_pool_str1474[sizeof("glag")]; - char unicode_prop_name_pool_str1475[sizeof("ahex")]; - char unicode_prop_name_pool_str1477[sizeof("patsyn")]; - char unicode_prop_name_pool_str1479[sizeof("odi")]; - char unicode_prop_name_pool_str1486[sizeof("dogra")]; - char unicode_prop_name_pool_str1489[sizeof("intibetan")]; - char unicode_prop_name_pool_str1491[sizeof("lydi")]; - char unicode_prop_name_pool_str1492[sizeof("lydian")]; - char unicode_prop_name_pool_str1499[sizeof("inblockelements")]; - char unicode_prop_name_pool_str1506[sizeof("cwcf")]; - char unicode_prop_name_pool_str1507[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; - char unicode_prop_name_pool_str1508[sizeof("regionalindicator")]; - char unicode_prop_name_pool_str1509[sizeof("ingreekextended")]; - char unicode_prop_name_pool_str1513[sizeof("emojimodifierbase")]; - char unicode_prop_name_pool_str1514[sizeof("inanatolianhieroglyphs")]; - char unicode_prop_name_pool_str1516[sizeof("indogra")]; - char unicode_prop_name_pool_str1517[sizeof("taiviet")]; - char unicode_prop_name_pool_str1524[sizeof("inyiradicals")]; - char unicode_prop_name_pool_str1525[sizeof("unassigned")]; + char unicode_prop_name_pool_str1455[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str1456[sizeof("hira")]; + char unicode_prop_name_pool_str1457[sizeof("ininscriptionalparthian")]; + char unicode_prop_name_pool_str1459[sizeof("lowercase")]; + char unicode_prop_name_pool_str1460[sizeof("ininscriptionalpahlavi")]; + char unicode_prop_name_pool_str1472[sizeof("inornamentaldingbats")]; + char unicode_prop_name_pool_str1480[sizeof("caseignorable")]; + char unicode_prop_name_pool_str1481[sizeof("nand")]; + char unicode_prop_name_pool_str1482[sizeof("cwcm")]; + char unicode_prop_name_pool_str1484[sizeof("kthi")]; + char unicode_prop_name_pool_str1485[sizeof("cprt")]; + char unicode_prop_name_pool_str1489[sizeof("inoldhungarian")]; + char unicode_prop_name_pool_str1490[sizeof("sogdian")]; + char unicode_prop_name_pool_str1493[sizeof("sogo")]; + char unicode_prop_name_pool_str1498[sizeof("brah")]; + char unicode_prop_name_pool_str1500[sizeof("intangut")]; + char unicode_prop_name_pool_str1508[sizeof("imperialaramaic")]; + char unicode_prop_name_pool_str1510[sizeof("bopo")]; + char unicode_prop_name_pool_str1519[sizeof("inoldpersian")]; + char unicode_prop_name_pool_str1521[sizeof("inherited")]; + char unicode_prop_name_pool_str1526[sizeof("phli")]; + char unicode_prop_name_pool_str1531[sizeof("intags")]; char unicode_prop_name_pool_str1532[sizeof("insundanesesupplement")]; - char unicode_prop_name_pool_str1535[sizeof("innumberforms")]; - char unicode_prop_name_pool_str1538[sizeof("lowercaseletter")]; - char unicode_prop_name_pool_str1541[sizeof("dogr")]; - char unicode_prop_name_pool_str1542[sizeof("lepc")]; - char unicode_prop_name_pool_str1545[sizeof("bhks")]; - char unicode_prop_name_pool_str1553[sizeof("word")]; - char unicode_prop_name_pool_str1554[sizeof("gujr")]; - char unicode_prop_name_pool_str1555[sizeof("inphaistosdisc")]; - char unicode_prop_name_pool_str1557[sizeof("bhaiksuki")]; - char unicode_prop_name_pool_str1560[sizeof("dash")]; - char unicode_prop_name_pool_str1562[sizeof("inarabicextendeda")]; - char unicode_prop_name_pool_str1565[sizeof("gujarati")]; + char unicode_prop_name_pool_str1533[sizeof("oldpersian")]; + char unicode_prop_name_pool_str1545[sizeof("incyrillicextendedc")]; + char unicode_prop_name_pool_str1552[sizeof("dsrt")]; + char unicode_prop_name_pool_str1553[sizeof("graphemeextend")]; char unicode_prop_name_pool_str1566[sizeof("inlatinextendedd")]; - char unicode_prop_name_pool_str1567[sizeof("innoblock")]; - char unicode_prop_name_pool_str1570[sizeof("java")]; - char unicode_prop_name_pool_str1576[sizeof("ingeometricshapes")]; - char unicode_prop_name_pool_str1577[sizeof("cyrl")]; - char unicode_prop_name_pool_str1582[sizeof("indevanagari")]; - char unicode_prop_name_pool_str1583[sizeof("inbalinese")]; - char unicode_prop_name_pool_str1585[sizeof("inbyzantinemusicalsymbols")]; - char unicode_prop_name_pool_str1589[sizeof("tale")]; - char unicode_prop_name_pool_str1591[sizeof("deva")]; - char unicode_prop_name_pool_str1594[sizeof("hex")]; - char unicode_prop_name_pool_str1601[sizeof("inmyanmarextendedb")]; - char unicode_prop_name_pool_str1603[sizeof("sinh")]; - char unicode_prop_name_pool_str1604[sizeof("cwt")]; - char unicode_prop_name_pool_str1606[sizeof("shavian")]; - char unicode_prop_name_pool_str1607[sizeof("devanagari")]; - char unicode_prop_name_pool_str1609[sizeof("oidc")]; - char unicode_prop_name_pool_str1615[sizeof("javanese")]; - char unicode_prop_name_pool_str1621[sizeof("mlym")]; + char unicode_prop_name_pool_str1569[sizeof("ogam")]; + char unicode_prop_name_pool_str1571[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str1575[sizeof("ingeometricshapesextended")]; + char unicode_prop_name_pool_str1577[sizeof("zanb")]; + char unicode_prop_name_pool_str1587[sizeof("linb")]; + char unicode_prop_name_pool_str1590[sizeof("innewtailue")]; + char unicode_prop_name_pool_str1593[sizeof("deseret")]; + char unicode_prop_name_pool_str1598[sizeof("innabataean")]; + char unicode_prop_name_pool_str1600[sizeof("inanatolianhieroglyphs")]; + char unicode_prop_name_pool_str1603[sizeof("inkanbun")]; + char unicode_prop_name_pool_str1606[sizeof("inbhaiksuki")]; + char unicode_prop_name_pool_str1612[sizeof("inelbasan")]; + char unicode_prop_name_pool_str1614[sizeof("xsux")]; char unicode_prop_name_pool_str1622[sizeof("incjkunifiedideographsextensiond")]; char unicode_prop_name_pool_str1624[sizeof("sentenceterminal")]; - char unicode_prop_name_pool_str1626[sizeof("malayalam")]; - char unicode_prop_name_pool_str1628[sizeof("inhanunoo")]; - char unicode_prop_name_pool_str1629[sizeof("insinhalaarchaicnumbers")]; - char unicode_prop_name_pool_str1631[sizeof("olck")]; - char unicode_prop_name_pool_str1633[sizeof("inimperialaramaic")]; - char unicode_prop_name_pool_str1636[sizeof("olower")]; - char unicode_prop_name_pool_str1638[sizeof("palmyrene")]; - char unicode_prop_name_pool_str1642[sizeof("avestan")]; - char unicode_prop_name_pool_str1645[sizeof("incjkunifiedideographsextensionf")]; - char unicode_prop_name_pool_str1646[sizeof("insogdian")]; - char unicode_prop_name_pool_str1647[sizeof("indingbats")]; - char unicode_prop_name_pool_str1648[sizeof("olchiki")]; - char unicode_prop_name_pool_str1654[sizeof("oids")]; + char unicode_prop_name_pool_str1626[sizeof("incjksymbolsandpunctuation")]; + char unicode_prop_name_pool_str1631[sizeof("bhks")]; + char unicode_prop_name_pool_str1633[sizeof("bopomofo")]; + char unicode_prop_name_pool_str1636[sizeof("alpha")]; + char unicode_prop_name_pool_str1639[sizeof("inpalmyrene")]; + char unicode_prop_name_pool_str1643[sizeof("bhaiksuki")]; + char unicode_prop_name_pool_str1646[sizeof("linearb")]; + char unicode_prop_name_pool_str1648[sizeof("inoldpermic")]; + char unicode_prop_name_pool_str1650[sizeof("inlepcha")]; + char unicode_prop_name_pool_str1658[sizeof("uideo")]; char unicode_prop_name_pool_str1661[sizeof("punctuation")]; char unicode_prop_name_pool_str1663[sizeof("sund")]; - char unicode_prop_name_pool_str1666[sizeof("inbraillepatterns")]; - char unicode_prop_name_pool_str1669[sizeof("emojicomponent")]; - char unicode_prop_name_pool_str1672[sizeof("ideographic")]; - char unicode_prop_name_pool_str1673[sizeof("taml")]; - char unicode_prop_name_pool_str1688[sizeof("format")]; - char unicode_prop_name_pool_str1694[sizeof("inornamentaldingbats")]; - char unicode_prop_name_pool_str1700[sizeof("coptic")]; - char unicode_prop_name_pool_str1702[sizeof("caseignorable")]; - char unicode_prop_name_pool_str1708[sizeof("idsb")]; - char unicode_prop_name_pool_str1709[sizeof("inmiscellaneousmathematicalsymbolsb")]; - char unicode_prop_name_pool_str1712[sizeof("sogdian")]; - char unicode_prop_name_pool_str1715[sizeof("sogo")]; - char unicode_prop_name_pool_str1720[sizeof("terminalpunctuation")]; - char unicode_prop_name_pool_str1722[sizeof("intangut")]; - char unicode_prop_name_pool_str1729[sizeof("intifinagh")]; - char unicode_prop_name_pool_str1733[sizeof("inlowsurrogates")]; - char unicode_prop_name_pool_str1743[sizeof("invariationselectors")]; - char unicode_prop_name_pool_str1745[sizeof("copt")]; - char unicode_prop_name_pool_str1750[sizeof("soyo")]; - char unicode_prop_name_pool_str1753[sizeof("intags")]; - char unicode_prop_name_pool_str1756[sizeof("inverticalforms")]; - char unicode_prop_name_pool_str1757[sizeof("ininscriptionalparthian")]; - char unicode_prop_name_pool_str1760[sizeof("ininscriptionalpahlavi")]; - char unicode_prop_name_pool_str1763[sizeof("meroitichieroglyphs")]; - char unicode_prop_name_pool_str1764[sizeof("asciihexdigit")]; - char unicode_prop_name_pool_str1766[sizeof("inethiopicextendeda")]; - char unicode_prop_name_pool_str1767[sizeof("invedicextensions")]; - char unicode_prop_name_pool_str1781[sizeof("nand")]; - char unicode_prop_name_pool_str1782[sizeof("cwl")]; - char unicode_prop_name_pool_str1785[sizeof("cprt")]; - char unicode_prop_name_pool_str1791[sizeof("innushu")]; - char unicode_prop_name_pool_str1794[sizeof("zanabazarsquare")]; - char unicode_prop_name_pool_str1797[sizeof("ingeometricshapesextended")]; - char unicode_prop_name_pool_str1798[sizeof("avst")]; - char unicode_prop_name_pool_str1808[sizeof("imperialaramaic")]; - char unicode_prop_name_pool_str1810[sizeof("bopo")]; - char unicode_prop_name_pool_str1812[sizeof("sarb")]; - char unicode_prop_name_pool_str1819[sizeof("inoldpersian")]; - char unicode_prop_name_pool_str1830[sizeof("intaiviet")]; - char unicode_prop_name_pool_str1834[sizeof("mahj")]; - char unicode_prop_name_pool_str1838[sizeof("inkatakanaphoneticextensions")]; - char unicode_prop_name_pool_str1845[sizeof("mahajani")]; - char unicode_prop_name_pool_str1871[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str1665[sizeof("oldpermic")]; + char unicode_prop_name_pool_str1666[sizeof("osge")]; + char unicode_prop_name_pool_str1672[sizeof("variationselector")]; + char unicode_prop_name_pool_str1674[sizeof("inkayahli")]; + char unicode_prop_name_pool_str1680[sizeof("inoriya")]; + char unicode_prop_name_pool_str1684[sizeof("inyezidi")]; + char unicode_prop_name_pool_str1687[sizeof("limb")]; + char unicode_prop_name_pool_str1689[sizeof("sinh")]; + char unicode_prop_name_pool_str1692[sizeof("shavian")]; + char unicode_prop_name_pool_str1697[sizeof("incoptic")]; + char unicode_prop_name_pool_str1698[sizeof("insyriacsupplement")]; + char unicode_prop_name_pool_str1699[sizeof("wara")]; + char unicode_prop_name_pool_str1714[sizeof("inhanunoo")]; + char unicode_prop_name_pool_str1715[sizeof("insinhalaarchaicnumbers")]; + char unicode_prop_name_pool_str1725[sizeof("inarabic")]; + char unicode_prop_name_pool_str1727[sizeof("hatran")]; + char unicode_prop_name_pool_str1729[sizeof("assigned")]; + char unicode_prop_name_pool_str1737[sizeof("sorasompeng")]; + char unicode_prop_name_pool_str1740[sizeof("spacingmark")]; + char unicode_prop_name_pool_str1748[sizeof("orkh")]; + char unicode_prop_name_pool_str1754[sizeof("space")]; + char unicode_prop_name_pool_str1757[sizeof("cuneiform")]; + char unicode_prop_name_pool_str1766[sizeof("arab")]; + char unicode_prop_name_pool_str1774[sizeof("format")]; + char unicode_prop_name_pool_str1775[sizeof("hatr")]; + char unicode_prop_name_pool_str1787[sizeof("inbasiclatin")]; + char unicode_prop_name_pool_str1788[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1789[sizeof("lyci")]; + char unicode_prop_name_pool_str1790[sizeof("lycian")]; + char unicode_prop_name_pool_str1808[sizeof("takri")]; + char unicode_prop_name_pool_str1811[sizeof("invai")]; + char unicode_prop_name_pool_str1814[sizeof("modifierletter")]; + char unicode_prop_name_pool_str1815[sizeof("unassigned")]; + char unicode_prop_name_pool_str1818[sizeof("mymr")]; + char unicode_prop_name_pool_str1821[sizeof("myanmar")]; + char unicode_prop_name_pool_str1828[sizeof("lowercaseletter")]; + char unicode_prop_name_pool_str1831[sizeof("taile")]; + char unicode_prop_name_pool_str1832[sizeof("dogra")]; + char unicode_prop_name_pool_str1849[sizeof("takr")]; + char unicode_prop_name_pool_str1850[sizeof("asciihexdigit")]; + char unicode_prop_name_pool_str1851[sizeof("separator")]; + char unicode_prop_name_pool_str1854[sizeof("inunifiedcanadianaboriginalsyllabics")]; + char unicode_prop_name_pool_str1858[sizeof("grbase")]; + char unicode_prop_name_pool_str1862[sizeof("bugi")]; + char unicode_prop_name_pool_str1870[sizeof("nd")]; + char unicode_prop_name_pool_str1871[sizeof("sogd")]; + char unicode_prop_name_pool_str1872[sizeof("insoyombo")]; char unicode_prop_name_pool_str1875[sizeof("inlisu")]; - char unicode_prop_name_pool_str1878[sizeof("softdotted")]; - char unicode_prop_name_pool_str1897[sizeof("unknown")]; - char unicode_prop_name_pool_str1898[sizeof("invariationselectorssupplement")]; - char unicode_prop_name_pool_str1910[sizeof("syrc")]; - char unicode_prop_name_pool_str1911[sizeof("hang")]; - char unicode_prop_name_pool_str1926[sizeof("incjksymbolsandpunctuation")]; - char unicode_prop_name_pool_str1932[sizeof("ingujarati")]; - char unicode_prop_name_pool_str1933[sizeof("bopomofo")]; - char unicode_prop_name_pool_str1936[sizeof("alpha")]; - char unicode_prop_name_pool_str1937[sizeof("khoj")]; - char unicode_prop_name_pool_str1939[sizeof("inpalmyrene")]; - char unicode_prop_name_pool_str1942[sizeof("ingunjalagondi")]; - char unicode_prop_name_pool_str1948[sizeof("inoldpermic")]; - char unicode_prop_name_pool_str1950[sizeof("inlepcha")]; - char unicode_prop_name_pool_str1951[sizeof("assigned")]; - char unicode_prop_name_pool_str1955[sizeof("incurrencysymbols")]; - char unicode_prop_name_pool_str1958[sizeof("insmallformvariants")]; - char unicode_prop_name_pool_str1959[sizeof("sorasompeng")]; - char unicode_prop_name_pool_str1964[sizeof("inlinearbsyllabary")]; - char unicode_prop_name_pool_str1965[sizeof("oldpersian")]; - char unicode_prop_name_pool_str1972[sizeof("caucasianalbanian")]; - char unicode_prop_name_pool_str1973[sizeof("inenclosedcjklettersandmonths")]; - char unicode_prop_name_pool_str1975[sizeof("hiragana")]; - char unicode_prop_name_pool_str1976[sizeof("inbamum")]; - char unicode_prop_name_pool_str1979[sizeof("inrejang")]; - char unicode_prop_name_pool_str1984[sizeof("graph")]; - char unicode_prop_name_pool_str1990[sizeof("sharada")]; - char unicode_prop_name_pool_str1991[sizeof("inethiopicsupplement")]; - char unicode_prop_name_pool_str1996[sizeof("indevanagariextended")]; - char unicode_prop_name_pool_str1997[sizeof("incoptic")]; - char unicode_prop_name_pool_str1998[sizeof("insyriacsupplement")]; - char unicode_prop_name_pool_str2004[sizeof("inmeroiticcursive")]; - char unicode_prop_name_pool_str2014[sizeof("hmng")]; + char unicode_prop_name_pool_str1877[sizeof("innushu")]; + char unicode_prop_name_pool_str1886[sizeof("inmongoliansupplement")]; + char unicode_prop_name_pool_str1887[sizeof("dogr")]; + char unicode_prop_name_pool_str1893[sizeof("phnx")]; + char unicode_prop_name_pool_str1894[sizeof("cwt")]; + char unicode_prop_name_pool_str1900[sizeof("buginese")]; + char unicode_prop_name_pool_str1905[sizeof("ingeorgiansupplement")]; + char unicode_prop_name_pool_str1912[sizeof("nl")]; + char unicode_prop_name_pool_str1913[sizeof("induployan")]; + char unicode_prop_name_pool_str1916[sizeof("olditalic")]; + char unicode_prop_name_pool_str1917[sizeof("inelymaic")]; + char unicode_prop_name_pool_str1922[sizeof("inbatak")]; + char unicode_prop_name_pool_str1924[sizeof("inkatakanaphoneticextensions")]; + char unicode_prop_name_pool_str1925[sizeof("inlisusupplement")]; + char unicode_prop_name_pool_str1926[sizeof("inphagspa")]; + char unicode_prop_name_pool_str1928[sizeof("inhanguljamo")]; + char unicode_prop_name_pool_str1930[sizeof("phag")]; + char unicode_prop_name_pool_str1938[sizeof("intibetan")]; + char unicode_prop_name_pool_str1940[sizeof("inhanguljamoextendeda")]; + char unicode_prop_name_pool_str1947[sizeof("inglagolitic")]; + char unicode_prop_name_pool_str1948[sizeof("inblockelements")]; + char unicode_prop_name_pool_str1951[sizeof("number")]; + char unicode_prop_name_pool_str1962[sizeof("incjkcompatibility")]; + char unicode_prop_name_pool_str1963[sizeof("term")]; + char unicode_prop_name_pool_str1984[sizeof("innumberforms")]; + char unicode_prop_name_pool_str1985[sizeof("inshavian")]; + char unicode_prop_name_pool_str1989[sizeof("ahex")]; + char unicode_prop_name_pool_str1991[sizeof("cf")]; + char unicode_prop_name_pool_str1993[sizeof("incopticepactnumbers")]; + char unicode_prop_name_pool_str1998[sizeof("intagalog")]; + char unicode_prop_name_pool_str2005[sizeof("inmayannumerals")]; + char unicode_prop_name_pool_str2011[sizeof("inarabicextendeda")]; + char unicode_prop_name_pool_str2016[sizeof("innoblock")]; + char unicode_prop_name_pool_str2018[sizeof("insuttonsignwriting")]; char unicode_prop_name_pool_str2022[sizeof("intelugu")]; - char unicode_prop_name_pool_str2029[sizeof("incombiningdiacriticalmarks")]; - char unicode_prop_name_pool_str2031[sizeof("mathsymbol")]; - char unicode_prop_name_pool_str2036[sizeof("titlecaseletter")]; - char unicode_prop_name_pool_str2038[sizeof("ugar")]; - char unicode_prop_name_pool_str2039[sizeof("incombiningdiacriticalmarksforsymbols")]; - char unicode_prop_name_pool_str2040[sizeof("spacingmark")]; - char unicode_prop_name_pool_str2043[sizeof("shrd")]; - char unicode_prop_name_pool_str2047[sizeof("injavanese")]; - char unicode_prop_name_pool_str2048[sizeof("syriac")]; - char unicode_prop_name_pool_str2054[sizeof("space")]; - char unicode_prop_name_pool_str2056[sizeof("hebr")]; - char unicode_prop_name_pool_str2061[sizeof("ext")]; - char unicode_prop_name_pool_str2064[sizeof("inhanguljamo")]; - char unicode_prop_name_pool_str2066[sizeof("phag")]; - char unicode_prop_name_pool_str2076[sizeof("inhanguljamoextendeda")]; - char unicode_prop_name_pool_str2082[sizeof("wancho")]; - char unicode_prop_name_pool_str2084[sizeof("bugi")]; - char unicode_prop_name_pool_str2089[sizeof("tamil")]; - char unicode_prop_name_pool_str2093[sizeof("sogd")]; - char unicode_prop_name_pool_str2094[sizeof("orkh")]; - char unicode_prop_name_pool_str2097[sizeof("oldpermic")]; - char unicode_prop_name_pool_str2100[sizeof("siddham")]; - char unicode_prop_name_pool_str2102[sizeof("incyrillicextendedb")]; - char unicode_prop_name_pool_str2105[sizeof("inbrahmi")]; - char unicode_prop_name_pool_str2108[sizeof("inmongoliansupplement")]; - char unicode_prop_name_pool_str2113[sizeof("thaa")]; - char unicode_prop_name_pool_str2118[sizeof("thaana")]; - char unicode_prop_name_pool_str2120[sizeof("thai")]; - char unicode_prop_name_pool_str2122[sizeof("buginese")]; - char unicode_prop_name_pool_str2127[sizeof("ingeorgiansupplement")]; - char unicode_prop_name_pool_str2129[sizeof("digit")]; - char unicode_prop_name_pool_str2132[sizeof("cyrillic")]; - char unicode_prop_name_pool_str2149[sizeof("sylo")]; - char unicode_prop_name_pool_str2150[sizeof("inphoneticextensions")]; - char unicode_prop_name_pool_str2151[sizeof("separator")]; - char unicode_prop_name_pool_str2159[sizeof("inethiopicextended")]; - char unicode_prop_name_pool_str2163[sizeof("inmathematicalalphanumericsymbols")]; - char unicode_prop_name_pool_str2168[sizeof("insymbolsandpictographsextendeda")]; - char unicode_prop_name_pool_str2170[sizeof("nd")]; - char unicode_prop_name_pool_str2176[sizeof("tirh")]; - char unicode_prop_name_pool_str2178[sizeof("tirhuta")]; - char unicode_prop_name_pool_str2184[sizeof("incombiningdiacriticalmarkssupplement")]; - char unicode_prop_name_pool_str2193[sizeof("extender")]; - char unicode_prop_name_pool_str2197[sizeof("wcho")]; - char unicode_prop_name_pool_str2199[sizeof("inbengali")]; - char unicode_prop_name_pool_str2201[sizeof("talu")]; - char unicode_prop_name_pool_str2206[sizeof("tang")]; - char unicode_prop_name_pool_str2207[sizeof("warangciti")]; - char unicode_prop_name_pool_str2210[sizeof("tagbanwa")]; - char unicode_prop_name_pool_str2211[sizeof("orya")]; - char unicode_prop_name_pool_str2212[sizeof("nl")]; - char unicode_prop_name_pool_str2213[sizeof("induployan")]; - char unicode_prop_name_pool_str2214[sizeof("cwu")]; - char unicode_prop_name_pool_str2216[sizeof("inbuginese")]; - char unicode_prop_name_pool_str2220[sizeof("telu")]; - char unicode_prop_name_pool_str2223[sizeof("ogam")]; - char unicode_prop_name_pool_str2226[sizeof("taitham")]; - char unicode_prop_name_pool_str2237[sizeof("rjng")]; - char unicode_prop_name_pool_str2240[sizeof("insuttonsignwriting")]; - char unicode_prop_name_pool_str2250[sizeof("incombiningdiacriticalmarksextended")]; - char unicode_prop_name_pool_str2251[sizeof("number")]; - char unicode_prop_name_pool_str2264[sizeof("inyijinghexagramsymbols")]; - char unicode_prop_name_pool_str2277[sizeof("whitespace")]; - char unicode_prop_name_pool_str2278[sizeof("currencysymbol")]; - char unicode_prop_name_pool_str2285[sizeof("inottomansiyaqnumbers")]; - char unicode_prop_name_pool_str2288[sizeof("inlimbu")]; - char unicode_prop_name_pool_str2293[sizeof("incopticepactnumbers")]; - char unicode_prop_name_pool_str2295[sizeof("ingeorgianextended")]; - char unicode_prop_name_pool_str2305[sizeof("inphoneticextensionssupplement")]; - char unicode_prop_name_pool_str2308[sizeof("any")]; - char unicode_prop_name_pool_str2320[sizeof("osge")]; - char unicode_prop_name_pool_str2325[sizeof("defaultignorablecodepoint")]; - char unicode_prop_name_pool_str2326[sizeof("hangul")]; - char unicode_prop_name_pool_str2333[sizeof("newa")]; - char unicode_prop_name_pool_str2343[sizeof("ethi")]; - char unicode_prop_name_pool_str2345[sizeof("hanifirohingya")]; - char unicode_prop_name_pool_str2346[sizeof("hmnp")]; - char unicode_prop_name_pool_str2348[sizeof("olditalic")]; - char unicode_prop_name_pool_str2349[sizeof("incjkunifiedideographsextensionb")]; - char unicode_prop_name_pool_str2352[sizeof("rohg")]; - char unicode_prop_name_pool_str2353[sizeof("innyiakengpuachuehmong")]; - char unicode_prop_name_pool_str2355[sizeof("incjkradicalssupplement")]; - char unicode_prop_name_pool_str2364[sizeof("newtailue")]; - char unicode_prop_name_pool_str2365[sizeof("newline")]; - char unicode_prop_name_pool_str2366[sizeof("lepcha")]; - char unicode_prop_name_pool_str2375[sizeof("deprecated")]; - char unicode_prop_name_pool_str2381[sizeof("buhd")]; - char unicode_prop_name_pool_str2391[sizeof("inglagolitic")]; - char unicode_prop_name_pool_str2395[sizeof("inaegeannumbers")]; - char unicode_prop_name_pool_str2400[sizeof("modifiersymbol")]; - char unicode_prop_name_pool_str2410[sizeof("surrogate")]; - char unicode_prop_name_pool_str2418[sizeof("inletterlikesymbols")]; - char unicode_prop_name_pool_str2426[sizeof("idstrinaryoperator")]; - char unicode_prop_name_pool_str2442[sizeof("intagalog")]; - char unicode_prop_name_pool_str2443[sizeof("tangut")]; - char unicode_prop_name_pool_str2445[sizeof("osmanya")]; - char unicode_prop_name_pool_str2447[sizeof("oalpha")]; - char unicode_prop_name_pool_str2448[sizeof("inphagspa")]; - char unicode_prop_name_pool_str2455[sizeof("ugaritic")]; - char unicode_prop_name_pool_str2456[sizeof("otheridcontinue")]; - char unicode_prop_name_pool_str2460[sizeof("inarabicpresentationformsb")]; - char unicode_prop_name_pool_str2462[sizeof("inbassavah")]; - char unicode_prop_name_pool_str2469[sizeof("other")]; - char unicode_prop_name_pool_str2478[sizeof("othernumber")]; - char unicode_prop_name_pool_str2480[sizeof("sylotinagri")]; - char unicode_prop_name_pool_str2487[sizeof("ingothic")]; - char unicode_prop_name_pool_str2498[sizeof("inbuhid")]; - char unicode_prop_name_pool_str2502[sizeof("inlatin1supplement")]; - char unicode_prop_name_pool_str2516[sizeof("intagbanwa")]; - char unicode_prop_name_pool_str2523[sizeof("shaw")]; - char unicode_prop_name_pool_str2529[sizeof("oldhungarian")]; - char unicode_prop_name_pool_str2538[sizeof("inmahjongtiles")]; - char unicode_prop_name_pool_str2542[sizeof("hung")]; - char unicode_prop_name_pool_str2544[sizeof("tifinagh")]; - char unicode_prop_name_pool_str2554[sizeof("inbopomofo")]; - char unicode_prop_name_pool_str2561[sizeof("narb")]; - char unicode_prop_name_pool_str2571[sizeof("inyisyllables")]; - char unicode_prop_name_pool_str2573[sizeof("kayahli")]; - char unicode_prop_name_pool_str2578[sizeof("otheralphabetic")]; - char unicode_prop_name_pool_str2582[sizeof("phagspa")]; - char unicode_prop_name_pool_str2584[sizeof("inprivateusearea")]; - char unicode_prop_name_pool_str2588[sizeof("elba")]; - char unicode_prop_name_pool_str2591[sizeof("nchar")]; - char unicode_prop_name_pool_str2607[sizeof("spaceseparator")]; - char unicode_prop_name_pool_str2609[sizeof("tibt")]; - char unicode_prop_name_pool_str2611[sizeof("extendedpictographic")]; - char unicode_prop_name_pool_str2615[sizeof("tibetan")]; - char unicode_prop_name_pool_str2616[sizeof("sgnw")]; - char unicode_prop_name_pool_str2622[sizeof("hexdigit")]; - char unicode_prop_name_pool_str2623[sizeof("tfng")]; - char unicode_prop_name_pool_str2627[sizeof("inbamumsupplement")]; - char unicode_prop_name_pool_str2632[sizeof("tavt")]; - char unicode_prop_name_pool_str2633[sizeof("incombininghalfmarks")]; - char unicode_prop_name_pool_str2634[sizeof("inarabicmathematicalalphabeticsymbols")]; - char unicode_prop_name_pool_str2638[sizeof("khudawadi")]; - char unicode_prop_name_pool_str2641[sizeof("inhalfwidthandfullwidthforms")]; - char unicode_prop_name_pool_str2652[sizeof("inhangulsyllables")]; - char unicode_prop_name_pool_str2653[sizeof("elym")]; - char unicode_prop_name_pool_str2669[sizeof("symbol")]; - char unicode_prop_name_pool_str2692[sizeof("bassavah")]; - char unicode_prop_name_pool_str2696[sizeof("elymaic")]; - char unicode_prop_name_pool_str2698[sizeof("changeswhencasemapped")]; - char unicode_prop_name_pool_str2709[sizeof("oldturkic")]; - char unicode_prop_name_pool_str2725[sizeof("inplayingcards")]; - char unicode_prop_name_pool_str2767[sizeof("zp")]; - char unicode_prop_name_pool_str2775[sizeof("elbasan")]; - char unicode_prop_name_pool_str2776[sizeof("buhid")]; - char unicode_prop_name_pool_str2779[sizeof("noncharactercodepoint")]; - char unicode_prop_name_pool_str2785[sizeof("finalpunctuation")]; - char unicode_prop_name_pool_str2794[sizeof("inpsalterpahlavi")]; - char unicode_prop_name_pool_str2800[sizeof("inpaucinhau")]; - char unicode_prop_name_pool_str2801[sizeof("nonspacingmark")]; - char unicode_prop_name_pool_str2804[sizeof("changeswhentitlecased")]; - char unicode_prop_name_pool_str2808[sizeof("inindicsiyaqnumbers")]; - char unicode_prop_name_pool_str2813[sizeof("phlp")]; - char unicode_prop_name_pool_str2824[sizeof("wspace")]; - char unicode_prop_name_pool_str2831[sizeof("nbat")]; - char unicode_prop_name_pool_str2836[sizeof("hluw")]; - char unicode_prop_name_pool_str2838[sizeof("cypriot")]; - char unicode_prop_name_pool_str2839[sizeof("nabataean")]; - char unicode_prop_name_pool_str2841[sizeof("inalchemicalsymbols")]; - char unicode_prop_name_pool_str2847[sizeof("dupl")]; - char unicode_prop_name_pool_str2856[sizeof("otherlowercase")]; - char unicode_prop_name_pool_str2875[sizeof("inarabicsupplement")]; - char unicode_prop_name_pool_str2876[sizeof("inalphabeticpresentationforms")]; - char unicode_prop_name_pool_str2890[sizeof("otherletter")]; - char unicode_prop_name_pool_str2916[sizeof("emojipresentation")]; - char unicode_prop_name_pool_str2930[sizeof("changeswhenlowercased")]; - char unicode_prop_name_pool_str2953[sizeof("dashpunctuation")]; - char unicode_prop_name_pool_str2954[sizeof("oldsogdian")]; - char unicode_prop_name_pool_str2970[sizeof("intangutcomponents")]; - char unicode_prop_name_pool_str2977[sizeof("soyombo")]; - char unicode_prop_name_pool_str2996[sizeof("paragraphseparator")]; - char unicode_prop_name_pool_str3012[sizeof("changeswhencasefolded")]; - char unicode_prop_name_pool_str3015[sizeof("othersymbol")]; - char unicode_prop_name_pool_str3020[sizeof("inlatinextendedb")]; - char unicode_prop_name_pool_str3072[sizeof("otheruppercase")]; - char unicode_prop_name_pool_str3079[sizeof("otheridstart")]; - char unicode_prop_name_pool_str3084[sizeof("inhebrew")]; - char unicode_prop_name_pool_str3088[sizeof("oldnortharabian")]; - char unicode_prop_name_pool_str3092[sizeof("omath")]; - char unicode_prop_name_pool_str3099[sizeof("incypriotsyllabary")]; - char unicode_prop_name_pool_str3118[sizeof("inmathematicaloperators")]; - char unicode_prop_name_pool_str3146[sizeof("changeswhenuppercased")]; - char unicode_prop_name_pool_str3154[sizeof("nshu")]; - char unicode_prop_name_pool_str3182[sizeof("insuperscriptsandsubscripts")]; - char unicode_prop_name_pool_str3188[sizeof("ogrext")]; - char unicode_prop_name_pool_str3197[sizeof("inhanguljamoextendedb")]; - char unicode_prop_name_pool_str3198[sizeof("alphabetic")]; - char unicode_prop_name_pool_str3199[sizeof("dep")]; - char unicode_prop_name_pool_str3216[sizeof("oupper")]; - char unicode_prop_name_pool_str3258[sizeof("zyyy")]; - char unicode_prop_name_pool_str3267[sizeof("aghb")]; - char unicode_prop_name_pool_str3285[sizeof("ogham")]; - char unicode_prop_name_pool_str3306[sizeof("rejang")]; - char unicode_prop_name_pool_str3324[sizeof("tagb")]; - char unicode_prop_name_pool_str3350[sizeof("hyphen")]; - char unicode_prop_name_pool_str3355[sizeof("insupplementalarrowsa")]; - char unicode_prop_name_pool_str3413[sizeof("inpahawhhmong")]; - char unicode_prop_name_pool_str3459[sizeof("nushu")]; - char unicode_prop_name_pool_str3478[sizeof("othermath")]; - char unicode_prop_name_pool_str3491[sizeof("insupplementalarrowsc")]; - char unicode_prop_name_pool_str3494[sizeof("insupplementalmathematicaloperators")]; - char unicode_prop_name_pool_str3500[sizeof("otherdefaultignorablecodepoint")]; - char unicode_prop_name_pool_str3527[sizeof("inhighprivateusesurrogates")]; - char unicode_prop_name_pool_str3538[sizeof("duployan")]; - char unicode_prop_name_pool_str3663[sizeof("oldsoutharabian")]; - char unicode_prop_name_pool_str3666[sizeof("tglg")]; - char unicode_prop_name_pool_str3685[sizeof("tagalog")]; - char unicode_prop_name_pool_str3692[sizeof("inbopomofoextended")]; - char unicode_prop_name_pool_str3731[sizeof("signwriting")]; - char unicode_prop_name_pool_str3750[sizeof("inegyptianhieroglyphs")]; - char unicode_prop_name_pool_str3763[sizeof("inegyptianhieroglyphformatcontrols")]; - char unicode_prop_name_pool_str3807[sizeof("upper")]; - char unicode_prop_name_pool_str3810[sizeof("otherpunctuation")]; - char unicode_prop_name_pool_str3872[sizeof("ethiopic")]; - char unicode_prop_name_pool_str3881[sizeof("hebrew")]; - char unicode_prop_name_pool_str3901[sizeof("telugu")]; - char unicode_prop_name_pool_str3910[sizeof("uppercase")]; - char unicode_prop_name_pool_str3937[sizeof("insupplementalpunctuation")]; - char unicode_prop_name_pool_str3946[sizeof("unifiedideograph")]; - char unicode_prop_name_pool_str3961[sizeof("pahawhhmong")]; - char unicode_prop_name_pool_str3971[sizeof("inglagoliticsupplement")]; - char unicode_prop_name_pool_str3992[sizeof("inboxdrawing")]; - char unicode_prop_name_pool_str4279[sizeof("uppercaseletter")]; - char unicode_prop_name_pool_str4298[sizeof("othergraphemeextend")]; - char unicode_prop_name_pool_str4401[sizeof("inhighsurrogates")]; - char unicode_prop_name_pool_str4476[sizeof("insupplementalarrowsb")]; - char unicode_prop_name_pool_str4562[sizeof("inhangulcompatibilityjamo")]; - char unicode_prop_name_pool_str4563[sizeof("egyp")]; - char unicode_prop_name_pool_str4577[sizeof("insupplementalsymbolsandpictographs")]; - char unicode_prop_name_pool_str4659[sizeof("nyiakengpuachuehmong")]; - char unicode_prop_name_pool_str4688[sizeof("insupplementaryprivateuseareaa")]; - char unicode_prop_name_pool_str4822[sizeof("openpunctuation")]; - char unicode_prop_name_pool_str4851[sizeof("egyptianhieroglyphs")]; - char unicode_prop_name_pool_str5809[sizeof("insupplementaryprivateuseareab")]; + char unicode_prop_name_pool_str2023[sizeof("inlowsurrogates")]; + char unicode_prop_name_pool_str2028[sizeof("pf")]; + char unicode_prop_name_pool_str2032[sizeof("inbalinese")]; + char unicode_prop_name_pool_str2033[sizeof("patsyn")]; + char unicode_prop_name_pool_str2038[sizeof("inbyzantinemusicalsymbols")]; + char unicode_prop_name_pool_str2047[sizeof("lydi")]; + char unicode_prop_name_pool_str2048[sizeof("lydian")]; + char unicode_prop_name_pool_str2050[sizeof("inmyanmarextendedb")]; + char unicode_prop_name_pool_str2054[sizeof("incjkunifiedideographsextensiong")]; + char unicode_prop_name_pool_str2055[sizeof("incjkradicalssupplement")]; + char unicode_prop_name_pool_str2072[sizeof("cwl")]; + char unicode_prop_name_pool_str2075[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; + char unicode_prop_name_pool_str2076[sizeof("sharada")]; + char unicode_prop_name_pool_str2077[sizeof("inethiopicsupplement")]; + char unicode_prop_name_pool_str2080[sizeof("inyiradicals")]; + char unicode_prop_name_pool_str2087[sizeof("gujr")]; + char unicode_prop_name_pool_str2097[sizeof("oldhungarian")]; + char unicode_prop_name_pool_str2098[sizeof("gujarati")]; + char unicode_prop_name_pool_str2101[sizeof("oalpha")]; + char unicode_prop_name_pool_str2106[sizeof("ugar")]; + char unicode_prop_name_pool_str2109[sizeof("word")]; + char unicode_prop_name_pool_str2110[sizeof("otheridcontinue")]; + char unicode_prop_name_pool_str2115[sizeof("inbraillepatterns")]; + char unicode_prop_name_pool_str2123[sizeof("other")]; + char unicode_prop_name_pool_str2126[sizeof("idstrinaryoperator")]; + char unicode_prop_name_pool_str2129[sizeof("shrd")]; + char unicode_prop_name_pool_str2131[sizeof("innyiakengpuachuehmong")]; + char unicode_prop_name_pool_str2132[sizeof("othernumber")]; + char unicode_prop_name_pool_str2133[sizeof("cyrl")]; + char unicode_prop_name_pool_str2147[sizeof("taiviet")]; + char unicode_prop_name_pool_str2152[sizeof("lepcha")]; + char unicode_prop_name_pool_str2156[sizeof("graph")]; + char unicode_prop_name_pool_str2157[sizeof("idsb")]; + char unicode_prop_name_pool_str2158[sizeof("inmiscellaneousmathematicalsymbolsb")]; + char unicode_prop_name_pool_str2162[sizeof("zp")]; + char unicode_prop_name_pool_str2177[sizeof("mlym")]; + char unicode_prop_name_pool_str2182[sizeof("malayalam")]; + char unicode_prop_name_pool_str2186[sizeof("siddham")]; + char unicode_prop_name_pool_str2188[sizeof("surrogate")]; + char unicode_prop_name_pool_str2194[sizeof("palmyrene")]; + char unicode_prop_name_pool_str2200[sizeof("java")]; + char unicode_prop_name_pool_str2201[sizeof("nonspacingmark")]; + char unicode_prop_name_pool_str2202[sizeof("inlatin1supplement")]; + char unicode_prop_name_pool_str2207[sizeof("ethi")]; + char unicode_prop_name_pool_str2212[sizeof("indevanagari")]; + char unicode_prop_name_pool_str2213[sizeof("incjkunifiedideographsextensionf")]; + char unicode_prop_name_pool_str2214[sizeof("dash")]; + char unicode_prop_name_pool_str2216[sizeof("rohg")]; + char unicode_prop_name_pool_str2219[sizeof("tale")]; + char unicode_prop_name_pool_str2222[sizeof("hang")]; + char unicode_prop_name_pool_str2232[sizeof("otheralphabetic")]; + char unicode_prop_name_pool_str2238[sizeof("zanabazarsquare")]; + char unicode_prop_name_pool_str2243[sizeof("ingujarati")]; + char unicode_prop_name_pool_str2245[sizeof("javanese")]; + char unicode_prop_name_pool_str2249[sizeof("inmathematicalalphanumericsymbols")]; + char unicode_prop_name_pool_str2253[sizeof("ingunjalagondi")]; + char unicode_prop_name_pool_str2261[sizeof("sarb")]; + char unicode_prop_name_pool_str2267[sizeof("ext")]; + char unicode_prop_name_pool_str2272[sizeof("avestan")]; + char unicode_prop_name_pool_str2277[sizeof("oldturkic")]; + char unicode_prop_name_pool_str2278[sizeof("inphoneticextensions")]; + char unicode_prop_name_pool_str2280[sizeof("inethiopicextendeda")]; + char unicode_prop_name_pool_str2286[sizeof("hiragana")]; + char unicode_prop_name_pool_str2290[sizeof("inrejang")]; + char unicode_prop_name_pool_str2300[sizeof("oldsogdian")]; + char unicode_prop_name_pool_str2303[sizeof("taml")]; + char unicode_prop_name_pool_str2306[sizeof("soyo")]; + char unicode_prop_name_pool_str2307[sizeof("spaceseparator")]; + char unicode_prop_name_pool_str2319[sizeof("meroitichieroglyphs")]; + char unicode_prop_name_pool_str2323[sizeof("newa")]; + char unicode_prop_name_pool_str2325[sizeof("hmng")]; + char unicode_prop_name_pool_str2329[sizeof("epres")]; + char unicode_prop_name_pool_str2335[sizeof("orya")]; + char unicode_prop_name_pool_str2350[sizeof("terminalpunctuation")]; + char unicode_prop_name_pool_str2351[sizeof("ingothic")]; + char unicode_prop_name_pool_str2354[sizeof("newtailue")]; + char unicode_prop_name_pool_str2355[sizeof("newline")]; + char unicode_prop_name_pool_str2364[sizeof("cwcf")]; + char unicode_prop_name_pool_str2368[sizeof("phagspa")]; + char unicode_prop_name_pool_str2373[sizeof("invariationselectors")]; + char unicode_prop_name_pool_str2377[sizeof("nchar")]; + char unicode_prop_name_pool_str2383[sizeof("intifinagh")]; + char unicode_prop_name_pool_str2386[sizeof("inverticalforms")]; + char unicode_prop_name_pool_str2394[sizeof("emojipresentation")]; + char unicode_prop_name_pool_str2397[sizeof("invedicextensions")]; + char unicode_prop_name_pool_str2399[sizeof("extender")]; + char unicode_prop_name_pool_str2414[sizeof("extpict")]; + char unicode_prop_name_pool_str2421[sizeof("caucasianalbanian")]; + char unicode_prop_name_pool_str2425[sizeof("inbamum")]; + char unicode_prop_name_pool_str2426[sizeof("inbengali")]; + char unicode_prop_name_pool_str2428[sizeof("avst")]; + char unicode_prop_name_pool_str2433[sizeof("inphoneticextensionssupplement")]; + char unicode_prop_name_pool_str2439[sizeof("ebase")]; + char unicode_prop_name_pool_str2443[sizeof("inbuginese")]; + char unicode_prop_name_pool_str2446[sizeof("softdotted")]; + char unicode_prop_name_pool_str2448[sizeof("intangutcomponents")]; + char unicode_prop_name_pool_str2453[sizeof("mahj")]; + char unicode_prop_name_pool_str2460[sizeof("intaiviet")]; + char unicode_prop_name_pool_str2464[sizeof("mahajani")]; + char unicode_prop_name_pool_str2466[sizeof("syrc")]; + char unicode_prop_name_pool_str2467[sizeof("buhd")]; + char unicode_prop_name_pool_str2474[sizeof("paragraphseparator")]; + char unicode_prop_name_pool_str2475[sizeof("digit")]; + char unicode_prop_name_pool_str2477[sizeof("unknown")]; + char unicode_prop_name_pool_str2478[sizeof("incombiningdiacriticalmarks")]; + char unicode_prop_name_pool_str2484[sizeof("oupper")]; + char unicode_prop_name_pool_str2488[sizeof("incombiningdiacriticalmarksforsymbols")]; + char unicode_prop_name_pool_str2500[sizeof("inpaucinhau")]; + char unicode_prop_name_pool_str2501[sizeof("ingeorgianextended")]; + char unicode_prop_name_pool_str2504[sizeof("cwu")]; + char unicode_prop_name_pool_str2506[sizeof("inenclosedcjklettersandmonths")]; + char unicode_prop_name_pool_str2510[sizeof("otherlowercase")]; + char unicode_prop_name_pool_str2511[sizeof("incurrencysymbols")]; + char unicode_prop_name_pool_str2516[sizeof("inhangulsyllables")]; + char unicode_prop_name_pool_str2520[sizeof("inlinearbsyllabary")]; + char unicode_prop_name_pool_str2523[sizeof("ugaritic")]; + char unicode_prop_name_pool_str2528[sizeof("invariationselectorssupplement")]; + char unicode_prop_name_pool_str2541[sizeof("warangciti")]; + char unicode_prop_name_pool_str2544[sizeof("otherletter")]; + char unicode_prop_name_pool_str2548[sizeof("rjng")]; + char unicode_prop_name_pool_str2556[sizeof("khoj")]; + char unicode_prop_name_pool_str2562[sizeof("changeswhencasemapped")]; + char unicode_prop_name_pool_str2565[sizeof("noncharactercodepoint")]; + char unicode_prop_name_pool_str2569[sizeof("osmanya")]; + char unicode_prop_name_pool_str2571[sizeof("finalpunctuation")]; + char unicode_prop_name_pool_str2579[sizeof("hmnp")]; + char unicode_prop_name_pool_str2580[sizeof("inpsalterpahlavi")]; + char unicode_prop_name_pool_str2582[sizeof("insuperscriptsandsubscripts")]; + char unicode_prop_name_pool_str2587[sizeof("mathsymbol")]; + char unicode_prop_name_pool_str2588[sizeof("insmallformvariants")]; + char unicode_prop_name_pool_str2599[sizeof("phlp")]; + char unicode_prop_name_pool_str2604[sizeof("syriac")]; + char unicode_prop_name_pool_str2609[sizeof("intangutsupplement")]; + char unicode_prop_name_pool_str2614[sizeof("tang")]; + char unicode_prop_name_pool_str2617[sizeof("insymbolsandpictographsextendeda")]; + char unicode_prop_name_pool_str2618[sizeof("tagbanwa")]; + char unicode_prop_name_pool_str2622[sizeof("inaegeannumbers")]; + char unicode_prop_name_pool_str2626[sizeof("indevanagariextended")]; + char unicode_prop_name_pool_str2633[sizeof("incombiningdiacriticalmarkssupplement")]; + char unicode_prop_name_pool_str2634[sizeof("inmeroiticcursive")]; + char unicode_prop_name_pool_str2640[sizeof("inbrahmi")]; + char unicode_prop_name_pool_str2643[sizeof("deprecated")]; + char unicode_prop_name_pool_str2662[sizeof("inalphabeticpresentationforms")]; + char unicode_prop_name_pool_str2666[sizeof("titlecaseletter")]; + char unicode_prop_name_pool_str2668[sizeof("changeswhentitlecased")]; + char unicode_prop_name_pool_str2669[sizeof("othersymbol")]; + char unicode_prop_name_pool_str2673[sizeof("inethiopicextended")]; + char unicode_prop_name_pool_str2684[sizeof("sgnw")]; + char unicode_prop_name_pool_str2688[sizeof("cyrillic")]; + char unicode_prop_name_pool_str2699[sizeof("incombiningdiacriticalmarksextended")]; + char unicode_prop_name_pool_str2703[sizeof("inbopomofo")]; + char unicode_prop_name_pool_str2705[sizeof("sylo")]; + char unicode_prop_name_pool_str2710[sizeof("narb")]; + char unicode_prop_name_pool_str2717[sizeof("ogham")]; + char unicode_prop_name_pool_str2719[sizeof("tamil")]; + char unicode_prop_name_pool_str2724[sizeof("wancho")]; + char unicode_prop_name_pool_str2726[sizeof("otheruppercase")]; + char unicode_prop_name_pool_str2727[sizeof("currencysymbol")]; + char unicode_prop_name_pool_str2733[sizeof("otheridstart")]; + char unicode_prop_name_pool_str2737[sizeof("inlimbu")]; + char unicode_prop_name_pool_str2743[sizeof("intagbanwa")]; + char unicode_prop_name_pool_str2755[sizeof("insupplementalarrowsa")]; + char unicode_prop_name_pool_str2761[sizeof("khitansmallscript")]; + char unicode_prop_name_pool_str2774[sizeof("insymbolsforlegacycomputing")]; + char unicode_prop_name_pool_str2789[sizeof("deva")]; + char unicode_prop_name_pool_str2794[sizeof("changeswhenlowercased")]; + char unicode_prop_name_pool_str2798[sizeof("incjkunifiedideographsextensionb")]; + char unicode_prop_name_pool_str2805[sizeof("devanagari")]; + char unicode_prop_name_pool_str2808[sizeof("tirhuta")]; + char unicode_prop_name_pool_str2815[sizeof("elba")]; + char unicode_prop_name_pool_str2817[sizeof("extendedpictographic")]; + char unicode_prop_name_pool_str2825[sizeof("inindicsiyaqnumbers")]; + char unicode_prop_name_pool_str2829[sizeof("thaa")]; + char unicode_prop_name_pool_str2831[sizeof("talu")]; + char unicode_prop_name_pool_str2832[sizeof("omath")]; + char unicode_prop_name_pool_str2834[sizeof("thaana")]; + char unicode_prop_name_pool_str2836[sizeof("thai")]; + char unicode_prop_name_pool_str2839[sizeof("wcho")]; + char unicode_prop_name_pool_str2841[sizeof("inottomansiyaqnumbers")]; + char unicode_prop_name_pool_str2850[sizeof("telu")]; + char unicode_prop_name_pool_str2853[sizeof("hung")]; + char unicode_prop_name_pool_str2859[sizeof("hangul")]; + char unicode_prop_name_pool_str2862[sizeof("buhid")]; + char unicode_prop_name_pool_str2867[sizeof("inletterlikesymbols")]; + char unicode_prop_name_pool_str2891[sizeof("insupplementalarrowsc")]; + char unicode_prop_name_pool_str2892[sizeof("tirh")]; + char unicode_prop_name_pool_str2894[sizeof("insupplementalmathematicaloperators")]; + char unicode_prop_name_pool_str2899[sizeof("shaw")]; + char unicode_prop_name_pool_str2904[sizeof("inmathematicaloperators")]; + char unicode_prop_name_pool_str2914[sizeof("inprivateusearea")]; + char unicode_prop_name_pool_str2919[sizeof("whitespace")]; + char unicode_prop_name_pool_str2940[sizeof("nshu")]; + char unicode_prop_name_pool_str2942[sizeof("taitham")]; + char unicode_prop_name_pool_str2962[sizeof("ogrext")]; + char unicode_prop_name_pool_str2977[sizeof("inpahawhhmong")]; + char unicode_prop_name_pool_str2979[sizeof("incyrillicextendedb")]; + char unicode_prop_name_pool_str2980[sizeof("nbat")]; + char unicode_prop_name_pool_str2981[sizeof("inplayingcards")]; + char unicode_prop_name_pool_str2983[sizeof("hex")]; + char unicode_prop_name_pool_str2987[sizeof("elym")]; + char unicode_prop_name_pool_str2988[sizeof("nabataean")]; + char unicode_prop_name_pool_str2997[sizeof("inbassavah")]; + char unicode_prop_name_pool_str3002[sizeof("elbasan")]; + char unicode_prop_name_pool_str3010[sizeof("changeswhenuppercased")]; + char unicode_prop_name_pool_str3014[sizeof("khudawadi")]; + char unicode_prop_name_pool_str3024[sizeof("inarabicsupplement")]; + char unicode_prop_name_pool_str3030[sizeof("elymaic")]; + char unicode_prop_name_pool_str3033[sizeof("inbuhid")]; + char unicode_prop_name_pool_str3036[sizeof("sylotinagri")]; + char unicode_prop_name_pool_str3038[sizeof("hebr")]; + char unicode_prop_name_pool_str3073[sizeof("tangut")]; + char unicode_prop_name_pool_str3076[sizeof("inbamumsupplement")]; + char unicode_prop_name_pool_str3080[sizeof("wspace")]; + char unicode_prop_name_pool_str3094[sizeof("cypriot")]; + char unicode_prop_name_pool_str3105[sizeof("oldnortharabian")]; + char unicode_prop_name_pool_str3115[sizeof("dupl")]; + char unicode_prop_name_pool_str3143[sizeof("ecomp")]; + char unicode_prop_name_pool_str3154[sizeof("otherdefaultignorablecodepoint")]; + char unicode_prop_name_pool_str3157[sizeof("inmahjongtiles")]; + char unicode_prop_name_pool_str3159[sizeof("nushu")]; + char unicode_prop_name_pool_str3164[sizeof("otherpunctuation")]; + char unicode_prop_name_pool_str3167[sizeof("dep")]; + char unicode_prop_name_pool_str3168[sizeof("incombininghalfmarks")]; + char unicode_prop_name_pool_str3169[sizeof("inarabicmathematicalalphabeticsymbols")]; + char unicode_prop_name_pool_str3210[sizeof("injavanese")]; + char unicode_prop_name_pool_str3215[sizeof("kayahli")]; + char unicode_prop_name_pool_str3218[sizeof("othermath")]; + char unicode_prop_name_pool_str3221[sizeof("dashpunctuation")]; + char unicode_prop_name_pool_str3224[sizeof("hanifirohingya")]; + char unicode_prop_name_pool_str3225[sizeof("symbol")]; + char unicode_prop_name_pool_str3227[sizeof("inglagoliticsupplement")]; + char unicode_prop_name_pool_str3295[sizeof("inhalfwidthandfullwidthforms")]; + char unicode_prop_name_pool_str3337[sizeof("insupplementalpunctuation")]; + char unicode_prop_name_pool_str3347[sizeof("alphabetic")]; + char unicode_prop_name_pool_str3353[sizeof("inyijinghexagramsymbols")]; + char unicode_prop_name_pool_str3355[sizeof("incypriotsyllabary")]; + char unicode_prop_name_pool_str3358[sizeof("inarabicpresentationformsb")]; + char unicode_prop_name_pool_str3361[sizeof("hexdigit")]; + char unicode_prop_name_pool_str3376[sizeof("inalchemicalsymbols")]; + char unicode_prop_name_pool_str3395[sizeof("rejang")]; + char unicode_prop_name_pool_str3408[sizeof("bassavah")]; + char unicode_prop_name_pool_str3417[sizeof("modifiersymbol")]; + char unicode_prop_name_pool_str3420[sizeof("any")]; + char unicode_prop_name_pool_str3436[sizeof("ethiopic")]; + char unicode_prop_name_pool_str3444[sizeof("changeswhencasefolded")]; + char unicode_prop_name_pool_str3461[sizeof("defaultignorablecodepoint")]; + char unicode_prop_name_pool_str3477[sizeof("inhighprivateusesurrogates")]; + char unicode_prop_name_pool_str3479[sizeof("indivesakuru")]; + char unicode_prop_name_pool_str3497[sizeof("upper")]; + char unicode_prop_name_pool_str3510[sizeof("inhanguljamoextendedb")]; + char unicode_prop_name_pool_str3577[sizeof("signwriting")]; + char unicode_prop_name_pool_str3580[sizeof("aghb")]; + char unicode_prop_name_pool_str3595[sizeof("divesakuru")]; + char unicode_prop_name_pool_str3599[sizeof("tfng")]; + char unicode_prop_name_pool_str3600[sizeof("uppercase")]; + char unicode_prop_name_pool_str3659[sizeof("hluw")]; + char unicode_prop_name_pool_str3680[sizeof("oldsoutharabian")]; + char unicode_prop_name_pool_str3683[sizeof("inyisyllables")]; + char unicode_prop_name_pool_str3688[sizeof("tibt")]; + char unicode_prop_name_pool_str3694[sizeof("tibetan")]; + char unicode_prop_name_pool_str3730[sizeof("othergraphemeextend")]; + char unicode_prop_name_pool_str3784[sizeof("inegyptianhieroglyphs")]; + char unicode_prop_name_pool_str3788[sizeof("insupplementaryprivateuseareaa")]; + char unicode_prop_name_pool_str3790[sizeof("openpunctuation")]; + char unicode_prop_name_pool_str3797[sizeof("inegyptianhieroglyphformatcontrols")]; + char unicode_prop_name_pool_str3828[sizeof("tifinagh")]; + char unicode_prop_name_pool_str3852[sizeof("tglg")]; + char unicode_prop_name_pool_str3871[sizeof("tagalog")]; + char unicode_prop_name_pool_str3892[sizeof("tavt")]; + char unicode_prop_name_pool_str3909[sizeof("inhebrew")]; + char unicode_prop_name_pool_str3918[sizeof("inlatinextendedb")]; + char unicode_prop_name_pool_str3969[sizeof("uppercaseletter")]; + char unicode_prop_name_pool_str3982[sizeof("soyombo")]; + char unicode_prop_name_pool_str4129[sizeof("inhighsurrogates")]; + char unicode_prop_name_pool_str4139[sizeof("hyphen")]; + char unicode_prop_name_pool_str4181[sizeof("tagb")]; + char unicode_prop_name_pool_str4186[sizeof("unifiedideograph")]; + char unicode_prop_name_pool_str4201[sizeof("pahawhhmong")]; + char unicode_prop_name_pool_str4269[sizeof("inbopomofoextended")]; + char unicode_prop_name_pool_str4309[sizeof("telugu")]; + char unicode_prop_name_pool_str4325[sizeof("insupplementalarrowsb")]; + char unicode_prop_name_pool_str4362[sizeof("duployan")]; + char unicode_prop_name_pool_str4375[sizeof("egyp")]; + char unicode_prop_name_pool_str4425[sizeof("inboxdrawing")]; + char unicode_prop_name_pool_str4533[sizeof("insupplementalsymbolsandpictographs")]; + char unicode_prop_name_pool_str4575[sizeof("inhangulcompatibilityjamo")]; + char unicode_prop_name_pool_str4779[sizeof("nyiakengpuachuehmong")]; + char unicode_prop_name_pool_str4921[sizeof("zyyy")]; + char unicode_prop_name_pool_str5358[sizeof("insupplementaryprivateuseareab")]; + char unicode_prop_name_pool_str5443[sizeof("hebrew")]; + char unicode_prop_name_pool_str5519[sizeof("egyptianhieroglyphs")]; }; static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = { "lana", "z", - "yi", "lina", + "yi", "mn", - "yiii", "cn", "maka", "mani", - "zzzz", + "yiii", "inkannada", "ci", "lo", "lao", "laoo", + "zzzz", "miao", + "yezi", "innko", "co", "me", @@ -26283,6 +26760,7 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "combiningmark", "incuneiformnumbersandpunctuation", "merc", + "inchorasmian", "perm", "inahom", "inipaextensions", @@ -26295,8 +26773,8 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "incuneiform", "mc", "cc", - "inzanabazarsquare", "lineseparator", + "inzanabazarsquare", "armn", "qmark", "armi", @@ -26316,11 +26794,9 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "incyrillic", "inthai", "incham", - "inkaithi", "zs", + "inkaithi", "mtei", - "vai", - "vaii", "initialpunctuation", "cs", "insyriac", @@ -26329,18 +26805,17 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "mand", "l", "ps", - "dia", "inkanaextendeda", - "di", "mend", "modi", "ideo", "katakana", "prti", + "yezidi", "inideographicdescriptioncharacters", "inlineara", - "xidcontinue", "brai", + "xidcontinue", "inlao", "ascii", "privateuse", @@ -26365,8 +26840,8 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "inmendekikakui", "intransportandmapsymbols", "letternumber", - "xidc", "inmedefaidrin", + "xidc", "inchesssymbols", "inemoticons", "brahmi", @@ -26378,7 +26853,7 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "psalterpahlavi", "insundanese", "inoldsogdian", - "diacritic", + "kits", "gothic", "inancientsymbols", "meroiticcursive", @@ -26396,13 +26871,13 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "inoldsoutharabian", "insylotinagri", "idsbinaryoperator", + "oriya", "sora", "bamum", "inkanasupplement", "incjkstrokes", "joinc", "inopticalcharacterrecognition", - "vs", "indominotiles", "batk", "grext", @@ -26411,7 +26886,6 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "inmodifiertoneletters", "ital", "bass", - "decimalnumber", "alnum", "ids", "print", @@ -26420,19 +26894,20 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "inmusicalsymbols", "intaile", "samr", + "vai", + "vaii", "samaritan", "s", "inlatinextendede", "bali", "lisu", "pauc", - "patternsyntax", "incontrolpictures", "blank", + "zl", "inmiscellaneoussymbols", "ll", "inancientgreekmusicalnotation", - "zl", "inlydian", "sm", "inmiscellaneoussymbolsandarrows", @@ -26440,584 +26915,606 @@ static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = "bengali", "pd", "inmiscellaneoussymbolsandpictographs", - "medf", - "cf", + "ingrantha", + "gong", "balinese", - "medefaidrin", - "han", + "osage", + "mong", "intamil", - "hani", "inmultani", - "hano", - "inshorthandformatcontrols", + "inosage", + "ingeneralpunctuation", + "georgian", "insaurashtra", - "pf", "inoldturkic", "idcontinue", - "hanunoo", "sc", - "inkhojki", "idst", "canadianaboriginal", - "hira", + "ingeorgian", + "osma", "plrd", "incaucasianalbanian", "indeseret", "inearlydynasticcuneiform", "inspacingmodifierletters", - "innewa", + "inmongolian", + "emoji", "idstart", - "zinh", - "incyrillicextendeda", - "dsrt", "cased", + "dia", "glagolitic", - "inhanifirohingya", + "di", + "diak", "inancientgreeknumbers", "inmeeteimayekextensions", - "intaixuanjingsymbols", + "ingurmukhi", "joincontrol", "runr", - "inwarangciti", - "deseret", - "inhiragana", "sind", - "cherokee", + "odi", "inlatinextendedc", "adlm", - "phoenician", - "cher", - "marchen", + "zinh", "inkhudawadi", "sinhala", - "lower", - "graphemelink", - "xidstart", - "ingrantha", "bidic", - "xdigit", + "xidstart", "casedletter", - "gong", + "xdigit", "multani", + "logicalorderexception", "gunjalagondi", + "n", + "inhanifirohingya", + "insorasompeng", + "insiddham", + "incountingrodnumerals", + "nandinagari", + "no", + "inhiragana", + "nko", + "nkoo", + "xpeo", + "bamu", + "cherokee", + "p", + "phoenician", + "cher", + "emojimodifier", + "inphoenician", + "marchen", + "vs", + "graphemelink", + "adlam", + "inkhitansmallscript", "cham", "chakma", - "mong", "kaithi", "inmahajani", "graphemebase", - "insiddham", + "oidc", + "ingreekandcoptic", "inogham", - "inosage", - "incountingrodnumerals", - "inwancho", - "khojki", - "ingeneralpunctuation", - "georgian", - "incyrillicextendedc", - "inkayahli", - "khar", - "inoriya", - "manichaean", - "bamu", - "zanb", - "oriya", - "inolchiki", - "linb", - "inethiopic", - "wara", - "ingeorgian", - "innabataean", - "inkanbun", - "adlam", - "inbhaiksuki", - "insinhala", - "inelbasan", - "lowercase", - "takri", - "inmongolian", - "invai", - "xsux", "cntrl", - "emoji", "sterm", - "cuneiform", - "cwcm", - "hatran", - "linearb", - "taile", + "khojki", + "olck", + "diacritic", "inlatinextendedadditional", "inenclosedalphanumerics", + "olower", "anatolianhieroglyphs", "incyrillicsupplement", + "khar", "intamilsupplement", + "manichaean", "inmiscellaneoustechnical", - "ahom", + "olchiki", "incherokeesupplement", - "takr", - "khmr", + "inmeroitichieroglyphs", + "oids", + "inolchiki", + "inethiopic", "incjkunifiedideographsextensiona", "quotationmark", - "lyci", - "lycian", - "ingurmukhi", + "inkangxiradicals", "runic", - "limb", - "inscriptionalpahlavi", - "hatr", - "variationselector", - "modifierletter", + "enclosingmark", + "innewa", + "lepc", + "beng", "incjkunifiedideographsextensione", - "mymr", - "myanmar", + "insinhala", + "glag", + "inphaistosdisc", + "patternsyntax", "lu", - "kharoshthi", - "inarabic", + "chorasmian", "radical", - "khmer", - "inunifiedcanadianaboriginalsyllabics", - "osage", + "regionalindicator", + "ingreekextended", + "emojimodifierbase", + "indogra", "sundanese", - "innewtailue", - "logicalorderexception", - "math", + "ahom", + "chrs", "braille", - "goth", - "insorasompeng", - "insoyombo", - "arab", + "khmr", + "inwarangciti", "saur", + "inscriptionalpahlavi", "guru", - "term", + "decimalnumber", + "inimperialaramaic", "paucinhau", - "inbasiclatin", - "inarabicpresentationformsa", + "emod", "punct", "gurmukhi", - "grantha", - "inshavian", - "osma", + "ingeometricshapes", + "lower", "inenclosedalphanumericsupplement", - "intirhuta", - "inelymaic", - "inhatran", + "kharoshthi", "incjkunifiedideographsextensionc", - "emojimodifier", - "uideo", + "khmer", "bidicontrol", - "phnx", "limbu", - "n", "inenclosedideographicsupplement", + "math", "mult", - "kthi", + "inwancho", + "goth", + "han", "incjkunifiedideographs", - "ingreekandcoptic", - "inoldhungarian", - "incjkcompatibility", - "grbase", - "nandinagari", - "brah", - "no", + "coptic", + "hani", + "incyrillicextendeda", + "hano", + "medf", "sd", - "nko", - "nkoo", - "xpeo", - "sidd", - "inherited", - "p", - "phli", - "inmeroitichieroglyphs", - "inphoenician", - "inmayannumerals", - "saurashtra", - "inkangxiradicals", - "enclosingmark", - "graphemeextend", - "beng", - "inbatak", - "glag", - "ahex", - "patsyn", - "odi", - "dogra", - "intibetan", - "lydi", - "lydian", - "inblockelements", - "cwcf", - "inunifiedcanadianaboriginalsyllabicsextended", - "regionalindicator", - "ingreekextended", - "emojimodifierbase", - "inanatolianhieroglyphs", - "indogra", - "taiviet", - "inyiradicals", - "unassigned", - "insundanesesupplement", - "innumberforms", - "lowercaseletter", - "dogr", - "lepc", - "bhks", - "word", - "gujr", - "inphaistosdisc", - "bhaiksuki", - "dash", - "inarabicextendeda", - "gujarati", - "inlatinextendedd", - "innoblock", - "java", - "ingeometricshapes", - "cyrl", - "indevanagari", - "inbalinese", - "inbyzantinemusicalsymbols", - "tale", - "deva", - "hex", - "inmyanmarextendedb", - "sinh", - "cwt", - "shavian", - "devanagari", - "oidc", - "javanese", - "mlym", - "incjkunifiedideographsextensiond", - "sentenceterminal", - "malayalam", - "inhanunoo", - "insinhalaarchaicnumbers", - "olck", - "inimperialaramaic", - "olower", - "palmyrene", - "avestan", - "incjkunifiedideographsextensionf", "insogdian", "indingbats", - "olchiki", - "oids", - "punctuation", - "sund", - "inbraillepatterns", + "medefaidrin", + "sidd", + "hanunoo", + "intaixuanjingsymbols", + "inkhojki", + "grantha", + "copt", + "intirhuta", "emojicomponent", + "inhatran", "ideographic", - "taml", - "format", + "saurashtra", + "inshorthandformatcontrols", + "hira", + "ininscriptionalparthian", + "lowercase", + "ininscriptionalpahlavi", "inornamentaldingbats", - "coptic", "caseignorable", - "idsb", - "inmiscellaneousmathematicalsymbolsb", + "nand", + "cwcm", + "kthi", + "cprt", + "inoldhungarian", "sogdian", "sogo", - "terminalpunctuation", + "brah", "intangut", - "intifinagh", - "inlowsurrogates", - "invariationselectors", - "copt", - "soyo", - "intags", - "inverticalforms", - "ininscriptionalparthian", - "ininscriptionalpahlavi", - "meroitichieroglyphs", - "asciihexdigit", - "inethiopicextendeda", - "invedicextensions", - "nand", - "cwl", - "cprt", - "innushu", - "zanabazarsquare", - "ingeometricshapesextended", - "avst", "imperialaramaic", "bopo", - "sarb", "inoldpersian", - "intaiviet", - "mahj", - "inkatakanaphoneticextensions", - "mahajani", + "inherited", + "phli", + "intags", + "insundanesesupplement", + "oldpersian", + "incyrillicextendedc", + "dsrt", + "graphemeextend", + "inlatinextendedd", + "ogam", "closepunctuation", - "inlisu", - "softdotted", - "unknown", - "invariationselectorssupplement", - "syrc", - "hang", + "ingeometricshapesextended", + "zanb", + "linb", + "innewtailue", + "deseret", + "innabataean", + "inanatolianhieroglyphs", + "inkanbun", + "inbhaiksuki", + "inelbasan", + "xsux", + "incjkunifiedideographsextensiond", + "sentenceterminal", "incjksymbolsandpunctuation", - "ingujarati", + "bhks", "bopomofo", "alpha", - "khoj", "inpalmyrene", - "ingunjalagondi", + "bhaiksuki", + "linearb", "inoldpermic", "inlepcha", - "assigned", - "incurrencysymbols", - "insmallformvariants", - "sorasompeng", - "inlinearbsyllabary", - "oldpersian", - "caucasianalbanian", - "inenclosedcjklettersandmonths", - "hiragana", - "inbamum", - "inrejang", - "graph", - "sharada", - "inethiopicsupplement", - "indevanagariextended", + "uideo", + "punctuation", + "sund", + "oldpermic", + "osge", + "variationselector", + "inkayahli", + "inoriya", + "inyezidi", + "limb", + "sinh", + "shavian", "incoptic", "insyriacsupplement", - "inmeroiticcursive", - "hmng", - "intelugu", - "incombiningdiacriticalmarks", - "mathsymbol", - "titlecaseletter", - "ugar", - "incombiningdiacriticalmarksforsymbols", + "wara", + "inhanunoo", + "insinhalaarchaicnumbers", + "inarabic", + "hatran", + "assigned", + "sorasompeng", "spacingmark", - "shrd", - "injavanese", - "syriac", + "orkh", "space", - "hebr", - "ext", - "inhanguljamo", - "phag", - "inhanguljamoextendeda", - "wancho", + "cuneiform", + "arab", + "format", + "hatr", + "inbasiclatin", + "inarabicpresentationformsa", + "lyci", + "lycian", + "takri", + "invai", + "modifierletter", + "unassigned", + "mymr", + "myanmar", + "lowercaseletter", + "taile", + "dogra", + "takr", + "asciihexdigit", + "separator", + "inunifiedcanadianaboriginalsyllabics", + "grbase", "bugi", - "tamil", + "nd", "sogd", - "orkh", - "oldpermic", - "siddham", - "incyrillicextendedb", - "inbrahmi", + "insoyombo", + "inlisu", + "innushu", "inmongoliansupplement", - "thaa", - "thaana", - "thai", + "dogr", + "phnx", + "cwt", "buginese", "ingeorgiansupplement", - "digit", - "cyrillic", - "sylo", - "inphoneticextensions", - "separator", - "inethiopicextended", - "inmathematicalalphanumericsymbols", - "insymbolsandpictographsextendeda", - "nd", - "tirh", - "tirhuta", - "incombiningdiacriticalmarkssupplement", - "extender", - "wcho", - "inbengali", - "talu", - "tang", - "warangciti", - "tagbanwa", - "orya", "nl", "induployan", - "cwu", - "inbuginese", - "telu", - "ogam", - "taitham", - "rjng", - "insuttonsignwriting", - "incombiningdiacriticalmarksextended", - "number", - "inyijinghexagramsymbols", - "whitespace", - "currencysymbol", - "inottomansiyaqnumbers", - "inlimbu", - "incopticepactnumbers", - "ingeorgianextended", - "inphoneticextensionssupplement", - "any", - "osge", - "defaultignorablecodepoint", - "hangul", - "newa", - "ethi", - "hanifirohingya", - "hmnp", "olditalic", - "incjkunifiedideographsextensionb", - "rohg", - "innyiakengpuachuehmong", - "incjkradicalssupplement", - "newtailue", - "newline", - "lepcha", - "deprecated", - "buhd", + "inelymaic", + "inbatak", + "inkatakanaphoneticextensions", + "inlisusupplement", + "inphagspa", + "inhanguljamo", + "phag", + "intibetan", + "inhanguljamoextendeda", "inglagolitic", - "inaegeannumbers", - "modifiersymbol", - "surrogate", - "inletterlikesymbols", - "idstrinaryoperator", + "inblockelements", + "number", + "incjkcompatibility", + "term", + "innumberforms", + "inshavian", + "ahex", + "cf", + "incopticepactnumbers", "intagalog", - "tangut", - "osmanya", + "inmayannumerals", + "inarabicextendeda", + "innoblock", + "insuttonsignwriting", + "intelugu", + "inlowsurrogates", + "pf", + "inbalinese", + "patsyn", + "inbyzantinemusicalsymbols", + "lydi", + "lydian", + "inmyanmarextendedb", + "incjkunifiedideographsextensiong", + "incjkradicalssupplement", + "cwl", + "inunifiedcanadianaboriginalsyllabicsextended", + "sharada", + "inethiopicsupplement", + "inyiradicals", + "gujr", + "oldhungarian", + "gujarati", "oalpha", - "inphagspa", - "ugaritic", + "ugar", + "word", "otheridcontinue", - "inarabicpresentationformsb", - "inbassavah", + "inbraillepatterns", "other", + "idstrinaryoperator", + "shrd", + "innyiakengpuachuehmong", "othernumber", - "sylotinagri", - "ingothic", - "inbuhid", + "cyrl", + "taiviet", + "lepcha", + "graph", + "idsb", + "inmiscellaneousmathematicalsymbolsb", + "zp", + "mlym", + "malayalam", + "siddham", + "surrogate", + "palmyrene", + "java", + "nonspacingmark", "inlatin1supplement", - "intagbanwa", - "shaw", - "oldhungarian", - "inmahjongtiles", - "hung", - "tifinagh", - "inbopomofo", - "narb", - "inyisyllables", - "kayahli", + "ethi", + "indevanagari", + "incjkunifiedideographsextensionf", + "dash", + "rohg", + "tale", + "hang", "otheralphabetic", + "zanabazarsquare", + "ingujarati", + "javanese", + "inmathematicalalphanumericsymbols", + "ingunjalagondi", + "sarb", + "ext", + "avestan", + "oldturkic", + "inphoneticextensions", + "inethiopicextendeda", + "hiragana", + "inrejang", + "oldsogdian", + "taml", + "soyo", + "spaceseparator", + "meroitichieroglyphs", + "newa", + "hmng", + "epres", + "orya", + "terminalpunctuation", + "ingothic", + "newtailue", + "newline", + "cwcf", "phagspa", - "inprivateusearea", - "elba", + "invariationselectors", "nchar", - "spaceseparator", - "tibt", - "extendedpictographic", - "tibetan", - "sgnw", - "hexdigit", - "tfng", - "inbamumsupplement", - "tavt", - "incombininghalfmarks", - "inarabicmathematicalalphabeticsymbols", - "khudawadi", - "inhalfwidthandfullwidthforms", + "intifinagh", + "inverticalforms", + "emojipresentation", + "invedicextensions", + "extender", + "extpict", + "caucasianalbanian", + "inbamum", + "inbengali", + "avst", + "inphoneticextensionssupplement", + "ebase", + "inbuginese", + "softdotted", + "intangutcomponents", + "mahj", + "intaiviet", + "mahajani", + "syrc", + "buhd", + "paragraphseparator", + "digit", + "unknown", + "incombiningdiacriticalmarks", + "oupper", + "incombiningdiacriticalmarksforsymbols", + "inpaucinhau", + "ingeorgianextended", + "cwu", + "inenclosedcjklettersandmonths", + "otherlowercase", + "incurrencysymbols", "inhangulsyllables", - "elym", - "symbol", - "bassavah", - "elymaic", + "inlinearbsyllabary", + "ugaritic", + "invariationselectorssupplement", + "warangciti", + "otherletter", + "rjng", + "khoj", "changeswhencasemapped", - "oldturkic", - "inplayingcards", - "zp", - "elbasan", - "buhid", "noncharactercodepoint", + "osmanya", "finalpunctuation", + "hmnp", "inpsalterpahlavi", - "inpaucinhau", - "nonspacingmark", - "changeswhentitlecased", - "inindicsiyaqnumbers", + "insuperscriptsandsubscripts", + "mathsymbol", + "insmallformvariants", "phlp", - "wspace", - "nbat", - "hluw", - "cypriot", - "nabataean", - "inalchemicalsymbols", - "dupl", - "otherlowercase", - "inarabicsupplement", + "syriac", + "intangutsupplement", + "tang", + "insymbolsandpictographsextendeda", + "tagbanwa", + "inaegeannumbers", + "indevanagariextended", + "incombiningdiacriticalmarkssupplement", + "inmeroiticcursive", + "inbrahmi", + "deprecated", "inalphabeticpresentationforms", - "otherletter", - "emojipresentation", - "changeswhenlowercased", - "dashpunctuation", - "oldsogdian", - "intangutcomponents", - "soyombo", - "paragraphseparator", - "changeswhencasefolded", + "titlecaseletter", + "changeswhentitlecased", "othersymbol", - "inlatinextendedb", + "inethiopicextended", + "sgnw", + "cyrillic", + "incombiningdiacriticalmarksextended", + "inbopomofo", + "sylo", + "narb", + "ogham", + "tamil", + "wancho", "otheruppercase", + "currencysymbol", "otheridstart", - "inhebrew", - "oldnortharabian", + "inlimbu", + "intagbanwa", + "insupplementalarrowsa", + "khitansmallscript", + "insymbolsforlegacycomputing", + "deva", + "changeswhenlowercased", + "incjkunifiedideographsextensionb", + "devanagari", + "tirhuta", + "elba", + "extendedpictographic", + "inindicsiyaqnumbers", + "thaa", + "talu", "omath", - "incypriotsyllabary", + "thaana", + "thai", + "wcho", + "inottomansiyaqnumbers", + "telu", + "hung", + "hangul", + "buhid", + "inletterlikesymbols", + "insupplementalarrowsc", + "tirh", + "insupplementalmathematicaloperators", + "shaw", "inmathematicaloperators", - "changeswhenuppercased", + "inprivateusearea", + "whitespace", "nshu", - "insuperscriptsandsubscripts", + "taitham", "ogrext", - "inhanguljamoextendedb", - "alphabetic", - "dep", - "oupper", - "zyyy", - "aghb", - "ogham", - "rejang", - "tagb", - "hyphen", - "insupplementalarrowsa", "inpahawhhmong", + "incyrillicextendedb", + "nbat", + "inplayingcards", + "hex", + "elym", + "nabataean", + "inbassavah", + "elbasan", + "changeswhenuppercased", + "khudawadi", + "inarabicsupplement", + "elymaic", + "inbuhid", + "sylotinagri", + "hebr", + "tangut", + "inbamumsupplement", + "wspace", + "cypriot", + "oldnortharabian", + "dupl", + "ecomp", + "otherdefaultignorablecodepoint", + "inmahjongtiles", "nushu", + "otherpunctuation", + "dep", + "incombininghalfmarks", + "inarabicmathematicalalphabeticsymbols", + "injavanese", + "kayahli", "othermath", - "insupplementalarrowsc", - "insupplementalmathematicaloperators", - "otherdefaultignorablecodepoint", + "dashpunctuation", + "hanifirohingya", + "symbol", + "inglagoliticsupplement", + "inhalfwidthandfullwidthforms", + "insupplementalpunctuation", + "alphabetic", + "inyijinghexagramsymbols", + "incypriotsyllabary", + "inarabicpresentationformsb", + "hexdigit", + "inalchemicalsymbols", + "rejang", + "bassavah", + "modifiersymbol", + "any", + "ethiopic", + "changeswhencasefolded", + "defaultignorablecodepoint", "inhighprivateusesurrogates", - "duployan", - "oldsoutharabian", - "tglg", - "tagalog", - "inbopomofoextended", + "indivesakuru", + "upper", + "inhanguljamoextendedb", "signwriting", + "aghb", + "divesakuru", + "tfng", + "uppercase", + "hluw", + "oldsoutharabian", + "inyisyllables", + "tibt", + "tibetan", + "othergraphemeextend", "inegyptianhieroglyphs", + "insupplementaryprivateuseareaa", + "openpunctuation", "inegyptianhieroglyphformatcontrols", - "upper", - "otherpunctuation", - "ethiopic", - "hebrew", - "telugu", - "uppercase", - "insupplementalpunctuation", - "unifiedideograph", - "pahawhhmong", - "inglagoliticsupplement", - "inboxdrawing", + "tifinagh", + "tglg", + "tagalog", + "tavt", + "inhebrew", + "inlatinextendedb", "uppercaseletter", - "othergraphemeextend", + "soyombo", "inhighsurrogates", + "hyphen", + "tagb", + "unifiedideograph", + "pahawhhmong", + "inbopomofoextended", + "telugu", "insupplementalarrowsb", - "inhangulcompatibilityjamo", + "duployan", "egyp", + "inboxdrawing", "insupplementalsymbolsandpictographs", + "inhangulcompatibilityjamo", "nyiakengpuachuehmong", - "insupplementaryprivateuseareaa", - "openpunctuation", - "egyptianhieroglyphs", - "insupplementaryprivateuseareab" + "zyyy", + "insupplementaryprivateuseareab", + "hebrew", + "egyptianhieroglyphs" }; #define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) static const struct PoolPropertyNameCtype * @@ -27028,69 +27525,73 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(10), 238}, + {pool_offset(10), 241}, + {-1}, {-1}, + + {pool_offset(13), 266}, {-1}, {-1}, {-1}, - {pool_offset(14), 262}, - {-1}, + {pool_offset(17), 128}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(16), 261}, + {pool_offset(22), 265}, + {-1}, - {pool_offset(17), 125}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(24), 157}, + {-1}, {-1}, - {pool_offset(24), 154}, + {pool_offset(27), 54}, - {pool_offset(25), 261}, + {pool_offset(28), 142}, {-1}, - {pool_offset(27), 53}, - - {pool_offset(28), 139}, - {-1}, + {pool_offset(30), 145}, - {pool_offset(30), 142}, + {pool_offset(31), 265}, {-1}, {-1}, - {pool_offset(33), 252}, - - {pool_offset(34), 295}, + {pool_offset(34), 299}, {pool_offset(35), 40}, {-1}, - {pool_offset(37), 130}, + {pool_offset(37), 133}, - {pool_offset(38), 121}, + {pool_offset(38), 124}, - {pool_offset(39), 121}, - {-1}, {-1}, {-1}, + {pool_offset(39), 124}, - {pool_offset(43), 153}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(40), 255}, + {-1}, {-1}, - {pool_offset(51), 283}, + {pool_offset(43), 156}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(48), 264}, + {-1}, {-1}, + + {pool_offset(51), 287}, {-1}, - {pool_offset(53), 54}, + {pool_offset(53), 55}, {-1}, {-1}, - {pool_offset(56), 147}, + {pool_offset(56), 150}, {-1}, {-1}, {-1}, - {pool_offset(60), 131}, + {pool_offset(60), 134}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(70), 83}, + {pool_offset(70), 85}, {-1}, - {pool_offset(72), 205}, + {pool_offset(72), 208}, {-1}, {-1}, {-1}, - {pool_offset(76), 125}, + {pool_offset(76), 128}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(84), 137}, + {pool_offset(84), 140}, {-1}, {pool_offset(86), 39}, @@ -27098,2250 +27599,2286 @@ unicode_lookup_property_name (register const char *str, register size_t len) {pool_offset(87), 39}, {-1}, {-1}, - {pool_offset(90), 206}, + {pool_offset(90), 209}, - {pool_offset(91), 150}, + {pool_offset(91), 153}, {-1}, {-1}, - {pool_offset(94), 87}, + {pool_offset(94), 89}, {-1}, - {pool_offset(96), 201}, + {pool_offset(96), 204}, {-1}, {-1}, - {pool_offset(99), 149}, + {pool_offset(99), 152}, {-1}, - {pool_offset(101), 460}, + {pool_offset(101), 464}, - {pool_offset(102), 80}, + {pool_offset(102), 82}, - {pool_offset(103), 87}, + {pool_offset(103), 89}, {-1}, {-1}, {-1}, - {pool_offset(107), 157}, + {pool_offset(107), 160}, - {pool_offset(108), 157}, + {pool_offset(108), 160}, {-1}, - {pool_offset(110), 113}, + {pool_offset(110), 115}, - {pool_offset(111), 152}, + {pool_offset(111), 155}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(120), 137}, + {pool_offset(120), 140}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(133), 144}, + {pool_offset(133), 147}, {pool_offset(134), 45}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(139), 446}, + {pool_offset(139), 450}, {-1}, {-1}, - {pool_offset(142), 463}, + {pool_offset(142), 467}, {-1}, {-1}, {-1}, - {pool_offset(146), 277}, + {pool_offset(146), 281}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(151), 512}, + {pool_offset(151), 520}, - {pool_offset(152), 516}, + {pool_offset(152), 524}, {-1}, {-1}, {-1}, {pool_offset(156), 37}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(163), 478}, + {pool_offset(163), 484}, {-1}, {-1}, - {pool_offset(166), 55}, + {pool_offset(166), 56}, {-1}, {-1}, - {pool_offset(169), 141}, + {pool_offset(169), 144}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(182), 301}, + {pool_offset(182), 305}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(187), 503}, + {pool_offset(187), 510}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(192), 106}, + {pool_offset(192), 108}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(200), 517}, + {pool_offset(200), 525}, {-1}, {-1}, {-1}, - {pool_offset(204), 314}, + {pool_offset(204), 318}, {-1}, {-1}, {pool_offset(207), 38}, {-1}, - {pool_offset(209), 207}, + {pool_offset(209), 210}, {-1}, - {pool_offset(211), 129}, + {pool_offset(211), 132}, - {pool_offset(212), 143}, + {pool_offset(212), 146}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(219), 199}, + {pool_offset(219), 202}, - {pool_offset(220), 309}, + {pool_offset(220), 313}, - {pool_offset(221), 437}, + {pool_offset(221), 441}, {-1}, - {pool_offset(223), 464}, + {pool_offset(223), 468}, {-1}, - {pool_offset(225), 137}, + {pool_offset(225), 140}, - {pool_offset(226), 506}, + {pool_offset(226), 514}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(231), 151}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(231), 154}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(237), 479}, - {pool_offset(238), 177}, + {pool_offset(238), 180}, - {pool_offset(239), 492}, + {pool_offset(239), 498}, - {pool_offset(240), 271}, + {pool_offset(240), 275}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(251), 306}, + {pool_offset(251), 310}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(257), 480}, + {pool_offset(257), 486}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(268), 139}, + {pool_offset(268), 142}, {-1}, {-1}, {-1}, - {pool_offset(272), 344}, + {pool_offset(272), 348}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(277), 120}, + {pool_offset(277), 123}, {-1}, - {pool_offset(279), 144}, + {pool_offset(279), 147}, {-1}, {-1}, {-1}, - {pool_offset(283), 505}, + {pool_offset(283), 513}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(290), 146}, + {pool_offset(290), 149}, {-1}, {-1}, {pool_offset(293), 43}, - {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(295), 496}, - {-1}, {-1}, + {pool_offset(298), 268}, - {pool_offset(298), 264}, - {-1}, {-1}, {-1}, + {pool_offset(299), 503}, + {-1}, {-1}, {pool_offset(302), 22}, {-1}, {-1}, - {pool_offset(305), 210}, + {pool_offset(305), 213}, - {pool_offset(306), 105}, + {pool_offset(306), 107}, {-1}, {-1}, - {pool_offset(309), 284}, + {pool_offset(309), 288}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(316), 22}, {-1}, - {pool_offset(318), 500}, + {pool_offset(318), 507}, - {pool_offset(319), 501}, + {pool_offset(319), 508}, {-1}, - {pool_offset(321), 56}, + {pool_offset(321), 57}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(330), 199}, + {pool_offset(330), 202}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(335), 108}, + {pool_offset(335), 110}, - {pool_offset(336), 122}, + {pool_offset(336), 125}, {-1}, {-1}, {-1}, - {pool_offset(340), 122}, + {pool_offset(340), 125}, {-1}, - {pool_offset(342), 212}, + {pool_offset(342), 215}, {-1}, {-1}, - {pool_offset(345), 282}, + {pool_offset(345), 286}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(352), 320}, + {pool_offset(352), 324}, {-1}, {-1}, - {pool_offset(355), 375}, + {pool_offset(355), 379}, - {pool_offset(356), 275}, + {pool_offset(356), 279}, - {pool_offset(357), 298}, + {pool_offset(357), 302}, {-1}, - {pool_offset(359), 405}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(367), 476}, - {-1}, - - {pool_offset(369), 266}, - {-1}, {-1}, + {pool_offset(359), 409}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(372), 149}, + {pool_offset(364), 270}, {-1}, {-1}, - {pool_offset(375), 254}, + {pool_offset(367), 482}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(376), 254}, - {-1}, {-1}, + {pool_offset(372), 152}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(379), 205}, + {pool_offset(379), 208}, {-1}, {-1}, {-1}, - {pool_offset(383), 57}, + {pool_offset(383), 58}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(399), 280}, + {pool_offset(399), 284}, {-1}, - {pool_offset(401), 207}, + {pool_offset(401), 210}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(415), 491}, + {pool_offset(415), 497}, {-1}, - {pool_offset(417), 141}, + {pool_offset(417), 144}, {-1}, - {pool_offset(419), 119}, - - {pool_offset(420), 208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(427), 66}, - {-1}, {-1}, {-1}, + {pool_offset(419), 122}, - {pool_offset(431), 521}, + {pool_offset(420), 211}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(433), 62}, - {-1}, {-1}, + {pool_offset(431), 531}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(436), 150}, + {pool_offset(436), 153}, - {pool_offset(437), 155}, + {pool_offset(437), 158}, {-1}, {-1}, {-1}, - {pool_offset(441), 104}, + {pool_offset(441), 106}, {-1}, {-1}, {-1}, - {pool_offset(445), 113}, + {pool_offset(445), 115}, {-1}, {-1}, {-1}, - {pool_offset(449), 108}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(449), 110}, + {-1}, - {pool_offset(456), 372}, + {pool_offset(451), 264}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(457), 450}, + {pool_offset(456), 376}, - {pool_offset(458), 259}, - {-1}, {-1}, + {pool_offset(457), 454}, + {-1}, {-1}, {-1}, {pool_offset(461), 34}, - {-1}, - {pool_offset(463), 299}, + {pool_offset(462), 262}, + + {pool_offset(463), 303}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(472), 14}, {-1}, - {pool_offset(474), 54}, + {pool_offset(474), 55}, {-1}, {-1}, {pool_offset(477), 21}, - {pool_offset(478), 156}, + {pool_offset(478), 159}, {-1}, - {pool_offset(480), 406}, + {pool_offset(480), 410}, - {pool_offset(481), 471}, + {pool_offset(481), 475}, {-1}, {-1}, {-1}, - {pool_offset(485), 119}, + {pool_offset(485), 122}, {-1}, - {pool_offset(487), 495}, + {pool_offset(487), 502}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(499), 412}, + {pool_offset(499), 416}, - {pool_offset(500), 462}, + {pool_offset(500), 466}, {-1}, {-1}, - {pool_offset(503), 86}, + {pool_offset(503), 88}, - {pool_offset(504), 112}, + {pool_offset(504), 114}, {-1}, {-1}, - {pool_offset(507), 112}, + {pool_offset(507), 114}, {-1}, - {pool_offset(509), 425}, + {pool_offset(509), 429}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(514), 419}, + {pool_offset(514), 423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(528), 489}, + {pool_offset(528), 495}, - {pool_offset(529), 114}, + {pool_offset(529), 116}, {-1}, {-1}, {pool_offset(532), 43}, {-1}, {-1}, {-1}, - {pool_offset(536), 538}, + {pool_offset(536), 548}, {-1}, - {pool_offset(538), 429}, + {pool_offset(538), 433}, {-1}, - {pool_offset(540), 537}, + {pool_offset(540), 547}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(545), 550}, + {pool_offset(545), 560}, {-1}, - {pool_offset(547), 167}, - {-1}, + {pool_offset(547), 170}, + {-1}, {-1}, - {pool_offset(549), 259}, + {pool_offset(550), 523}, + {-1}, {-1}, - {pool_offset(550), 515}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(553), 262}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(558), 555}, + {pool_offset(558), 565}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(564), 548}, + {pool_offset(564), 558}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(573), 33}, {-1}, - {pool_offset(575), 439}, + {pool_offset(575), 443}, {-1}, {-1}, - {pool_offset(578), 195}, + {pool_offset(578), 198}, {-1}, - {pool_offset(580), 436}, + {pool_offset(580), 440}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(588), 355}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(588), 359}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(594), 260}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(598), 263}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(603), 209}, + {pool_offset(603), 212}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(619), 325}, + {pool_offset(619), 329}, - {pool_offset(620), 472}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {pool_offset(620), 477}, - {pool_offset(632), 66}, - {-1}, + {pool_offset(621), 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(634), 82}, + {pool_offset(634), 84}, - {pool_offset(635), 434}, + {pool_offset(635), 438}, {-1}, {-1}, {-1}, - {pool_offset(639), 151}, + {pool_offset(639), 154}, {-1}, {-1}, {-1}, - {pool_offset(643), 296}, + {pool_offset(643), 300}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(648), 197}, + {pool_offset(648), 200}, - {pool_offset(649), 225}, + {pool_offset(649), 228}, {-1}, {-1}, - {pool_offset(652), 522}, + {pool_offset(652), 532}, {-1}, {-1}, {-1}, - {pool_offset(656), 285}, + {pool_offset(656), 289}, - {pool_offset(657), 133}, + {pool_offset(657), 136}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(665), 227}, + {pool_offset(665), 230}, - {pool_offset(666), 431}, + {pool_offset(666), 435}, {-1}, - {pool_offset(668), 396}, + {pool_offset(668), 400}, - {pool_offset(669), 562}, + {pool_offset(669), 573}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(677), 102}, + {pool_offset(677), 104}, - {pool_offset(678), 461}, + {pool_offset(678), 465}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(699), 395}, + {pool_offset(699), 399}, {-1}, - {pool_offset(701), 100}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(701), 102}, + {-1}, {-1}, + + {pool_offset(704), 185}, + {-1}, {-1}, - {pool_offset(707), 230}, + {pool_offset(707), 233}, {pool_offset(708), 26}, - {pool_offset(709), 520}, + {pool_offset(709), 530}, - {pool_offset(710), 380}, + {pool_offset(710), 384}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(715), 110}, + {pool_offset(715), 112}, {-1}, {-1}, - {pool_offset(718), 348}, - {-1}, {-1}, {-1}, - - {pool_offset(722), 255}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(718), 352}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(728), 543}, + {pool_offset(728), 553}, {-1}, {-1}, {-1}, {pool_offset(732), 28}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(739), 85}, + {pool_offset(739), 87}, {-1}, {pool_offset(741), 28}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(749), 197}, + {pool_offset(749), 200}, {-1}, {-1}, - {pool_offset(752), 393}, + {pool_offset(752), 397}, - {pool_offset(753), 175}, + {pool_offset(753), 178}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(760), 27}, - {-1}, {-1}, - - {pool_offset(763), 163}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {pool_offset(765), 13}, {-1}, - {pool_offset(767), 103}, + {pool_offset(767), 105}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(776), 7}, {-1}, - {pool_offset(778), 269}, + {pool_offset(778), 273}, {-1}, {-1}, {-1}, - {pool_offset(782), 322}, + {pool_offset(782), 326}, - {pool_offset(783), 527}, + {pool_offset(783), 537}, {-1}, - {pool_offset(785), 318}, + {pool_offset(785), 322}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(794), 216}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(794), 219}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(809), 216}, + {pool_offset(803), 257}, + + {pool_offset(804), 257}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(809), 219}, {-1}, {-1}, {-1}, - {pool_offset(813), 215}, + {pool_offset(813), 218}, {-1}, {-1}, - {pool_offset(816), 410}, + {pool_offset(816), 414}, {-1}, {-1}, {-1}, {pool_offset(820), 25}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(826), 127}, - - {pool_offset(827), 198}, + {pool_offset(826), 130}, - {pool_offset(828), 196}, + {pool_offset(827), 201}, + {-1}, - {pool_offset(829), 347}, + {pool_offset(829), 351}, {pool_offset(830), 2}, - {-1}, {-1}, {-1}, + {-1}, - {pool_offset(834), 353}, + {pool_offset(832), 268}, + {-1}, - {pool_offset(835), 128}, + {pool_offset(834), 357}, - {pool_offset(836), 528}, + {pool_offset(835), 131}, - {pool_offset(837), 264}, + {pool_offset(836), 538}, + {-1}, - {pool_offset(838), 457}, + {pool_offset(838), 461}, - {pool_offset(839), 226}, + {pool_offset(839), 229}, {-1}, {-1}, {-1}, - {pool_offset(843), 361}, + {pool_offset(843), 365}, - {pool_offset(844), 442}, + {pool_offset(844), 446}, {pool_offset(845), 29}, - {pool_offset(846), 200}, + {pool_offset(846), 203}, {-1}, - {pool_offset(848), 547}, - {-1}, + {pool_offset(848), 557}, - {pool_offset(850), 148}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(849), 491}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(855), 44}, - {-1}, {-1}, + {pool_offset(856), 91}, + {-1}, {pool_offset(858), 25}, {-1}, - {pool_offset(860), 148}, + {pool_offset(860), 186}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(865), 91}, + {pool_offset(865), 159}, {-1}, {-1}, {-1}, - {pool_offset(869), 293}, - - {pool_offset(870), 91}, + {pool_offset(869), 297}, + {-1}, - {pool_offset(871), 483}, + {pool_offset(871), 489}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(879), 94}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(879), 451}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(887), 525}, - {-1}, {-1}, {-1}, + {pool_offset(885), 342}, - {pool_offset(891), 398}, + {pool_offset(886), 82}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(892), 202}, - {-1}, + {pool_offset(891), 402}, + {-1}, {-1}, - {pool_offset(894), 468}, + {pool_offset(894), 472}, {-1}, - {pool_offset(896), 102}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(901), 94}, - {-1}, {-1}, {-1}, - - {pool_offset(905), 218}, + {pool_offset(896), 104}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(906), 482}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(905), 221}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(913), 101}, + {pool_offset(913), 103}, {-1}, {pool_offset(915), 38}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(923), 98}, + {pool_offset(922), 306}, {-1}, - {pool_offset(925), 153}, + {pool_offset(924), 187}, + + {pool_offset(925), 156}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(939), 449}, + {pool_offset(939), 453}, - {pool_offset(940), 444}, + {pool_offset(940), 448}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(945), 507}, - - {pool_offset(946), 272}, - {-1}, {-1}, {-1}, + {pool_offset(945), 515}, - {pool_offset(950), 486}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(946), 276}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, - {pool_offset(972), 103}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(957), 319}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(977), 106}, - {-1}, {-1}, {-1}, + {pool_offset(964), 74}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(981), 368}, + {pool_offset(972), 105}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(984), 64}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(993), 41}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(999), 81}, - {-1}, {-1}, + {-1}, - {pool_offset(1002), 470}, + {pool_offset(995), 67}, {-1}, {-1}, {-1}, - {pool_offset(1006), 433}, + {pool_offset(999), 83}, {-1}, - {pool_offset(1008), 408}, + {pool_offset(1001), 63}, + {-1}, {-1}, - {pool_offset(1009), 530}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1004), 68}, + {-1}, - {pool_offset(1016), 110}, - {-1}, {-1}, {-1}, + {pool_offset(1006), 437}, + {-1}, - {pool_offset(1020), 214}, + {pool_offset(1008), 412}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1013), 294}, {-1}, {-1}, - {pool_offset(1023), 494}, - {-1}, + {pool_offset(1016), 112}, + {-1}, {-1}, {-1}, - {pool_offset(1025), 64}, + {pool_offset(1020), 217}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1035), 374}, - {-1}, {-1}, {-1}, - - {pool_offset(1039), 118}, + {pool_offset(1039), 121}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1047), 52}, + {pool_offset(1047), 189}, {-1}, {-1}, - {pool_offset(1050), 363}, + {pool_offset(1050), 367}, {-1}, {pool_offset(1052), 16}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1053), 204}, - {-1}, {-1}, + {pool_offset(1058), 108}, + {-1}, {-1}, {-1}, - {pool_offset(1056), 52}, - {-1}, {-1}, + {pool_offset(1062), 490}, - {pool_offset(1059), 143}, - {-1}, {-1}, + {pool_offset(1063), 227}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1062), 484}, + {pool_offset(1072), 31}, - {pool_offset(1063), 224}, + {pool_offset(1073), 263}, {-1}, {-1}, - {pool_offset(1066), 6}, + {pool_offset(1076), 123}, {-1}, - {pool_offset(1068), 86}, + {pool_offset(1078), 11}, - {pool_offset(1069), 260}, - {-1}, + {pool_offset(1079), 161}, - {pool_offset(1071), 485}, + {pool_offset(1080), 134}, + {-1}, - {pool_offset(1072), 31}, + {pool_offset(1082), 91}, {-1}, - {pool_offset(1074), 11}, + {pool_offset(1084), 163}, + {-1}, {-1}, {-1}, + + {pool_offset(1088), 474}, {-1}, - {pool_offset(1076), 120}, + {pool_offset(1090), 483}, {-1}, - {pool_offset(1078), 89}, + {pool_offset(1092), 494}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1079), 158}, + {pool_offset(1102), 541}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1111), 165}, {-1}, {-1}, - {pool_offset(1082), 89}, - {-1}, + {pool_offset(1114), 171}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1084), 46}, + {pool_offset(1121), 378}, {-1}, - {pool_offset(1086), 45}, + {pool_offset(1123), 169}, + + {pool_offset(1124), 169}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1087), 156}, + {pool_offset(1131), 181}, - {pool_offset(1088), 111}, + {pool_offset(1132), 26}, - {pool_offset(1089), 479}, + {pool_offset(1133), 52}, + {-1}, {-1}, {-1}, - {pool_offset(1090), 84}, + {pool_offset(1137), 196}, {-1}, - {pool_offset(1092), 488}, + {pool_offset(1139), 207}, {-1}, {-1}, - {pool_offset(1095), 308}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1101), 447}, + {pool_offset(1142), 52}, - {pool_offset(1102), 531}, - {-1}, + {pool_offset(1143), 76}, - {pool_offset(1104), 536}, + {pool_offset(1144), 460}, - {pool_offset(1105), 117}, - {-1}, - - {pool_offset(1107), 338}, - - {pool_offset(1108), 80}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1145), 146}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1117), 329}, + {pool_offset(1150), 258}, + {-1}, {-1}, {-1}, - {pool_offset(1118), 400}, - {-1}, {-1}, + {pool_offset(1154), 88}, + {-1}, - {pool_offset(1121), 115}, + {pool_offset(1156), 16}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1124), 292}, + {pool_offset(1168), 528}, {-1}, - {pool_offset(1126), 142}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1170), 46}, + {-1}, - {pool_offset(1132), 26}, + {pool_offset(1172), 45}, + {-1}, - {pool_offset(1133), 263}, - {-1}, {-1}, + {pool_offset(1174), 113}, - {pool_offset(1136), 182}, + {pool_offset(1175), 485}, - {pool_offset(1137), 328}, + {pool_offset(1176), 86}, - {pool_offset(1138), 126}, - {-1}, {-1}, + {pool_offset(1177), 191}, + {-1}, - {pool_offset(1141), 304}, + {pool_offset(1179), 278}, {-1}, - {pool_offset(1143), 257}, + {pool_offset(1181), 312}, + {-1}, - {pool_offset(1144), 302}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1183), 3}, + {-1}, {-1}, {-1}, - {pool_offset(1149), 454}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1187), 222}, + {-1}, {-1}, {-1}, - {pool_offset(1154), 378}, - {-1}, + {pool_offset(1191), 120}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1156), 16}, + {pool_offset(1199), 176}, - {pool_offset(1157), 499}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1200), 67}, + {-1}, - {pool_offset(1162), 297}, + {pool_offset(1202), 340}, - {pool_offset(1163), 448}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1203), 353}, - {pool_offset(1169), 132}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1204), 193}, - {pool_offset(1178), 240}, + {pool_offset(1205), 19}, - {pool_offset(1179), 315}, - {-1}, + {pool_offset(1206), 280}, - {pool_offset(1181), 390}, + {pool_offset(1207), 117}, - {pool_offset(1182), 58}, + {pool_offset(1208), 512}, + {-1}, {-1}, {-1}, - {pool_offset(1183), 3}, + {pool_offset(1212), 145}, {-1}, {-1}, - {pool_offset(1186), 72}, + {pool_offset(1215), 350}, - {pool_offset(1187), 219}, + {pool_offset(1216), 176}, {-1}, - {pool_offset(1189), 58}, + {pool_offset(1218), 415}, {-1}, {-1}, - {pool_offset(1192), 48}, - {-1}, + {pool_offset(1221), 462}, - {pool_offset(1194), 95}, - {-1}, {-1}, + {pool_offset(1222), 192}, - {pool_offset(1197), 126}, + {pool_offset(1223), 332}, {-1}, {-1}, {-1}, - {pool_offset(1201), 237}, + {pool_offset(1227), 308}, - {pool_offset(1202), 336}, + {pool_offset(1228), 388}, + {-1}, {-1}, - {pool_offset(1203), 349}, + {pool_offset(1231), 213}, {-1}, - {pool_offset(1205), 19}, + {pool_offset(1233), 375}, + {-1}, {-1}, {-1}, - {pool_offset(1206), 276}, + {pool_offset(1237), 217}, {-1}, - {pool_offset(1208), 504}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1239), 150}, - {pool_offset(1215), 346}, + {pool_offset(1240), 492}, {-1}, - {pool_offset(1217), 17}, + {pool_offset(1242), 126}, + {-1}, {-1}, {-1}, - {pool_offset(1218), 411}, + {pool_offset(1246), 29}, - {pool_offset(1219), 240}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1247), 571}, - {pool_offset(1224), 116}, + {pool_offset(1248), 301}, {-1}, {-1}, {-1}, - {pool_offset(1228), 384}, + {pool_offset(1252), 83}, {-1}, {-1}, - {pool_offset(1231), 210}, - {-1}, - - {pool_offset(1233), 135}, - - {pool_offset(1234), 135}, - - {pool_offset(1235), 290}, - {-1}, - - {pool_offset(1237), 214}, + {pool_offset(1255), 439}, - {pool_offset(1238), 124}, + {pool_offset(1256), 199}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1240), 107}, - {-1}, + {pool_offset(1267), 137}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1242), 95}, - {-1}, + {pool_offset(1273), 53}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1244), 255}, - {-1}, + {pool_offset(1278), 214}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1246), 129}, + {pool_offset(1286), 215}, - {pool_offset(1247), 560}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1287), 341}, + {-1}, {-1}, {-1}, - {pool_offset(1262), 159}, + {pool_offset(1291), 77}, {-1}, {-1}, - {pool_offset(1265), 159}, + {pool_offset(1294), 499}, {-1}, - {pool_offset(1267), 134}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1296), 235}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1275), 115}, + {pool_offset(1303), 17}, - {pool_offset(1276), 279}, + {pool_offset(1304), 53}, {-1}, - {pool_offset(1278), 211}, - {-1}, {-1}, - - {pool_offset(1281), 116}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1306), 34}, + {-1}, {-1}, {-1}, - {pool_offset(1286), 307}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1310), 119}, + {-1}, {-1}, - {pool_offset(1292), 183}, - {-1}, {-1}, {-1}, + {pool_offset(1313), 500}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1296), 232}, + {pool_offset(1322), 220}, {-1}, {-1}, {-1}, - {pool_offset(1300), 319}, - {-1}, + {pool_offset(1326), 109}, + {-1}, {-1}, - {pool_offset(1302), 131}, + {pool_offset(1329), 92}, {-1}, - {pool_offset(1304), 145}, + {pool_offset(1331), 166}, {-1}, - {pool_offset(1306), 34}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1333), 456}, + {-1}, {-1}, {-1}, - {pool_offset(1311), 82}, + {pool_offset(1337), 201}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1312), 477}, + {pool_offset(1343), 76}, {-1}, {-1}, {-1}, - {pool_offset(1316), 497}, + {pool_offset(1347), 8}, - {pool_offset(1317), 21}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1348), 92}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1322), 217}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1354), 356}, + {-1}, - {pool_offset(1329), 90}, - {-1}, {-1}, {-1}, + {pool_offset(1356), 6}, - {pool_offset(1333), 244}, + {pool_offset(1357), 555}, {-1}, {-1}, {-1}, - {pool_offset(1337), 198}, + {pool_offset(1361), 117}, + {-1}, {-1}, - {pool_offset(1338), 267}, + {pool_offset(1364), 569}, + {-1}, {-1}, - {pool_offset(1339), 421}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1367), 119}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1347), 8}, + {pool_offset(1373), 31}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1348), 90}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1380), 127}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1354), 83}, + {pool_offset(1388), 556}, + {-1}, - {pool_offset(1355), 445}, + {pool_offset(1390), 148}, + {-1}, - {pool_offset(1356), 184}, + {pool_offset(1392), 161}, + {-1}, - {pool_offset(1357), 545}, + {pool_offset(1394), 546}, {-1}, {-1}, - {pool_offset(1360), 487}, + {pool_offset(1397), 84}, - {pool_offset(1361), 474}, + {pool_offset(1398), 93}, - {pool_offset(1362), 455}, - {-1}, - - {pool_offset(1364), 558}, + {pool_offset(1399), 390}, - {pool_offset(1365), 74}, + {pool_offset(1400), 57}, {-1}, {-1}, - {pool_offset(1368), 251}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1373), 31}, + {pool_offset(1403), 93}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1379), 204}, - - {pool_offset(1380), 124}, - {-1}, {-1}, {-1}, + {pool_offset(1409), 372}, + {-1}, {-1}, - {pool_offset(1384), 160}, - {-1}, {-1}, {-1}, + {pool_offset(1412), 96}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1388), 546}, - {-1}, {-1}, {-1}, + {pool_offset(1418), 151}, + {-1}, {-1}, - {pool_offset(1392), 158}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1421), 231}, + {-1}, {-1}, - {pool_offset(1398), 111}, + {pool_offset(1424), 478}, - {pool_offset(1399), 386}, - {-1}, + {pool_offset(1425), 358}, + {-1}, {-1}, - {pool_offset(1401), 274}, + {pool_offset(1428), 151}, {-1}, - {pool_offset(1403), 469}, - {-1}, {-1}, + {pool_offset(1430), 225}, + {-1}, {-1}, {-1}, - {pool_offset(1406), 383}, + {pool_offset(1434), 96}, {-1}, {-1}, - {pool_offset(1409), 84}, + {pool_offset(1437), 540}, {-1}, - {pool_offset(1411), 162}, + {pool_offset(1439), 488}, - {pool_offset(1412), 33}, - {-1}, + {pool_offset(1440), 85}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1414), 168}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1445), 57}, - {pool_offset(1421), 228}, - {-1}, + {pool_offset(1446), 493}, - {pool_offset(1423), 166}, + {pool_offset(1447), 75}, - {pool_offset(1424), 166}, - {-1}, {-1}, + {pool_offset(1448), 459}, + {-1}, - {pool_offset(1427), 178}, + {pool_offset(1450), 106}, {-1}, {-1}, - {pool_offset(1430), 222}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1453), 220}, + {-1}, - {pool_offset(1435), 106}, + {pool_offset(1455), 535}, + + {pool_offset(1456), 100}, + + {pool_offset(1457), 469}, {-1}, - {pool_offset(1437), 193}, - {-1}, {-1}, + {pool_offset(1459), 135}, - {pool_offset(1440), 107}, + {pool_offset(1460), 470}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1443), 458}, + {pool_offset(1472), 559}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1444), 456}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1480), 40}, - {pool_offset(1449), 529}, - {-1}, {-1}, {-1}, + {pool_offset(1481), 165}, - {pool_offset(1453), 217}, + {pool_offset(1482), 48}, {-1}, - {pool_offset(1455), 371}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1484), 113}, - {pool_offset(1461), 147}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1485), 60}, + {-1}, {-1}, {-1}, - {pool_offset(1467), 85}, + {pool_offset(1489), 473}, - {pool_offset(1468), 29}, + {pool_offset(1490), 232}, + {-1}, {-1}, + + {pool_offset(1493), 182}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1473), 326}, + {pool_offset(1498), 33}, + {-1}, - {pool_offset(1474), 81}, + {pool_offset(1500), 526}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1475), 15}, + {pool_offset(1508), 107}, {-1}, - {pool_offset(1477), 196}, + {pool_offset(1510), 32}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1519), 447}, {-1}, - {pool_offset(1479), 186}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1521), 108}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1486), 67}, - {-1}, {-1}, + {pool_offset(1526), 109}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1489), 300}, - {-1}, + {pool_offset(1531), 575}, - {pool_offset(1491), 136}, + {pool_offset(1532), 335}, - {pool_offset(1492), 136}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1533), 181}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(1499), 351}, + {pool_offset(1545), 333}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1506), 47}, - - {pool_offset(1507), 316}, + {pool_offset(1552), 65}, - {pool_offset(1508), 212}, - - {pool_offset(1509), 337}, + {pool_offset(1553), 87}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1513), 75}, + {pool_offset(1566), 398}, + {-1}, {-1}, - {pool_offset(1514), 510}, + {pool_offset(1569), 175}, {-1}, - {pool_offset(1516), 493}, + {pool_offset(1571), 204}, + {-1}, {-1}, {-1}, - {pool_offset(1517), 239}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1575), 562}, + {-1}, - {pool_offset(1524), 388}, + {pool_offset(1577), 267}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1525), 53}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1587), 129}, + {-1}, {-1}, - {pool_offset(1532), 331}, + {pool_offset(1590), 323}, {-1}, {-1}, - {pool_offset(1535), 343}, + {pool_offset(1593), 65}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1598), 458}, + {-1}, + + {pool_offset(1600), 518}, {-1}, {-1}, - {pool_offset(1538), 128}, + {pool_offset(1603), 382}, {-1}, {-1}, - {pool_offset(1541), 67}, + {pool_offset(1606), 506}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1542), 123}, - {-1}, {-1}, + {pool_offset(1612), 452}, + {-1}, - {pool_offset(1545), 30}, + {pool_offset(1614), 59}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1553), 12}, - - {pool_offset(1554), 88}, + {pool_offset(1622), 570}, + {-1}, - {pool_offset(1555), 435}, + {pool_offset(1624), 222}, {-1}, - {pool_offset(1557), 30}, - {-1}, {-1}, + {pool_offset(1626), 377}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1560), 61}, + {pool_offset(1631), 30}, {-1}, - {pool_offset(1562), 287}, + {pool_offset(1633), 32}, {-1}, {-1}, - {pool_offset(1565), 88}, + {pool_offset(1636), 1}, + {-1}, {-1}, - {pool_offset(1566), 394}, + {pool_offset(1639), 457}, + {-1}, {-1}, {-1}, - {pool_offset(1567), 567}, + {pool_offset(1643), 30}, {-1}, {-1}, - {pool_offset(1570), 109}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1646), 129}, + {-1}, - {pool_offset(1576), 352}, + {pool_offset(1648), 445}, + {-1}, - {pool_offset(1577), 60}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1650), 331}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1582), 288}, + {pool_offset(1658), 254}, + {-1}, {-1}, - {pool_offset(1583), 324}, + {pool_offset(1661), 196}, {-1}, - {pool_offset(1585), 526}, - {-1}, {-1}, {-1}, - - {pool_offset(1589), 237}, + {pool_offset(1663), 235}, {-1}, - {pool_offset(1591), 65}, - {-1}, {-1}, + {pool_offset(1665), 180}, - {pool_offset(1594), 97}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1666), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1601), 404}, + {pool_offset(1672), 258}, {-1}, - {pool_offset(1603), 224}, + {pool_offset(1674), 404}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1604), 50}, - {-1}, + {pool_offset(1680), 296}, + {-1}, {-1}, {-1}, - {pool_offset(1606), 221}, + {pool_offset(1684), 476}, + {-1}, {-1}, - {pool_offset(1607), 65}, + {pool_offset(1687), 127}, {-1}, - {pool_offset(1609), 188}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1689), 227}, + {-1}, {-1}, - {pool_offset(1615), 109}, + {pool_offset(1692), 224}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1697), 368}, + + {pool_offset(1698), 290}, + + {pool_offset(1699), 260}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1621), 140}, + {pool_offset(1714), 315}, - {pool_offset(1622), 559}, - {-1}, + {pool_offset(1715), 487}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1624), 219}, + {pool_offset(1725), 283}, {-1}, - {pool_offset(1626), 140}, + {pool_offset(1727), 97}, {-1}, - {pool_offset(1628), 311}, + {pool_offset(1729), 23}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1737), 233}, + {-1}, {-1}, - {pool_offset(1629), 481}, - {-1}, + {pool_offset(1740), 149}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1631), 173}, - {-1}, + {pool_offset(1748), 184}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1633), 452}, + {pool_offset(1754), 9}, {-1}, {-1}, - {pool_offset(1636), 190}, - {-1}, + {pool_offset(1757), 59}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1638), 195}, - {-1}, {-1}, {-1}, + {pool_offset(1766), 21}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1642), 24}, + {pool_offset(1774), 44}, + + {pool_offset(1775), 97}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1645), 561}, + {pool_offset(1787), 271}, - {pool_offset(1646), 473}, + {pool_offset(1788), 425}, - {pool_offset(1647), 354}, + {pool_offset(1789), 138}, - {pool_offset(1648), 173}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1790), 138}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1654), 189}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1808), 243}, + {-1}, {-1}, - {pool_offset(1661), 193}, - {-1}, + {pool_offset(1811), 394}, + {-1}, {-1}, + + {pool_offset(1814), 132}, - {pool_offset(1663), 232}, + {pool_offset(1815), 54}, {-1}, {-1}, - {pool_offset(1666), 357}, + {pool_offset(1818), 162}, {-1}, {-1}, - {pool_offset(1669), 73}, + {pool_offset(1821), 162}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1828), 131}, {-1}, {-1}, - {pool_offset(1672), 104}, + {pool_offset(1831), 240}, - {pool_offset(1673), 241}, + {pool_offset(1832), 69}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1688), 44}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1849), 243}, - {pool_offset(1694), 549}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1850), 15}, - {pool_offset(1700), 56}, - {-1}, + {pool_offset(1851), 266}, + {-1}, {-1}, - {pool_offset(1702), 40}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1854), 311}, + {-1}, {-1}, {-1}, - {pool_offset(1708), 100}, + {pool_offset(1858), 86}, + {-1}, {-1}, {-1}, - {pool_offset(1709), 359}, - {-1}, {-1}, + {pool_offset(1862), 35}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1712), 229}, - {-1}, {-1}, + {pool_offset(1870), 166}, - {pool_offset(1715), 179}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1871), 232}, - {pool_offset(1720), 244}, + {pool_offset(1872), 504}, + {-1}, {-1}, + + {pool_offset(1875), 393}, {-1}, - {pool_offset(1722), 518}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1877), 533}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1729), 366}, - {-1}, {-1}, {-1}, + {pool_offset(1886), 496}, - {pool_offset(1733), 417}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1887), 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1743), 422}, - {-1}, + {pool_offset(1893), 207}, - {pool_offset(1745), 56}, + {pool_offset(1894), 50}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1900), 35}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1750), 231}, - {-1}, {-1}, + {pool_offset(1905), 369}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1912), 170}, - {pool_offset(1753), 563}, + {pool_offset(1913), 534}, {-1}, {-1}, - {pool_offset(1756), 423}, + {pool_offset(1916), 178}, - {pool_offset(1757), 465}, - {-1}, {-1}, + {pool_offset(1917), 480}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1760), 466}, - {-1}, {-1}, + {pool_offset(1922), 330}, + {-1}, - {pool_offset(1763), 152}, + {pool_offset(1924), 385}, - {pool_offset(1764), 15}, + {pool_offset(1925), 511}, + + {pool_offset(1926), 401}, {-1}, - {pool_offset(1766), 409}, + {pool_offset(1928), 307}, + {-1}, - {pool_offset(1767), 332}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1930), 206}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1781), 162}, + {pool_offset(1938), 304}, + {-1}, - {pool_offset(1782), 49}, - {-1}, {-1}, + {pool_offset(1940), 406}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1785), 59}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1947), 366}, - {pool_offset(1791), 523}, + {pool_offset(1948), 355}, {-1}, {-1}, - {pool_offset(1794), 263}, - {-1}, {-1}, + {pool_offset(1951), 163}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(1797), 552}, + {pool_offset(1962), 387}, - {pool_offset(1798), 24}, + {pool_offset(1963), 247}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(1984), 347}, + + {pool_offset(1985), 449}, + {-1}, {-1}, {-1}, - {pool_offset(1808), 105}, + {pool_offset(1989), 15}, {-1}, - {pool_offset(1810), 32}, + {pool_offset(1991), 44}, {-1}, - {pool_offset(1812), 180}, + {pool_offset(1993), 442}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1998), 314}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1819), 443}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(2005), 539}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1830), 407}, - {-1}, {-1}, {-1}, + {pool_offset(2011), 291}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1834), 138}, + {pool_offset(2016), 579}, + {-1}, + + {pool_offset(2018), 543}, {-1}, {-1}, {-1}, - {pool_offset(1838), 381}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2022), 298}, - {pool_offset(1845), 138}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2023), 421}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1871), 201}, + {pool_offset(2028), 205}, {-1}, {-1}, {-1}, - {pool_offset(1875), 389}, - {-1}, {-1}, + {pool_offset(2032), 328}, - {pool_offset(1878), 228}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2033), 199}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1897), 252}, + {pool_offset(2038), 536}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1898), 564}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {pool_offset(2047), 139}, - {pool_offset(1910), 234}, + {pool_offset(2048), 139}, + {-1}, - {pool_offset(1911), 92}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2050), 408}, + {-1}, {-1}, {-1}, - {pool_offset(1926), 373}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2054), 574}, - {pool_offset(1932), 291}, + {pool_offset(2055), 374}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1933), 32}, + {pool_offset(2072), 49}, {-1}, {-1}, - {pool_offset(1936), 1}, + {pool_offset(2075), 320}, - {pool_offset(1937), 117}, - {-1}, + {pool_offset(2076), 223}, - {pool_offset(1939), 453}, + {pool_offset(2077), 309}, {-1}, {-1}, - {pool_offset(1942), 502}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2080), 392}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1948), 441}, - {-1}, + {pool_offset(2087), 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1950), 327}, + {pool_offset(2097), 177}, - {pool_offset(1951), 23}, - {-1}, {-1}, {-1}, + {pool_offset(2098), 90}, + {-1}, {-1}, - {pool_offset(1955), 340}, + {pool_offset(2101), 188}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2106), 253}, {-1}, {-1}, - {pool_offset(1958), 426}, + {pool_offset(2109), 12}, - {pool_offset(1959), 230}, + {pool_offset(2110), 191}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1964), 430}, + {pool_offset(2115), 361}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1965), 178}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2123), 37}, + {-1}, {-1}, - {pool_offset(1972), 42}, + {pool_offset(2126), 103}, + {-1}, {-1}, - {pool_offset(1973), 382}, + {pool_offset(2129), 223}, {-1}, - {pool_offset(1975), 98}, + {pool_offset(2131), 545}, - {pool_offset(1976), 392}, - {-1}, {-1}, + {pool_offset(2132), 171}, - {pool_offset(1979), 401}, + {pool_offset(2133), 61}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1984), 5}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1990), 220}, - - {pool_offset(1991), 305}, + {pool_offset(2147), 242}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1996), 399}, + {pool_offset(2152), 126}, + {-1}, {-1}, {-1}, - {pool_offset(1997), 364}, + {pool_offset(2156), 5}, - {pool_offset(1998), 286}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2157), 102}, + + {pool_offset(2158), 363}, + {-1}, {-1}, {-1}, - {pool_offset(2004), 459}, + {pool_offset(2162), 269}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2014), 194}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2177), 143}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2022), 294}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2182), 143}, + {-1}, {-1}, {-1}, - {pool_offset(2029), 273}, + {pool_offset(2186), 225}, {-1}, - {pool_offset(2031), 226}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2188), 58}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2036), 133}, - {-1}, + {pool_offset(2194), 198}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2038), 250}, + {pool_offset(2200), 111}, - {pool_offset(2039), 341}, + {pool_offset(2201), 157}, - {pool_offset(2040), 146}, - {-1}, {-1}, + {pool_offset(2202), 272}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2043), 220}, - {-1}, {-1}, {-1}, + {pool_offset(2207), 79}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2047), 403}, + {pool_offset(2212), 292}, - {pool_offset(2048), 234}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2213), 572}, - {pool_offset(2054), 9}, + {pool_offset(2214), 62}, {-1}, - {pool_offset(2056), 96}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2061), 79}, + {pool_offset(2216), 95}, {-1}, {-1}, - {pool_offset(2064), 303}, - {-1}, + {pool_offset(2219), 240}, + {-1}, {-1}, - {pool_offset(2066), 203}, + {pool_offset(2222), 94}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2076), 402}, + {pool_offset(2232), 188}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2082), 256}, + {pool_offset(2238), 267}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2243), 295}, {-1}, - {pool_offset(2084), 35}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2245), 111}, + {-1}, {-1}, {-1}, - {pool_offset(2089), 241}, + {pool_offset(2249), 542}, {-1}, {-1}, {-1}, - {pool_offset(2093), 229}, + {pool_offset(2253), 509}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2094), 181}, - {-1}, {-1}, + {pool_offset(2261), 183}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2097), 177}, - {-1}, {-1}, + {pool_offset(2267), 81}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2100), 222}, + {pool_offset(2272), 24}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2277), 184}, + + {pool_offset(2278), 337}, {-1}, - {pool_offset(2102), 391}, + {pool_offset(2280), 413}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2286), 100}, + {-1}, {-1}, {-1}, + + {pool_offset(2290), 405}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2300), 182}, {-1}, {-1}, - {pool_offset(2105), 475}, + {pool_offset(2303), 244}, {-1}, {-1}, - {pool_offset(2108), 490}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2306), 234}, - {pool_offset(2113), 245}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2307), 270}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(2118), 245}, - {-1}, + {pool_offset(2319), 155}, + {-1}, {-1}, {-1}, - {pool_offset(2120), 246}, + {pool_offset(2323), 168}, {-1}, - {pool_offset(2122), 35}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2127), 365}, - {-1}, + {pool_offset(2325), 197}, + {-1}, {-1}, {-1}, - {pool_offset(2129), 4}, - {-1}, {-1}, + {pool_offset(2329), 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2132), 60}, + {pool_offset(2335), 185}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2149), 233}, + {pool_offset(2350), 247}, - {pool_offset(2150), 333}, + {pool_offset(2351), 444}, + {-1}, {-1}, - {pool_offset(2151), 262}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2354), 167}, + + {pool_offset(2355), 0}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2159), 367}, + {pool_offset(2364), 47}, {-1}, {-1}, {-1}, - {pool_offset(2163), 532}, + {pool_offset(2368), 206}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2168), 556}, - {-1}, + {pool_offset(2373), 426}, + {-1}, {-1}, {-1}, - {pool_offset(2170), 163}, + {pool_offset(2377), 172}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2176), 249}, + {pool_offset(2383), 370}, + {-1}, {-1}, + + {pool_offset(2386), 427}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2394), 78}, + {-1}, {-1}, + + {pool_offset(2397), 336}, {-1}, - {pool_offset(2178), 249}, + {pool_offset(2399), 81}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2184), 335}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2414), 80}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2193), 79}, + {pool_offset(2421), 42}, {-1}, {-1}, {-1}, - {pool_offset(2197), 256}, - {-1}, + {pool_offset(2425), 396}, - {pool_offset(2199), 289}, + {pool_offset(2426), 293}, {-1}, - {pool_offset(2201), 164}, + {pool_offset(2428), 24}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2206), 242}, + {pool_offset(2433), 338}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2439), 77}, + {-1}, {-1}, {-1}, - {pool_offset(2207), 257}, + {pool_offset(2443), 325}, {-1}, {-1}, - {pool_offset(2210), 236}, + {pool_offset(2446), 231}, + {-1}, - {pool_offset(2211), 182}, + {pool_offset(2448), 527}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2212), 167}, + {pool_offset(2453), 141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2213), 524}, + {pool_offset(2460), 411}, + {-1}, {-1}, {-1}, - {pool_offset(2214), 51}, + {pool_offset(2464), 141}, {-1}, - {pool_offset(2216), 321}, - {-1}, {-1}, {-1}, + {pool_offset(2466), 237}, - {pool_offset(2220), 243}, - {-1}, {-1}, + {pool_offset(2467), 36}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2223), 172}, - {-1}, {-1}, + {pool_offset(2474), 269}, - {pool_offset(2226), 238}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2475), 4}, {-1}, - {pool_offset(2237), 213}, - {-1}, {-1}, - - {pool_offset(2240), 533}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2477), 255}, - {pool_offset(2250), 323}, + {pool_offset(2478), 277}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2251), 160}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2484), 195}, {-1}, {-1}, {-1}, - {pool_offset(2264), 385}, + {pool_offset(2488), 345}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, - - {pool_offset(2277), 258}, + {-1}, {-1}, - {pool_offset(2278), 218}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2500), 505}, - {pool_offset(2285), 540}, + {pool_offset(2501), 334}, {-1}, {-1}, - {pool_offset(2288), 317}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2293), 438}, + {pool_offset(2504), 51}, {-1}, - {pool_offset(2295), 330}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2506), 386}, + {-1}, {-1}, {-1}, - {pool_offset(2305), 334}, - {-1}, {-1}, + {pool_offset(2510), 193}, - {pool_offset(2308), 20}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - - {pool_offset(2320), 183}, + {pool_offset(2511), 344}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2325), 62}, + {pool_offset(2516), 417}, + {-1}, {-1}, {-1}, + + {pool_offset(2520), 434}, + {-1}, {-1}, - {pool_offset(2326), 92}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2523), 253}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2333), 165}, + {pool_offset(2528), 576}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(2343), 77}, - {-1}, + {pool_offset(2541), 260}, + {-1}, {-1}, - {pool_offset(2345), 93}, + {pool_offset(2544), 133}, + {-1}, {-1}, {-1}, - {pool_offset(2346), 171}, - {-1}, + {pool_offset(2548), 216}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2348), 175}, + {pool_offset(2556), 120}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2349), 557}, + {pool_offset(2562), 48}, {-1}, {-1}, - {pool_offset(2352), 93}, + {pool_offset(2565), 172}, + {-1}, {-1}, {-1}, - {pool_offset(2353), 535}, + {pool_offset(2569), 187}, {-1}, - {pool_offset(2355), 370}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2571), 205}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2364), 164}, + {pool_offset(2579), 174}, - {pool_offset(2365), 0}, + {pool_offset(2580), 471}, + {-1}, - {pool_offset(2366), 123}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2582), 343}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2375), 63}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2587), 229}, - {pool_offset(2381), 36}, + {pool_offset(2588), 430}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(2391), 362}, - {-1}, {-1}, {-1}, + {pool_offset(2599), 212}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2395), 432}, + {pool_offset(2604), 237}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2400), 225}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2609), 529}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2410), 57}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2614), 245}, + {-1}, {-1}, - {pool_offset(2418), 342}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2617), 566}, - {pool_offset(2426), 101}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2618), 239}, + {-1}, {-1}, {-1}, - {pool_offset(2442), 310}, + {pool_offset(2622), 436}, + {-1}, {-1}, {-1}, - {pool_offset(2443), 242}, - {-1}, + {pool_offset(2626), 403}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2445), 184}, - {-1}, + {pool_offset(2633), 339}, - {pool_offset(2447), 185}, + {pool_offset(2634), 463}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2448), 397}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2640), 481}, + {-1}, {-1}, - {pool_offset(2455), 250}, + {pool_offset(2643), 64}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2456), 188}, + {pool_offset(2662), 424}, {-1}, {-1}, {-1}, - {pool_offset(2460), 427}, + {pool_offset(2666), 136}, {-1}, - {pool_offset(2462), 513}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2668), 50}, - {pool_offset(2469), 37}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2669), 230}, + {-1}, {-1}, {-1}, - {pool_offset(2478), 168}, + {pool_offset(2673), 371}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2480), 233}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2684), 226}, + {-1}, {-1}, {-1}, - {pool_offset(2487), 440}, + {pool_offset(2688), 61}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2498), 312}, + {pool_offset(2699), 327}, {-1}, {-1}, {-1}, - {pool_offset(2502), 268}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2703), 380}, + {-1}, + + {pool_offset(2705), 236}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2516), 313}, + {pool_offset(2710), 179}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2523), 221}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2717), 175}, + {-1}, - {pool_offset(2529), 174}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2719), 244}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2538), 542}, + {pool_offset(2724), 259}, + {-1}, + + {pool_offset(2726), 195}, + + {pool_offset(2727), 221}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2733), 192}, {-1}, {-1}, {-1}, - {pool_offset(2542), 174}, - {-1}, + {pool_offset(2737), 321}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2544), 248}, + {pool_offset(2743), 317}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(2554), 376}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2755), 360}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2561), 176}, + {pool_offset(2761), 118}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(2571), 387}, - {-1}, + {pool_offset(2774), 567}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2573), 114}, + {pool_offset(2789), 66}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2578), 185}, + {pool_offset(2794), 49}, {-1}, {-1}, {-1}, - {pool_offset(2582), 203}, - {-1}, - - {pool_offset(2584), 418}, - {-1}, {-1}, {-1}, + {pool_offset(2798), 568}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2588), 70}, + {pool_offset(2805), 66}, {-1}, {-1}, - {pool_offset(2591), 169}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2808), 252}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2607), 266}, + {pool_offset(2815), 72}, {-1}, - {pool_offset(2609), 247}, - {-1}, + {pool_offset(2817), 80}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2611), 78}, + {pool_offset(2825), 549}, {-1}, {-1}, {-1}, - {pool_offset(2615), 247}, - - {pool_offset(2616), 223}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2829), 248}, + {-1}, - {pool_offset(2622), 97}, + {pool_offset(2831), 167}, - {pool_offset(2623), 248}, - {-1}, {-1}, {-1}, + {pool_offset(2832), 194}, + {-1}, - {pool_offset(2627), 511}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2834), 248}, + {-1}, - {pool_offset(2632), 239}, + {pool_offset(2836), 249}, + {-1}, {-1}, - {pool_offset(2633), 424}, + {pool_offset(2839), 259}, + {-1}, - {pool_offset(2634), 541}, - {-1}, {-1}, {-1}, + {pool_offset(2841), 550}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2638), 118}, + {pool_offset(2850), 246}, {-1}, {-1}, - {pool_offset(2641), 428}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(2853), 177}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2652), 413}, + {pool_offset(2859), 94}, + {-1}, {-1}, - {pool_offset(2653), 71}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2862), 36}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2669), 215}, + {pool_offset(2867), 346}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2692), 27}, - {-1}, {-1}, {-1}, + {pool_offset(2891), 563}, - {pool_offset(2696), 71}, + {pool_offset(2892), 252}, {-1}, - {pool_offset(2698), 48}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(2894), 364}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2709), 181}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2899), 224}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2725), 544}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2904), 349}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2914), 422}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2919), 261}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2767), 265}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(2775), 70}, + {pool_offset(2940), 173}, + {-1}, - {pool_offset(2776), 36}, - {-1}, {-1}, + {pool_offset(2942), 241}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(2779), 169}, + {pool_offset(2962), 190}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2785), 202}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2977), 522}, + {-1}, - {pool_offset(2794), 467}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2979), 395}, - {pool_offset(2800), 498}, + {pool_offset(2980), 164}, - {pool_offset(2801), 154}, - {-1}, {-1}, + {pool_offset(2981), 554}, + {-1}, - {pool_offset(2804), 50}, + {pool_offset(2983), 99}, {-1}, {-1}, {-1}, - {pool_offset(2808), 539}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2987), 73}, - {pool_offset(2813), 209}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, - - {pool_offset(2824), 258}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2988), 164}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2831), 161}, + {pool_offset(2997), 521}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2836), 19}, - {-1}, + {pool_offset(3002), 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2838), 59}, + {pool_offset(3010), 51}, + {-1}, {-1}, {-1}, - {pool_offset(2839), 161}, - {-1}, + {pool_offset(3014), 121}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2841), 551}, + {pool_offset(3024), 285}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2847), 68}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3030), 73}, + {-1}, {-1}, - {pool_offset(2856), 190}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3033), 316}, + {-1}, {-1}, - {pool_offset(2875), 281}, + {pool_offset(3036), 236}, + {-1}, - {pool_offset(2876), 420}, + {pool_offset(3038), 98}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2890), 130}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2916), 76}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(3073), 245}, + {-1}, {-1}, - {pool_offset(2930), 49}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3076), 519}, + {-1}, {-1}, {-1}, + + {pool_offset(3080), 261}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2953), 200}, - - {pool_offset(2954), 179}, + {pool_offset(3094), 60}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(2970), 519}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3105), 179}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2977), 231}, + {pool_offset(3115), 70}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2996), 265}, + {pool_offset(3143), 75}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(3012), 47}, + {pool_offset(3154), 189}, {-1}, {-1}, - {pool_offset(3015), 227}, + {pool_offset(3157), 552}, + {-1}, + + {pool_offset(3159), 173}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3020), 270}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3164), 209}, + {-1}, {-1}, + + {pool_offset(3167), 64}, + + {pool_offset(3168), 428}, + + {pool_offset(3169), 551}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3072), 192}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(3079), 189}, + {pool_offset(3210), 407}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3084), 278}, - {-1}, {-1}, {-1}, + {pool_offset(3215), 116}, + {-1}, {-1}, - {pool_offset(3088), 176}, - {-1}, {-1}, {-1}, + {pool_offset(3218), 194}, + {-1}, {-1}, - {pool_offset(3092), 191}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3221), 203}, + {-1}, {-1}, - {pool_offset(3099), 451}, + {pool_offset(3224), 95}, + + {pool_offset(3225), 218}, + {-1}, + + {pool_offset(3227), 544}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3118), 345}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(3146), 51}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3154), 170}, + {pool_offset(3295), 432}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3337), 373}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3182), 339}, + {pool_offset(3347), 18}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3188), 187}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3353), 389}, + {-1}, - {pool_offset(3197), 414}, + {pool_offset(3355), 455}, + {-1}, {-1}, - {pool_offset(3198), 18}, + {pool_offset(3358), 431}, + {-1}, {-1}, - {pool_offset(3199), 63}, + {pool_offset(3361), 99}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3216), 192}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3376), 561}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3258), 55}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3267), 42}, + {pool_offset(3395), 216}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3408), 27}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3285), 172}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3417), 228}, {-1}, {-1}, - {pool_offset(3306), 213}, + {pool_offset(3420), 20}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3324), 236}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3436), 79}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3350), 99}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3355), 356}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3444), 47}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3461), 63}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3477), 420}, + {-1}, + + {pool_offset(3479), 501}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3497), 10}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3413), 514}, + {pool_offset(3510), 418}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3459), 170}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3478), 191}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3491), 553}, + {pool_offset(3577), 226}, {-1}, {-1}, - {pool_offset(3494), 360}, + {pool_offset(3580), 42}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3500), 186}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3595), 68}, + {-1}, {-1}, {-1}, - {pool_offset(3527), 416}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(3599), 251}, - {pool_offset(3538), 68}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3600), 256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3663), 180}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(3666), 235}, + {pool_offset(3659), 19}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(3685), 235}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3692), 379}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3680), 183}, {-1}, {-1}, - {pool_offset(3731), 223}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3683), 391}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(3750), 508}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {pool_offset(3688), 250}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3763), 509}, + {pool_offset(3694), 250}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3807), 10}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3810), 206}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3730), 190}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3872), 77}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3881), 96}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3784), 516}, + {-1}, {-1}, {-1}, + + {pool_offset(3788), 577}, {-1}, - {pool_offset(3901), 243}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3790), 211}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3910), 253}, + {pool_offset(3797), 517}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3937), 369}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(3946), 251}, + {pool_offset(3828), 251}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3961), 194}, + {pool_offset(3852), 238}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3971), 534}, + {pool_offset(3871), 238}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3992), 350}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3892), 242}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3909), 282}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3918), 274}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3969), 137}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3982), 234}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29358,79 +29895,65 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(4279), 134}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(4129), 419}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(4298), 187}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(4139), 101}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(4401), 415}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {pool_offset(4181), 239}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(4476), 358}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(4186), 254}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4201), 197}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(4562), 377}, - - {pool_offset(4563), 69}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(4577), 554}, + {pool_offset(4269), 383}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(4309), 246}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4325), 362}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(4659), 171}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(4362), 70}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {-1}, {-1}, {-1}, - {pool_offset(4688), 565}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(4375), 71}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4425), 354}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29439,19 +29962,19 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(4822), 208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(4851), 69}, + {pool_offset(4533), 564}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4575), 381}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29474,6 +29997,9 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4779), 174}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29489,6 +30015,9 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4921), 56}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29537,6 +30066,9 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5358), 578}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29546,6 +30078,9 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(5443), 98}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -29556,7 +30091,7 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(5809), 566} + {pool_offset(5519), 71} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -29580,11 +30115,11 @@ unicode_lookup_property_name (register const char *str, register size_t len) -#define UNICODE_PROPERTY_VERSION 120100 -#define UNICODE_EMOJI_VERSION 1201 +#define UNICODE_PROPERTY_VERSION 130000 +#define UNICODE_EMOJI_VERSION 1300 #define PROPERTY_NAME_MAX_SIZE 59 -#define CODE_RANGES_NUM 568 +#define CODE_RANGES_NUM 580 #define PROP_INDEX_NEWLINE 0 #define PROP_INDEX_ALPHA 1 @@ -29671,719 +30206,740 @@ unicode_lookup_property_name (register const char *str, register size_t len) #define PROP_INDEX_CHANGESWHENUPPERCASED 51 #define PROP_INDEX_CHER 52 #define PROP_INDEX_CHEROKEE 52 -#define PROP_INDEX_CN 53 -#define PROP_INDEX_UNASSIGNED 53 -#define PROP_INDEX_PRIVATEUSE 54 -#define PROP_INDEX_CO 54 -#define PROP_INDEX_ZYYY 55 -#define PROP_INDEX_COMMON 55 -#define PROP_INDEX_COPT 56 -#define PROP_INDEX_COPTIC 56 -#define PROP_INDEX_QAAC 56 -#define PROP_INDEX_CS 57 -#define PROP_INDEX_SURROGATE 57 -#define PROP_INDEX_XSUX 58 -#define PROP_INDEX_CUNEIFORM 58 -#define PROP_INDEX_CPRT 59 -#define PROP_INDEX_CYPRIOT 59 -#define PROP_INDEX_CYRILLIC 60 -#define PROP_INDEX_CYRL 60 -#define PROP_INDEX_DASH 61 -#define PROP_INDEX_DEFAULTIGNORABLECODEPOINT 62 -#define PROP_INDEX_DI 62 -#define PROP_INDEX_DEP 63 -#define PROP_INDEX_DEPRECATED 63 -#define PROP_INDEX_DSRT 64 -#define PROP_INDEX_DESERET 64 -#define PROP_INDEX_DEVA 65 -#define PROP_INDEX_DEVANAGARI 65 -#define PROP_INDEX_DIACRITIC 66 -#define PROP_INDEX_DIA 66 -#define PROP_INDEX_DOGRA 67 -#define PROP_INDEX_DOGR 67 -#define PROP_INDEX_DUPL 68 -#define PROP_INDEX_DUPLOYAN 68 -#define PROP_INDEX_EGYPTIANHIEROGLYPHS 69 -#define PROP_INDEX_EGYP 69 -#define PROP_INDEX_ELBA 70 -#define PROP_INDEX_ELBASAN 70 -#define PROP_INDEX_ELYM 71 -#define PROP_INDEX_ELYMAIC 71 -#define PROP_INDEX_EMOJI 72 -#define PROP_INDEX_EMOJICOMPONENT 73 -#define PROP_INDEX_EMOJIMODIFIER 74 -#define PROP_INDEX_EMOJIMODIFIERBASE 75 -#define PROP_INDEX_EMOJIPRESENTATION 76 -#define PROP_INDEX_ETHIOPIC 77 -#define PROP_INDEX_ETHI 77 -#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 78 -#define PROP_INDEX_EXT 79 -#define PROP_INDEX_EXTENDER 79 -#define PROP_INDEX_GEORGIAN 80 -#define PROP_INDEX_GEOR 80 -#define PROP_INDEX_GLAG 81 -#define PROP_INDEX_GLAGOLITIC 81 -#define PROP_INDEX_GOTH 82 -#define PROP_INDEX_GOTHIC 82 -#define PROP_INDEX_GRAN 83 -#define PROP_INDEX_GRANTHA 83 -#define PROP_INDEX_GRBASE 84 -#define PROP_INDEX_GRAPHEMEBASE 84 -#define PROP_INDEX_GREXT 85 -#define PROP_INDEX_GRAPHEMEEXTEND 85 -#define PROP_INDEX_GRAPHEMELINK 86 -#define PROP_INDEX_GRLINK 86 -#define PROP_INDEX_GREEK 87 -#define PROP_INDEX_GREK 87 -#define PROP_INDEX_GUJARATI 88 -#define PROP_INDEX_GUJR 88 -#define PROP_INDEX_GUNJALAGONDI 89 -#define PROP_INDEX_GONG 89 -#define PROP_INDEX_GURU 90 -#define PROP_INDEX_GURMUKHI 90 -#define PROP_INDEX_HANI 91 -#define PROP_INDEX_HAN 91 -#define PROP_INDEX_HANG 92 -#define PROP_INDEX_HANGUL 92 -#define PROP_INDEX_HANIFIROHINGYA 93 -#define PROP_INDEX_ROHG 93 -#define PROP_INDEX_HANUNOO 94 -#define PROP_INDEX_HANO 94 -#define PROP_INDEX_HATR 95 -#define PROP_INDEX_HATRAN 95 -#define PROP_INDEX_HEBREW 96 -#define PROP_INDEX_HEBR 96 -#define PROP_INDEX_HEXDIGIT 97 -#define PROP_INDEX_HEX 97 -#define PROP_INDEX_HIRAGANA 98 -#define PROP_INDEX_HIRA 98 -#define PROP_INDEX_HYPHEN 99 -#define PROP_INDEX_IDSB 100 -#define PROP_INDEX_IDSBINARYOPERATOR 100 -#define PROP_INDEX_IDST 101 -#define PROP_INDEX_IDSTRINARYOPERATOR 101 -#define PROP_INDEX_IDCONTINUE 102 -#define PROP_INDEX_IDC 102 -#define PROP_INDEX_IDS 103 -#define PROP_INDEX_IDSTART 103 -#define PROP_INDEX_IDEO 104 -#define PROP_INDEX_IDEOGRAPHIC 104 -#define PROP_INDEX_ARMI 105 -#define PROP_INDEX_IMPERIALARAMAIC 105 -#define PROP_INDEX_ZINH 106 -#define PROP_INDEX_INHERITED 106 -#define PROP_INDEX_QAAI 106 -#define PROP_INDEX_PHLI 107 -#define PROP_INDEX_INSCRIPTIONALPAHLAVI 107 -#define PROP_INDEX_INSCRIPTIONALPARTHIAN 108 -#define PROP_INDEX_PRTI 108 -#define PROP_INDEX_JAVANESE 109 -#define PROP_INDEX_JAVA 109 -#define PROP_INDEX_JOINC 110 -#define PROP_INDEX_JOINCONTROL 110 -#define PROP_INDEX_KAITHI 111 -#define PROP_INDEX_KTHI 111 -#define PROP_INDEX_KNDA 112 -#define PROP_INDEX_KANNADA 112 -#define PROP_INDEX_KATAKANA 113 -#define PROP_INDEX_KANA 113 -#define PROP_INDEX_KAYAHLI 114 -#define PROP_INDEX_KALI 114 -#define PROP_INDEX_KHAROSHTHI 115 -#define PROP_INDEX_KHAR 115 -#define PROP_INDEX_KHMR 116 -#define PROP_INDEX_KHMER 116 -#define PROP_INDEX_KHOJ 117 -#define PROP_INDEX_KHOJKI 117 -#define PROP_INDEX_KHUDAWADI 118 -#define PROP_INDEX_SIND 118 -#define PROP_INDEX_L 119 -#define PROP_INDEX_LETTER 119 -#define PROP_INDEX_LC 120 -#define PROP_INDEX_CASEDLETTER 120 -#define PROP_INDEX_LAO 121 -#define PROP_INDEX_LAOO 121 -#define PROP_INDEX_LATN 122 -#define PROP_INDEX_LATIN 122 -#define PROP_INDEX_LEPC 123 -#define PROP_INDEX_LEPCHA 123 -#define PROP_INDEX_LIMBU 124 -#define PROP_INDEX_LIMB 124 -#define PROP_INDEX_LINA 125 -#define PROP_INDEX_LINEARA 125 -#define PROP_INDEX_LINB 126 -#define PROP_INDEX_LINEARB 126 -#define PROP_INDEX_LISU 127 -#define PROP_INDEX_LOWERCASELETTER 128 -#define PROP_INDEX_LL 128 -#define PROP_INDEX_LM 129 -#define PROP_INDEX_MODIFIERLETTER 129 -#define PROP_INDEX_LO 130 -#define PROP_INDEX_OTHERLETTER 130 -#define PROP_INDEX_LOGICALORDEREXCEPTION 131 -#define PROP_INDEX_LOE 131 -#define PROP_INDEX_LOWERCASE 132 -#define PROP_INDEX_LT 133 -#define PROP_INDEX_TITLECASELETTER 133 -#define PROP_INDEX_UPPERCASELETTER 134 -#define PROP_INDEX_LU 134 -#define PROP_INDEX_LYCI 135 -#define PROP_INDEX_LYCIAN 135 -#define PROP_INDEX_LYDI 136 -#define PROP_INDEX_LYDIAN 136 -#define PROP_INDEX_M 137 -#define PROP_INDEX_COMBININGMARK 137 -#define PROP_INDEX_MARK 137 -#define PROP_INDEX_MAHJ 138 -#define PROP_INDEX_MAHAJANI 138 -#define PROP_INDEX_MAKASAR 139 -#define PROP_INDEX_MAKA 139 -#define PROP_INDEX_MALAYALAM 140 -#define PROP_INDEX_MLYM 140 -#define PROP_INDEX_MAND 141 -#define PROP_INDEX_MANDAIC 141 -#define PROP_INDEX_MANI 142 -#define PROP_INDEX_MANICHAEAN 142 -#define PROP_INDEX_MARC 143 -#define PROP_INDEX_MARCHEN 143 -#define PROP_INDEX_MASARAMGONDI 144 -#define PROP_INDEX_GONM 144 -#define PROP_INDEX_MATH 145 -#define PROP_INDEX_MC 146 -#define PROP_INDEX_SPACINGMARK 146 -#define PROP_INDEX_ENCLOSINGMARK 147 -#define PROP_INDEX_ME 147 -#define PROP_INDEX_MEDEFAIDRIN 148 -#define PROP_INDEX_MEDF 148 -#define PROP_INDEX_MEETEIMAYEK 149 -#define PROP_INDEX_MTEI 149 -#define PROP_INDEX_MENDEKIKAKUI 150 -#define PROP_INDEX_MEND 150 -#define PROP_INDEX_MEROITICCURSIVE 151 -#define PROP_INDEX_MERC 151 -#define PROP_INDEX_MEROITICHIEROGLYPHS 152 -#define PROP_INDEX_MERO 152 -#define PROP_INDEX_PLRD 153 -#define PROP_INDEX_MIAO 153 -#define PROP_INDEX_MN 154 -#define PROP_INDEX_NONSPACINGMARK 154 -#define PROP_INDEX_MODI 155 -#define PROP_INDEX_MONGOLIAN 156 -#define PROP_INDEX_MONG 156 -#define PROP_INDEX_MRO 157 -#define PROP_INDEX_MROO 157 -#define PROP_INDEX_MULT 158 -#define PROP_INDEX_MULTANI 158 -#define PROP_INDEX_MYANMAR 159 -#define PROP_INDEX_MYMR 159 -#define PROP_INDEX_NUMBER 160 -#define PROP_INDEX_N 160 -#define PROP_INDEX_NABATAEAN 161 -#define PROP_INDEX_NBAT 161 -#define PROP_INDEX_NAND 162 -#define PROP_INDEX_NANDINAGARI 162 -#define PROP_INDEX_DECIMALNUMBER 163 -#define PROP_INDEX_ND 163 -#define PROP_INDEX_TALU 164 -#define PROP_INDEX_NEWTAILUE 164 -#define PROP_INDEX_NEWA 165 -#define PROP_INDEX_NKO 166 -#define PROP_INDEX_NKOO 166 -#define PROP_INDEX_LETTERNUMBER 167 -#define PROP_INDEX_NL 167 -#define PROP_INDEX_OTHERNUMBER 168 -#define PROP_INDEX_NO 168 -#define PROP_INDEX_NONCHARACTERCODEPOINT 169 -#define PROP_INDEX_NCHAR 169 -#define PROP_INDEX_NSHU 170 -#define PROP_INDEX_NUSHU 170 -#define PROP_INDEX_HMNP 171 -#define PROP_INDEX_NYIAKENGPUACHUEHMONG 171 -#define PROP_INDEX_OGHAM 172 -#define PROP_INDEX_OGAM 172 -#define PROP_INDEX_OLCK 173 -#define PROP_INDEX_OLCHIKI 173 -#define PROP_INDEX_HUNG 174 -#define PROP_INDEX_OLDHUNGARIAN 174 -#define PROP_INDEX_ITAL 175 -#define PROP_INDEX_OLDITALIC 175 -#define PROP_INDEX_NARB 176 -#define PROP_INDEX_OLDNORTHARABIAN 176 -#define PROP_INDEX_OLDPERMIC 177 -#define PROP_INDEX_PERM 177 -#define PROP_INDEX_OLDPERSIAN 178 -#define PROP_INDEX_XPEO 178 -#define PROP_INDEX_SOGO 179 -#define PROP_INDEX_OLDSOGDIAN 179 -#define PROP_INDEX_SARB 180 -#define PROP_INDEX_OLDSOUTHARABIAN 180 -#define PROP_INDEX_OLDTURKIC 181 -#define PROP_INDEX_ORKH 181 -#define PROP_INDEX_ORYA 182 -#define PROP_INDEX_ORIYA 182 -#define PROP_INDEX_OSAGE 183 -#define PROP_INDEX_OSGE 183 -#define PROP_INDEX_OSMANYA 184 -#define PROP_INDEX_OSMA 184 -#define PROP_INDEX_OTHERALPHABETIC 185 -#define PROP_INDEX_OALPHA 185 -#define PROP_INDEX_ODI 186 -#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 186 -#define PROP_INDEX_OGREXT 187 -#define PROP_INDEX_OTHERGRAPHEMEEXTEND 187 -#define PROP_INDEX_OIDC 188 -#define PROP_INDEX_OTHERIDCONTINUE 188 -#define PROP_INDEX_OTHERIDSTART 189 -#define PROP_INDEX_OIDS 189 -#define PROP_INDEX_OTHERLOWERCASE 190 -#define PROP_INDEX_OLOWER 190 -#define PROP_INDEX_OTHERMATH 191 -#define PROP_INDEX_OMATH 191 -#define PROP_INDEX_OTHERUPPERCASE 192 -#define PROP_INDEX_OUPPER 192 -#define PROP_INDEX_P 193 -#define PROP_INDEX_PUNCTUATION 193 -#define PROP_INDEX_PAHAWHHMONG 194 -#define PROP_INDEX_HMNG 194 -#define PROP_INDEX_PALMYRENE 195 -#define PROP_INDEX_PALM 195 -#define PROP_INDEX_PATTERNSYNTAX 196 -#define PROP_INDEX_PATSYN 196 -#define PROP_INDEX_PATWS 197 -#define PROP_INDEX_PATTERNWHITESPACE 197 -#define PROP_INDEX_PAUCINHAU 198 -#define PROP_INDEX_PAUC 198 -#define PROP_INDEX_CONNECTORPUNCTUATION 199 -#define PROP_INDEX_PC 199 -#define PROP_INDEX_DASHPUNCTUATION 200 -#define PROP_INDEX_PD 200 -#define PROP_INDEX_PE 201 -#define PROP_INDEX_CLOSEPUNCTUATION 201 -#define PROP_INDEX_FINALPUNCTUATION 202 -#define PROP_INDEX_PF 202 -#define PROP_INDEX_PHAG 203 -#define PROP_INDEX_PHAGSPA 203 -#define PROP_INDEX_PHOENICIAN 204 -#define PROP_INDEX_PHNX 204 -#define PROP_INDEX_PI 205 -#define PROP_INDEX_INITIALPUNCTUATION 205 -#define PROP_INDEX_OTHERPUNCTUATION 206 -#define PROP_INDEX_PO 206 -#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 207 -#define PROP_INDEX_PCM 207 -#define PROP_INDEX_PS 208 -#define PROP_INDEX_OPENPUNCTUATION 208 -#define PROP_INDEX_PHLP 209 -#define PROP_INDEX_PSALTERPAHLAVI 209 -#define PROP_INDEX_QUOTATIONMARK 210 -#define PROP_INDEX_QMARK 210 -#define PROP_INDEX_RADICAL 211 -#define PROP_INDEX_RI 212 -#define PROP_INDEX_REGIONALINDICATOR 212 -#define PROP_INDEX_REJANG 213 -#define PROP_INDEX_RJNG 213 -#define PROP_INDEX_RUNIC 214 -#define PROP_INDEX_RUNR 214 -#define PROP_INDEX_S 215 -#define PROP_INDEX_SYMBOL 215 -#define PROP_INDEX_SAMARITAN 216 -#define PROP_INDEX_SAMR 216 -#define PROP_INDEX_SAURASHTRA 217 -#define PROP_INDEX_SAUR 217 -#define PROP_INDEX_SC 218 -#define PROP_INDEX_CURRENCYSYMBOL 218 -#define PROP_INDEX_SENTENCETERMINAL 219 -#define PROP_INDEX_STERM 219 -#define PROP_INDEX_SHARADA 220 -#define PROP_INDEX_SHRD 220 -#define PROP_INDEX_SHAVIAN 221 -#define PROP_INDEX_SHAW 221 -#define PROP_INDEX_SIDDHAM 222 -#define PROP_INDEX_SIDD 222 -#define PROP_INDEX_SIGNWRITING 223 -#define PROP_INDEX_SGNW 223 -#define PROP_INDEX_SINH 224 -#define PROP_INDEX_SINHALA 224 -#define PROP_INDEX_SK 225 -#define PROP_INDEX_MODIFIERSYMBOL 225 -#define PROP_INDEX_MATHSYMBOL 226 -#define PROP_INDEX_SM 226 -#define PROP_INDEX_SO 227 -#define PROP_INDEX_OTHERSYMBOL 227 -#define PROP_INDEX_SD 228 -#define PROP_INDEX_SOFTDOTTED 228 -#define PROP_INDEX_SOGD 229 -#define PROP_INDEX_SOGDIAN 229 -#define PROP_INDEX_SORASOMPENG 230 -#define PROP_INDEX_SORA 230 -#define PROP_INDEX_SOYO 231 -#define PROP_INDEX_SOYOMBO 231 -#define PROP_INDEX_SUND 232 -#define PROP_INDEX_SUNDANESE 232 -#define PROP_INDEX_SYLO 233 -#define PROP_INDEX_SYLOTINAGRI 233 -#define PROP_INDEX_SYRC 234 -#define PROP_INDEX_SYRIAC 234 -#define PROP_INDEX_TGLG 235 -#define PROP_INDEX_TAGALOG 235 -#define PROP_INDEX_TAGBANWA 236 -#define PROP_INDEX_TAGB 236 -#define PROP_INDEX_TAILE 237 -#define PROP_INDEX_TALE 237 -#define PROP_INDEX_TAITHAM 238 -#define PROP_INDEX_LANA 238 -#define PROP_INDEX_TAIVIET 239 -#define PROP_INDEX_TAVT 239 -#define PROP_INDEX_TAKRI 240 -#define PROP_INDEX_TAKR 240 -#define PROP_INDEX_TAMIL 241 -#define PROP_INDEX_TAML 241 -#define PROP_INDEX_TANG 242 -#define PROP_INDEX_TANGUT 242 -#define PROP_INDEX_TELUGU 243 -#define PROP_INDEX_TELU 243 -#define PROP_INDEX_TERM 244 -#define PROP_INDEX_TERMINALPUNCTUATION 244 -#define PROP_INDEX_THAA 245 -#define PROP_INDEX_THAANA 245 -#define PROP_INDEX_THAI 246 -#define PROP_INDEX_TIBT 247 -#define PROP_INDEX_TIBETAN 247 -#define PROP_INDEX_TFNG 248 -#define PROP_INDEX_TIFINAGH 248 -#define PROP_INDEX_TIRHUTA 249 -#define PROP_INDEX_TIRH 249 -#define PROP_INDEX_UGAR 250 -#define PROP_INDEX_UGARITIC 250 -#define PROP_INDEX_UNIFIEDIDEOGRAPH 251 -#define PROP_INDEX_UIDEO 251 -#define PROP_INDEX_ZZZZ 252 -#define PROP_INDEX_UNKNOWN 252 -#define PROP_INDEX_UPPERCASE 253 -#define PROP_INDEX_VAII 254 -#define PROP_INDEX_VAI 254 -#define PROP_INDEX_VARIATIONSELECTOR 255 -#define PROP_INDEX_VS 255 -#define PROP_INDEX_WCHO 256 -#define PROP_INDEX_WANCHO 256 -#define PROP_INDEX_WARANGCITI 257 -#define PROP_INDEX_WARA 257 -#define PROP_INDEX_WHITESPACE 258 -#define PROP_INDEX_WSPACE 258 -#define PROP_INDEX_XIDC 259 -#define PROP_INDEX_XIDCONTINUE 259 -#define PROP_INDEX_XIDS 260 -#define PROP_INDEX_XIDSTART 260 -#define PROP_INDEX_YI 261 -#define PROP_INDEX_YIII 261 -#define PROP_INDEX_SEPARATOR 262 -#define PROP_INDEX_Z 262 -#define PROP_INDEX_ZANABAZARSQUARE 263 -#define PROP_INDEX_ZANB 263 -#define PROP_INDEX_ZL 264 -#define PROP_INDEX_LINESEPARATOR 264 -#define PROP_INDEX_ZP 265 -#define PROP_INDEX_PARAGRAPHSEPARATOR 265 -#define PROP_INDEX_ZS 266 -#define PROP_INDEX_SPACESEPARATOR 266 -#define PROP_INDEX_INBASICLATIN 267 -#define PROP_INDEX_INLATIN1SUPPLEMENT 268 -#define PROP_INDEX_INLATINEXTENDEDA 269 -#define PROP_INDEX_INLATINEXTENDEDB 270 -#define PROP_INDEX_INIPAEXTENSIONS 271 -#define PROP_INDEX_INSPACINGMODIFIERLETTERS 272 -#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 273 -#define PROP_INDEX_INGREEKANDCOPTIC 274 -#define PROP_INDEX_INCYRILLIC 275 -#define PROP_INDEX_INCYRILLICSUPPLEMENT 276 -#define PROP_INDEX_INARMENIAN 277 -#define PROP_INDEX_INHEBREW 278 -#define PROP_INDEX_INARABIC 279 -#define PROP_INDEX_INSYRIAC 280 -#define PROP_INDEX_INARABICSUPPLEMENT 281 -#define PROP_INDEX_INTHAANA 282 -#define PROP_INDEX_INNKO 283 -#define PROP_INDEX_INSAMARITAN 284 -#define PROP_INDEX_INMANDAIC 285 -#define PROP_INDEX_INSYRIACSUPPLEMENT 286 -#define PROP_INDEX_INARABICEXTENDEDA 287 -#define PROP_INDEX_INDEVANAGARI 288 -#define PROP_INDEX_INBENGALI 289 -#define PROP_INDEX_INGURMUKHI 290 -#define PROP_INDEX_INGUJARATI 291 -#define PROP_INDEX_INORIYA 292 -#define PROP_INDEX_INTAMIL 293 -#define PROP_INDEX_INTELUGU 294 -#define PROP_INDEX_INKANNADA 295 -#define PROP_INDEX_INMALAYALAM 296 -#define PROP_INDEX_INSINHALA 297 -#define PROP_INDEX_INTHAI 298 -#define PROP_INDEX_INLAO 299 -#define PROP_INDEX_INTIBETAN 300 -#define PROP_INDEX_INMYANMAR 301 -#define PROP_INDEX_INGEORGIAN 302 -#define PROP_INDEX_INHANGULJAMO 303 -#define PROP_INDEX_INETHIOPIC 304 -#define PROP_INDEX_INETHIOPICSUPPLEMENT 305 -#define PROP_INDEX_INCHEROKEE 306 -#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 307 -#define PROP_INDEX_INOGHAM 308 -#define PROP_INDEX_INRUNIC 309 -#define PROP_INDEX_INTAGALOG 310 -#define PROP_INDEX_INHANUNOO 311 -#define PROP_INDEX_INBUHID 312 -#define PROP_INDEX_INTAGBANWA 313 -#define PROP_INDEX_INKHMER 314 -#define PROP_INDEX_INMONGOLIAN 315 -#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 316 -#define PROP_INDEX_INLIMBU 317 -#define PROP_INDEX_INTAILE 318 -#define PROP_INDEX_INNEWTAILUE 319 -#define PROP_INDEX_INKHMERSYMBOLS 320 -#define PROP_INDEX_INBUGINESE 321 -#define PROP_INDEX_INTAITHAM 322 -#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 323 -#define PROP_INDEX_INBALINESE 324 -#define PROP_INDEX_INSUNDANESE 325 -#define PROP_INDEX_INBATAK 326 -#define PROP_INDEX_INLEPCHA 327 -#define PROP_INDEX_INOLCHIKI 328 -#define PROP_INDEX_INCYRILLICEXTENDEDC 329 -#define PROP_INDEX_INGEORGIANEXTENDED 330 -#define PROP_INDEX_INSUNDANESESUPPLEMENT 331 -#define PROP_INDEX_INVEDICEXTENSIONS 332 -#define PROP_INDEX_INPHONETICEXTENSIONS 333 -#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 334 -#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 335 -#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 336 -#define PROP_INDEX_INGREEKEXTENDED 337 -#define PROP_INDEX_INGENERALPUNCTUATION 338 -#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 339 -#define PROP_INDEX_INCURRENCYSYMBOLS 340 -#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 341 -#define PROP_INDEX_INLETTERLIKESYMBOLS 342 -#define PROP_INDEX_INNUMBERFORMS 343 -#define PROP_INDEX_INARROWS 344 -#define PROP_INDEX_INMATHEMATICALOPERATORS 345 -#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 346 -#define PROP_INDEX_INCONTROLPICTURES 347 -#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 348 -#define PROP_INDEX_INENCLOSEDALPHANUMERICS 349 -#define PROP_INDEX_INBOXDRAWING 350 -#define PROP_INDEX_INBLOCKELEMENTS 351 -#define PROP_INDEX_INGEOMETRICSHAPES 352 -#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 353 -#define PROP_INDEX_INDINGBATS 354 -#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 355 -#define PROP_INDEX_INSUPPLEMENTALARROWSA 356 -#define PROP_INDEX_INBRAILLEPATTERNS 357 -#define PROP_INDEX_INSUPPLEMENTALARROWSB 358 -#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 359 -#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 360 -#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 361 -#define PROP_INDEX_INGLAGOLITIC 362 -#define PROP_INDEX_INLATINEXTENDEDC 363 -#define PROP_INDEX_INCOPTIC 364 -#define PROP_INDEX_INGEORGIANSUPPLEMENT 365 -#define PROP_INDEX_INTIFINAGH 366 -#define PROP_INDEX_INETHIOPICEXTENDED 367 -#define PROP_INDEX_INCYRILLICEXTENDEDA 368 -#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 369 -#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 370 -#define PROP_INDEX_INKANGXIRADICALS 371 -#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 372 -#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 373 -#define PROP_INDEX_INHIRAGANA 374 -#define PROP_INDEX_INKATAKANA 375 -#define PROP_INDEX_INBOPOMOFO 376 -#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 377 -#define PROP_INDEX_INKANBUN 378 -#define PROP_INDEX_INBOPOMOFOEXTENDED 379 -#define PROP_INDEX_INCJKSTROKES 380 -#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 381 -#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 382 -#define PROP_INDEX_INCJKCOMPATIBILITY 383 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 384 -#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 385 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 386 -#define PROP_INDEX_INYISYLLABLES 387 -#define PROP_INDEX_INYIRADICALS 388 -#define PROP_INDEX_INLISU 389 -#define PROP_INDEX_INVAI 390 -#define PROP_INDEX_INCYRILLICEXTENDEDB 391 -#define PROP_INDEX_INBAMUM 392 -#define PROP_INDEX_INMODIFIERTONELETTERS 393 -#define PROP_INDEX_INLATINEXTENDEDD 394 -#define PROP_INDEX_INSYLOTINAGRI 395 -#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 396 -#define PROP_INDEX_INPHAGSPA 397 -#define PROP_INDEX_INSAURASHTRA 398 -#define PROP_INDEX_INDEVANAGARIEXTENDED 399 -#define PROP_INDEX_INKAYAHLI 400 -#define PROP_INDEX_INREJANG 401 -#define PROP_INDEX_INHANGULJAMOEXTENDEDA 402 -#define PROP_INDEX_INJAVANESE 403 -#define PROP_INDEX_INMYANMAREXTENDEDB 404 -#define PROP_INDEX_INCHAM 405 -#define PROP_INDEX_INMYANMAREXTENDEDA 406 -#define PROP_INDEX_INTAIVIET 407 -#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 408 -#define PROP_INDEX_INETHIOPICEXTENDEDA 409 -#define PROP_INDEX_INLATINEXTENDEDE 410 -#define PROP_INDEX_INCHEROKEESUPPLEMENT 411 -#define PROP_INDEX_INMEETEIMAYEK 412 -#define PROP_INDEX_INHANGULSYLLABLES 413 -#define PROP_INDEX_INHANGULJAMOEXTENDEDB 414 -#define PROP_INDEX_INHIGHSURROGATES 415 -#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 416 -#define PROP_INDEX_INLOWSURROGATES 417 -#define PROP_INDEX_INPRIVATEUSEAREA 418 -#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 419 -#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 420 -#define PROP_INDEX_INARABICPRESENTATIONFORMSA 421 -#define PROP_INDEX_INVARIATIONSELECTORS 422 -#define PROP_INDEX_INVERTICALFORMS 423 -#define PROP_INDEX_INCOMBININGHALFMARKS 424 -#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 425 -#define PROP_INDEX_INSMALLFORMVARIANTS 426 -#define PROP_INDEX_INARABICPRESENTATIONFORMSB 427 -#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 428 -#define PROP_INDEX_INSPECIALS 429 -#define PROP_INDEX_INLINEARBSYLLABARY 430 -#define PROP_INDEX_INLINEARBIDEOGRAMS 431 -#define PROP_INDEX_INAEGEANNUMBERS 432 -#define PROP_INDEX_INANCIENTGREEKNUMBERS 433 -#define PROP_INDEX_INANCIENTSYMBOLS 434 -#define PROP_INDEX_INPHAISTOSDISC 435 -#define PROP_INDEX_INLYCIAN 436 -#define PROP_INDEX_INCARIAN 437 -#define PROP_INDEX_INCOPTICEPACTNUMBERS 438 -#define PROP_INDEX_INOLDITALIC 439 -#define PROP_INDEX_INGOTHIC 440 -#define PROP_INDEX_INOLDPERMIC 441 -#define PROP_INDEX_INUGARITIC 442 -#define PROP_INDEX_INOLDPERSIAN 443 -#define PROP_INDEX_INDESERET 444 -#define PROP_INDEX_INSHAVIAN 445 -#define PROP_INDEX_INOSMANYA 446 -#define PROP_INDEX_INOSAGE 447 -#define PROP_INDEX_INELBASAN 448 -#define PROP_INDEX_INCAUCASIANALBANIAN 449 -#define PROP_INDEX_INLINEARA 450 -#define PROP_INDEX_INCYPRIOTSYLLABARY 451 -#define PROP_INDEX_INIMPERIALARAMAIC 452 -#define PROP_INDEX_INPALMYRENE 453 -#define PROP_INDEX_INNABATAEAN 454 -#define PROP_INDEX_INHATRAN 455 -#define PROP_INDEX_INPHOENICIAN 456 -#define PROP_INDEX_INLYDIAN 457 -#define PROP_INDEX_INMEROITICHIEROGLYPHS 458 -#define PROP_INDEX_INMEROITICCURSIVE 459 -#define PROP_INDEX_INKHAROSHTHI 460 -#define PROP_INDEX_INOLDSOUTHARABIAN 461 -#define PROP_INDEX_INOLDNORTHARABIAN 462 -#define PROP_INDEX_INMANICHAEAN 463 -#define PROP_INDEX_INAVESTAN 464 -#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 465 -#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 466 -#define PROP_INDEX_INPSALTERPAHLAVI 467 -#define PROP_INDEX_INOLDTURKIC 468 -#define PROP_INDEX_INOLDHUNGARIAN 469 -#define PROP_INDEX_INHANIFIROHINGYA 470 -#define PROP_INDEX_INRUMINUMERALSYMBOLS 471 -#define PROP_INDEX_INOLDSOGDIAN 472 -#define PROP_INDEX_INSOGDIAN 473 -#define PROP_INDEX_INELYMAIC 474 -#define PROP_INDEX_INBRAHMI 475 -#define PROP_INDEX_INKAITHI 476 -#define PROP_INDEX_INSORASOMPENG 477 -#define PROP_INDEX_INCHAKMA 478 -#define PROP_INDEX_INMAHAJANI 479 -#define PROP_INDEX_INSHARADA 480 -#define PROP_INDEX_INSINHALAARCHAICNUMBERS 481 -#define PROP_INDEX_INKHOJKI 482 -#define PROP_INDEX_INMULTANI 483 -#define PROP_INDEX_INKHUDAWADI 484 -#define PROP_INDEX_INGRANTHA 485 -#define PROP_INDEX_INNEWA 486 -#define PROP_INDEX_INTIRHUTA 487 -#define PROP_INDEX_INSIDDHAM 488 -#define PROP_INDEX_INMODI 489 -#define PROP_INDEX_INMONGOLIANSUPPLEMENT 490 -#define PROP_INDEX_INTAKRI 491 -#define PROP_INDEX_INAHOM 492 -#define PROP_INDEX_INDOGRA 493 -#define PROP_INDEX_INWARANGCITI 494 -#define PROP_INDEX_INNANDINAGARI 495 -#define PROP_INDEX_INZANABAZARSQUARE 496 -#define PROP_INDEX_INSOYOMBO 497 -#define PROP_INDEX_INPAUCINHAU 498 -#define PROP_INDEX_INBHAIKSUKI 499 -#define PROP_INDEX_INMARCHEN 500 -#define PROP_INDEX_INMASARAMGONDI 501 -#define PROP_INDEX_INGUNJALAGONDI 502 -#define PROP_INDEX_INMAKASAR 503 -#define PROP_INDEX_INTAMILSUPPLEMENT 504 -#define PROP_INDEX_INCUNEIFORM 505 -#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 506 -#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 507 -#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 508 -#define PROP_INDEX_INEGYPTIANHIEROGLYPHFORMATCONTROLS 509 -#define PROP_INDEX_INANATOLIANHIEROGLYPHS 510 -#define PROP_INDEX_INBAMUMSUPPLEMENT 511 -#define PROP_INDEX_INMRO 512 -#define PROP_INDEX_INBASSAVAH 513 -#define PROP_INDEX_INPAHAWHHMONG 514 -#define PROP_INDEX_INMEDEFAIDRIN 515 -#define PROP_INDEX_INMIAO 516 -#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 517 -#define PROP_INDEX_INTANGUT 518 -#define PROP_INDEX_INTANGUTCOMPONENTS 519 -#define PROP_INDEX_INKANASUPPLEMENT 520 -#define PROP_INDEX_INKANAEXTENDEDA 521 -#define PROP_INDEX_INSMALLKANAEXTENSION 522 -#define PROP_INDEX_INNUSHU 523 -#define PROP_INDEX_INDUPLOYAN 524 -#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 525 -#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 526 -#define PROP_INDEX_INMUSICALSYMBOLS 527 -#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 528 -#define PROP_INDEX_INMAYANNUMERALS 529 -#define PROP_INDEX_INTAIXUANJINGSYMBOLS 530 -#define PROP_INDEX_INCOUNTINGRODNUMERALS 531 -#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 532 -#define PROP_INDEX_INSUTTONSIGNWRITING 533 -#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 534 -#define PROP_INDEX_INNYIAKENGPUACHUEHMONG 535 -#define PROP_INDEX_INWANCHO 536 -#define PROP_INDEX_INMENDEKIKAKUI 537 -#define PROP_INDEX_INADLAM 538 -#define PROP_INDEX_ININDICSIYAQNUMBERS 539 -#define PROP_INDEX_INOTTOMANSIYAQNUMBERS 540 -#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 541 -#define PROP_INDEX_INMAHJONGTILES 542 -#define PROP_INDEX_INDOMINOTILES 543 -#define PROP_INDEX_INPLAYINGCARDS 544 -#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 545 -#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 546 -#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 547 -#define PROP_INDEX_INEMOTICONS 548 -#define PROP_INDEX_INORNAMENTALDINGBATS 549 -#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 550 -#define PROP_INDEX_INALCHEMICALSYMBOLS 551 -#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 552 -#define PROP_INDEX_INSUPPLEMENTALARROWSC 553 -#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 554 -#define PROP_INDEX_INCHESSSYMBOLS 555 -#define PROP_INDEX_INSYMBOLSANDPICTOGRAPHSEXTENDEDA 556 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 557 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 558 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 559 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 560 -#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 561 -#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 562 -#define PROP_INDEX_INTAGS 563 -#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 564 -#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 565 -#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 566 -#define PROP_INDEX_INNOBLOCK 567 +#define PROP_INDEX_CHRS 53 +#define PROP_INDEX_CHORASMIAN 53 +#define PROP_INDEX_CN 54 +#define PROP_INDEX_UNASSIGNED 54 +#define PROP_INDEX_PRIVATEUSE 55 +#define PROP_INDEX_CO 55 +#define PROP_INDEX_ZYYY 56 +#define PROP_INDEX_COMMON 56 +#define PROP_INDEX_COPT 57 +#define PROP_INDEX_COPTIC 57 +#define PROP_INDEX_QAAC 57 +#define PROP_INDEX_CS 58 +#define PROP_INDEX_SURROGATE 58 +#define PROP_INDEX_XSUX 59 +#define PROP_INDEX_CUNEIFORM 59 +#define PROP_INDEX_CPRT 60 +#define PROP_INDEX_CYPRIOT 60 +#define PROP_INDEX_CYRILLIC 61 +#define PROP_INDEX_CYRL 61 +#define PROP_INDEX_DASH 62 +#define PROP_INDEX_DEFAULTIGNORABLECODEPOINT 63 +#define PROP_INDEX_DI 63 +#define PROP_INDEX_DEP 64 +#define PROP_INDEX_DEPRECATED 64 +#define PROP_INDEX_DSRT 65 +#define PROP_INDEX_DESERET 65 +#define PROP_INDEX_DEVA 66 +#define PROP_INDEX_DEVANAGARI 66 +#define PROP_INDEX_DIACRITIC 67 +#define PROP_INDEX_DIA 67 +#define PROP_INDEX_DIAK 68 +#define PROP_INDEX_DIVESAKURU 68 +#define PROP_INDEX_DOGR 69 +#define PROP_INDEX_DOGRA 69 +#define PROP_INDEX_DUPL 70 +#define PROP_INDEX_DUPLOYAN 70 +#define PROP_INDEX_EGYPTIANHIEROGLYPHS 71 +#define PROP_INDEX_EGYP 71 +#define PROP_INDEX_ELBA 72 +#define PROP_INDEX_ELBASAN 72 +#define PROP_INDEX_ELYM 73 +#define PROP_INDEX_ELYMAIC 73 +#define PROP_INDEX_EMOJI 74 +#define PROP_INDEX_EMOJICOMPONENT 75 +#define PROP_INDEX_ECOMP 75 +#define PROP_INDEX_EMOD 76 +#define PROP_INDEX_EMOJIMODIFIER 76 +#define PROP_INDEX_EMOJIMODIFIERBASE 77 +#define PROP_INDEX_EBASE 77 +#define PROP_INDEX_EMOJIPRESENTATION 78 +#define PROP_INDEX_EPRES 78 +#define PROP_INDEX_ETHIOPIC 79 +#define PROP_INDEX_ETHI 79 +#define PROP_INDEX_EXTPICT 80 +#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 80 +#define PROP_INDEX_EXT 81 +#define PROP_INDEX_EXTENDER 81 +#define PROP_INDEX_GEORGIAN 82 +#define PROP_INDEX_GEOR 82 +#define PROP_INDEX_GLAG 83 +#define PROP_INDEX_GLAGOLITIC 83 +#define PROP_INDEX_GOTH 84 +#define PROP_INDEX_GOTHIC 84 +#define PROP_INDEX_GRAN 85 +#define PROP_INDEX_GRANTHA 85 +#define PROP_INDEX_GRBASE 86 +#define PROP_INDEX_GRAPHEMEBASE 86 +#define PROP_INDEX_GREXT 87 +#define PROP_INDEX_GRAPHEMEEXTEND 87 +#define PROP_INDEX_GRAPHEMELINK 88 +#define PROP_INDEX_GRLINK 88 +#define PROP_INDEX_GREEK 89 +#define PROP_INDEX_GREK 89 +#define PROP_INDEX_GUJARATI 90 +#define PROP_INDEX_GUJR 90 +#define PROP_INDEX_GUNJALAGONDI 91 +#define PROP_INDEX_GONG 91 +#define PROP_INDEX_GURU 92 +#define PROP_INDEX_GURMUKHI 92 +#define PROP_INDEX_HANI 93 +#define PROP_INDEX_HAN 93 +#define PROP_INDEX_HANG 94 +#define PROP_INDEX_HANGUL 94 +#define PROP_INDEX_HANIFIROHINGYA 95 +#define PROP_INDEX_ROHG 95 +#define PROP_INDEX_HANUNOO 96 +#define PROP_INDEX_HANO 96 +#define PROP_INDEX_HATR 97 +#define PROP_INDEX_HATRAN 97 +#define PROP_INDEX_HEBREW 98 +#define PROP_INDEX_HEBR 98 +#define PROP_INDEX_HEX 99 +#define PROP_INDEX_HEXDIGIT 99 +#define PROP_INDEX_HIRAGANA 100 +#define PROP_INDEX_HIRA 100 +#define PROP_INDEX_HYPHEN 101 +#define PROP_INDEX_IDSB 102 +#define PROP_INDEX_IDSBINARYOPERATOR 102 +#define PROP_INDEX_IDST 103 +#define PROP_INDEX_IDSTRINARYOPERATOR 103 +#define PROP_INDEX_IDCONTINUE 104 +#define PROP_INDEX_IDC 104 +#define PROP_INDEX_IDS 105 +#define PROP_INDEX_IDSTART 105 +#define PROP_INDEX_IDEO 106 +#define PROP_INDEX_IDEOGRAPHIC 106 +#define PROP_INDEX_ARMI 107 +#define PROP_INDEX_IMPERIALARAMAIC 107 +#define PROP_INDEX_ZINH 108 +#define PROP_INDEX_INHERITED 108 +#define PROP_INDEX_QAAI 108 +#define PROP_INDEX_PHLI 109 +#define PROP_INDEX_INSCRIPTIONALPAHLAVI 109 +#define PROP_INDEX_INSCRIPTIONALPARTHIAN 110 +#define PROP_INDEX_PRTI 110 +#define PROP_INDEX_JAVANESE 111 +#define PROP_INDEX_JAVA 111 +#define PROP_INDEX_JOINC 112 +#define PROP_INDEX_JOINCONTROL 112 +#define PROP_INDEX_KAITHI 113 +#define PROP_INDEX_KTHI 113 +#define PROP_INDEX_KNDA 114 +#define PROP_INDEX_KANNADA 114 +#define PROP_INDEX_KATAKANA 115 +#define PROP_INDEX_KANA 115 +#define PROP_INDEX_KAYAHLI 116 +#define PROP_INDEX_KALI 116 +#define PROP_INDEX_KHAROSHTHI 117 +#define PROP_INDEX_KHAR 117 +#define PROP_INDEX_KITS 118 +#define PROP_INDEX_KHITANSMALLSCRIPT 118 +#define PROP_INDEX_KHMR 119 +#define PROP_INDEX_KHMER 119 +#define PROP_INDEX_KHOJ 120 +#define PROP_INDEX_KHOJKI 120 +#define PROP_INDEX_KHUDAWADI 121 +#define PROP_INDEX_SIND 121 +#define PROP_INDEX_L 122 +#define PROP_INDEX_LETTER 122 +#define PROP_INDEX_LC 123 +#define PROP_INDEX_CASEDLETTER 123 +#define PROP_INDEX_LAO 124 +#define PROP_INDEX_LAOO 124 +#define PROP_INDEX_LATN 125 +#define PROP_INDEX_LATIN 125 +#define PROP_INDEX_LEPC 126 +#define PROP_INDEX_LEPCHA 126 +#define PROP_INDEX_LIMBU 127 +#define PROP_INDEX_LIMB 127 +#define PROP_INDEX_LINA 128 +#define PROP_INDEX_LINEARA 128 +#define PROP_INDEX_LINB 129 +#define PROP_INDEX_LINEARB 129 +#define PROP_INDEX_LISU 130 +#define PROP_INDEX_LOWERCASELETTER 131 +#define PROP_INDEX_LL 131 +#define PROP_INDEX_LM 132 +#define PROP_INDEX_MODIFIERLETTER 132 +#define PROP_INDEX_LO 133 +#define PROP_INDEX_OTHERLETTER 133 +#define PROP_INDEX_LOGICALORDEREXCEPTION 134 +#define PROP_INDEX_LOE 134 +#define PROP_INDEX_LOWERCASE 135 +#define PROP_INDEX_LT 136 +#define PROP_INDEX_TITLECASELETTER 136 +#define PROP_INDEX_UPPERCASELETTER 137 +#define PROP_INDEX_LU 137 +#define PROP_INDEX_LYCI 138 +#define PROP_INDEX_LYCIAN 138 +#define PROP_INDEX_LYDI 139 +#define PROP_INDEX_LYDIAN 139 +#define PROP_INDEX_M 140 +#define PROP_INDEX_COMBININGMARK 140 +#define PROP_INDEX_MARK 140 +#define PROP_INDEX_MAHJ 141 +#define PROP_INDEX_MAHAJANI 141 +#define PROP_INDEX_MAKASAR 142 +#define PROP_INDEX_MAKA 142 +#define PROP_INDEX_MALAYALAM 143 +#define PROP_INDEX_MLYM 143 +#define PROP_INDEX_MAND 144 +#define PROP_INDEX_MANDAIC 144 +#define PROP_INDEX_MANI 145 +#define PROP_INDEX_MANICHAEAN 145 +#define PROP_INDEX_MARC 146 +#define PROP_INDEX_MARCHEN 146 +#define PROP_INDEX_MASARAMGONDI 147 +#define PROP_INDEX_GONM 147 +#define PROP_INDEX_MATH 148 +#define PROP_INDEX_MC 149 +#define PROP_INDEX_SPACINGMARK 149 +#define PROP_INDEX_ENCLOSINGMARK 150 +#define PROP_INDEX_ME 150 +#define PROP_INDEX_MEDEFAIDRIN 151 +#define PROP_INDEX_MEDF 151 +#define PROP_INDEX_MEETEIMAYEK 152 +#define PROP_INDEX_MTEI 152 +#define PROP_INDEX_MENDEKIKAKUI 153 +#define PROP_INDEX_MEND 153 +#define PROP_INDEX_MEROITICCURSIVE 154 +#define PROP_INDEX_MERC 154 +#define PROP_INDEX_MEROITICHIEROGLYPHS 155 +#define PROP_INDEX_MERO 155 +#define PROP_INDEX_PLRD 156 +#define PROP_INDEX_MIAO 156 +#define PROP_INDEX_MN 157 +#define PROP_INDEX_NONSPACINGMARK 157 +#define PROP_INDEX_MODI 158 +#define PROP_INDEX_MONGOLIAN 159 +#define PROP_INDEX_MONG 159 +#define PROP_INDEX_MRO 160 +#define PROP_INDEX_MROO 160 +#define PROP_INDEX_MULT 161 +#define PROP_INDEX_MULTANI 161 +#define PROP_INDEX_MYANMAR 162 +#define PROP_INDEX_MYMR 162 +#define PROP_INDEX_NUMBER 163 +#define PROP_INDEX_N 163 +#define PROP_INDEX_NABATAEAN 164 +#define PROP_INDEX_NBAT 164 +#define PROP_INDEX_NAND 165 +#define PROP_INDEX_NANDINAGARI 165 +#define PROP_INDEX_DECIMALNUMBER 166 +#define PROP_INDEX_ND 166 +#define PROP_INDEX_TALU 167 +#define PROP_INDEX_NEWTAILUE 167 +#define PROP_INDEX_NEWA 168 +#define PROP_INDEX_NKO 169 +#define PROP_INDEX_NKOO 169 +#define PROP_INDEX_LETTERNUMBER 170 +#define PROP_INDEX_NL 170 +#define PROP_INDEX_OTHERNUMBER 171 +#define PROP_INDEX_NO 171 +#define PROP_INDEX_NONCHARACTERCODEPOINT 172 +#define PROP_INDEX_NCHAR 172 +#define PROP_INDEX_NSHU 173 +#define PROP_INDEX_NUSHU 173 +#define PROP_INDEX_HMNP 174 +#define PROP_INDEX_NYIAKENGPUACHUEHMONG 174 +#define PROP_INDEX_OGHAM 175 +#define PROP_INDEX_OGAM 175 +#define PROP_INDEX_OLCK 176 +#define PROP_INDEX_OLCHIKI 176 +#define PROP_INDEX_HUNG 177 +#define PROP_INDEX_OLDHUNGARIAN 177 +#define PROP_INDEX_ITAL 178 +#define PROP_INDEX_OLDITALIC 178 +#define PROP_INDEX_NARB 179 +#define PROP_INDEX_OLDNORTHARABIAN 179 +#define PROP_INDEX_OLDPERMIC 180 +#define PROP_INDEX_PERM 180 +#define PROP_INDEX_OLDPERSIAN 181 +#define PROP_INDEX_XPEO 181 +#define PROP_INDEX_SOGO 182 +#define PROP_INDEX_OLDSOGDIAN 182 +#define PROP_INDEX_SARB 183 +#define PROP_INDEX_OLDSOUTHARABIAN 183 +#define PROP_INDEX_OLDTURKIC 184 +#define PROP_INDEX_ORKH 184 +#define PROP_INDEX_ORYA 185 +#define PROP_INDEX_ORIYA 185 +#define PROP_INDEX_OSAGE 186 +#define PROP_INDEX_OSGE 186 +#define PROP_INDEX_OSMANYA 187 +#define PROP_INDEX_OSMA 187 +#define PROP_INDEX_OTHERALPHABETIC 188 +#define PROP_INDEX_OALPHA 188 +#define PROP_INDEX_ODI 189 +#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 189 +#define PROP_INDEX_OGREXT 190 +#define PROP_INDEX_OTHERGRAPHEMEEXTEND 190 +#define PROP_INDEX_OIDC 191 +#define PROP_INDEX_OTHERIDCONTINUE 191 +#define PROP_INDEX_OTHERIDSTART 192 +#define PROP_INDEX_OIDS 192 +#define PROP_INDEX_OTHERLOWERCASE 193 +#define PROP_INDEX_OLOWER 193 +#define PROP_INDEX_OTHERMATH 194 +#define PROP_INDEX_OMATH 194 +#define PROP_INDEX_OTHERUPPERCASE 195 +#define PROP_INDEX_OUPPER 195 +#define PROP_INDEX_P 196 +#define PROP_INDEX_PUNCTUATION 196 +#define PROP_INDEX_PAHAWHHMONG 197 +#define PROP_INDEX_HMNG 197 +#define PROP_INDEX_PALMYRENE 198 +#define PROP_INDEX_PALM 198 +#define PROP_INDEX_PATTERNSYNTAX 199 +#define PROP_INDEX_PATSYN 199 +#define PROP_INDEX_PATWS 200 +#define PROP_INDEX_PATTERNWHITESPACE 200 +#define PROP_INDEX_PAUCINHAU 201 +#define PROP_INDEX_PAUC 201 +#define PROP_INDEX_CONNECTORPUNCTUATION 202 +#define PROP_INDEX_PC 202 +#define PROP_INDEX_DASHPUNCTUATION 203 +#define PROP_INDEX_PD 203 +#define PROP_INDEX_PE 204 +#define PROP_INDEX_CLOSEPUNCTUATION 204 +#define PROP_INDEX_FINALPUNCTUATION 205 +#define PROP_INDEX_PF 205 +#define PROP_INDEX_PHAG 206 +#define PROP_INDEX_PHAGSPA 206 +#define PROP_INDEX_PHOENICIAN 207 +#define PROP_INDEX_PHNX 207 +#define PROP_INDEX_PI 208 +#define PROP_INDEX_INITIALPUNCTUATION 208 +#define PROP_INDEX_OTHERPUNCTUATION 209 +#define PROP_INDEX_PO 209 +#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 210 +#define PROP_INDEX_PCM 210 +#define PROP_INDEX_PS 211 +#define PROP_INDEX_OPENPUNCTUATION 211 +#define PROP_INDEX_PHLP 212 +#define PROP_INDEX_PSALTERPAHLAVI 212 +#define PROP_INDEX_QUOTATIONMARK 213 +#define PROP_INDEX_QMARK 213 +#define PROP_INDEX_RADICAL 214 +#define PROP_INDEX_RI 215 +#define PROP_INDEX_REGIONALINDICATOR 215 +#define PROP_INDEX_REJANG 216 +#define PROP_INDEX_RJNG 216 +#define PROP_INDEX_RUNIC 217 +#define PROP_INDEX_RUNR 217 +#define PROP_INDEX_S 218 +#define PROP_INDEX_SYMBOL 218 +#define PROP_INDEX_SAMARITAN 219 +#define PROP_INDEX_SAMR 219 +#define PROP_INDEX_SAURASHTRA 220 +#define PROP_INDEX_SAUR 220 +#define PROP_INDEX_SC 221 +#define PROP_INDEX_CURRENCYSYMBOL 221 +#define PROP_INDEX_SENTENCETERMINAL 222 +#define PROP_INDEX_STERM 222 +#define PROP_INDEX_SHARADA 223 +#define PROP_INDEX_SHRD 223 +#define PROP_INDEX_SHAVIAN 224 +#define PROP_INDEX_SHAW 224 +#define PROP_INDEX_SIDDHAM 225 +#define PROP_INDEX_SIDD 225 +#define PROP_INDEX_SIGNWRITING 226 +#define PROP_INDEX_SGNW 226 +#define PROP_INDEX_SINH 227 +#define PROP_INDEX_SINHALA 227 +#define PROP_INDEX_SK 228 +#define PROP_INDEX_MODIFIERSYMBOL 228 +#define PROP_INDEX_MATHSYMBOL 229 +#define PROP_INDEX_SM 229 +#define PROP_INDEX_SO 230 +#define PROP_INDEX_OTHERSYMBOL 230 +#define PROP_INDEX_SD 231 +#define PROP_INDEX_SOFTDOTTED 231 +#define PROP_INDEX_SOGD 232 +#define PROP_INDEX_SOGDIAN 232 +#define PROP_INDEX_SORASOMPENG 233 +#define PROP_INDEX_SORA 233 +#define PROP_INDEX_SOYO 234 +#define PROP_INDEX_SOYOMBO 234 +#define PROP_INDEX_SUND 235 +#define PROP_INDEX_SUNDANESE 235 +#define PROP_INDEX_SYLO 236 +#define PROP_INDEX_SYLOTINAGRI 236 +#define PROP_INDEX_SYRC 237 +#define PROP_INDEX_SYRIAC 237 +#define PROP_INDEX_TGLG 238 +#define PROP_INDEX_TAGALOG 238 +#define PROP_INDEX_TAGBANWA 239 +#define PROP_INDEX_TAGB 239 +#define PROP_INDEX_TAILE 240 +#define PROP_INDEX_TALE 240 +#define PROP_INDEX_TAITHAM 241 +#define PROP_INDEX_LANA 241 +#define PROP_INDEX_TAIVIET 242 +#define PROP_INDEX_TAVT 242 +#define PROP_INDEX_TAKRI 243 +#define PROP_INDEX_TAKR 243 +#define PROP_INDEX_TAMIL 244 +#define PROP_INDEX_TAML 244 +#define PROP_INDEX_TANG 245 +#define PROP_INDEX_TANGUT 245 +#define PROP_INDEX_TELUGU 246 +#define PROP_INDEX_TELU 246 +#define PROP_INDEX_TERM 247 +#define PROP_INDEX_TERMINALPUNCTUATION 247 +#define PROP_INDEX_THAA 248 +#define PROP_INDEX_THAANA 248 +#define PROP_INDEX_THAI 249 +#define PROP_INDEX_TIBT 250 +#define PROP_INDEX_TIBETAN 250 +#define PROP_INDEX_TFNG 251 +#define PROP_INDEX_TIFINAGH 251 +#define PROP_INDEX_TIRHUTA 252 +#define PROP_INDEX_TIRH 252 +#define PROP_INDEX_UGAR 253 +#define PROP_INDEX_UGARITIC 253 +#define PROP_INDEX_UNIFIEDIDEOGRAPH 254 +#define PROP_INDEX_UIDEO 254 +#define PROP_INDEX_ZZZZ 255 +#define PROP_INDEX_UNKNOWN 255 +#define PROP_INDEX_UPPERCASE 256 +#define PROP_INDEX_VAII 257 +#define PROP_INDEX_VAI 257 +#define PROP_INDEX_VARIATIONSELECTOR 258 +#define PROP_INDEX_VS 258 +#define PROP_INDEX_WCHO 259 +#define PROP_INDEX_WANCHO 259 +#define PROP_INDEX_WARANGCITI 260 +#define PROP_INDEX_WARA 260 +#define PROP_INDEX_WHITESPACE 261 +#define PROP_INDEX_WSPACE 261 +#define PROP_INDEX_XIDC 262 +#define PROP_INDEX_XIDCONTINUE 262 +#define PROP_INDEX_XIDS 263 +#define PROP_INDEX_XIDSTART 263 +#define PROP_INDEX_YEZIDI 264 +#define PROP_INDEX_YEZI 264 +#define PROP_INDEX_YI 265 +#define PROP_INDEX_YIII 265 +#define PROP_INDEX_SEPARATOR 266 +#define PROP_INDEX_Z 266 +#define PROP_INDEX_ZANABAZARSQUARE 267 +#define PROP_INDEX_ZANB 267 +#define PROP_INDEX_ZL 268 +#define PROP_INDEX_LINESEPARATOR 268 +#define PROP_INDEX_ZP 269 +#define PROP_INDEX_PARAGRAPHSEPARATOR 269 +#define PROP_INDEX_ZS 270 +#define PROP_INDEX_SPACESEPARATOR 270 +#define PROP_INDEX_INBASICLATIN 271 +#define PROP_INDEX_INLATIN1SUPPLEMENT 272 +#define PROP_INDEX_INLATINEXTENDEDA 273 +#define PROP_INDEX_INLATINEXTENDEDB 274 +#define PROP_INDEX_INIPAEXTENSIONS 275 +#define PROP_INDEX_INSPACINGMODIFIERLETTERS 276 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 277 +#define PROP_INDEX_INGREEKANDCOPTIC 278 +#define PROP_INDEX_INCYRILLIC 279 +#define PROP_INDEX_INCYRILLICSUPPLEMENT 280 +#define PROP_INDEX_INARMENIAN 281 +#define PROP_INDEX_INHEBREW 282 +#define PROP_INDEX_INARABIC 283 +#define PROP_INDEX_INSYRIAC 284 +#define PROP_INDEX_INARABICSUPPLEMENT 285 +#define PROP_INDEX_INTHAANA 286 +#define PROP_INDEX_INNKO 287 +#define PROP_INDEX_INSAMARITAN 288 +#define PROP_INDEX_INMANDAIC 289 +#define PROP_INDEX_INSYRIACSUPPLEMENT 290 +#define PROP_INDEX_INARABICEXTENDEDA 291 +#define PROP_INDEX_INDEVANAGARI 292 +#define PROP_INDEX_INBENGALI 293 +#define PROP_INDEX_INGURMUKHI 294 +#define PROP_INDEX_INGUJARATI 295 +#define PROP_INDEX_INORIYA 296 +#define PROP_INDEX_INTAMIL 297 +#define PROP_INDEX_INTELUGU 298 +#define PROP_INDEX_INKANNADA 299 +#define PROP_INDEX_INMALAYALAM 300 +#define PROP_INDEX_INSINHALA 301 +#define PROP_INDEX_INTHAI 302 +#define PROP_INDEX_INLAO 303 +#define PROP_INDEX_INTIBETAN 304 +#define PROP_INDEX_INMYANMAR 305 +#define PROP_INDEX_INGEORGIAN 306 +#define PROP_INDEX_INHANGULJAMO 307 +#define PROP_INDEX_INETHIOPIC 308 +#define PROP_INDEX_INETHIOPICSUPPLEMENT 309 +#define PROP_INDEX_INCHEROKEE 310 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 311 +#define PROP_INDEX_INOGHAM 312 +#define PROP_INDEX_INRUNIC 313 +#define PROP_INDEX_INTAGALOG 314 +#define PROP_INDEX_INHANUNOO 315 +#define PROP_INDEX_INBUHID 316 +#define PROP_INDEX_INTAGBANWA 317 +#define PROP_INDEX_INKHMER 318 +#define PROP_INDEX_INMONGOLIAN 319 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 320 +#define PROP_INDEX_INLIMBU 321 +#define PROP_INDEX_INTAILE 322 +#define PROP_INDEX_INNEWTAILUE 323 +#define PROP_INDEX_INKHMERSYMBOLS 324 +#define PROP_INDEX_INBUGINESE 325 +#define PROP_INDEX_INTAITHAM 326 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 327 +#define PROP_INDEX_INBALINESE 328 +#define PROP_INDEX_INSUNDANESE 329 +#define PROP_INDEX_INBATAK 330 +#define PROP_INDEX_INLEPCHA 331 +#define PROP_INDEX_INOLCHIKI 332 +#define PROP_INDEX_INCYRILLICEXTENDEDC 333 +#define PROP_INDEX_INGEORGIANEXTENDED 334 +#define PROP_INDEX_INSUNDANESESUPPLEMENT 335 +#define PROP_INDEX_INVEDICEXTENSIONS 336 +#define PROP_INDEX_INPHONETICEXTENSIONS 337 +#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 338 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 339 +#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 340 +#define PROP_INDEX_INGREEKEXTENDED 341 +#define PROP_INDEX_INGENERALPUNCTUATION 342 +#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 343 +#define PROP_INDEX_INCURRENCYSYMBOLS 344 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 345 +#define PROP_INDEX_INLETTERLIKESYMBOLS 346 +#define PROP_INDEX_INNUMBERFORMS 347 +#define PROP_INDEX_INARROWS 348 +#define PROP_INDEX_INMATHEMATICALOPERATORS 349 +#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 350 +#define PROP_INDEX_INCONTROLPICTURES 351 +#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 352 +#define PROP_INDEX_INENCLOSEDALPHANUMERICS 353 +#define PROP_INDEX_INBOXDRAWING 354 +#define PROP_INDEX_INBLOCKELEMENTS 355 +#define PROP_INDEX_INGEOMETRICSHAPES 356 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 357 +#define PROP_INDEX_INDINGBATS 358 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 359 +#define PROP_INDEX_INSUPPLEMENTALARROWSA 360 +#define PROP_INDEX_INBRAILLEPATTERNS 361 +#define PROP_INDEX_INSUPPLEMENTALARROWSB 362 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 363 +#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 364 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 365 +#define PROP_INDEX_INGLAGOLITIC 366 +#define PROP_INDEX_INLATINEXTENDEDC 367 +#define PROP_INDEX_INCOPTIC 368 +#define PROP_INDEX_INGEORGIANSUPPLEMENT 369 +#define PROP_INDEX_INTIFINAGH 370 +#define PROP_INDEX_INETHIOPICEXTENDED 371 +#define PROP_INDEX_INCYRILLICEXTENDEDA 372 +#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 373 +#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 374 +#define PROP_INDEX_INKANGXIRADICALS 375 +#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 376 +#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 377 +#define PROP_INDEX_INHIRAGANA 378 +#define PROP_INDEX_INKATAKANA 379 +#define PROP_INDEX_INBOPOMOFO 380 +#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 381 +#define PROP_INDEX_INKANBUN 382 +#define PROP_INDEX_INBOPOMOFOEXTENDED 383 +#define PROP_INDEX_INCJKSTROKES 384 +#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 385 +#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 386 +#define PROP_INDEX_INCJKCOMPATIBILITY 387 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 388 +#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 389 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 390 +#define PROP_INDEX_INYISYLLABLES 391 +#define PROP_INDEX_INYIRADICALS 392 +#define PROP_INDEX_INLISU 393 +#define PROP_INDEX_INVAI 394 +#define PROP_INDEX_INCYRILLICEXTENDEDB 395 +#define PROP_INDEX_INBAMUM 396 +#define PROP_INDEX_INMODIFIERTONELETTERS 397 +#define PROP_INDEX_INLATINEXTENDEDD 398 +#define PROP_INDEX_INSYLOTINAGRI 399 +#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 400 +#define PROP_INDEX_INPHAGSPA 401 +#define PROP_INDEX_INSAURASHTRA 402 +#define PROP_INDEX_INDEVANAGARIEXTENDED 403 +#define PROP_INDEX_INKAYAHLI 404 +#define PROP_INDEX_INREJANG 405 +#define PROP_INDEX_INHANGULJAMOEXTENDEDA 406 +#define PROP_INDEX_INJAVANESE 407 +#define PROP_INDEX_INMYANMAREXTENDEDB 408 +#define PROP_INDEX_INCHAM 409 +#define PROP_INDEX_INMYANMAREXTENDEDA 410 +#define PROP_INDEX_INTAIVIET 411 +#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 412 +#define PROP_INDEX_INETHIOPICEXTENDEDA 413 +#define PROP_INDEX_INLATINEXTENDEDE 414 +#define PROP_INDEX_INCHEROKEESUPPLEMENT 415 +#define PROP_INDEX_INMEETEIMAYEK 416 +#define PROP_INDEX_INHANGULSYLLABLES 417 +#define PROP_INDEX_INHANGULJAMOEXTENDEDB 418 +#define PROP_INDEX_INHIGHSURROGATES 419 +#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 420 +#define PROP_INDEX_INLOWSURROGATES 421 +#define PROP_INDEX_INPRIVATEUSEAREA 422 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 423 +#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 424 +#define PROP_INDEX_INARABICPRESENTATIONFORMSA 425 +#define PROP_INDEX_INVARIATIONSELECTORS 426 +#define PROP_INDEX_INVERTICALFORMS 427 +#define PROP_INDEX_INCOMBININGHALFMARKS 428 +#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 429 +#define PROP_INDEX_INSMALLFORMVARIANTS 430 +#define PROP_INDEX_INARABICPRESENTATIONFORMSB 431 +#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 432 +#define PROP_INDEX_INSPECIALS 433 +#define PROP_INDEX_INLINEARBSYLLABARY 434 +#define PROP_INDEX_INLINEARBIDEOGRAMS 435 +#define PROP_INDEX_INAEGEANNUMBERS 436 +#define PROP_INDEX_INANCIENTGREEKNUMBERS 437 +#define PROP_INDEX_INANCIENTSYMBOLS 438 +#define PROP_INDEX_INPHAISTOSDISC 439 +#define PROP_INDEX_INLYCIAN 440 +#define PROP_INDEX_INCARIAN 441 +#define PROP_INDEX_INCOPTICEPACTNUMBERS 442 +#define PROP_INDEX_INOLDITALIC 443 +#define PROP_INDEX_INGOTHIC 444 +#define PROP_INDEX_INOLDPERMIC 445 +#define PROP_INDEX_INUGARITIC 446 +#define PROP_INDEX_INOLDPERSIAN 447 +#define PROP_INDEX_INDESERET 448 +#define PROP_INDEX_INSHAVIAN 449 +#define PROP_INDEX_INOSMANYA 450 +#define PROP_INDEX_INOSAGE 451 +#define PROP_INDEX_INELBASAN 452 +#define PROP_INDEX_INCAUCASIANALBANIAN 453 +#define PROP_INDEX_INLINEARA 454 +#define PROP_INDEX_INCYPRIOTSYLLABARY 455 +#define PROP_INDEX_INIMPERIALARAMAIC 456 +#define PROP_INDEX_INPALMYRENE 457 +#define PROP_INDEX_INNABATAEAN 458 +#define PROP_INDEX_INHATRAN 459 +#define PROP_INDEX_INPHOENICIAN 460 +#define PROP_INDEX_INLYDIAN 461 +#define PROP_INDEX_INMEROITICHIEROGLYPHS 462 +#define PROP_INDEX_INMEROITICCURSIVE 463 +#define PROP_INDEX_INKHAROSHTHI 464 +#define PROP_INDEX_INOLDSOUTHARABIAN 465 +#define PROP_INDEX_INOLDNORTHARABIAN 466 +#define PROP_INDEX_INMANICHAEAN 467 +#define PROP_INDEX_INAVESTAN 468 +#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 469 +#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 470 +#define PROP_INDEX_INPSALTERPAHLAVI 471 +#define PROP_INDEX_INOLDTURKIC 472 +#define PROP_INDEX_INOLDHUNGARIAN 473 +#define PROP_INDEX_INHANIFIROHINGYA 474 +#define PROP_INDEX_INRUMINUMERALSYMBOLS 475 +#define PROP_INDEX_INYEZIDI 476 +#define PROP_INDEX_INOLDSOGDIAN 477 +#define PROP_INDEX_INSOGDIAN 478 +#define PROP_INDEX_INCHORASMIAN 479 +#define PROP_INDEX_INELYMAIC 480 +#define PROP_INDEX_INBRAHMI 481 +#define PROP_INDEX_INKAITHI 482 +#define PROP_INDEX_INSORASOMPENG 483 +#define PROP_INDEX_INCHAKMA 484 +#define PROP_INDEX_INMAHAJANI 485 +#define PROP_INDEX_INSHARADA 486 +#define PROP_INDEX_INSINHALAARCHAICNUMBERS 487 +#define PROP_INDEX_INKHOJKI 488 +#define PROP_INDEX_INMULTANI 489 +#define PROP_INDEX_INKHUDAWADI 490 +#define PROP_INDEX_INGRANTHA 491 +#define PROP_INDEX_INNEWA 492 +#define PROP_INDEX_INTIRHUTA 493 +#define PROP_INDEX_INSIDDHAM 494 +#define PROP_INDEX_INMODI 495 +#define PROP_INDEX_INMONGOLIANSUPPLEMENT 496 +#define PROP_INDEX_INTAKRI 497 +#define PROP_INDEX_INAHOM 498 +#define PROP_INDEX_INDOGRA 499 +#define PROP_INDEX_INWARANGCITI 500 +#define PROP_INDEX_INDIVESAKURU 501 +#define PROP_INDEX_INNANDINAGARI 502 +#define PROP_INDEX_INZANABAZARSQUARE 503 +#define PROP_INDEX_INSOYOMBO 504 +#define PROP_INDEX_INPAUCINHAU 505 +#define PROP_INDEX_INBHAIKSUKI 506 +#define PROP_INDEX_INMARCHEN 507 +#define PROP_INDEX_INMASARAMGONDI 508 +#define PROP_INDEX_INGUNJALAGONDI 509 +#define PROP_INDEX_INMAKASAR 510 +#define PROP_INDEX_INLISUSUPPLEMENT 511 +#define PROP_INDEX_INTAMILSUPPLEMENT 512 +#define PROP_INDEX_INCUNEIFORM 513 +#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 514 +#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 515 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 516 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHFORMATCONTROLS 517 +#define PROP_INDEX_INANATOLIANHIEROGLYPHS 518 +#define PROP_INDEX_INBAMUMSUPPLEMENT 519 +#define PROP_INDEX_INMRO 520 +#define PROP_INDEX_INBASSAVAH 521 +#define PROP_INDEX_INPAHAWHHMONG 522 +#define PROP_INDEX_INMEDEFAIDRIN 523 +#define PROP_INDEX_INMIAO 524 +#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 525 +#define PROP_INDEX_INTANGUT 526 +#define PROP_INDEX_INTANGUTCOMPONENTS 527 +#define PROP_INDEX_INKHITANSMALLSCRIPT 528 +#define PROP_INDEX_INTANGUTSUPPLEMENT 529 +#define PROP_INDEX_INKANASUPPLEMENT 530 +#define PROP_INDEX_INKANAEXTENDEDA 531 +#define PROP_INDEX_INSMALLKANAEXTENSION 532 +#define PROP_INDEX_INNUSHU 533 +#define PROP_INDEX_INDUPLOYAN 534 +#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 535 +#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 536 +#define PROP_INDEX_INMUSICALSYMBOLS 537 +#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 538 +#define PROP_INDEX_INMAYANNUMERALS 539 +#define PROP_INDEX_INTAIXUANJINGSYMBOLS 540 +#define PROP_INDEX_INCOUNTINGRODNUMERALS 541 +#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 542 +#define PROP_INDEX_INSUTTONSIGNWRITING 543 +#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 544 +#define PROP_INDEX_INNYIAKENGPUACHUEHMONG 545 +#define PROP_INDEX_INWANCHO 546 +#define PROP_INDEX_INMENDEKIKAKUI 547 +#define PROP_INDEX_INADLAM 548 +#define PROP_INDEX_ININDICSIYAQNUMBERS 549 +#define PROP_INDEX_INOTTOMANSIYAQNUMBERS 550 +#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 551 +#define PROP_INDEX_INMAHJONGTILES 552 +#define PROP_INDEX_INDOMINOTILES 553 +#define PROP_INDEX_INPLAYINGCARDS 554 +#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 555 +#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 556 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 557 +#define PROP_INDEX_INEMOTICONS 558 +#define PROP_INDEX_INORNAMENTALDINGBATS 559 +#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 560 +#define PROP_INDEX_INALCHEMICALSYMBOLS 561 +#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 562 +#define PROP_INDEX_INSUPPLEMENTALARROWSC 563 +#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 564 +#define PROP_INDEX_INCHESSSYMBOLS 565 +#define PROP_INDEX_INSYMBOLSANDPICTOGRAPHSEXTENDEDA 566 +#define PROP_INDEX_INSYMBOLSFORLEGACYCOMPUTING 567 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 568 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 569 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 570 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 571 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 572 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 573 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONG 574 +#define PROP_INDEX_INTAGS 575 +#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 576 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 577 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 578 +#define PROP_INDEX_INNOBLOCK 579 diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c index e299e85..b050ff2 100644 --- a/src/unicode_property_data_posix.c +++ b/src/unicode_property_data_posix.c @@ -33,6 +33,32 @@ /* Generated by make_unicode_property_data.py. */ +/*- + * Copyright (c) 2016-2020 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint @@ -42,7 +68,7 @@ CR_NEWLINE[] = { 1, /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint -CR_Alpha[] = { 679, +CR_Alpha[] = { 695, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -96,7 +122,7 @@ CR_Alpha[] = { 679, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d4, 0x08df, 0x08e3, 0x08e9, 0x08f0, 0x093b, @@ -200,8 +226,7 @@ CR_Alpha[] = { 679, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, @@ -211,7 +236,7 @@ CR_Alpha[] = { 679, 0x0d54, 0x0d57, 0x0d5f, 0x0d63, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -299,6 +324,7 @@ CR_Alpha[] = { 679, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, @@ -386,10 +412,10 @@ CR_Alpha[] = { 679, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -401,8 +427,8 @@ CR_Alpha[] = { 679, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa805, +0xa7c2, 0xa7ca, +0xa7f5, 0xa805, 0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, @@ -433,7 +459,7 @@ CR_Alpha[] = { 679, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -518,19 +544,24 @@ CR_Alpha[] = { 679, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, +0x111ce, 0x111cf, 0x111da, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, @@ -559,7 +590,7 @@ CR_Alpha[] = { 679, 0x11400, 0x11441, 0x11443, 0x11445, 0x11447, 0x1144a, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -575,7 +606,14 @@ CR_Alpha[] = { 679, 0x1171d, 0x1172a, 0x11800, 0x11838, 0x118a0, 0x118df, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119df, @@ -608,6 +646,7 @@ CR_Alpha[] = { 679, 0x11d93, 0x11d96, 0x11d98, 0x11d98, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -626,8 +665,10 @@ CR_Alpha[] = { 679, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -716,12 +757,13 @@ CR_Alpha[] = { 679, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ @@ -746,7 +788,7 @@ CR_Cntrl[] = { 2, /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint -CR_Digit[] = { 59, +CR_Digit[] = { 61, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, @@ -797,6 +839,7 @@ CR_Digit[] = { 59, 0x116c0, 0x116c9, 0x11730, 0x11739, 0x118e0, 0x118e9, +0x11950, 0x11959, 0x11c50, 0x11c59, 0x11d50, 0x11d59, 0x11da0, 0x11da9, @@ -806,11 +849,12 @@ CR_Digit[] = { 59, 0x1e140, 0x1e149, 0x1e2f0, 0x1e2f9, 0x1e950, 0x1e959, +0x1fbf0, 0x1fbf9, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint -CR_Graph[] = { 671, +CR_Graph[] = { 682, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, @@ -835,7 +879,7 @@ CR_Graph[] = { 671, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -890,7 +934,7 @@ CR_Graph[] = { 671, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -934,15 +978,14 @@ CR_Graph[] = { 671, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4f, 0x0d54, 0x0d63, 0x0d66, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -1029,7 +1072,7 @@ CR_Graph[] = { 671, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, @@ -1070,7 +1113,7 @@ CR_Graph[] = { 671, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -1087,7 +1130,7 @@ CR_Graph[] = { 671, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4f, +0x2de0, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -1097,18 +1140,16 @@ CR_Graph[] = { 671, 0x3099, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa82b, +0xa7c2, 0xa7ca, +0xa7f5, 0xa82c, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, @@ -1128,7 +1169,7 @@ CR_Graph[] = { 671, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -1173,7 +1214,7 @@ CR_Graph[] = { 671, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, @@ -1233,8 +1274,12 @@ CR_Graph[] = { 671, 0x10cfa, 0x10d27, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, @@ -1243,10 +1288,9 @@ CR_Graph[] = { 671, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11176, -0x11180, 0x111cd, -0x111d0, 0x111df, +0x11180, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, @@ -1272,9 +1316,8 @@ CR_Graph[] = { 671, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +0x11400, 0x1145b, +0x1145d, 0x11461, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -1289,7 +1332,14 @@ CR_Graph[] = { 671, 0x11730, 0x1173f, 0x11800, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e4, @@ -1317,6 +1367,7 @@ CR_Graph[] = { 671, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -1340,9 +1391,11 @@ CR_Graph[] = { 671, 0x16f00, 0x16f4a, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe3, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -1440,17 +1493,15 @@ CR_Graph[] = { 671, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -1459,24 +1510,28 @@ CR_Graph[] = { 671, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, @@ -1486,7 +1541,7 @@ CR_Graph[] = { 671, /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint -CR_Lower[] = { 649, +CR_Lower[] = { 652, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, @@ -2095,9 +2150,12 @@ CR_Lower[] = { 649, 0xa7bd, 0xa7bd, 0xa7bf, 0xa7bf, 0xa7c3, 0xa7c3, +0xa7c8, 0xa7c8, +0xa7ca, 0xa7ca, +0xa7f6, 0xa7f6, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab68, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -2140,7 +2198,7 @@ CR_Lower[] = { 649, /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint -CR_Print[] = { 668, +CR_Print[] = { 679, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, @@ -2165,7 +2223,7 @@ CR_Print[] = { 668, 0x085e, 0x085e, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -2220,7 +2278,7 @@ CR_Print[] = { 668, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b77, @@ -2264,15 +2322,14 @@ CR_Print[] = { 668, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4f, 0x0d54, 0x0d63, 0x0d66, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -2358,7 +2415,7 @@ CR_Print[] = { 668, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, @@ -2397,7 +2454,7 @@ CR_Print[] = { 668, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2c2e, +0x2b97, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -2414,7 +2471,7 @@ CR_Print[] = { 668, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4f, +0x2de0, 0x2e52, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -2424,18 +2481,16 @@ CR_Print[] = { 668, 0x3099, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, +0x3190, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x4db5, -0x4dc0, 0x9fef, +0x3220, 0x9ffc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa82b, +0xa7c2, 0xa7ca, +0xa7f5, 0xa82c, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, @@ -2455,7 +2510,7 @@ CR_Print[] = { 668, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab67, +0xab30, 0xab6b, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -2500,7 +2555,7 @@ CR_Print[] = { 668, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, -0x10190, 0x1019b, +0x10190, 0x1019c, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, @@ -2560,8 +2615,12 @@ CR_Print[] = { 668, 0x10cfa, 0x10d27, 0x10d30, 0x10d39, 0x10e60, 0x10e7e, +0x10e80, 0x10ea9, +0x10eab, 0x10ead, +0x10eb0, 0x10eb1, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fb0, 0x10fcb, 0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, @@ -2570,10 +2629,9 @@ CR_Print[] = { 668, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, -0x11136, 0x11146, +0x11136, 0x11147, 0x11150, 0x11176, -0x11180, 0x111cd, -0x111d0, 0x111df, +0x11180, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, @@ -2599,9 +2657,8 @@ CR_Print[] = { 668, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, -0x11400, 0x11459, -0x1145b, 0x1145b, -0x1145d, 0x1145f, +0x11400, 0x1145b, +0x1145d, 0x11461, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -2616,7 +2673,14 @@ CR_Print[] = { 668, 0x11730, 0x1173f, 0x11800, 0x1183b, 0x118a0, 0x118f2, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11946, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e4, @@ -2644,6 +2708,7 @@ CR_Print[] = { 668, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, +0x11fb0, 0x11fb0, 0x11fc0, 0x11ff1, 0x11fff, 0x12399, 0x12400, 0x1246e, @@ -2667,9 +2732,11 @@ CR_Print[] = { 668, 0x16f00, 0x16f4a, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe3, +0x16fe0, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -2767,17 +2834,15 @@ CR_Print[] = { 668, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f16c, -0x1f170, 0x1f1ac, +0x1f100, 0x1f1ad, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d5, +0x1f300, 0x1f6d7, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6fa, +0x1f6f0, 0x1f6fc, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, 0x1f7e0, 0x1f7eb, @@ -2786,24 +2851,28 @@ CR_Print[] = { 668, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, -0x1f900, 0x1f90b, -0x1f90d, 0x1f971, -0x1f973, 0x1f976, -0x1f97a, 0x1f9a2, -0x1f9a5, 0x1f9aa, -0x1f9ae, 0x1f9ca, +0x1f8b0, 0x1f8b1, +0x1f900, 0x1f978, +0x1f97a, 0x1f9cb, 0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, -0x1fa70, 0x1fa73, +0x1fa70, 0x1fa74, 0x1fa78, 0x1fa7a, -0x1fa80, 0x1fa82, -0x1fa90, 0x1fa95, -0x20000, 0x2a6d6, +0x1fa80, 0x1fa86, +0x1fa90, 0x1faa8, +0x1fab0, 0x1fab6, +0x1fac0, 0x1fac2, +0x1fad0, 0x1fad6, +0x1fb00, 0x1fb92, +0x1fb94, 0x1fbca, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, @@ -2813,7 +2882,7 @@ CR_Print[] = { 668, /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint -CR_Punct[] = { 182, +CR_Punct[] = { 185, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, @@ -2904,6 +2973,7 @@ CR_Punct[] = { 182, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e4f, +0x2e52, 0x2e52, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, @@ -2957,6 +3027,7 @@ CR_Punct[] = { 182, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, +0x10ead, 0x10ead, 0x10f55, 0x10f59, 0x11047, 0x1104d, 0x110bb, 0x110bc, @@ -2970,7 +3041,7 @@ CR_Punct[] = { 182, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x1144b, 0x1144f, -0x1145b, 0x1145b, +0x1145a, 0x1145b, 0x1145d, 0x1145d, 0x114c6, 0x114c6, 0x115c1, 0x115d7, @@ -2978,6 +3049,7 @@ CR_Punct[] = { 182, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x11944, 0x11946, 0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, @@ -3015,7 +3087,7 @@ CR_Space[] = { 10, /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint -CR_Upper[] = { 641, +CR_Upper[] = { 643, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -3615,7 +3687,9 @@ CR_Upper[] = { 641, 0xa7bc, 0xa7bc, 0xa7be, 0xa7be, 0xa7c2, 0xa7c2, -0xa7c4, 0xa7c6, +0xa7c4, 0xa7c7, +0xa7c9, 0xa7c9, +0xa7f5, 0xa7f5, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -3669,7 +3743,7 @@ CR_XDigit[] = { 3, /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint -CR_Word[] = { 716, +CR_Word[] = { 732, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -3721,7 +3795,7 @@ CR_Word[] = { 716, 0x0840, 0x085b, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d3, 0x08e1, 0x08e3, 0x0963, 0x0966, 0x096f, @@ -3781,7 +3855,7 @@ CR_Word[] = { 716, 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, -0x0b56, 0x0b57, +0x0b55, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 0x0b66, 0x0b6f, @@ -3827,8 +3901,7 @@ CR_Word[] = { 716, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d44, 0x0d46, 0x0d48, @@ -3837,7 +3910,7 @@ CR_Word[] = { 716, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -3936,7 +4009,7 @@ CR_Word[] = { 716, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, -0x1ab0, 0x1abe, +0x1ab0, 0x1ac0, 0x1b00, 0x1b4b, 0x1b50, 0x1b59, 0x1b6b, 0x1b73, @@ -4021,10 +4094,10 @@ CR_Word[] = { 716, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -4035,8 +4108,9 @@ CR_Word[] = { 716, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa827, +0xa7c2, 0xa7ca, +0xa7f5, 0xa827, +0xa82c, 0xa82c, 0xa840, 0xa873, 0xa880, 0xa8c5, 0xa8d0, 0xa8d9, @@ -4062,7 +4136,7 @@ CR_Word[] = { 716, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -4161,9 +4235,13 @@ CR_Word[] = { 716, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, @@ -4172,12 +4250,12 @@ CR_Word[] = { 716, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111c9, 0x111cc, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11237, @@ -4206,7 +4284,7 @@ CR_Word[] = { 716, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145f, +0x1145e, 0x11461, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -4223,7 +4301,14 @@ CR_Word[] = { 716, 0x11730, 0x11739, 0x11800, 0x1183a, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x11943, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119e1, @@ -4254,6 +4339,7 @@ CR_Word[] = { 716, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -4274,9 +4360,11 @@ CR_Word[] = { 716, 0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x16fe3, 0x16fe3, +0x16fe3, 0x16fe4, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -4379,18 +4467,20 @@ CR_Word[] = { 716, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint -CR_Alnum[] = { 715, +CR_Alnum[] = { 732, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, @@ -4444,7 +4534,7 @@ CR_Alnum[] = { 715, 0x0840, 0x0858, 0x0860, 0x086a, 0x08a0, 0x08b4, -0x08b6, 0x08bd, +0x08b6, 0x08c7, 0x08d4, 0x08df, 0x08e3, 0x08e9, 0x08f0, 0x093b, @@ -4554,8 +4644,7 @@ CR_Alnum[] = { 715, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, -0x0d00, 0x0d03, -0x0d05, 0x0d0c, +0x0d00, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, @@ -4566,7 +4655,7 @@ CR_Alnum[] = { 715, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, -0x0d82, 0x0d83, +0x0d81, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, @@ -4662,6 +4751,7 @@ CR_Alnum[] = { 715, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, +0x1abf, 0x1ac0, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, @@ -4749,10 +4839,10 @@ CR_Alnum[] = { 715, 0x30fc, 0x30ff, 0x3105, 0x312f, 0x3131, 0x318e, -0x31a0, 0x31ba, +0x31a0, 0x31bf, 0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fef, +0x3400, 0x4dbf, +0x4e00, 0x9ffc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, @@ -4763,8 +4853,8 @@ CR_Alnum[] = { 715, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7bf, -0xa7c2, 0xa7c6, -0xa7f7, 0xa805, +0xa7c2, 0xa7ca, +0xa7f5, 0xa805, 0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, @@ -4795,7 +4885,7 @@ CR_Alnum[] = { 715, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab67, +0xab5c, 0xab69, 0xab70, 0xabea, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -4884,9 +4974,13 @@ CR_Alnum[] = { 715, 0x10cc0, 0x10cf2, 0x10d00, 0x10d27, 0x10d30, 0x10d39, +0x10e80, 0x10ea9, +0x10eab, 0x10eac, +0x10eb0, 0x10eb1, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fb0, 0x10fc4, 0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11066, 0x1106f, @@ -4895,12 +4989,12 @@ CR_Alnum[] = { 715, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, -0x11144, 0x11146, +0x11144, 0x11147, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, -0x111d0, 0x111da, +0x111ce, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, @@ -4930,7 +5024,7 @@ CR_Alnum[] = { 715, 0x11443, 0x11445, 0x11447, 0x1144a, 0x11450, 0x11459, -0x1145f, 0x1145f, +0x1145f, 0x11461, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -4950,7 +5044,15 @@ CR_Alnum[] = { 715, 0x11730, 0x11739, 0x11800, 0x11838, 0x118a0, 0x118e9, -0x118ff, 0x118ff, +0x118ff, 0x11906, +0x11909, 0x11909, +0x1190c, 0x11913, +0x11915, 0x11916, +0x11918, 0x11935, +0x11937, 0x11938, +0x1193b, 0x1193c, +0x1193f, 0x11942, +0x11950, 0x11959, 0x119a0, 0x119a7, 0x119aa, 0x119d7, 0x119da, 0x119df, @@ -4986,6 +5088,7 @@ CR_Alnum[] = { 715, 0x11d98, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef6, +0x11fb0, 0x11fb0, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, @@ -5006,8 +5109,10 @@ CR_Alnum[] = { 715, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, 0x16fe3, 0x16fe3, +0x16ff0, 0x16ff1, 0x17000, 0x187f7, -0x18800, 0x18af2, +0x18800, 0x18cd5, +0x18d00, 0x18d08, 0x1b000, 0x1b11e, 0x1b150, 0x1b152, 0x1b164, 0x1b167, @@ -5100,12 +5205,14 @@ CR_Alnum[] = { 715, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, -0x20000, 0x2a6d6, +0x1fbf0, 0x1fbf9, +0x20000, 0x2a6dd, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2ceb0, 0x2ebe0, 0x2f800, 0x2fa1d, +0x30000, 0x3134a, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ diff --git a/src/unicode_unfold_key.c b/src/unicode_unfold_key.c index 51a037b..bc89081 100644 --- a/src/unicode_unfold_key.c +++ b/src/unicode_unfold_key.c @@ -9,7 +9,7 @@ /* This gperf source file was generated by make_unicode_fold_data.py */ /*- - * Copyright (c) 2017-2019 K.Kosako + * Copyright (c) 2017-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,15 +33,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include <string.h> -#include "regenc.h" +#include "regint.h" -#define TOTAL_KEYWORDS 1487 +#define TOTAL_KEYWORDS 1490 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 10 -#define MAX_HASH_VALUE 1958 -/* maximum key range = 1949, duplicates = 0 */ +#define MAX_HASH_VALUE 1946 +/* maximum key range = 1937, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -56,36 +55,36 @@ hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { - 9, 5, 2, 111, 176, 1, 110, 1959, 1959, 1959, - 1959, 1959, 1959, 13, 1959, 1959, 1959, 77, 1959, 1959, - 63, 1959, 1959, 1959, 1959, 86, 1959, 1959, 1959, 7, - 1959, 0, 3, 1959, 191, 624, 1536, 132, 1519, 613, - 1513, 607, 1602, 586, 1505, 4, 1497, 570, 1492, 554, - 1482, 907, 1601, 898, 1469, 595, 1468, 405, 1463, 546, - 1458, 538, 1453, 474, 1444, 890, 1596, 877, 1419, 725, - 1590, 698, 1588, 635, 1160, 682, 1021, 338, 1122, 671, - 812, 559, 819, 1580, 756, 1082, 744, 1438, 637, 1428, - 266, 1429, 1502, 1285, 1440, 1578, 467, 1419, 873, 490, - 1380, 779, 731, 1057, 1261, 1034, 1567, 762, 1389, 495, - 1510, 156, 648, 805, 1537, 862, 1523, 853, 1469, 845, - 1252, 796, 342, 1297, 801, 1287, 542, 1408, 477, 1400, - 237, 1109, 20, 1099, 548, 1067, 1, 1280, 326, 1043, - 767, 1030, 756, 938, 598, 254, 26, 1275, 165, 1270, - 149, 1575, 15, 1368, 133, 1202, 625, 403, 408, 373, - 296, 1397, 283, 519, 1381, 503, 1372, 18, 6, 415, - 1253, 769, 8, 484, 1358, 658, 1565, 464, 427, 244, - 1241, 360, 1233, 390, 1350, 219, 377, 206, 1223, 328, - 1211, 145, 1198, 454, 135, 73, 1020, 103, 1012, 63, - 995, 53, 748, 196, 573, 116, 684, 93, 983, 83, - 1004, 182, 735, 31, 713, 319, 977, 306, 706, 44, - 836, 293, 1187, 280, 1135, 268, 671, 976, 1350, 447, - 1182, 437, 964, 946, 351, 932, 1349, 923, 1090, 1194, - 1175, 827, 1299, 1165, 1410, 1155, 1522, 1557, 313, 1146, - 424, 1136, 233, 1130, 161, 1316, 93, 167, 134, 618, - 1959, 1118, 128, 1342, 1959, 1335, 124, 1331, 75, 1327, - 191, 1308, 45, 1545, 1959, 1534, 1, 230, 9, 643, - 5, 1564, 40, 1553, 65, 531, 55, 993, 25, 1476, - 2 + 9, 5, 2, 124, 176, 1, 123, 1947, 1947, 1947, + 1947, 1947, 1947, 13, 1947, 1947, 1947, 77, 1947, 1947, + 30, 1947, 1947, 1947, 1947, 86, 1947, 1947, 1947, 7, + 1947, 0, 3, 1947, 53, 616, 1530, 132, 1528, 610, + 1520, 604, 1598, 578, 1519, 4, 1504, 565, 1499, 556, + 1494, 916, 1597, 907, 1488, 595, 1483, 587, 1459, 548, + 1478, 540, 1473, 440, 314, 899, 1592, 890, 1316, 681, + 1587, 656, 1578, 622, 1576, 636, 1566, 232, 1465, 570, + 257, 528, 1341, 866, 674, 1130, 561, 1455, 504, 1448, + 393, 1441, 479, 954, 1462, 1562, 1432, 1437, 463, 1249, + 1391, 1305, 1389, 1055, 1224, 1046, 1434, 879, 733, 521, + 1192, 507, 909, 840, 1201, 870, 1148, 847, 856, 833, + 695, 826, 300, 1335, 491, 1301, 334, 1427, 260, 1420, + 95, 1123, 204, 1113, 226, 1068, 201, 1036, 25, 1104, + 1605, 1091, 1305, 1081, 1217, 748, 214, 1296, 223, 1286, + 184, 1544, 15, 1291, 158, 1539, 1598, 819, 775, 546, + 653, 1417, 300, 497, 1407, 484, 1399, 18, 6, 427, + 1274, 806, 8, 471, 937, 705, 759, 459, 1343, 244, + 1266, 360, 1243, 414, 1396, 219, 1041, 206, 1256, 335, + 1235, 155, 1225, 449, 1216, 73, 1026, 103, 1018, 63, + 1008, 53, 785, 196, 782, 116, 766, 93, 998, 83, + 989, 182, 735, 31, 718, 326, 981, 306, 689, 44, + 134, 293, 1207, 280, 1184, 268, 1180, 980, 1321, 401, + 517, 387, 970, 947, 319, 933, 1206, 924, 1170, 1196, + 1163, 969, 693, 1185, 702, 376, 141, 347, 113, 1158, + 146, 1151, 166, 1145, 671, 173, 142, 1138, 134, 409, + 1947, 665, 111, 1387, 1947, 1383, 85, 1378, 65, 1374, + 39, 1367, 54, 756, 1947, 729, 170, 1362, 9, 1354, + 195, 1535, 467, 240, 164, 1330, 0, 151, 19, 632, + 11 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } @@ -98,10 +97,10 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1040a, 3441, 1}, + {0x1040a, 3450, 1}, {0xffffffff, -1, 0}, - {0x01f1, 483, 1}, + {0x1ffb, 2420, 1}, {0x1e0a, 1882, 1}, @@ -125,11 +124,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab85, 1663, 1}, - {0x10c85, 3654, 1}, + {0x10c85, 3663, 1}, {0xab89, 1675, 1}, - {0x10c89, 3666, 1}, + {0x10c89, 3675, 1}, {0x1e84, 2066, 1}, @@ -149,13 +148,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab84, 1660, 1}, - {0x10c84, 3651, 1}, + {0x10c84, 3660, 1}, - {0x104b2, 3537, 1}, + {0x104b2, 3546, 1}, - {0x1f6f, 2378, 1}, + {0x2c67, 2726, 1}, - {0x2c6f, 604, 1}, + {0x13fb, 1849, 1}, {0x1eb2, 2120, 1}, @@ -175,13 +174,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabb2, 1798, 1}, - {0x10cb2, 3789, 1}, + {0x10cb2, 3798, 1}, - {0x104b8, 3555, 1}, + {0x104b8, 3564, 1}, - {0x01f7, 414, 1}, + {0x1feb, 2414, 1}, - {0x1ff7, 67, 3}, + {0x2ceb, 2891, 1}, {0x1eb8, 2129, 1}, @@ -193,7 +192,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2cb8, 2825, 1}, - {0x2ced, 2894, 1}, + {0x13fd, 1855, 1}, {0xa7b8, 3315, 1}, @@ -211,7 +210,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2ca6, 2798, 1}, - {0x1ffb, 2420, 1}, + {0x2ced, 2894, 1}, {0xa7a6, 3303, 1}, @@ -219,7 +218,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xaba6, 1762, 1}, - {0x10ca6, 3753, 1}, + {0x10ca6, 3762, 1}, {0x1ea4, 2099, 1}, @@ -231,7 +230,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2ca4, 2795, 1}, - {0x1ff9, 2408, 1}, + {0x1fe9, 2438, 1}, {0xa7a4, 3300, 1}, @@ -239,7 +238,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xaba4, 1756, 1}, - {0x10ca4, 3747, 1}, + {0x10ca4, 3756, 1}, {0x1ea0, 2093, 1}, @@ -251,7 +250,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2ca0, 2789, 1}, - {0x1fe9, 2438, 1}, + {0x2167, 2468, 1}, {0xa7a0, 3294, 1}, @@ -259,7 +258,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xaba0, 1744, 1}, - {0x10ca0, 3735, 1}, + {0x10ca0, 3744, 1}, {0x1eae, 2114, 1}, @@ -271,7 +270,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2cae, 2810, 1}, - {0x13fd, 1855, 1}, + {0x1fe7, 47, 3}, {0xa7ae, 655, 1}, @@ -279,7 +278,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabae, 1786, 1}, - {0x10cae, 3777, 1}, + {0x10cae, 3786, 1}, {0x1eac, 2111, 1}, @@ -291,7 +290,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2cac, 2807, 1}, - {0x00dd, 162, 1}, + {0x1f5f, 2354, 1}, {0xa7ac, 637, 1}, @@ -299,7 +298,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabac, 1780, 1}, - {0x10cac, 3771, 1}, + {0x10cac, 3780, 1}, {0x1ea2, 2096, 1}, @@ -319,19 +318,19 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xaba2, 1750, 1}, - {0x10ca2, 3741, 1}, + {0x10ca2, 3750, 1}, - {0x118b2, 3846, 1}, + {0x118b2, 3855, 1}, - {0x050a, 1291, 1}, + {0x1fe3, 41, 3}, - {0x020a, 517, 1}, + {0x01d5, 441, 1}, {0x1eaa, 2108, 1}, {0x04aa, 1147, 1}, - {0x13fb, 1849, 1}, + {0x00d5, 141, 1}, {0x1faa, 219, 2}, @@ -345,19 +344,19 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabaa, 1774, 1}, - {0x10caa, 3765, 1}, + {0x10caa, 3774, 1}, - {0x118b8, 3864, 1}, + {0x118b8, 3873, 1}, - {0x1fe7, 47, 3}, + {0x050a, 1291, 1}, - {0x13f9, 1843, 1}, + {0x020a, 517, 1}, - {0x10402, 3417, 1}, + {0x10402, 3426, 1}, {0x10a6, 2918, 1}, - {0x1fe3, 41, 3}, + {0x104b9, 3567, 1}, {0x1e02, 1870, 1}, @@ -365,99 +364,99 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0102, 174, 1}, - {0x118a6, 3810, 1}, + {0x118a6, 3819, 1}, {0x2c02, 2582, 1}, - {0x019f, 673, 1}, + {0x1fb9, 2426, 1}, - {0x1f9f, 204, 2}, + {0x104d3, 3645, 1}, {0x00df, 24, 2}, {0x10a4, 2912, 1}, - {0xab77, 1621, 1}, + {0x1cb9, 1585, 1}, - {0x1c9f, 1507, 1}, + {0xabb9, 1819, 1}, - {0xab9f, 1741, 1}, + {0x01d3, 438, 1}, - {0x10c9f, 3732, 1}, + {0x1fd3, 25, 3}, - {0x118a4, 3804, 1}, + {0x118a4, 3813, 1}, - {0x049c, 1126, 1}, + {0x00d3, 135, 1}, - {0x019c, 664, 1}, + {0x00dd, 162, 1}, - {0x1f9c, 189, 2}, + {0x01d7, 444, 1}, - {0x2c9c, 2783, 1}, + {0x1fd7, 31, 3}, {0x10a0, 2900, 1}, - {0xa79c, 3288, 1}, + {0x1efc, 2231, 1}, - {0x1c9c, 1498, 1}, + {0x04fc, 1270, 1}, - {0xab9c, 1732, 1}, + {0x01fc, 496, 1}, - {0x10c9c, 3723, 1}, + {0x1ffc, 96, 2}, - {0x118a0, 3792, 1}, + {0x118a0, 3801, 1}, - {0x1e4c, 1981, 1}, + {0x049c, 1126, 1}, - {0xab73, 1609, 1}, + {0x019c, 664, 1}, - {0x014c, 279, 1}, + {0x1f9c, 189, 2}, - {0x1f4c, 2339, 1}, + {0x2c9c, 2783, 1}, {0x10ae, 2942, 1}, - {0x004c, 31, 1}, + {0xa79c, 3288, 1}, - {0xa74c, 3192, 1}, + {0x1c9c, 1498, 1}, - {0x01db, 450, 1}, + {0xab9c, 1732, 1}, - {0x1fdb, 2402, 1}, + {0x10c9c, 3732, 1}, - {0x118ae, 3834, 1}, + {0x118ae, 3843, 1}, - {0x00db, 156, 1}, + {0xab77, 1621, 1}, - {0x1ede, 2186, 1}, + {0x1ff9, 2408, 1}, - {0x04de, 1225, 1}, + {0x01d9, 447, 1}, - {0x01de, 456, 1}, + {0x1fd9, 2432, 1}, {0x10ac, 2936, 1}, - {0x2cde, 2882, 1}, + {0x00d9, 150, 1}, - {0x00de, 165, 1}, + {0x01f1, 483, 1}, - {0xab71, 1603, 1}, + {0x1edc, 2183, 1}, - {0xa64c, 3039, 1}, + {0x04dc, 1222, 1}, - {0x118ac, 3828, 1}, + {0x118ac, 3837, 1}, {0x24b8, 2504, 1}, - {0x03f1, 802, 1}, + {0x2cdc, 2879, 1}, - {0x03ff, 730, 1}, + {0x00dc, 159, 1}, - {0x104b0, 3531, 1}, + {0x104b0, 3540, 1}, {0x10a2, 2906, 1}, - {0x03f5, 758, 1}, + {0x13fc, 1852, 1}, {0x1eb0, 2117, 1}, @@ -465,10 +464,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0389, 739, 1}, - {0x118a2, 3798, 1}, + {0x118a2, 3807, 1}, {0x2cb0, 2813, 1}, - {0xffffffff, -1, 0}, + + {0x03ff, 730, 1}, {0xa7b0, 712, 1}, @@ -476,27 +476,27 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabb0, 1792, 1}, - {0x10cb0, 3783, 1}, + {0x10cb0, 3792, 1}, - {0x2165, 2462, 1}, + {0xab73, 1609, 1}, {0x10aa, 2930, 1}, - {0x1feb, 2414, 1}, + {0x13f9, 1843, 1}, - {0x2ceb, 2891, 1}, + {0x03fd, 724, 1}, {0x1ea8, 2105, 1}, {0x04a8, 1144, 1}, - {0x118aa, 3822, 1}, + {0x118aa, 3831, 1}, {0x1fa8, 209, 2}, {0x2ca8, 2801, 1}, - {0x03fd, 724, 1}, + {0xa7f5, 3336, 1}, {0xa7a8, 3306, 1}, @@ -504,7 +504,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xaba8, 1768, 1}, - {0x10ca8, 3759, 1}, + {0x10ca8, 3768, 1}, {0x1e98, 38, 2}, @@ -516,7 +516,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c98, 2777, 1}, - {0x2161, 2450, 1}, + {0x10b9, 2975, 1}, {0xa798, 3282, 1}, @@ -524,12 +524,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab98, 1720, 1}, - {0x10c98, 3711, 1}, + {0x10c98, 3720, 1}, - {0x03f7, 890, 1}, + {0x118b9, 3876, 1}, - {0x216f, 2492, 1}, - {0xffffffff, -1, 0}, + {0x1f6f, 2378, 1}, + + {0x2c6f, 604, 1}, {0x1e96, 16, 2}, @@ -549,37 +550,37 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab96, 1714, 1}, - {0x10c96, 3705, 1}, + {0x10c96, 3714, 1}, {0x03a6, 816, 1}, - {0x1ef2, 2216, 1}, + {0x2c63, 1861, 1}, - {0x04f2, 1255, 1}, + {0xab71, 1603, 1}, - {0x01f2, 483, 1}, + {0x1e2a, 1930, 1}, - {0x1ff2, 257, 2}, + {0x042a, 980, 1}, - {0x2cf2, 2897, 1}, + {0x012a, 234, 1}, - {0x01d9, 447, 1}, + {0x1f2a, 2285, 1}, - {0x1fd9, 2432, 1}, + {0x2c2a, 2702, 1}, {0xa696, 3123, 1}, - {0x00d9, 150, 1}, + {0xa72a, 3144, 1}, {0x03a4, 810, 1}, - {0x1f5f, 2354, 1}, + {0x1ef8, 2225, 1}, - {0x03f9, 884, 1}, + {0x04f8, 1264, 1}, - {0x0502, 1279, 1}, + {0x01f8, 490, 1}, - {0x0202, 505, 1}, + {0x1ff8, 2405, 1}, {0x1e90, 2084, 1}, @@ -599,38 +600,41 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab90, 1696, 1}, - {0x10c90, 3687, 1}, + {0x10c90, 3696, 1}, - {0x1e6e, 2033, 1}, + {0x2165, 2462, 1}, - {0x046e, 1069, 1}, + {0x0502, 1279, 1}, - {0x016e, 330, 1}, + {0x0202, 505, 1}, - {0x1f6e, 2375, 1}, + {0x2161, 2450, 1}, - {0x2c6e, 667, 1}, + {0x042d, 990, 1}, {0x10b0, 2948, 1}, - {0xa76e, 3243, 1}, - {0xffffffff, -1, 0}, + {0x1f2d, 2294, 1}, + + {0x2c2d, 2711, 1}, {0xa690, 3114, 1}, - {0xffffffff, -1, 0}, - {0x118b0, 3840, 1}, + {0x1f5d, 2351, 1}, + + {0x118b0, 3849, 1}, - {0x104be, 3573, 1}, + {0x104be, 3582, 1}, - {0x054c, 1429, 1}, + {0x24b9, 2507, 1}, - {0x024c, 598, 1}, + {0x216f, 2492, 1}, {0x1ebe, 2138, 1}, {0x04be, 1177, 1}, - {0xffffffff, -1, 0}, + + {0x13f8, 1840, 1}, {0x1fbe, 773, 1}, @@ -644,10 +648,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabbe, 1834, 1}, - {0x104bc, 3567, 1}, + {0x104bc, 3576, 1}, - {0x118a8, 3816, 1}, - {0xffffffff, -1, 0}, + {0x118a8, 3825, 1}, + + {0x2163, 2456, 1}, {0x1ebc, 2135, 1}, @@ -659,18 +664,17 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2cbc, 2831, 1}, - {0x017f, 52, 1}, + {0x212a, 27, 1}, {0xa7bc, 3321, 1}, - - {0x2c7f, 583, 1}, + {0xffffffff, -1, 0}, {0xabbc, 1828, 1}, - {0xffffffff, -1, 0}, - {0x104ba, 3561, 1}, + {0x03d5, 816, 1}, - {0xab7f, 1645, 1}, + {0x104ba, 3570, 1}, + {0xffffffff, -1, 0}, {0x03aa, 830, 1}, @@ -683,7 +687,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2cba, 2828, 1}, - {0x017d, 351, 1}, + {0xfb02, 12, 2}, {0xa7ba, 3318, 1}, @@ -691,24 +695,25 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabba, 1822, 1}, - {0xa77d, 1858, 1}, + {0x017f, 52, 1}, - {0x104b6, 3549, 1}, + {0x104b6, 3558, 1}, - {0xab7d, 1639, 1}, - {0xffffffff, -1, 0}, + {0x2c7f, 583, 1}, + + {0x0057, 65, 1}, {0x1eb6, 2126, 1}, {0x04b6, 1165, 1}, - {0x16e4c, 3924, 1}, + {0xab7f, 1645, 1}, {0x1fb6, 58, 2}, {0x2cb6, 2822, 1}, - {0x039f, 795, 1}, + {0x1041d, 3507, 1}, {0xa7b6, 3312, 1}, @@ -716,23 +721,38 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xabb6, 1810, 1}, - {0x01d5, 441, 1}, + {0x041d, 937, 1}, - {0x104b4, 3543, 1}, - {0xffffffff, -1, 0}, + {0x104c7, 3609, 1}, - {0x00d5, 141, 1}, + {0x1f1d, 2276, 1}, + + {0x2c1d, 2663, 1}, + + {0x1e90a, 4023, 1}, + + {0x04c7, 1189, 1}, + + {0x01c7, 421, 1}, + + {0x1fc7, 15, 3}, + + {0x104b4, 3552, 1}, + + {0x00c7, 99, 1}, + + {0xa7c7, 3330, 1}, {0x1eb4, 2123, 1}, {0x04b4, 1162, 1}, - - {0x039c, 785, 1}, + {0xffffffff, -1, 0}, {0x1fb4, 50, 2}, {0x2cb4, 2819, 1}, - {0xffffffff, -1, 0}, + + {0x039c, 785, 1}, {0xa7b4, 3309, 1}, @@ -744,12 +764,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x049a, 1123, 1}, - {0x2c67, 2726, 1}, + {0x1f5b, 2348, 1}, {0x1f9a, 179, 2}, {0x2c9a, 2780, 1}, - {0xffffffff, -1, 0}, + + {0x03f9, 884, 1}, {0xa79a, 3285, 1}, @@ -757,61 +778,46 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab9a, 1726, 1}, - {0x10c9a, 3717, 1}, + {0x10c9a, 3726, 1}, - {0x1e2a, 1930, 1}, + {0x10be, 2990, 1}, - {0x042a, 980, 1}, + {0x03f1, 802, 1}, - {0x012a, 234, 1}, + {0x1ed4, 2171, 1}, - {0x1f2a, 2285, 1}, + {0x04d4, 1210, 1}, - {0x2c2a, 2702, 1}, + {0x03dc, 854, 1}, - {0x03de, 857, 1}, + {0x118be, 3891, 1}, - {0xa72a, 3144, 1}, + {0x2cd4, 2867, 1}, - {0x10be, 2990, 1}, + {0x00d4, 138, 1}, {0xa69a, 3129, 1}, - - {0x0057, 65, 1}, - - {0x104c7, 3600, 1}, {0xffffffff, -1, 0}, - {0x118be, 3882, 1}, - - {0x1e90a, 4014, 1}, - - {0x04c7, 1189, 1}, - - {0x01c7, 421, 1}, - - {0x1fc7, 15, 3}, - {0xffffffff, -1, 0}, + {0x052a, 1339, 1}, - {0x00c7, 99, 1}, + {0x022a, 562, 1}, {0x10bc, 2984, 1}, {0x03b0, 41, 3}, - - {0xff37, 3399, 1}, + {0xffffffff, -1, 0}, {0x1e92, 2087, 1}, {0x0492, 1111, 1}, - {0x118bc, 3876, 1}, + {0x118bc, 3885, 1}, {0x1f92, 179, 2}, {0x2c92, 2768, 1}, - - {0xfb02, 12, 2}, + {0xffffffff, -1, 0}, {0xa792, 3273, 1}, @@ -819,181 +825,163 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab92, 1702, 1}, - {0x10c92, 3693, 1}, + {0x10c92, 3702, 1}, {0x10ba, 2978, 1}, - {0xffffffff, -1, 0}, + + {0x03f5, 758, 1}, {0x03a8, 823, 1}, - {0x1e7c, 2054, 1}, + {0x104d2, 3642, 1}, - {0x047c, 1090, 1}, + {0xff2a, 3369, 1}, - {0x118ba, 3870, 1}, + {0x118ba, 3879, 1}, - {0x0537, 1366, 1}, + {0x1ed2, 2168, 1}, - {0x1e97, 34, 2}, + {0x04d2, 1207, 1}, {0xa692, 3117, 1}, - {0x0197, 649, 1}, + {0x1fd2, 20, 3}, - {0x1f97, 204, 2}, + {0x2cd2, 2864, 1}, - {0xab7c, 1636, 1}, + {0x00d2, 132, 1}, {0x0398, 768, 1}, {0x10b6, 2966, 1}, - {0x1c97, 1483, 1}, - - {0xab97, 1717, 1}, - - {0x10c97, 3708, 1}, - {0xffffffff, -1, 0}, + {0x104c4, 3600, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x118b6, 3858, 1}, + {0x1ec4, 2147, 1}, - {0x16e5f, 3981, 1}, + {0x118b6, 3867, 1}, - {0x1e94, 2090, 1}, + {0x01c4, 417, 1}, - {0x0494, 1114, 1}, + {0x1fc4, 54, 2}, - {0x0194, 640, 1}, + {0x2cc4, 2843, 1}, - {0x1f94, 189, 2}, + {0x00c4, 89, 1}, - {0x2c94, 2771, 1}, + {0xa7c4, 3276, 1}, + {0xffffffff, -1, 0}, {0x0396, 762, 1}, - {0x10b4, 2960, 1}, - - {0x1c94, 1474, 1}, + {0x10c7, 3014, 1}, + {0xffffffff, -1, 0}, - {0xab94, 1708, 1}, + {0x104c2, 3594, 1}, - {0x10c94, 3699, 1}, + {0xff2d, 3378, 1}, {0x24be, 2522, 1}, - {0x118b4, 3852, 1}, - - {0x10416, 3477, 1}, + {0x1ec2, 2144, 1}, + {0xffffffff, -1, 0}, - {0x1e7a, 2051, 1}, + {0x10b4, 2960, 1}, - {0x047a, 1087, 1}, + {0x1fc2, 253, 2}, - {0x1e16, 1900, 1}, + {0x2cc2, 2840, 1}, - {0x0416, 916, 1}, + {0x00c2, 83, 1}, - {0x0116, 204, 1}, + {0xa7c2, 3327, 1}, - {0xa694, 3120, 1}, + {0x118b4, 3861, 1}, - {0x2c16, 2642, 1}, + {0x1ee0, 2189, 1}, - {0x017b, 348, 1}, + {0x04e0, 1228, 1}, - {0xab7a, 1630, 1}, + {0x01e0, 459, 1}, {0x24bc, 2516, 1}, - {0xffffffff, -1, 0}, - {0xa77b, 3249, 1}, + {0x2ce0, 2885, 1}, - {0x1e86, 2069, 1}, + {0x1e94, 2090, 1}, - {0xab7b, 1633, 1}, + {0x0494, 1114, 1}, - {0x0186, 616, 1}, + {0x0194, 640, 1}, - {0x1f86, 159, 2}, + {0x1f94, 189, 2}, - {0x2c86, 2750, 1}, + {0x2c94, 2771, 1}, + {0xffffffff, -1, 0}, {0x0390, 25, 3}, - {0xa786, 3264, 1}, - - {0x1c86, 980, 1}, + {0x1c94, 1474, 1}, - {0xab86, 1666, 1}, + {0xab94, 1708, 1}, - {0x10c86, 3657, 1}, + {0x10c94, 3708, 1}, + {0xffffffff, -1, 0}, {0x24ba, 2510, 1}, - - {0x01d7, 444, 1}, - - {0x1fd7, 31, 3}, - - {0x10c7, 3014, 1}, - - {0x018f, 625, 1}, - - {0x1f8f, 164, 2}, - - {0xff2a, 3360, 1}, {0xffffffff, -1, 0}, - {0xa686, 3099, 1}, - - {0x104c4, 3591, 1}, - - {0xab8f, 1693, 1}, + {0x1e86, 2069, 1}, + {0xffffffff, -1, 0}, - {0x10c8f, 3684, 1}, + {0x0186, 616, 1}, - {0x1ec4, 2147, 1}, + {0x1f86, 159, 2}, - {0x24b6, 2498, 1}, + {0x2c86, 2750, 1}, - {0x01c4, 417, 1}, + {0xa694, 3120, 1}, - {0x1fc4, 54, 2}, + {0xa786, 3264, 1}, - {0x2cc4, 2843, 1}, + {0x1c86, 980, 1}, - {0x00c4, 89, 1}, + {0xab86, 1666, 1}, - {0xa7c4, 3276, 1}, + {0x10c86, 3666, 1}, - {0x104c2, 3585, 1}, + {0x1041c, 3504, 1}, - {0x216e, 2489, 1}, + {0x24b6, 2498, 1}, {0xffffffff, -1, 0}, - {0x1ec2, 2144, 1}, + {0x1e1c, 1909, 1}, - {0x052a, 1339, 1}, + {0x041c, 934, 1}, - {0x022a, 562, 1}, + {0x011c, 213, 1}, - {0x1fc2, 253, 2}, + {0x1f1c, 2273, 1}, - {0x2cc2, 2840, 1}, + {0x2c1c, 2660, 1}, - {0x00c2, 83, 1}, + {0xa686, 3099, 1}, + {0xffffffff, -1, 0}, - {0xa7c2, 3327, 1}, + {0x1e902, 3999, 1}, + {0xffffffff, -1, 0}, {0x1e9e, 24, 2}, {0x049e, 1129, 1}, - {0xffffffff, -1, 0}, + + {0x24c7, 2549, 1}, {0x1f9e, 199, 2}, {0x2c9e, 2786, 1}, - - {0x037f, 887, 1}, + {0xffffffff, -1, 0}, {0xa79e, 3291, 1}, @@ -1001,7 +989,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab9e, 1738, 1}, - {0x10c9e, 3729, 1}, + {0x10c9e, 3738, 1}, {0x1e8e, 2081, 1}, @@ -1013,34 +1001,19 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c8e, 2762, 1}, - {0x013d, 258, 1}, + {0x10c4, 3008, 1}, - {0x1f3d, 2318, 1}, + {0x013f, 261, 1}, - {0x1041c, 3495, 1}, + {0x1f3f, 2324, 1}, {0xab8e, 1690, 1}, - {0x10c8e, 3681, 1}, + {0x10c8e, 3690, 1}, - {0x1e1c, 1909, 1}, - - {0x041c, 934, 1}, - - {0x011c, 213, 1}, - - {0x1f1c, 2273, 1}, - - {0x2c1c, 2660, 1}, - - {0x1e902, 3990, 1}, - - {0x1f5d, 2351, 1}, - {0xffffffff, -1, 0}, - - {0xa68e, 3111, 1}, + {0x01f7, 414, 1}, - {0x24c7, 2549, 1}, + {0x1ff7, 67, 3}, {0x1e8a, 2075, 1}, @@ -1052,35 +1025,23 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c8a, 2756, 1}, - {0x03d5, 816, 1}, - - {0x1e40, 1963, 1}, - {0xffffffff, -1, 0}, - - {0xab8a, 1678, 1}, + {0x037f, 887, 1}, - {0x10c8a, 3669, 1}, + {0xa68e, 3111, 1}, - {0x16e57, 3957, 1}, + {0x10c2, 3002, 1}, - {0x1e4a, 1978, 1}, + {0xab8a, 1678, 1}, - {0xa740, 3174, 1}, + {0x10c8a, 3678, 1}, - {0x014a, 276, 1}, + {0x0139, 252, 1}, - {0x1f4a, 2333, 1}, + {0x1f39, 2306, 1}, {0xffffffff, -1, 0}, - {0x004a, 24, 1}, - - {0xa74a, 3189, 1}, - - {0xa68a, 3105, 1}, - {0x1e82, 2063, 1}, - - {0x039a, 778, 1}, + {0xffffffff, -1, 0}, {0x0182, 357, 1}, @@ -1088,7 +1049,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c82, 2744, 1}, - {0xa640, 3020, 1}, + {0xa68a, 3105, 1}, {0xa782, 3258, 1}, @@ -1096,30 +1057,23 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab82, 1654, 1}, - {0x10c82, 3645, 1}, - - {0xa64a, 3035, 1}, - - {0x10c4, 3008, 1}, - - {0x0516, 1309, 1}, - - {0x0216, 535, 1}, + {0x10c82, 3654, 1}, - {0x2167, 2468, 1}, + {0x1f59, 2345, 1}, {0xffffffff, -1, 0}, + {0x0059, 71, 1}, + {0x1e80, 2060, 1}, {0x0480, 1096, 1}, - - {0xa682, 3093, 1}, + {0xffffffff, -1, 0}, {0x1f80, 129, 2}, {0x2c80, 2741, 1}, - {0x10c2, 3002, 1}, + {0xa682, 3093, 1}, {0xa780, 3255, 1}, @@ -1127,25 +1081,71 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xab80, 1648, 1}, - {0x10c80, 3639, 1}, + {0x10c80, 3648, 1}, - {0x212a, 27, 1}, + {0x1e4c, 1981, 1}, {0xffffffff, -1, 0}, - {0x1efa, 2228, 1}, + {0x014c, 279, 1}, - {0x04fa, 1267, 1}, + {0x1f4c, 2339, 1}, - {0x01fa, 493, 1}, + {0x039a, 778, 1}, - {0x1ffa, 2417, 1}, + {0x004c, 31, 1}, - {0x1041a, 3489, 1}, + {0xa74c, 3192, 1}, - {0x0392, 748, 1}, + {0x104c3, 3597, 1}, {0xa680, 3090, 1}, + {0x0537, 1366, 1}, + {0xffffffff, -1, 0}, + + {0x04c3, 1183, 1}, + + {0x24c4, 2540, 1}, + + {0x1fc3, 71, 2}, + + {0x1e4a, 1978, 1}, + + {0x00c3, 86, 1}, + + {0x014a, 276, 1}, + + {0x1f4a, 2333, 1}, + + {0xa64c, 3039, 1}, + + {0x004a, 24, 1}, + + {0xa74a, 3189, 1}, + + {0x1e2e, 1936, 1}, + + {0x042e, 993, 1}, + + {0x012e, 240, 1}, + + {0x1f2e, 2297, 1}, + + {0x2c2e, 2714, 1}, + + {0x24c2, 2534, 1}, + + {0xa72e, 3150, 1}, + + {0xff37, 3408, 1}, + + {0x0392, 748, 1}, + + {0x1041a, 3498, 1}, + {0xffffffff, -1, 0}, + + {0xa64a, 3035, 1}, + {0x1e1a, 1906, 1}, {0x041a, 928, 1}, @@ -1156,10 +1156,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c1a, 2654, 1}, - {0x10418, 3483, 1}, - {0xffffffff, -1, 0}, + {0x10418, 3492, 1}, - {0x1f5b, 2348, 1}, + {0x1e7c, 2054, 1}, + + {0x047c, 1090, 1}, {0x1e18, 1903, 1}, @@ -1171,11 +1172,10 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c18, 2648, 1}, - {0x1040e, 3453, 1}, - - {0x2c63, 1861, 1}, + {0x1040e, 3462, 1}, - {0x0397, 765, 1}, + {0xab7c, 1636, 1}, + {0xffffffff, -1, 0}, {0x1e0e, 1888, 1}, @@ -1186,26 +1186,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1f0e, 2255, 1}, {0x2c0e, 2618, 1}, - - {0x1e2e, 1936, 1}, - - {0x042e, 993, 1}, - - {0x012e, 240, 1}, - - {0x1f2e, 2297, 1}, - - {0x2c2e, 2714, 1}, {0xffffffff, -1, 0}, - {0xa72e, 3150, 1}, - - {0x0394, 755, 1}, + {0x1040c, 3456, 1}, - {0x1040c, 3447, 1}, - {0xffffffff, -1, 0}, + {0x051c, 1318, 1}, - {0x24c4, 2540, 1}, + {0x021c, 544, 1}, {0x1e0c, 1885, 1}, @@ -1217,27 +1204,21 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x2c0c, 2612, 1}, - {0x01a9, 685, 1}, - - {0x1fa9, 214, 2}, - - {0x053d, 1384, 1}, - - {0x023d, 378, 1}, + {0x1e2c, 1933, 1}, - {0x24c2, 2534, 1}, + {0x042c, 987, 1}, - {0x1ca9, 1537, 1}, + {0x012c, 237, 1}, - {0xaba9, 1771, 1}, + {0x1f2c, 2291, 1}, - {0x10ca9, 3762, 1}, + {0x2c2c, 2708, 1}, - {0x10408, 3435, 1}, + {0x10408, 3444, 1}, - {0x051c, 1318, 1}, + {0xa72c, 3147, 1}, - {0x021c, 544, 1}, + {0x03c2, 806, 1}, {0x1e08, 1879, 1}, @@ -1248,36 +1229,45 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1f08, 2237, 1}, {0x2c08, 2600, 1}, + {0xffffffff, -1, 0}, - {0x0386, 733, 1}, + {0x10416, 3486, 1}, - {0x10414, 3471, 1}, - {0xffffffff, -1, 0}, + {0x03e0, 860, 1}, - {0x13fa, 1846, 1}, + {0x053f, 1390, 1}, - {0x1e14, 1897, 1}, + {0x1e16, 1900, 1}, - {0x0414, 909, 1}, + {0x0416, 916, 1}, - {0x0114, 201, 1}, + {0x0116, 204, 1}, + + {0x0394, 755, 1}, + + {0x2c16, 2642, 1}, + + {0x10414, 3480, 1}, {0xffffffff, -1, 0}, - {0x2c14, 2636, 1}, + {0x10c3, 3005, 1}, - {0x0540, 1393, 1}, + {0x1e14, 1897, 1}, - {0x1f6d, 2372, 1}, + {0x0414, 909, 1}, - {0x2c6d, 607, 1}, + {0x0114, 201, 1}, - {0x038f, 842, 1}, + {0x16e5f, 3990, 1}, - {0x10406, 3429, 1}, + {0x2c14, 2636, 1}, + {0xffffffff, -1, 0}, - {0x054a, 1423, 1}, + {0x10406, 3438, 1}, - {0x024a, 595, 1}, + {0x0539, 1372, 1}, + + {0x0386, 733, 1}, {0x1e06, 1876, 1}, @@ -1285,7 +1275,7 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0106, 180, 1}, - {0x10404, 3423, 1}, + {0x10404, 3432, 1}, {0x2c06, 2594, 1}, {0xffffffff, -1, 0}, @@ -1295,21 +1285,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0404, 1011, 1}, {0x0104, 177, 1}, - {0xffffffff, -1, 0}, - - {0x2c04, 2588, 1}, - - {0x1ee0, 2189, 1}, - - {0x04e0, 1228, 1}, - - {0x01e0, 459, 1}, - - {0x10400, 3411, 1}, - {0x2ce0, 2885, 1}, + {0x10400, 3420, 1}, - {0x03c2, 806, 1}, + {0x2c04, 2588, 1}, + {0xffffffff, -1, 0}, {0x1e00, 1867, 1}, @@ -1317,20 +1297,11 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0100, 171, 1}, - {0x0179, 345, 1}, + {0x10426, 3534, 1}, {0x2c00, 2576, 1}, - {0x16e5d, 3975, 1}, - - {0x039e, 792, 1}, - - {0xa779, 3246, 1}, - - {0x10426, 3525, 1}, - - {0xab79, 1627, 1}, - {0xffffffff, -1, 0}, + {0xff39, 3414, 1}, {0x1e26, 1924, 1}, @@ -1338,464 +1309,508 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0126, 228, 1}, - {0xfb16, 125, 2}, + {0x039e, 792, 1}, {0x2c26, 2690, 1}, - {0x038e, 839, 1}, + {0x0535, 1360, 1}, {0xa726, 3138, 1}, - {0x16e40, 3888, 1}, + {0x1e91d, 4080, 1}, - {0x1ef4, 2219, 1}, + {0x054c, 1429, 1}, - {0x04f4, 1258, 1}, + {0x024c, 598, 1}, - {0x01f4, 487, 1}, + {0x1efe, 2234, 1}, - {0x1ff4, 101, 2}, + {0x04fe, 1273, 1}, - {0x16e4a, 3918, 1}, + {0x01fe, 499, 1}, - {0x051a, 1315, 1}, + {0x038e, 839, 1}, - {0x021a, 541, 1}, + {0x1e28, 1927, 1}, - {0x10a9, 2927, 1}, + {0x0428, 974, 1}, - {0x1f4d, 2342, 1}, + {0x0128, 231, 1}, - {0xff2e, 3372, 1}, + {0x1f28, 2279, 1}, - {0x004d, 34, 1}, + {0x2c28, 2696, 1}, {0xffffffff, -1, 0}, - {0x118a9, 3819, 1}, + {0xa728, 3141, 1}, - {0x0518, 1312, 1}, + {0x03f7, 890, 1}, - {0x0218, 538, 1}, + {0x054a, 1423, 1}, - {0x1e8c, 2078, 1}, + {0x024a, 595, 1}, - {0x048c, 1102, 1}, + {0xff35, 3402, 1}, {0x038a, 742, 1}, + {0xffffffff, -1, 0}, - {0x1f8c, 149, 2}, - - {0x2c8c, 2759, 1}, + {0x24c3, 2537, 1}, {0xffffffff, -1, 0}, - {0x050e, 1297, 1}, + {0x052e, 1345, 1}, - {0x020e, 523, 1}, + {0x022e, 568, 1}, - {0xab8c, 1684, 1}, + {0x10424, 3528, 1}, + {0xffffffff, -1, 0}, - {0x10c8c, 3675, 1}, + {0x017d, 351, 1}, - {0x104bf, 3576, 1}, + {0x1e24, 1921, 1}, - {0x052e, 1345, 1}, + {0x0424, 962, 1}, - {0x022e, 568, 1}, + {0x0124, 225, 1}, - {0x1e2c, 1933, 1}, + {0xa77d, 1858, 1}, - {0x042c, 987, 1}, + {0x2c24, 2684, 1}, - {0x012c, 237, 1}, + {0xab7d, 1639, 1}, - {0x1f2c, 2291, 1}, + {0xa724, 3135, 1}, - {0x2c2c, 2708, 1}, + {0x051a, 1315, 1}, - {0xa68c, 3108, 1}, + {0x021a, 541, 1}, - {0xa72c, 3147, 1}, + {0x1ee2, 2192, 1}, - {0x1cbf, 1597, 1}, + {0x04e2, 1231, 1}, - {0xabbf, 1837, 1}, + {0x01e2, 462, 1}, - {0x050c, 1294, 1}, + {0x1fe2, 36, 3}, - {0x020c, 520, 1}, + {0x2ce2, 2888, 1}, - {0x1e28, 1927, 1}, + {0xff2e, 3381, 1}, - {0x0428, 974, 1}, + {0x0518, 1312, 1}, - {0x0128, 231, 1}, + {0x0218, 538, 1}, - {0x1f28, 2279, 1}, + {0x01db, 450, 1}, - {0x2c28, 2696, 1}, + {0x1fdb, 2402, 1}, - {0x1fab, 224, 2}, + {0x2126, 826, 1}, - {0xa728, 3141, 1}, + {0x00db, 156, 1}, {0xffffffff, -1, 0}, - {0xa7ab, 631, 1}, + {0x10422, 3522, 1}, - {0x1cab, 1543, 1}, + {0x050e, 1297, 1}, - {0xabab, 1777, 1}, + {0x020e, 523, 1}, + + {0x1e22, 1918, 1}, + + {0x0422, 954, 1}, + + {0x0122, 222, 1}, + + {0x0533, 1354, 1}, + + {0x2c22, 2678, 1}, - {0x10cab, 3768, 1}, + {0x104b7, 3561, 1}, - {0x16e5b, 3969, 1}, + {0xa722, 3132, 1}, - {0x10424, 3519, 1}, + {0x050c, 1294, 1}, + + {0x020c, 520, 1}, + + {0x104cf, 3633, 1}, + + {0x01b7, 706, 1}, + + {0x1fb7, 10, 3}, + + {0x052c, 1342, 1}, + + {0x022c, 565, 1}, + + {0x01cf, 432, 1}, + + {0x1cb7, 1579, 1}, + + {0xabb7, 1813, 1}, + + {0x00cf, 123, 1}, + + {0x104d1, 3639, 1}, + + {0x0055, 59, 1}, {0x0508, 1288, 1}, {0x0208, 514, 1}, - {0x1e24, 1921, 1}, + {0xff33, 3396, 1}, - {0x0424, 962, 1}, + {0x01d1, 435, 1}, - {0x0124, 225, 1}, - {0xffffffff, -1, 0}, + {0x1e8c, 2078, 1}, - {0x2c24, 2684, 1}, + {0x048c, 1102, 1}, - {0x104b7, 3552, 1}, + {0x00d1, 129, 1}, - {0xa724, 3135, 1}, + {0x1f8c, 149, 2}, - {0x0514, 1306, 1}, + {0x2c8c, 2759, 1}, - {0x0214, 532, 1}, + {0x0516, 1309, 1}, - {0x03fa, 893, 1}, + {0x0216, 535, 1}, - {0x01b7, 706, 1}, + {0xff2c, 3375, 1}, - {0x1fb7, 10, 3}, + {0xab8c, 1684, 1}, + + {0x10c8c, 3684, 1}, - {0x104b3, 3540, 1}, + {0x104b3, 3549, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1cb7, 1579, 1}, + {0x0514, 1306, 1}, - {0xabb7, 1813, 1}, + {0x0214, 532, 1}, {0x01b3, 402, 1}, {0x1fb3, 62, 2}, + {0xffffffff, -1, 0}, - {0x0506, 1285, 1}, - - {0x0206, 511, 1}, + {0xa68c, 3108, 1}, - {0xa7b3, 3330, 1}, + {0xa7b3, 3339, 1}, {0x1cb3, 1567, 1}, {0xabb3, 1801, 1}, - {0x10422, 3513, 1}, + {0x0506, 1285, 1}, - {0x0504, 1282, 1}, + {0x0206, 511, 1}, - {0x0204, 508, 1}, + {0x1ef0, 2213, 1}, - {0x1e22, 1918, 1}, + {0x04f0, 1252, 1}, - {0x0422, 954, 1}, + {0x01f0, 20, 2}, - {0x0122, 222, 1}, + {0x104b1, 3543, 1}, - {0xff26, 3348, 1}, + {0x0504, 1282, 1}, - {0x2c22, 2678, 1}, + {0x0204, 508, 1}, - {0xff35, 3393, 1}, + {0x0149, 46, 2}, - {0xa722, 3132, 1}, + {0x1f49, 2330, 1}, - {0x104b1, 3534, 1}, + {0x01b1, 697, 1}, - {0x0143, 267, 1}, + {0x0049, 4095, 1}, {0x0500, 1276, 1}, {0x0200, 502, 1}, - {0x0043, 6, 1}, - - {0x01b1, 697, 1}, - {0xffffffff, -1, 0}, - - {0x2163, 2456, 1}, - {0xffffffff, -1, 0}, - {0xa7b1, 688, 1}, {0x1cb1, 1561, 1}, {0xabb1, 1795, 1}, - {0x10cb1, 3786, 1}, + {0x10cb1, 3795, 1}, {0x0526, 1333, 1}, {0x0226, 556, 1}, + {0xffffffff, -1, 0}, - {0x0535, 1360, 1}, + {0x1e6e, 2033, 1}, - {0x10bf, 2993, 1}, + {0x046e, 1069, 1}, - {0x03a9, 826, 1}, + {0x016e, 330, 1}, - {0x01a7, 393, 1}, + {0x1f6e, 2375, 1}, - {0x1fa7, 244, 2}, + {0x2c6e, 667, 1}, - {0x1e916, 4050, 1}, + {0xfb16, 125, 2}, - {0x118bf, 3885, 1}, - {0xffffffff, -1, 0}, + {0xa76e, 3243, 1}, - {0x1ca7, 1531, 1}, + {0x1e91c, 4077, 1}, - {0xaba7, 1765, 1}, + {0x1eee, 2210, 1}, - {0x10ca7, 3756, 1}, + {0x04ee, 1249, 1}, - {0x054d, 1432, 1}, + {0x01ee, 480, 1}, - {0x1f6b, 2366, 1}, + {0x0528, 1336, 1}, - {0x2c6b, 2732, 1}, + {0x0228, 559, 1}, - {0x10ab, 2933, 1}, + {0xfb14, 109, 2}, - {0x1e48, 1975, 1}, - {0xffffffff, -1, 0}, + {0x1f8d, 154, 2}, - {0xff2c, 3366, 1}, + {0x16e5d, 3984, 1}, - {0x1f48, 2327, 1}, + {0xff26, 3357, 1}, - {0x118ab, 3825, 1}, + {0xa78d, 643, 1}, - {0x0048, 21, 1}, + {0x10b7, 2969, 1}, - {0xa748, 3186, 1}, + {0xab8d, 1687, 1}, - {0x1e88, 2072, 1}, + {0x10c8d, 3687, 1}, - {0x1f69, 2360, 1}, + {0x1fab, 224, 2}, - {0x2c69, 2729, 1}, + {0xfb06, 29, 2}, - {0x1f88, 129, 2}, + {0x118b7, 3870, 1}, - {0x2c88, 2753, 1}, - {0xffffffff, -1, 0}, + {0xa7ab, 631, 1}, - {0xff28, 3354, 1}, + {0x1cab, 1543, 1}, - {0x1c88, 3035, 1}, + {0xabab, 1777, 1}, - {0xab88, 1672, 1}, + {0x10cab, 3777, 1}, - {0x10c88, 3663, 1}, + {0xfb04, 5, 3}, - {0x1e42, 1966, 1}, + {0x017b, 348, 1}, - {0xa648, 3032, 1}, + {0xff28, 3363, 1}, - {0x052c, 1342, 1}, + {0x0524, 1330, 1}, - {0x022c, 565, 1}, + {0x0224, 553, 1}, - {0x10b7, 2969, 1}, + {0xa77b, 3249, 1}, - {0x0042, 3, 1}, + {0xfb00, 4, 2}, - {0xa742, 3177, 1}, - {0xffffffff, -1, 0}, + {0xab7b, 1633, 1}, - {0xa688, 3102, 1}, + {0x01a9, 685, 1}, - {0x118b7, 3861, 1}, + {0x1fa9, 214, 2}, + {0xffffffff, -1, 0}, - {0x216d, 2486, 1}, + {0x01a7, 393, 1}, - {0x10b3, 2957, 1}, + {0x1fa7, 244, 2}, - {0xff24, 3342, 1}, + {0x1ca9, 1537, 1}, - {0x0528, 1336, 1}, + {0xaba9, 1771, 1}, - {0x0228, 559, 1}, + {0x10ca9, 3771, 1}, - {0x03e0, 860, 1}, + {0x1ca7, 1531, 1}, - {0x118b3, 3849, 1}, + {0xaba7, 1765, 1}, - {0x1e56, 1996, 1}, + {0x10ca7, 3765, 1}, - {0xa642, 3023, 1}, + {0x10b3, 2957, 1}, + {0xffffffff, -1, 0}, - {0x0156, 294, 1}, + {0x0531, 1348, 1}, - {0x1f56, 62, 3}, + {0xff24, 3351, 1}, + {0xffffffff, -1, 0}, - {0x16e4d, 3927, 1}, + {0x118b3, 3858, 1}, - {0x0056, 62, 1}, + {0x216e, 2489, 1}, + {0xffffffff, -1, 0}, - {0xa756, 3207, 1}, + {0x16e57, 3966, 1}, - {0x24bf, 2525, 1}, + {0x0522, 1327, 1}, - {0x1f59, 2345, 1}, + {0x0222, 550, 1}, - {0x1e4e, 1984, 1}, + {0x1e88, 2072, 1}, + {0xffffffff, -1, 0}, - {0x0059, 71, 1}, + {0x03fe, 727, 1}, - {0x014e, 282, 1}, + {0x1f88, 129, 2}, - {0x0524, 1330, 1}, + {0x2c88, 2753, 1}, + {0xffffffff, -1, 0}, - {0x0224, 553, 1}, + {0x10b1, 2951, 1}, - {0x004e, 37, 1}, + {0x1c88, 3035, 1}, - {0xa74e, 3195, 1}, + {0xab88, 1672, 1}, - {0x10b1, 2951, 1}, + {0x10c88, 3672, 1}, - {0x042d, 990, 1}, + {0xff31, 3390, 1}, - {0xa656, 3054, 1}, + {0x118b1, 3852, 1}, - {0x1f2d, 2294, 1}, + {0x0555, 1456, 1}, - {0x2c2d, 2711, 1}, + {0x1e7a, 2051, 1}, - {0x118b1, 3843, 1}, + {0x047a, 1087, 1}, - {0xff22, 3336, 1}, + {0x24b7, 2501, 1}, + {0xffffffff, -1, 0}, - {0x03f4, 768, 1}, + {0xff22, 3345, 1}, - {0x042f, 996, 1}, + {0xa688, 3102, 1}, - {0x1e91c, 4068, 1}, + {0x24cf, 2573, 1}, - {0x1f2f, 2300, 1}, + {0x1e56, 1996, 1}, - {0xa64e, 3042, 1}, + {0xab7a, 1630, 1}, - {0x104ce, 3621, 1}, + {0x0156, 294, 1}, - {0x10a7, 2921, 1}, + {0x1f56, 62, 3}, + {0xffffffff, -1, 0}, - {0x2126, 826, 1}, + {0x0056, 62, 1}, - {0x1ece, 2162, 1}, + {0xa756, 3207, 1}, - {0xfb14, 109, 2}, + {0x1e54, 1993, 1}, {0xffffffff, -1, 0}, - {0x118a7, 3813, 1}, + {0x0154, 291, 1}, - {0x2cce, 2858, 1}, + {0x1f54, 57, 3}, - {0x00ce, 120, 1}, + {0x16e5b, 3978, 1}, - {0x104b9, 3558, 1}, + {0x0054, 56, 1}, - {0x038c, 836, 1}, + {0xa754, 3204, 1}, - {0x0522, 1327, 1}, + {0x1e4e, 1984, 1}, - {0x0222, 550, 1}, + {0x03e2, 863, 1}, - {0xff33, 3387, 1}, + {0x014e, 282, 1}, - {0x24b7, 2501, 1}, + {0x10ab, 2933, 1}, - {0x1fb9, 2426, 1}, + {0xa656, 3054, 1}, - {0xfb06, 29, 2}, + {0x004e, 37, 1}, - {0x0543, 1402, 1}, + {0xa74e, 3195, 1}, - {0x0243, 354, 1}, + {0x1e52, 1990, 1}, - {0x1cb9, 1585, 1}, + {0x118ab, 3834, 1}, - {0xabb9, 1819, 1}, + {0x0152, 288, 1}, - {0x1e54, 1993, 1}, + {0x1f52, 52, 3}, - {0xfb04, 5, 3}, + {0xa654, 3051, 1}, - {0x0154, 291, 1}, + {0x0052, 49, 1}, - {0x1f54, 57, 3}, + {0xa752, 3201, 1}, + {0xffffffff, -1, 0}, - {0xff31, 3381, 1}, + {0x1e91a, 4071, 1}, - {0x0054, 56, 1}, + {0x0549, 1420, 1}, + {0xffffffff, -1, 0}, - {0xa754, 3204, 1}, + {0xa64e, 3042, 1}, + + {0x10a9, 2927, 1}, {0xffffffff, -1, 0}, - {0x1e52, 1990, 1}, + {0x0053, 52, 1}, - {0x0533, 1354, 1}, + {0x10a7, 2921, 1}, - {0x0152, 288, 1}, + {0x1e918, 4065, 1}, - {0x1f52, 52, 3}, + {0x118a9, 3828, 1}, - {0xfb00, 4, 2}, + {0xa652, 3048, 1}, - {0x0052, 49, 1}, + {0x1e30, 1939, 1}, - {0xa752, 3201, 1}, + {0x118a7, 3822, 1}, - {0x03ab, 833, 1}, - {0xffffffff, -1, 0}, + {0x0130, 261, 2}, + + {0x03cf, 845, 1}, {0x1e50, 1987, 1}, - {0xa654, 3051, 1}, + {0x1e90e, 4035, 1}, {0x0150, 285, 1}, {0x1f50, 84, 2}, - - {0x0531, 1348, 1}, + {0xffffffff, -1, 0}, {0x0050, 43, 1}, {0xa750, 3198, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, - {0xa652, 3048, 1}, + {0x03d1, 768, 1}, - {0x0548, 1417, 1}, + {0x1e48, 1975, 1}, - {0x0248, 592, 1}, + {0x1e90c, 4029, 1}, - {0x10420, 3507, 1}, + {0x038c, 836, 1}, - {0x013f, 261, 1}, + {0x1f48, 2327, 1}, + {0xffffffff, -1, 0}, - {0x1f3f, 2324, 1}, + {0x0048, 21, 1}, + + {0xa748, 3186, 1}, + {0xffffffff, -1, 0}, + + {0x10420, 3516, 1}, + + {0xa650, 3045, 1}, + {0xffffffff, -1, 0}, {0x1e20, 1915, 1}, @@ -1803,34 +1818,30 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0120, 219, 1}, - {0xa650, 3045, 1}, + {0x1e908, 4017, 1}, {0x2c20, 2672, 1}, {0xffffffff, -1, 0}, - {0x16e43, 3897, 1}, - {0xffffffff, -1, 0}, - - {0x1e91a, 4062, 1}, - {0xffffffff, -1, 0}, + {0x1041e, 3510, 1}, - {0x1041e, 3501, 1}, + {0xa648, 3032, 1}, {0xffffffff, -1, 0}, - {0x0542, 1399, 1}, - {0x1e1e, 1912, 1}, {0x041e, 940, 1}, {0x011e, 216, 1}, - {0x1e918, 4056, 1}, + {0x1e916, 4059, 1}, {0x2c1e, 2666, 1}, - {0x10412, 3465, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x10412, 3474, 1}, + + {0x03f0, 778, 1}, + {0xffffffff, -1, 0}, {0x1e12, 1894, 1}, @@ -1838,47 +1849,33 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0112, 198, 1}, - {0x1e90e, 4026, 1}, + {0x1e914, 4053, 1}, {0x2c12, 2630, 1}, - {0xffffffff, -1, 0}, - {0x10410, 3459, 1}, + {0x1f4d, 2342, 1}, - {0xff2d, 3369, 1}, + {0x10410, 3468, 1}, - {0x0556, 1459, 1}, + {0x004d, 34, 1}, + {0xffffffff, -1, 0}, {0x1e10, 1891, 1}, {0x0410, 896, 1}, {0x0110, 195, 1}, - {0xffffffff, -1, 0}, - {0x2c10, 2624, 1}, - - {0xff2f, 3375, 1}, - - {0x10b9, 2975, 1}, + {0x1e906, 4011, 1}, - {0x16e48, 3912, 1}, - - {0x054e, 1435, 1}, - - {0x024e, 601, 1}, - - {0x1e90c, 4020, 1}, - - {0x118b9, 3867, 1}, - {0xffffffff, -1, 0}, + {0x2c10, 2624, 1}, - {0x104ca, 3609, 1}, + {0x104ca, 3618, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x1eca, 2156, 1}, - {0x03a7, 820, 1}, + {0x1e904, 4005, 1}, {0x01ca, 425, 1}, @@ -1888,14 +1885,14 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x00ca, 108, 1}, - {0x104c8, 3603, 1}, - {0xffffffff, -1, 0}, + {0x104c8, 3612, 1}, - {0x16e42, 3894, 1}, + {0x1e900, 3993, 1}, - {0x1ec8, 2153, 1}, + {0x03ee, 881, 1}, - {0x1e908, 4008, 1}, + {0x1ec8, 2153, 1}, + {0xffffffff, -1, 0}, {0x01c8, 421, 1}, @@ -1905,27 +1902,25 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x00c8, 102, 1}, - {0x1e6c, 2030, 1}, - - {0x046c, 1066, 1}, + {0x018b, 366, 1}, - {0x016c, 327, 1}, + {0x1f8b, 144, 2}, + {0xffffffff, -1, 0}, - {0x1f6c, 2369, 1}, + {0x03ab, 833, 1}, - {0x1e914, 4044, 1}, + {0xa78b, 3267, 1}, - {0x104c6, 3597, 1}, + {0x104c6, 3606, 1}, - {0xa76c, 3240, 1}, + {0xab8b, 1681, 1}, - {0x0388, 736, 1}, + {0x10c8b, 3681, 1}, {0x1ec6, 2150, 1}, + {0xffffffff, -1, 0}, - {0x216b, 2480, 1}, - - {0x16e56, 3954, 1}, + {0x0556, 1459, 1}, {0x1fc6, 67, 2}, @@ -1935,52 +1930,58 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xa7c6, 1864, 1}, - {0x16e59, 3963, 1}, - - {0x1e906, 4002, 1}, + {0x1e3a, 1954, 1}, + {0xffffffff, -1, 0}, {0x0554, 1453, 1}, - {0xa66c, 3087, 1}, + {0x1f3a, 2309, 1}, - {0x16e4e, 3930, 1}, + {0x03a9, 826, 1}, + {0xffffffff, -1, 0}, - {0x2169, 2474, 1}, + {0xa73a, 3165, 1}, - {0x24ce, 2570, 1}, + {0x03a7, 820, 1}, + {0xffffffff, -1, 0}, + + {0x054e, 1435, 1}, - {0x1e904, 3996, 1}, + {0x024e, 601, 1}, + {0xffffffff, -1, 0}, - {0x104c5, 3594, 1}, + {0x104ce, 3630, 1}, + + {0x104c5, 3603, 1}, {0xffffffff, -1, 0}, + {0x1ece, 2162, 1}, + {0x0552, 1447, 1}, - {0xffffffff, -1, 0}, {0x04c5, 1186, 1}, {0x01c5, 417, 1}, - {0xffffffff, -1, 0}, - {0x24b9, 2507, 1}, + {0x2cce, 2858, 1}, + + {0x00ce, 120, 1}, {0x00c5, 92, 1}, {0xa7c5, 682, 1}, - {0x1e900, 3984, 1}, - - {0x0550, 1441, 1}, + {0x104c0, 3588, 1}, - {0x104c0, 3579, 1}, + {0x104b5, 3555, 1}, - {0x104b5, 3546, 1}, - {0xffffffff, -1, 0}, + {0x0553, 1450, 1}, {0x1ec0, 2141, 1}, {0x04c0, 1201, 1}, - {0xffffffff, -1, 0}, + + {0x0388, 736, 1}, {0x01b5, 405, 1}, @@ -1989,158 +1990,149 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x00c0, 77, 1}, {0x00b5, 785, 1}, - - {0x053f, 1390, 1}, + {0xffffffff, -1, 0}, {0x1cb5, 1573, 1}, {0xabb5, 1807, 1}, - {0x1fad, 234, 2}, - - {0x0520, 1324, 1}, - - {0x0220, 381, 1}, - - {0xa7ad, 661, 1}, - - {0x1cad, 1549, 1}, - - {0xabad, 1783, 1}, + {0x0230, 571, 1}, - {0x10cad, 3774, 1}, + {0x01af, 399, 1}, - {0x1efc, 2231, 1}, + {0x1faf, 244, 2}, - {0x04fc, 1270, 1}, + {0x0550, 1441, 1}, - {0x01fc, 496, 1}, + {0x16e59, 3972, 1}, + {0xffffffff, -1, 0}, - {0x1ffc, 96, 2}, + {0x1caf, 1555, 1}, - {0x16e54, 3948, 1}, + {0xabaf, 1789, 1}, - {0x1fa5, 234, 2}, - {0xffffffff, -1, 0}, + {0x10caf, 3789, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x051e, 1321, 1}, + {0x1fad, 234, 2}, - {0x021e, 547, 1}, + {0x0548, 1417, 1}, - {0x1ca5, 1525, 1}, + {0x0248, 592, 1}, - {0xaba5, 1759, 1}, + {0xa7ad, 661, 1}, - {0x10ca5, 3750, 1}, + {0x1cad, 1549, 1}, - {0x16e52, 3942, 1}, + {0xabad, 1783, 1}, - {0x01af, 399, 1}, + {0x10cad, 3783, 1}, - {0x1faf, 244, 2}, + {0xff30, 3387, 1}, + {0xffffffff, -1, 0}, - {0x0512, 1303, 1}, + {0x16e4c, 3933, 1}, - {0x0212, 529, 1}, + {0x1fa5, 234, 2}, {0xffffffff, -1, 0}, - {0x1caf, 1555, 1}, + {0x0520, 1324, 1}, - {0xabaf, 1789, 1}, + {0x0220, 381, 1}, + + {0x1ca5, 1525, 1}, - {0x10caf, 3780, 1}, + {0xaba5, 1759, 1}, - {0x16e50, 3936, 1}, + {0x10ca5, 3759, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x1fa3, 224, 2}, - {0xffffffff, -1, 0}, - {0x0510, 1300, 1}, + {0x051e, 1321, 1}, - {0x0210, 526, 1}, + {0x021e, 547, 1}, + + {0x16e4a, 3927, 1}, {0x1ca3, 1519, 1}, {0xaba3, 1753, 1}, - {0x10ca3, 3744, 1}, - - {0x0429, 977, 1}, + {0x10ca3, 3753, 1}, + {0xffffffff, -1, 0}, {0x1fa1, 214, 2}, - {0x1f29, 2282, 1}, + {0x0512, 1303, 1}, - {0x2c29, 2699, 1}, - {0xffffffff, -1, 0}, + {0x0212, 529, 1}, + + {0x054d, 1432, 1}, {0x1ca1, 1513, 1}, {0xaba1, 1747, 1}, - {0x10ca1, 3738, 1}, + {0x10ca1, 3747, 1}, - {0x1e6a, 2027, 1}, + {0x1e66, 2021, 1}, - {0x046a, 1063, 1}, + {0x0466, 1057, 1}, - {0x016a, 324, 1}, + {0x0166, 318, 1}, - {0x1f6a, 2363, 1}, + {0x0510, 1300, 1}, - {0x1e46, 1972, 1}, - {0xffffffff, -1, 0}, + {0x0210, 526, 1}, - {0xa76a, 3237, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e97, 34, 2}, - {0x0046, 15, 1}, + {0xa766, 3231, 1}, - {0xa746, 3183, 1}, + {0x0197, 649, 1}, - {0x10c5, 3011, 1}, + {0x1f97, 204, 2}, {0xffffffff, -1, 0}, - {0x1e68, 2024, 1}, + {0x1e46, 1972, 1}, - {0x0468, 1060, 1}, + {0x10c5, 3011, 1}, - {0x0168, 321, 1}, + {0x1c97, 1483, 1}, - {0x1f68, 2357, 1}, - {0xffffffff, -1, 0}, + {0xab97, 1717, 1}, - {0xa66a, 3084, 1}, + {0x10c97, 3717, 1}, - {0xa768, 3234, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x0046, 15, 1}, - {0xa646, 3029, 1}, + {0xa746, 3183, 1}, + {0xffffffff, -1, 0}, - {0x10c0, 2996, 1}, + {0xa666, 3078, 1}, - {0x10b5, 2963, 1}, + {0x1e44, 1969, 1}, {0x24ca, 2558, 1}, - {0x13fc, 1852, 1}, + {0x10c0, 2996, 1}, - {0x1e44, 1969, 1}, + {0x10b5, 2963, 1}, {0xffffffff, -1, 0}, - {0x118b5, 3855, 1}, - - {0x10ad, 2939, 1}, - - {0xa668, 3081, 1}, - {0x0044, 9, 1}, {0xa744, 3180, 1}, + {0xffffffff, -1, 0}, + + {0x118b5, 3864, 1}, + + {0xa646, 3029, 1}, {0x24c8, 2552, 1}, - {0x118ad, 3831, 1}, + {0x10af, 2945, 1}, {0xffffffff, -1, 0}, {0x1e64, 2018, 1}, @@ -2148,71 +2140,103 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0464, 1054, 1}, {0x0164, 315, 1}, - {0xffffffff, -1, 0}, + + {0x118af, 3846, 1}, {0x2c64, 676, 1}, - {0x10a5, 2915, 1}, + {0xa644, 3026, 1}, {0xa764, 3228, 1}, - {0xffffffff, -1, 0}, - {0xa644, 3026, 1}, + {0x10ad, 2939, 1}, {0xffffffff, -1, 0}, - {0x118a5, 3807, 1}, + {0x053a, 1375, 1}, + + {0x023a, 2720, 1}, {0x24c6, 2546, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x10af, 2945, 1}, + {0x118ad, 3840, 1}, - {0x1e32, 1942, 1}, - {0xffffffff, -1, 0}, + {0x1e6c, 2030, 1}, - {0x0132, 243, 1}, + {0x046c, 1066, 1}, + + {0x016c, 327, 1}, + + {0x1f6c, 2369, 1}, + + {0x10a5, 2915, 1}, {0xa664, 3075, 1}, - {0x118af, 3837, 1}, + {0xa76c, 3240, 1}, + {0xffffffff, -1, 0}, + + {0x2166, 2465, 1}, - {0x104cb, 3612, 1}, + {0x118a5, 3816, 1}, - {0xa732, 3153, 1}, + {0x1e6a, 2027, 1}, + + {0x046a, 1063, 1}, + + {0x016a, 324, 1}, + + {0x1f6a, 2363, 1}, {0x10a3, 2909, 1}, - {0xffffffff, -1, 0}, - {0x04cb, 1195, 1}, + {0xff3a, 3417, 1}, - {0x01cb, 425, 1}, + {0xa76a, 3237, 1}, + {0xffffffff, -1, 0}, - {0x1fcb, 2396, 1}, + {0xa66c, 3087, 1}, - {0x118a3, 3801, 1}, + {0x118a3, 3810, 1}, - {0x00cb, 111, 1}, + {0x24ce, 2570, 1}, {0x24c5, 2543, 1}, {0x10a1, 2903, 1}, + + {0x1e68, 2024, 1}, + + {0x0468, 1060, 1}, + + {0x0168, 321, 1}, + + {0x1f68, 2357, 1}, + + {0x118a1, 3804, 1}, + + {0xa66a, 3084, 1}, + + {0xa768, 3234, 1}, {0xffffffff, -1, 0}, + {0x24c0, 2528, 1}, + {0x1e62, 2015, 1}, {0x0462, 1050, 1}, {0x0162, 312, 1}, - - {0x118a1, 3795, 1}, + {0xffffffff, -1, 0}, {0x2c62, 658, 1}, {0xffffffff, -1, 0}, {0xa762, 3225, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, - {0x24c0, 2528, 1}, + {0x2164, 2459, 1}, + + {0xa668, 3081, 1}, {0x1e60, 2011, 1}, @@ -2222,41 +2246,41 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xffffffff, -1, 0}, {0x2c60, 2717, 1}, - - {0xff29, 3357, 1}, + {0xffffffff, -1, 0}, {0xa760, 3222, 1}, - {0xffffffff, -1, 0}, + + {0x1e32, 1942, 1}, {0xa662, 3072, 1}, - {0x1ee2, 2192, 1}, + {0x0132, 243, 1}, + {0xffffffff, -1, 0}, - {0x04e2, 1231, 1}, + {0x216c, 2483, 1}, + {0xffffffff, -1, 0}, - {0x01e2, 462, 1}, + {0xa732, 3153, 1}, + {0xffffffff, -1, 0}, - {0x1fe2, 36, 3}, + {0x1ede, 2186, 1}, - {0x2ce2, 2888, 1}, + {0x04de, 1225, 1}, - {0x042b, 984, 1}, - {0xffffffff, -1, 0}, + {0x01de, 456, 1}, - {0x1f2b, 2288, 1}, + {0xa660, 3069, 1}, - {0x2c2b, 2705, 1}, + {0x2cde, 2882, 1}, - {0xa660, 3069, 1}, - {0xffffffff, -1, 0}, + {0x00de, 165, 1}, - {0x216c, 2483, 1}, + {0x216a, 2477, 1}, {0x1eda, 2180, 1}, {0x04da, 1219, 1}, - - {0x104bd, 3570, 1}, + {0xffffffff, -1, 0}, {0x1fda, 2399, 1}, @@ -2267,7 +2291,8 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1ed8, 2177, 1}, {0x04d8, 1216, 1}, - {0xffffffff, -1, 0}, + + {0x0051, 46, 1}, {0x1fd8, 2429, 1}, @@ -2275,18 +2300,13 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x00d8, 147, 1}, - {0x1cbd, 1591, 1}, - - {0xabbd, 1831, 1}, - - {0x0546, 1411, 1}, - - {0x0246, 589, 1}, + {0x2168, 2471, 1}, {0x1ed6, 2174, 1}, {0x04d6, 1213, 1}, - {0xffffffff, -1, 0}, + + {0x104cd, 3627, 1}, {0x1fd6, 76, 2}, @@ -2294,316 +2314,402 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x00d6, 144, 1}, - {0x104d2, 3633, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x04cd, 1198, 1}, - {0x1ed2, 2168, 1}, + {0x01cd, 429, 1}, - {0x04d2, 1207, 1}, + {0x2162, 2453, 1}, - {0x10427, 3528, 1}, + {0x104cb, 3621, 1}, - {0x1fd2, 20, 3}, + {0x00cd, 117, 1}, - {0x2cd2, 2864, 1}, + {0x0546, 1411, 1}, - {0x00d2, 132, 1}, + {0x0246, 589, 1}, - {0x0427, 971, 1}, + {0x04cb, 1195, 1}, - {0x104d0, 3627, 1}, + {0x01cb, 425, 1}, + + {0x1fcb, 2396, 1}, {0xffffffff, -1, 0}, - {0x2c27, 2693, 1}, + {0x00cb, 111, 1}, - {0x1ed0, 2165, 1}, + {0x2160, 2447, 1}, - {0x04d0, 1204, 1}, + {0x104bf, 3585, 1}, {0x0544, 1405, 1}, {0x0244, 694, 1}, + {0xffffffff, -1, 0}, + + {0x104bd, 3579, 1}, + + {0x104d0, 3636, 1}, + + {0x2132, 2444, 1}, + + {0x03a5, 813, 1}, + + {0x1ed0, 2165, 1}, + + {0x04d0, 1204, 1}, + + {0x1cbf, 1597, 1}, + + {0xabbf, 1837, 1}, {0x2cd0, 2861, 1}, {0x00d0, 126, 1}, - {0x03a5, 813, 1}, + {0x1cbd, 1591, 1}, - {0x104cd, 3618, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xabbd, 1831, 1}, - {0xff32, 3384, 1}, + {0x104cc, 3624, 1}, - {0x04cd, 1198, 1}, + {0x03a3, 806, 1}, - {0x01cd, 429, 1}, - {0xffffffff, -1, 0}, + {0x1f4b, 2336, 1}, - {0x104c3, 3588, 1}, + {0x1ecc, 2159, 1}, - {0x00cd, 117, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x004b, 27, 1}, - {0x04c3, 1183, 1}, + {0x16e55, 3960, 1}, - {0x104bb, 3564, 1}, + {0x1fcc, 71, 2}, - {0x1fc3, 71, 2}, + {0x2ccc, 2855, 1}, - {0x16e46, 3906, 1}, + {0x00cc, 114, 1}, - {0x00c3, 86, 1}, + {0x03a1, 802, 1}, - {0x03a3, 806, 1}, + {0x104c9, 3615, 1}, + + {0x104bb, 3573, 1}, + + {0x1e920, 4089, 1}, + + {0x004f, 40, 1}, + + {0x04c9, 1192, 1}, {0xffffffff, -1, 0}, - {0x1fbb, 2384, 1}, + {0x1fc9, 2390, 1}, - {0x104cc, 3615, 1}, + {0x1fbb, 2384, 1}, - {0x0532, 1351, 1}, + {0x00c9, 105, 1}, - {0x0232, 574, 1}, + {0xa7c9, 3333, 1}, + {0xffffffff, -1, 0}, - {0x1ecc, 2159, 1}, + {0x1e91e, 4083, 1}, {0xabbb, 1825, 1}, + {0xffffffff, -1, 0}, - {0x03a1, 802, 1}, + {0x0397, 765, 1}, - {0x1fcc, 71, 2}, + {0x019f, 673, 1}, - {0x2ccc, 2855, 1}, + {0x1f9f, 204, 2}, - {0x00cc, 114, 1}, + {0x1f6d, 2372, 1}, - {0x019d, 670, 1}, + {0x2c6d, 607, 1}, - {0x1f9d, 194, 2}, + {0x1e912, 4047, 1}, - {0x1e78, 2048, 1}, + {0x1c9f, 1507, 1}, - {0x0478, 1084, 1}, + {0xab9f, 1741, 1}, - {0x0178, 168, 1}, + {0x10c9f, 3741, 1}, - {0x1c9d, 1501, 1}, + {0x0145, 270, 1}, - {0xab9d, 1735, 1}, + {0x019d, 670, 1}, - {0x10c9d, 3726, 1}, + {0x1f9d, 194, 2}, + + {0x0045, 12, 1}, {0xffffffff, -1, 0}, - {0x16e44, 3900, 1}, + {0x1e910, 4041, 1}, - {0xab78, 1624, 1}, + {0x1c9d, 1501, 1}, + + {0xab9d, 1735, 1}, + + {0x10c9d, 3735, 1}, {0x1e9b, 2011, 1}, - {0x10bd, 2987, 1}, + {0x16e49, 3924, 1}, {0xffffffff, -1, 0}, {0x1f9b, 184, 2}, - - {0xff2b, 3363, 1}, {0xffffffff, -1, 0}, - {0x118bd, 3879, 1}, + {0x10cd, 3017, 1}, + {0xffffffff, -1, 0}, {0x1c9b, 1495, 1}, {0xab9b, 1729, 1}, - {0x10c9b, 3720, 1}, + {0x10c9b, 3729, 1}, - {0x216a, 2477, 1}, + {0x0193, 634, 1}, - {0x24cb, 2561, 1}, + {0x1f93, 184, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e99, 42, 2}, + {0x1e40, 1963, 1}, - {0x1e920, 4080, 1}, - {0xffffffff, -1, 0}, + {0x1c93, 1471, 1}, - {0x1f99, 174, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xab93, 1705, 1}, - {0x1c99, 1489, 1}, + {0x10c93, 3705, 1}, - {0xab99, 1723, 1}, + {0x0532, 1351, 1}, + + {0x0232, 574, 1}, + + {0xa740, 3174, 1}, + + {0x1e99, 42, 2}, - {0x10c99, 3714, 1}, + {0x10bf, 2993, 1}, {0xffffffff, -1, 0}, - {0x2168, 2471, 1}, + {0x1f99, 174, 2}, + {0xffffffff, -1, 0}, - {0x0193, 634, 1}, + {0x10bd, 2987, 1}, - {0x1f93, 184, 2}, + {0x118bf, 3894, 1}, - {0x1e91e, 4074, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1c99, 1489, 1}, - {0x1c93, 1471, 1}, + {0xab99, 1723, 1}, - {0xab93, 1705, 1}, + {0x10c99, 3723, 1}, - {0x10c93, 3696, 1}, + {0x118bd, 3888, 1}, + + {0xa640, 3020, 1}, {0x0191, 369, 1}, {0x1f91, 174, 2}, - {0x1e912, 4038, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x1c91, 1465, 1}, + {0x216d, 2486, 1}, - {0xab91, 1699, 1}, + {0x0551, 1444, 1}, - {0x10c91, 3690, 1}, - {0xffffffff, -1, 0}, + {0xff32, 3393, 1}, - {0x10cd, 3017, 1}, + {0x1c91, 1465, 1}, - {0xff27, 3351, 1}, + {0xab91, 1699, 1}, - {0x1e910, 4032, 1}, + {0x10c91, 3699, 1}, {0x0187, 363, 1}, {0x1f87, 164, 2}, - - {0x0055, 59, 1}, - - {0x2164, 2459, 1}, - - {0x10c3, 3005, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x1c87, 1050, 1}, {0xab87, 1669, 1}, - {0x10c87, 3660, 1}, - - {0x0145, 270, 1}, + {0x10c87, 3669, 1}, {0x10bb, 2981, 1}, {0xffffffff, -1, 0}, - {0x0045, 12, 1}, - - {0x24bd, 2519, 1}, - {0xffffffff, -1, 0}, - - {0x118bb, 3873, 1}, - {0x1e72, 2039, 1}, {0x0472, 1075, 1}, {0x0172, 336, 1}, - {0x2132, 2444, 1}, + {0x118bb, 3882, 1}, {0x2c72, 2735, 1}, + {0x1e76, 2045, 1}, + + {0x0476, 1081, 1}, + + {0x0176, 342, 1}, + + {0xab72, 1606, 1}, + + {0x24cd, 2567, 1}, + {0x1e70, 2036, 1}, {0x0470, 1072, 1}, {0x0170, 333, 1}, - {0xab72, 1606, 1}, + {0xab76, 1618, 1}, {0x2c70, 610, 1}, - {0x1e66, 2021, 1}, + {0x1e5a, 2002, 1}, - {0x0466, 1057, 1}, + {0x24cb, 2561, 1}, - {0x0166, 318, 1}, + {0x015a, 300, 1}, {0xab70, 1600, 1}, - {0xffffffff, -1, 0}, - {0x1e3a, 1954, 1}, + {0x1e42, 1966, 1}, - {0xa766, 3231, 1}, + {0x005a, 74, 1}, - {0x1e5a, 2002, 1}, + {0xa75a, 3213, 1}, - {0x1f3a, 2309, 1}, + {0x1f6b, 2366, 1}, - {0x015a, 300, 1}, + {0x2c6b, 2732, 1}, - {0x2162, 2453, 1}, + {0x0042, 3, 1}, - {0xa73a, 3165, 1}, + {0xa742, 3177, 1}, - {0x005a, 74, 1}, + {0x24bf, 2525, 1}, - {0xa75a, 3213, 1}, + {0x10421, 3519, 1}, - {0x03e2, 863, 1}, + {0x03de, 857, 1}, + + {0x054b, 1426, 1}, + + {0x24bd, 2519, 1}, + + {0x0421, 950, 1}, + + {0x104c1, 3591, 1}, + + {0xa65a, 3060, 1}, + + {0x2c21, 2675, 1}, + + {0x03da, 851, 1}, + + {0x04c1, 1180, 1}, + + {0xa642, 3023, 1}, + + {0x054f, 1438, 1}, {0xffffffff, -1, 0}, - {0x104cf, 3624, 1}, + {0x00c1, 80, 1}, + + {0x03d8, 848, 1}, + + {0x24cc, 2564, 1}, + + {0x16e56, 3963, 1}, + + {0x1efa, 2228, 1}, + + {0x04fa, 1267, 1}, + + {0x01fa, 493, 1}, + + {0x1ffa, 2417, 1}, + + {0x03d6, 798, 1}, {0x1e58, 1999, 1}, - {0xa666, 3078, 1}, + {0x16e54, 3957, 1}, {0x0158, 297, 1}, - {0x2160, 2447, 1}, + {0x24c9, 2555, 1}, - {0x01cf, 432, 1}, + {0x24bb, 2513, 1}, {0x0058, 68, 1}, {0xa758, 3210, 1}, - {0x00cf, 123, 1}, - - {0xa65a, 3060, 1}, + {0x042f, 996, 1}, - {0x03da, 851, 1}, + {0x16e4e, 3939, 1}, - {0x24cd, 2567, 1}, + {0x1f2f, 2300, 1}, - {0x1eec, 2207, 1}, + {0x018f, 625, 1}, - {0x04ec, 1246, 1}, + {0x1f8f, 164, 2}, - {0x01ec, 477, 1}, + {0x0545, 1408, 1}, - {0x1fec, 2441, 1}, + {0x0245, 703, 1}, + {0xffffffff, -1, 0}, - {0x03d8, 848, 1}, + {0x16e52, 3951, 1}, - {0x212b, 92, 1}, + {0xab8f, 1693, 1}, - {0x24c3, 2537, 1}, + {0x10c8f, 3693, 1}, {0xa658, 3057, 1}, - {0x1edc, 2183, 1}, + {0x1ef4, 2219, 1}, - {0x04dc, 1222, 1}, - {0xffffffff, -1, 0}, + {0x04f4, 1258, 1}, - {0x24bb, 2513, 1}, + {0x01f4, 487, 1}, - {0x2cdc, 2879, 1}, + {0x1ff4, 101, 2}, - {0x00dc, 159, 1}, + {0x216b, 2480, 1}, - {0x03d6, 798, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e53, 3954, 1}, - {0x24cc, 2564, 1}, + {0x13fa, 1846, 1}, + + {0x03d0, 748, 1}, + + {0x1ef2, 2216, 1}, + + {0x04f2, 1255, 1}, + + {0x01f2, 483, 1}, + + {0x1ff2, 257, 2}, + + {0x2cf2, 2897, 1}, + + {0x1eec, 2207, 1}, + + {0x04ec, 1246, 1}, + + {0x01ec, 477, 1}, + + {0x1fec, 2441, 1}, + {0xffffffff, -1, 0}, + + {0x0540, 1393, 1}, + + {0x16e50, 3945, 1}, {0x1eea, 2204, 1}, @@ -2621,6 +2727,8 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1fe8, 2435, 1}, + {0x16e48, 3921, 1}, + {0x1ee6, 2198, 1}, {0x04e6, 1237, 1}, @@ -2628,9 +2736,6 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x01e6, 468, 1}, {0x1fe6, 88, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x03d0, 748, 1}, {0x1ee4, 2195, 1}, @@ -2640,104 +2745,61 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1fe4, 80, 2}, - {0x104c9, 3606, 1}, - - {0x104c1, 3582, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x04c9, 1192, 1}, - - {0x04c1, 1180, 1}, - - {0x1fc9, 2390, 1}, + {0x0143, 267, 1}, - {0x1f95, 194, 2}, + {0x039f, 795, 1}, - {0x00c9, 105, 1}, + {0x0141, 264, 1}, - {0x00c1, 80, 1}, + {0x0043, 6, 1}, {0xffffffff, -1, 0}, - {0x1c95, 1477, 1}, - - {0xab95, 1711, 1}, - - {0x10c95, 3702, 1}, - - {0x018b, 366, 1}, - - {0x1f8b, 144, 2}, - - {0x0555, 1456, 1}, + {0x0041, 0, 1}, {0x0587, 105, 2}, - {0xa78b, 3267, 1}, - {0xffffffff, -1, 0}, - - {0xab8b, 1681, 1}, - - {0x10c8b, 3672, 1}, - - {0x1e76, 2045, 1}, - - {0x0476, 1081, 1}, - - {0x0176, 342, 1}, + {0x10c1, 2999, 1}, - {0x0545, 1408, 1}, + {0x1f95, 194, 2}, - {0x0245, 703, 1}, - {0xffffffff, -1, 0}, + {0x0345, 773, 1}, {0x039d, 789, 1}, {0x1f83, 144, 2}, - {0xab76, 1618, 1}, - {0xffffffff, -1, 0}, + {0x1c95, 1477, 1}, + + {0xab95, 1711, 1}, - {0xff3a, 3408, 1}, + {0x10c95, 3711, 1}, {0x1c83, 950, 1}, {0xab83, 1657, 1}, - {0x10c83, 3648, 1}, - - {0x0141, 264, 1}, + {0x10c83, 3657, 1}, {0x0181, 613, 1}, {0x1f81, 134, 2}, - {0x0041, 0, 1}, - {0xffffffff, -1, 0}, - {0x039b, 782, 1}, - {0x1c81, 909, 1}, - - {0xab81, 1651, 1}, - - {0x10c81, 3642, 1}, - - {0x0149, 46, 2}, - - {0x1f49, 2330, 1}, + {0x16e4d, 3936, 1}, {0xffffffff, -1, 0}, - {0x0049, 4086, 1}, + {0x1c81, 909, 1}, - {0x053a, 1375, 1}, + {0xab81, 1651, 1}, - {0x023a, 2720, 1}, + {0x10c81, 3651, 1}, {0x1e7e, 2057, 1}, {0x047e, 1093, 1}, - {0x0399, 773, 1}, + {0x0393, 752, 1}, {0x1e5e, 2008, 1}, @@ -2746,102 +2808,100 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x015e, 306, 1}, {0xa77e, 3252, 1}, - - {0x16e55, 3951, 1}, + {0xffffffff, -1, 0}, {0xab7e, 1642, 1}, {0xa75e, 3219, 1}, - {0x104d1, 3630, 1}, - {0x1e5c, 2005, 1}, - {0x0393, 752, 1}, + {0x0542, 1399, 1}, {0x015c, 303, 1}, - {0xffffffff, -1, 0}, - - {0x01d1, 435, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x16e45, 3903, 1}, + {0x0399, 773, 1}, {0xa75c, 3216, 1}, - {0x00d1, 129, 1}, - - {0x10421, 3510, 1}, + {0x013d, 258, 1}, - {0x0391, 745, 1}, + {0x1f3d, 2318, 1}, - {0xa65e, 3066, 1}, + {0x0147, 273, 1}, {0x1e3e, 1960, 1}, - {0x0421, 950, 1}, - {0xffffffff, -1, 0}, + {0xa65e, 3066, 1}, + + {0x0047, 18, 1}, {0x1f3e, 2321, 1}, - {0x2c21, 2675, 1}, - {0xffffffff, -1, 0}, + {0x1e38, 1951, 1}, + + {0x0391, 745, 1}, {0xa73e, 3171, 1}, + {0x1f38, 2303, 1}, + {0xa65c, 3063, 1}, + {0xffffffff, -1, 0}, - {0x10c1, 2999, 1}, + {0xa738, 3162, 1}, {0x1e36, 1948, 1}, - - {0x1e38, 1951, 1}, + {0xffffffff, -1, 0}, {0x0136, 249, 1}, - - {0x24cf, 2573, 1}, - - {0x1f38, 2303, 1}, {0xffffffff, -1, 0}, - {0xa736, 3159, 1}, + {0x2183, 2495, 1}, - {0xa738, 3162, 1}, - {0xffffffff, -1, 0}, + {0x24c1, 2531, 1}, - {0x0345, 773, 1}, + {0xa736, 3159, 1}, {0x1e34, 1945, 1}, - {0x16e5a, 3966, 1}, + {0x10417, 3489, 1}, {0x0134, 246, 1}, - {0x1041d, 3498, 1}, - - {0x013b, 255, 1}, + {0xff21, 3342, 1}, + {0xffffffff, -1, 0}, - {0x1f3b, 2312, 1}, + {0x0417, 919, 1}, {0xa734, 3156, 1}, - {0x041d, 937, 1}, - {0x0372, 718, 1}, - {0x1f1d, 2276, 1}, + {0x2c17, 2645, 1}, - {0x2c1d, 2663, 1}, + {0x013b, 255, 1}, - {0x16e58, 3960, 1}, + {0x1f3b, 2312, 1}, + + {0x042b, 984, 1}, + + {0x0376, 721, 1}, + + {0x1f2b, 2288, 1}, + + {0x2c2b, 2705, 1}, - {0x1041b, 3492, 1}, + {0x1041b, 3501, 1}, + {0xffffffff, -1, 0}, {0x0370, 715, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0x041b, 931, 1}, - {0x10419, 3486, 1}, + {0x10419, 3495, 1}, {0x1f1b, 2270, 1}, @@ -2850,69 +2910,42 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x0419, 925, 1}, - {0x10417, 3480, 1}, + {0x10415, 3483, 1}, {0x1f19, 2264, 1}, {0x2c19, 2651, 1}, - {0xffffffff, -1, 0}, - - {0x0417, 919, 1}, - - {0x10415, 3474, 1}, - {0x10413, 3468, 1}, - - {0x2c17, 2645, 1}, - {0xffffffff, -1, 0}, + {0xff2f, 3384, 1}, {0x0415, 913, 1}, - {0x0413, 906, 1}, - - {0x2166, 2465, 1}, + {0x10413, 3477, 1}, + {0xffffffff, -1, 0}, {0x2c15, 2639, 1}, + {0xffffffff, -1, 0}, - {0x2c13, 2633, 1}, - - {0x0053, 52, 1}, - - {0x03cf, 845, 1}, - - {0x1efe, 2234, 1}, - - {0x04fe, 1273, 1}, - - {0x01fe, 499, 1}, - - {0x1040f, 3456, 1}, + {0x0413, 906, 1}, {0xffffffff, -1, 0}, - {0x24c9, 2555, 1}, + {0x1040f, 3465, 1}, - {0x24c1, 2531, 1}, + {0x2c13, 2633, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x040f, 1044, 1}, - {0x03ec, 878, 1}, + {0x1040d, 3459, 1}, {0x1f0f, 2258, 1}, {0x2c0f, 2621, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x1040d, 3450, 1}, - - {0x0541, 1396, 1}, - - {0x0241, 586, 1}, - - {0x03dc, 854, 1}, + {0xffffffff, -1, 0}, {0x040d, 1038, 1}, - {0x1040b, 3444, 1}, + {0x1040b, 3453, 1}, {0x1f0d, 2252, 1}, @@ -2921,352 +2954,312 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x040b, 1032, 1}, - {0x0549, 1420, 1}, + {0x03fa, 893, 1}, {0x1f0b, 2246, 1}, {0x2c0b, 2609, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x10409, 3438, 1}, - - {0x03ea, 875, 1}, - - {0x0139, 252, 1}, - - {0x1f39, 2306, 1}, + {0x0543, 1402, 1}, - {0x0409, 1026, 1}, + {0x0243, 354, 1}, - {0x03e8, 872, 1}, + {0x0541, 1396, 1}, - {0x1f09, 2240, 1}, + {0x0241, 586, 1}, - {0x2c09, 2603, 1}, + {0x10409, 3447, 1}, - {0x10405, 3426, 1}, + {0x10405, 3435, 1}, - {0x03e6, 869, 1}, + {0x212b, 92, 1}, - {0xff21, 3333, 1}, + {0x038f, 842, 1}, - {0x1f4b, 2336, 1}, + {0x0409, 1026, 1}, {0x0405, 1014, 1}, - {0x004b, 27, 1}, + {0x1f09, 2240, 1}, - {0x10403, 3420, 1}, + {0x2c09, 2603, 1}, {0x2c05, 2591, 1}, - {0x03e4, 866, 1}, + {0x10403, 3429, 1}, + {0xffffffff, -1, 0}, - {0x104d3, 3636, 1}, + {0x10401, 3423, 1}, + {0xffffffff, -1, 0}, {0x0403, 1008, 1}, - {0xff36, 3396, 1}, + {0x03f4, 768, 1}, - {0xff38, 3402, 1}, + {0x0401, 1002, 1}, {0x2c03, 2585, 1}, + {0xffffffff, -1, 0}, - {0x01d3, 438, 1}, - - {0x1fd3, 25, 3}, - - {0x0395, 758, 1}, - - {0x00d3, 135, 1}, - - {0x0051, 46, 1}, - - {0x053e, 1387, 1}, - - {0x023e, 2723, 1}, - - {0xff34, 3390, 1}, - - {0x16e41, 3891, 1}, - - {0x10401, 3414, 1}, - - {0x1ef0, 2213, 1}, - - {0x04f0, 1252, 1}, + {0x2c01, 2579, 1}, - {0x01f0, 20, 2}, + {0x1ef6, 2222, 1}, - {0x0401, 1002, 1}, + {0x04f6, 1261, 1}, - {0x0536, 1363, 1}, + {0x01f6, 372, 1}, - {0x0538, 1369, 1}, + {0x1ff6, 92, 2}, - {0x2c01, 2579, 1}, + {0x1e78, 2048, 1}, - {0x16e49, 3915, 1}, + {0x0478, 1084, 1}, - {0x004f, 40, 1}, + {0x0178, 168, 1}, {0xffffffff, -1, 0}, - {0x0376, 721, 1}, + {0x03ec, 878, 1}, - {0x1eee, 2210, 1}, + {0x1e74, 2042, 1}, - {0x04ee, 1249, 1}, + {0x0474, 1078, 1}, - {0x01ee, 480, 1}, + {0x0174, 339, 1}, - {0x0534, 1357, 1}, + {0xab78, 1624, 1}, {0xffffffff, -1, 0}, - {0x053b, 1378, 1}, - - {0x023b, 577, 1}, - - {0x16e5e, 3978, 1}, - - {0x1ef8, 2225, 1}, - - {0x04f8, 1264, 1}, + {0x16e46, 3915, 1}, - {0x01f8, 490, 1}, + {0x03ea, 875, 1}, + {0xffffffff, -1, 0}, - {0x1ff8, 2405, 1}, + {0xab74, 1612, 1}, + {0xffffffff, -1, 0}, - {0x1ed4, 2171, 1}, + {0x03e8, 872, 1}, - {0x04d4, 1210, 1}, - {0xffffffff, -1, 0}, + {0x053d, 1384, 1}, - {0x16e5c, 3972, 1}, + {0x023d, 378, 1}, - {0x2cd4, 2867, 1}, + {0x0547, 1414, 1}, - {0x00d4, 138, 1}, + {0x16e44, 3909, 1}, - {0x2183, 2495, 1}, + {0x03e6, 869, 1}, - {0x1ef6, 2222, 1}, + {0x053e, 1387, 1}, - {0x04f6, 1261, 1}, + {0x023e, 2723, 1}, - {0x01f6, 372, 1}, + {0x1e3c, 1957, 1}, - {0x1ff6, 92, 2}, + {0x03e4, 866, 1}, - {0x1f8d, 154, 2}, + {0x0538, 1369, 1}, - {0x0147, 273, 1}, + {0x1f3c, 2315, 1}, {0xffffffff, -1, 0}, - {0xa78d, 643, 1}, - - {0x0047, 18, 1}, + {0x0429, 977, 1}, - {0xab8d, 1687, 1}, + {0xa73c, 3168, 1}, - {0x10c8d, 3678, 1}, + {0x1f29, 2282, 1}, - {0x1e74, 2042, 1}, + {0x2c29, 2699, 1}, - {0x0474, 1078, 1}, + {0x0536, 1363, 1}, - {0x0174, 339, 1}, + {0x0395, 758, 1}, - {0x1e3c, 1957, 1}, + {0x10427, 3537, 1}, + {0xffffffff, -1, 0}, - {0x0553, 1450, 1}, + {0x10425, 3531, 1}, + {0xffffffff, -1, 0}, - {0x1e30, 1939, 1}, + {0x0427, 971, 1}, - {0x1f3c, 2315, 1}, + {0x0534, 1357, 1}, - {0x0130, 261, 2}, + {0x0425, 965, 1}, - {0xab74, 1612, 1}, + {0x2c27, 2693, 1}, + {0xffffffff, -1, 0}, - {0xa73c, 3168, 1}, + {0x2c25, 2687, 1}, - {0x10425, 3522, 1}, + {0xff38, 3411, 1}, - {0x03d1, 768, 1}, + {0x10423, 3525, 1}, - {0x10423, 3516, 1}, - {0xffffffff, -1, 0}, + {0x053b, 1378, 1}, - {0x0425, 965, 1}, + {0x023b, 577, 1}, {0xffffffff, -1, 0}, {0x0423, 959, 1}, - {0x2c25, 2687, 1}, + {0x1041f, 3513, 1}, - {0x1041f, 3504, 1}, + {0xff36, 3405, 1}, {0x2c23, 2681, 1}, - - {0xff39, 3405, 1}, {0xffffffff, -1, 0}, {0x041f, 944, 1}, - {0x10411, 3462, 1}, + {0x10411, 3471, 1}, - {0x10407, 3432, 1}, + {0x10407, 3441, 1}, {0x2c1f, 2669, 1}, - {0xffffffff, -1, 0}, + + {0xff34, 3399, 1}, {0x0411, 899, 1}, {0x0407, 1020, 1}, - {0xffffffff, -1, 0}, + + {0x0179, 345, 1}, {0x2c11, 2627, 1}, {0x2c07, 2597, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, - {0x0539, 1372, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xa779, 3246, 1}, + {0xffffffff, -1, 0}, - {0x13f8, 1840, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xab79, 1627, 1}, - {0x054b, 1426, 1}, + {0xff2b, 3372, 1}, - {0x16e53, 3945, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, + {0x1f69, 2360, 1}, - {0x0551, 1444, 1}, + {0x2c69, 2729, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x054f, 1438, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x03fe, 727, 1}, + {0xfb17, 117, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x16e4b, 3921, 1}, + {0x1e921, 4092, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xff30, 3378, 1}, + {0xfb15, 113, 2}, {0xffffffff, -1, 0}, - {0x16e51, 3939, 1}, - {0xffffffff, -1, 0}, + {0x16e51, 3948, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x0547, 1414, 1}, + {0xfb13, 121, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xff25, 3345, 1}, + {0x2169, 2474, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xff23, 3339, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x053c, 1381, 1}, - {0x16e4f, 3933, 1}, - {0xffffffff, -1, 0}, - - {0x0230, 571, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xfb05, 29, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xfb17, 117, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xfb03, 0, 3}, - {0xfb15, 113, 2}, + {0x16e4b, 3930, 1}, - {0xfb13, 121, 2}, + {0xfb01, 8, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x03f0, 778, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e4f, 3942, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x16e47, 3909, 1}, - {0xffffffff, -1, 0}, - - {0x03ee, 881, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xff29, 3366, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xfb05, 29, 2}, + {0xff27, 3360, 1}, + {0xffffffff, -1, 0}, + + {0xff25, 3354, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, - {0xfb03, 0, 3}, + {0x16e45, 3912, 1}, + {0xffffffff, -1, 0}, + + {0xff23, 3348, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x1e921, 4083, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xfb01, 8, 2}, + {0x16e40, 3897, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e91d, 4071, 1}, + {0x1e917, 4062, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e91b, 4065, 1}, + {0x1e91b, 4074, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e919, 4059, 1}, + {0x1e919, 4068, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e917, 4053, 1}, + {0x1e915, 4056, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e915, 4047, 1}, + {0x1e913, 4050, 1}, - {0x1e913, 4041, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e5a, 3975, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e90f, 4029, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e42, 3903, 1}, + + {0x1e90f, 4038, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e90d, 4023, 1}, + {0x1e90d, 4032, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e90b, 4017, 1}, + {0x1e90b, 4026, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - - {0x1e909, 4011, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e909, 4020, 1}, + + {0x1e905, 4008, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e905, 3999, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e58, 3969, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e903, 3993, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e903, 4002, 1}, {0xffffffff, -1, 0}, - {0x1e901, 3987, 1}, + {0x1e901, 3996, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, @@ -3276,16 +3269,34 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x16e43, 3906, 1}, + {0xffffffff, -1, 0}, + + {0x16e41, 3900, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e91f, 4086, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e91f, 4077, 1}, + {0x1e911, 4044, 1}, + + {0x1e907, 4014, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e911, 4035, 1}, + {0x16e5e, 3987, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x16e5c, 3981, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, - {0x1e907, 4005, 1} + {0x16e47, 3918, 1} }; diff --git a/src/unicode_wb_data.c b/src/unicode_wb_data.c index 8e1a267..ce082a2 100644 --- a/src/unicode_wb_data.c +++ b/src/unicode_wb_data.c @@ -1,6 +1,6 @@ /* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */ /*- - * Copyright (c) 2019 K.Kosako + * Copyright (c) 2019-2020 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ * SUCH DAMAGE. */ -#define WORD_BREAK_PROPERTY_VERSION 120100 +#define WORD_BREAK_PROPERTY_VERSION 130000 /* ALetter @@ -48,7 +48,7 @@ WSegSpace ZWJ */ -static int WB_RANGE_NUM = 970; +static int WB_RANGE_NUM = 993; static WB_RANGE_TYPE WB_RANGES[] = { {0x00000a, 0x00000a, WB_LF }, {0x00000b, 0x00000c, WB_Newline }, @@ -73,8 +73,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x0000c0, 0x0000d6, WB_ALetter }, {0x0000d8, 0x0000f6, WB_ALetter }, {0x0000f8, 0x0002d7, WB_ALetter }, - {0x0002de, 0x0002e4, WB_ALetter }, - {0x0002ec, 0x0002ff, WB_ALetter }, + {0x0002de, 0x0002ff, WB_ALetter }, {0x000300, 0x00036f, WB_Extend }, {0x000370, 0x000374, WB_ALetter }, {0x000376, 0x000377, WB_ALetter }, @@ -91,11 +90,12 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x000483, 0x000489, WB_Extend }, {0x00048a, 0x00052f, WB_ALetter }, {0x000531, 0x000556, WB_ALetter }, - {0x000559, 0x000559, WB_ALetter }, - {0x00055b, 0x00055c, WB_ALetter }, + {0x000559, 0x00055c, WB_ALetter }, {0x00055e, 0x00055e, WB_ALetter }, + {0x00055f, 0x00055f, WB_MidLetter }, {0x000560, 0x000588, WB_ALetter }, {0x000589, 0x000589, WB_MidNum }, + {0x00058a, 0x00058a, WB_ALetter }, {0x000591, 0x0005bd, WB_Extend }, {0x0005bf, 0x0005bf, WB_Extend }, {0x0005c1, 0x0005c2, WB_Extend }, @@ -155,7 +155,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x000859, 0x00085b, WB_Extend }, {0x000860, 0x00086a, WB_ALetter }, {0x0008a0, 0x0008b4, WB_ALetter }, - {0x0008b6, 0x0008bd, WB_ALetter }, + {0x0008b6, 0x0008c7, WB_ALetter }, {0x0008d3, 0x0008e1, WB_Extend }, {0x0008e2, 0x0008e2, WB_Format }, {0x0008e3, 0x000903, WB_Extend }, @@ -239,7 +239,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x000b3e, 0x000b44, WB_Extend }, {0x000b47, 0x000b48, WB_Extend }, {0x000b4b, 0x000b4d, WB_Extend }, - {0x000b56, 0x000b57, WB_Extend }, + {0x000b55, 0x000b57, WB_Extend }, {0x000b5c, 0x000b5d, WB_ALetter }, {0x000b5f, 0x000b61, WB_ALetter }, {0x000b62, 0x000b63, WB_Extend }, @@ -295,7 +295,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x000ce6, 0x000cef, WB_Numeric }, {0x000cf1, 0x000cf2, WB_ALetter }, {0x000d00, 0x000d03, WB_Extend }, - {0x000d05, 0x000d0c, WB_ALetter }, + {0x000d04, 0x000d0c, WB_ALetter }, {0x000d0e, 0x000d10, WB_ALetter }, {0x000d12, 0x000d3a, WB_ALetter }, {0x000d3b, 0x000d3c, WB_Extend }, @@ -310,7 +310,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x000d62, 0x000d63, WB_Extend }, {0x000d66, 0x000d6f, WB_Numeric }, {0x000d7a, 0x000d7f, WB_ALetter }, - {0x000d82, 0x000d83, WB_Extend }, + {0x000d81, 0x000d83, WB_Extend }, {0x000d85, 0x000d96, WB_ALetter }, {0x000d9a, 0x000db1, WB_ALetter }, {0x000db3, 0x000dbb, WB_ALetter }, @@ -421,7 +421,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x001a7f, 0x001a7f, WB_Extend }, {0x001a80, 0x001a89, WB_Numeric }, {0x001a90, 0x001a99, WB_Numeric }, - {0x001ab0, 0x001abe, WB_Extend }, + {0x001ab0, 0x001ac0, WB_Extend }, {0x001b00, 0x001b04, WB_Extend }, {0x001b05, 0x001b33, WB_ALetter }, {0x001b34, 0x001b44, WB_Extend }, @@ -545,7 +545,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x0030fc, 0x0030ff, WB_Katakana }, {0x003105, 0x00312f, WB_ALetter }, {0x003131, 0x00318e, WB_ALetter }, - {0x0031a0, 0x0031ba, WB_ALetter }, + {0x0031a0, 0x0031bf, WB_ALetter }, {0x0031f0, 0x0031ff, WB_Katakana }, {0x0032d0, 0x0032fe, WB_Katakana }, {0x003300, 0x003357, WB_Katakana }, @@ -562,9 +562,9 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x00a69e, 0x00a69f, WB_Extend }, {0x00a6a0, 0x00a6ef, WB_ALetter }, {0x00a6f0, 0x00a6f1, WB_Extend }, - {0x00a717, 0x00a7bf, WB_ALetter }, - {0x00a7c2, 0x00a7c6, WB_ALetter }, - {0x00a7f7, 0x00a801, WB_ALetter }, + {0x00a708, 0x00a7bf, WB_ALetter }, + {0x00a7c2, 0x00a7ca, WB_ALetter }, + {0x00a7f5, 0x00a801, WB_ALetter }, {0x00a802, 0x00a802, WB_Extend }, {0x00a803, 0x00a805, WB_ALetter }, {0x00a806, 0x00a806, WB_Extend }, @@ -572,6 +572,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x00a80b, 0x00a80b, WB_Extend }, {0x00a80c, 0x00a822, WB_ALetter }, {0x00a823, 0x00a827, WB_Extend }, + {0x00a82c, 0x00a82c, WB_Extend }, {0x00a840, 0x00a873, WB_ALetter }, {0x00a880, 0x00a881, WB_Extend }, {0x00a882, 0x00a8b3, WB_ALetter }, @@ -617,7 +618,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x00ab11, 0x00ab16, WB_ALetter }, {0x00ab20, 0x00ab26, WB_ALetter }, {0x00ab28, 0x00ab2e, WB_ALetter }, - {0x00ab30, 0x00ab67, WB_ALetter }, + {0x00ab30, 0x00ab69, WB_ALetter }, {0x00ab70, 0x00abe2, WB_ALetter }, {0x00abe3, 0x00abea, WB_Extend }, {0x00abec, 0x00abed, WB_Extend }, @@ -739,10 +740,14 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x010d00, 0x010d23, WB_ALetter }, {0x010d24, 0x010d27, WB_Extend }, {0x010d30, 0x010d39, WB_Numeric }, + {0x010e80, 0x010ea9, WB_ALetter }, + {0x010eab, 0x010eac, WB_Extend }, + {0x010eb0, 0x010eb1, WB_ALetter }, {0x010f00, 0x010f1c, WB_ALetter }, {0x010f27, 0x010f27, WB_ALetter }, {0x010f30, 0x010f45, WB_ALetter }, {0x010f46, 0x010f50, WB_Extend }, + {0x010fb0, 0x010fc4, WB_ALetter }, {0x010fe0, 0x010ff6, WB_ALetter }, {0x011000, 0x011002, WB_Extend }, {0x011003, 0x011037, WB_ALetter }, @@ -761,6 +766,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x011136, 0x01113f, WB_Numeric }, {0x011144, 0x011144, WB_ALetter }, {0x011145, 0x011146, WB_Extend }, + {0x011147, 0x011147, WB_ALetter }, {0x011150, 0x011172, WB_ALetter }, {0x011173, 0x011173, WB_Extend }, {0x011176, 0x011176, WB_ALetter }, @@ -769,6 +775,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x0111b3, 0x0111c0, WB_Extend }, {0x0111c1, 0x0111c4, WB_ALetter }, {0x0111c9, 0x0111cc, WB_Extend }, + {0x0111ce, 0x0111cf, WB_Extend }, {0x0111d0, 0x0111d9, WB_Numeric }, {0x0111da, 0x0111da, WB_ALetter }, {0x0111dc, 0x0111dc, WB_ALetter }, @@ -807,7 +814,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x011447, 0x01144a, WB_ALetter }, {0x011450, 0x011459, WB_Numeric }, {0x01145e, 0x01145e, WB_Extend }, - {0x01145f, 0x01145f, WB_ALetter }, + {0x01145f, 0x011461, WB_ALetter }, {0x011480, 0x0114af, WB_ALetter }, {0x0114b0, 0x0114c3, WB_Extend }, {0x0114c4, 0x0114c5, WB_ALetter }, @@ -832,7 +839,19 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x01182c, 0x01183a, WB_Extend }, {0x0118a0, 0x0118df, WB_ALetter }, {0x0118e0, 0x0118e9, WB_Numeric }, - {0x0118ff, 0x0118ff, WB_ALetter }, + {0x0118ff, 0x011906, WB_ALetter }, + {0x011909, 0x011909, WB_ALetter }, + {0x01190c, 0x011913, WB_ALetter }, + {0x011915, 0x011916, WB_ALetter }, + {0x011918, 0x01192f, WB_ALetter }, + {0x011930, 0x011935, WB_Extend }, + {0x011937, 0x011938, WB_Extend }, + {0x01193b, 0x01193e, WB_Extend }, + {0x01193f, 0x01193f, WB_ALetter }, + {0x011940, 0x011940, WB_Extend }, + {0x011941, 0x011941, WB_ALetter }, + {0x011942, 0x011943, WB_Extend }, + {0x011950, 0x011959, WB_Numeric }, {0x0119a0, 0x0119a7, WB_ALetter }, {0x0119aa, 0x0119d0, WB_ALetter }, {0x0119d1, 0x0119d7, WB_Extend }, @@ -882,6 +901,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x011da0, 0x011da9, WB_Numeric }, {0x011ee0, 0x011ef2, WB_ALetter }, {0x011ef3, 0x011ef6, WB_Extend }, + {0x011fb0, 0x011fb0, WB_ALetter }, {0x012000, 0x012399, WB_ALetter }, {0x012400, 0x01246e, WB_ALetter }, {0x012480, 0x012543, WB_ALetter }, @@ -908,6 +928,8 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x016f93, 0x016f9f, WB_ALetter }, {0x016fe0, 0x016fe1, WB_ALetter }, {0x016fe3, 0x016fe3, WB_ALetter }, + {0x016fe4, 0x016fe4, WB_Extend }, + {0x016ff0, 0x016ff1, WB_Extend }, {0x01b000, 0x01b000, WB_Katakana }, {0x01b164, 0x01b167, WB_Katakana }, {0x01bc00, 0x01bc6a, WB_ALetter }, @@ -1017,6 +1039,7 @@ static WB_RANGE_TYPE WB_RANGES[] = { {0x01f170, 0x01f189, WB_ALetter }, {0x01f1e6, 0x01f1ff, WB_Regional_Indicator }, {0x01f3fb, 0x01f3ff, WB_Extend }, + {0x01fbf0, 0x01fbf9, WB_Numeric }, {0x0e0001, 0x0e0001, WB_Format }, {0x0e0020, 0x0e007f, WB_Extend }, {0x0e0100, 0x0e01ef, WB_Extend } diff --git a/src/utf16_be.c b/src/utf16_be.c index d99af71..d237b93 100644 --- a/src/utf16_be.c +++ b/src/utf16_be.c @@ -128,7 +128,7 @@ static int utf16be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { - if (*(p+1) == 0x0a && *p == 0x00) + if (*(p+1) == NEWLINE_CODE && *p == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( @@ -193,7 +193,7 @@ utf16be_code_to_mbc(OnigCodePoint code, UChar *buf) } else { *p++ = (UChar )((code & 0xff00) >> 8); - *p++ = (UChar )(code & 0xff); + *p = (UChar )(code & 0xff); return 2; } } diff --git a/src/utf16_le.c b/src/utf16_le.c index c6edd94..f14d263 100644 --- a/src/utf16_le.c +++ b/src/utf16_le.c @@ -140,7 +140,7 @@ static int utf16le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { - if (*p == 0x0a && *(p+1) == 0x00) + if (*p == NEWLINE_CODE && *(p+1) == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( @@ -194,7 +194,7 @@ utf16le_code_to_mbc(OnigCodePoint code, UChar *buf) } else { *p++ = (UChar )(code & 0xff); - *p++ = (UChar )((code & 0xff00) >> 8); + *p = (UChar )((code & 0xff00) >> 8); return 2; } } diff --git a/src/utf32_be.c b/src/utf32_be.c index 67e50a2..bdd3db7 100644 --- a/src/utf32_be.c +++ b/src/utf32_be.c @@ -45,7 +45,7 @@ static int utf32be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { - if (*(p+3) == 0x0a && *(p+2) == 0 && *(p+1) == 0 && *p == 0) + if (*(p+3) == NEWLINE_CODE && *(p+2) == 0 && *(p+1) == 0 && *p == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( diff --git a/src/utf32_le.c b/src/utf32_le.c index 2ae2275..473ab74 100644 --- a/src/utf32_le.c +++ b/src/utf32_le.c @@ -45,7 +45,7 @@ static int utf32le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { - if (*p == 0x0a && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) + if (*p == NEWLINE_CODE && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( |